From: Frank Li <Frank.li@oss.nxp.com>
To: Leonardo Costa <leoreis.costa@gmail.com>
Cc: Frank.Li@nxp.com, s.hauer@pengutronix.de, kernel@pengutronix.de,
festevam@gmail.com, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
Leonardo Costa <leonardo.costa@toradex.com>
Subject: Re: [PATCH 6/6] arm64: dts: freescale: imx8mp-verdin: Add Mezzanine with Toradex Display 10.1" LVDS V2
Date: Tue, 18 Aug 2026 13:53:27 -0500 [thread overview]
Message-ID: <aoSqJ7pHEgJ_RZmr@SMW015318> (raw)
In-Reply-To: <juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf>
On Tue, Aug 18, 2026 at 03:08:33PM -0300, Leonardo Costa wrote:
> On Thu, Aug 13, 2026 at 11:15:04AM -0500, Frank Li wrote:
> > On Thu, Aug 13, 2026 at 12:43:29PM -0300, Leonardo Costa wrote:
> > > On Thu, Aug 13, 2026 at 09:58:52AM -0500, Frank Li wrote:
> > > > On Thu, Aug 13, 2026 at 10:33:35AM -0300, Leonardo Costa wrote:
> > > > > From: Leonardo Costa <leonardo.costa@toradex.com>
> > > > >
> > > > > Add a device tree overlay enabling the Toradex Capacitive Touch Display
> > > > > 10.1" LVDS V2 on the Verdin Development Board with Verdin iMX8M Plus
> > > > > Mezzanine expansion board. The panel connects via the i.MX8M Plus LCDIF
> > > > > on the Mezzanine LVDS interface (J10). The panel is an Opto Logic
> > > > > SCX1001511GGC49 10.1" WXGA TFT LCD LVDS and the touch input is provided
> > > > > by an ILITEK ILI251x capacitive touch controller.
> > > > >
> > > > > Link: https://developer.toradex.com/hardware/accessories/displays/capacitive-touch-display-101inch-lvds
> > > > > Link: https://developer.toradex.com/hardware/verdin-som-family/add-ons/verdin-imx8m-plus-mezzanine
> > > > > Signed-off-by: Leonardo Costa <leonardo.costa@toradex.com>
> > > > > ---
> > > >
> > > > what's difference with Add Toradex Capacitive Touch Display 10.1" LVDS V2
> > > >
> > > > why not share one dtso?
> > > >
> > > > Frank
> > >
> > > Hi Frank,
> > >
> > > There are two main differences:
> > >
> > > 1. The mezzanine one uses different backlight controll pins, so here we
> > > use the 'backlight-mezzanine' node, instead of the 'backlight' one, used
> > > in the one without the mezzanine.
> > >
> > > 2. The touchscreen GPIO and interrupt pins are also different with the
> > > mezzanine board.
> >
> >
> > And there are for imx8mm
> > https://lore.kernel.org/imx/20260724-v1-verdin-imx8mm-dtbos-v2-3-9d7988bd76f6@toradex.com/
> >
> > https://lore.kernel.org/imx/sr26lfvwasgcosfzcf4ydtwxwjjutlio2yqpgxldatpzjo7e4y@77k7gefnjzvl/
> >
> > Any ways, it is too late for 7.3, we have enough time for 7.4 to discuss
> > work on optimization solution.
> >
> > If use nexus connectors, we can share one dtso now if there are not
> > clock settings.
>
> Hi Frank,
>
> I tried implementing the nexus connectors in imx8mp-verdin-wifi-dev.dts, and
> modify the Mezzanine overlay for the LVDS V2 display to do an initial test
> (diff with the changes at the end of the email). They worked partially, but it
> introduced an issue where the drivers come up much later.
Thank you for working on this.
> Before, the drivers
> relevant for the display (in this case, LCDIF and the touch controller
> specifically) came up at around ~8s. After introducing the nexus connector they
> come up at around ~20s, after the board has already booted (complete logs at
> https://paste.debian.net/hidden/81acfa7d):
>
> [ 21.008400] input: ILI210x Touchscreen as /devices/platform/soc@0/30800000.bus/30a30000.i2c/i2c-1/1-0041/input/input3
> [ 21.014785] [drm] Initialized imx-lcdif 1.0.0 for 32e90000.display-controller on minor 2
> [ 21.029634] Console: switching to colour frame buffer device 160x50
> [ 21.029823] imx-lcdif 32e90000.display-controller: [drm] fb0: imx-lcdifdrmfb frame buffer device
> [ 21.031376] imx8m-blk-ctrl 32ec0000.blk-ctrl: sync_state() pending due to 32e30000.dwe
>
> Was this behavior observed before? It may have not been noticed, since the
> drivers do come up at some point, and it may not be an issue for other
> interfaces, or they may actually come up earlier in other cases. In our case
> this is important though, since visual feedback from the display is expected
> early.
Understand, we have not notified this problem before.
>
> It seems that the drivers are being deferred at boot start by the
> device_links_check_suppliers() function. It runs through the drivers before
> they're initialized and defers them if their suppliers are not available. The
> GPIO and PWM drivers are able to follow the gpio-map and pwm-map properties
> (through the of_parse_phandle_with_args_map() function), but from what I see,
> device_links_check_suppliers() has no such mechanism. It follows the phandle to
> the nexus connector node only, and since there's no compatible driver for it,
> the function defers the consumer drivers used in the overlay.
>
> I think this is what is happening mainly because setting the
> fw_devlink=permissive kernel parameter (which sets the DL_FLAG_SYNC_STATE_ONLY
> flag) solved the issue, though I could be misunderstanding something.
>
> int device_links_check_suppliers(struct device *dev)
> {
> ...
> list_for_each_entry(link, &dev->links.suppliers, c_node) {
> ...
>
> if (link->status != DL_STATE_AVAILABLE &&
> !device_link_test(link, DL_FLAG_SYNC_STATE_ONLY)) {
>
> ...
> device_links_missing_supplier(dev);
> ret = dev_err_probe(dev, -EPROBE_DEFER,
> "supplier %s not ready\n", dev_name(link->supplier));
> break;
> }
> WRITE_ONCE(link->status, DL_STATE_CONSUMER_PROBE);
> }
> ...
> }
>
> Has this behavior been observed before? Do you know of any work being done that
> addresses this?
Does a dummy container driver (for debug) to proof your analyer? Let
me to find time to debug it.
Frank
>
> See below the changes that I made for this test, relative to my last patch
> (only a draft):
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev-mezzanine-panel-cap-touch-10inch-lvds-v2.dtso b/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev-mezzanine-panel-cap-touch-10inch-lvds-v2.dtso
> index b78322907192..4aa1c407af3f 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev-mezzanine-panel-cap-touch-10inch-lvds-v2.dtso
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev-mezzanine-panel-cap-touch-10inch-lvds-v2.dtso
> @@ -21,9 +21,19 @@
> #include "imx8mp-pinfunc.h"
>
> &{/} {
> + backlight_lvds: backlight-lvds {
> + compatible = "pwm-backlight";
> + brightness-levels = <0 45 63 88 119 158 203 255>;
> + default-brightness-level = <4>;
> + /* Verdin GPIO 4 (SODIMM 212) */
> + enable-gpios = <&lvds_native_connector 1 GPIO_ACTIVE_HIGH>;
> + /* Verdin PWM_2 (SODIMM 16) */
> + pwms = <&lvds_native_connector 0 6666667 0>;
> + };
> +
> panel-lvds-native {
> compatible = "optologic,scx1001511ggc49", "panel-lvds";
> - backlight = <&backlight_mezzanine>;
> + backlight = <&backlight_lvds>;
> data-mapping = "vesa-24";
> power-supply = <®_3p3v>;
> height-mm = <136>;
> @@ -53,13 +63,6 @@ panel_lvds_native_in: endpoint {
> };
> };
>
> -&backlight_mezzanine {
> - /* Verdin PWM_2 (SODIMM 16) */
> - pwms = <&pwm2 0 6666667 0>;
> -
> - status = "okay";
> -};
> -
> /* Verdin I2C_2_DSI */
> &i2c2 {
> #address-cells = <1>;
> @@ -69,10 +72,10 @@ touchscreen@41 {
> compatible = "ilitek,ili251x";
> reg = <0x41>;
> /* Verdin GPIO_3 (SODIMM 210) */
> - interrupt-parent = <&gpio1>;
> - interrupts = <5 IRQ_TYPE_EDGE_RISING>;
> + interrupt-parent = <&lvds_native_connector>;
> + interrupts = <1>;
> /* Verdin GPIO_2 (SODIMM 208) */
> - reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
> + reset-gpios = <&lvds_native_connector 0 GPIO_ACTIVE_LOW>;
> };
> };
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi
> index 72a4f846d694..1103da3d34ba 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi
> @@ -4,6 +4,28 @@
> */
>
> / {
> + lvds_native_connector: lvds-mezzanine-connector {
> + // NOTE: Placeholder name, no binding for this yet
> + compatible = "tdx,verdin-lvds-connector";
> +
> + #gpio-cells = <2>;
> + gpio-map = <0 0 &gpio1 1 0>, /* Touchscreen reset GPIO */
> + <1 0 &gpio1 6 0>; /* Backlight Enable GPIO */
> + gpio-map-mask = <0xffffffff 0x0>;
> + gpio-map-pass-thru = <0x0 0xffffffff>;
> +
> + #pwm-cells = <3>;
> + pwm-map = <0 0 0 &pwm2 0 0 0>; /* Backlight PWM */
> + pwm-map-mask = <0x0 0x0 0x0>;
> + pwm-map-pass-thru = <0x0 0xffffffff 0xffffffff>;
> +
> + #address-cells = <0>;
> + #interrupt-cells = <1>;
> + interrupt-map = <0 &gpio1 5 IRQ_TYPE_EDGE_FALLING>, /* Touchscreen interrupt */
> + <1 &gpio1 5 IRQ_TYPE_EDGE_RISING>;
> + interrupt-map-mask = <0xffffffff>;
> + };
> +
> native-hdmi-connector {
> compatible = "hdmi-connector";
> label = "X37";
>
> Leonardo
next prev parent reply other threads:[~2026-08-18 18:53 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-13 13:33 [PATCH 0/6] arm64: dts: freescale: imx8mp-verdin: Add Toradex Capacitive Touch Display 10.1" LVDS V1 and V2 Leonardo Costa
2026-08-13 13:33 ` [PATCH 1/6] arm64: dts: freescale: imx8mp-verdin: Add Toradex Capacitive Touch Display 10.1" LVDS Leonardo Costa
2026-08-13 13:51 ` sashiko-bot
2026-08-13 16:52 ` Leonardo Costa
2026-08-13 13:33 ` [PATCH 2/6] arm64: dts: freescale: imx8mp-verdin: Add Toradex DSI to LVDS adapter with 10.1" display Leonardo Costa
2026-08-13 13:33 ` [PATCH 3/6] arm64: dts: freescale: imx8mp-verdin: Add Mezzanine with Toradex Display 10.1" LVDS Leonardo Costa
2026-08-13 13:33 ` [PATCH 4/6] arm64: dts: freescale: imx8mp-verdin: Add Toradex Capacitive Touch Display 10.1" LVDS V2 Leonardo Costa
2026-08-13 14:19 ` sashiko-bot
2026-08-13 15:47 ` Leonardo Costa
2026-08-13 13:33 ` [PATCH 5/6] arm64: dts: freescale: imx8mp-verdin: Add Toradex DSI to LVDS adapter with the 10.1" V2 display Leonardo Costa
2026-08-13 14:28 ` sashiko-bot
2026-08-13 13:33 ` [PATCH 6/6] arm64: dts: freescale: imx8mp-verdin: Add Mezzanine with Toradex Display 10.1" LVDS V2 Leonardo Costa
2026-08-13 14:58 ` Frank Li
2026-08-13 15:43 ` Leonardo Costa
2026-08-13 16:15 ` Frank Li
2026-08-18 18:08 ` Leonardo Costa
2026-08-18 18:53 ` Frank Li [this message]
2026-08-19 11:56 ` Leonardo Costa
2026-08-19 14:18 ` Frank Li
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=aoSqJ7pHEgJ_RZmr@SMW015318 \
--to=frank.li@oss.nxp.com \
--cc=Frank.Li@nxp.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=krzk+dt@kernel.org \
--cc=leonardo.costa@toradex.com \
--cc=leoreis.costa@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
/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.