[2/4] arm64: dts: qcom: sm6115p-j606f: Hook up display

Message ID 20230620-topic-gpu_tablet_disp-v1-2-7bb02bec8dc0@linaro.org
State New
Headers
Series A610 enablement, J606F display |

Commit Message

Konrad Dybcio June 20, 2023, 1:17 p.m. UTC
  Enable the required nodes, add the required pins and tweak a
regulator to enable non-simplefb display on the Tab P11.

Do note that there exists a second SKU with a different panel+touch
combo, but due to insufficient information, that will need to be
handled separately.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts | 57 +++++++++++++++++++++--
 1 file changed, 52 insertions(+), 5 deletions(-)
  

Comments

Dmitry Baryshkov June 20, 2023, 3:52 p.m. UTC | #1
On 20/06/2023 16:17, Konrad Dybcio wrote:
> Enable the required nodes, add the required pins and tweak a
> regulator to enable non-simplefb display on the Tab P11.
> 
> Do note that there exists a second SKU with a different panel+touch
> combo, but due to insufficient information, that will need to be
> handled separately.
> 
> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>   arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts | 57 +++++++++++++++++++++--
>   1 file changed, 52 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> index 81fdcaf48926..a10ce676bd44 100644
> --- a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> +++ b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> @@ -65,9 +65,41 @@ ramoops@ffc00000 {
>   	};
>   };
>   
> -&dispcc {
> -	/* HACK: disable until a panel driver is ready to retain simplefb */
> -	status = "disabled";
> +&mdss {
> +	status = "okay";
> +};
> +
> +&mdss_dsi0 {
> +	vdda-supply = <&pm6125_l18>;
> +	status = "okay";
> +
> +	panel: panel@0 {
> +		compatible = "lenovo,j606f-boe-nt36523w", "novatek,nt36523w";
> +		reg = <0>;
> +
> +		reset-gpios = <&tlmm 82 GPIO_ACTIVE_LOW>;
> +		vddio-supply = <&pm6125_l9>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&te_active &sde_dsi_active>;
> +
> +		rotation = <180>; /* Yep, it's mounted upside down! */
> +
> +		port {
> +			panel_in: endpoint {
> +				remote-endpoint = <&mdss_dsi0_out>;
> +			};
> +		};
> +	};
> +};
> +
> +&mdss_dsi0_out {
> +	data-lanes = <0 1 2 3>;
> +	remote-endpoint = <&panel_in>;
> +};
> +
> +&mdss_dsi0_phy {
> +	status = "okay";
>   };
>   
>   &pm6125_gpios {
> @@ -212,8 +244,9 @@ pm6125_l17: l17 {
>   		};
>   
>   		pm6125_l18: l18 {
> -			regulator-min-microvolt = <1104000>;
> -			regulator-max-microvolt = <1312000>;
> +			/* 1.104V-1.312V fixed @ 1.232V for DSIPHY */
> +			regulator-min-microvolt = <1232000>;
> +			regulator-max-microvolt = <1232000>;
>   		};
>   
>   		pm6125_l19: l19 {
> @@ -282,6 +315,20 @@ sdc2_gate_pin: sdc2-gate-state {
>   		bias-pull-up;
>   		output-high;
>   	};
> +
> +	te_active: te-active-state {
> +		pins = "gpio81";
> +		function = "mdp_vsync";
> +		drive-strength = <2>;
> +		bias-pull-down;
> +	};
> +
> +	sde_dsi_active: te-active-state {

mdss_dsi_active? Or just dsi_active?

> +		pins = "gpio82";
> +		function = "gpio";
> +		drive-strength = <8>;
> +		bias-disable;
> +	};
>   };
>   
>   &ufs_mem_hc {
>
  
Konrad Dybcio June 20, 2023, 7:02 p.m. UTC | #2
On 20.06.2023 17:52, Dmitry Baryshkov wrote:
> On 20/06/2023 16:17, Konrad Dybcio wrote:
>> Enable the required nodes, add the required pins and tweak a
>> regulator to enable non-simplefb display on the Tab P11.
>>
>> Do note that there exists a second SKU with a different panel+touch
>> combo, but due to insufficient information, that will need to be
>> handled separately.
>>
>> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
>> ---
>>   arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts | 57 +++++++++++++++++++++--
>>   1 file changed, 52 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
>> index 81fdcaf48926..a10ce676bd44 100644
>> --- a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
>> +++ b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
>> @@ -65,9 +65,41 @@ ramoops@ffc00000 {
>>       };
>>   };
>>   -&dispcc {
>> -    /* HACK: disable until a panel driver is ready to retain simplefb */
>> -    status = "disabled";
>> +&mdss {
>> +    status = "okay";
>> +};
>> +
>> +&mdss_dsi0 {
>> +    vdda-supply = <&pm6125_l18>;
>> +    status = "okay";
>> +
>> +    panel: panel@0 {
>> +        compatible = "lenovo,j606f-boe-nt36523w", "novatek,nt36523w";
>> +        reg = <0>;
>> +
>> +        reset-gpios = <&tlmm 82 GPIO_ACTIVE_LOW>;
>> +        vddio-supply = <&pm6125_l9>;
>> +
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&te_active &sde_dsi_active>;
>> +
>> +        rotation = <180>; /* Yep, it's mounted upside down! */
>> +
>> +        port {
>> +            panel_in: endpoint {
>> +                remote-endpoint = <&mdss_dsi0_out>;
>> +            };
>> +        };
>> +    };
>> +};
>> +
>> +&mdss_dsi0_out {
>> +    data-lanes = <0 1 2 3>;
>> +    remote-endpoint = <&panel_in>;
>> +};
>> +
>> +&mdss_dsi0_phy {
>> +    status = "okay";
>>   };
>>     &pm6125_gpios {
>> @@ -212,8 +244,9 @@ pm6125_l17: l17 {
>>           };
>>             pm6125_l18: l18 {
>> -            regulator-min-microvolt = <1104000>;
>> -            regulator-max-microvolt = <1312000>;
>> +            /* 1.104V-1.312V fixed @ 1.232V for DSIPHY */
>> +            regulator-min-microvolt = <1232000>;
>> +            regulator-max-microvolt = <1232000>;
>>           };
>>             pm6125_l19: l19 {
>> @@ -282,6 +315,20 @@ sdc2_gate_pin: sdc2-gate-state {
>>           bias-pull-up;
>>           output-high;
>>       };
>> +
>> +    te_active: te-active-state {
>> +        pins = "gpio81";
>> +        function = "mdp_vsync";
>> +        drive-strength = <2>;
>> +        bias-pull-down;
>> +    };
>> +
>> +    sde_dsi_active: te-active-state {
> 
> mdss_dsi_active? Or just dsi_active?
mdss is ok

Also Marijn pointed out in private that this node overwrites
the previous one.. Thankfully video mode panels don't care about
TE! :D

Konrad
> 
>> +        pins = "gpio82";
>> +        function = "gpio";
>> +        drive-strength = <8>;
>> +        bias-disable;
>> +    };
>>   };
>>     &ufs_mem_hc {
>>
>
  
Marijn Suijten June 21, 2023, 7:02 p.m. UTC | #3
On 2023-06-20 21:02:20, Konrad Dybcio wrote:
> On 20.06.2023 17:52, Dmitry Baryshkov wrote:
> > On 20/06/2023 16:17, Konrad Dybcio wrote:
> >> Enable the required nodes, add the required pins and tweak a
> >> regulator to enable non-simplefb display on the Tab P11.
> >>
> >> Do note that there exists a second SKU with a different panel+touch
> >> combo, but due to insufficient information, that will need to be
> >> handled separately.
> >>
> >> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> >> ---
> >>   arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts | 57 +++++++++++++++++++++--
> >>   1 file changed, 52 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> >> index 81fdcaf48926..a10ce676bd44 100644
> >> --- a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> >> +++ b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> >> @@ -65,9 +65,41 @@ ramoops@ffc00000 {
> >>       };
> >>   };
> >>   -&dispcc {
> >> -    /* HACK: disable until a panel driver is ready to retain simplefb */
> >> -    status = "disabled";
> >> +&mdss {
> >> +    status = "okay";
> >> +};
> >> +
> >> +&mdss_dsi0 {
> >> +    vdda-supply = <&pm6125_l18>;
> >> +    status = "okay";
> >> +
> >> +    panel: panel@0 {
> >> +        compatible = "lenovo,j606f-boe-nt36523w", "novatek,nt36523w";
> >> +        reg = <0>;
> >> +
> >> +        reset-gpios = <&tlmm 82 GPIO_ACTIVE_LOW>;
> >> +        vddio-supply = <&pm6125_l9>;
> >> +
> >> +        pinctrl-names = "default";
> >> +        pinctrl-0 = <&te_active &sde_dsi_active>;
> >> +
> >> +        rotation = <180>; /* Yep, it's mounted upside down! */
> >> +
> >> +        port {
> >> +            panel_in: endpoint {
> >> +                remote-endpoint = <&mdss_dsi0_out>;
> >> +            };
> >> +        };
> >> +    };
> >> +};
> >> +
> >> +&mdss_dsi0_out {
> >> +    data-lanes = <0 1 2 3>;
> >> +    remote-endpoint = <&panel_in>;
> >> +};
> >> +
> >> +&mdss_dsi0_phy {
> >> +    status = "okay";
> >>   };
> >>     &pm6125_gpios {
> >> @@ -212,8 +244,9 @@ pm6125_l17: l17 {
> >>           };
> >>             pm6125_l18: l18 {
> >> -            regulator-min-microvolt = <1104000>;
> >> -            regulator-max-microvolt = <1312000>;
> >> +            /* 1.104V-1.312V fixed @ 1.232V for DSIPHY */
> >> +            regulator-min-microvolt = <1232000>;
> >> +            regulator-max-microvolt = <1232000>;
> >>           };
> >>             pm6125_l19: l19 {
> >> @@ -282,6 +315,20 @@ sdc2_gate_pin: sdc2-gate-state {
> >>           bias-pull-up;
> >>           output-high;
> >>       };
> >> +
> >> +    te_active: te-active-state {
> >> +        pins = "gpio81";
> >> +        function = "mdp_vsync";
> >> +        drive-strength = <2>;
> >> +        bias-pull-down;
> >> +    };
> >> +
> >> +    sde_dsi_active: te-active-state {
> > 
> > mdss_dsi_active? Or just dsi_active?
> mdss is ok
> 
> Also Marijn pointed out in private that this node overwrites
> the previous one.. Thankfully video mode panels don't care about
> TE! :D

You're welcome!

(Why set this pin to mdp_vsync if the MDP won't read it, though?)

- Marijn

> 
> Konrad
> > 
> >> +        pins = "gpio82";
> >> +        function = "gpio";
> >> +        drive-strength = <8>;
> >> +        bias-disable;
> >> +    };
> >>   };
> >>     &ufs_mem_hc {
> >>
> >
  

Patch

diff --git a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
index 81fdcaf48926..a10ce676bd44 100644
--- a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
+++ b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
@@ -65,9 +65,41 @@  ramoops@ffc00000 {
 	};
 };
 
-&dispcc {
-	/* HACK: disable until a panel driver is ready to retain simplefb */
-	status = "disabled";
+&mdss {
+	status = "okay";
+};
+
+&mdss_dsi0 {
+	vdda-supply = <&pm6125_l18>;
+	status = "okay";
+
+	panel: panel@0 {
+		compatible = "lenovo,j606f-boe-nt36523w", "novatek,nt36523w";
+		reg = <0>;
+
+		reset-gpios = <&tlmm 82 GPIO_ACTIVE_LOW>;
+		vddio-supply = <&pm6125_l9>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&te_active &sde_dsi_active>;
+
+		rotation = <180>; /* Yep, it's mounted upside down! */
+
+		port {
+			panel_in: endpoint {
+				remote-endpoint = <&mdss_dsi0_out>;
+			};
+		};
+	};
+};
+
+&mdss_dsi0_out {
+	data-lanes = <0 1 2 3>;
+	remote-endpoint = <&panel_in>;
+};
+
+&mdss_dsi0_phy {
+	status = "okay";
 };
 
 &pm6125_gpios {
@@ -212,8 +244,9 @@  pm6125_l17: l17 {
 		};
 
 		pm6125_l18: l18 {
-			regulator-min-microvolt = <1104000>;
-			regulator-max-microvolt = <1312000>;
+			/* 1.104V-1.312V fixed @ 1.232V for DSIPHY */
+			regulator-min-microvolt = <1232000>;
+			regulator-max-microvolt = <1232000>;
 		};
 
 		pm6125_l19: l19 {
@@ -282,6 +315,20 @@  sdc2_gate_pin: sdc2-gate-state {
 		bias-pull-up;
 		output-high;
 	};
+
+	te_active: te-active-state {
+		pins = "gpio81";
+		function = "mdp_vsync";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	sde_dsi_active: te-active-state {
+		pins = "gpio82";
+		function = "gpio";
+		drive-strength = <8>;
+		bias-disable;
+	};
 };
 
 &ufs_mem_hc {