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