diff mbox

[v7,11/13] ARM: sun8i: v3s: add device nodes for DE2 display pipeline

Message ID 20170514163045.40366-12-icenowy@aosc.io (mailing list archive)
State New, archived
Headers show

Commit Message

Icenowy Zheng May 14, 2017, 4:30 p.m. UTC
Allwinner V3s SoC features a "Display Engine 2.0" with only one mixer
and only one TCON connected to this mixer, which have RGB LCD output.

Add device nodes for this display pipeline.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
---
Changes in v7:
- Change DE2 clock compatible to V3s one.
- Mention only one TCON in commit message.
- Changed commit brief.

 arch/arm/boot/dts/sun8i-v3s.dtsi | 87 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 87 insertions(+)

Comments

Maxime Ripard May 15, 2017, 9:24 a.m. UTC | #1
On Mon, May 15, 2017 at 12:30:43AM +0800, Icenowy Zheng wrote:
> +		de2_clocks: clock@1000000 {

display_clocks would be better there, we don't have to dissociate de1
with de2

> +			compatible = "allwinner,sun8i-v3s-de2-clk";
> +			reg = <0x01000000 0x100000>;
> +			clocks = <&ccu CLK_DE>,
> +				 <&ccu CLK_BUS_DE>;
> +			clock-names = "mod",
> +				      "bus";
> +			resets = <&ccu RST_BUS_DE>;
> +			#clock-cells = <1>;
> +			#reset-cells = <1>;
> +		};
> +
> +		de2_mixer0: mixer@1100000 {

and mixer0 here is enough too.

Is there several of them? Why not just use mixer if there's only one?

> +			compatible = "allwinner,sun8i-v3s-de2-mixer";
> +			reg = <0x01100000 0x100000>;
> +			clocks = <&de2_clocks CLK_MIXER0>,
> +				 <&de2_clocks CLK_BUS_MIXER0>;
> +			clock-names = "mod",
> +				      "bus";
> +			resets = <&de2_clocks RST_MIXER0>;
> +			assigned-clocks = <&de2_clocks CLK_MIXER0>;
> +			assigned-clock-rates = <150000000>;
> +
> +			ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				mixer0_out: port@1 {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					reg = <1>;
> +
> +					mixer0_out_tcon0: endpoint@0 {
> +						reg = <0>;
> +						remote-endpoint = <&tcon0_in_mixer0>;
> +					};
> +				};
> +			};
> +		};
> +
> +		tcon0: lcd-controller@1c0c000 {
> +			compatible = "allwinner,sun8i-v3s-tcon";
> +			reg = <0x01c0c000 0x1000>;
> +			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_TCON0>,
> +				 <&ccu CLK_TCON0>;
> +			clock-names = "ahb",
> +				      "tcon-ch0";
> +			clock-output-names = "tcon-pixel-clock";
> +			resets = <&ccu RST_BUS_TCON0>;
> +			reset-names = "lcd";
> +			status = "disabled";
> +
> +			ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				tcon0_in: port@0 {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					reg = <0>;
> +
> +					tcon0_in_mixer0: endpoint@0 {
> +						reg = <0>;
> +						remote-endpoint = <&mixer0_out_tcon0>;
> +					};
> +				};
> +
> +				tcon0_out: port@1 {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					reg = <1>;
> +				};
> +			};
> +		};
> +
> +

You have an extra new line here.

Maxime
Icenowy Zheng May 17, 2017, 9:27 a.m. UTC | #2
在 2017-05-15 17:24,Maxime Ripard 写道:
> On Mon, May 15, 2017 at 12:30:43AM +0800, Icenowy Zheng wrote:
>> +		de2_clocks: clock@1000000 {
> 
> display_clocks would be better there, we don't have to dissociate de1
> with de2

How about de_clocks ? (See A80 DTSI)

> 
>> +			compatible = "allwinner,sun8i-v3s-de2-clk";
>> +			reg = <0x01000000 0x100000>;
>> +			clocks = <&ccu CLK_DE>,
>> +				 <&ccu CLK_BUS_DE>;
>> +			clock-names = "mod",
>> +				      "bus";
>> +			resets = <&ccu RST_BUS_DE>;
>> +			#clock-cells = <1>;
>> +			#reset-cells = <1>;
>> +		};
>> +
>> +		de2_mixer0: mixer@1100000 {
> 
> and mixer0 here is enough too.
> 
> Is there several of them? Why not just use mixer if there's only one?

Nope, here it's tagged 0 only for consistency with other SoCs.

> 
>> +			compatible = "allwinner,sun8i-v3s-de2-mixer";
>> +			reg = <0x01100000 0x100000>;
>> +			clocks = <&de2_clocks CLK_MIXER0>,
>> +				 <&de2_clocks CLK_BUS_MIXER0>;
>> +			clock-names = "mod",
>> +				      "bus";
>> +			resets = <&de2_clocks RST_MIXER0>;
>> +			assigned-clocks = <&de2_clocks CLK_MIXER0>;
>> +			assigned-clock-rates = <150000000>;
>> +
>> +			ports {
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +
>> +				mixer0_out: port@1 {
>> +					#address-cells = <1>;
>> +					#size-cells = <0>;
>> +					reg = <1>;
>> +
>> +					mixer0_out_tcon0: endpoint@0 {
>> +						reg = <0>;
>> +						remote-endpoint = <&tcon0_in_mixer0>;
>> +					};
>> +				};
>> +			};
>> +		};
>> +
>> +		tcon0: lcd-controller@1c0c000 {
>> +			compatible = "allwinner,sun8i-v3s-tcon";
>> +			reg = <0x01c0c000 0x1000>;
>> +			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
>> +			clocks = <&ccu CLK_BUS_TCON0>,
>> +				 <&ccu CLK_TCON0>;
>> +			clock-names = "ahb",
>> +				      "tcon-ch0";
>> +			clock-output-names = "tcon-pixel-clock";
>> +			resets = <&ccu RST_BUS_TCON0>;
>> +			reset-names = "lcd";
>> +			status = "disabled";
>> +
>> +			ports {
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +
>> +				tcon0_in: port@0 {
>> +					#address-cells = <1>;
>> +					#size-cells = <0>;
>> +					reg = <0>;
>> +
>> +					tcon0_in_mixer0: endpoint@0 {
>> +						reg = <0>;
>> +						remote-endpoint = <&mixer0_out_tcon0>;
>> +					};
>> +				};
>> +
>> +				tcon0_out: port@1 {
>> +					#address-cells = <1>;
>> +					#size-cells = <0>;
>> +					reg = <1>;
>> +				};
>> +			};
>> +		};
>> +
>> +
> 
> You have an extra new line here.
> 
> Maxime
Icenowy Zheng May 17, 2017, 9:32 a.m. UTC | #3
在 2017-05-17 17:27,icenowy@aosc.io 写道:
> 在 2017-05-15 17:24,Maxime Ripard 写道:
>> On Mon, May 15, 2017 at 12:30:43AM +0800, Icenowy Zheng wrote:
>>> +		de2_clocks: clock@1000000 {
>> 
>> display_clocks would be better there, we don't have to dissociate de1
>> with de2
> 
> How about de_clocks ? (See A80 DTSI)

Oh I regretted... de here indicates "de1".

display_clocks is better.

> 
>> 
>>> +			compatible = "allwinner,sun8i-v3s-de2-clk";
>>> +			reg = <0x01000000 0x100000>;
>>> +			clocks = <&ccu CLK_DE>,
>>> +				 <&ccu CLK_BUS_DE>;
>>> +			clock-names = "mod",
>>> +				      "bus";
>>> +			resets = <&ccu RST_BUS_DE>;
>>> +			#clock-cells = <1>;
>>> +			#reset-cells = <1>;
>>> +		};
>>> +
>>> +		de2_mixer0: mixer@1100000 {
>> 
>> and mixer0 here is enough too.
>> 
>> Is there several of them? Why not just use mixer if there's only one?
> 
> Nope, here it's tagged 0 only for consistency with other SoCs.
> 
>> 
>>> +			compatible = "allwinner,sun8i-v3s-de2-mixer";
>>> +			reg = <0x01100000 0x100000>;
>>> +			clocks = <&de2_clocks CLK_MIXER0>,
>>> +				 <&de2_clocks CLK_BUS_MIXER0>;
>>> +			clock-names = "mod",
>>> +				      "bus";
>>> +			resets = <&de2_clocks RST_MIXER0>;
>>> +			assigned-clocks = <&de2_clocks CLK_MIXER0>;
>>> +			assigned-clock-rates = <150000000>;
>>> +
>>> +			ports {
>>> +				#address-cells = <1>;
>>> +				#size-cells = <0>;
>>> +
>>> +				mixer0_out: port@1 {
>>> +					#address-cells = <1>;
>>> +					#size-cells = <0>;
>>> +					reg = <1>;
>>> +
>>> +					mixer0_out_tcon0: endpoint@0 {
>>> +						reg = <0>;
>>> +						remote-endpoint = <&tcon0_in_mixer0>;
>>> +					};
>>> +				};
>>> +			};
>>> +		};
>>> +
>>> +		tcon0: lcd-controller@1c0c000 {
>>> +			compatible = "allwinner,sun8i-v3s-tcon";
>>> +			reg = <0x01c0c000 0x1000>;
>>> +			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
>>> +			clocks = <&ccu CLK_BUS_TCON0>,
>>> +				 <&ccu CLK_TCON0>;
>>> +			clock-names = "ahb",
>>> +				      "tcon-ch0";
>>> +			clock-output-names = "tcon-pixel-clock";
>>> +			resets = <&ccu RST_BUS_TCON0>;
>>> +			reset-names = "lcd";
>>> +			status = "disabled";
>>> +
>>> +			ports {
>>> +				#address-cells = <1>;
>>> +				#size-cells = <0>;
>>> +
>>> +				tcon0_in: port@0 {
>>> +					#address-cells = <1>;
>>> +					#size-cells = <0>;
>>> +					reg = <0>;
>>> +
>>> +					tcon0_in_mixer0: endpoint@0 {
>>> +						reg = <0>;
>>> +						remote-endpoint = <&mixer0_out_tcon0>;
>>> +					};
>>> +				};
>>> +
>>> +				tcon0_out: port@1 {
>>> +					#address-cells = <1>;
>>> +					#size-cells = <0>;
>>> +					reg = <1>;
>>> +				};
>>> +			};
>>> +		};
>>> +
>>> +
>> 
>> You have an extra new line here.
>> 
>> Maxime
diff mbox

Patch

diff --git a/arch/arm/boot/dts/sun8i-v3s.dtsi b/arch/arm/boot/dts/sun8i-v3s.dtsi
index 71075969e5e6..b71b35734515 100644
--- a/arch/arm/boot/dts/sun8i-v3s.dtsi
+++ b/arch/arm/boot/dts/sun8i-v3s.dtsi
@@ -41,6 +41,10 @@ 
  */
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/sun8i-v3s-ccu.h>
+#include <dt-bindings/clock/sun8i-de2.h>
+#include <dt-bindings/reset/sun8i-v3s-ccu.h>
+#include <dt-bindings/reset/sun8i-de2.h>
 
 / {
 	#address-cells = <1>;
@@ -59,6 +63,12 @@ 
 		};
 	};
 
+	de: display-engine {
+		compatible = "allwinner,sun8i-v3s-display-engine";
+		allwinner,pipelines = <&de2_mixer0>;
+		status = "disabled";
+	};
+
 	timer {
 		compatible = "arm,armv7-timer";
 		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
@@ -93,6 +103,83 @@ 
 		#size-cells = <1>;
 		ranges;
 
+		de2_clocks: clock@1000000 {
+			compatible = "allwinner,sun8i-v3s-de2-clk";
+			reg = <0x01000000 0x100000>;
+			clocks = <&ccu CLK_DE>,
+				 <&ccu CLK_BUS_DE>;
+			clock-names = "mod",
+				      "bus";
+			resets = <&ccu RST_BUS_DE>;
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+		};
+
+		de2_mixer0: mixer@1100000 {
+			compatible = "allwinner,sun8i-v3s-de2-mixer";
+			reg = <0x01100000 0x100000>;
+			clocks = <&de2_clocks CLK_MIXER0>,
+				 <&de2_clocks CLK_BUS_MIXER0>;
+			clock-names = "mod",
+				      "bus";
+			resets = <&de2_clocks RST_MIXER0>;
+			assigned-clocks = <&de2_clocks CLK_MIXER0>;
+			assigned-clock-rates = <150000000>;
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				mixer0_out: port@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+
+					mixer0_out_tcon0: endpoint@0 {
+						reg = <0>;
+						remote-endpoint = <&tcon0_in_mixer0>;
+					};
+				};
+			};
+		};
+
+		tcon0: lcd-controller@1c0c000 {
+			compatible = "allwinner,sun8i-v3s-tcon";
+			reg = <0x01c0c000 0x1000>;
+			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_TCON0>,
+				 <&ccu CLK_TCON0>;
+			clock-names = "ahb",
+				      "tcon-ch0";
+			clock-output-names = "tcon-pixel-clock";
+			resets = <&ccu RST_BUS_TCON0>;
+			reset-names = "lcd";
+			status = "disabled";
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				tcon0_in: port@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+
+					tcon0_in_mixer0: endpoint@0 {
+						reg = <0>;
+						remote-endpoint = <&mixer0_out_tcon0>;
+					};
+				};
+
+				tcon0_out: port@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+			};
+		};
+
+
 		mmc0: mmc@01c0f000 {
 			compatible = "allwinner,sun7i-a20-mmc";
 			reg = <0x01c0f000 0x1000>;