diff mbox series

[v3] arm64: dts: sc7180: add nodes for idp display

Message ID 20200217085842.28333-1-harigovi@codeaurora.org (mailing list archive)
State New, archived
Headers show
Series [v3] arm64: dts: sc7180: add nodes for idp display | expand

Commit Message

Harigovindan P Feb. 17, 2020, 8:58 a.m. UTC
Add nodes for IDP display. The display is Visionox RM69299.

Signed-off-by: Harigovindan P <harigovi@codeaurora.org>
---

Changes in v2:
	- Adding dependency patchwork series
	- Removing suspend configuration
	- Adding blank before space curly brace
Changes in v3:
	- Updating status for mdp and mdss node to get the
	display working
	- Change in commit text

This patch depends on following patchwork series:

https://patchwork.kernel.org/patch/11364687/
https://patchwork.kernel.org/patch/11366303/

 arch/arm64/boot/dts/qcom/sc7180-idp.dts | 63 +++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

Comments

Stephen Boyd June 25, 2020, 1:07 a.m. UTC | #1
Quoting Harigovindan P (2020-02-17 00:58:42)
> diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
> index 388f50ad4fde..349db8fe78a5 100644
> --- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
> +++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
> @@ -232,6 +233,57 @@ vreg_bob: bob {
>         };
>  };
>  
> +&dsi0 {
> +       status = "okay";
> +
> +       vdda-supply = <&vreg_l3c_1p2>;
> +
> +       panel@0 {
> +               compatible = "visionox,rm69299-1080p-display";
> +               reg = <0>;
> +
> +               vdda-supply = <&vreg_l8c_1p8>;
> +               vdd3p3-supply = <&vreg_l18a_2p8>;
> +
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&disp_pins>;
> +
> +               reset-gpios = <&pm6150l_gpio 3 GPIO_ACTIVE_HIGH>;
> +
> +               ports {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       port@0 {
> +                               reg = <0>;
> +                               panel0_in: endpoint {
> +                                       remote-endpoint = <&dsi0_out>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       ports {
> +               port@1 {
> +                       endpoint {
> +                               remote-endpoint = <&panel0_in>;
> +                               data-lanes = <0 1 2 3>;

Is this property needed? If it's the default assumption it would be nice
to omit it so that we don't have to think about it.

> +                       };
> +               };
> +       };
> +};
> +
> +&dsi_phy {
> +       status = "okay";
> +};
> +
> +&mdp {
> +       status = "okay";
> +};
> +
> +&mdss {
> +       status = "okay";
> +};
> +
>  &qspi {
>         status = "okay";
>         pinctrl-names = "default";
> @@ -289,6 +341,17 @@ &usb_1_qmpphy {
>  
>  /* PINCTRL - additions to nodes defined in sc7180.dtsi */
>  
> +&pm6150l_gpio {
> +       disp_pins: disp-pins {

Curious how this works. It looks like PMIC GPIOS are expecting the node
to look like:

	disp_pins: disp-pins {
		pinconf {
			pins = "gpio3";
			function = PMIC_GPIO_FUNC_FUNC1;
			qcom,drive-strength = <PMIC_GPIO_STRENGTH_MED>;
			power-source = <PM6150_GPIO_VPH>;
			bias-disable;
			output-low;
		};

but this doesn't use the macros or the subnode for pinconf. Why? Also,
the PM6150_GPIO_VPH macro doesn't exist.

> +               pins = "gpio3";
> +               function = "func1";
> +               qcom,drive-strength = <2>;
> +               power-source = <0>;
> +               bias-disable;
> +               output-low;
> +       };
> +};
> +
Harigovindan P June 29, 2020, 1:50 p.m. UTC | #2
On 2020-06-25 06:37, Stephen Boyd wrote:
> Quoting Harigovindan P (2020-02-17 00:58:42)
>> diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts 
>> b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
>> index 388f50ad4fde..349db8fe78a5 100644
>> --- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
>> +++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
>> @@ -232,6 +233,57 @@ vreg_bob: bob {
>>         };
>>  };
>> 
>> +&dsi0 {
>> +       status = "okay";
>> +
>> +       vdda-supply = <&vreg_l3c_1p2>;
>> +
>> +       panel@0 {
>> +               compatible = "visionox,rm69299-1080p-display";
>> +               reg = <0>;
>> +
>> +               vdda-supply = <&vreg_l8c_1p8>;
>> +               vdd3p3-supply = <&vreg_l18a_2p8>;
>> +
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&disp_pins>;
>> +
>> +               reset-gpios = <&pm6150l_gpio 3 GPIO_ACTIVE_HIGH>;
>> +
>> +               ports {
>> +                       #address-cells = <1>;
>> +                       #size-cells = <0>;
>> +                       port@0 {
>> +                               reg = <0>;
>> +                               panel0_in: endpoint {
>> +                                       remote-endpoint = <&dsi0_out>;
>> +                               };
>> +                       };
>> +               };
>> +       };
>> +
>> +       ports {
>> +               port@1 {
>> +                       endpoint {
>> +                               remote-endpoint = <&panel0_in>;
>> +                               data-lanes = <0 1 2 3>;
> 
> Is this property needed? If it's the default assumption it would be 
> nice
> to omit it so that we don't have to think about it.
> This property is needed during panel probe. If this is not mentioned 
> here,
mipi_dsi_attach() will fail during panel probe. In dsi_host.c, 
dsi_host_attach()
fails since dsi lanes are greater than msm_host lanes. msm_host lanes 
are updated
as part of dsi_host_parse_dt. If we dont provide data-lanes in dt, it'll 
have default
value and fail in dsi_host_attach().
>> +                       };
>> +               };
>> +       };
>> +};
>> +
>> +&dsi_phy {
>> +       status = "okay";
>> +};
>> +
>> +&mdp {
>> +       status = "okay";
>> +};
>> +
>> +&mdss {
>> +       status = "okay";
>> +};
>> +
>>  &qspi {
>>         status = "okay";
>>         pinctrl-names = "default";
>> @@ -289,6 +341,17 @@ &usb_1_qmpphy {
>> 
>>  /* PINCTRL - additions to nodes defined in sc7180.dtsi */
>> 
>> +&pm6150l_gpio {
>> +       disp_pins: disp-pins {
> 
> Curious how this works. It looks like PMIC GPIOS are expecting the node
> to look like:
> 
> 	disp_pins: disp-pins {
> 		pinconf {
> 			pins = "gpio3";
> 			function = PMIC_GPIO_FUNC_FUNC1;
> 			qcom,drive-strength = <PMIC_GPIO_STRENGTH_MED>;
> 			power-source = <PM6150_GPIO_VPH>;
> 			bias-disable;
> 			output-low;
> 		};
> 
> but this doesn't use the macros or the subnode for pinconf. Why? Also,
> the PM6150_GPIO_VPH macro doesn't exist.
We are discussing with PMIC team to have that macro in the header file.
Will add other macros as part of next version.
> 
>> +               pins = "gpio3";
>> +               function = "func1";
>> +               qcom,drive-strength = <2>;
>> +               power-source = <0>;
>> +               bias-disable;
>> +               output-low;
>> +       };
>> +};
>> +
Stephen Boyd July 20, 2020, 8:24 p.m. UTC | #3
Quoting harigovi@codeaurora.org (2020-06-29 06:50:09)
> On 2020-06-25 06:37, Stephen Boyd wrote:
> > Quoting Harigovindan P (2020-02-17 00:58:42)
> >> diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts 
> >> b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
> >> index 388f50ad4fde..349db8fe78a5 100644
> >> --- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
> >> +++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
> >> @@ -232,6 +233,57 @@ vreg_bob: bob {
[...]
> >> +       ports {
> >> +               port@1 {
> >> +                       endpoint {
> >> +                               remote-endpoint = <&panel0_in>;
> >> +                               data-lanes = <0 1 2 3>;
> > 
> > Is this property needed? If it's the default assumption it would be 
> > nice
> > to omit it so that we don't have to think about it.
> > This property is needed during panel probe. If this is not mentioned 
> > here,
> mipi_dsi_attach() will fail during panel probe. In dsi_host.c, 
> dsi_host_attach()
> fails since dsi lanes are greater than msm_host lanes. msm_host lanes 
> are updated
> as part of dsi_host_parse_dt. If we dont provide data-lanes in dt, it'll 
> have default
> value and fail in dsi_host_attach().

What is the default value? It looks like dsi_host_parse_dt() says it's
using a default but I guess the default is 0 lanes? Why not make it the
normal 4 lanes?
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
index 388f50ad4fde..349db8fe78a5 100644
--- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
+++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
@@ -7,6 +7,7 @@ 
 
 /dts-v1/;
 
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 #include "sc7180.dtsi"
 #include "pm6150.dtsi"
@@ -232,6 +233,57 @@  vreg_bob: bob {
 	};
 };
 
+&dsi0 {
+	status = "okay";
+
+	vdda-supply = <&vreg_l3c_1p2>;
+
+	panel@0 {
+		compatible = "visionox,rm69299-1080p-display";
+		reg = <0>;
+
+		vdda-supply = <&vreg_l8c_1p8>;
+		vdd3p3-supply = <&vreg_l18a_2p8>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&disp_pins>;
+
+		reset-gpios = <&pm6150l_gpio 3 GPIO_ACTIVE_HIGH>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			port@0 {
+				reg = <0>;
+				panel0_in: endpoint {
+					remote-endpoint = <&dsi0_out>;
+				};
+			};
+		};
+	};
+
+	ports {
+		port@1 {
+			endpoint {
+				remote-endpoint = <&panel0_in>;
+				data-lanes = <0 1 2 3>;
+			};
+		};
+	};
+};
+
+&dsi_phy {
+	status = "okay";
+};
+
+&mdp {
+	status = "okay";
+};
+
+&mdss {
+	status = "okay";
+};
+
 &qspi {
 	status = "okay";
 	pinctrl-names = "default";
@@ -289,6 +341,17 @@  &usb_1_qmpphy {
 
 /* PINCTRL - additions to nodes defined in sc7180.dtsi */
 
+&pm6150l_gpio {
+	disp_pins: disp-pins {
+		pins = "gpio3";
+		function = "func1";
+		qcom,drive-strength = <2>;
+		power-source = <0>;
+		bias-disable;
+		output-low;
+	};
+};
+
 &qspi_clk {
 	pinconf {
 		pins = "gpio63";