* [PATCH v2 1/4] arm64: dts: imx93-var-som-symphony: add TPM support
2026-05-29 10:52 [PATCH v2 0/4] arm64: dts: imx93-var-som-symphony: align DTS with hardware revision Stefano Radaelli
@ 2026-05-29 10:52 ` Stefano Radaelli
2026-05-29 11:10 ` sashiko-bot
2026-05-29 10:52 ` [PATCH v2 2/4] arm64: dts: imx93-var-som-symphony: enable UART7 Stefano Radaelli
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: Stefano Radaelli @ 2026-05-29 10:52 UTC (permalink / raw)
To: linux-kernel, devicetree, imx, linux-arm-kernel
Cc: pierluigi.p, Stefano Radaelli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam
From: Stefano Radaelli <stefano.r@variscite.com>
Add the ST33KTPM2XI2C TPM device on the Symphony carrier board.
The TPM enable line is a board-level signal driven through the PCAL6408
GPIO expander. Keep it asserted with a GPIO hog so the TPM is enabled on
this board.
The TPM binding does not provide a dedicated enable GPIO or supply
property, so this cannot currently be expressed as a direct TPM
dependency.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
v1->v2:
- Rename pca6408 label to pcal6408 to match the compatible
- Clarify that the TPM enable line is a board-level GPIO hog
.../dts/freescale/imx93-var-som-symphony.dts | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
index c0842fb3cfa3..f541308ebf6b 100644
--- a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
+++ b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
@@ -208,6 +208,26 @@ &lpi2c1 {
sda-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
status = "okay";
+ pcal6408: gpio@21 {
+ compatible = "nxp,pcal6408";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ status = "okay";
+
+ tpm-enable-hog {
+ gpio-hog;
+ gpios = <4 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "tpm_en";
+ };
+ };
+
+ st33ktpm2xi2c: tpm@2e {
+ compatible = "st,st33ktpm2xi2c", "tcg,tpm-tis-i2c";
+ reg = <0x2e>;
+ };
+
/* Capacitive touch controller */
ft5x06_ts: touchscreen@38 {
compatible = "edt,edt-ft5206";
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v2 1/4] arm64: dts: imx93-var-som-symphony: add TPM support
2026-05-29 10:52 ` [PATCH v2 1/4] arm64: dts: imx93-var-som-symphony: add TPM support Stefano Radaelli
@ 2026-05-29 11:10 ` sashiko-bot
0 siblings, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-05-29 11:10 UTC (permalink / raw)
To: Stefano Radaelli; +Cc: robh, conor+dt, devicetree, Frank.Li, imx
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The TPM device relies on a GPIO hog from a sibling I2C GPIO expander to be enabled, but lacks a structural device dependency, leading to a probe race condition and potential initialization failures.
--
commit 2c29a43f4e74b7d0f118dc8b7401c07e3617e874
Author: Stefano Radaelli <stefano.r@variscite.com>
arm64: dts: imx93-var-som-symphony: add TPM support
This commit adds the ST33KTPM2XI2C TPM device to the Symphony carrier
board. It uses a GPIO hog on the PCAL6408 GPIO expander to assert the
TPM enable line, since the binding lacks a dedicated enable GPIO property.
> diff --git a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
> index c0842fb3cfa33..f541308ebf6b8 100644
> --- a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
> +++ b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
[ ... ]
> @@ -208,6 +208,26 @@ &lpi2c1 {
> sda-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
> status = "okay";
>
> + pcal6408: gpio@21 {
> + compatible = "nxp,pcal6408";
> + reg = <0x21>;
> + gpio-controller;
> + #gpio-cells = <2>;
> + status = "okay";
> +
> + tpm-enable-hog {
> + gpio-hog;
> + gpios = <4 GPIO_ACTIVE_HIGH>;
> + output-high;
> + line-name = "tpm_en";
> + };
> + };
> +
> + st33ktpm2xi2c: tpm@2e {
> + compatible = "st,st33ktpm2xi2c", "tcg,tpm-tis-i2c";
> + reg = <0x2e>;
> + };
[Severity: High]
Since there is no explicit structural dependency between the TPM device and
the GPIO expander, could this introduce a probe order race condition?
Because fw_devlink is unaware of this relationship, if the drivers are
loaded asynchronously and the tpm_tis_i2c driver probes before the
gpio-pca953x driver, the enable line will remain deasserted.
The TPM driver's initial I2C read might receive a NACK and return a
permanent error like -ENXIO instead of returning -EPROBE_DEFER.
Does this setup inadvertently rely on undefined probe ordering to ensure
the TPM is enabled before it is initialized?
--
Sashiko AI review · https://sashiko.dev/#/patchset/cover.1780051874.git.stefano.r@variscite.com?part=1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/4] arm64: dts: imx93-var-som-symphony: enable UART7
2026-05-29 10:52 [PATCH v2 0/4] arm64: dts: imx93-var-som-symphony: align DTS with hardware revision Stefano Radaelli
2026-05-29 10:52 ` [PATCH v2 1/4] arm64: dts: imx93-var-som-symphony: add TPM support Stefano Radaelli
@ 2026-05-29 10:52 ` Stefano Radaelli
2026-05-29 10:52 ` [PATCH v2 3/4] arm64: dts: imx93-var-som-symphony: keep RGB_SEL low Stefano Radaelli
2026-05-29 10:52 ` [PATCH v2 4/4] arm64: dts: imx93-var-som-symphony: enable TPM3 PWM Stefano Radaelli
3 siblings, 0 replies; 6+ messages in thread
From: Stefano Radaelli @ 2026-05-29 10:52 UTC (permalink / raw)
To: linux-kernel, devicetree, imx, linux-arm-kernel
Cc: pierluigi.p, Stefano Radaelli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam
From: Stefano Radaelli <stefano.r@variscite.com>
Enable UART7 on the Symphony carrier board and add its pinctrl
configuration.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
v1->v2:
-
.../boot/dts/freescale/imx93-var-som-symphony.dts | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
index f541308ebf6b..f313f168cfb4 100644
--- a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
+++ b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
@@ -35,6 +35,7 @@ aliases {
serial3 = &lpuart4;
serial4 = &lpuart5;
serial5 = &lpuart6;
+ serial6 = &lpuart7;
};
@@ -310,6 +311,12 @@ &lpuart6 {
status = "okay";
};
+&lpuart7 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart7>;
+ status = "okay";
+};
+
&usbotg1 {
dr_mode = "otg";
hnp-disable;
@@ -446,6 +453,13 @@ MX93_PAD_GPIO_IO04__LPUART6_TX 0x31e
>;
};
+ pinctrl_uart7: uart7grp {
+ fsl,pins = <
+ MX93_PAD_GPIO_IO09__LPUART7_RX 0x31e
+ MX93_PAD_GPIO_IO08__LPUART7_TX 0x31e
+ >;
+ };
+
pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
fsl,pins = <
MX93_PAD_GPIO_IO18__GPIO2_IO18 0x31e
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 3/4] arm64: dts: imx93-var-som-symphony: keep RGB_SEL low
2026-05-29 10:52 [PATCH v2 0/4] arm64: dts: imx93-var-som-symphony: align DTS with hardware revision Stefano Radaelli
2026-05-29 10:52 ` [PATCH v2 1/4] arm64: dts: imx93-var-som-symphony: add TPM support Stefano Radaelli
2026-05-29 10:52 ` [PATCH v2 2/4] arm64: dts: imx93-var-som-symphony: enable UART7 Stefano Radaelli
@ 2026-05-29 10:52 ` Stefano Radaelli
2026-05-29 10:52 ` [PATCH v2 4/4] arm64: dts: imx93-var-som-symphony: enable TPM3 PWM Stefano Radaelli
3 siblings, 0 replies; 6+ messages in thread
From: Stefano Radaelli @ 2026-05-29 10:52 UTC (permalink / raw)
To: linux-kernel, devicetree, imx, linux-arm-kernel
Cc: pierluigi.p, Stefano Radaelli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam
From: Stefano Radaelli <stefano.r@variscite.com>
Keep the RGB_SEL line driven low on the Symphony carrier board.
This avoids leaving the line floating and ensures the board remains in
the expected display configuration.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
v1->v2:
-
arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
index f313f168cfb4..37bae4913bcf 100644
--- a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
+++ b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
@@ -222,6 +222,14 @@ tpm-enable-hog {
output-high;
line-name = "tpm_en";
};
+
+ /* RGB_SEL */
+ lvds-brg-enable-hog {
+ gpio-hog;
+ gpios = <7 GPIO_ACTIVE_HIGH>;
+ output-low;
+ line-name = "lvds_brg_en";
+ };
};
st33ktpm2xi2c: tpm@2e {
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 4/4] arm64: dts: imx93-var-som-symphony: enable TPM3 PWM
2026-05-29 10:52 [PATCH v2 0/4] arm64: dts: imx93-var-som-symphony: align DTS with hardware revision Stefano Radaelli
` (2 preceding siblings ...)
2026-05-29 10:52 ` [PATCH v2 3/4] arm64: dts: imx93-var-som-symphony: keep RGB_SEL low Stefano Radaelli
@ 2026-05-29 10:52 ` Stefano Radaelli
3 siblings, 0 replies; 6+ messages in thread
From: Stefano Radaelli @ 2026-05-29 10:52 UTC (permalink / raw)
To: linux-kernel, devicetree, imx, linux-arm-kernel
Cc: pierluigi.p, Stefano Radaelli, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam
From: Stefano Radaelli <stefano.r@variscite.com>
Enable TPM3 on the Symphony carrier board and add the pinctrl states for
the PWM output and sleep configuration.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
v1->v2:
-
.../dts/freescale/imx93-var-som-symphony.dts | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
index 37bae4913bcf..a49c8aebfead 100644
--- a/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
+++ b/arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts
@@ -325,6 +325,13 @@ &lpuart7 {
status = "okay";
};
+&tpm3 {
+ pinctrl-0 = <&pinctrl_tpm3>;
+ pinctrl-1 = <&pinctrl_tpm3_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+};
+
&usbotg1 {
dr_mode = "otg";
hnp-disable;
@@ -447,6 +454,18 @@ MX93_PAD_PDM_BIT_STREAM1__GPIO1_IO10 0x31e
>;
};
+ pinctrl_tpm3: tpm3grp {
+ fsl,pins = <
+ MX93_PAD_GPIO_IO24__TPM3_CH3 0x51e
+ >;
+ };
+
+ pinctrl_tpm3_sleep: tpm3sleepgrp {
+ fsl,pins = <
+ MX93_PAD_GPIO_IO24__GPIO2_IO24 0x51e
+ >;
+ };
+
pinctrl_uart1: uart1grp {
fsl,pins = <
MX93_PAD_UART1_RXD__LPUART1_RX 0x31e
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread