* [PATCH v2 00/10] Add support for i.MX94 DCIF
@ 2025-07-16 8:15 Laurentiu Palcu
2025-07-16 8:15 ` [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB Laurentiu Palcu
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Laurentiu Palcu @ 2025-07-16 8:15 UTC (permalink / raw)
To: imx, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Laurentiu Palcu, Philipp Zabel,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Abel Vesa, Peng Fan, Michael Turquette, Stephen Boyd, Marek Vasut
Cc: dri-devel, Frank Li, devicetree, linux-kernel, linux-arm-kernel,
linux-clk
Hi,
This patch-set adds support for the i.MX94 Display Control Interface.
It applies on top of Peng Fan's BLK_CTL patches: [1].
Also, included in the patch-set are a few extra patches that the DCIF
driver depends on for functioning properly:
* 1/10 - 2/10 : BLK_CTL driver fixes;
* 3/10 - 5/10 : add support for i.MX94 to fsl-ldb driver. It also
contains a patch (4/8) from Liu Ying that was already reviewed
and was part of another patch-set ([2]), but was never merged;
v2:
* reworked the BLK_CTL patch and split in 2 to make it easier for
review;
* split the dts and dtsi patch in 2 separate ones;
* addressed Frank's comments in DCIF driver;
* addressed Rob's comments for the bindings files;
* addressed a couple of checkpatch issues;
Thanks,
Laurentiu
[1] https://lkml.org/lkml/2025/7/7/78
[2] https://lkml.org/lkml/2024/11/14/262
Laurentiu Palcu (8):
clk: imx95-blk-ctl: Save platform data in imx95_blk_ctl structure
clk: imx95-blk-ctl: Save/restore registers when RPM routines are
called
dt-bindings: display: fsl,ldb: Add i.MX94 LDB
drm/bridge: fsl-ldb: Add support for i.MX94
dt-bindings: display: imx: Add bindings for i.MX94 DCIF
arm64: dts: imx943: Add display pipeline nodes
arm64: dts: imx943-evk: Add display support using IT6263
MAINTAINERS: Add entry for i.MX94 DCIF driver
Liu Ying (1):
drm/bridge: fsl-ldb: Get the next non-panel bridge
Sandor Yu (1):
drm/imx: Add support for i.MX94 DCIF
.../bindings/display/bridge/fsl,ldb.yaml | 2 +
.../bindings/display/imx/nxp,imx94-dcif.yaml | 93 +++
MAINTAINERS | 9 +
arch/arm64/boot/dts/freescale/imx943-evk.dts | 123 ++++
arch/arm64/boot/dts/freescale/imx943.dtsi | 56 +-
drivers/clk/imx/clk-imx95-blk-ctl.c | 51 +-
drivers/gpu/drm/bridge/fsl-ldb.c | 47 +-
drivers/gpu/drm/imx/Kconfig | 1 +
drivers/gpu/drm/imx/Makefile | 1 +
drivers/gpu/drm/imx/dcif/Kconfig | 15 +
drivers/gpu/drm/imx/dcif/Makefile | 5 +
drivers/gpu/drm/imx/dcif/dcif-crc.c | 211 ++++++
drivers/gpu/drm/imx/dcif/dcif-crc.h | 52 ++
drivers/gpu/drm/imx/dcif/dcif-crtc.c | 695 ++++++++++++++++++
drivers/gpu/drm/imx/dcif/dcif-drv.c | 282 +++++++
drivers/gpu/drm/imx/dcif/dcif-drv.h | 87 +++
drivers/gpu/drm/imx/dcif/dcif-kms.c | 101 +++
drivers/gpu/drm/imx/dcif/dcif-plane.c | 269 +++++++
drivers/gpu/drm/imx/dcif/dcif-reg.h | 266 +++++++
19 files changed, 2314 insertions(+), 52 deletions(-)
create mode 100644 Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml
create mode 100644 drivers/gpu/drm/imx/dcif/Kconfig
create mode 100644 drivers/gpu/drm/imx/dcif/Makefile
create mode 100644 drivers/gpu/drm/imx/dcif/dcif-crc.c
create mode 100644 drivers/gpu/drm/imx/dcif/dcif-crc.h
create mode 100644 drivers/gpu/drm/imx/dcif/dcif-crtc.c
create mode 100644 drivers/gpu/drm/imx/dcif/dcif-drv.c
create mode 100644 drivers/gpu/drm/imx/dcif/dcif-drv.h
create mode 100644 drivers/gpu/drm/imx/dcif/dcif-kms.c
create mode 100644 drivers/gpu/drm/imx/dcif/dcif-plane.c
create mode 100644 drivers/gpu/drm/imx/dcif/dcif-reg.h
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB
2025-07-16 8:15 [PATCH v2 00/10] Add support for i.MX94 DCIF Laurentiu Palcu
@ 2025-07-16 8:15 ` Laurentiu Palcu
2025-07-16 18:29 ` Frank Li
2025-07-17 6:06 ` Krzysztof Kozlowski
2025-07-16 8:15 ` [PATCH v2 06/10] dt-bindings: display: imx: Add bindings for i.MX94 DCIF Laurentiu Palcu
` (2 subsequent siblings)
3 siblings, 2 replies; 11+ messages in thread
From: Laurentiu Palcu @ 2025-07-16 8:15 UTC (permalink / raw)
To: imx, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut
Cc: dri-devel, Frank Li, Laurentiu Palcu, devicetree, linux-kernel
i.MX94 has a single LVDS port and share similar LDB and LVDS control
registers as i.MX8MP and i.MX93.
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
---
Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
index 07388bf2b90df..a54b8f1478049 100644
--- a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
+++ b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
@@ -20,6 +20,7 @@ properties:
- fsl,imx6sx-ldb
- fsl,imx8mp-ldb
- fsl,imx93-ldb
+ - fsl,imx94-ldb
clocks:
maxItems: 1
@@ -68,6 +69,7 @@ allOf:
enum:
- fsl,imx6sx-ldb
- fsl,imx93-ldb
+ - fsl,imx94-ldb
then:
properties:
ports:
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 06/10] dt-bindings: display: imx: Add bindings for i.MX94 DCIF
2025-07-16 8:15 [PATCH v2 00/10] Add support for i.MX94 DCIF Laurentiu Palcu
2025-07-16 8:15 ` [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB Laurentiu Palcu
@ 2025-07-16 8:15 ` Laurentiu Palcu
2025-07-16 18:40 ` Frank Li
2025-07-16 19:40 ` Krzysztof Kozlowski
2025-07-16 8:15 ` [PATCH v2 08/10] arm64: dts: imx943: Add display pipeline nodes Laurentiu Palcu
2025-07-16 8:15 ` [PATCH v2 09/10] arm64: dts: imx943-evk: Add display support using IT6263 Laurentiu Palcu
3 siblings, 2 replies; 11+ messages in thread
From: Laurentiu Palcu @ 2025-07-16 8:15 UTC (permalink / raw)
To: imx, Laurentiu Palcu, Philipp Zabel, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
Cc: dri-devel, Frank Li, devicetree, linux-arm-kernel, linux-kernel
DCIF is the i.MX94 Display Controller Interface which is used to
drive a TFT LCD panel or connects to a display interface depending
on the chip configuration.
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
---
.../bindings/display/imx/nxp,imx94-dcif.yaml | 93 +++++++++++++++++++
1 file changed, 93 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml
diff --git a/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml b/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml
new file mode 100644
index 0000000000000..207ddf0f550df
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml
@@ -0,0 +1,93 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright 2025 NXP
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/nxp,imx94-dcif.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: i.MX94 Display Control Interface (DCIF)
+
+maintainers:
+ - Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
+
+description:
+ The Display Control Interface(DCIF) is a system master that fetches graphics
+ stored in memory and displays them on a TFT LCD panel or connects to a
+ display interface depending on the chip configuration.
+
+properties:
+ compatible:
+ const: nxp,imx94-dcif
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ items:
+ - description:
+ Interrupt output for CPU domain 0 (controlled by common registers group).
+ - description:
+ Interrupt output for CPU domain 1 (controlled by background layer registers group).
+ - description:
+ Interrupt output for CPU domain 2 (controlled by foreground layer registers group).
+
+ interrupt-names:
+ items:
+ - const: common
+ - const: bg_layer
+ - const: fg_layer
+
+ clocks:
+ items:
+ - description: APB bus clock
+ - description: AXI bus clock
+ - description: Pixel clock
+
+ clock-names:
+ items:
+ - const: apb
+ - const: axi
+ - const: pix
+
+ power-domains:
+ maxItems: 1
+
+ nxp,blk-ctrl:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: A phandle which points to NXP displaymix blk-ctrl.
+
+ port:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Display Pixel Interface(DPI) output port
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ display-controller@4b120000 {
+ compatible = "nxp,imx94-dcif";
+ reg = <0x0 0x4b120000 0x0 0x300000>;
+ interrupts = <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "common", "bg_layer", "fg_layer";
+ clocks = <&scmi_clk 69>, <&scmi_clk 70>, <&dispmix_csr 0>;
+ clock-names = "apb", "axi", "pix";
+ assigned-clocks = <&dispmix_csr 0>;
+ assigned-clock-parents = <&ldb_pll_pixel>;
+ power-domains = <&scmi_devpd 11>;
+ nxp,blk-ctrl = <&dispmix_csr>;
+
+ port {
+ dcif_out: endpoint {
+ remote-endpoint = <&ldb_in>;
+ };
+ };
+ };
+ };
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 08/10] arm64: dts: imx943: Add display pipeline nodes
2025-07-16 8:15 [PATCH v2 00/10] Add support for i.MX94 DCIF Laurentiu Palcu
2025-07-16 8:15 ` [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB Laurentiu Palcu
2025-07-16 8:15 ` [PATCH v2 06/10] dt-bindings: display: imx: Add bindings for i.MX94 DCIF Laurentiu Palcu
@ 2025-07-16 8:15 ` Laurentiu Palcu
2025-07-16 19:02 ` Frank Li
2025-07-16 8:15 ` [PATCH v2 09/10] arm64: dts: imx943-evk: Add display support using IT6263 Laurentiu Palcu
3 siblings, 1 reply; 11+ messages in thread
From: Laurentiu Palcu @ 2025-07-16 8:15 UTC (permalink / raw)
To: imx, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: dri-devel, Frank Li, Laurentiu Palcu, devicetree,
linux-arm-kernel, linux-kernel
Add display controller and LDB support in imx943.
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
---
arch/arm64/boot/dts/freescale/imx943.dtsi | 56 ++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/freescale/imx943.dtsi b/arch/arm64/boot/dts/freescale/imx943.dtsi
index 657c81b6016f2..db00a94812e18 100644
--- a/arch/arm64/boot/dts/freescale/imx943.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx943.dtsi
@@ -148,7 +148,7 @@ l3_cache: l3-cache {
};
};
- clock-ldb-pll-div7 {
+ clock_ldb_pll_div7: clock-ldb-pll-div7 {
compatible = "fixed-factor-clock";
#clock-cells = <0>;
clocks = <&scmi_clk IMX94_CLK_LDBPLL>;
@@ -173,10 +173,64 @@ dispmix_csr: syscon@4b010000 {
lvds_csr: syscon@4b0c0000 {
compatible = "nxp,imx94-lvds-csr", "syscon";
+ #address-cells = <1>;
+ #size-cells = <1>;
reg = <0x0 0x4b0c0000 0x0 0x10000>;
clocks = <&scmi_clk IMX94_CLK_DISPAPB>;
#clock-cells = <1>;
power-domains = <&scmi_devpd IMX94_PD_DISPLAY>;
+
+ ldb: ldb@4 {
+ compatible = "fsl,imx94-ldb";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x4 0x4>, <0x8 0x4>;
+ reg-names = "ldb", "lvds";
+ clocks = <&lvds_csr IMX94_CLK_DISPMIX_LVDS_CLK_GATE>;
+ clock-names = "ldb";
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ lvds_in: endpoint {
+ remote-endpoint = <&dcif_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ };
+ };
+ };
+ };
+
+ dcif: display-controller@4b120000 {
+ compatible = "nxp,imx94-dcif";
+ reg = <0x0 0x4b120000 0x0 0x300000>;
+ interrupts = <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "common", "bg_layer", "fg_layer";
+ clocks = <&scmi_clk IMX94_CLK_DISPAPB>,
+ <&scmi_clk IMX94_CLK_DISPAXI>,
+ <&dispmix_csr IMX94_CLK_DISPMIX_CLK_SEL>;
+ clock-names = "apb", "axi", "pix";
+ assigned-clocks = <&dispmix_csr IMX94_CLK_DISPMIX_CLK_SEL>;
+ assigned-clock-parents = <&clock_ldb_pll_div7>;
+ power-domains = <&scmi_devpd IMX94_PD_DISPLAY>;
+ nxp,blk-ctrl = <&dispmix_csr>;
+ status = "disabled";
+
+ port {
+ dcif_out: endpoint {
+ remote-endpoint = <&lvds_in>;
+ };
+ };
};
};
};
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 09/10] arm64: dts: imx943-evk: Add display support using IT6263
2025-07-16 8:15 [PATCH v2 00/10] Add support for i.MX94 DCIF Laurentiu Palcu
` (2 preceding siblings ...)
2025-07-16 8:15 ` [PATCH v2 08/10] arm64: dts: imx943: Add display pipeline nodes Laurentiu Palcu
@ 2025-07-16 8:15 ` Laurentiu Palcu
2025-07-16 19:10 ` Frank Li
3 siblings, 1 reply; 11+ messages in thread
From: Laurentiu Palcu @ 2025-07-16 8:15 UTC (permalink / raw)
To: imx, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: dri-devel, Frank Li, Laurentiu Palcu, devicetree,
linux-arm-kernel, linux-kernel
The ITE IT6263 based NXP LVDS to HDMI converter can be attached to the
i.MX943 EVK board LVDS port using the mini-SAS connector.
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
---
arch/arm64/boot/dts/freescale/imx943-evk.dts | 123 +++++++++++++++++++
1 file changed, 123 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx943-evk.dts b/arch/arm64/boot/dts/freescale/imx943-evk.dts
index c8c3eff9df1a2..636913782f983 100644
--- a/arch/arm64/boot/dts/freescale/imx943-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx943-evk.dts
@@ -125,6 +125,129 @@ memory@80000000 {
reg = <0x0 0x80000000 0x0 0x80000000>;
device_type = "memory";
};
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ label = "hdmi";
+ type = "a";
+
+ port {
+ hdmi_connector_in: endpoint {
+ remote-endpoint = <&it6263_out>;
+ };
+ };
+ };
+};
+
+&dcif {
+ status = "okay";
+};
+
+&ldb {
+ assigned-clocks = <&scmi_clk IMX94_CLK_LDBPLL_VCO>,
+ <&scmi_clk IMX94_CLK_LDBPLL>;
+ assigned-clock-rates = <4158000000>, <1039500000>;
+ status = "okay";
+
+ ports {
+ port@1 {
+ reg = <1>;
+
+ lvds_out: endpoint {
+ remote-endpoint = <&it6263_in>;
+ };
+ };
+ };
+};
+
+&lpi2c3 {
+ clock-frequency = <400000>;
+ pinctrl-0 = <&pinctrl_lpi2c3>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ pca9548_i2c3: i2c-mux@77 {
+ compatible = "nxp,pca9548";
+ reg = <0x77>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ i2c@0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@1 {
+ reg = <1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@2 {
+ reg = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@3 {
+ reg = <3>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ lvds-to-hdmi-bridge@4c {
+ compatible = "ite,it6263";
+ reg = <0x4c>;
+ data-mapping = "jeida-24";
+ reset-gpios = <&pcal6416_i2c3_u171 8 GPIO_ACTIVE_HIGH>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ it6263_in: endpoint {
+ remote-endpoint = <&lvds_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ it6263_out: endpoint {
+ remote-endpoint = <&hdmi_connector_in>;
+ };
+ };
+ };
+ };
+ };
+
+ i2c@4 {
+ reg = <4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@5 {
+ reg = <5>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@6 {
+ reg = <6>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ i2c@7 {
+ reg = <7>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+ };
};
&lpi2c3 {
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB
2025-07-16 8:15 ` [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB Laurentiu Palcu
@ 2025-07-16 18:29 ` Frank Li
2025-07-17 6:06 ` Krzysztof Kozlowski
1 sibling, 0 replies; 11+ messages in thread
From: Frank Li @ 2025-07-16 18:29 UTC (permalink / raw)
To: Laurentiu Palcu
Cc: imx, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut, dri-devel,
devicetree, linux-kernel
On Wed, Jul 16, 2025 at 11:15:07AM +0300, Laurentiu Palcu wrote:
> i.MX94 has a single LVDS port and share similar LDB and LVDS control
> registers as i.MX8MP and i.MX93.
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
> ---
Reviewed-by: Frank Li <Frank.Li@nxp.com>
> Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
> index 07388bf2b90df..a54b8f1478049 100644
> --- a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
> +++ b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
> @@ -20,6 +20,7 @@ properties:
> - fsl,imx6sx-ldb
> - fsl,imx8mp-ldb
> - fsl,imx93-ldb
> + - fsl,imx94-ldb
>
> clocks:
> maxItems: 1
> @@ -68,6 +69,7 @@ allOf:
> enum:
> - fsl,imx6sx-ldb
> - fsl,imx93-ldb
> + - fsl,imx94-ldb
> then:
> properties:
> ports:
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 06/10] dt-bindings: display: imx: Add bindings for i.MX94 DCIF
2025-07-16 8:15 ` [PATCH v2 06/10] dt-bindings: display: imx: Add bindings for i.MX94 DCIF Laurentiu Palcu
@ 2025-07-16 18:40 ` Frank Li
2025-07-16 19:40 ` Krzysztof Kozlowski
1 sibling, 0 replies; 11+ messages in thread
From: Frank Li @ 2025-07-16 18:40 UTC (permalink / raw)
To: Laurentiu Palcu
Cc: imx, Philipp Zabel, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, dri-devel, devicetree,
linux-arm-kernel, linux-kernel
On Wed, Jul 16, 2025 at 11:15:10AM +0300, Laurentiu Palcu wrote:
> DCIF is the i.MX94 Display Controller Interface which is used to
> drive a TFT LCD panel or connects to a display interface depending
> on the chip configuration.
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
> ---
> .../bindings/display/imx/nxp,imx94-dcif.yaml | 93 +++++++++++++++++++
> 1 file changed, 93 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml
>
> diff --git a/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml b/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml
> new file mode 100644
> index 0000000000000..207ddf0f550df
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml
> @@ -0,0 +1,93 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +# Copyright 2025 NXP
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/imx/nxp,imx94-dcif.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: i.MX94 Display Control Interface (DCIF)
> +
> +maintainers:
> + - Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
> +
> +description:
> + The Display Control Interface(DCIF) is a system master that fetches graphics
> + stored in memory and displays them on a TFT LCD panel or connects to a
> + display interface depending on the chip configuration.
> +
> +properties:
> + compatible:
> + const: nxp,imx94-dcif
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + items:
> + - description:
> + Interrupt output for CPU domain 0 (controlled by common registers group).
> + - description:
> + Interrupt output for CPU domain 1 (controlled by background layer registers group).
> + - description:
> + Interrupt output for CPU domain 2 (controlled by foreground layer registers group).
> +
> + interrupt-names:
> + items:
> + - const: common
> + - const: bg_layer
> + - const: fg_layer
> +
> + clocks:
> + items:
> + - description: APB bus clock
> + - description: AXI bus clock
> + - description: Pixel clock
dupicated information with clock-names.
maxItems: 3
If clock-names provided, clocks genernally just need maxItems except description
can provide more information than clock names.
Frank
> +
> + clock-names:
> + items:
> + - const: apb
> + - const: axi
> + - const: pix
> +
> + power-domains:
> + maxItems: 1
> +
> + nxp,blk-ctrl:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description: A phandle which points to NXP displaymix blk-ctrl.
> +
> + port:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: Display Pixel Interface(DPI) output port
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> + soc {
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + display-controller@4b120000 {
> + compatible = "nxp,imx94-dcif";
> + reg = <0x0 0x4b120000 0x0 0x300000>;
> + interrupts = <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "common", "bg_layer", "fg_layer";
> + clocks = <&scmi_clk 69>, <&scmi_clk 70>, <&dispmix_csr 0>;
> + clock-names = "apb", "axi", "pix";
> + assigned-clocks = <&dispmix_csr 0>;
> + assigned-clock-parents = <&ldb_pll_pixel>;
> + power-domains = <&scmi_devpd 11>;
> + nxp,blk-ctrl = <&dispmix_csr>;
> +
> + port {
> + dcif_out: endpoint {
> + remote-endpoint = <&ldb_in>;
> + };
> + };
> + };
> + };
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 08/10] arm64: dts: imx943: Add display pipeline nodes
2025-07-16 8:15 ` [PATCH v2 08/10] arm64: dts: imx943: Add display pipeline nodes Laurentiu Palcu
@ 2025-07-16 19:02 ` Frank Li
0 siblings, 0 replies; 11+ messages in thread
From: Frank Li @ 2025-07-16 19:02 UTC (permalink / raw)
To: Laurentiu Palcu
Cc: imx, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, dri-devel,
devicetree, linux-arm-kernel, linux-kernel
On Wed, Jul 16, 2025 at 11:15:12AM +0300, Laurentiu Palcu wrote:
> Add display controller and LDB support in imx943.
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
> ---
> arch/arm64/boot/dts/freescale/imx943.dtsi | 56 ++++++++++++++++++++++-
> 1 file changed, 55 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx943.dtsi b/arch/arm64/boot/dts/freescale/imx943.dtsi
> index 657c81b6016f2..db00a94812e18 100644
> --- a/arch/arm64/boot/dts/freescale/imx943.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx943.dtsi
> @@ -148,7 +148,7 @@ l3_cache: l3-cache {
> };
> };
>
> - clock-ldb-pll-div7 {
> + clock_ldb_pll_div7: clock-ldb-pll-div7 {
> compatible = "fixed-factor-clock";
> #clock-cells = <0>;
> clocks = <&scmi_clk IMX94_CLK_LDBPLL>;
> @@ -173,10 +173,64 @@ dispmix_csr: syscon@4b010000 {
>
> lvds_csr: syscon@4b0c0000 {
> compatible = "nxp,imx94-lvds-csr", "syscon";
Did you update nxp,imx94-lvds-csr's binding doc to allow add child node
ldb@4 ?
> + #address-cells = <1>;
> + #size-cells = <1>;
> reg = <0x0 0x4b0c0000 0x0 0x10000>;
reg should be second property. add address-cells after reg
> clocks = <&scmi_clk IMX94_CLK_DISPAPB>;
> #clock-cells = <1>;
> power-domains = <&scmi_devpd IMX94_PD_DISPLAY>;
> +
> + ldb: ldb@4 {
> + compatible = "fsl,imx94-ldb";
> + #address-cells = <1>;
> + #size-cells = <0>;
the same here.
Frank
> + reg = <0x4 0x4>, <0x8 0x4>;
> + reg-names = "ldb", "lvds";
> + clocks = <&lvds_csr IMX94_CLK_DISPMIX_LVDS_CLK_GATE>;
> + clock-names = "ldb";
> + status = "disabled";
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + lvds_in: endpoint {
> + remote-endpoint = <&dcif_out>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> + };
> + };
> + };
> + };
> +
> + dcif: display-controller@4b120000 {
> + compatible = "nxp,imx94-dcif";
> + reg = <0x0 0x4b120000 0x0 0x300000>;
> + interrupts = <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "common", "bg_layer", "fg_layer";
> + clocks = <&scmi_clk IMX94_CLK_DISPAPB>,
> + <&scmi_clk IMX94_CLK_DISPAXI>,
> + <&dispmix_csr IMX94_CLK_DISPMIX_CLK_SEL>;
> + clock-names = "apb", "axi", "pix";
> + assigned-clocks = <&dispmix_csr IMX94_CLK_DISPMIX_CLK_SEL>;
> + assigned-clock-parents = <&clock_ldb_pll_div7>;
> + power-domains = <&scmi_devpd IMX94_PD_DISPLAY>;
> + nxp,blk-ctrl = <&dispmix_csr>;
> + status = "disabled";
> +
> + port {
> + dcif_out: endpoint {
> + remote-endpoint = <&lvds_in>;
> + };
> + };
> };
> };
> };
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 09/10] arm64: dts: imx943-evk: Add display support using IT6263
2025-07-16 8:15 ` [PATCH v2 09/10] arm64: dts: imx943-evk: Add display support using IT6263 Laurentiu Palcu
@ 2025-07-16 19:10 ` Frank Li
0 siblings, 0 replies; 11+ messages in thread
From: Frank Li @ 2025-07-16 19:10 UTC (permalink / raw)
To: Laurentiu Palcu
Cc: imx, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, dri-devel,
devicetree, linux-arm-kernel, linux-kernel
On Wed, Jul 16, 2025 at 11:15:13AM +0300, Laurentiu Palcu wrote:
> The ITE IT6263 based NXP LVDS to HDMI converter can be attached to the
> i.MX943 EVK board LVDS port using the mini-SAS connector.
Generally, attached devices should be overlay file. You'd better mention
it is default configuration for shipped EVK board in commit message.
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
> ---
> arch/arm64/boot/dts/freescale/imx943-evk.dts | 123 +++++++++++++++++++
> 1 file changed, 123 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx943-evk.dts b/arch/arm64/boot/dts/freescale/imx943-evk.dts
> index c8c3eff9df1a2..636913782f983 100644
> --- a/arch/arm64/boot/dts/freescale/imx943-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx943-evk.dts
> @@ -125,6 +125,129 @@ memory@80000000 {
> reg = <0x0 0x80000000 0x0 0x80000000>;
> device_type = "memory";
> };
> +
> + hdmi-connector {
> + compatible = "hdmi-connector";
> + label = "hdmi";
> + type = "a";
> +
> + port {
> + hdmi_connector_in: endpoint {
> + remote-endpoint = <&it6263_out>;
> + };
> + };
> + };
Please run https://github.com/lznuaa/dt-format to keep all node correct
orderred i.mx943's dts file already keep order when upstream.
I remember hdmi-connector should before memory@80000000.
> +};
> +
> +&dcif {
> + status = "okay";
> +};
> +
> +&ldb {
> + assigned-clocks = <&scmi_clk IMX94_CLK_LDBPLL_VCO>,
> + <&scmi_clk IMX94_CLK_LDBPLL>;
> + assigned-clock-rates = <4158000000>, <1039500000>;
> + status = "okay";
> +
> + ports {
> + port@1 {
> + reg = <1>;
reg = <1> already set in dtsi file. So needn't set again.
Frank
> +
> + lvds_out: endpoint {
> + remote-endpoint = <&it6263_in>;
> + };
> + };
> + };
> +};
> +
> +&lpi2c3 {
> + clock-frequency = <400000>;
> + pinctrl-0 = <&pinctrl_lpi2c3>;
> + pinctrl-names = "default";
> + status = "okay";
> +
> + pca9548_i2c3: i2c-mux@77 {
> + compatible = "nxp,pca9548";
> + reg = <0x77>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + i2c@0 {
> + reg = <0>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + i2c@1 {
> + reg = <1>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + i2c@2 {
> + reg = <2>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + i2c@3 {
> + reg = <3>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + lvds-to-hdmi-bridge@4c {
> + compatible = "ite,it6263";
> + reg = <0x4c>;
> + data-mapping = "jeida-24";
> + reset-gpios = <&pcal6416_i2c3_u171 8 GPIO_ACTIVE_HIGH>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + it6263_in: endpoint {
> + remote-endpoint = <&lvds_out>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + it6263_out: endpoint {
> + remote-endpoint = <&hdmi_connector_in>;
> + };
> + };
> + };
> + };
> + };
> +
> + i2c@4 {
> + reg = <4>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + i2c@5 {
> + reg = <5>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + i2c@6 {
> + reg = <6>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + i2c@7 {
> + reg = <7>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> + };
> };
>
> &lpi2c3 {
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 06/10] dt-bindings: display: imx: Add bindings for i.MX94 DCIF
2025-07-16 8:15 ` [PATCH v2 06/10] dt-bindings: display: imx: Add bindings for i.MX94 DCIF Laurentiu Palcu
2025-07-16 18:40 ` Frank Li
@ 2025-07-16 19:40 ` Krzysztof Kozlowski
1 sibling, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-16 19:40 UTC (permalink / raw)
To: Laurentiu Palcu, imx, Philipp Zabel, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
Cc: dri-devel, Frank Li, devicetree, linux-arm-kernel, linux-kernel
On 16/07/2025 10:15, Laurentiu Palcu wrote:
> DCIF is the i.MX94 Display Controller Interface which is used to
> drive a TFT LCD panel or connects to a display interface depending
> on the chip configuration.
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
...
> +
> + interrupts:
> + items:
> + - description:
> + Interrupt output for CPU domain 0 (controlled by common registers group).
> + - description:
> + Interrupt output for CPU domain 1 (controlled by background layer registers group).
> + - description:
> + Interrupt output for CPU domain 2 (controlled by foreground layer registers group).
Keep these in one line with description, by dropping redundant part
"Interrupt output for".
> +
> + interrupt-names:
> + items:
> + - const: common
> + - const: bg_layer
> + - const: fg_layer
> +
> + clocks:
> + items:
> + - description: APB bus clock
> + - description: AXI bus clock
> + - description: Pixel clock
> +
> + clock-names:
> + items:
> + - const: apb
> + - const: axi
> + - const: pix
> +
> + power-domains:
> + maxItems: 1
> +
> + nxp,blk-ctrl:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description: A phandle which points to NXP displaymix blk-ctrl.
Describe for what purpose (from hardware point of view)
With these improvements:
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> +
> + port:
> + $ref: /schemas/graph.yaml#/properties/port
> + description: Display Pixel Interface(DPI) output port
> +
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB
2025-07-16 8:15 ` [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB Laurentiu Palcu
2025-07-16 18:29 ` Frank Li
@ 2025-07-17 6:06 ` Krzysztof Kozlowski
1 sibling, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-17 6:06 UTC (permalink / raw)
To: Laurentiu Palcu
Cc: imx, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Marek Vasut, dri-devel,
Frank Li, devicetree, linux-kernel
On Wed, Jul 16, 2025 at 11:15:07AM +0300, Laurentiu Palcu wrote:
> i.MX94 has a single LVDS port and share similar LDB and LVDS control
> registers as i.MX8MP and i.MX93.
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
> ---
> Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml | 2 ++
> 1 file changed, 2 insertions(+)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2025-07-17 6:06 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-16 8:15 [PATCH v2 00/10] Add support for i.MX94 DCIF Laurentiu Palcu
2025-07-16 8:15 ` [PATCH v2 03/10] dt-bindings: display: fsl,ldb: Add i.MX94 LDB Laurentiu Palcu
2025-07-16 18:29 ` Frank Li
2025-07-17 6:06 ` Krzysztof Kozlowski
2025-07-16 8:15 ` [PATCH v2 06/10] dt-bindings: display: imx: Add bindings for i.MX94 DCIF Laurentiu Palcu
2025-07-16 18:40 ` Frank Li
2025-07-16 19:40 ` Krzysztof Kozlowski
2025-07-16 8:15 ` [PATCH v2 08/10] arm64: dts: imx943: Add display pipeline nodes Laurentiu Palcu
2025-07-16 19:02 ` Frank Li
2025-07-16 8:15 ` [PATCH v2 09/10] arm64: dts: imx943-evk: Add display support using IT6263 Laurentiu Palcu
2025-07-16 19:10 ` Frank Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).