Skip to contentSkip to conversation

dt-bindings: lcdif: Document a imx6sx-lcdif fallback

PATCH RESEND In review Fabio Estevam 3 participants 10 messages Oct 13, 2025 – Nov 10, 2025

Subsystems (5)
lore
Share & tools
lore

Fabio Estevam

author reviewer
#0 lore raw

PATCH RESEND v4 1/3 dt-bindings: lcdif: Document a imx6sx-lcdif fallback

imx6sx.dtsi has the following lcdif entries:

compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";

This causes the following dt-schema warning:

['fsl,imx6sx-lcdif', 'fsl,imx28-lcdif'] is too long

To keep DT compatibility, document 'fsl,imx28-lcdif' as a possible 'fsl,imx6sx-lcdif' fallback.

---
Hi Liu Ying,

Could you please help apply patches 1 and 2 to drm-misc?

I got several Reviewed-by/Acked-by tags on this series, but the patches were not applied during several kernel cycles.

Thanks

 Documentation/devicetree/bindings/display/fsl,lcdif.yaml | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/display/fsl,lcdif.yaml +5 -2
index 2dd0411ec651..ce31b873fb95 100644
@@ -19,7 +19,6 @@ properties:
       - enum:
           - fsl,imx23-lcdif
           - fsl,imx28-lcdif
-          - fsl,imx6sx-lcdif
           - fsl,imx8mp-lcdif
           - fsl,imx93-lcdif
       - items:
@@ -32,6 +31,10 @@ properties:
               - fsl,imx8mn-lcdif
               - fsl,imx8mq-lcdif
           - const: fsl,imx6sx-lcdif
+      - items:
+          - enum:
+              - fsl,imx6sx-lcdif
+          - const: fsl,imx28-lcdif
 
   reg:
     maxItems: 1
@@ -199,7 +202,7 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
 
     display-controller@2220000 {
-        compatible = "fsl,imx6sx-lcdif";
+        compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
         reg = <0x02220000 0x4000>;
         interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
         clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
Signature · 1 line
2.34.1
author reviewer
#1 lore raw

PATCH RESEND v4 2/3 dt-bindings: lcdif: Expand the imx6sl/imx6sll fallbacks

mx6sl.dtsi and imx6sll.dtsi have the following lcdif entries:

compatible = "fsl,imx6sl-lcdif", "fsl,imx28-lcdif";

This causes dt-schema warnings as the current binding only allow 'fsl,imx6sx-lcdif' as fallback.

['fsl,imx6sl-lcdif', 'fsl,imx28-lcdif'] is too long ['fsl,imx6sll-lcdif', 'fsl,imx28-lcdif'] is too long

The imx6sx-lcdif programming model has more advanced features, such as overlay plane and the CRC32 support than the imx28-lcdif IP.

Expand the imx6sl/imx6sll lcdif fallbacks to accept a less specific fsl,imx28-lcdif fallback:

compatible = "fsl,imx6sl-lcdif", "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";

This helps keeping DT compatibility as well as using the more advanced lcdif features found on imx6sl and imx6sll.

---
 Documentation/devicetree/bindings/display/fsl,lcdif.yaml | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/display/fsl,lcdif.yaml +6 -2
index ce31b873fb95..d665f3241e97 100644
@@ -23,14 +23,18 @@ properties:
           - fsl,imx93-lcdif
       - items:
           - enum:
-              - fsl,imx6sl-lcdif
-              - fsl,imx6sll-lcdif
               - fsl,imx6ul-lcdif
               - fsl,imx7d-lcdif
               - fsl,imx8mm-lcdif
               - fsl,imx8mn-lcdif
               - fsl,imx8mq-lcdif
           - const: fsl,imx6sx-lcdif
+      - items:
+          - enum:
+              - fsl,imx6sl-lcdif
+              - fsl,imx6sll-lcdif
+          - const: fsl,imx6sx-lcdif
+          - const: fsl,imx28-lcdif
       - items:
           - enum:
               - fsl,imx6sx-lcdif
Signature · 1 line
2.34.1
#2 lore raw

Re: [PATCH RESEND v4 2/3] dt-bindings: lcdif: Expand the imx6sl/imx6sll fallbacks

Quoted 4 lines · Fabio Estevam

mx6sl.dtsi and imx6sll.dtsi have the following lcdif entries:

compatible = "fsl,imx6sl-lcdif", "fsl,imx28-lcdif";

Quoted 8 lines

This causes dt-schema warnings as the current binding only allow 'fsl,imx6sx-lcdif' as fallback.

['fsl,imx6sl-lcdif', 'fsl,imx28-lcdif'] is too long ['fsl,imx6sll-lcdif', 'fsl,imx28-lcdif'] is too long

The imx6sx-lcdif programming model has more advanced features, such as overlay plane and the CRC32 support than the imx28-lcdif IP.

Sorry for the late comment, but the LCDIF chapter in i.MX28 TRM contains the CRC register too, though I agree that i.MX6SX LCDIF supports overlay plane while i.MX28 LCDIF doesn't.

Quoted 5 lines

Expand the imx6sl/imx6sll lcdif fallbacks to accept a less specific fsl,imx28-lcdif fallback:

compatible = "fsl,imx6sl-lcdif", "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";

Looking at i.MX6SL TRM, I don't find any register to control overlay plane in LCDIF chapter, so I don't think i.MX6SL LCDIF supports overlay plane like i.MX6SX LCDIF does. So, why not make the DT binding allow "compatible = "fsl,imx6sl-lcdif", "fsl,imx28-lcdif";" instead?

I'm assuming i.MX6SL LCDIF and i.MX6SLL LCDIF are exactly the same.

Quoted 37 lines

This helps keeping DT compatibility as well as using the more advanced lcdif features found on imx6sl and imx6sll.

---
 Documentation/devicetree/bindings/display/fsl,lcdif.yaml | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/display/fsl,lcdif.yaml +6 -2
index ce31b873fb95..d665f3241e97 100644
@@ -23,14 +23,18 @@ properties:
           - fsl,imx93-lcdif
       - items:
           - enum:
-              - fsl,imx6sl-lcdif
-              - fsl,imx6sll-lcdif
               - fsl,imx6ul-lcdif
               - fsl,imx7d-lcdif
               - fsl,imx8mm-lcdif
               - fsl,imx8mn-lcdif
               - fsl,imx8mq-lcdif
           - const: fsl,imx6sx-lcdif
+      - items:
+          - enum:
+              - fsl,imx6sl-lcdif
+              - fsl,imx6sll-lcdif
+          - const: fsl,imx6sx-lcdif
+          - const: fsl,imx28-lcdif
       - items:
           - enum:
               - fsl,imx6sx-lcdif
Signature · 2 lines
Regards,
Liu Ying
author reviewer
#3 lore raw

PATCH RESEND v4 3/3 ARM: dts: imx6sl: Provide a more specific lcdif compatible

In reply to Fabio Estevam

The LCDIF IP on i.MX6SL and i.MX6SLL is compatible with i.MX6SX.

Provide a more specific "fsl,imx6sx-lcdif" compatible and still keep "fsl,imx28-lcdif" for DT compatibility.

---
 arch/arm/boot/dts/nxp/imx/imx6sl.dtsi  | 3 ++-
 arch/arm/boot/dts/nxp/imx/imx6sll.dtsi | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
arch/arm/boot/dts/nxp/imx/imx6sl.dtsi +2 -1
index 7381fb7f8912..074c48b04519 100644
@@ -776,7 +776,8 @@ epdc: epdc@20f4000 {
 			};
 
 			lcdif: lcdif@20f8000 {
-				compatible = "fsl,imx6sl-lcdif", "fsl,imx28-lcdif";
+				compatible = "fsl,imx6sl-lcdif", "fsl,imx6sx-lcdif",
+					     "fsl,imx28-lcdif";
 				reg = <0x020f8000 0x4000>;
 				interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clks IMX6SL_CLK_LCDIF_PIX>,
arch/arm/boot/dts/nxp/imx/imx6sll.dtsi +2 -1
index 8c5ca4f9b87f..745f3640e114 100644
@@ -657,7 +657,8 @@ pxp: pxp@20f0000 {
 			};
 
 			lcdif: lcd-controller@20f8000 {
-				compatible = "fsl,imx6sll-lcdif", "fsl,imx28-lcdif";
+				compatible = "fsl,imx6sll-lcdif", "fsl,imx6sx-lcdif",
+					     "fsl,imx28-lcdif";
 				reg = <0x020f8000 0x4000>;
 				interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clks IMX6SLL_CLK_LCDIF_PIX>,
Signature · 1 line
2.34.1
#4 lore raw
In reply to Fabio Estevam
Quoted 8 lines · Fabio Estevam

imx6sx.dtsi has the following lcdif entries:

compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";

This causes the following dt-schema warning:

['fsl,imx6sx-lcdif', 'fsl,imx28-lcdif'] is too long

Quoted 8 lines

To keep DT compatibility, document 'fsl,imx28-lcdif' as a possible 'fsl,imx6sx-lcdif' fallback.

---
Hi Liu Ying,

Hi,

Quoted 2 lines

Could you please help apply patches 1 and 2 to drm-misc?

As Marek and Stefan are the two maintainers of "MXSFB DRM DRIVER" according to MAINTAINERS, they are the first two supposed to conduct apply if needed. But I can help apply if they don't respond and all my comments are addressed.

Quoted 22 lines

I got several Reviewed-by/Acked-by tags on this series, but the patches were not applied during several kernel cycles.

Thanks

 Documentation/devicetree/bindings/display/fsl,lcdif.yaml | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/display/fsl,lcdif.yaml +0 -1
index 2dd0411ec651..ce31b873fb95 100644
@@ -19,7 +19,6 @@ properties:
       - enum:
           - fsl,imx23-lcdif
           - fsl,imx28-lcdif
-          - fsl,imx6sx-lcdif
           - fsl,imx8mp-lcdif
           - fsl,imx93-lcdif
       - items:

Documentation/devicetree/bindings/display/fsl,lcdif.yaml properties: · line 37

Quoted 7 lines
Documentation/devicetree/bindings/display/fsl,lcdif.yaml +4 -0
@@ -32,6 +31,10 @@ properties:
               - fsl,imx8mn-lcdif
               - fsl,imx8mq-lcdif
           - const: fsl,imx6sx-lcdif
+      - items:
+          - enum:
+              - fsl,imx6sx-lcdif
+          - const: fsl,imx28-lcdif

Strictly speaking, I don't think i.MX6SX LCDIF is compatible with i.MX28 LCDIF because at least i.MX28 LCDIF has the version and debug{0,1,2} registers(at 0x1c0, 0x1d0, 0x1e0 and 0x1f0) while i.MX6SX LCDIF hasn't.

Quoted 12 lines
Documentation/devicetree/bindings/display/fsl,lcdif.yaml +1 -1
   reg:
     maxItems: 1
@@ -199,7 +202,7 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
 
     display-controller@2220000 {
-        compatible = "fsl,imx6sx-lcdif";
+        compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
         reg = <0x02220000 0x4000>;
         interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
         clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
Signature · 2 lines
Regards,
Liu Ying
author reviewer
#5 lore raw

Hi Liu,

Quoted 3 lines · Liu Ying

Strictly speaking, I don't think i.MX6SX LCDIF is compatible with i.MX28 LCDIF because at least i.MX28 LCDIF has the version and debug{0,1,2} registers(at 0x1c0, 0x1d0, 0x1e0 and 0x1f0) while i.MX6SX LCDIF hasn't.

There are some DT users, such as Barebox that matches against fsl,imx28-lcdif, so we cannot remove it.

In my first attempt, I tried removing it:

https://lore.kernel.org/linux-devicetree/[email protected]/

but this was rejected due to potential dtb compatibility breakage:

https://lore.kernel.org/linux-devicetree/[email protected]/

#6 lore raw
Quoted 1 line · Fabio Estevam

Hi Liu,

Hi Fabio,

Quoted 9 lines · Liu Ying
Quoted 4 lines

Strictly speaking, I don't think i.MX6SX LCDIF is compatible with i.MX28 LCDIF because at least i.MX28 LCDIF has the version and debug{0,1,2} registers(at 0x1c0, 0x1d0, 0x1e0 and 0x1f0) while i.MX6SX LCDIF hasn't.

There are some DT users, such as Barebox that matches against fsl,imx28-lcdif, so we cannot remove it.

Hmmm, it looks like software projects like Barebox don't really follow this DT binding. Is it possible to fix Barebox to avoid changing this DT binding by this patch? I'm assuming that Uboot has already been fixed.

Quoted 8 lines

In my first attempt, I tried removing it:

https://lore.kernel.org/linux-devicetree/[email protected]/

but this was rejected due to potential dtb compatibility breakage:

https://lore.kernel.org/linux-devicetree/[email protected]/

Signature · 2 lines
Regards,
Liu Ying
author reviewer
#7 lore raw

Hi Ahmad,

Quoted 13 lines · Liu Ying
Quoted 1 line · Fabio Estevam

Hi Liu,

Hi Fabio,

Quoted 7 lines · Liu Ying
Quoted 4 lines

Strictly speaking, I don't think i.MX6SX LCDIF is compatible with i.MX28 LCDIF because at least i.MX28 LCDIF has the version and debug{0,1,2} registers(at 0x1c0, 0x1d0, 0x1e0 and 0x1f0) while i.MX6SX LCDIF hasn't.

Quoted 6 lines
Quoted 2 lines

There are some DT users, such as Barebox that matches against fsl,imx28-lcdif, so we cannot remove it.

Hmmm, it looks like software projects like Barebox don't really follow this DT binding. Is it possible to fix Barebox to avoid changing this DT binding by this patch? I'm assuming that Uboot has already been fixed.

What do you think?

Thanks

#8 lore raw

Hi,

Quoted 7 lines · Fabio Estevam
Quoted 6 lines · Liu Ying
Quoted 5 lines · Fabio Estevam
Quoted 3 lines · Liu Ying

Strictly speaking, I don't think i.MX6SX LCDIF is compatible with i.MX28 LCDIF because at least i.MX28 LCDIF has the version and debug{0,1,2} registers(at 0x1c0, 0x1d0, 0x1e0 and 0x1f0) while i.MX6SX LCDIF hasn't.

Thanks for pointing this out. In my opinion, these registers are auxiliary and don't really change the compatibility situation as a functional driver can be written without their use, evidenced by the Linux driver doing just fine without using these registers.

Quoted 7 lines
Quoted 7 lines
Quoted 2 lines

There are some DT users, such as Barebox that matches against fsl,imx28-lcdif, so we cannot remove it.

Hmmm, it looks like software projects like Barebox don't really follow this DT binding. Is it possible to fix Barebox to avoid changing this DT binding by this patch? I'm assuming that Uboot has already been fixed.
What do you think?

I am sorry my prior feedback ended up stalling this series.

There is a lot of regressions happening due to upstream DT changes and I am just trying to raise awareness. Another example I stumbled over today:
https://lore.kernel.org/all/[email protected]/

I have submitted a patch[1] to barebox adding explicit i.MX6 SoloX support, so, having expressed my opinion above, please proceed as you see fit.

[1]: https://lore.barebox.org/barebox/[email protected]/

Cheers,
Ahmad

Quoted 3 lines

Thanks

Signature · 4 lines
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
#9 lore raw
Quoted 1 line · Ahmad Fatoum

Hi,

Hi,

Quoted 6 lines · Fabio Estevam
Quoted 4 lines · Liu Ying
Quoted 3 lines · Fabio Estevam
Quoted 2 lines · Liu Ying
Quoted 8 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines

Strictly speaking, I don't think i.MX6SX LCDIF is compatible with i.MX28 LCDIF because at least i.MX28 LCDIF has the version and debug{0,1,2} registers(at 0x1c0, 0x1d0, 0x1e0 and 0x1f0) while i.MX6SX LCDIF hasn't.

Thanks for pointing this out. In my opinion, these registers are auxiliary and don't really change the compatibility situation as a functional driver can be written without their use, evidenced by the Linux driver doing just fine without using these registers.

DT bindings should after all describe hardwares and in theory they should not consider software implementation, that's why I said 'strictly speaking'.

People may argue that potential software would access those "auxiliary" registers and hence i.MX28 LCDIF is not a fallback for i.MX6SX LCDIF.

And, to me, register at 0x1e0, i.e., HW_LCDIF_DEBUG1 is not that "auxiliary" at least for Linux, because Linux DRM supports getting current display scanout position to generate accurate vblank timestamp. HW_LCDIF_DEBUG1 actually provides the interface to read scanout position.

https://elixir.bootlin.com/linux/v6.18-rc1/source/include/drm/drm_modeset_helper_vtables.h#L448

Quoted 11 lines
Quoted 8 lines
Quoted 8 lines
Quoted 3 lines

There are some DT users, such as Barebox that matches against fsl,imx28-lcdif, so we cannot remove it.

Hmmm, it looks like software projects like Barebox don't really follow this DT binding. Is it possible to fix Barebox to avoid changing this DT binding by this patch? I'm assuming that Uboot has already been fixed.
What do you think?

I am sorry my prior feedback ended up stalling this series.

Quoted 7 lines

There is a lot of regressions happening due to upstream DT changes and I am just trying to raise awareness. Another example I stumbled over today:
https://lore.kernel.org/all/[email protected]/

I have submitted a patch[1] to barebox adding explicit i.MX6 SoloX support, so, having expressed my opinion above, please proceed as you see fit.

Fabio, it seems after Barebox is fixed, you can fix the LCDIF compatible strings in imx6sx.dtsi? I don't know if there is any other software project which is taking fsl,imx28-lcdif as a fallback for i.MX6SX LCDIF...

Quoted 11 lines

[1]: https://lore.barebox.org/barebox/[email protected]/

Cheers,
Ahmad

Quoted 3 lines

Thanks

Signature · 2 lines
Regards,
Liu Ying