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 = <®_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
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.