Skip to contentSkip to conversation

ARM: tegra: HDMI and DSI updates

PATCH New Thierry Reding 2 participants 9 messages Apr 25, 2014 – Apr 28, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover ARM: tegra: HDMI and DSI updates

From: Thierry Reding <[email protected]>

This series enables support for HDMI on Venice2 and Jetson TK1. It also adds the missing +5V regulators for Harmony, Beaver and Dalmore. Other boards may also need similar changes, but I don't have access to them. That said existing boards should continue to work without modifications since we were completely ignoring the +5V regulator before. So the only change that this should introduce is that perhaps some additional power can be saved because the +5V regulator now isn't always on.

The final patch in this series hooks up the DSI power supply on Dalmore so that it can also be switched of if not used.

Note that I have only an A05 Dalmore and from what I can tell there have been some changes from A04 (the one supported by the upstream kernel) and A05 regarding HDMI, so it'd be great if somebody could test these changes (on top of a recent linux-next) on an A04 Dalmore to make sure they work there.

Thierry

Thierry Reding (7):
ARM: tegra: Add Tegra124 HDMI support
ARM: tegra: venice2 - Enable HDMI
ARM: tegra: jetson-tk1 - Enable HDMI support
ARM: tegra: harmony - Add +5V HDMI supply
ARM: tegra: beaver - Add +5V HDMI supply
ARM: tegra: dalmore - Add +5V HDMI supply
ARM: tegra: dalmore - Add DSI power supply

 arch/arm/boot/dts/tegra114-dalmore.dts    | 20 ++++++++++++----
 arch/arm/boot/dts/tegra124-jetson-tk1.dts | 39 +++++++++++++++++++++++++++++--
 arch/arm/boot/dts/tegra124-venice2.dts    | 37 +++++++++++++++++++++++++++--
 arch/arm/boot/dts/tegra124.dtsi           | 12 ++++++++++
 arch/arm/boot/dts/tegra20-harmony.dts     | 12 ++++++++++
 arch/arm/boot/dts/tegra30-beaver.dts      | 12 ++++++++++
 6 files changed, 123 insertions(+), 9 deletions(-)
Signature · 1 line
1.9.2
#1 lore raw

PATCH 1/7 ARM: tegra: Add Tegra124 HDMI support

From: Thierry Reding <[email protected]>

Add a device node for the HDMI controller found on Tegra124.

---
 arch/arm/boot/dts/tegra124.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/arm/boot/dts/tegra124.dtsi +12 -0
index cf45a1a39483..197e8481a659 100644
@@ -51,6 +51,18 @@
 			nvidia,head = <1>;
 		};
 
+		hdmi at 0,54280000 {
+			compatible = "nvidia,tegra124-hdmi";
+			reg = <0x0 0x54280000 0x0 0x00040000>;
+			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&tegra_car TEGRA124_CLK_HDMI>,
+				 <&tegra_car TEGRA124_CLK_PLL_D2_OUT0>;
+			clock-names = "hdmi", "parent";
+			resets = <&tegra_car 51>;
+			reset-names = "hdmi";
+			status = "disabled";
+		};
+
 		sor at 0,54540000 {
 			compatible = "nvidia,tegra124-sor";
 			reg = <0x0 0x54540000 0x0 0x00040000>;
Signature · 1 line
1.9.2
#2 lore raw

PATCH 2/7 ARM: tegra: venice2 - Enable HDMI

In reply to Thierry Reding

From: Thierry Reding <[email protected]>

Add HDMI +5V, VDD and PLL regulators and enable the DDC I2C controller. Enable the HDMI device, provide the power supplies as well as the DDC adapter and use the standard pin (PN7) for hotplug detection.

---
 arch/arm/boot/dts/tegra124-venice2.dts | 37 ++++++++++++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)
arch/arm/boot/dts/tegra124-venice2.dts +35 -2
index 6770e2bdf226..84a6ec039e1d 100644
@@ -17,6 +17,18 @@
 	};
 
 	host1x at 0,50000000 {
+		hdmi at 0,54280000 {
+			status = "okay";
+
+			vdd-supply = <&vdd_3v3_hdmi>;
+			pll-supply = <&vdd_hdmi_pll>;
+			hdmi-supply = <&vdd_5v0_hdmi>;
+
+			nvidia,ddc-i2c-bus = <&hdmi_ddc>;
+			nvidia,hpd-gpio =
+				<&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
+		};
+
 		sor at 0,54540000 {
 			status = "okay";
 
@@ -601,7 +613,7 @@
 		clock-frequency = <100000>;
 	};
 
-	i2c at 0,7000c700 {
+	hdmi_ddc: i2c at 0,7000c700 {
 		status = "okay";
 		clock-frequency = <100000>;
 	};
@@ -700,7 +712,7 @@
 					regulator-boot-on;
 				};
 
-				sd4 {
+				vdd_1v05_run: sd4 {
 					regulator-name = "+1.05V_RUN";
 					regulator-min-microvolt = <1050000>;
 					regulator-max-microvolt = <1050000>;
@@ -1147,6 +1159,27 @@
 			enable-active-high;
 			vin-supply = <&vdd_3v3_sys>;
 		};
+
+		vdd_hdmi_pll: regulator at 11 {
+			compatible = "regulator-fixed";
+			reg = <11>;
+			regulator-name = "+1.05V_RUN_AVDD_HDMI_PLL";
+			regulator-min-microvolt = <1050000>;
+			regulator-max-microvolt = <1050000>;
+			gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_LOW>;
+			vin-supply = <&vdd_1v05_run>;
+		};
+
+		vdd_5v0_hdmi: regulator at 12 {
+			compatible = "regulator-fixed";
+			reg = <12>;
+			regulator-name = "+5V_HDMI_CON";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_5v0_sys>;
+		};
 	};
 
 	sound {
Signature · 1 line
1.9.2
#3 lore raw

PATCH 3/7 ARM: tegra: jetson-tk1 - Enable HDMI support

In reply to Thierry Reding

From: Thierry Reding <[email protected]>

Add HDMI +5V, VDD and PLL regulators and enable the DDC I2C controller. Enable the HDMI device, provide the power supplies as well as the DDC adapter and use pin the standard pin (PN7) for hotplug detection.

---
 arch/arm/boot/dts/tegra124-jetson-tk1.dts | 39 +++++++++++++++++++++++++++++--
 1 file changed, 37 insertions(+), 2 deletions(-)
arch/arm/boot/dts/tegra124-jetson-tk1.dts +37 -2
index dd3076d94727..e30a5778f675 100644
@@ -16,6 +16,20 @@
 		reg = <0x0 0x80000000 0x0 0x80000000>;
 	};
 
+	host1x at 0,50000000 {
+		hdmi at 0,54280000 {
+			status = "okay";
+
+			hdmi-supply = <&vdd_5v0_hdmi>;
+			pll-supply = <&vdd_hdmi_pll>;
+			vdd-supply = <&vdd_3v3_hdmi>;
+
+			nvidia,ddc-i2c-bus = <&hdmi_ddc>;
+			nvidia,hpd-gpio =
+				<&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
+		};
+	};
+
 	pinmux: pinmux at 0,70000868 {
 		pinctrl-names = "default";
 		pinctrl-0 = <&state_default>;
@@ -1382,7 +1396,7 @@
 	};
 
 	/* HDMI DDC */
-	i2c at 0,7000c700 {
+	hdmi_ddc: i2c at 0,7000c700 {
 		status = "okay";
 		clock-frequency = <100000>;
 	};
@@ -1477,7 +1491,7 @@
 					regulator-boot-on;
 				};
 
-				sd4 {
+				vdd_1v05_run: sd4 {
 					regulator-name = "+1.05V_RUN";
 					regulator-min-microvolt = <1050000>;
 					regulator-max-microvolt = <1050000>;
@@ -1765,6 +1779,27 @@
 			enable-active-high;
 			vin-supply = <&vdd_3v3_sys>;
 		};
+
+		vdd_hdmi_pll: regulator at 11 {
+			compatible = "regulator-fixed";
+			reg = <11>;
+			regulator-name = "+1.05V_RUN_AVDD_HDMI_PLL";
+			regulator-min-microvolt = <1050000>;
+			regulator-max-microvolt = <1050000>;
+			gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_LOW>;
+			vin-supply = <&vdd_1v05_run>;
+		};
+
+		vdd_5v0_hdmi: regulator at 12 {
+			compatible = "regulator-fixed";
+			reg = <12>;
+			regulator-name = "+5V_HDMI_CON";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_5v0_sys>;
+		};
 	};
 
 	sound {
Signature · 1 line
1.9.2
#4 lore raw

PATCH 4/7 ARM: tegra: harmony - Add +5V HDMI supply

In reply to Thierry Reding

From: Thierry Reding <[email protected]>

This supply controls the +5V pin on the HDMI connector, which in turn is used by attached sinks to return the hotplug detect signal.

---
 arch/arm/boot/dts/tegra20-harmony.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/arm/boot/dts/tegra20-harmony.dts +12 -0
index 650daf16c37b..1f4469549c03 100644
@@ -28,6 +28,7 @@
 		hdmi at 54280000 {
 			status = "okay";
 
+			hdmi-supply = <&vdd_5v0_hdmi>;
 			vdd-supply = <&hdmi_vdd_reg>;
 			pll-supply = <&hdmi_pll_reg>;
 
@@ -724,6 +725,17 @@
 			gpio = <&gpio TEGRA_GPIO(W, 0) GPIO_ACTIVE_HIGH>;
 			enable-active-high;
 		};
+
+		vdd_5v0_hdmi: regulator at 6 {
+			compatible = "regulator-fixed";
+			reg = <6>;
+			regulator-name = "VDDIO_HDMI";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(T, 2) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&vdd_5v0_reg>;
+		};
 	};
 
 	sound {
Signature · 1 line
1.9.2
#5 lore raw

PATCH 5/7 ARM: tegra: beaver - Add +5V HDMI supply

In reply to Thierry Reding

From: Thierry Reding <[email protected]>

This supply controls the +5V pin on the HDMI connector, which in turn is used by attached sinks to return the hotplug detect signal.

---
 arch/arm/boot/dts/tegra30-beaver.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/arm/boot/dts/tegra30-beaver.dts +12 -0
index e7a9da968f3b..7365e866540b 100644
@@ -40,6 +40,7 @@
 		hdmi at 54280000 {
 			status = "okay";
 
+			hdmi-supply = <&vdd_5v0_hdmi>;
 			vdd-supply = <&sys_3v3_reg>;
 			pll-supply = <&vio_reg>;
 
@@ -478,6 +479,17 @@
 			gpio = <&gpio TEGRA_GPIO(L, 7) GPIO_ACTIVE_HIGH>;
 			vin-supply = <&sys_3v3_reg>;
 		};
+
+		vdd_5v0_hdmi: regulator at 8 {
+			compatible = "regulator-fixed";
+			reg = <8>;
+			regulator-name = "+VDD_5V_HDMI";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			regulator-always-on;
+			regulator-boot-on;
+			vin-supply = <&sys_3v3_reg>;
+		};
 	};
 
 	sound {
Signature · 1 line
1.9.2
#6 lore raw

PATCH 6/7 ARM: tegra: dalmore - Add +5V HDMI supply

In reply to Thierry Reding

From: Thierry Reding <[email protected]>

This supply controls the +5V pin on the HDMI connector, which in turn is used by attached sinks to return the hotplug detect signal.

---
Note: Unfortunately I do have an A05 Dalmore, and from what I can tell HDMI is actually one of the areas where there have been changes between A04 and A05. It'd be great if somebody could check that this actually works. Also note that it requires Tegra DRM patches that are currently in linux-next to enable the +5V regulator.

 arch/arm/boot/dts/tegra114-dalmore.dts | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
arch/arm/boot/dts/tegra114-dalmore.dts +12 -2
index df22dfad7db7..1309c75c821c 100644
@@ -25,6 +25,7 @@
 		hdmi at 54280000 {
 			status = "okay";
 
+			hdmi-supply = <&vdd_5v0_hdmi>;
 			vdd-supply = <&vdd_hdmi_reg>;
 			pll-supply = <&palmas_smps3_reg>;
 
@@ -1231,8 +1232,6 @@
 			regulator-name = "vdd_hdmi_5v0";
 			regulator-min-microvolt = <5000000>;
 			regulator-max-microvolt = <5000000>;
-			enable-active-high;
-			gpio = <&gpio TEGRA_GPIO(K, 1) GPIO_ACTIVE_HIGH>;
 			vin-supply = <&tps65090_dcdc1_reg>;
 		};
 
@@ -1245,6 +1244,17 @@
 			enable-active-high;
 			gpio = <&palmas_gpio 6 0>;
 		};
+
+		vdd_5v0_hdmi: regulator at 7 {
+			compatible = "regulator-fixed";
+			reg = <7>;
+			regulator-name = "VDD_5V0_HDMI_CON";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio TEGRA_GPIO(K, 1) GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&tps65090_dcdc1_reg>;
+		};
 	};
 
 	sound {
Signature · 1 line
1.9.2
#7 lore raw

PATCH 7/7 ARM: tegra: dalmore - Add DSI power supply

In reply to Thierry Reding

From: Thierry Reding <[email protected]>

The 1.2V supply for CSI and DSI was previously marked always-on. This is suboptimal because it prevents the supply from being disabled when there is no activity in the display or capture paths that it powers.

Hook up the regulator to the DSI output and mark it as not always-on, so that it will only be enabled when DSI actually needs it.

---
 arch/arm/boot/dts/tegra114-dalmore.dts | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
arch/arm/boot/dts/tegra114-dalmore.dts +3 -3
index 1309c75c821c..9cd09b63b900 100644
@@ -37,6 +37,8 @@
 		dsi at 54300000 {
 			status = "okay";
 
+			avdd-dsi-csi-supply = <&avdd_1v2_reg>;
+
 			panel at 0 {
 				compatible = "panasonic,vvx10f004b00",
 					     "simple-panel";
@@ -983,12 +985,10 @@
 						regulator-max-microvolt = <2800000>;
 					};
 
-					ldo3 {
+					avdd_1v2_reg: ldo3 {
 						regulator-name = "avdd-dsi-csi";
 						regulator-min-microvolt = <1200000>;
 						regulator-max-microvolt = <1200000>;
-						regulator-always-on;
-						regulator-boot-on;
 					};
 
 					ldo4 {
Signature · 1 line
1.9.2
#8 lore raw

cover ARM: tegra: HDMI and DSI updates

In reply to Thierry Reding
Quoted 10 lines · Thierry Reding

From: Thierry Reding <[email protected]>

This series enables support for HDMI on Venice2 and Jetson TK1. It also adds the missing +5V regulators for Harmony, Beaver and Dalmore. Other boards may also need similar changes, but I don't have access to them. That said existing boards should continue to work without modifications since we were completely ignoring the +5V regulator before. So the only change that this should introduce is that perhaps some additional power can be saved because the +5V regulator now isn't always on.

Quoted 2 lines

The final patch in this series hooks up the DSI power supply on Dalmore so that it can also be switched of if not used.

I've applied the series to Tegra's for-3.16/dt branch.