Skip to contentSkip to conversation

arm64: dts: imx93-var-som-symphony: align DTS with hardware revision

PATCH Superseded Stefano Radaelli 2 participants 6 messages May 29

Subsystems (2)

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

cover arm64: dts: imx93-var-som-symphony: align DTS with hardware revision

This series updates the i.MX93 VAR-SOM Symphony device tree to match the latest carrier board hardware revision.

The changes add support for onboard peripherals and complete the board configuration with the required GPIO, pinctrl and PWM settings.

Stefano Radaelli (4):
arm64: dts: imx93-var-som-symphony: add TPM support
arm64: dts: imx93-var-som-symphony: enable UART7
arm64: dts: imx93-var-som-symphony: keep RGB_SEL low
arm64: dts: imx93-var-som-symphony: enable TPM3 PWM

 .../dts/freescale/imx93-var-som-symphony.dts  | 61 +++++++++++++++++++
 1 file changed, 61 insertions(+)

base-commit: b3c1d1631f097619f8091f0293e027c4301285d6

Signature · 1 line
2.47.3
#1 lore raw

PATCH 1/4 arm64: dts: imx93-var-som-symphony: add TPM support

From: Stefano Radaelli <[email protected]>

Add the ST33KTPM2XI2C TPM device on the Symphony carrier board.

The TPM enable signal is driven through a PCAL6408 GPIO expander, so add the expander on the I2C bus and configure the TPM enable line as a GPIO hog.

---
 .../dts/freescale/imx93-var-som-symphony.dts  | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)
arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts +20 -0
index c0842fb3cfa3..ea996a36b022 100644
@@ -208,6 +208,26 @@ &lpi2c1 {
 	sda-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
 	status = "okay";
 
+	pca6408: 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";
Signature · 1 line
2.47.3
#2 lore raw

Re: [PATCH v1 1/4] arm64: dts: imx93-var-som-symphony: add TPM support

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [High] Using a GPIO hog to enable the TPM device creates an unhandled dependency, leading to potential…

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Using a GPIO hog to enable the TPM device creates an unhandled dependency, leading to potential probe and suspend/resume failures.
- [Low] The node name and label for the PCAL6408 GPIO expander contain a typo, omitting the letter 'l'.
--

commit bcdb28f289b71a5c2629f6f0cbc1ebb8edd84640
Author: Stefano Radaelli <[email protected]>

arm64: dts: imx93-var-som-symphony: add TPM support

This commit adds support for the ST33KTPM2XI2C TPM device on the Symphony carrier board. It configures the TPM enable line as a GPIO hog on a PCAL6408 expander located on the I2C bus.

arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts &lpi2c1 { · line 211

Quoted 9 lines
arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts +1 -0
index c0842fb3cfa33..ea996a36b0228 100644
@@ -208,6 +208,26 @@ &lpi2c1 {
 	sda-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
 	status = "okay";
 
+	pca6408: gpio@21 {

[Severity: Low]
This isn't a bug, but the node name and label appear to contain a typo. The commit message and compatible string identify the part as a PCAL6408, but the label and node name omit the letter l.

arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts &lpi2c1 { · line 224

Quoted 13 lines
arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts +13 -0
+		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";
+		};
+	};

[Severity: High]
Does using a GPIO hog here create an unhandled probe dependency?

Because the device tree core ignores GPIO hog nodes when parsing dependencies, it doesn't create an explicit supplier/consumer link via fw_devlink. This means there is no guarantee the GPIO expander is probed before the TPM device.

If the drivers are built as modules and loaded in parallel, and the TPM driver happens to bind first, its probe function will attempt an I2C read. Could that read fail because the TPM is still disabled, potentially preventing the device from functioning?

Quoted 5 lines
arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts +5 -0
+	st33ktpm2xi2c: tpm@2e {
+		compatible = "st,st33ktpm2xi2c", "tcg,tpm-tis-i2c";
+		reg = <0x2e>;
+	};
+

[ ... ]

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
#3 lore raw

PATCH 2/4 arm64: dts: imx93-var-som-symphony: enable UART7

In reply to Stefano Radaelli

From: Stefano Radaelli <[email protected]>

Enable UART7 on the Symphony carrier board and add its pinctrl configuration.

---
 .../boot/dts/freescale/imx93-var-som-symphony.dts  | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts +14 -0
index ea996a36b022..a5fe8432ae59 100644
@@ -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
Signature · 1 line
2.47.3
#4 lore raw

PATCH 3/4 arm64: dts: imx93-var-som-symphony: keep RGB_SEL low

In reply to Stefano Radaelli

From: Stefano Radaelli <[email protected]>

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.

---
 arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts | 8 ++++++++
 1 file changed, 8 insertions(+)
arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts +8 -0
index a5fe8432ae59..23b359e39094 100644
@@ -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 {
Signature · 1 line
2.47.3
#5 lore raw

PATCH 4/4 arm64: dts: imx93-var-som-symphony: enable TPM3 PWM

In reply to Stefano Radaelli

From: Stefano Radaelli <[email protected]>

Enable TPM3 on the Symphony carrier board and add the pinctrl states for the PWM output and sleep configuration.

---
 .../dts/freescale/imx93-var-som-symphony.dts  | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
arch/arm64/boot/dts/freescale/imx93-var-som-symphony.dts +19 -0
index 23b359e39094..7f79cd7e7a4c 100644
@@ -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
Signature · 1 line
2.47.3