Create imx-drm crtc device nodes. Each crtc node requires the following
parameters:

- parent ipu phandle.
- di number.
- port endpoints.

Optionally the node can specify a "dual-plane" boolean parameter
to configure the crtc device with a foreground plane. If not given,
the crtc will have only a single plane.

The crtc port lists the endpoints to the remote encoder endpoints.
These endpoints were moved out of the ipu nodes, since they more
logically now belong to the crtc nodes.

As a result, the display-subsystem node should enumerate its crtcs
instead of the former ipu ports.

Signed-off-by: Steve Longerbeam <steve_longerbeam at mentor.com>
---
 arch/arm/boot/dts/imx6dl.dtsi  |    2 +-
 arch/arm/boot/dts/imx6q.dtsi   |  116 ++++++++++++++++++++------------------
 arch/arm/boot/dts/imx6qdl.dtsi |  122 +++++++++++++++++++++-------------------
 3 files changed, 127 insertions(+), 113 deletions(-)

diff --git a/arch/arm/boot/dts/imx6dl.dtsi b/arch/arm/boot/dts/imx6dl.dtsi
index b453e0e..05af0f4 100644
--- a/arch/arm/boot/dts/imx6dl.dtsi
+++ b/arch/arm/boot/dts/imx6dl.dtsi
@@ -98,7 +98,7 @@

        display-subsystem {
                compatible = "fsl,imx-display-subsystem";
-               ports = <&ipu1_di0>, <&ipu1_di1>;
+               crtcs = <&crtc0>, <&crtc1>;
        };
 };

diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
index e9f3646..9d1f88c 100644
--- a/arch/arm/boot/dts/imx6q.dtsi
+++ b/arch/arm/boot/dts/imx6q.dtsi
@@ -140,6 +140,59 @@
                        };
                };

+               crtc2: crtc at 2 {
+                       compatible = "fsl,imx-ipuv3-crtc";
+                       ipu = <&ipu2>;
+                       di = <0>;
+                       dual-plane;
+
+                       port {
+                               crtc2_disp0: endpoint at 0 {
+                               };
+
+                               crtc2_hdmi: endpoint at 1 {
+                                       remote-endpoint = <&hdmi_mux_2>;
+                               };
+
+                               crtc2_mipi: endpoint at 2 {
+                               };
+
+                               crtc2_lvds0: endpoint at 3 {
+                                       remote-endpoint = <&lvds0_mux_2>;
+                               };
+
+                               crtc2_lvds1: endpoint at 4 {
+                                       remote-endpoint = <&lvds1_mux_2>;
+                               };
+                       };
+               };
+
+               crtc3: crtc at 3 {
+                       compatible = "fsl,imx-ipuv3-crtc";
+                       ipu = <&ipu2>;
+                       di = <1>;
+
+                       port {
+                               crtc3_disp0: endpoint at 0 {
+                               };
+
+                               crtc3_hdmi: endpoint at 1 {
+                                       remote-endpoint = <&hdmi_mux_3>;
+                               };
+
+                               crtc3_mipi: endpoint at 2 {
+                               };
+
+                               crtc3_lvds0: endpoint at 3 {
+                                       remote-endpoint = <&lvds0_mux_3>;
+                               };
+
+                               crtc3_lvds1: endpoint at 4 {
+                                       remote-endpoint = <&lvds1_mux_3>;
+                               };
+                       };
+               };
+
                sata: sata at 02200000 {
                        compatible = "fsl,imx6q-ahci";
                        reg = <0x02200000 0x4000>;
@@ -171,57 +224,12 @@
                        ipu2_csi1: port at 1 {
                                reg = <1>;
                        };
-
-                       ipu2_di0: port at 2 {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               reg = <2>;
-
-                               ipu2_di0_disp0: endpoint at 0 {
-                               };
-
-                               ipu2_di0_hdmi: endpoint at 1 {
-                                       remote-endpoint = <&hdmi_mux_2>;
-                               };
-
-                               ipu2_di0_mipi: endpoint at 2 {
-                               };
-
-                               ipu2_di0_lvds0: endpoint at 3 {
-                                       remote-endpoint = <&lvds0_mux_2>;
-                               };
-
-                               ipu2_di0_lvds1: endpoint at 4 {
-                                       remote-endpoint = <&lvds1_mux_2>;
-                               };
-                       };
-
-                       ipu2_di1: port at 3 {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               reg = <3>;
-
-                               ipu2_di1_hdmi: endpoint at 1 {
-                                       remote-endpoint = <&hdmi_mux_3>;
-                               };
-
-                               ipu2_di1_mipi: endpoint at 2 {
-                               };
-
-                               ipu2_di1_lvds0: endpoint at 3 {
-                                       remote-endpoint = <&lvds0_mux_3>;
-                               };
-
-                               ipu2_di1_lvds1: endpoint at 4 {
-                                       remote-endpoint = <&lvds1_mux_3>;
-                               };
-                       };
                };
        };

        display-subsystem {
                compatible = "fsl,imx-display-subsystem";
-               ports = <&ipu1_di0>, <&ipu1_di1>, <&ipu2_di0>, <&ipu2_di1>;
+               crtcs = <&crtc0>, <&crtc1>, <&crtc2>, <&crtc3>;
        };
 };

@@ -232,7 +240,7 @@
                reg = <2>;

                hdmi_mux_2: endpoint {
-                       remote-endpoint = <&ipu2_di0_hdmi>;
+                       remote-endpoint = <&crtc2_hdmi>;
                };
        };

@@ -240,7 +248,7 @@
                reg = <3>;

                hdmi_mux_3: endpoint {
-                       remote-endpoint = <&ipu2_di1_hdmi>;
+                       remote-endpoint = <&crtc3_hdmi>;
                };
        };
 };
@@ -259,7 +267,7 @@
                        reg = <2>;

                        lvds0_mux_2: endpoint {
-                               remote-endpoint = <&ipu2_di0_lvds0>;
+                               remote-endpoint = <&crtc2_lvds0>;
                        };
                };

@@ -267,7 +275,7 @@
                        reg = <3>;

                        lvds0_mux_3: endpoint {
-                               remote-endpoint = <&ipu2_di1_lvds0>;
+                               remote-endpoint = <&crtc3_lvds0>;
                        };
                };
        };
@@ -277,7 +285,7 @@
                        reg = <2>;

                        lvds1_mux_2: endpoint {
-                               remote-endpoint = <&ipu2_di0_lvds1>;
+                               remote-endpoint = <&crtc2_lvds1>;
                        };
                };

@@ -285,7 +293,7 @@
                        reg = <3>;

                        lvds1_mux_3: endpoint {
-                               remote-endpoint = <&ipu2_di1_lvds1>;
+                               remote-endpoint = <&crtc3_lvds1>;
                        };
                };
        };
@@ -296,7 +304,7 @@
                reg = <2>;

                mipi_mux_2: endpoint {
-                       remote-endpoint = <&ipu2_di0_mipi>;
+                       remote-endpoint = <&crtc2_mipi>;
                };
        };

@@ -304,7 +312,7 @@
                reg = <3>;

                mipi_mux_3: endpoint {
-                       remote-endpoint = <&ipu2_di1_mipi>;
+                       remote-endpoint = <&crtc3_mipi>;
                };
        };
 };
diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
index 9596ed5..13d6b50 100644
--- a/arch/arm/boot/dts/imx6qdl.dtsi
+++ b/arch/arm/boot/dts/imx6qdl.dtsi
@@ -167,6 +167,62 @@
                        interrupts = <0 94 IRQ_TYPE_LEVEL_HIGH>;
                };

+               crtc0: crtc at 0 {
+                       compatible = "fsl,imx-ipuv3-crtc";
+                       ipu = <&ipu1>;
+                       di = <0>;
+                       dual-plane;
+
+                       port {
+                               crtc0_disp0: endpoint at 0 {
+                               };
+
+                               crtc0_hdmi: endpoint at 1 {
+                                       remote-endpoint = <&hdmi_mux_0>;
+                               };
+
+                               crtc0_mipi: endpoint at 2 {
+                                       remote-endpoint = <&mipi_mux_0>;
+                               };
+
+                               crtc0_lvds0: endpoint at 3 {
+                                       remote-endpoint = <&lvds0_mux_0>;
+                               };
+
+                               crtc0_lvds1: endpoint at 4 {
+                                       remote-endpoint = <&lvds1_mux_0>;
+                               };
+                       };
+
+               };
+
+               crtc1: crtc at 1 {
+                       compatible = "fsl,imx-ipuv3-crtc";
+                       ipu = <&ipu1>;
+                       di = <1>;
+
+                       port {
+                               crtc1_disp0: endpoint at 0 {
+                               };
+
+                               crtc1_hdmi: endpoint at 1 {
+                                       remote-endpoint = <&hdmi_mux_1>;
+                               };
+
+                               crtc1_mipi: endpoint at 2 {
+                                       remote-endpoint = <&mipi_mux_1>;
+                               };
+
+                               crtc1_lvds0: endpoint at 3 {
+                                       remote-endpoint = <&lvds0_mux_1>;
+                               };
+
+                               crtc1_lvds1: endpoint at 4 {
+                                       remote-endpoint = <&lvds1_mux_1>;
+                               };
+                       };
+               };
+
                aips-bus at 02000000 { /* AIPS1 */
                        compatible = "fsl,aips-bus", "simple-bus";
                        #address-cells = <1>;
@@ -711,7 +767,7 @@
                                                reg = <0>;

                                                lvds0_mux_0: endpoint {
-                                                       remote-endpoint = 
<&ipu1_di0_lvds0>;
+                                                       remote-endpoint = 
<&crtc0_lvds0>;
                                                };
                                        };

@@ -719,7 +775,7 @@
                                                reg = <1>;

                                                lvds0_mux_1: endpoint {
-                                                       remote-endpoint = 
<&ipu1_di1_lvds0>;
+                                                       remote-endpoint = 
<&crtc1_lvds0>;
                                                };
                                        };
                                };
@@ -734,7 +790,7 @@
                                                reg = <0>;

                                                lvds1_mux_0: endpoint {
-                                                       remote-endpoint = 
<&ipu1_di0_lvds1>;
+                                                       remote-endpoint = 
<&crtc0_lvds1>;
                                                };
                                        };

@@ -742,7 +798,7 @@
                                                reg = <1>;

                                                lvds1_mux_1: endpoint {
-                                                       remote-endpoint = 
<&ipu1_di1_lvds1>;
+                                                       remote-endpoint = 
<&crtc1_lvds1>;
                                                };
                                        };
                                };
@@ -763,7 +819,7 @@
                                        reg = <0>;

                                        hdmi_mux_0: endpoint {
-                                               remote-endpoint = 
<&ipu1_di0_hdmi>;
+                                               remote-endpoint = <&crtc0_hdmi>;
                                        };
                                };

@@ -771,7 +827,7 @@
                                        reg = <1>;

                                        hdmi_mux_1: endpoint {
-                                               remote-endpoint = 
<&ipu1_di1_hdmi>;
+                                               remote-endpoint = <&crtc1_hdmi>;
                                        };
                                };
                        };
@@ -1013,7 +1069,7 @@
                                        reg = <0>;

                                        mipi_mux_0: endpoint {
-                                               remote-endpoint = 
<&ipu1_di0_mipi>;
+                                               remote-endpoint = <&crtc0_mipi>;
                                        };
                                };

@@ -1021,7 +1077,7 @@
                                        reg = <1>;

                                        mipi_mux_1: endpoint {
-                                               remote-endpoint = 
<&ipu1_di1_mipi>;
+                                               remote-endpoint = <&crtc1_mipi>;
                                        };
                                };
                        };
@@ -1100,56 +1156,6 @@
                        ipu1_csi1: port at 1 {
                                reg = <1>;
                        };
-
-                       ipu1_di0: port at 2 {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               reg = <2>;
-
-                               ipu1_di0_disp0: endpoint at 0 {
-                               };
-
-                               ipu1_di0_hdmi: endpoint at 1 {
-                                       remote-endpoint = <&hdmi_mux_0>;
-                               };
-
-                               ipu1_di0_mipi: endpoint at 2 {
-                                       remote-endpoint = <&mipi_mux_0>;
-                               };
-
-                               ipu1_di0_lvds0: endpoint at 3 {
-                                       remote-endpoint = <&lvds0_mux_0>;
-                               };
-
-                               ipu1_di0_lvds1: endpoint at 4 {
-                                       remote-endpoint = <&lvds1_mux_0>;
-                               };
-                       };
-
-                       ipu1_di1: port at 3 {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               reg = <3>;
-
-                               ipu1_di0_disp1: endpoint at 0 {
-                               };
-
-                               ipu1_di1_hdmi: endpoint at 1 {
-                                       remote-endpoint = <&hdmi_mux_1>;
-                               };
-
-                               ipu1_di1_mipi: endpoint at 2 {
-                                       remote-endpoint = <&mipi_mux_1>;
-                               };
-
-                               ipu1_di1_lvds0: endpoint at 3 {
-                                       remote-endpoint = <&lvds0_mux_1>;
-                               };
-
-                               ipu1_di1_lvds1: endpoint at 4 {
-                                       remote-endpoint = <&lvds1_mux_1>;
-                               };
-                       };
                };
        };
 };
-- 
1.7.9.5

Reply via email to