* [PATCH 1/4] Revert "dt-bindings: display: bridge: ldb: Add check for reg and reg-names"
2026-05-04 20:21 [PATCH 0/4] i.MX LDB DT cleanups Marco Felsch
@ 2026-05-04 20:21 ` Marco Felsch
2026-05-04 20:21 ` [PATCH 2/4] Revert "dt-bindings: display: bridge: ldb: Fill in reg property" Marco Felsch
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Marco Felsch @ 2026-05-04 20:21 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
laurentiu.palcu, victor.liu
Cc: kernel, dri-devel, devicetree, linux-kernel, imx,
linux-arm-kernel, Marco Felsch
This reverts commit 8aa2f0ac08d3b207ba54e98698c9d696b86452a7.
The LDB is either part of the IOMUX_GPR (i.MX6SX) or the BLKCTRL
(i.MX8MP, i.MX93) register space. Both IOMUX_GPR and BLKCTRL are
register ranges with loose register definitions. E.g.
- On the i.MX8MP there is one register which controls the AXI
threshold for two different IPs (BIT(31:16) - IP1, BIT(15:0) - IP2).
- On the i.MX6SX IOMUXC_GPR5 controlls: CSI2 mux, WDOG3 settings, PXP
handshake, ...
In conclusion: it can't be ensured that one register belongs to one
dedicated IP and the LDB is rather an exception than the rule.
Therefore remove the 'reg' and 'reg-names' property requirement.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
index 7f380879fffdfef28d9a35d7fbf87fdf28377b43..828b7a40e9b6cf27f76d1cd3009505b03cbe09f1 100644
--- a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
+++ b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
@@ -68,7 +68,6 @@ required:
- compatible
- clocks
- ports
- - reg
allOf:
- if:
@@ -83,15 +82,6 @@ allOf:
ports:
properties:
port@2: false
- - if:
- not:
- properties:
- compatible:
- contains:
- const: fsl,imx6sx-ldb
- then:
- required:
- - reg-names
- if:
properties:
--
2.47.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 2/4] Revert "dt-bindings: display: bridge: ldb: Fill in reg property"
2026-05-04 20:21 [PATCH 0/4] i.MX LDB DT cleanups Marco Felsch
2026-05-04 20:21 ` [PATCH 1/4] Revert "dt-bindings: display: bridge: ldb: Add check for reg and reg-names" Marco Felsch
@ 2026-05-04 20:21 ` Marco Felsch
2026-05-04 21:42 ` Rob Herring (Arm)
2026-05-05 14:15 ` Rob Herring
2026-05-04 20:21 ` [PATCH 3/4] ARM: dts: imx6sx: remove LDB reg property Marco Felsch
2026-05-04 20:21 ` [PATCH 4/4] arm64: dts: imx8mp: remove LDB reg and reg-names property Marco Felsch
3 siblings, 2 replies; 8+ messages in thread
From: Marco Felsch @ 2026-05-04 20:21 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
laurentiu.palcu, victor.liu
Cc: kernel, dri-devel, devicetree, linux-kernel, imx,
linux-arm-kernel, Marco Felsch
This reverts commit 16c8d76abe83d75b578d72ee22d25a52c764e14a.
Remove the 'reg' and 'reg-names' property from the LDB.
The LDB is either part of the IOMUX_GPR (i.MX6SX) or the BLKCTRL
(i.MX8MP, i.MX93) register space. Both IOMUX_GPR and BLKCTRL are
register ranges with loose register definitions. E.g.
- On the i.MX8MP there is one register which controls the AXI
threshold for two different IPs (BIT(31:16) - IP1, BIT(15:0) - IP2).
- On the i.MX6SX IOMUXC_GPR5 controlls: CSI2 mux, WDOG3 settings, PXP
handshake, ...
In conclusion: it can't be ensured that one register belongs to one
dedicated IP and the LDB is rather an exception than the rule.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
.../devicetree/bindings/display/bridge/fsl,ldb.yaml | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
index 828b7a40e9b6cf27f76d1cd3009505b03cbe09f1..e04df77af756f1dc46fc098d765502d44cc2de00 100644
--- a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
+++ b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
@@ -27,14 +27,6 @@ properties:
clock-names:
const: ldb
- reg:
- maxItems: 2
-
- reg-names:
- items:
- - const: ldb
- - const: lvds
-
nxp,enable-termination-resistor:
type: boolean
description:
@@ -99,15 +91,10 @@ examples:
#include <dt-bindings/clock/imx8mp-clock.h>
blk-ctrl {
- #address-cells = <1>;
- #size-cells = <1>;
-
- bridge@5c {
+ bridge {
compatible = "fsl,imx8mp-ldb";
clocks = <&clk IMX8MP_CLK_MEDIA_LDB>;
clock-names = "ldb";
- reg = <0x5c 0x4>, <0x128 0x4>;
- reg-names = "ldb", "lvds";
ports {
#address-cells = <1>;
--
2.47.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH 2/4] Revert "dt-bindings: display: bridge: ldb: Fill in reg property"
2026-05-04 20:21 ` [PATCH 2/4] Revert "dt-bindings: display: bridge: ldb: Fill in reg property" Marco Felsch
@ 2026-05-04 21:42 ` Rob Herring (Arm)
2026-05-05 14:15 ` Rob Herring
1 sibling, 0 replies; 8+ messages in thread
From: Rob Herring (Arm) @ 2026-05-04 21:42 UTC (permalink / raw)
To: Marco Felsch
Cc: imx, Sascha Hauer, Frank Li, linux-kernel, linux-arm-kernel,
Marek Vasut, Pengutronix Kernel Team, Laurent Pinchart,
laurentiu.palcu, David Airlie, Simona Vetter, dri-devel,
Jernej Skrabec, Jonas Karlman, Maarten Lankhorst, Robert Foss,
Thomas Zimmermann, Andrzej Hajda, Conor Dooley, Neil Armstrong,
Fabio Estevam, victor.liu, Maxime Ripard, devicetree,
Krzysztof Kozlowski, kernel
On Mon, 04 May 2026 22:21:42 +0200, Marco Felsch wrote:
> This reverts commit 16c8d76abe83d75b578d72ee22d25a52c764e14a.
>
> Remove the 'reg' and 'reg-names' property from the LDB.
>
> The LDB is either part of the IOMUX_GPR (i.MX6SX) or the BLKCTRL
> (i.MX8MP, i.MX93) register space. Both IOMUX_GPR and BLKCTRL are
> register ranges with loose register definitions. E.g.
>
> - On the i.MX8MP there is one register which controls the AXI
> threshold for two different IPs (BIT(31:16) - IP1, BIT(15:0) - IP2).
> - On the i.MX6SX IOMUXC_GPR5 controlls: CSI2 mux, WDOG3 settings, PXP
> handshake, ...
>
> In conclusion: it can't be ensured that one register belongs to one
> dedicated IP and the LDB is rather an exception than the rule.
>
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> ---
> .../devicetree/bindings/display/bridge/fsl,ldb.yaml | 15 +--------------
> 1 file changed, 1 insertion(+), 14 deletions(-)
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/soc/imx/fsl,imx8mp-media-blk-ctrl.example.dtb: blk-ctrl@32ec0000 (fsl,imx8mp-media-blk-ctrl): bridge@5c: 'reg', 'reg-names' do not match any of the regexes: '^pinctrl-[0-9]+$'
from schema $id: http://devicetree.org/schemas/soc/imx/fsl,imx8mp-media-blk-ctrl.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/soc/imx/fsl,imx8mp-media-blk-ctrl.example.dtb: blk-ctrl@32ec0000 (fsl,imx8mp-media-blk-ctrl): bridge@5c: Unevaluated properties are not allowed ('reg', 'reg-names' were unexpected)
from schema $id: http://devicetree.org/schemas/soc/imx/fsl,imx8mp-media-blk-ctrl.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/soc/imx/fsl,imx8mp-media-blk-ctrl.example.dtb: bridge@5c (fsl,imx8mp-ldb): 'reg', 'reg-names' do not match any of the regexes: '^pinctrl-[0-9]+$'
from schema $id: http://devicetree.org/schemas/display/bridge/fsl,ldb.yaml
doc reference errors (make refcheckdocs):
See https://patchwork.kernel.org/project/devicetree/patch/20260504-v7-1-topic-ldb-fixes-v1-2-0125d937ff7f@pengutronix.de
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 2/4] Revert "dt-bindings: display: bridge: ldb: Fill in reg property"
2026-05-04 20:21 ` [PATCH 2/4] Revert "dt-bindings: display: bridge: ldb: Fill in reg property" Marco Felsch
2026-05-04 21:42 ` Rob Herring (Arm)
@ 2026-05-05 14:15 ` Rob Herring
2026-05-05 15:45 ` Marco Felsch
1 sibling, 1 reply; 8+ messages in thread
From: Rob Herring @ 2026-05-05 14:15 UTC (permalink / raw)
To: Marco Felsch
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
laurentiu.palcu, victor.liu, dri-devel, devicetree, linux-kernel,
imx, linux-arm-kernel
On Mon, May 04, 2026 at 10:21:42PM +0200, Marco Felsch wrote:
> This reverts commit 16c8d76abe83d75b578d72ee22d25a52c764e14a.
>
> Remove the 'reg' and 'reg-names' property from the LDB.
>
> The LDB is either part of the IOMUX_GPR (i.MX6SX) or the BLKCTRL
> (i.MX8MP, i.MX93) register space. Both IOMUX_GPR and BLKCTRL are
> register ranges with loose register definitions. E.g.
>
> - On the i.MX8MP there is one register which controls the AXI
> threshold for two different IPs (BIT(31:16) - IP1, BIT(15:0) - IP2).
> - On the i.MX6SX IOMUXC_GPR5 controlls: CSI2 mux, WDOG3 settings, PXP
> handshake, ...
>
> In conclusion: it can't be ensured that one register belongs to one
> dedicated IP and the LDB is rather an exception than the rule.
It is fine if there's a child node for LDB if the LDB registers are
consistent, but the other misc things are represented by the parent
node. It is certainly not a requirement that either everything be in
child nodes or nothing be in child nodes.
What I don't see in this series is what problem does this fix? If you
are going to break compatibility, then there had better be a good
reason.
Rob
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/4] Revert "dt-bindings: display: bridge: ldb: Fill in reg property"
2026-05-05 14:15 ` Rob Herring
@ 2026-05-05 15:45 ` Marco Felsch
0 siblings, 0 replies; 8+ messages in thread
From: Marco Felsch @ 2026-05-05 15:45 UTC (permalink / raw)
To: Rob Herring
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
laurentiu.palcu, victor.liu, dri-devel, devicetree, linux-kernel,
imx, linux-arm-kernel
On 26-05-05, Rob Herring wrote:
> On Mon, May 04, 2026 at 10:21:42PM +0200, Marco Felsch wrote:
> > This reverts commit 16c8d76abe83d75b578d72ee22d25a52c764e14a.
> >
> > Remove the 'reg' and 'reg-names' property from the LDB.
> >
> > The LDB is either part of the IOMUX_GPR (i.MX6SX) or the BLKCTRL
> > (i.MX8MP, i.MX93) register space. Both IOMUX_GPR and BLKCTRL are
> > register ranges with loose register definitions. E.g.
> >
> > - On the i.MX8MP there is one register which controls the AXI
> > threshold for two different IPs (BIT(31:16) - IP1, BIT(15:0) - IP2).
> > - On the i.MX6SX IOMUXC_GPR5 controlls: CSI2 mux, WDOG3 settings, PXP
> > handshake, ...
> >
> > In conclusion: it can't be ensured that one register belongs to one
> > dedicated IP and the LDB is rather an exception than the rule.
>
> It is fine if there's a child node for LDB if the LDB registers are
> consistent, but the other misc things are represented by the parent
> node. It is certainly not a requirement that either everything be in
> child nodes or nothing be in child nodes.
>
> What I don't see in this series is what problem does this fix? If you
> are going to break compatibility, then there had better be a good
> reason.
Hi Rob,
with the upcoming i.MX9x SoCs the parent syscon (BLKCTRL) controlls
multiple other IPs, e.g. a DPI mux added by commit 3feaa4342637
("dt-bindings: soc: imx93-media-blk-ctrl: Add PDFC subnode to schema and
example").
During the discussion of the above commit we agreed that the sub-devices
of the syscon shall not use the reg property due to the fact that one
register serves multiple purposes. In the above case the same register
controlling the dpi-mux also controlls MIPI-DSI bits. The MIPI-DSI bits
can be abstracted as drm-bridge as well. Two sub-devs using the same
'reg' property below the same parent seems odd and I don't know if this
allowed either.
Now the LDB is also part of this BLKCTRL syscon device but requires the
reg property. TBH, I don't know why the reg property was added in the
first place, due to the above fact (multiple sub-devs - same register).
Of course, we could limit the breakage to i.MX9* SoCs only which is done
by:
- https://lore.kernel.org/all/20260329-fsl_ldb_schema_fix-v1-1-351372754bc0@nxp.com/
but I don't think that this would be nice from user and from maintainer
perspective, because:
1) The same LDB "IP" would have a different dt-binding
(user perspective)
2) It introduces another dimension drivers need to care about
(maintainer perspective)
Therefore I went this way to drop it all together to make it easier for
the user and the maintainers.
Regards,
Marco
>
> Rob
>
--
#gernperDu
#CallMeByMyFirstName
Pengutronix e.K. | |
Steuerwalder Str. 21 | https://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/4] ARM: dts: imx6sx: remove LDB reg property
2026-05-04 20:21 [PATCH 0/4] i.MX LDB DT cleanups Marco Felsch
2026-05-04 20:21 ` [PATCH 1/4] Revert "dt-bindings: display: bridge: ldb: Add check for reg and reg-names" Marco Felsch
2026-05-04 20:21 ` [PATCH 2/4] Revert "dt-bindings: display: bridge: ldb: Fill in reg property" Marco Felsch
@ 2026-05-04 20:21 ` Marco Felsch
2026-05-04 20:21 ` [PATCH 4/4] arm64: dts: imx8mp: remove LDB reg and reg-names property Marco Felsch
3 siblings, 0 replies; 8+ messages in thread
From: Marco Felsch @ 2026-05-04 20:21 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
laurentiu.palcu, victor.liu
Cc: kernel, dri-devel, devicetree, linux-kernel, imx,
linux-arm-kernel, Marco Felsch
The iomux-gpr syscon device has a very loose register definition. Many
registers have a multi purpose, e.g. one register controlls the WDG
behavior and the CSI2 mux settings. This would lead into multiple
sub-devices which use the same 'reg' which is wrong.
Instead of specifying the 'reg' in the OF each sub-device driver needs
to handle the correct bits on their own. Therefore drop the 'reg'
porperty from the bridge node as well as the @18 register suffix.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
arch/arm/boot/dts/nxp/imx/imx6sx.dtsi | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6sx.dtsi b/arch/arm/boot/dts/nxp/imx/imx6sx.dtsi
index aefae5a3a6bebd43c67070376196db559d0d20cb..4b974b54195950e8bd2ef6d590f3530b2a43106e 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6sx.dtsi
+++ b/arch/arm/boot/dts/nxp/imx/imx6sx.dtsi
@@ -850,9 +850,8 @@ gpr: syscon@20e4000 {
#size-cells = <1>;
reg = <0x020e4000 0x4000>;
- lvds_bridge: bridge@18 {
+ lvds_bridge: bridge {
compatible = "fsl,imx6sx-ldb";
- reg = <0x18 0x4>;
clocks = <&clks IMX6SX_CLK_LDB_DI0>;
clock-names = "ldb";
status = "disabled";
--
2.47.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 4/4] arm64: dts: imx8mp: remove LDB reg and reg-names property
2026-05-04 20:21 [PATCH 0/4] i.MX LDB DT cleanups Marco Felsch
` (2 preceding siblings ...)
2026-05-04 20:21 ` [PATCH 3/4] ARM: dts: imx6sx: remove LDB reg property Marco Felsch
@ 2026-05-04 20:21 ` Marco Felsch
3 siblings, 0 replies; 8+ messages in thread
From: Marco Felsch @ 2026-05-04 20:21 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
laurentiu.palcu, victor.liu
Cc: kernel, dri-devel, devicetree, linux-kernel, imx,
linux-arm-kernel, Marco Felsch
The blk-ctrl syscon device(s) have a very loose register definition, e.g
one register configures the USB PHY clock source, the PCIe EP ready bit
and enables PCIe and USB clocks. This would lead into multiple
sub-devices which use the same 'reg' which is wrong.
Instead of specifying the 'reg' in the OF each sub-device driver needs
to handle the correct bits on their own. Therefore drop the 'reg' and
'reg-names' porperty from the bridge node as well as the '@5c' register
suffix.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
arch/arm64/boot/dts/freescale/imx8mp.dtsi | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
index 90d7bb8f5619e50d9fd65bcf18c083affe15e6f9..41649afff813833aeb1c0355827597578048b037 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
@@ -1999,10 +1999,8 @@ media_blk_ctrl: blk-ctrl@32ec0000 {
<1039500000>;
#power-domain-cells = <1>;
- lvds_bridge: bridge@5c {
+ lvds_bridge: bridge {
compatible = "fsl,imx8mp-ldb";
- reg = <0x5c 0x4>, <0x128 0x4>;
- reg-names = "ldb", "lvds";
clocks = <&clk IMX8MP_CLK_MEDIA_LDB_ROOT>;
clock-names = "ldb";
assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>;
--
2.47.3
^ permalink raw reply related [flat|nested] 8+ messages in thread