diff mbox

[03/72] ARM: dts: imx6qdl: Create imx-drm crtc nodes

Message ID 1414796095-10107-4-git-send-email-steve_longerbeam@mentor.com (mailing list archive)
State New, archived
Headers show

Commit Message

Steve Longerbeam Oct. 31, 2014, 10:53 p.m. UTC
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@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(-)

Comments

Philipp Zabel Nov. 3, 2014, 12:31 p.m. UTC | #1
Hi Steve,

Am Freitag, den 31.10.2014, 15:53 -0700 schrieb Steve Longerbeam:
> Create imx-drm crtc device nodes. Each crtc node requires the following
> parameters:
> 
> - parent ipu phandle.
> - di number.
> - port endpoints.
[...]

the crtcs do not belong in the device tree. Currently the crtcs are each
fixed to one of the DIs (the DIs are is what the two IPU output ports in
the device tree describe), but that could be changed, dynamically, with
each modeset.

regards
Philipp
Steve Longerbeam Nov. 3, 2014, 5:09 p.m. UTC | #2
On 11/03/2014 04:31 AM, Philipp Zabel wrote:
> Hi Steve,
> 
> Am Freitag, den 31.10.2014, 15:53 -0700 schrieb Steve Longerbeam:
>> Create imx-drm crtc device nodes. Each crtc node requires the following
>> parameters:
>>
>> - parent ipu phandle.
>> - di number.
>> - port endpoints.
> [...]
> 
> the crtcs do not belong in the device tree. Currently the crtcs are each
> fixed to one of the DIs (the DIs are is what the two IPU output ports in
> the device tree describe), but that could be changed, dynamically, with
> each modeset.
> 
> 

Hi Philipp, yes currently the crtc's are fixed to a DI. I wasn't aware that
there are future plans to change this.

But I don't see any difference between the crtcs being created in code versus
in the device tree, even with the above new info. In both cases, the assigned
DI could simply be an initial assignment that can be re-assigned on mode changes.

Steve
diff mbox

Patch

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@2 {
+			compatible = "fsl,imx-ipuv3-crtc";
+			ipu = <&ipu2>;
+			di = <0>;
+			dual-plane;
+
+			port {
+				crtc2_disp0: endpoint@0 {
+				};
+
+				crtc2_hdmi: endpoint@1 {
+					remote-endpoint = <&hdmi_mux_2>;
+				};
+
+				crtc2_mipi: endpoint@2 {
+				};
+
+				crtc2_lvds0: endpoint@3 {
+					remote-endpoint = <&lvds0_mux_2>;
+				};
+
+				crtc2_lvds1: endpoint@4 {
+					remote-endpoint = <&lvds1_mux_2>;
+				};
+			};
+		};
+
+		crtc3: crtc@3 {
+			compatible = "fsl,imx-ipuv3-crtc";
+			ipu = <&ipu2>;
+			di = <1>;
+
+			port {
+				crtc3_disp0: endpoint@0 {
+				};
+
+				crtc3_hdmi: endpoint@1 {
+					remote-endpoint = <&hdmi_mux_3>;
+				};
+
+				crtc3_mipi: endpoint@2 {
+				};
+
+				crtc3_lvds0: endpoint@3 {
+					remote-endpoint = <&lvds0_mux_3>;
+				};
+
+				crtc3_lvds1: endpoint@4 {
+					remote-endpoint = <&lvds1_mux_3>;
+				};
+			};
+		};
+
 		sata: sata@02200000 {
 			compatible = "fsl,imx6q-ahci";
 			reg = <0x02200000 0x4000>;
@@ -171,57 +224,12 @@ 
 			ipu2_csi1: port@1 {
 				reg = <1>;
 			};
-
-			ipu2_di0: port@2 {
-				#address-cells = <1>;
-				#size-cells = <0>;
-				reg = <2>;
-
-				ipu2_di0_disp0: endpoint@0 {
-				};
-
-				ipu2_di0_hdmi: endpoint@1 {
-					remote-endpoint = <&hdmi_mux_2>;
-				};
-
-				ipu2_di0_mipi: endpoint@2 {
-				};
-
-				ipu2_di0_lvds0: endpoint@3 {
-					remote-endpoint = <&lvds0_mux_2>;
-				};
-
-				ipu2_di0_lvds1: endpoint@4 {
-					remote-endpoint = <&lvds1_mux_2>;
-				};
-			};
-
-			ipu2_di1: port@3 {
-				#address-cells = <1>;
-				#size-cells = <0>;
-				reg = <3>;
-
-				ipu2_di1_hdmi: endpoint@1 {
-					remote-endpoint = <&hdmi_mux_3>;
-				};
-
-				ipu2_di1_mipi: endpoint@2 {
-				};
-
-				ipu2_di1_lvds0: endpoint@3 {
-					remote-endpoint = <&lvds0_mux_3>;
-				};
-
-				ipu2_di1_lvds1: endpoint@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@0 {
+			compatible = "fsl,imx-ipuv3-crtc";
+			ipu = <&ipu1>;
+			di = <0>;
+			dual-plane;
+
+			port {
+				crtc0_disp0: endpoint@0 {
+				};
+
+				crtc0_hdmi: endpoint@1 {
+					remote-endpoint = <&hdmi_mux_0>;
+				};
+
+				crtc0_mipi: endpoint@2 {
+					remote-endpoint = <&mipi_mux_0>;
+				};
+
+				crtc0_lvds0: endpoint@3 {
+					remote-endpoint = <&lvds0_mux_0>;
+				};
+
+				crtc0_lvds1: endpoint@4 {
+					remote-endpoint = <&lvds1_mux_0>;
+				};
+			};
+
+		};
+
+		crtc1: crtc@1 {
+			compatible = "fsl,imx-ipuv3-crtc";
+			ipu = <&ipu1>;
+			di = <1>;
+
+			port {
+				crtc1_disp0: endpoint@0 {
+				};
+
+				crtc1_hdmi: endpoint@1 {
+					remote-endpoint = <&hdmi_mux_1>;
+				};
+
+				crtc1_mipi: endpoint@2 {
+					remote-endpoint = <&mipi_mux_1>;
+				};
+
+				crtc1_lvds0: endpoint@3 {
+					remote-endpoint = <&lvds0_mux_1>;
+				};
+
+				crtc1_lvds1: endpoint@4 {
+					remote-endpoint = <&lvds1_mux_1>;
+				};
+			};
+		};
+
 		aips-bus@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@1 {
 				reg = <1>;
 			};
-
-			ipu1_di0: port@2 {
-				#address-cells = <1>;
-				#size-cells = <0>;
-				reg = <2>;
-
-				ipu1_di0_disp0: endpoint@0 {
-				};
-
-				ipu1_di0_hdmi: endpoint@1 {
-					remote-endpoint = <&hdmi_mux_0>;
-				};
-
-				ipu1_di0_mipi: endpoint@2 {
-					remote-endpoint = <&mipi_mux_0>;
-				};
-
-				ipu1_di0_lvds0: endpoint@3 {
-					remote-endpoint = <&lvds0_mux_0>;
-				};
-
-				ipu1_di0_lvds1: endpoint@4 {
-					remote-endpoint = <&lvds1_mux_0>;
-				};
-			};
-
-			ipu1_di1: port@3 {
-				#address-cells = <1>;
-				#size-cells = <0>;
-				reg = <3>;
-
-				ipu1_di0_disp1: endpoint@0 {
-				};
-
-				ipu1_di1_hdmi: endpoint@1 {
-					remote-endpoint = <&hdmi_mux_1>;
-				};
-
-				ipu1_di1_mipi: endpoint@2 {
-					remote-endpoint = <&mipi_mux_1>;
-				};
-
-				ipu1_di1_lvds0: endpoint@3 {
-					remote-endpoint = <&lvds0_mux_1>;
-				};
-
-				ipu1_di1_lvds1: endpoint@4 {
-					remote-endpoint = <&lvds1_mux_1>;
-				};
-			};
 		};
 	};
 };