diff mbox

[2/2] ARM: dts: exynos: Add HDMI and Sil9234 to Trats2 board

Message ID 1501746323-5254-3-git-send-email-m.purski@samsung.com (mailing list archive)
State Changes Requested
Headers show

Commit Message

Maciej Purski Aug. 3, 2017, 7:45 a.m. UTC
This patch adds HDMI and Sil9234 MHL converter to Trats2 board.

Based on previous work by:
Tomasz Stanislawski <t.stanislaws@samsung.com>

Signed-off-by: Maciej Purski <m.purski@samsung.com>
---
 arch/arm/boot/dts/exynos4412-trats2.dts | 93 +++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

Comments

Krzysztof Kozlowski Aug. 3, 2017, 7:20 p.m. UTC | #1
On Thu, Aug 03, 2017 at 09:45:23AM +0200, Maciej Purski wrote:
> This patch adds HDMI and Sil9234 MHL converter to Trats2 board.

Just "Add HDMI...", without this patch.

Except few minor nitpicks below, looks good. After fixing I will take it
once bindings got accepted.

> 
> Based on previous work by:
> Tomasz Stanislawski <t.stanislaws@samsung.com>
> 
> Signed-off-by: Maciej Purski <m.purski@samsung.com>
> ---
>  arch/arm/boot/dts/exynos4412-trats2.dts | 93 +++++++++++++++++++++++++++++++++
>  1 file changed, 93 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
> index 35e9b94..39940f6 100644
> --- a/arch/arm/boot/dts/exynos4412-trats2.dts
> +++ b/arch/arm/boot/dts/exynos4412-trats2.dts
> @@ -97,6 +97,16 @@
>  			gpio = <&gpj0 5 GPIO_ACTIVE_HIGH>;
>  			enable-active-high;
>  		};
> +
> +		vsil: voltage-regulator-vsil {
> +			compatible = "regulator-fixed";
> +			regulator-name = "HDMI_5V";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			vin-supply = <&buck7_reg>;

I think the supply is V_BAT, not buck7.

> +		};
>  	};
>  
>  	gpio-keys {
> @@ -229,6 +239,34 @@
>  		};
>  	};
>  
> +	i2c-mhl {
> +		compatible = "i2c-gpio";
> +		gpios = <&gpf0 4 GPIO_ACTIVE_HIGH &gpf0 6 GPIO_ACTIVE_HIGH>;
> +		i2c-gpio,delay-us = <100>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		pinctrl-0 = <&i2c_mhl_bus>;
> +		pinctrl-names = "default";
> +		status = "okay";
> +
> +		sii9234: sii9234@39 {

The name of node should be rather generic (ePAPR: "The name of a node
should be somewhat generic, reflecting the function of the device and
not its precise programming model").

So maybe "sii9234: hdmi-bridge@39"?

> +			compatible = "sil,sii9234";
> +			vcc-supply = <&vsil>;
> +			reset-gpios = <&gpf3 4 GPIO_ACTIVE_HIGH>;
> +			interrupt-parent = <&gpf3>;
> +			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
> +			reg = <0x39>;
> +
> +

One empty line instead of two.

> +			port {
> +				mhl_to_hdmi: endpoint {
> +					remote-endpoint = <&hdmi_to_mhl>;
> +				};
> +			};
> +		};
> +	};
> +
>  	camera: camera {
>  		pinctrl-0 = <&cam_port_a_clk_active &cam_port_b_clk_active>;
>  		pinctrl-names = "default";
> @@ -522,6 +560,31 @@
>  	status = "okay";
>  };
>  
> +&hdmi {
> +	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&hdmi_hpd>;
> +	hdmi-en-supply = <&vsil>;
> +	vdd-supply = <&ldo3_reg>;
> +	vdd_osc-supply = <&ldo4_reg>;
> +	vdd_pll-supply = <&ldo3_reg>;
> +	ddc = <&i2c_5>;
> +	status = "okay";
> +
> +	ports {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		port@1 {
> +			reg = <1>;
> +			hdmi_to_mhl: endpoint {
> +				remote-endpoint = <&mhl_to_hdmi>;
> +			};
> +		};
> +	};
> +

Unnecessary empty line.

> +};
> +
>  &hsotg {
>  	vusb_d-supply = <&ldo15_reg>;
>  	vusb_a-supply = <&ldo12_reg>;
> @@ -600,6 +663,11 @@
>  	};
>  };
>  
> +
> +&i2c_5 {
> +	status = "okay";
> +};

Could you describe more what is on i2c_5 and i2c_8? Is it relevant to
this patch?

> +
>  &i2c_7 {
>  	samsung,i2c-sda-delay = <100>;
>  	samsung,i2c-slave-addr = <0x10>;
> @@ -894,12 +962,20 @@
>  	};
>  };
>  
> +&i2c_8 {
> +	status = "okay";
> +};
> +
>  &i2s0 {
>  	pinctrl-0 = <&i2s0_bus>;
>  	pinctrl-names = "default";
>  	status = "okay";
>  };
>  
> +&mixer {
> +	status = "okay";
> +};
> +
>  &mshc_0 {
>  	num-slots = <1>;
>  	broken-cd;
> @@ -926,6 +1002,18 @@
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&sleep0>;
>  
> +	mhl_int: mhl-int {
> +		samsung,pins = "gpf3-5";
> +		samsung,pin-pud = <0>;

Please use defines from dt-bindings/pinctrl/samsung.h

> +	};
> +
> +	i2c_mhl_bus: i2c-mhl-bus {
> +		samsung,pins = "gpf0-4", "gpf0-6";
> +		samsung,pin-function = <2>;
> +		samsung,pin-pud = <1>;
> +		samsung,pin-drv = <0>;

The same.

Best regards,
Krzysztof
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Marek Szyprowski Aug. 4, 2017, 6:32 a.m. UTC | #2
Hi Krzysztof,

On 2017-08-03 21:20, Krzysztof Kozlowski wrote:
> On Thu, Aug 03, 2017 at 09:45:23AM +0200, Maciej Purski wrote:
>> This patch adds HDMI and Sil9234 MHL converter to Trats2 board.
> Just "Add HDMI...", without this patch.
>
> Except few minor nitpicks below, looks good. After fixing I will take it
> once bindings got accepted.
>
>> Based on previous work by:
>> Tomasz Stanislawski <t.stanislaws@samsung.com>
>>
>> Signed-off-by: Maciej Purski <m.purski@samsung.com>
>> ---
>>   arch/arm/boot/dts/exynos4412-trats2.dts | 93 +++++++++++++++++++++++++++++++++
>>   1 file changed, 93 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
>> index 35e9b94..39940f6 100644
>> --- a/arch/arm/boot/dts/exynos4412-trats2.dts
>> +++ b/arch/arm/boot/dts/exynos4412-trats2.dts
>> @@ -97,6 +97,16 @@
>>   			gpio = <&gpj0 5 GPIO_ACTIVE_HIGH>;
>>   			enable-active-high;
>>   		};
>> +
>> +		vsil: voltage-regulator-vsil {
>> +			compatible = "regulator-fixed";
>> +			regulator-name = "HDMI_5V";
>> +			regulator-min-microvolt = <5000000>;
>> +			regulator-max-microvolt = <5000000>;
>> +			gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
>> +			enable-active-high;
>> +			vin-supply = <&buck7_reg>;
> I think the supply is V_BAT, not buck7.

Well, according to the the schematic, VSIL is derived from VCC_SUB_2.0V
(buck7) by the RP114K121D-TR chip, which is controlled by gpl0-4 (HDMI_EN)
pin.
The only thing that has to be fixed is the voltage value for that regulator.
VSIL is 1.2V and regulator-name should be adjusted too. The HDMI_V5 name
and voltage value seems to be copy/paste error done long time ago...

>> +		};
>>   	};
>>   
>>   	gpio-keys {
>> @@ -229,6 +239,34 @@
>>   		};
>>   	};
>>   
>> +	i2c-mhl {
>> +		compatible = "i2c-gpio";
>> +		gpios = <&gpf0 4 GPIO_ACTIVE_HIGH &gpf0 6 GPIO_ACTIVE_HIGH>;
>> +		i2c-gpio,delay-us = <100>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		pinctrl-0 = <&i2c_mhl_bus>;
>> +		pinctrl-names = "default";
>> +		status = "okay";
>> +
>> +		sii9234: sii9234@39 {
> The name of node should be rather generic (ePAPR: "The name of a node
> should be somewhat generic, reflecting the function of the device and
> not its precise programming model").
>
> So maybe "sii9234: hdmi-bridge@39"?
>
>> +			compatible = "sil,sii9234";
>> +			vcc-supply = <&vsil>;
>> +			reset-gpios = <&gpf3 4 GPIO_ACTIVE_HIGH>;
>> +			interrupt-parent = <&gpf3>;
>> +			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
>> +			reg = <0x39>;
>> +
>> +
> One empty line instead of two.
>
>> +			port {
>> +				mhl_to_hdmi: endpoint {
>> +					remote-endpoint = <&hdmi_to_mhl>;
>> +				};
>> +			};
>> +		};
>> +	};
>> +
>>   	camera: camera {
>>   		pinctrl-0 = <&cam_port_a_clk_active &cam_port_b_clk_active>;
>>   		pinctrl-names = "default";
>> @@ -522,6 +560,31 @@
>>   	status = "okay";
>>   };
>>   
>> +&hdmi {
>> +	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
>> +	pinctrl-names = "default";
>> +	pinctrl-0 = <&hdmi_hpd>;
>> +	hdmi-en-supply = <&vsil>;
>> +	vdd-supply = <&ldo3_reg>;
>> +	vdd_osc-supply = <&ldo4_reg>;
>> +	vdd_pll-supply = <&ldo3_reg>;
>> +	ddc = <&i2c_5>;
>> +	status = "okay";
>> +
>> +	ports {
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		port@1 {
>> +			reg = <1>;
>> +			hdmi_to_mhl: endpoint {
>> +				remote-endpoint = <&mhl_to_hdmi>;
>> +			};
>> +		};
>> +	};
>> +
> Unnecessary empty line.
>
>> +};
>> +
>>   &hsotg {
>>   	vusb_d-supply = <&ldo15_reg>;
>>   	vusb_a-supply = <&ldo12_reg>;
>> @@ -600,6 +663,11 @@
>>   	};
>>   };
>>   
>> +
>> +&i2c_5 {
>> +	status = "okay";
>> +};
> Could you describe more what is on i2c_5 and i2c_8? Is it relevant to
> this patch?

Yes. i2c_5 is used for HDMI DDC and i2c_8 is used for HDMI_PHY. None of
the other exynos*.dts, which enable HDMI has any comment on them...

>> +
>>   &i2c_7 {
>>   	samsung,i2c-sda-delay = <100>;
>>   	samsung,i2c-slave-addr = <0x10>;
>> @@ -894,12 +962,20 @@
>>   	};
>>   };
>>   
>> +&i2c_8 {
>> +	status = "okay";
>> +};
>> +
>>   &i2s0 {
>>   	pinctrl-0 = <&i2s0_bus>;
>>   	pinctrl-names = "default";
>>   	status = "okay";
>>   };
>>   
>> +&mixer {
>> +	status = "okay";
>> +};
>> +
>>   &mshc_0 {
>>   	num-slots = <1>;
>>   	broken-cd;
>> @@ -926,6 +1002,18 @@
>>   	pinctrl-names = "default";
>>   	pinctrl-0 = <&sleep0>;
>>   
>> +	mhl_int: mhl-int {
>> +		samsung,pins = "gpf3-5";
>> +		samsung,pin-pud = <0>;
> Please use defines from dt-bindings/pinctrl/samsung.h
>
>> +	};
>> +
>> +	i2c_mhl_bus: i2c-mhl-bus {
>> +		samsung,pins = "gpf0-4", "gpf0-6";
>> +		samsung,pin-function = <2>;
>> +		samsung,pin-pud = <1>;
>> +		samsung,pin-drv = <0>;
> The same.
>

Best regards
Krzysztof Kozlowski Aug. 4, 2017, 6:44 a.m. UTC | #3
On Fri, Aug 4, 2017 at 8:32 AM, Marek Szyprowski
<m.szyprowski@samsung.com> wrote:
>
> Hi Krzysztof,
>
>
> On 2017-08-03 21:20, Krzysztof Kozlowski wrote:
>>
>> On Thu, Aug 03, 2017 at 09:45:23AM +0200, Maciej Purski wrote:
>>>
>>> This patch adds HDMI and Sil9234 MHL converter to Trats2 board.
>>
>> Just "Add HDMI...", without this patch.
>>
>> Except few minor nitpicks below, looks good. After fixing I will take it
>> once bindings got accepted.
>>
>>> Based on previous work by:
>>> Tomasz Stanislawski <t.stanislaws@samsung.com>
>>>
>>> Signed-off-by: Maciej Purski <m.purski@samsung.com>
>>> ---
>>>   arch/arm/boot/dts/exynos4412-trats2.dts | 93 +++++++++++++++++++++++++++++++++
>>>   1 file changed, 93 insertions(+)
>>>
>>> diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
>>> index 35e9b94..39940f6 100644
>>> --- a/arch/arm/boot/dts/exynos4412-trats2.dts
>>> +++ b/arch/arm/boot/dts/exynos4412-trats2.dts
>>> @@ -97,6 +97,16 @@
>>>                         gpio = <&gpj0 5 GPIO_ACTIVE_HIGH>;
>>>                         enable-active-high;
>>>                 };
>>> +
>>> +               vsil: voltage-regulator-vsil {
>>> +                       compatible = "regulator-fixed";
>>> +                       regulator-name = "HDMI_5V";
>>> +                       regulator-min-microvolt = <5000000>;
>>> +                       regulator-max-microvolt = <5000000>;
>>> +                       gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
>>> +                       enable-active-high;
>>> +                       vin-supply = <&buck7_reg>;
>>
>> I think the supply is V_BAT, not buck7.
>
>
> Well, according to the the schematic, VSIL is derived from VCC_SUB_2.0V
> (buck7) by the RP114K121D-TR chip, which is controlled by gpl0-4 (HDMI_EN)
> pin.
> The only thing that has to be fixed is the voltage value for that regulator.
> VSIL is 1.2V and regulator-name should be adjusted too. The HDMI_V5 name
> and voltage value seems to be copy/paste error done long time ago...
>

OK, thanks for explanation.

(...)

>>
>> Could you describe more what is on i2c_5 and i2c_8? Is it relevant to
>> this patch?
>
>
> Yes. i2c_5 is used for HDMI DDC and i2c_8 is used for HDMI_PHY. None of
> the other exynos*.dts, which enable HDMI has any comment on them...

Actually now I see that this information can be get from the source
(see i2c_8 in exyos4.dtsi and here i2c_5 is used in hdmi node as ddc).
Still it would be nice to see this information for example in commit
message.

Best regards,
Krzysztof

>
>
>>> +
>>>   &i2c_7 {
>>>         samsung,i2c-sda-delay = <100>;
>>>         samsung,i2c-slave-addr = <0x10>;
>>> @@ -894,12 +962,20 @@
>>>         };
>>>   };
>>>   +&i2c_8 {
>>> +       status = "okay";
>>> +};
>>> +
>>>   &i2s0 {
>>>         pinctrl-0 = <&i2s0_bus>;
>>>         pinctrl-names = "default";
>>>         status = "okay";
>>>   };
>>>   +&mixer {
>>> +       status = "okay";
>>> +};
>>> +
>>>   &mshc_0 {
>>>         num-slots = <1>;
>>>         broken-cd;
>>> @@ -926,6 +1002,18 @@
>>>         pinctrl-names = "default";
>>>         pinctrl-0 = <&sleep0>;
>>>   +     mhl_int: mhl-int {
>>> +               samsung,pins = "gpf3-5";
>>> +               samsung,pin-pud = <0>;
>>
>> Please use defines from dt-bindings/pinctrl/samsung.h
>>
>>> +       };
>>> +
>>> +       i2c_mhl_bus: i2c-mhl-bus {
>>> +               samsung,pins = "gpf0-4", "gpf0-6";
>>> +               samsung,pin-function = <2>;
>>> +               samsung,pin-pud = <1>;
>>> +               samsung,pin-drv = <0>;
>>
>> The same.
>>
>
> Best regards
> --
> Marek Szyprowski, PhD
> Samsung R&D Institute Poland
>
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
index 35e9b94..39940f6 100644
--- a/arch/arm/boot/dts/exynos4412-trats2.dts
+++ b/arch/arm/boot/dts/exynos4412-trats2.dts
@@ -97,6 +97,16 @@ 
 			gpio = <&gpj0 5 GPIO_ACTIVE_HIGH>;
 			enable-active-high;
 		};
+
+		vsil: voltage-regulator-vsil {
+			compatible = "regulator-fixed";
+			regulator-name = "HDMI_5V";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+			vin-supply = <&buck7_reg>;
+		};
 	};
 
 	gpio-keys {
@@ -229,6 +239,34 @@ 
 		};
 	};
 
+	i2c-mhl {
+		compatible = "i2c-gpio";
+		gpios = <&gpf0 4 GPIO_ACTIVE_HIGH &gpf0 6 GPIO_ACTIVE_HIGH>;
+		i2c-gpio,delay-us = <100>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-0 = <&i2c_mhl_bus>;
+		pinctrl-names = "default";
+		status = "okay";
+
+		sii9234: sii9234@39 {
+			compatible = "sil,sii9234";
+			vcc-supply = <&vsil>;
+			reset-gpios = <&gpf3 4 GPIO_ACTIVE_HIGH>;
+			interrupt-parent = <&gpf3>;
+			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
+			reg = <0x39>;
+
+
+			port {
+				mhl_to_hdmi: endpoint {
+					remote-endpoint = <&hdmi_to_mhl>;
+				};
+			};
+		};
+	};
+
 	camera: camera {
 		pinctrl-0 = <&cam_port_a_clk_active &cam_port_b_clk_active>;
 		pinctrl-names = "default";
@@ -522,6 +560,31 @@ 
 	status = "okay";
 };
 
+&hdmi {
+	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&hdmi_hpd>;
+	hdmi-en-supply = <&vsil>;
+	vdd-supply = <&ldo3_reg>;
+	vdd_osc-supply = <&ldo4_reg>;
+	vdd_pll-supply = <&ldo3_reg>;
+	ddc = <&i2c_5>;
+	status = "okay";
+
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		port@1 {
+			reg = <1>;
+			hdmi_to_mhl: endpoint {
+				remote-endpoint = <&mhl_to_hdmi>;
+			};
+		};
+	};
+
+};
+
 &hsotg {
 	vusb_d-supply = <&ldo15_reg>;
 	vusb_a-supply = <&ldo12_reg>;
@@ -600,6 +663,11 @@ 
 	};
 };
 
+
+&i2c_5 {
+	status = "okay";
+};
+
 &i2c_7 {
 	samsung,i2c-sda-delay = <100>;
 	samsung,i2c-slave-addr = <0x10>;
@@ -894,12 +962,20 @@ 
 	};
 };
 
+&i2c_8 {
+	status = "okay";
+};
+
 &i2s0 {
 	pinctrl-0 = <&i2s0_bus>;
 	pinctrl-names = "default";
 	status = "okay";
 };
 
+&mixer {
+	status = "okay";
+};
+
 &mshc_0 {
 	num-slots = <1>;
 	broken-cd;
@@ -926,6 +1002,18 @@ 
 	pinctrl-names = "default";
 	pinctrl-0 = <&sleep0>;
 
+	mhl_int: mhl-int {
+		samsung,pins = "gpf3-5";
+		samsung,pin-pud = <0>;
+	};
+
+	i2c_mhl_bus: i2c-mhl-bus {
+		samsung,pins = "gpf0-4", "gpf0-6";
+		samsung,pin-function = <2>;
+		samsung,pin-pud = <1>;
+		samsung,pin-drv = <0>;
+	};
+
 	sleep0: sleep-states {
 		PIN_SLP(gpa0-0, INPUT, NONE);
 		PIN_SLP(gpa0-1, OUT0, NONE);
@@ -1029,6 +1117,11 @@ 
 	pinctrl-names = "default";
 	pinctrl-0 = <&sleep1>;
 
+	hdmi_hpd: hdmi-hpd {
+		samsung,pins = "gpx3-7";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+	};
+
 	sleep1: sleep-states {
 		PIN_SLP(gpk0-0, PREV, NONE);
 		PIN_SLP(gpk0-1, PREV, NONE);