From 47477bca904ed2dddbd86e4516893ea0efd2c9f8 Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Thu, 30 Apr 2026 11:17:08 +0200 Subject: [PATCH 1/4] arm64: dts: imx93-charge-som-ac-pb: drop fixed RFID UART configuration The physical lines are intended for a potential UART connection, but can also be used as simple GPIO lines. Thus let's undefine this fixed usage here to prepare for upcoming overlays. While at, make this change visible by adapting the GPIO line names. Signed-off-by: Michael Heimpold --- .../dts/freescale/imx93-charge-som-ac-pb.dtso | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/arch/arm64/boot/dts/freescale/imx93-charge-som-ac-pb.dtso b/arch/arm64/boot/dts/freescale/imx93-charge-som-ac-pb.dtso index 390e0ea97b6831..d5f354d1c5e964 100644 --- a/arch/arm64/boot/dts/freescale/imx93-charge-som-ac-pb.dtso +++ b/arch/arm64/boot/dts/freescale/imx93-charge-som-ac-pb.dtso @@ -19,7 +19,7 @@ aliases { rtc0 = &rv3028; }; - + pwm-beeper { compatible = "pwm-beeper"; pwms = <&tpm5 0 5000 0>; @@ -44,7 +44,7 @@ enable-active-high; regulator-boot-on; }; - + reg_wifi: regulator-wifi { compatible = "regulator-fixed"; regulator-max-microvolt = <3300000>; @@ -68,7 +68,7 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_current>; // 16 pins (0..15) - gpio-line-names = "I2C1_SCL", "I2C1_SDA", "", "", "", "", "LPUART2_RX", "LPUART2_TX", "CURRENT_SETTING_2", "CURRENT_SETTING_1", \ + gpio-line-names = "I2C1_SCL", "I2C1_SDA", "", "", "", "", "X15_6", "X15_7", "CURRENT_SETTING_2", "CURRENT_SETTING_1", \ "", "SPI_TPM_nCS0", "", "", "", ""; }; @@ -150,13 +150,6 @@ >; }; - pinctrl_uart2: uart2grp { - fsl,pins = < - MX93_PAD_UART2_RXD__LPUART2_RX 0x31e // drive strength: X4, slew rate: slightly fast, pull up - MX93_PAD_UART2_TXD__LPUART2_TX 0x30e // drive strength: X3, slew rate: slightly fast, pull up - >; - }; - pinctrl_usbotg1grp: usb1grp { fsl,pins = < MX93_PAD_ENET1_TD1__HSIOMIX_OTG_OC1 0x31e @@ -182,7 +175,7 @@ MX93_PAD_SD3_DATA1__GPIO3_IO23 0x31e // INPUT_4 >; }; - + pinctrl_output: outputgrp { fsl,pins = < MX93_PAD_GPIO_IO27__GPIO2_IO27 0x31e // OUTPUT_nFAIL @@ -209,8 +202,8 @@ pinctrl_uart5: uart5grp { fsl,pins = < - MX93_PAD_DAP_TDI__LPUART5_RX 0x31e - MX93_PAD_DAP_TDO_TRACESWO__LPUART5_TX 0x30e + MX93_PAD_DAP_TDI__LPUART5_RX 0x31e + MX93_PAD_DAP_TDO_TRACESWO__LPUART5_TX 0x30e MX93_PAD_DAP_TMS_SWDIO__LPUART5_RTS_B 0x31e MX93_PAD_DAP_TCLK_SWCLK__LPUART5_CTS_B 0x30e >; @@ -233,7 +226,7 @@ MX93_PAD_GPIO_IO26__TPM5_CH3 0x31e // BUZZER >; }; - + pinctrl_wifi_rst: wifirstgrp { fsl,pins = < MX93_PAD_SD2_RESET_B__GPIO3_IO07 0x31e // nRESET_WL @@ -280,7 +273,7 @@ wakeup-source; trickle-resistor-ohms = <3000>; }; - + pca9632: led-controller@60 { compatible = "nxp,pca9632"; reg = <0x60>; @@ -329,13 +322,6 @@ }; }; -/* RFID UART */ -&lpuart2 { - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_uart2>; - status = "okay"; -}; - /* RS485 */ &lpuart4 { pinctrl-names = "default"; From e9510e1b088db93f0a987e593e1e5b8e47586822 Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Thu, 30 Apr 2026 11:22:29 +0200 Subject: [PATCH 2/4] arm64: dts: imx93-charge-som-ac-pb-pn7160: introduce overlay AC power board RFID addon-board Signed-off-by: Michael Heimpold --- arch/arm64/boot/dts/freescale/Makefile | 3 ++ .../imx93-charge-som-ac-pb-pn7160.dtso | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 arch/arm64/boot/dts/freescale/imx93-charge-som-ac-pb-pn7160.dtso diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile index a9089f010e1e86..1b846c8d080085 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -699,6 +699,7 @@ imx93-charge-som-lvds-dd0700mc01-dtbs += imx93-charge-som.dtb imx93-charge-som-l imx93-charge-som-testfixture-dtbs += imx93-charge-som.dtb imx93-charge-som-testfixture.dtbo imx93-charge-control-v-dtbs += imx93-charge-som.dtb imx93-charge-control-v.dtbo imx93-charge-som-ac-pb-dtbs += imx93-charge-som.dtb imx93-charge-som-ac-pb.dtbo +imx93-charge-som-ac-pb-pn7160-dtbs += imx93-charge-som.dtb imx93-charge-som-ac-pb.dtbo imx93-charge-som-ac-pb-pn7160.dtbo dtb-$(CONFIG_ARCH_MXC) += imx91-phyboard-segin-peb-av-02.dtb dtb-$(CONFIG_ARCH_MXC) += imx91-phyboard-segin-peb-eval-01.dtb dtb-$(CONFIG_ARCH_MXC) += imx91-phyboard-segin-peb-wlbt-05.dtb @@ -718,7 +719,9 @@ dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-clko-gpio.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-lvds-dd0700mc01.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-testfixture.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-control-v.dtb +DTC_FLAGS_imx93-charge-som-ac-pb := -@ dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-ac-pb.dtb +dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-ac-pb-pn7160.dtb dtb-$(CONFIG_ARCH_MXC) += imx943-evk.dtb imx943-evk-mqs-dtbs := imx943-evk.dtb imx943-evk-mqs.dtbo diff --git a/arch/arm64/boot/dts/freescale/imx93-charge-som-ac-pb-pn7160.dtso b/arch/arm64/boot/dts/freescale/imx93-charge-som-ac-pb-pn7160.dtso new file mode 100644 index 00000000000000..f37852f4709680 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-charge-som-ac-pb-pn7160.dtso @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2026 chargebyte GmbH + * Author: Michael Heimpold + */ + +#include +#include +#include "imx93-pinfunc.h" + +/dts-v1/; +/plugin/; + +/ { + compatible = "chargebyte,imx93-ac-power-board"; +}; + +&iomuxc { + pinctrl_rfid_gpio: rfidgpiogrp { + fsl,pins = < + MX93_PAD_UART2_RXD__GPIO1_IO06 0x31e // X15_6 + MX93_PAD_UART2_TXD__GPIO1_IO07 0x31e // X15_7 + >; + }; +}; + +&lpi2c5 { + #address-cells = <1>; + #size-cells = <0>; + + nfc@28 { + compatible = "nxp,nxp-nci-i2c"; + reg = <0x28>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_rfid_gpio>; + interrupt-parent = <&gpio1>; + interrupts = <6 IRQ_TYPE_LEVEL_HIGH>; + enable-gpios = <&gpio2 24 GPIO_ACTIVE_HIGH>; + firmware-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>; + }; +}; From 9156a9a0f2ee2940e41d91e4f94f967be7a671ed Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Thu, 30 Apr 2026 11:25:52 +0200 Subject: [PATCH 3/4] arm64: dts: imx93-charge-som: add overlay for I2C5 and PN7160 Signed-off-by: Michael Heimpold --- arch/arm64/boot/dts/freescale/Makefile | 7 +++ .../imx93-charge-som-i2c5-pn7160.dtso | 44 +++++++++++++++++++ .../dts/freescale/imx93-charge-som-i2c5.dtso | 44 +++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 arch/arm64/boot/dts/freescale/imx93-charge-som-i2c5-pn7160.dtso create mode 100644 arch/arm64/boot/dts/freescale/imx93-charge-som-i2c5.dtso diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile index 1b846c8d080085..0d5100e3e439c7 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -694,6 +694,10 @@ imx93-phyboard-segin-peb-wlbt-05-dtbs += imx93-phyboard-segin.dtb imx93-phyboard imx93-phycore-npu-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-segin.dtb imx93-phycore-npu.dtbo imx93-phycore-rpmsg-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-segin.dtb imx93-phycore-rpmsg.dtbo imx93-charge-som-uart7-dtbs += imx93-charge-som.dtb imx93-charge-som-uart7.dtbo +DTC_FLAGS_imx93-charge-som-i2c5-dtbs := -@ +imx93-charge-som-i2c5-dtbs += imx93-charge-som.dtb imx93-charge-som-i2c5.dtbo +DTC_FLAGS_imx93-charge-som-i2c5-pn7160-dtbs := -@ +imx93-charge-som-i2c5-pn7160-dtbs += imx93-charge-som-dc-evb.dtb imx93-charge-som-i2c5.dtbo imx93-charge-som-i2c5-pn7160.dtbo imx93-charge-som-clko-gpio-dtbs += imx93-charge-som.dtb imx93-charge-som-clko-gpio.dtbo imx93-charge-som-lvds-dd0700mc01-dtbs += imx93-charge-som.dtb imx93-charge-som-lvds-dd0700mc01.dtbo imx93-charge-som-testfixture-dtbs += imx93-charge-som.dtb imx93-charge-som-testfixture.dtbo @@ -715,6 +719,9 @@ dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-segin-peb-wlbt-05.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-phycore-npu.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-phycore-rpmsg.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-uart7.dtb +DTC_FLAGS_imx93-charge-som-i2c5 := -@ +dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-i2c5.dtb +dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-i2c5-pn7160.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-clko-gpio.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-lvds-dd0700mc01.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-testfixture.dtb diff --git a/arch/arm64/boot/dts/freescale/imx93-charge-som-i2c5-pn7160.dtso b/arch/arm64/boot/dts/freescale/imx93-charge-som-i2c5-pn7160.dtso new file mode 100644 index 00000000000000..049884ef83843c --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-charge-som-i2c5-pn7160.dtso @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2026 chargebyte GmbH + * Author: Michael Heimpold + */ + +#include +#include +#include "imx93-pinfunc.h" + +/dts-v1/; +/plugin/; + +/ { + compatible = "chargebyte,imx93-charge-som"; +}; + +&iomuxc { + pinctrl_rfid_gpio: rfidgpiogrp { + fsl,pins = < + MX93_PAD_SD3_DATA1__GPIO3_IO23 0x31e // X11_SD3_D1 + MX93_PAD_SD3_DATA2__GPIO3_IO24 0x31e // X11_SD3_D2 + MX93_PAD_SD3_DATA3__GPIO3_IO25 0x31e // X11_SD3_D3 + >; + }; +}; + + +&lpi2c5 { + #address-cells = <1>; + #size-cells = <0>; + + nfc@28 { + compatible = "nxp,nxp-nci-i2c"; + reg = <0x28>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_rfid_gpio>; + interrupt-parent = <&gpio3>; + interrupts = <25 IRQ_TYPE_LEVEL_HIGH>; + enable-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; + firmware-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>; + }; + +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-charge-som-i2c5.dtso b/arch/arm64/boot/dts/freescale/imx93-charge-som-i2c5.dtso new file mode 100644 index 00000000000000..3dc7531f3b9da0 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-charge-som-i2c5.dtso @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2026 chargebyte GmbH + * Author: Michael Heimpold + */ + +#include +#include "imx93-pinfunc.h" + +/dts-v1/; +/plugin/; + +/ { + compatible = "chargebyte,imx93-charge-som"; +}; + +&iomuxc { + pinctrl_lpi2c5: lpi2c5grp { + /* sion, drive strength: X2, slew rate: fast, pull up, open drain */ + fsl,pins = < + MX93_PAD_GPIO_IO23__LPI2C5_SCL 0x40000b86 + MX93_PAD_GPIO_IO22__LPI2C5_SDA 0x40000b86 + >; + }; + + pinctrl_lpi2c5_gpio: lpi2c5gpiogrp { + fsl,pins = < + MX93_PAD_GPIO_IO22__GPIO2_IO22 0x40000b9e + MX93_PAD_GPIO_IO23__GPIO2_IO23 0x40000b9e + >; + }; +}; + +&lpi2c5 { + clock-frequency = <400000>; + pinctrl-names = "default", "gpio"; + pinctrl-0 = <&pinctrl_lpi2c5>; + pinctrl-1 = <&pinctrl_lpi2c5_gpio>; + scl-gpios = <&gpio2 23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios = <&gpio2 22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; +}; From 48fc8e13d8b8455d318bd1e120b2bca592ec07a5 Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Thu, 30 Apr 2026 15:20:54 +0200 Subject: [PATCH 4/4] arm64: dts: freescale: compile DTs for Charge SOM and Charge SOM EVB with symbols Both device tree binaries are used as base for overlays. So let's ensure that both files include the DT symbols so that overlay references can be resolved correctly. Signed-off-by: Michael Heimpold --- arch/arm64/boot/dts/freescale/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile index 0d5100e3e439c7..8b069bfb5873e2 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -674,7 +674,9 @@ dtb-$(CONFIG_ARCH_MXC) += imx91-9x9-qsb-i3c.dtb dtb-$(CONFIG_ARCH_MXC) += imx91-phyboard-segin.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-nash.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-segin.dtb +DTC_FLAGS_imx93-charge-som := -@ dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som.dtb +DTC_FLAGS_imx93-charge-som-dc-evb := -@ dtb-$(CONFIG_ARCH_MXC) += imx93-charge-som-dc-evb.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-control-y.dtb dtb-$(CONFIG_ARCH_MXC) += imx93-charge-control-y-V0R4.dtb