2020-02-17 09:01:44

by Harigovindan P

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

Add nodes for IDP display. The display is Visionox RM69299.

Signed-off-by: Harigovindan P <[email protected]>
---

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(+)

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";
--
2.25.0


2020-06-25 01:08:27

by Stephen Boyd

[permalink] [raw]
Subject: Re: [v3] arm64: dts: sc7180: add nodes for idp display

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;
> + };
> +};
> +

2020-06-29 19:05:21

by Harigovindan P

[permalink] [raw]
Subject: Re: [v3] arm64: dts: sc7180: add nodes for idp display

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;
>> + };
>> +};
>> +

2020-07-20 20:25:50

by Stephen Boyd

[permalink] [raw]
Subject: Re: [v3] arm64: dts: sc7180: add nodes for idp display

Quoting [email protected] (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?