Devicetree
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Marek Vasut" <marex@nabladev.com>
Cc: "Marc Kleine-Budde" <mkl@pengutronix.de>,
	"Oliver Hartkopp" <socketcan@hartkopp.net>,
	Frank.Li@kernel.org, "Oleksij Rempel" <o.rempel@pengutronix.de>,
	linux-can@vger.kernel.org, imx@lists.linux.dev,
	conor+dt@kernel.org, devicetree@vger.kernel.org, robh@kernel.org,
	"Vincent Mailhol" <mailhol@kernel.org>
Subject: Re: [PATCH v5 3/3] arm64: dts: imx95: Add support for Data Modul i.MX95 eDM SBC
Date: Mon, 28 Sep 2026 21:04:47 +0000	[thread overview]
Message-ID: <20260928210448.471851F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260928204741.175754-3-marex@nabladev.com>

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] dt: imx95-data-modul: PCAL6524 expander interrupts cause IRQ storm due to active-high polarity
- [High] dt: imx95-data-modul: KSZ9131 Ethernet PHYs permanently held in reset due to active-high polarity
- [Medium] dt: imx95-data-modul: reg_panel_vcc defaults to active-low, breaking panel power
- [Medium] dt: imx95-data-modul: M.2 Key-E slot unpowered due to missing regulator for VDD_3V3_M2-E_EN
--

commit 88cbe063476bce8eddcc6ed5fd22c93a72c1ced5
Author: Marek Vasut <marex@nabladev.com>

arm64: dts: imx95: Add support for Data Modul i.MX95 eDM SBC

Add support for Data Modul i.MX95 eDM SBC board. This is an evaluation board
for various custom display units.

> diff --git a/arch/arm64/boot/dts/freescale/imx95-data-modul-edm-sbc.dts b/arch/arm64/boot/dts/freescale/imx95-data-modul-edm-sbc.dts
> new file mode 100644
> index 0000000000000..0181262eb8a98
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx95-data-modul-edm-sbc.dts

[ ... ]

> +	reg_panel_vcc: regulator-panel-vcc {
> +		compatible = "regulator-fixed";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		regulator-name = "PANEL_VCC";
> +		gpios = <&i2c2_gpio_expander_20 17 0>;
> +		/* Disabled by default, unless display board plugged in. */
> +		status = "disabled";
> +	};

[Severity: Medium]
Does this regulator invert the panel power logic?

Because this fixed regulator omits the enable-active-high boolean
property, the gpiolib-of quirk implementation specifically ignores the phandle
polarity flag (0 / GPIO_ACTIVE_HIGH) and forces the polarity to active-low.
This results in inverted enable logic for the display panel when it should be
on or off.

[ ... ]

> +	i2c2_gpio_expander_20: gpio@20 {	/* U12 */
> +		compatible = "nxp,pcal6524";
> +		reg = <0x20>;
> +		#gpio-cells = <2>;
> +		gpio-controller;
> +		#interrupt-cells = <2>;
> +		interrupt-controller;
> +		interrupts-extended = <&gpio5 11 IRQ_TYPE_LEVEL_HIGH>;

[Severity: High]
Does this interrupt configuration cause an immediate IRQ storm?

The NXP PCAL6524 INT output is an open-drain, active-low signal, and
the expanders share the same gpio5 11 line. By configuring the interrupt
with IRQ_TYPE_LEVEL_HIGH, the GPIO interrupt controller continuously
perceives the natural high idle state (maintained by a pull-up) as an
active interrupt, rendering all the GPIO expanders inoperable.

> +		vcc-supply = <&reg_3p3v>;
> +		/*
> +		 * reset-gpios cannot be used because the reset
> +		 * line is shared by multiple PCAL6524 consumers.
> +		 */
> +		gpio-line-names =
> +			/* Port 0 */
> +			"UART8_RS232-485_MODE0", "UART8_RS232-485_MODE1",
> +			"UART8_RS232-485_Term_TX", "UART8_RS232-485_Term_RX",
> +			"UART8_RS232-485_EN", "VDD_3V3_M2-E_EN",

[Severity: Medium]
Will the M.2 Key-E slot remain unpowered?

The board features a dedicated power enable pin for the Key-E slot
("VDD_3V3_M2-E_EN" here on the PCAL6524 expander). However, unlike the Key-B
and Key-M PCIe slots, there is no fixed regulator defined for this pin, and
the usdhc3 node has no vmmc-supply. Since the expander powers up in input
mode, the enable pin is never actively driven high, leaving the slot unpowered
and any SDIO device failing to initialize.

[ ... ]

> +	i2c2_gpio_expander_21: gpio@21 {	/* U14 */
> +		compatible = "nxp,pcal6524";
> +		reg = <0x21>;
> +		#gpio-cells = <2>;
> +		gpio-controller;
> +		#interrupt-cells = <2>;
> +		interrupt-controller;
> +		interrupts-extended = <&gpio5 11 IRQ_TYPE_LEVEL_HIGH>;

[Severity: High]
This is a second instance of the active-high interrupt polarity issue on the
PCAL6524 INT pin, which will also contribute to an IRQ storm on gpio5 11.

[ ... ]

> +	i2c2_gpio_expander_22: gpio@22 {	/* U13 */
> +		compatible = "nxp,pcal6524";
> +		reg = <0x22>;
> +		#gpio-cells = <2>;
> +		gpio-controller;
> +		#interrupt-cells = <2>;
> +		interrupt-controller;
> +		interrupts-extended = <&gpio5 11 IRQ_TYPE_LEVEL_HIGH>;

[Severity: High]
This is a third instance of the active-high interrupt polarity issue on the
PCAL6524 INT pin, continuing to cause an IRQ storm on the shared line.

[ ... ]

> +	ethphy0: ethernet-phy@1 {	/* KSZ9131RNXI U20 */
> +		compatible = "ethernet-phy-id0022.1640";
> +		reg = <1>;
> +		interrupts-extended = <&gpio1 10 IRQ_TYPE_LEVEL_LOW>;
> +		reset-assert-us = <1000>;
> +		/* RESET_N signal rise time ~100ms */
> +		reset-deassert-us = <120000>;
> +		reset-gpios = <&i2c2_gpio_expander_22 4 GPIO_ACTIVE_HIGH>;
> +	};

[Severity: High]
Are the KSZ9131 Ethernet PHYs permanently held in reset?

The KSZ9131 PHY requires an active-low reset signal (RESET_N). By
specifying GPIO_ACTIVE_HIGH here for reset-gpios, the PHY framework will
drive the line high to assert reset, and low during normal operation, exactly
opposite of what the hardware expects, permanently holding the PHY in reset.

> +
> +	ethphy1: ethernet-phy@2 {	/* KSZ9131RNXI U22 */
> +		compatible = "ethernet-phy-id0022.1640";
> +		reg = <2>;
> +		interrupts-extended = <&gpio1 10 IRQ_TYPE_LEVEL_LOW>;
> +		reset-assert-us = <1000>;
> +		/* RESET_N signal rise time ~100ms */
> +		reset-deassert-us = <120000>;
> +		reset-gpios = <&i2c2_gpio_expander_22 5 GPIO_ACTIVE_HIGH>;
> +	};

[Severity: High]
This is the second instance of the reset-gpios polarity issue on the ethernet
PHY, also holding it permanently in reset.

[ ... ]

> +&usdhc3 {	/* M.2 Key-E */
> +	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
> +	pinctrl-0 = <&pinctrl_usdhc3>;
> +	pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
> +	pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
> +	pinctrl-3 = <&pinctrl_usdhc3>;
> +	bus-width = <4>;
> +	status = "okay";
> +};

[Severity: Medium]
As mentioned earlier regarding the missing regulator for VDD_3V3_M2-E_EN,
usdhc3 misses a vmmc-supply to control the slot's power, leaving the
M.2 Key-E slot unpowered.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260928204741.175754-1-marex@nabladev.com?part=3

  reply	other threads:[~2026-09-28 21:04 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-28 20:47 [PATCH v5 1/3] dt-bindings: phy: ti,tcan104x-can: Document Microchip ATA6563 Marek Vasut
2026-09-28 20:47 ` [PATCH v5 2/3] dt-bindings: arm: fsl: Document Data Modul i.MX95 eDM SBC Marek Vasut
2026-09-28 20:47 ` [PATCH v5 3/3] arm64: dts: imx95: Add support for " Marek Vasut
2026-09-28 21:04   ` sashiko-bot [this message]
2026-09-29 14:45   ` Frank Li
2026-09-29 15:20     ` Marek Vasut
2026-09-30 17:44       ` Francesco Dolcini
2026-09-30 18:57         ` Frank Li
2026-09-30 19:29           ` Marek Vasut
2026-09-30 21:21             ` Frank Li
2026-09-30 21:49               ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260928210448.471851F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=Frank.Li@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=imx@lists.linux.dev \
    --cc=linux-can@vger.kernel.org \
    --cc=mailhol@kernel.org \
    --cc=marex@nabladev.com \
    --cc=mkl@pengutronix.de \
    --cc=o.rempel@pengutronix.de \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=socketcan@hartkopp.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox