diff mbox series

[2/2] arm64: dts: qcom: qcm6490-idp: add display and panel

Message ID 20240116094935.9988-3-quic_riteshk@quicinc.com
State New
Headers show
Series None | expand

Commit Message

Ritesh Kumar Jan. 16, 2024, 9:49 a.m. UTC
Enable Display Subsystem with Novatek NT36672E Panel
on qcm6490 idp platform.

Signed-off-by: Ritesh Kumar <quic_riteshk@quicinc.com>
---
 arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 100 +++++++++++++++++++++++
 1 file changed, 100 insertions(+)

Comments

Ritesh Kumar Jan. 23, 2024, 12:43 p.m. UTC | #1
On 1/16/2024 3:28 PM, Dmitry Baryshkov wrote:

> On Tue, 16 Jan 2024 at 11:49, Ritesh Kumar <quic_riteshk@quicinc.com> wrote:
>> Enable Display Subsystem with Novatek NT36672E Panel
>> on qcm6490 idp platform.
> Is this panel always present on the IDP board or is it an optional
> addon, like the panels for all the RBn boards?

This panel is always present on the IDP board.

>> Signed-off-by: Ritesh Kumar <quic_riteshk@quicinc.com>
>> ---
>>   arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 100 +++++++++++++++++++++++
>>   1 file changed, 100 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>> index 2a6e4907c5ee..efa5252130a1 100644
>> --- a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>> +++ b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>> @@ -9,6 +9,7 @@
>>   #define PM7250B_SID 8
>>   #define PM7250B_SID1 9
>>
>> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
>>   #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>>   #include "sc7280.dtsi"
>>   #include "pm7250b.dtsi"
>> @@ -38,6 +39,25 @@
>>                  stdout-path = "serial0:115200n8";
>>          };
>>
>> +       lcd_disp_bias: lcd-disp-bias-regulator {
>> +               compatible = "regulator-fixed";
>> +               regulator-name = "lcd_disp_bias";
>> +               regulator-min-microvolt = <5500000>;
>> +               regulator-max-microvolt = <5500000>;
>> +               gpio = <&pm7250b_gpios 2 GPIO_ACTIVE_HIGH>;
>> +               enable-active-high;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&lcd_disp_bias_en>;
>> +       };
>> +
>> +       pm8350c_pwm_backlight: backlight {
>> +               compatible = "pwm-backlight";
>> +               pwms = <&pm8350c_pwm 3 65535>;
>> +               enable-gpios = <&pm8350c_gpios 7 GPIO_ACTIVE_HIGH>;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&pmic_lcd_bl_en>;
>> +       };
>> +
>>          reserved-memory {
>>                  xbl_mem: xbl@80700000 {
>>                          reg = <0x0 0x80700000 0x0 0x100000>;
>> @@ -420,6 +440,86 @@
>>          };
>>   };
>>
>> +&gpu {
>> +       status = "disabled";
>> +};
>> +
>> +&mdss {
>> +       status = "okay";
>> +};
>> +
>> +&mdss_dsi {
>> +       vdda-supply = <&vreg_l6b_1p2>;
>> +       status = "okay";
>> +
>> +       panel@0 {
>> +               compatible = "novatek,nt36672e";
>> +               reg = <0>;
>> +
>> +               reset-gpios = <&tlmm 44 GPIO_ACTIVE_HIGH>;
>> +
>> +               vddi-supply = <&vreg_l8c_1p62>;
>> +               avdd-supply = <&lcd_disp_bias>;
>> +               avee-supply = <&lcd_disp_bias>;
>> +
>> +               backlight = <&pm8350c_pwm_backlight>;
>> +
>> +               port {
>> +                       panel0_in: endpoint {
>> +                               remote-endpoint = <&mdss_dsi0_out>;
>> +                       };
>> +               };
>> +       };
>> +};
>> +
>> +&mdss_dsi0_out {
>> +       remote-endpoint = <&panel0_in>;
>> +       data-lanes = <0 1 2 3>;
>> +};
>> +
>> +&mdss_dsi_phy {
>> +       vdds-supply = <&vreg_l10c_0p88>;
>> +       status = "okay";
>> +};
>> +
>> +&pm7250b_gpios {
>> +       lcd_disp_bias_en: lcd-disp-bias-en-state {
>> +               pins = "gpio2";
>> +               function = "func1";
>> +               bias-disable;
>> +               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
>> +               input-disable;
>> +               output-enable;
>> +               power-source = <0>;
>> +       };
>> +};
>> +
>> +&pm8350c_gpios {
>> +       pmic_lcd_bl_en: pmic-lcd-bl-en-state {
>> +               pins = "gpio7";
>> +               function = "normal";
>> +               bias-disable;
>> +               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
>> +               output-low;
>> +               power-source = <0>;
>> +       };
>> +
>> +       pmic_lcd_bl_pwm: pmic-lcd-bl-pwm-state {
>> +               pins = "gpio8";
>> +               function = "func1";
>> +               bias-disable;
>> +               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
>> +               output-low;
>> +               power-source = <0>;
>> +       };
>> +};
>> +
>> +&pm8350c_pwm {
>> +       pinctrl-names = "default";
>> +       pinctrl-0 = <&pmic_lcd_bl_pwm>;
>> +       status = "okay";
>> +};
>> +
>>   &qupv3_id_0 {
>>          status = "okay";
>>   };
>> --
>> 2.17.1
>>

Thanks,
Ritesh
Ritesh Kumar Jan. 23, 2024, 1:43 p.m. UTC | #2
On 1/16/2024 6:27 PM, Dmitry Baryshkov wrote:

> On Tue, 16 Jan 2024 at 14:06, Konrad Dybcio <konrad.dybcio@linaro.org> wrote:
>>
>>
>> On 1/16/24 10:49, Ritesh Kumar wrote:
>>> Enable Display Subsystem with Novatek NT36672E Panel
>>> on qcm6490 idp platform.
>>>
>>> Signed-off-by: Ritesh Kumar <quic_riteshk@quicinc.com>
>>> ---
>>>    arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 100 +++++++++++++++++++++++
>>>    1 file changed, 100 insertions(+)
>>>
>>> diff --git a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>>> index 2a6e4907c5ee..efa5252130a1 100644
>>> --- a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>>> +++ b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>>> @@ -9,6 +9,7 @@
>>>    #define PM7250B_SID 8
>>>    #define PM7250B_SID1 9
>>>
>>> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
>>>    #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>>>    #include "sc7280.dtsi"
>>>    #include "pm7250b.dtsi"
>>> @@ -38,6 +39,25 @@
>>>                stdout-path = "serial0:115200n8";
>>>        };
>>>
>>> +     lcd_disp_bias: lcd-disp-bias-regulator {
>>> +             compatible = "regulator-fixed";
>>> +             regulator-name = "lcd_disp_bias";
>>> +             regulator-min-microvolt = <5500000>;
>>> +             regulator-max-microvolt = <5500000>;
>>> +             gpio = <&pm7250b_gpios 2 GPIO_ACTIVE_HIGH>;
>>> +             enable-active-high;
>>> +             pinctrl-names = "default";
>>> +             pinctrl-0 = <&lcd_disp_bias_en>;
>> property-n
>> property-names
>>
>> all throughout the patch

Thanks, I will update in the new version.

>>> +&gpu {
>>> +     status = "disabled";
>>> +};
>> Hm.. generally we disable the GPU in the SoC DT, but that doesn't
>> seem to have happened here..
>>
>> Thinking about it more, is disabling it here necessary? Does it
>> not fail gracefully?
> Missed this.
>
> I'd say, I don't see a reason to disable it at all. The GPU should be
> working on sc7280 / qcm4290.

With GPU device node enabled, adreno_bind failure is seen as the 
"speed_bin" was not populated on QCM6490 target which leads to display 
bind failure.
Spoke with GPU team and on QCM6490 board, only CPU rendering is 
supported for now and there is no plan to enable GPU rendering in near 
future.

In this regard, what do you suggest

1) Disable GPU in QCM6490 DT (as per the current patch)
2) Disable GPU in the SoC DT, but enable it in other platform DTs. (This 
will prompt change in all the dt's and we don't have all the devices to 
test)

Please let me know your views on it.


Thanks,
Ritesh
Dmitry Baryshkov Jan. 23, 2024, 3:12 p.m. UTC | #3
On Tue, 23 Jan 2024 at 15:43, Ritesh Kumar <quic_riteshk@quicinc.com> wrote:
>
>
> On 1/16/2024 6:27 PM, Dmitry Baryshkov wrote:
>
> > On Tue, 16 Jan 2024 at 14:06, Konrad Dybcio <konrad.dybcio@linaro.org> wrote:
> >>
> >>
> >> On 1/16/24 10:49, Ritesh Kumar wrote:
> >>> Enable Display Subsystem with Novatek NT36672E Panel
> >>> on qcm6490 idp platform.
> >>>
> >>> Signed-off-by: Ritesh Kumar <quic_riteshk@quicinc.com>
> >>> ---
> >>>    arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 100 +++++++++++++++++++++++
> >>>    1 file changed, 100 insertions(+)
> >>>
> >>> diff --git a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
> >>> index 2a6e4907c5ee..efa5252130a1 100644
> >>> --- a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
> >>> +++ b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
> >>> @@ -9,6 +9,7 @@
> >>>    #define PM7250B_SID 8
> >>>    #define PM7250B_SID1 9
> >>>
> >>> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> >>>    #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> >>>    #include "sc7280.dtsi"
> >>>    #include "pm7250b.dtsi"
> >>> @@ -38,6 +39,25 @@
> >>>                stdout-path = "serial0:115200n8";
> >>>        };
> >>>
> >>> +     lcd_disp_bias: lcd-disp-bias-regulator {
> >>> +             compatible = "regulator-fixed";
> >>> +             regulator-name = "lcd_disp_bias";
> >>> +             regulator-min-microvolt = <5500000>;
> >>> +             regulator-max-microvolt = <5500000>;
> >>> +             gpio = <&pm7250b_gpios 2 GPIO_ACTIVE_HIGH>;
> >>> +             enable-active-high;
> >>> +             pinctrl-names = "default";
> >>> +             pinctrl-0 = <&lcd_disp_bias_en>;
> >> property-n
> >> property-names
> >>
> >> all throughout the patch
>
> Thanks, I will update in the new version.
>
> >>> +&gpu {
> >>> +     status = "disabled";
> >>> +};
> >> Hm.. generally we disable the GPU in the SoC DT, but that doesn't
> >> seem to have happened here..
> >>
> >> Thinking about it more, is disabling it here necessary? Does it
> >> not fail gracefully?
> > Missed this.
> >
> > I'd say, I don't see a reason to disable it at all. The GPU should be
> > working on sc7280 / qcm4290.
>
> With GPU device node enabled, adreno_bind failure is seen as the
> "speed_bin" was not populated on QCM6490 target which leads to display
> bind failure.

Excuse me please. The GPU node for sc7280 already has speed_bin, which
points to qfprom + 0x1e9, bits 5 to 9.

Do you mean that qcm6490 uses different speed bin location? Or
different values for the speed bins?

> Spoke with GPU team and on QCM6490 board, only CPU rendering is
> supported for now and there is no plan to enable GPU rendering in near
> future.

This sounds like having the feature disabled for no particular reason.
Both the kernel and Mesa have supported the Adreno 635 for quite a
while.

> In this regard, what do you suggest
>
> 1) Disable GPU in QCM6490 DT (as per the current patch)
> 2) Disable GPU in the SoC DT, but enable it in other platform DTs. (This
> will prompt change in all the dt's and we don't have all the devices to
> test)

The second option definitely follows what is present on other platforms.

> Please let me know your views on it.

Please enable the GPU instead.
Konrad Dybcio Jan. 23, 2024, 6:04 p.m. UTC | #4
On 1/23/24 16:12, Dmitry Baryshkov wrote:
> On Tue, 23 Jan 2024 at 15:43, Ritesh Kumar <quic_riteshk@quicinc.com> wrote:
>>
>>
>> On 1/16/2024 6:27 PM, Dmitry Baryshkov wrote:
>>
>>> On Tue, 16 Jan 2024 at 14:06, Konrad Dybcio <konrad.dybcio@linaro.org> wrote:
>>>>
>>>>
>>>> On 1/16/24 10:49, Ritesh Kumar wrote:
>>>>> Enable Display Subsystem with Novatek NT36672E Panel
>>>>> on qcm6490 idp platform.
>>>>>
>>>>> Signed-off-by: Ritesh Kumar <quic_riteshk@quicinc.com>
>>>>> ---
>>>>>     arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 100 +++++++++++++++++++++++
>>>>>     1 file changed, 100 insertions(+)
>>>>>
>>>>> diff --git a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>>>>> index 2a6e4907c5ee..efa5252130a1 100644
>>>>> --- a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>>>>> +++ b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
>>>>> @@ -9,6 +9,7 @@
>>>>>     #define PM7250B_SID 8
>>>>>     #define PM7250B_SID1 9
>>>>>
>>>>> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
>>>>>     #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>>>>>     #include "sc7280.dtsi"
>>>>>     #include "pm7250b.dtsi"
>>>>> @@ -38,6 +39,25 @@
>>>>>                 stdout-path = "serial0:115200n8";
>>>>>         };
>>>>>
>>>>> +     lcd_disp_bias: lcd-disp-bias-regulator {
>>>>> +             compatible = "regulator-fixed";
>>>>> +             regulator-name = "lcd_disp_bias";
>>>>> +             regulator-min-microvolt = <5500000>;
>>>>> +             regulator-max-microvolt = <5500000>;
>>>>> +             gpio = <&pm7250b_gpios 2 GPIO_ACTIVE_HIGH>;
>>>>> +             enable-active-high;
>>>>> +             pinctrl-names = "default";
>>>>> +             pinctrl-0 = <&lcd_disp_bias_en>;
>>>> property-n
>>>> property-names
>>>>
>>>> all throughout the patch
>>
>> Thanks, I will update in the new version.
>>
>>>>> +&gpu {
>>>>> +     status = "disabled";
>>>>> +};
>>>> Hm.. generally we disable the GPU in the SoC DT, but that doesn't
>>>> seem to have happened here..
>>>>
>>>> Thinking about it more, is disabling it here necessary? Does it
>>>> not fail gracefully?
>>> Missed this.
>>>
>>> I'd say, I don't see a reason to disable it at all. The GPU should be
>>> working on sc7280 / qcm4290.
>>
>> With GPU device node enabled, adreno_bind failure is seen as the
>> "speed_bin" was not populated on QCM6490 target which leads to display
>> bind failure.
> 
> Excuse me please. The GPU node for sc7280 already has speed_bin, which
> points to qfprom + 0x1e9, bits 5 to 9.
> 
> Do you mean that qcm6490 uses different speed bin location? Or
> different values for the speed bins?
> 
>> Spoke with GPU team and on QCM6490 board, only CPU rendering is
>> supported for now and there is no plan to enable GPU rendering in near
>> future.
> 
> This sounds like having the feature disabled for no particular reason.
> Both the kernel and Mesa have supported the Adreno 635 for quite a
> while.

643 [1], [2]

> 
>> In this regard, what do you suggest
>>
>> 1) Disable GPU in QCM6490 DT (as per the current patch)
>> 2) Disable GPU in the SoC DT, but enable it in other platform DTs. (This
>> will prompt change in all the dt's and we don't have all the devices to
>> test)
> 
> The second option definitely follows what is present on other platforms.
> 
>> Please let me know your views on it.
> 
> Please enable the GPU instead.

+1

Konrad

[1] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25408/diffs?commit_id=b1e851d66c3a3e53f1a464023f675f3f6cbd3503
[2] https://patches.linaro.org/project/linux-arm-msm/cover/20230926-topic-a643-v1-0-7af6937ac0a3@linaro.org/
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
index 2a6e4907c5ee..efa5252130a1 100644
--- a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
+++ b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
@@ -9,6 +9,7 @@ 
 #define PM7250B_SID 8
 #define PM7250B_SID1 9
 
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 #include "sc7280.dtsi"
 #include "pm7250b.dtsi"
@@ -38,6 +39,25 @@ 
 		stdout-path = "serial0:115200n8";
 	};
 
+	lcd_disp_bias: lcd-disp-bias-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "lcd_disp_bias";
+		regulator-min-microvolt = <5500000>;
+		regulator-max-microvolt = <5500000>;
+		gpio = <&pm7250b_gpios 2 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+		pinctrl-names = "default";
+		pinctrl-0 = <&lcd_disp_bias_en>;
+	};
+
+	pm8350c_pwm_backlight: backlight {
+		compatible = "pwm-backlight";
+		pwms = <&pm8350c_pwm 3 65535>;
+		enable-gpios = <&pm8350c_gpios 7 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pmic_lcd_bl_en>;
+	};
+
 	reserved-memory {
 		xbl_mem: xbl@80700000 {
 			reg = <0x0 0x80700000 0x0 0x100000>;
@@ -420,6 +440,86 @@ 
 	};
 };
 
+&gpu {
+	status = "disabled";
+};
+
+&mdss {
+	status = "okay";
+};
+
+&mdss_dsi {
+	vdda-supply = <&vreg_l6b_1p2>;
+	status = "okay";
+
+	panel@0 {
+		compatible = "novatek,nt36672e";
+		reg = <0>;
+
+		reset-gpios = <&tlmm 44 GPIO_ACTIVE_HIGH>;
+
+		vddi-supply = <&vreg_l8c_1p62>;
+		avdd-supply = <&lcd_disp_bias>;
+		avee-supply = <&lcd_disp_bias>;
+
+		backlight = <&pm8350c_pwm_backlight>;
+
+		port {
+			panel0_in: endpoint {
+				remote-endpoint = <&mdss_dsi0_out>;
+			};
+		};
+	};
+};
+
+&mdss_dsi0_out {
+	remote-endpoint = <&panel0_in>;
+	data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi_phy {
+	vdds-supply = <&vreg_l10c_0p88>;
+	status = "okay";
+};
+
+&pm7250b_gpios {
+	lcd_disp_bias_en: lcd-disp-bias-en-state {
+		pins = "gpio2";
+		function = "func1";
+		bias-disable;
+		qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+		input-disable;
+		output-enable;
+		power-source = <0>;
+	};
+};
+
+&pm8350c_gpios {
+	pmic_lcd_bl_en: pmic-lcd-bl-en-state {
+		pins = "gpio7";
+		function = "normal";
+		bias-disable;
+		qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+		output-low;
+		power-source = <0>;
+	};
+
+	pmic_lcd_bl_pwm: pmic-lcd-bl-pwm-state {
+		pins = "gpio8";
+		function = "func1";
+		bias-disable;
+		qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+		output-low;
+		power-source = <0>;
+	};
+};
+
+&pm8350c_pwm {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pmic_lcd_bl_pwm>;
+	status = "okay";
+};
+
 &qupv3_id_0 {
 	status = "okay";
 };