Devicetree
 help / color / mirror / Atom feed
From: Alexandre Hamamdjian via B4 Relay <devnull+azkali.limited.gmail.com@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>,
	 Konrad Dybcio <konradybcio@kernel.org>,
	Rob Herring <robh@kernel.org>,
	 Krzysztof Kozlowski <krzk+dt@kernel.org>,
	 Conor Dooley <conor+dt@kernel.org>
Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
	 linux-kernel@vger.kernel.org,
	 Alexandre Hamamdjian <azkali.limited@gmail.com>
Subject: [PATCH v6 4/4] arm64: dts: qcom: qcs8550-ayaneo-pocket-ds: add the lower DSI panel
Date: Mon, 24 Aug 2026 22:58:22 +0700	[thread overview]
Message-ID: <20260824-pocketds-v6-4-370161574ca2@gmail.com> (raw)
In-Reply-To: <20260824-pocketds-v6-0-370161574ca2@gmail.com>

From: Alexandre Hamamdjian <azkali.limited@gmail.com>

The Pocket DS drives two panels. The lower one is a 768x1024 IPS LCD on
a Sitronix ST7703 DDIC hanging off mdss_dsi1, and all of the pieces it
needs have now landed: the ayaneo,pocket-ds-lower-panel compatible in
the ST7703 binding, the SGMicro SGM3804 dual-rail charge pump driver and
the Silergy SY7758 backlight driver.

The SGM3804 on i2c0 supplies the panel bias. Its two rails are enabled
by separate GPIOs and both are programmed to 5.2 V; that figure is the
vendor register configuration (0x00 = 0x0c, 0x01 = 0x0c), which lands on
5.2 V in the driver's 4.0 V + 100 mV linear range. tlmm 152 enables the
positive rail and tlmm 153 the negative one. Only the positive rail has
a consumer, because the ST7703 binding models a single vcc-supply, so
the negative rail is marked regulator-always-on to keep AVEE up while
the panel is on; a better modelling of the pair is welcome.

The SY7758 backlight sits on the same bus. Its enable line was
determined on the device: driving tlmm 42 low makes the chip stop
acknowledging on i2c while the TCA6408 on the same segment keeps
responding, so tlmm 42 gates the SY7758 alone rather than the bus.

The TCA6408 expander supplies the rest: line 0 gates the panel IOVCC
rail, modelled as a fixed regulator, and line 2 is the panel reset.

sde_dsi1_active keeps its output-high because tlmm 137 has no GPIO
consumer anywhere in the tree; pinctrl is the only thing asserting it.

The upper panel is not added here. Its Chipone ICNA3512 binding makes
disp-supply and blvdd-supply mandatory, and this board has no separately
controllable rail for either; the vendor device tree drives the upper
panel purely through a platform enable GPIO and points the panel node at
the simulator supply list. It will follow once that wiring is confirmed.

Signed-off-by: Alexandre Hamamdjian <azkali.limited@gmail.com>
---
 .../boot/dts/qcom/qcs8550-ayaneo-pocket-ds.dts     | 97 ++++++++++++++++++++++
 1 file changed, 97 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qcs8550-ayaneo-pocket-ds.dts b/arch/arm64/boot/dts/qcom/qcs8550-ayaneo-pocket-ds.dts
index 09b1c86cc3d3..72c81667c085 100644
--- a/arch/arm64/boot/dts/qcom/qcs8550-ayaneo-pocket-ds.dts
+++ b/arch/arm64/boot/dts/qcom/qcs8550-ayaneo-pocket-ds.dts
@@ -314,6 +314,17 @@ upd720201_vdd33_reg: upd720201-vdd33-regulator {
 		pinctrl-names = "default";
 	};
 
+	vreg_panel1_iovcc: panel1-iovcc-regulator {
+		compatible = "regulator-fixed";
+
+		regulator-name = "panel1_iovcc";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+
+		gpios = <&tca6408 0 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
 	vdd_fan_5v0: vdd-fan-5v0-regulator {
 		compatible = "regulator-fixed";
 
@@ -829,6 +840,38 @@ tca6408: gpio@20 {
 
 		vcc-supply = <&tca6424_vcc>;
 	};
+
+	backlight: backlight@2e {
+		compatible = "silergy,sy7758";
+		reg = <0x2e>;
+
+		enable-gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
+	};
+
+	sgm3804: regulator@3e {
+		compatible = "sgmicro,sgm3804";
+		reg = <0x3e>;
+
+		vin-supply = <&vph_pwr>;
+
+		sgm3804_pos: pos {
+			regulator-name = "panel1_avdd";
+			regulator-min-microvolt = <5200000>;
+			regulator-max-microvolt = <5200000>;
+
+			enable-gpios = <&tlmm 152 GPIO_ACTIVE_HIGH>;
+		};
+
+		sgm3804_neg: neg {
+			regulator-name = "panel1_avee";
+			regulator-min-microvolt = <5200000>;
+			regulator-max-microvolt = <5200000>;
+
+			enable-gpios = <&tlmm 153 GPIO_ACTIVE_HIGH>;
+
+			regulator-always-on;
+		};
+	};
 };
 
 &i2c2 {
@@ -960,6 +1003,45 @@ &mdss_dp0_out {
 	data-lanes = <0 1 2 3>;
 };
 
+&mdss_dsi1 {
+	vdda-supply = <&vreg_l3e_1p2>;
+
+	status = "okay";
+
+	panel@0 {
+		compatible = "ayaneo,pocket-ds-lower-panel";
+		reg = <0>;
+
+		vcc-supply = <&sgm3804_pos>;
+		iovcc-supply = <&vreg_panel1_iovcc>;
+
+		reset-gpios = <&tca6408 2 GPIO_ACTIVE_LOW>;
+		backlight = <&backlight>;
+		rotation = <270>;
+
+		pinctrl-0 = <&sde_dsi1_active>;
+		pinctrl-1 = <&sde_dsi1_suspend>;
+		pinctrl-names = "default", "sleep";
+
+		port {
+			panel1_in: endpoint {
+				remote-endpoint = <&mdss_dsi1_out>;
+			};
+		};
+	};
+};
+
+&mdss_dsi1_out {
+	remote-endpoint = <&panel1_in>;
+	data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi1_phy {
+	vdds-supply = <&vreg_l1e_0p88>;
+
+	status = "okay";
+};
+
 &pcie0 {
 	wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
 	perst-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
@@ -1558,6 +1640,21 @@ ts2_irq: ts2-irq-state {
 		bias-disable;
 	};
 
+	sde_dsi1_active: sde-dsi1-active-state {
+		pins = "gpio137";
+		function = "gpio";
+		drive-strength = <8>;
+		bias-disable;
+		output-high;
+	};
+
+	sde_dsi1_suspend: sde-dsi1-suspend-state {
+		pins = "gpio137";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
 	ts2_reset: ts2-reset-state {
 		pins = "gpio38";
 		function = "gpio";

-- 
2.55.0



  parent reply	other threads:[~2026-08-24 15:58 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24 15:58 [PATCH v6 0/4] arm64: qcom: add Ayaneo Pocket DS gaming console Alexandre Hamamdjian via B4 Relay
2026-08-24 15:58 ` [PATCH v6 1/4] dt-bindings: arm: qcom: document the Ayaneo Pocket DS Alexandre Hamamdjian via B4 Relay
2026-08-24 15:58 ` [PATCH v6 2/4] arm64: dts: qcom: sm8550: add UART11 node Alexandre Hamamdjian via B4 Relay
2026-08-24 16:09   ` sashiko-bot
2026-08-24 15:58 ` [PATCH v6 3/4] arm64: dts: qcom: add basic devicetree for Ayaneo Pocket DS gaming console Alexandre Hamamdjian via B4 Relay
2026-08-24 16:13   ` sashiko-bot
2026-08-24 15:58 ` Alexandre Hamamdjian via B4 Relay [this message]
2026-08-24 16:12   ` [PATCH v6 4/4] arm64: dts: qcom: qcs8550-ayaneo-pocket-ds: add the lower DSI panel sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260824-pocketds-v6-4-370161574ca2@gmail.com \
    --to=devnull+azkali.limited.gmail.com@kernel.org \
    --cc=andersson@kernel.org \
    --cc=azkali.limited@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox