diff mbox series

[v2,3/3] arm64: dts: sc7180: Support Parade ps8640 edp bridge

Message ID 20210929173343.v2.3.I630340a51130f4582dbe14e42f673b74e0531a2b@changeid (mailing list archive)
State Superseded
Headers show
Series [v2,1/3] arm64: dts: sc7180: Factor out ti-sn65dsi86 support | expand

Commit Message

Philip Chen Sept. 30, 2021, 12:34 a.m. UTC
Add a dts fragment file to support the sc7180 boards with the second
source edp bridge, Parade ps8640.

Signed-off-by: Philip Chen <philipchen@chromium.org>
---

Changes in v2:
- Add the definition of edp_brij_i2c and some other properties to
  ps8640 dts, making it match ti-sn65dsi86 dts better

 .../qcom/sc7180-trogdor-parade-ps8640.dtsi    | 108 ++++++++++++++++++
 1 file changed, 108 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi

Comments

Stephen Boyd Sept. 30, 2021, 4:02 a.m. UTC | #1
Quoting Philip Chen (2021-09-29 17:34:58)
> diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi
> new file mode 100644
> index 000000000000..c274ab41bd67
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi
> @@ -0,0 +1,108 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Google Trogdor dts fragment for the boards with Parade ps8640 edp bridge
> + *
> + * Copyright 2021 Google LLC.
> + */
> +
> +/ {
> +       pp3300_brij_ps8640: pp3300-brij-ps8640 {
> +               compatible = "regulator-fixed";
> +               status = "okay";
> +               regulator-name = "pp3300_brij_ps8640";
> +
> +               regulator-min-microvolt = <3300000>;
> +               regulator-max-microvolt = <3300000>;
> +
> +               gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>;

Doesn't this need

		enable-active-high;

?

> +
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&en_pp3300_edp_brij_ps8640>;
> +
> +               vin-supply = <&pp3300_a>;
> +       };
> +};
> +
> +&dsi0_out {
> +       remote-endpoint = <&ps8640_in>;

Should this also have data-lanes to be "complete"?

> +};
> +
> +edp_brij_i2c: &i2c2 {
> +       status = "okay";
> +       clock-frequency = <400000>;
> +
> +       ps8640_bridge: edp-bridge@8 {

Just bridge@8 to match ti bridge? Also, is the label used? If not
please drop it.

> +               compatible = "parade,ps8640";
> +               reg = <0x8>;
> +
> +               powerdown-gpios = <&tlmm 104 GPIO_ACTIVE_LOW>;
> +               reset-gpios = <&tlmm 11 GPIO_ACTIVE_LOW>;
> +
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&edp_brij_en>, <&edp_brij_ps8640_rst>;
> +
> +               vdd12-supply = <&pp1200_brij>;
> +               vdd33-supply = <&pp3300_brij_ps8640>;
> +
> +               ports {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       port@0 {
> +                               reg = <0>;
> +                               ps8640_in: endpoint {
> +                                       remote-endpoint = <&dsi0_out>;
> +                               };
> +                       };
> +
> +                       port@1 {
> +                               reg = <1>;
> +                               ps8640_out: endpoint {
> +                                       remote-endpoint = <&panel_in_edp>;
> +                               };
> +                       };
> +               };
> +
> +               aux_bus: aux-bus {

Is this label used either?

> +                       panel: panel {
> +                               /* Compatible will be filled in per-board */
> +                               power-supply = <&pp3300_dx_edp>;
> +                               backlight = <&backlight>;
> +
> +                               port {
> +                                       panel_in_edp: endpoint {
> +                                               remote-endpoint = <&ps8640_out>;
> +                                       };
> +                               };
> +                       };
> +               };
> +       };
> +};
> +
Doug Anderson Sept. 30, 2021, 4:21 p.m. UTC | #2
Hi,

On Wed, Sep 29, 2021 at 9:02 PM Stephen Boyd <swboyd@chromium.org> wrote:
>
> > +       pp3300_brij_ps8640: pp3300-brij-ps8640 {
> > +               compatible = "regulator-fixed";
> > +               status = "okay";
> > +               regulator-name = "pp3300_brij_ps8640";
> > +
> > +               regulator-min-microvolt = <3300000>;
> > +               regulator-max-microvolt = <3300000>;
> > +
> > +               gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>;
>
> Doesn't this need
>
>                 enable-active-high;

Looks like it. Without that it looks like it assumes active low.


> > +
> > +               pinctrl-names = "default";
> > +               pinctrl-0 = <&en_pp3300_edp_brij_ps8640>;
> > +
> > +               vin-supply = <&pp3300_a>;
> > +       };
> > +};
> > +
> > +&dsi0_out {
> > +       remote-endpoint = <&ps8640_in>;
>
> Should this also have data-lanes to be "complete"?

That's still back in the main trogdor.dtsi, isn't it?


> > +edp_brij_i2c: &i2c2 {
> > +       status = "okay";
> > +       clock-frequency = <400000>;
> > +
> > +       ps8640_bridge: edp-bridge@8 {
>
> Just bridge@8 to match ti bridge? Also, is the label used? If not
> please drop it.

I agree with Stephen about it being "bridge@8". Personally I don't
mind labels like this even if they're not used since they don't hurt
and it creates less churn to add them now, but I won't fight hard to
keep them.


> > +               aux_bus: aux-bus {
>
> Is this label used either?

Yeah, I'd get rid of this one since there you didn't add it in the
sn65dsi86 dtsi file and it seems exceedingly unlikely we'd need it for
any reason.

-Doug
Philip Chen Oct. 7, 2021, 6:15 p.m. UTC | #3
Hi,

On Thu, Sep 30, 2021 at 9:22 AM Doug Anderson <dianders@chromium.org> wrote:
>
> Hi,
>
> On Wed, Sep 29, 2021 at 9:02 PM Stephen Boyd <swboyd@chromium.org> wrote:
> >
> > > +       pp3300_brij_ps8640: pp3300-brij-ps8640 {
> > > +               compatible = "regulator-fixed";
> > > +               status = "okay";
> > > +               regulator-name = "pp3300_brij_ps8640";
> > > +
> > > +               regulator-min-microvolt = <3300000>;
> > > +               regulator-max-microvolt = <3300000>;
> > > +
> > > +               gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>;
> >
> > Doesn't this need
> >
> >                 enable-active-high;
>
> Looks like it. Without that it looks like it assumes active low.
Thanks for catching this.
I'll fix it in v3.

>
>
> > > +
> > > +               pinctrl-names = "default";
> > > +               pinctrl-0 = <&en_pp3300_edp_brij_ps8640>;
> > > +
> > > +               vin-supply = <&pp3300_a>;
> > > +       };
> > > +};
> > > +
> > > +&dsi0_out {
> > > +       remote-endpoint = <&ps8640_in>;
> >
> > Should this also have data-lanes to be "complete"?
>
> That's still back in the main trogdor.dtsi, isn't it?
Yes, I think so.
Plus, ti-sn65 dts doesn't define data-lanes for input either.

>
>
> > > +edp_brij_i2c: &i2c2 {
> > > +       status = "okay";
> > > +       clock-frequency = <400000>;
> > > +
> > > +       ps8640_bridge: edp-bridge@8 {
> >
> > Just bridge@8 to match ti bridge? Also, is the label used? If not
> > please drop it.
>
> I agree with Stephen about it being "bridge@8". Personally I don't
> mind labels like this even if they're not used since they don't hurt
> and it creates less churn to add them now, but I won't fight hard to
> keep them.
I will make it "bridge@8" to match ti-sn65 dts.
Meanwhile, can we keep "ps8640_bridge" label to match ti-sn65 dts?

>
>
> > > +               aux_bus: aux-bus {
> >
> > Is this label used either?
>
> Yeah, I'd get rid of this one since there you didn't add it in the
> sn65dsi86 dtsi file and it seems exceedingly unlikely we'd need it for
> any reason.
Sure, I will remove "aux_bus" label in v3.

>
> -Doug
Philip Chen Oct. 8, 2021, 6:46 p.m. UTC | #4
Hi

On Thu, Oct 7, 2021 at 11:15 AM Philip Chen <philipchen@chromium.org> wrote:
>
> Hi,
>
> On Thu, Sep 30, 2021 at 9:22 AM Doug Anderson <dianders@chromium.org> wrote:
> >
> > Hi,
> >
> > On Wed, Sep 29, 2021 at 9:02 PM Stephen Boyd <swboyd@chromium.org> wrote:
> > >
> > > > +       pp3300_brij_ps8640: pp3300-brij-ps8640 {
> > > > +               compatible = "regulator-fixed";
> > > > +               status = "okay";
> > > > +               regulator-name = "pp3300_brij_ps8640";
> > > > +
> > > > +               regulator-min-microvolt = <3300000>;
> > > > +               regulator-max-microvolt = <3300000>;
> > > > +
> > > > +               gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>;
> > >
> > > Doesn't this need
> > >
> > >                 enable-active-high;
> >
> > Looks like it. Without that it looks like it assumes active low.
> Thanks for catching this.
> I'll fix it in v3.
>
> >
> >
> > > > +
> > > > +               pinctrl-names = "default";
> > > > +               pinctrl-0 = <&en_pp3300_edp_brij_ps8640>;
> > > > +
> > > > +               vin-supply = <&pp3300_a>;
> > > > +       };
> > > > +};
> > > > +
> > > > +&dsi0_out {
> > > > +       remote-endpoint = <&ps8640_in>;
> > >
> > > Should this also have data-lanes to be "complete"?
> >
> > That's still back in the main trogdor.dtsi, isn't it?
> Yes, I think so.
> Plus, ti-sn65 dts doesn't define data-lanes for input either.
Sorry, I was wrong.
ti-sn65 dts actually defines data-lanes for input.
However, since ps8640 driver doesn't parse input data-lanes for now,
it's not useful to add data-lanes here anyway.

>
> >
> >
> > > > +edp_brij_i2c: &i2c2 {
> > > > +       status = "okay";
> > > > +       clock-frequency = <400000>;
> > > > +
> > > > +       ps8640_bridge: edp-bridge@8 {
> > >
> > > Just bridge@8 to match ti bridge? Also, is the label used? If not
> > > please drop it.
> >
> > I agree with Stephen about it being "bridge@8". Personally I don't
> > mind labels like this even if they're not used since they don't hurt
> > and it creates less churn to add them now, but I won't fight hard to
> > keep them.
> I will make it "bridge@8" to match ti-sn65 dts.
> Meanwhile, can we keep "ps8640_bridge" label to match ti-sn65 dts?
>
> >
> >
> > > > +               aux_bus: aux-bus {
> > >
> > > Is this label used either?
> >
> > Yeah, I'd get rid of this one since there you didn't add it in the
> > sn65dsi86 dtsi file and it seems exceedingly unlikely we'd need it for
> > any reason.
> Sure, I will remove "aux_bus" label in v3.
>
> >
> > -Doug
Doug Anderson Oct. 8, 2021, 11:12 p.m. UTC | #5
Hi,

On Fri, Oct 8, 2021 at 11:46 AM Philip Chen <philipchen@chromium.org> wrote:
>
> Hi
>
> On Thu, Oct 7, 2021 at 11:15 AM Philip Chen <philipchen@chromium.org> wrote:
> >
> > Hi,
> >
> > On Thu, Sep 30, 2021 at 9:22 AM Doug Anderson <dianders@chromium.org> wrote:
> > >
> > > Hi,
> > >
> > > On Wed, Sep 29, 2021 at 9:02 PM Stephen Boyd <swboyd@chromium.org> wrote:
> > > >
> > > > > +       pp3300_brij_ps8640: pp3300-brij-ps8640 {
> > > > > +               compatible = "regulator-fixed";
> > > > > +               status = "okay";
> > > > > +               regulator-name = "pp3300_brij_ps8640";
> > > > > +
> > > > > +               regulator-min-microvolt = <3300000>;
> > > > > +               regulator-max-microvolt = <3300000>;
> > > > > +
> > > > > +               gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>;
> > > >
> > > > Doesn't this need
> > > >
> > > >                 enable-active-high;
> > >
> > > Looks like it. Without that it looks like it assumes active low.
> > Thanks for catching this.
> > I'll fix it in v3.
> >
> > >
> > >
> > > > > +
> > > > > +               pinctrl-names = "default";
> > > > > +               pinctrl-0 = <&en_pp3300_edp_brij_ps8640>;
> > > > > +
> > > > > +               vin-supply = <&pp3300_a>;
> > > > > +       };
> > > > > +};
> > > > > +
> > > > > +&dsi0_out {
> > > > > +       remote-endpoint = <&ps8640_in>;
> > > >
> > > > Should this also have data-lanes to be "complete"?
> > >
> > > That's still back in the main trogdor.dtsi, isn't it?
> > Yes, I think so.
> > Plus, ti-sn65 dts doesn't define data-lanes for input either.
> Sorry, I was wrong.
> ti-sn65 dts actually defines data-lanes for input.
> However, since ps8640 driver doesn't parse input data-lanes for now,
> it's not useful to add data-lanes here anyway.

Ah, right. This one _isn't_ in the dtsi. Looking closer, I agree with
you that it's not useful. Specifically it should be noted that, unlike
ti-sn65dsi86, this bridge part looks to only support 2-lanes of DP
traffic. If both of these two lanes are routed to the panel then
there's really nothing to specify--that should be the default
assumption of the driver if/when it ever adds support for data-lanes.

-Doug
Philip Chen Oct. 8, 2021, 11:39 p.m. UTC | #6
Hi,

On Fri, Oct 8, 2021 at 4:13 PM Doug Anderson <dianders@chromium.org> wrote:
>
> Hi,
>
> On Fri, Oct 8, 2021 at 11:46 AM Philip Chen <philipchen@chromium.org> wrote:
> >
> > Hi
> >
> > On Thu, Oct 7, 2021 at 11:15 AM Philip Chen <philipchen@chromium.org> wrote:
> > >
> > > Hi,
> > >
> > > On Thu, Sep 30, 2021 at 9:22 AM Doug Anderson <dianders@chromium.org> wrote:
> > > >
> > > > Hi,
> > > >
> > > > On Wed, Sep 29, 2021 at 9:02 PM Stephen Boyd <swboyd@chromium.org> wrote:
> > > > >
> > > > > > +       pp3300_brij_ps8640: pp3300-brij-ps8640 {
> > > > > > +               compatible = "regulator-fixed";
> > > > > > +               status = "okay";
> > > > > > +               regulator-name = "pp3300_brij_ps8640";
> > > > > > +
> > > > > > +               regulator-min-microvolt = <3300000>;
> > > > > > +               regulator-max-microvolt = <3300000>;
> > > > > > +
> > > > > > +               gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>;
> > > > >
> > > > > Doesn't this need
> > > > >
> > > > >                 enable-active-high;
> > > >
> > > > Looks like it. Without that it looks like it assumes active low.
> > > Thanks for catching this.
> > > I'll fix it in v3.
> > >
> > > >
> > > >
> > > > > > +
> > > > > > +               pinctrl-names = "default";
> > > > > > +               pinctrl-0 = <&en_pp3300_edp_brij_ps8640>;
> > > > > > +
> > > > > > +               vin-supply = <&pp3300_a>;
> > > > > > +       };
> > > > > > +};
> > > > > > +
> > > > > > +&dsi0_out {
> > > > > > +       remote-endpoint = <&ps8640_in>;
> > > > >
> > > > > Should this also have data-lanes to be "complete"?
> > > >
> > > > That's still back in the main trogdor.dtsi, isn't it?
> > > Yes, I think so.
> > > Plus, ti-sn65 dts doesn't define data-lanes for input either.
> > Sorry, I was wrong.
> > ti-sn65 dts actually defines data-lanes for input.
> > However, since ps8640 driver doesn't parse input data-lanes for now,
> > it's not useful to add data-lanes here anyway.
>
> Ah, right. This one _isn't_ in the dtsi. Looking closer, I agree with
> you that it's not useful. Specifically it should be noted that, unlike
> ti-sn65dsi86, this bridge part looks to only support 2-lanes of DP
> traffic. If both of these two lanes are routed to the panel then
> there's really nothing to specify--that should be the default
> assumption of the driver if/when it ever adds support for data-lanes.

Actually, dsi0_out is the input to the bridge.
So the data lanes here are "MIPI DSI lanes", which is hardcoded to 4,
for both sn65 driver and ps8640 driver, right?

What's different in sn65 driver and ps8640 driver is the output data
lanes for DP:
* sn65 supports 1, 2, or 4 DP lanes. The driver parses DP "data lanes"
from DT and then configures the support accordingly.
* ps8640 supports 1 or 2 DP lanes. As of now, the driver doesn't parse
DP "data lanes" from DT.

As a result:
* Adding input "data lanes" for either sn65 or ps8640 DT is not useful.
* Adding output "data lanes" for sn65 DT is useful, while adding
output "data lanes" for ps8640 DT is not useful.

>
> -Doug
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi
new file mode 100644
index 000000000000..c274ab41bd67
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi
@@ -0,0 +1,108 @@ 
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Trogdor dts fragment for the boards with Parade ps8640 edp bridge
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+/ {
+	pp3300_brij_ps8640: pp3300-brij-ps8640 {
+		compatible = "regulator-fixed";
+		status = "okay";
+		regulator-name = "pp3300_brij_ps8640";
+
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&en_pp3300_edp_brij_ps8640>;
+
+		vin-supply = <&pp3300_a>;
+	};
+};
+
+&dsi0_out {
+	remote-endpoint = <&ps8640_in>;
+};
+
+edp_brij_i2c: &i2c2 {
+	status = "okay";
+	clock-frequency = <400000>;
+
+	ps8640_bridge: edp-bridge@8 {
+		compatible = "parade,ps8640";
+		reg = <0x8>;
+
+		powerdown-gpios = <&tlmm 104 GPIO_ACTIVE_LOW>;
+		reset-gpios = <&tlmm 11 GPIO_ACTIVE_LOW>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&edp_brij_en>, <&edp_brij_ps8640_rst>;
+
+		vdd12-supply = <&pp1200_brij>;
+		vdd33-supply = <&pp3300_brij_ps8640>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+				ps8640_in: endpoint {
+					remote-endpoint = <&dsi0_out>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+				ps8640_out: endpoint {
+					remote-endpoint = <&panel_in_edp>;
+				};
+			};
+		};
+
+		aux_bus: aux-bus {
+			panel: panel {
+				/* Compatible will be filled in per-board */
+				power-supply = <&pp3300_dx_edp>;
+				backlight = <&backlight>;
+
+				port {
+					panel_in_edp: endpoint {
+						remote-endpoint = <&ps8640_out>;
+					};
+				};
+			};
+		};
+	};
+};
+
+&tlmm {
+	edp_brij_ps8640_rst: edp-brij-ps8640-rst {
+		pinmux {
+			pins = "gpio11";
+			function = "gpio";
+		};
+
+		pinconf {
+			pins = "gpio11";
+			drive-strength = <2>;
+			bias-disable;
+		};
+	};
+
+	en_pp3300_edp_brij_ps8640: en-pp3300-edp-brij-ps8640 {
+		pinmux {
+			pins = "gpio32";
+			function = "gpio";
+		};
+
+		pinconf {
+			pins = "gpio32";
+			drive-strength = <2>;
+			bias-disable;
+		};
+	};
+};