Skip to contentSkip to conversation

Add R8A7792/Blanche CAN support

PATCH Superseded Sergei Shtylyov 3 participants 19 messages Jul 14, 2016 – Sep 23, 2016 Device tree bindings

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover Add R8A7792/Blanche CAN support

Hello.

Here's the set of 3 patches against Simon Horman's 'renesas.git' repo,
'renesas-devel-20160711-v4.7-rc7' tag plus the R8A7792 PFC/GPIO/EtherAVB/SDHI patchsets. We're adding the R8A7792/Blanche CAN clocks and device nodes. The board patch depends on the PFC driver CAN patch in order for the CAN pins to be configured...

[1/3] ARM: dts: r8a7792: add CAN clocks
[2/3] ARM: dts: r8a7792: add CAN support
[3/3] ARM: dts: blanche: add CAN0 support

WBR, Sergei

#1 lore raw

PATCH 1/3 ARM: dts: r8a7792: add CAN clocks

The R-Car CAN controllers can derive the CAN bus clock not only from their peripheral clock input (clkp1) but also from the other internal clock (clkp2) and the external clock fed on the CAN_CLK pin. Describe those clocks in the R8A7792 device tree.

---
 arch/arm/boot/dts/r8a7792.dtsi |   22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)
arch/arm/boot/dts/r8a7792.dtsi +20 -2
Index: renesas/arch/arm/boot/dts/r8a7792.dtsi
===================================================================
@@ -530,6 +530,13 @@
 			clock-div = <8>;
 			clock-mult = <1>;
 		};
+		rcan_clk: rcan {
+			compatible = "fixed-factor-clock";
+			clocks = <&pll1_div2_clk>;
+			#clock-cells = <0>;
+			clock-div = <49>;
+			clock-mult = <1>;
+		};
 
 		/* Gate clocks */
 		mstp1_clks: mstp1_clks at e6150134 {
@@ -600,7 +607,8 @@
 			reg = <0 0xe6150994 0 4>, <0 0xe61509a4 0 4>;
 			clocks = <&cp_clk>, <&cp_clk>, <&cp_clk>, <&cp_clk>,
 				 <&cp_clk>, <&cp_clk>, <&cp_clk>, <&cp_clk>,
-				 <&cp_clk>, <&cp_clk>, <&cp_clk>, <&cp_clk>;
+				 <&cp_clk>, <&cp_clk>, <&p_clk>, <&p_clk>,
+				 <&cp_clk>, <&cp_clk>;
 			#clock-cells = <1>;
 			clock-indices = <
 				R8A7792_CLK_GPIO7 R8A7792_CLK_GPIO6
@@ -608,12 +616,14 @@
 				R8A7792_CLK_GPIO3 R8A7792_CLK_GPIO2
 				R8A7792_CLK_GPIO1 R8A7792_CLK_GPIO0
 				R8A7792_CLK_GPIO11 R8A7792_CLK_GPIO10
+				R8A7792_CLK_CAN1 R8A7792_CLK_CAN0
 				R8A7792_CLK_GPIO9 R8A7792_CLK_GPIO8
 			>;
 			clock-output-names =
 				"gpio7", "gpio6", "gpio5", "gpio4",
 				"gpio3", "gpio2", "gpio1", "gpio0",
-				"gpio11", "gpio10", "gpio9", "gpio8";
+				"gpio11", "gpio10", "can1", "can0",
+				"gpio9", "gpio8";
 		};
 	};
 
@@ -630,6 +640,14 @@
 		compatible = "fixed-clock";
 		#clock-cells = <0>;
 		/* This value must be overridden by the board. */
+		clock-frequency = <0>;
+	};
+
+	/* External CAN clock */
+	can_clk: can {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		/* This value must be overridden by the board. */
 		clock-frequency = <0>;
 	};
 };
#2 lore raw

PATCH 1/3 ARM: dts: r8a7792: add CAN clocks

Quoted 6 lines · Sergei Shtylyov

The R-Car CAN controllers can derive the CAN bus clock not only from their peripheral clock input (clkp1) but also from the other internal clock (clkp2) and the external clock fed on the CAN_CLK pin. Describe those clocks in the R8A7792 device tree.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#3 lore raw

PATCH 2/3 ARM: dts: r8a7792: add CAN support

In reply to Sergei Shtylyov

Define the generic R8A7792 parts of the CAN0/1 device nodes.

---
 arch/arm/boot/dts/r8a7792.dtsi |   24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
arch/arm/boot/dts/r8a7792.dtsi +24 -0
Index: renesas/arch/arm/boot/dts/r8a7792.dtsi
===================================================================
@@ -468,6 +468,30 @@
 			status = "disabled";
 		};
 
+		can0: can at e6e80000 {
+			compatible = "renesas,can-r8a7792",
+				     "renesas,rcar-gen2-can";
+			reg = <0 0xe6e80000 0 0x1000>;
+			interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&mstp9_clks R8A7792_CLK_CAN0>,
+				 <&rcan_clk>, <&can_clk>;
+			clock-names = "clkp1", "clkp2", "can_clk";
+			power-domains = <&sysc R8A7792_PD_ALWAYS_ON>;
+			status = "disabled";
+		};
+
+		can1: can at e6e88000 {
+			compatible = "renesas,can-r8a7792",
+				     "renesas,rcar-gen2-can";
+			reg = <0 0xe6e88000 0 0x1000>;
+			interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&mstp9_clks R8A7792_CLK_CAN1>,
+				 <&rcan_clk>, <&can_clk>;
+			clock-names = "clkp1", "clkp2", "can_clk";
+			power-domains = <&sysc R8A7792_PD_ALWAYS_ON>;
+			status = "disabled";
+		};
+
 		/* Special CPG clocks */
 		cpg_clocks: cpg_clocks at e6150000 {
 			compatible = "renesas,r8a7792-cpg-clocks",
#4 lore raw

PATCH 2/3 ARM: dts: r8a7792: add CAN support

Quoted 3 lines · Sergei Shtylyov

Define the generic R8A7792 parts of the CAN0/1 device nodes.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#5 lore raw

PATCH 3/3 ARM: dts: blanche: add CAN0 support

In reply to Sergei Shtylyov

Define the Blanche board dependent part of the CAN0 device node along with the CAN_CLK crystal...

---
 arch/arm/boot/dts/r8a7792-blanche.dts |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)
arch/arm/boot/dts/r8a7792-blanche.dts +16 -0
Index: renesas/arch/arm/boot/dts/r8a7792-blanche.dts
===================================================================
@@ -60,6 +60,10 @@
 	clock-frequency = <20000000>;
 };
 
+&can_clk {
+	clock-frequency = <48000000>;
+};
+
 &pfc {
 	scif0_pins: scif0 {
 		groups = "scif0_data";
@@ -81,6 +85,11 @@
 			function = "lbsc";
 		};
 	};
+
+	can0_pins: can0 {
+		groups = "can0_data", "can_clk";
+		function = "can0";
+	};
 };
 
 &scif0 {
@@ -95,4 +104,11 @@
 	pinctrl-names = "default";
 
 	status = "okay";
+};
+
+&can0 {
+	pinctrl-0 = <&can0_pins>;
+	pinctrl-names = "default";
+
+	status = "okay";
 };
#6 lore raw

cover Add R8A7792/Blanche CAN support

In reply to Sergei Shtylyov
Quoted 7 lines · Sergei Shtylyov

Hello.

Here's the set of 3 patches against Simon Horman's 'renesas.git' repo,
'renesas-devel-20160711-v4.7-rc7' tag plus the R8A7792 PFC/GPIO/EtherAVB/SDHI patchsets. We're adding the R8A7792/Blanche CAN clocks and device nodes. The board patch depends on the PFC driver CAN patch in order for the CAN pins to be configured...

Thanks, I have queue this up.

#7 lore raw

PATCH 1/1 ARM: dts: wheat: add CAN support

In reply to Sergei Shtylyov

Define the Wheat board dependent part of the CAN0/1 device nodes...

Based on the original (and large) patch by Vladimir Barinov <[email protected]>.

---
This patch is against the 'renesas-devel-20160829-v4.8-rc4' of Simon Horman's 'renesas.git' repo.

 arch/arm/boot/dts/r8a7792-wheat.dts |   24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
arch/arm/boot/dts/r8a7792-wheat.dts +24 -0
Index: renesas/arch/arm/boot/dts/r8a7792-wheat.dts
===================================================================
@@ -76,6 +76,16 @@
 			function = "lbsc";
 		};
 	};
+
+	can0_pins: can0 {
+		groups = "can0_data";
+		function = "can0";
+	};
+
+	can1_pins: can1 {
+		groups = "can1_data";
+		function = "can1";
+	};
 };
 
 &scif0 {
@@ -83,4 +93,18 @@
 	pinctrl-names = "default";
 
 	status = "okay";
+};
+
+&can0 {
+	pinctrl-0 = <&can0_pins>;
+	pinctrl-names = "default";
+
+	status = "okay";
+};
+
+&can1 {
+	pinctrl-0 = <&can1_pins>;
+	pinctrl-names = "default";
+
+	status = "okay";
 };
#8 lore raw

PATCH 1/1 ARM: dts: wheat: add CAN support

Quoted 6 lines · Sergei Shtylyov

Define the Wheat board dependent part of the CAN0/1 device nodes...

Based on the original (and large) patch by Vladimir Barinov <[email protected]>.

[...]

This patch seems stuck for no apparent reason...

MBR, Sergei

#9 lore raw

PATCH 1/1 ARM: dts: wheat: add CAN support

Quoted 11 lines · Sergei Shtylyov
Quoted 6 lines · Sergei Shtylyov

Define the Wheat board dependent part of the CAN0/1 device nodes...

Based on the original (and large) patch by Vladimir Barinov <[email protected]>.

[...]

This patch seems stuck for no apparent reason...

Thanks, I have queued this up.

#10 lore raw

PATCH 1/1 ARM: dts: wheat: add SDHI0 support

In reply to Sergei Shtylyov

Define the Wheat board dependent part of the SDHI0 (connected to the micro-SD slot) device node along with the necessary voltage regulator.

---
This patch is against the 'renesas-devel-20160830-v4.8-rc4' of Simon Horman's 'renesas.git' repo plus the CAN patch posted yesterday.
Starting with this patch, SMSC LAN89218 Ethernet chip starts to misbehave on my board...

 arch/arm/boot/dts/r8a7792-wheat.dts |   26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
arch/arm/boot/dts/r8a7792-wheat.dts +26 -0
Index: renesas/arch/arm/boot/dts/r8a7792-wheat.dts
===================================================================
@@ -11,6 +11,7 @@
 
 /dts-v1/;
 #include "r8a7792.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
 	model = "Wheat";
@@ -54,6 +55,17 @@
 		pinctrl-0 = <&lan89218_pins>;
 		pinctrl-names = "default";
 	};
+
+	vcc_sdhi0: regulator-vcc-sdhi0 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "SDHI0 Vcc";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpio = <&gpio11 12 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
 };
 
 &extal_clk {
@@ -86,6 +98,11 @@
 		groups = "can1_data";
 		function = "can1";
 	};
+
+	sdhi0_pins: sdhi0 {
+		groups = "sdhi0_data4", "sdhi0_ctrl";
+		function = "sdhi0";
+	};
 };
 
 &scif0 {
@@ -108,3 +125,12 @@
 
 	status = "okay";
 };
+
+&sdhi0 {
+	pinctrl-0 = <&sdhi0_pins>;
+	pinctrl-names = "default";
+
+	vmmc-supply = <&vcc_sdhi0>;
+	cd-gpios = <&gpio11 11 GPIO_ACTIVE_LOW>;
+	status = "okay";
+};
#11 lore raw

PATCH 1/1 ARM: dts: wheat: add SDHI0 support

Hi Sergei,

Quoted 10 lines · Sergei Shtylyov

Define the Wheat board dependent part of the SDHI0 (connected to the micro-SD slot) device node along with the necessary voltage regulator.

---
This patch is against the 'renesas-devel-20160830-v4.8-rc4' of Simon Horman's 'renesas.git' repo plus the CAN patch posted yesterday.
Starting with this patch, SMSC LAN89218 Ethernet chip starts to misbehave on my board...

Are GP11_11 or GP11_12 connected to the Ethernet chip?
Does the misbehaving go away if you drop
- cd-gpios?
- The regulator?
- sdhi0-pins (there may be a bug in the pfc register bit definitions)?

Quoted 48 lines
 arch/arm/boot/dts/r8a7792-wheat.dts |   26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

Index: renesas/arch/arm/boot/dts/r8a7792-wheat.dts
===================================================================

arch/arm/boot/dts/r8a7792-wheat.dts +17 -0
@@ -11,6 +11,7 @@
 
 /dts-v1/;
 #include "r8a7792.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "Wheat";
@@ -54,6 +55,17 @@
                pinctrl-0 = <&lan89218_pins>;
                pinctrl-names = "default";
        };
+
+       vcc_sdhi0: regulator-vcc-sdhi0 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "SDHI0 Vcc";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&gpio11 12 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
 };
 
 &extal_clk {
@@ -86,6 +98,11 @@
                groups = "can1_data";
                function = "can1";
        };
+
+       sdhi0_pins: sdhi0 {
+               groups = "sdhi0_data4", "sdhi0_ctrl";
+               function = "sdhi0";
+       };
 };
 
 &scif0 {
@@ -108,3 +125,12 @@
 
        status = "okay";

arch/arm/boot/dts/r8a7792-wheat.dts line 136

Quoted 10 lines
arch/arm/boot/dts/r8a7792-wheat.dts +9 -0
 };
+
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_pins>;
+       pinctrl-names = "default";
+
+       vmmc-supply = <&vcc_sdhi0>;
+       cd-gpios = <&gpio11 11 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#12 lore raw

PATCH 1/1 ARM: dts: wheat: add SDHI0 support

In reply to Sergei Shtylyov

Hello.

Quoted 10 lines · Sergei Shtylyov

Define the Wheat board dependent part of the SDHI0 (connected to the micro-SD slot) device node along with the necessary voltage regulator.

---
This patch is against the 'renesas-devel-20160830-v4.8-rc4' of Simon Horman's 'renesas.git' repo plus the CAN patch posted yesterday.
Starting with this patch, SMSC LAN89218 Ethernet chip starts to misbehave on my board...

Fortunately, this ill effect has been fixed by Jeremy Lintion's smsc911x
driver patches that should hit Linus' tree soon (they're alredy in DaveM's net.git)...

MBR, Sergei

#13 lore raw

PATCH 1/1 ARM: dts: wheat: add SDHI0 support

Quoted 8 lines · Sergei Shtylyov

Hello.

Quoted 4 lines · Sergei Shtylyov

Define the Wheat board dependent part of the SDHI0 (connected to the micro-SD slot) device node along with the necessary voltage regulator.

Thanks, I have queued this up.

Quoted 9 lines
Quoted 5 lines

---
This patch is against the 'renesas-devel-20160830-v4.8-rc4' of Simon Horman's 'renesas.git' repo plus the CAN patch posted yesterday.
Starting with this patch, SMSC LAN89218 Ethernet chip starts to misbehave on my board...

Fortunately, this ill effect has been fixed by Jeremy Lintion's smsc911x
driver patches that should hit Linus' tree soon (they're alredy in DaveM's net.git)...

#14 lore raw

PATCH 1/1 ARM: dts: wheat: add DU support

In reply to Sergei Shtylyov

Define the Wheat board dependent part of the DU device node. Add the device nodes for the Analog Devices ADV7513 HDMI transmitters connected to DU0/1. Add the necessary subnodes to interconnect DU with HDMI transmitters/connectors.

---
This patch is against the 'renesas-devel-20160901-v4.8-rc4' of Simon Horman's 'renesas.git' repo plus the Wheat CAN and SDHI patches posted earlier... The path depends on the 2 DRM patches just posted in order to work correctly!

 arch/arm/boot/dts/r8a7792-wheat.dts |  126 ++++++++++++++++++++++++++++++++++++
 1 file changed, 126 insertions(+)
arch/arm/boot/dts/r8a7792-wheat.dts +126 -0
Index: renesas/arch/arm/boot/dts/r8a7792-wheat.dts
===================================================================
@@ -66,6 +66,34 @@
 		gpio = <&gpio11 12 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 	};
+
+	hdmi-out0 {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con0: endpoint {
+				remote-endpoint = <&adv7513_0_out>;
+			};
+		};
+	};
+
+	hdmi-out1 {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con1: endpoint {
+				remote-endpoint = <&adv7513_1_out>;
+			};
+		};
+	};
+
+	osc2_clk: osc2 {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <74250000>;
+	};
 };
 
 &extal_clk {
@@ -103,6 +131,16 @@
 		groups = "sdhi0_data4", "sdhi0_ctrl";
 		function = "sdhi0";
 	};
+
+	du0_pins: du0 {
+		groups = "du0_rgb888", "du0_sync", "du0_disp";
+		function = "du0";
+	};
+
+	du1_pins: du1 {
+		groups = "du1_rgb666", "du1_sync", "du1_disp";
+		function = "du1";
+	};
 };
 
 &scif0 {
@@ -134,3 +172,91 @@
 	cd-gpios = <&gpio11 11 GPIO_ACTIVE_LOW>;
 	status = "okay";
 };
+
+&i2c4 {
+	status = "okay";
+	clock-frequency = <400000>;
+
+	hdmi at 3d {
+		compatible = "adi,adv7513";
+		reg = <0x3d>;
+
+		adi,input-depth = <8>;
+		adi,input-colorspace = "rgb";
+		adi,input-clock = "1x";
+		adi,input-style = <1>;
+		adi,input-justification = "evenly";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port at 0 {
+				reg = <0>;
+				adv7513_0_in: endpoint {
+					remote-endpoint = <&du_out_rgb0>;
+				};
+			};
+
+			port at 1 {
+				reg = <1>;
+				adv7513_0_out: endpoint {
+					remote-endpoint = <&hdmi_con0>;
+				};
+			};
+		};
+	};
+
+	hdmi at 39 {
+		compatible = "adi,adv7513";
+		reg = <0x39>;
+
+		adi,input-depth = <8>;
+		adi,input-colorspace = "rgb";
+		adi,input-clock = "1x";
+		adi,input-style = <1>;
+		adi,input-justification = "evenly";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port at 0 {
+				reg = <0>;
+				adv7513_1_in: endpoint {
+					remote-endpoint = <&du_out_rgb1>;
+				};
+			};
+
+			port at 1 {
+				reg = <1>;
+				adv7513_1_out: endpoint {
+					remote-endpoint = <&hdmi_con1>;
+				};
+			};
+		};
+	};
+};
+
+&du {
+	pinctrl-0 = <&du0_pins &du1_pins>;
+	pinctrl-names = "default";
+
+	clocks = <&mstp7_clks R8A7792_CLK_DU0>, <&mstp7_clks R8A7792_CLK_DU1>,
+		 <&osc2_clk>;
+	clock-names = "du.0", "du.1", "dclkin.0";
+	status = "okay";
+
+	ports {
+		port at 0 {
+			endpoint {
+				remote-endpoint = <&adv7513_0_in>;
+			};
+		};
+		port at 1 {
+			endpoint {
+				remote-endpoint = <&adv7513_1_in>;
+			};
+		};
+	};
+};
#15 lore raw

PATCH 1/1 ARM: dts: wheat: add DU support

Quoted 11 lines · Sergei Shtylyov

Define the Wheat board dependent part of the DU device node. Add the device nodes for the Analog Devices ADV7513 HDMI transmitters connected to DU0/1. Add the necessary subnodes to interconnect DU with HDMI transmitters/connectors.

---
This patch is against the 'renesas-devel-20160901-v4.8-rc4' of Simon Horman's 'renesas.git' repo plus the Wheat CAN and SDHI patches posted earlier... The path depends on the 2 DRM patches just posted in order to work correctly!

In principle, both these patches have been queued by the maintainers...
Simon, are you going to wait till they hit media_tree.git? Linus' tree?

MBR, Sergei

#16 lore raw

PATCH 1/1 ARM: dts: wheat: add DU support

Quoted 9 lines · Sergei Shtylyov
Quoted 7 lines · Sergei Shtylyov

Define the Wheat board dependent part of the DU device node. Add the device nodes for the Analog Devices ADV7513 HDMI transmitters connected to DU0/1. Add the necessary subnodes to interconnect DU with HDMI transmitters/connectors.

Quoted 7 lines
Quoted 4 lines

---
This patch is against the 'renesas-devel-20160901-v4.8-rc4' of Simon Horman's 'renesas.git' repo plus the Wheat CAN and SDHI patches posted earlier... The path depends on the 2 DRM patches just posted in order to work correctly!

In principle, both these patches have been queued by the maintainers...
Simon, are you going to wait till they hit media_tree.git? Linus' tree?

I don't think that is necessary. I was waiting for some review. But in any case it looks like this patch no longer applies cleanly. Could you rebase?

#17 lore raw

PATCH v2 1/1 ARM: dts: wheat: add DU support

In reply to Sergei Shtylyov

Define the Wheat board dependent part of the DU device node. Add the device nodes for the Analog Devices ADV7513 HDMI transmitters connected to DU0/1. Add the necessary subnodes to interconnect DU with HDMI transmitters/connectors.

---
The patch is against the 'renesas-devel-20160919-v4.8-rc7' of Simon Horman's 'renesas.git' repo...
The patch depends on the 2 DRM patches (already merged by the maintainers) in order to work correctly.

Changes in version 2:
- refreshed the patch.

 arch/arm/boot/dts/r8a7792-wheat.dts |  126 ++++++++++++++++++++++++++++++++++++
 1 file changed, 126 insertions(+)
arch/arm/boot/dts/r8a7792-wheat.dts +126 -0
Index: renesas/arch/arm/boot/dts/r8a7792-wheat.dts
===================================================================
@@ -86,6 +86,34 @@
 		gpio = <&gpio11 12 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 	};
+
+	hdmi-out0 {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con0: endpoint {
+				remote-endpoint = <&adv7513_0_out>;
+			};
+		};
+	};
+
+	hdmi-out1 {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con1: endpoint {
+				remote-endpoint = <&adv7513_1_out>;
+			};
+		};
+	};
+
+	osc2_clk: osc2 {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <74250000>;
+	};
 };
 
 &extal_clk {
@@ -128,6 +156,16 @@
 		groups = "qspi_ctrl", "qspi_data4";
 		function = "qspi";
 	};
+
+	du0_pins: du0 {
+		groups = "du0_rgb888", "du0_sync", "du0_disp";
+		function = "du0";
+	};
+
+	du1_pins: du1 {
+		groups = "du1_rgb666", "du1_sync", "du1_disp";
+		function = "du1";
+	};
 };
 
 &scif0 {
@@ -196,4 +234,92 @@
 			};
 		};
 	};
+};
+
+&i2c4 {
+	status = "okay";
+	clock-frequency = <400000>;
+
+	hdmi at 3d {
+		compatible = "adi,adv7513";
+		reg = <0x3d>;
+
+		adi,input-depth = <8>;
+		adi,input-colorspace = "rgb";
+		adi,input-clock = "1x";
+		adi,input-style = <1>;
+		adi,input-justification = "evenly";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port at 0 {
+				reg = <0>;
+				adv7513_0_in: endpoint {
+					remote-endpoint = <&du_out_rgb0>;
+				};
+			};
+
+			port at 1 {
+				reg = <1>;
+				adv7513_0_out: endpoint {
+					remote-endpoint = <&hdmi_con0>;
+				};
+			};
+		};
+	};
+
+	hdmi at 39 {
+		compatible = "adi,adv7513";
+		reg = <0x39>;
+
+		adi,input-depth = <8>;
+		adi,input-colorspace = "rgb";
+		adi,input-clock = "1x";
+		adi,input-style = <1>;
+		adi,input-justification = "evenly";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port at 0 {
+				reg = <0>;
+				adv7513_1_in: endpoint {
+					remote-endpoint = <&du_out_rgb1>;
+				};
+			};
+
+			port at 1 {
+				reg = <1>;
+				adv7513_1_out: endpoint {
+					remote-endpoint = <&hdmi_con1>;
+				};
+			};
+		};
+	};
+};
+
+&du {
+	pinctrl-0 = <&du0_pins &du1_pins>;
+	pinctrl-names = "default";
+
+	clocks = <&mstp7_clks R8A7792_CLK_DU0>, <&mstp7_clks R8A7792_CLK_DU1>,
+		 <&osc2_clk>;
+	clock-names = "du.0", "du.1", "dclkin.0";
+	status = "okay";
+
+	ports {
+		port at 0 {
+			endpoint {
+				remote-endpoint = <&adv7513_0_in>;
+			};
+		};
+		port at 1 {
+			endpoint {
+				remote-endpoint = <&adv7513_1_in>;
+			};
+		};
+	};
 };
#18 lore raw

PATCH v2 1/1 ARM: dts: wheat: add DU support

Quoted 6 lines · Sergei Shtylyov

Define the Wheat board dependent part of the DU device node. Add the device nodes for the Analog Devices ADV7513 HDMI transmitters connected to DU0/1. Add the necessary subnodes to interconnect DU with HDMI transmitters/connectors.

Thanks, I have queued this up.