arm64: dts: imx8mm-var-dart: update SoM support
Subsystems (2)
v2 cover arm64: dts: imx8mm-var-dart: update SoM support
This series updates the Variscite DART-MX8M-MINI SoM device tree to better reflect the currently supported hardware configuration.
The changes configure SAI3 in synchronous RX mode, add TPM support, and increase the Ethernet PHY reset deassert delay to improve PHY detection reliability.
v1->v2:
- Add tpm pinctrl
- Add comment on tpm reset line
Stefano Radaelli (3):
arm64: dts: imx8mm-var-dart: configure SAI3 synchronous RX mode
arm64: dts: imx8mm-var-dart: add TPM support
arm64: dts: imx8mm-var-dart: increase PHY reset deassert delay
.../boot/dts/freescale/imx8mm-var-dart.dtsi | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-)
base-commit: 46d8fa682d263271f3ef7bf95166b124c19d6c62
Signature · 1 line
2.47.3
PATCH v2 1/3 arm64: dts: imx8mm-var-dart: configure SAI3 synchronous RX mode
From: Stefano Radaelli <[email protected]>
Configure SAI3 to operate in synchronous RX mode, so that the trasmit path uses the receive bit clock and frame sync signals.
Remove the TX_SYNC and TX_BCLK pinmux entries, as these signals are not used in this configuration.
---v1->v2:
-
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +1 -2
@@ -305,6 +305,7 @@ &sai3 { assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>; assigned-clock-rates = <1536000>; fsl,sai-mclk-direction-output; + fsl,sai-synchronous-rx; status = "okay"; };
@@ -446,8 +447,6 @@ pinctrl_sai3: sai3grp { MX8MM_IOMUXC_SAI3_RXFS_SAI3_RX_SYNC 0xd6 MX8MM_IOMUXC_SAI3_RXC_SAI3_RX_BCLK 0xd6 MX8MM_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 0xd6 - MX8MM_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC 0xd6 - MX8MM_IOMUXC_SAI3_TXC_SAI3_TX_BCLK 0xd6 MX8MM_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0xd6 MX8MM_IOMUXC_SAI3_MCLK_SAI3_MCLK 0xd6 >;
Signature · 1 line
2.47.3
PATCH v2 2/3 arm64: dts: imx8mm-var-dart: add TPM support
In reply to Stefano RadaelliFrom: Stefano Radaelli <[email protected]>
Add support for the TPM available on the Variscite DART-MX8M-MINI SOM.
---v1->v2:
- Add tpm pinctrl
- Add comment on tpm reset line
.../boot/dts/freescale/imx8mm-var-dart.dtsi | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +16 -0
@@ -138,6 +138,16 @@ &i2c1 { sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "okay"; + st33ktpm2xi2c_som: tpm@2e { + compatible = "st,st33ktpm2xi2c", "tcg,tpm-tis-i2c"; + reg = <0x2e>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_tpm_reset>; + label = "tpm"; + /* active-low TPM reset line. */ + reset-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>; + }; + pmic@4b { compatible = "rohm,bd71847"; reg = <0x4b>;
@@ -452,6 +462,12 @@ MX8MM_IOMUXC_SAI3_MCLK_SAI3_MCLK 0xd6 >; }; + pinctrl_tpm_reset: tpm-resetgrp { + fsl,pins = < + MX8MM_IOMUXC_SAI3_TXFS_GPIO4_IO31 0x19 + >; + }; + pinctrl_uart4: uart4grp { fsl,pins = < MX8MM_IOMUXC_ECSPI2_SCLK_UART4_DCE_RX 0x140
Signature · 1 line
2.47.3
[email protected]
AI reviewRe: [PATCH v2 2/3] arm64: dts: imx8mm-var-dart: add TPM support
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] dts: incorrect reset-gpios polarity contradicts hardware description --
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] dts: incorrect reset-gpios polarity contradicts hardware description --
commit 3fe00f46f78811d6ed3d86dcccba4b6f6cd29139
Author: Stefano Radaelli <[email protected]>
arm64: dts: imx8mm-var-dart: add TPM support
This commit adds device tree support for the TPM module available on the Variscite DART-MX8M-MINI SOM.
Quoted 6 lines
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +0
-0@@ -138,6 +138,16 @@ &i2c1 { sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi &i2c1 { · line 148
Quoted 10 lines
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +8
-0status = "okay"; + st33ktpm2xi2c_som: tpm@2e { + compatible = "st,st33ktpm2xi2c", "tcg,tpm-tis-i2c"; + reg = <0x2e>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_tpm_reset>; + label = "tpm"; + /* active-low TPM reset line. */ + reset-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;
[Severity: Low]
Does the device tree polarity match the actual hardware description here? The GPIO_ACTIVE_HIGH flag directly contradicts the inline comment that the physical line is active-low. Standard device tree practice requires the logical flag to match the physical active state (GPIO_ACTIVE_LOW).
If this property is parsed by a bootloader (like U-Boot) or a future Linux driver update, wouldn't the reset line be driven to the wrong polarity (high for reset, low for de-assert), potentially holding the TPM in reset and breaking device initialization?
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=2
Re: [PATCH v2 2/3] arm64: dts: imx8mm-var-dart: add TPM support
Quoted 35 lines · On Thu, Sep 17, 2026 at 03:50:33PM +0000, [email protected] wrote:
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] dts: incorrect reset-gpios polarity contradicts hardware description --commit
3fe00f46f78811d6ed3d86dcccba4b6f6cd29139
Author: Stefano Radaelli <[email protected]>arm64: dts: imx8mm-var-dart: add TPM support
This commit adds device tree support for the TPM module available on the Variscite DART-MX8M-MINI SOM.
Quoted 6 lines
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +0
-0@@ -138,6 +138,16 @@ &i2c1 { sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi &i2c1 { · line 148
Quoted 10 lines
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +8
-0status = "okay"; + st33ktpm2xi2c_som: tpm@2e { + compatible = "st,st33ktpm2xi2c", "tcg,tpm-tis-i2c"; + reg = <0x2e>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_tpm_reset>; + label = "tpm"; + /* active-low TPM reset line. */ + reset-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;[Severity: Low]
Does the device tree polarity match the actual hardware description here? TheGPIO_ACTIVE_HIGHflag directly contradicts the inline comment that the physical line is active-low. Standard device tree practice requires the logical flag to match the physical active state (GPIO_ACTIVE_LOW).
Quoted 4 lines
If this property is parsed by a bootloader (like U-Boot) or a future Linux driver update, wouldn't the reset line be driven to the wrong polarity (high for reset, low for de-assert), potentially holding the TPM in reset and breaking device initialization?
tpm_tis_core.c have not parser reset-gpios. ref
static int reset_gpio_assert(struct reset_controller_dev *rc, unsigned long id)
{
struct reset_gpio_priv *priv = rc_to_reset_gpio(rc);
return gpiod_set_value_cansleep(priv->reset, 1);
}suppose it should be GPIO_ACTIVE_LOW to assert reset line
Frank
Quoted 3 lines
--
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=2
Re: [PATCH v2 2/3] arm64: dts: imx8mm-var-dart: add TPM support
Quoted 10 lines · Frank Li
tpm_tis_core.chave not parser reset-gpios. refstatic int
reset_gpio_assert(struct reset_controller_dev *rc, unsigned long id){ struct reset_gpio_priv *priv = rc_to_reset_gpio(rc); return gpiod_set_value_cansleep(priv->reset, 1); }
Quoted 3 lines
suppose it should be
GPIO_ACTIVE_LOWto assert reset lineFrank
Thanks Frank.
You're right, tpm_tis_i2c currently does not parse a reset control. I have proposed a separate patch to add optional reset support using the reset framework:
https://patchwork.kernel.org/project/linux-integrity/patch/[email protected]/
Also, the reset line is active-low, so you are right, GPIO_ACTIVE_LOW is the correct polarity here.
Would you prefer me to send v3 without the TPM DTS patch for now, and add it back once the reset support patch has been accepted?
Best Regards,
Stefano
Re: [PATCH v2 2/3] arm64: dts: imx8mm-var-dart: add TPM support
Quoted 21 lines · Stefano Radaelli
Quoted 10 lines · Frank Li
tpm_tis_core.chave not parser reset-gpios. refstatic int
reset_gpio_assert(struct reset_controller_dev *rc, unsigned long id){ struct reset_gpio_priv *priv = rc_to_reset_gpio(rc); return gpiod_set_value_cansleep(priv->reset, 1); }Quoted 3 lines
suppose it should be
GPIO_ACTIVE_LOWto assert reset lineFrank
Thanks Frank.
You're right,
tpm_tis_i2ccurrently does not parse a reset control. I have proposed a separate patch to add optional reset support using the reset framework:
Quoted 7 lines
https://patchwork.kernel.org/project/linux-integrity/patch/[email protected]/
Also, the reset line is active-low, so you are right,
GPIO_ACTIVE_LOWis the correct polarity here.Would you prefer me to send v3 without the TPM DTS patch for now, and add it back once the reset support patch has been accepted?
You leave reset-gpios if binding already here. Just need fix GPIO_ACTIVE_LOW
Frank
Quoted 3 lines
Best Regards,
Stefano
PATCH v2 3/3 arm64: dts: imx8mm-var-dart: increase PHY reset deassert delay
In reply to Stefano RadaelliFrom: Stefano Radaelli <[email protected]>
The Ethernet PHY reset signal also controls the regulators supplying VDDA2P5 and VDD1P0, so releasing reset restores the PHY's 2.5 V and 1.0 V analog supplies.
The existing 100 ms reset deassertion delay is not sufficient for reliable PHY detection. The TI DP83867 requires 200 ms of stabilization after power-up before MDIO register access.
Increase the reset deassertion delay to 200 ms to ensure reliable PHY detection across repeated boots.
---v1->v2:
-
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +1 -1
@@ -123,7 +123,7 @@ ethphy0: ethernet-phy@0 { reg = <0>; reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; reset-assert-us = <10000>; - reset-deassert-us = <100000>; + reset-deassert-us = <200000>; vddio-supply = <®_phy_vddio>; }; };
Signature · 1 line
2.47.3