Skip to contentSkip to conversation

Add initial DTS for Samsung Galaxy Book4 Edge

PATCH In review Maxim Storetvedt 4 participants 9 messages Sep 30 – Oct 2

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

v8 cover Add initial DTS for Samsung Galaxy Book4 Edge

This patch introduces devicetrees to support the hamoa Samsung Galaxy Book4 Edge, and includes the X1E80100 14-inch SKU and X1E84100 16-inch SKU.

It continues the earlier patch series started by Marcus Glocker, and the previously submitted v7 [1].

Supported:
- Keyboard
- Touchpad
- USB C (as init by firmware only)
- USB A (on 16 inch)
- Display
- HDMI
- WiFi
- Bluetooth
- ADSP / CDSP
- GPU
- UFS
- Suspend
- Touchscreen

Other features (such as camera) are also confirmed working, but for now need patches/changes out of scope for this submission. These are tracked downstream in the meantime [2].

Changed from v7:
- Fix sashiko warnings
- Add touchscreen
- Add proper tags

Changed from v6:
- Updated to match current linux-next
- Use 14 inch SKU as base for the dtsi

Changed from v5:
- Reworked DTS/DTSI for both 14- & 16-inch SKUs
- Added Galaxy Book4 Edge to QSEECOM
- Removed UFS node from the patch

Changed from v4:
* Fix previously missed commits:
- Improved commit messages.
- Added missing clock line for ufs.
- Removed invalid microamp lines for ufs.

Changed from v3:
- Improved commit messages.
- Added missing clock line for ufs.
- Removed invalid microamp lines for ufs.

Changed from v2:
- Squash Makefile patch to new DTS file patch.

Changed from v1:
- Provide the patch in the expected format.
- Added missing bindings.
- Removed sound node.
- Changed regulator syntax to be consistent.
- Changed touchscreen node comment, and removed false pin definition.
- Rename ufshc@ to ufs@.

[1] https://lore.kernel.org/all/[email protected]/
[2] https://github.com/zensanp/linux-book4-edge/

Maxim Storetvedt (3):
dt-bindings: arm: Add Samsung Galaxy Book4 Edge
firmware: qcom: scm: Allow QSEECOM on the Samsung Galaxy Book4 Edge
arm64: dts: qcom: Add hamoa Samsung Galaxy Book4 Edge devicetrees

 .../devicetree/bindings/arm/qcom.yaml         |    7 +
 arch/arm64/boot/dts/qcom/Makefile             |    4 +
 .../qcom/x1-samsung-galaxy-book4-edge.dtsi    | 1529 +++++++++++++++++
 .../x1e80100-samsung-galaxy-book4-edge-14.dts |   28 +
 .../x1e84100-samsung-galaxy-book4-edge-16.dts |   31 +
 drivers/firmware/qcom/qcom_scm.c              |    1 +
 6 files changed, 1600 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-samsung-galaxy-book4-edge-14.dts
 create mode 100644 arch/arm64/boot/dts/qcom/x1e84100-samsung-galaxy-book4-edge-16.dts

base-commit: 3f2425f5b5bbbdd991ca9cdfd5502e68d8895998

Signature · 1 line
2.43.0
#1 lore raw

PATCH v8 1/3 dt-bindings: arm: Add Samsung Galaxy Book4 Edge

Add the Samsung Galaxy Book4 Edge compatibility bindings

---
 Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++
 1 file changed, 7 insertions(+)
Documentation/devicetree/bindings/arm/qcom.yaml +7 -0
index cf9d940f7..439ae9778 100644
@@ -1226,6 +1226,13 @@ properties:
               - qcom,x1e80100-qcp
           - const: qcom,x1e80100
 
+      - items:
+          - enum:
+              - samsung,galaxy-book4-edge-14
+              - samsung,galaxy-book4-edge-16
+          - const: samsung,galaxy-book4-edge
+          - const: qcom,x1e80100
+
       - items:
           - enum:
               - qcom,hamoa-iot-evk
Signature · 1 line
2.43.0
#2 lore raw

Re: [PATCH v8 1/3] dt-bindings: arm: Add Samsung Galaxy Book4 Edge

Quoted 6 lines · Maxim Storetvedt

Add the Samsung Galaxy Book4 Edge compatibility bindings

---
 Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++
 1 file changed, 7 insertions(+)

Repeating the same and expecting different results is well, we know what, so I will instead just drop your patchset from DT.

Best regards,
Krzysztof

#3 lore raw

Re: [PATCH v8 1/3] dt-bindings: arm: Add Samsung Galaxy Book4 Edge

Quoted 8 lines · Krzysztof Kozlowski
Quoted 6 lines · Maxim Storetvedt

Add the Samsung Galaxy Book4 Edge compatibility bindings

---
 Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++
 1 file changed, 7 insertions(+)
Quoted 6 lines

Repeating the same and expecting different results is well, we know what, so I will instead just drop your patchset from DT.

Best regards,
Krzysztof

Hi Krzysztof,

Oversight from my end, sending all attention towards correcting the tags for the devicetree.

Can have this corrected, however, can otherwise also stop here

Cheers,
-Max

#4 lore raw

PATCH v8 2/3 firmware: qcom: scm: Allow QSEECOM on the Samsung Galaxy Book4 Edge

In reply to Maxim Storetvedt

Required for EFI variable access on this device

---
 drivers/firmware/qcom/qcom_scm.c | 1 +
 1 file changed, 1 insertion(+)
drivers/firmware/qcom/qcom_scm.c +1 -0
index df20773dd..ddb2f5d1f 100644
@@ -2253,6 +2253,7 @@ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = {
 	{ .compatible = "qcom,x1e80100-crd" },
 	{ .compatible = "qcom,x1e80100-qcp" },
 	{ .compatible = "qcom,x1p42100-crd" },
+	{ .compatible = "samsung,galaxy-book4-edge" },
 	{ }
 };
 
Signature · 1 line
2.43.0
#5 lore raw

PATCH v8 3/3 arm64: dts: qcom: Add hamoa Samsung Galaxy Book4 Edge devicetrees

In reply to Maxim Storetvedt

Adds devicetrees for the 14-inch and 16-inch hamoa SKUs of the Samsung Galaxy Book4 Edge.

These use a common dtsi derived from nodes that were able to work on Linux from the initial Galaxy Book4 Edge DTS by Marcus [1], combined with the patch series for the Honor Magicbook Art 14, which shares device similarities [2], together with a few more adjustments on top of that again to get additional features working. Special thanks to Jesse Ahn for helping expand on what would eventually become this dtsi.

[1] https://lore.kernel.org/all/p3mhtj2rp6y2ezuwpd2gu7dwx5cbckfu4s4pazcudi4j2wogtr@4yecb2bkeyms/
[2] https://lore.kernel.org/all/[email protected]/

---
 arch/arm64/boot/dts/qcom/Makefile             |    4 +
 .../qcom/x1-samsung-galaxy-book4-edge.dtsi    | 1529 +++++++++++++++++
 .../x1e80100-samsung-galaxy-book4-edge-14.dts |   28 +
 .../x1e84100-samsung-galaxy-book4-edge-16.dts |   31 +
 4 files changed, 1592 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-samsung-galaxy-book4-edge-14.dts
 create mode 100644 arch/arm64/boot/dts/qcom/x1e84100-samsung-galaxy-book4-edge-16.dts
arch/arm64/boot/dts/qcom/Makefile +4 -0
index 5c19f945c..314094985 100644
@@ -498,3 +498,7 @@ x1p64100-microsoft-denali-el2-dtbs	:= x1p64100-microsoft-denali.dtb x1-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)	+= x1p64100-microsoft-denali.dtb x1p64100-microsoft-denali-el2.dtb
 x1p42100-microsoft-sp12in-el2-dtbs	:= x1p42100-microsoft-sp12in.dtb x1-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)	+= x1p42100-microsoft-sp12in.dtb x1p42100-microsoft-sp12in-el2.dtb
+x1e80100-samsung-galaxy-book4-edge-14-el2-dtbs	:= x1e80100-samsung-galaxy-book4-edge-14.dtb x1-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)	+= x1e80100-samsung-galaxy-book4-edge-14.dtb x1e80100-samsung-galaxy-book4-edge-14-el2.dtb
+x1e84100-samsung-galaxy-book4-edge-16-el2-dtbs	:= x1e84100-samsung-galaxy-book4-edge-16.dtb x1-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)	+= x1e84100-samsung-galaxy-book4-edge-16.dtb x1e84100-samsung-galaxy-book4-edge-16-el2.dtb
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +1529 -0

1,529 lines not on this page · raw message

arch/arm64/boot/dts/qcom/x1e80100-samsung-galaxy-book4-edge-14.dts new file +28 -0
new file mode 100644
index 000000000..333a69a8a
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+/dts-v1/;
+
+#include "x1-samsung-galaxy-book4-edge.dtsi"
+
+/ {
+	model = "Samsung Galaxy Book4 Edge (14 inch)";
+	compatible = "samsung,galaxy-book4-edge-14", "samsung,galaxy-book4-edge",
+		     "qcom,x1e80100";
+};
+
+&i2c13 {
+	touchpad@40 {
+		compatible = "hid-over-i2c";
+		reg = <0x40>;
+
+		hid-descr-addr = <0xe>;
+		interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+		pinctrl-0 = <&tpad_default>;
+		pinctrl-names = "default";
+	};
+};
+
+&panel {
+	compatible = "samsung,atna40cu07", "samsung,atna33xc20";
+};
arch/arm64/boot/dts/qcom/x1e84100-samsung-galaxy-book4-edge-16.dts new file +31 -0
new file mode 100644
index 000000000..947eea411
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+/dts-v1/;
+
+#include "x1-samsung-galaxy-book4-edge.dtsi"
+
+/ {
+	model = "Samsung Galaxy Book4 Edge (16 inch)";
+	compatible = "samsung,galaxy-book4-edge-16", "samsung,galaxy-book4-edge",
+		     "qcom,x1e80100";
+};
+
+&i2c13 {
+	touchpad@50 {
+		compatible = "hid-over-i2c";
+		reg = <0x50>;
+
+		hid-descr-addr = <0xd1>;
+		interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+		vdd-supply = <&vreg_misc_3p3>;
+		vddl-supply = <&vreg_l15b_1p8>;
+
+		pinctrl-0 = <&tpad_default>;
+		pinctrl-names = "default";
+	};
+};
+
+&panel {
+	compatible = "samsung,atna60cl07", "samsung,atna33xc20";
+};
Signature · 1 line
2.43.0
#6 lore raw

Re: [PATCH v8 3/3] arm64: dts: qcom: Add hamoa Samsung Galaxy Book4 Edge devicetrees

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [High] dts: swapped voltage regulators for USB QMP PHY nodes - [Medium] dts: invalid power topology…

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] dts: swapped voltage regulators for USB QMP PHY nodes
- [Medium] dts: invalid power topology supplying 3.3V switch from 1.8V source --

commit e084aaae679956c0579caf519602293f9f79b553
Author: Maxim Storetvedt <[email protected]>
Subject: arm64: dts: qcom: Add hamoa Samsung Galaxy Book4 Edge devicetrees

Adds devicetrees for the 14-inch and 16-inch hamoa SKUs of the Samsung Galaxy Book4 Edge based on a common dtsi.

Quoted 4 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +0 -0
new file mode 100644

[ ... ]

Quoted 7 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +7 -0
+	vreg_display_vdd: regulator-display-vdd {
+		compatible = "regulator-fixed";
+
+		regulator-name = "VREG_DISPLAY_VDD";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 323

Quoted 10 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +10 -0
+		gpio = <&tlmm 120 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&display_vdd_en>;
+		pinctrl-names = "default";
+
+		startup-delay-us = <400000>;
+		regulator-enable-ramp-delay = <400000>;
+
+		vin-supply = <&vreg_octa_vdd>;

[Severity: Medium]
Is it expected that this 3.3V regulator uses a 1.8V input supply?

Looking at the definition of vreg_octa_vdd in this file, it is fixed at 1.8V. A 3.3V switch or LDO fed by a 1.8V source will cause the regulator core to flag a 'supply voltage too low' or unsupportable constraints error during probe when attempting to resolve the display voltage.

Quoted 4 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +4 -0
+
+		regulator-always-on;
+		regulator-boot-on;
+	};

[ ... ]

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 1432

Quoted 3 lines

+&usb_1_ss0_qmpphy {

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +2 -0
+	vdda-phy-supply = <&vreg_l2j_1p2>;
+	vdda-pll-supply = <&vreg_l1j_0p8>;

[Severity: High]
Could these voltage supplies be swapped?

The 1.2V supply (&vreg_l2j_1p2) is assigned to the 0.8V PHY core rail (vdda-phy-supply), while the 0.8V supply (&vreg_l1j_0p8) is assigned to the 1.2V PLL rail (vdda-pll-supply).

During device probe, this swapped regulator assignment will activate, causing a significant overvoltage on the PHY core and undervoltage on the PLL, which could lead to hardware damage or initialization failures.

Quoted 3 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +3 -0
+
+	status = "okay";
+};

[ ... ]

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi

Quoted 3 lines

+&usb_1_ss1_qmpphy {

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +2 -0
+	vdda-phy-supply = <&vreg_l2j_1p2>;
+	vdda-pll-supply = <&vreg_l2d_0p9>;

[Severity: High]
Does this node also swap the voltage supplies?

Similar to &usb_1_ss0_qmpphy above, a 1.2V supply is incorrectly assigned to the 0.9V PHY core rail.

Quoted 3 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +3 -0
+
+	status = "okay";
+};

[ ... ]

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi

Quoted 3 lines

+&usb_1_ss2_qmpphy {

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +2 -0
+	vdda-phy-supply = <&vreg_l2j_1p2>;
+	vdda-pll-supply = <&vreg_l2d_0p9>;

[Severity: High]
Does this node also swap the voltage supplies?

Similar to the earlier QMP PHY nodes, a 1.2V supply is incorrectly assigned to the 0.9V PHY core rail here as well.

Quoted 2 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +2 -0
+
+	/delete-property/ mode-switch;

[ ... ]

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 1526

Quoted 3 lines

+&usb_mp_qmpphy0 {

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +2 -0
+	vdda-phy-supply = <&vreg_l3e_1p2>;
+	vdda-pll-supply = <&vreg_l3c_0p8>;

[Severity: High]
Does this node also swap the voltage supplies?

A 1.2V supply is incorrectly assigned to the 0.8V PHY core rail here as well.

Quoted 3 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +3 -0
+
+	status = "okay";
+};
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=3
#7 lore raw

Re: [PATCH v8 3/3] arm64: dts: qcom: Add hamoa Samsung Galaxy Book4 Edge devicetrees

In reply to Maxim Storetvedt
Quoted 12 lines · Maxim Storetvedt

Adds devicetrees for the 14-inch and 16-inch hamoa SKUs of the Samsung Galaxy Book4 Edge.

These use a common dtsi derived from nodes that were able to work on Linux from the initial Galaxy Book4 Edge DTS by Marcus [1], combined with the patch series for the Honor Magicbook Art 14, which shares device similarities [2], together with a few more adjustments on top of that again to get additional features working. Special thanks to Jesse Ahn for helping expand on what would eventually become this dtsi.

Quoted 2 lines

[1] https://lore.kernel.org/all/p3mhtj2rp6y2ezuwpd2gu7dwx5cbckfu4s4pazcudi4j2wogtr@4yecb2bkeyms/
[2] https://lore.kernel.org/all/[email protected]/

These go like:

Please cc my kernel email on future revisions ([email protected])

Quoted 132 lines
---
 arch/arm64/boot/dts/qcom/Makefile             |    4 +
 .../qcom/x1-samsung-galaxy-book4-edge.dtsi    | 1529 +++++++++++++++++
 .../x1e80100-samsung-galaxy-book4-edge-14.dts |   28 +
 .../x1e84100-samsung-galaxy-book4-edge-16.dts |   31 +
 4 files changed, 1592 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-samsung-galaxy-book4-edge-14.dts
 create mode 100644 arch/arm64/boot/dts/qcom/x1e84100-samsung-galaxy-book4-edge-16.dts
arch/arm64/boot/dts/qcom/Makefile +4 -0
index 5c19f945c..314094985 100644
@@ -498,3 +498,7 @@ x1p64100-microsoft-denali-el2-dtbs  := x1p64100-microsoft-denali.dtb x1-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)        += x1p64100-microsoft-denali.dtb x1p64100-microsoft-denali-el2.dtb
 x1p42100-microsoft-sp12in-el2-dtbs     := x1p42100-microsoft-sp12in.dtb x1-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)        += x1p42100-microsoft-sp12in.dtb x1p42100-microsoft-sp12in-el2.dtb
+x1e80100-samsung-galaxy-book4-edge-14-el2-dtbs := x1e80100-samsung-galaxy-book4-edge-14.dtb x1-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)        += x1e80100-samsung-galaxy-book4-edge-14.dtb x1e80100-samsung-galaxy-book4-edge-14-el2.dtb
+x1e84100-samsung-galaxy-book4-edge-16-el2-dtbs := x1e84100-samsung-galaxy-book4-edge-16.dtb x1-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)        += x1e84100-samsung-galaxy-book4-edge-16.dtb x1e84100-samsung-galaxy-book4-edge-16-el2.dtb
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +99 -0
new file mode 100644
index 000000000..892ac4d0d
@@ -0,0 +1,1529 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025 Kirill A. Korinsky <[email protected]>
+ * Copyright (c) 2025 Valentin Manea <[email protected]>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+#include "hamoa.dtsi"
+#include "hamoa-pmics.dtsi"
+
+/ {
+       model = "Samsung Galaxy Book4 Edge";
+       compatible = "samsung,galaxy-book4-edge", "qcom,x1e80100";
+       chassis-type = "laptop";
+
+       aliases {
+               serial0 = &uart21;
+               serial1 = &uart14;
+       };
+
+       wcd938x: audio-codec {
+               compatible = "qcom,wcd9385-codec";
+
+               pinctrl-0 = <&wcd_default>;
+               pinctrl-names = "default";
+
+               qcom,micbias1-microvolt = <1800000>;
+               qcom,micbias2-microvolt = <1800000>;
+               qcom,micbias3-microvolt = <1800000>;
+               qcom,micbias4-microvolt = <1800000>;
+               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+               qcom,rx-device = <&wcd_rx>;
+               qcom,tx-device = <&wcd_tx>;
+
+               reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
+
+               vdd-buck-supply = <&vreg_l15b_1p8>;
+               vdd-rxtx-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l15b_1p8>;
+               vdd-mic-bias-supply = <&vreg_bob1>;
+
+               #sound-dai-cells = <1>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&hall_int_n_default>;
+               pinctrl-names = "default";
+
+               switch-lid {
+                       gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       wakeup-source;
+                       wakeup-event-action = <EV_ACT_DEASSERTED>;
+               };
+       };
+
+       hdmi-bridge {
+               compatible = "realtek,rtd2171";
+
+               pinctrl-0 = <&hdmi_hpd_default>;
+               pinctrl-names = "default";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               hdmi_bridge_dp_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss2_qmpphy_out_dp>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               hdmi_bridge_tmds_out: endpoint {
+                                       remote-endpoint = <&hdmi_con>;
+                               };
+                       };
+               };
+       };
+
+       hdmi-connector {
+               compatible = "hdmi-connector";

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 109

Quoted 10 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +10 -0
+               type = "a";
+
+               port {
+                       hdmi_con: endpoint {
+                               remote-endpoint = <&hdmi_bridge_tmds_out>;
+                       };
+               };
+       };
+
+       /* Still needed until there's a proper driver for type-c controller */

What happens if you remove it? the device has no pmic-glink and registers an invalid driver. Can someone suggest an alternative?

Quoted 805 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +805 -0
+       pmic-glink {
+               compatible = "qcom,x1e80100-pmic-glink",
+                            "qcom,sm8550-pmic-glink",
+                            "qcom,pmic-glink";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
+                                   <&tlmm 123 GPIO_ACTIVE_HIGH>;
+
+               /* Left-side rear port */
+               connector@0 {
+                       compatible = "usb-c-connector";
+                       reg = <0>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss0_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss0_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss0_ss_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss0_sbu: endpoint {
+                                               remote-endpoint = <&usb_1_ss0_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+
+               /* Left-side front port */
+               connector@1 {
+                       compatible = "usb-c-connector";
+                       reg = <1>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss1_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss1_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss1_ss_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss1_sbu: endpoint {
+                                               remote-endpoint = <&usb_1_ss1_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       reserved-memory {
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       size = <0x0 0x8000000>;
+                       reusable;
+                       linux,cma-default;
+               };
+       };
+
+       sound {
+               compatible = "qcom,x1e80100-sndcard";
+               model = "X1E80100-GalaxyBook4Edge";
+               audio-routing = "WooferLeft IN", "WSA WSA_SPK1 OUT",
+                               "TweeterLeft IN", "WSA WSA_SPK2 OUT",
+                               "WooferRight IN", "WSA2 WSA_SPK1 OUT",
+                               "TweeterRight IN", "WSA2 WSA_SPK2 OUT",
+                               "IN1_HPHL", "HPHL_OUT",
+                               "IN2_HPHR", "HPHR_OUT",
+                               "AMIC2", "MIC BIAS2",
+                               "VA DMIC0", "MIC BIAS3",
+                               "VA DMIC1", "MIC BIAS3",
+                               "VA DMIC2", "MIC BIAS1",
+                               "VA DMIC3", "MIC BIAS1",
+                               "TX SWR_INPUT1", "ADC2_OUTPUT";
+
+               wcd-playback-dai-link {
+                       link-name = "WCD Playback";
+
+                       codec {
+                               sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wcd-capture-dai-link {
+                       link-name = "WCD Capture";
+
+                       codec {
+                               sound-dai = <&wcd938x 1>, <&swr2 1>, <&lpass_txmacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wsa-dai-link {
+                       link-name = "WSA Playback";
+
+                       codec {
+                               sound-dai = <&left_woofer>, <&left_tweeter>,
+                                           <&swr0 0>, <&lpass_wsamacro 0>,
+                                           <&right_woofer>, <&right_tweeter>,
+                                           <&swr3 0>, <&lpass_wsa2macro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               va-dai-link {
+                       link-name = "VA Capture";
+
+                       codec {
+                               sound-dai = <&lpass_vamacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+       };
+
+       vreg_octa_vdd: regulator-octa-vdd {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_OCTA_VDD";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 111 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&octa_vdd_en>;
+               pinctrl-names = "default";
+
+               startup-delay-us = <1000>;
+               regulator-enable-ramp-delay = <1000>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vreg_display_vdd: regulator-display-vdd {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_DISPLAY_VDD";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 120 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&display_vdd_en>;
+               pinctrl-names = "default";
+
+               startup-delay-us = <400000>;
+               regulator-enable-ramp-delay = <400000>;
+
+               vin-supply = <&vreg_octa_vdd>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vreg_edp_3p3: regulator-edp-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_EDP_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 70 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&edp_reg_en>;
+               pinctrl-names = "default";
+
+               startup-delay-us = <1000>;
+               regulator-enable-ramp-delay = <1000>;
+
+               vin-supply = <&vreg_display_vdd>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+
+       vreg_misc_3p3: regulator-misc-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_MISC_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pm8550ve_8_gpios 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&misc_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vph_pwr: regulator-vph-pwr {
+               compatible = "regulator-fixed";
+
+               regulator-name = "vph_pwr";
+               regulator-min-microvolt = <3700000>;
+               regulator-max-microvolt = <3700000>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vreg_wcn_3p3: regulator-wcn-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&wcn_sw_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       usb-1-ss0-sbu-mux {
+               compatible = "onnn,fsusb42", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 168 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 167 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&usb_1_ss0_sbu_default>;
+               pinctrl-names = "default";
+
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       usb_1_ss0_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_ss0_sbu>;
+                       };
+               };
+       };
+
+       usb-1-ss1-sbu-mux {
+               compatible = "onnn,fsusb42", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 179 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 178 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&usb_1_ss1_sbu_default>;
+               pinctrl-names = "default";
+
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       usb_1_ss1_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_ss1_sbu>;
+                       };
+               };
+       };
+
+       wcn7850-pmu {
+               compatible = "qcom,wcn7850-pmu";
+
+               wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
+               bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&wcn_wlan_bt_en>;
+               pinctrl-names = "default";
+
+               regulators {
+                       vreg_pmu_rfa_cmn: ldo0 {
+                               regulator-name = "vreg_pmu_rfa_cmn";
+                       };
+
+                       vreg_pmu_aon_0p59: ldo1 {
+                               regulator-name = "vreg_pmu_aon_0p59";
+                       };
+
+                       vreg_pmu_wlcx_0p8: ldo2 {
+                               regulator-name = "vreg_pmu_wlcx_0p8";
+                       };
+
+                       vreg_pmu_wlmx_0p85: ldo3 {
+                               regulator-name = "vreg_pmu_wlmx_0p85";
+                       };
+
+                       vreg_pmu_btcmx_0p85: ldo4 {
+                               regulator-name = "vreg_pmu_btcmx_0p85";
+                       };
+
+                       vreg_pmu_rfa_0p8: ldo5 {
+                               regulator-name = "vreg_pmu_rfa_0p8";
+                       };
+
+                       vreg_pmu_rfa_1p2: ldo6 {
+                               regulator-name = "vreg_pmu_rfa_1p2";
+                       };
+
+                       vreg_pmu_rfa_1p8: ldo7 {
+                               regulator-name = "vreg_pmu_rfa_1p8";
+                       };
+
+                       vreg_pmu_pcie_0p9: ldo8 {
+                               regulator-name = "vreg_pmu_pcie_0p9";
+                       };
+
+                       vreg_pmu_pcie_1p8: ldo9 {
+                               regulator-name = "vreg_pmu_pcie_1p8";
+                       };
+               };
+       };
+};
+
+&apps_rsc {
+       regulators-0 {
+               compatible = "qcom,pm8550-rpmh-regulators";
+               qcom,pmic-id = "b";
+
+               vdd-bob1-supply = <&vph_pwr>;
+               vdd-bob2-supply = <&vph_pwr>;
+               vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
+               vdd-l2-l13-l14-supply = <&vreg_bob1>;
+               vdd-l5-l16-supply = <&vreg_bob1>;
+               vdd-l6-l7-supply = <&vreg_bob2>;
+               vdd-l8-l9-supply = <&vreg_bob1>;
+               vdd-l12-supply = <&vreg_s5j_1p2>;
+               vdd-l15-supply = <&vreg_s4c_1p8>;
+               vdd-l17-supply = <&vreg_bob2>;
+
+               vreg_bob1: bob1 {
+                       regulator-name = "vreg_bob1";
+                       regulator-min-microvolt = <3008000>;
+                       regulator-max-microvolt = <3960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_bob2: bob2 {
+                       regulator-name = "vreg_bob2";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <3008000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1b_1p8: ldo1 {
+                       regulator-name = "vreg_l1b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2b_3p0: ldo2 {
+                       regulator-name = "vreg_l2b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l4b_1p8: ldo4 {
+                       regulator-name = "vreg_l4b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l5b_3p0: ldo5 {
+                       regulator-name = "vreg_l5b_3p0";
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l6b_1p8: ldo6 {
+                       regulator-name = "vreg_l6b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l7b_2p8: ldo7 {
+                       regulator-name = "vreg_l7b_2p8";
+                       regulator-always-on;
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l8b_3p0: ldo8 {
+                       regulator-name = "vreg_l8b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l9b_2p9: ldo9 {
+                       regulator-name = "vreg_l9b_2p9";
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l10b_1p8: ldo10 {
+                       regulator-name = "vreg_l10b_1p8";
+                       regulator-always-on;
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l12b_1p2: ldo12 {
+                       regulator-name = "vreg_l12b_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l13b_3p0: ldo13 {
+                       regulator-name = "vreg_l13b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l14b_3p0: ldo14 {
+                       regulator-name = "vreg_l14b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l15b_1p8: ldo15 {
+                       regulator-name = "vreg_l15b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l16b_2p9: ldo16 {
+                       regulator-name = "vreg_l16b_2p9";
+                       regulator-min-microvolt = <2912000>;
+                       regulator-max-microvolt = <2912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l17b_2p5: ldo17 {
+                       regulator-name = "vreg_l17b_2p5";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <2504000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-1 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "c";
+
+               vdd-l1-supply = <&vreg_s5j_1p2>;
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s4-supply = <&vph_pwr>;
+
+               vreg_s4c_1p8: smps4 {
+                       regulator-name = "vreg_s4c_1p8";
+                       regulator-min-microvolt = <1856000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1c_1p2: ldo1 {
+                       regulator-name = "vreg_l1c_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2c_0p8: ldo2 {
+                       regulator-name = "vreg_l2c_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3c_0p8: ldo3 {
+                       regulator-name = "vreg_l3c_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-2 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "d";
+
+               vdd-l1-supply = <&vreg_s1f_0p7>;
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s4c_1p8>;
+               vdd-s1-supply = <&vph_pwr>;
+
+               vreg_l1d_0p8: ldo1 {
+                       regulator-name = "vreg_l1d_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2d_0p9: ldo2 {
+                       regulator-name = "vreg_l2d_0p9";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3d_1p8: ldo3 {
+                       regulator-name = "vreg_l3d_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-3 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "e";
+
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s5j_1p2>;
+
+               vreg_l2e_0p8: ldo2 {
+                       regulator-name = "vreg_l2e_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3e_1p2: ldo3 {
+                       regulator-name = "vreg_l3e_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-4 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "f";
+
+               vdd-l1-supply = <&vreg_s5j_1p2>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s5j_1p2>;
+               vdd-s1-supply = <&vph_pwr>;
+
+               vreg_s1f_0p7: smps1 {
+                       regulator-name = "vreg_s1f_0p7";
+                       regulator-min-microvolt = <700000>;
+                       regulator-max-microvolt = <1100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1f_1p0: ldo1 {
+                       regulator-name = "vreg_l1f_1p0";
+                       regulator-min-microvolt = <1024000>;
+                       regulator-max-microvolt = <1024000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2f_1p0: ldo2 {
+                       regulator-name = "vreg_l2f_1p0";
+                       regulator-min-microvolt = <1024000>;
+                       regulator-max-microvolt = <1024000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3f_1p0: ldo3 {
+                       regulator-name = "vreg_l3f_1p0";
+                       regulator-min-microvolt = <1024000>;
+                       regulator-max-microvolt = <1024000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-6 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "i";
+
+               vdd-l1-supply = <&vreg_s4c_1p8>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s1-supply = <&vph_pwr>;
+               vdd-s2-supply = <&vph_pwr>;
+
+               vreg_s1i_0p9: smps1 {
+                       regulator-name = "vreg_s1i_0p9";
+                       regulator-min-microvolt = <900000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_s2i_1p0: smps2 {
+                       regulator-name = "vreg_s2i_1p0";
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1i_1p8: ldo1 {
+                       regulator-name = "vreg_l1i_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2i_1p2: ldo2 {
+                       regulator-name = "vreg_l2i_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3i_0p8: ldo3 {
+                       regulator-name = "vreg_l3i_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-7 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "j";
+
+               vdd-l1-supply = <&vreg_s1f_0p7>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s5-supply = <&vph_pwr>;
+
+               vreg_s5j_1p2: smps5 {
+                       regulator-name = "vreg_s5j_1p2";
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1304000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1j_0p8: ldo1 {
+                       regulator-name = "vreg_l1j_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2j_1p2: ldo2 {
+                       regulator-name = "vreg_l2j_1p2";
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3j_0p8: ldo3 {
+                       regulator-name = "vreg_l3j_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+};
+
+&camcc {
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+
+       zap-shader {
+               firmware-name = "qcom/x1e80100/SAMSUNG/galaxy-book4-edge/qcdxkmsuc8380.mbn";
+       };
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       keyboard@5 {
+               compatible = "hid-over-i2c";
+               reg = <0x5>;
+
+               hid-descr-addr = <0x20>;
+               interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-0 = <&kybd_default>;
+               pinctrl-names = "default";
+
+               wakeup-source;
+       };
+};
+
+&i2c5 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       eusb5_repeater: redriver@43 {
+               compatible = "nxp,ptn3222";
+               reg = <0x43>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb5_reset_n>;
+               pinctrl-names = "default";
+       };
+
+       eusb6_repeater: redriver@4f {
+               compatible = "nxp,ptn3222";
+               reg = <0x4f>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb6_reset_n>;
+               pinctrl-names = "default";
+       };
+};
+
+
+&i2c8 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       touchscreen@5d {
+               compatible = "hid-over-i2c";
+               reg = <0x5d>;

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 924

Quoted 10 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +10 -0
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 34 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+
+               pinctrl-0 = <&ts0_default>;
+               pinctrl-names = "default";
+       };
+};

Touchscreen is enabled, nice

Quoted 212 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +212 -0
+
+&i2c13 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+};
+
+&lpass_tlmm {
+       spkr_01_sd_n_active: spkr-01-sd-n-active-state {
+               pins = "gpio12";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+
+       spkr_23_sd_n_active: spkr-23-sd-n-active-state {
+               pins = "gpio13";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+};
+
+&lpass_vamacro {
+       pinctrl-0 = <&dmic01_default>, <&dmic23_default>;
+       pinctrl-names = "default";
+
+       vdd-micb-supply = <&vreg_l1b_1p8>;
+       qcom,dmic-sample-rate = <4800000>;
+};
+
+&mdss {
+       status = "okay";
+};
+
+&mdss_dp0 {
+       status = "okay";
+};
+
+&mdss_dp0_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp1 {
+       status = "okay";
+};
+
+&mdss_dp1_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp2 {
+       status = "okay";
+};
+
+&mdss_dp2_out {
+       data-lanes = <0 1 2 3>;
+};
+
+&mdss_dp3 {
+       /delete-property/ #sound-dai-cells;
+
+       pinctrl-0 = <&edp0_hpd_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       aux-bus {
+               panel: panel {
+                       enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
+                       power-supply = <&vreg_edp_3p3>;
+                       no-hpd;
+
+                       pinctrl-0 = <&edp_bl_en>;
+                       pinctrl-names = "default";
+
+                       port {
+                               edp_panel_in: endpoint {
+                                       remote-endpoint = <&mdss_dp3_out>;
+                               };
+                       };
+               };
+       };
+
+       ports {
+               port@1 {
+                       reg = <1>;
+                       mdss_dp3_out: endpoint {
+                               data-lanes = <0 1 2 3>;
+                               link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000>;
+
+                               remote-endpoint = <&edp_panel_in>;
+                       };
+               };
+       };
+};
+
+
+&mdss_dp3_phy {
+       vdda-phy-supply = <&vreg_l3j_0p8>;
+       vdda-pll-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&pcie4 {
+       perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
+
+       pinctrl-0 = <&pcie4_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie4_phy {
+       vdda-phy-supply = <&vreg_l3i_0p8>;
+       vdda-pll-supply = <&vreg_l3e_1p2>;
+
+       status = "okay";
+};
+
+&pcie4_port0 {
+       wifi@0 {
+               compatible = "pci17cb,1107";
+               reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+               vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+               vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+       };
+};
+
+&pm8550ve_8_gpios {
+       misc_3p3_reg_en: misc-3p3-reg-en-state {
+               pins = "gpio6";
+               function = "normal";
+               bias-disable;
+               input-disable;
+               output-enable;
+               drive-push-pull;
+               power-source = <1>; /* 1.8 V */
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+       };
+};
+
+&pmc8380_3_gpios {
+       edp_bl_en: edp-bl-en-state {
+               pins = "gpio4";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               input-disable;
+               output-enable;
+       };
+};
+
+&qupv3_0 {
+       status = "okay";
+};
+
+&qupv3_1 {
+       status = "okay";
+};
+
+&qupv3_2 {
+       status = "okay";
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/x1e80100/SAMSUNG/galaxy-book4-edge/qcadsp8380.mbn",
+                       "qcom/x1e80100/SAMSUNG/galaxy-book4-edge/adsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/x1e80100/SAMSUNG/galaxy-book4-edge/qccdsp8380.mbn",
+                       "qcom/x1e80100/SAMSUNG/galaxy-book4-edge/cdsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&swr0 {
+       status = "okay";
+
+       pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
+       pinctrl-names = "default";
+
+       /* WSA8845, Left Woofer */
+       left_woofer: speaker@0,0 {
+               compatible = "sdw20217020400";
+               reg = <0 0>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "WooferLeft";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <1 2 3 7 10 13>;
+       };
+
+       /* WSA8845, Left Tweeter */
+       left_tweeter: speaker@0,1 {

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 1146

Quoted 10 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +10 -0
+               compatible = "sdw20217020400";
+               reg = <0 1>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TweeterLeft";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <4 5 6 7 11 13>;
+       };
+};

Review the speaker setup and consider moving it to individual dts, my devices do not share this setup.

Quoted 76 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +76 -0
+
+&swr1 {
+       status = "okay";
+
+       /* WCD9385 RX */
+       wcd_rx: codec@0,4 {
+               compatible = "sdw20217010d00";
+               reg = <0 4>;
+               qcom,rx-port-mapping = <1 2 3 4 5>;
+       };
+};
+
+&swr2 {
+       status = "okay";
+
+       /* WCD9385 TX */
+       wcd_tx: codec@0,3 {
+               compatible = "sdw20217010d00";
+               reg = <0 3>;
+               qcom,tx-port-mapping = <2 2 3 4>;
+       };
+};
+
+&swr3 {
+       status = "okay";
+
+       pinctrl-0 = <&wsa2_swr_active>, <&spkr_23_sd_n_active>;
+       pinctrl-names = "default";
+
+       /* WSA8845, Right Woofer */
+       right_woofer: speaker@0,0 {
+               compatible = "sdw20217020400";
+               reg = <0 0>;
+               reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "WooferRight";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <1 2 3 7 10 13>;
+       };
+
+       /* WSA8845, Right Tweeter */
+       right_tweeter: speaker@0,1 {
+               compatible = "sdw20217020400";
+               reg = <0 1>;
+               reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TweeterRight";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <4 5 6 7 11 13>;
+       };
+};
+
+&tlmm {
+       gpio-reserved-ranges = <35 1>, /* Unused */
+                              <44 4>; /* SPI (TPM) */
+
+       edp_reg_en: edp-reg-en-state {
+               pins = "gpio70";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-pull-up;
+               output-low;
+       };
+
+       octa_vdd_en: octa-vdd-en-state {
+               pins = "gpio111";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-pull-up;
+               output-high;
+       };
+
+       display_vdd_en: display-vdd-en-state {
+               pins = "gpio120";

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 1232

Quoted 10 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +10 -0
+               function = "gpio";
+               drive-strength = <16>;
+               bias-pull-up;
+               output-high;
+       };
+
+       edp0_hpd_default: edp0-hpd-default-state {
+               pins = "gpio119";
+               function = "edp0_hot";
+               bias-pull-down;

This node should not pull down (at least on the 14in) and is set as bias-disable; by firmware according to journalctl.

Replace with bias-pull-down; with bias-disable;

Quoted 287 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +287 -0
+               input-enable;
+               drive-strength = <2>;
+       };
+
+
+       hall_int_n_default: hall-int-n-state {
+               pins = "gpio92";
+               function = "gpio";
+               bias-disable;
+       };
+
+       kybd_default: kybd-default-state {
+               pins = "gpio67";
+               function = "gpio";
+               bias-disable;
+       };
+
+       hdmi_hpd_default: hdmi-hpd-default-state {
+               pins = "gpio126";
+               function = "usb2_dp";
+               bias-disable;
+       };
+
+       eusb5_reset_n: eusb5-reset-n-state {
+               pins = "gpio7";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       eusb6_reset_n: eusb6-reset-n-state {
+               pins = "gpio184";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       pcie4_default: pcie4-default-state {
+               clkreq-n-pins {
+                       pins = "gpio147";
+                       function = "pcie4_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio146";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio148";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       tpad_default: tpad-default-state {
+               pins = "gpio3";
+               function = "gpio";
+               bias-disable;
+       };
+
+       ts0_default: ts0-default-state {
+               pins = "gpio34";
+               function = "gpio";
+               bias-disable;
+       };
+
+       usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
+               mode-pins {
+                       pins = "gpio166";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+                       output-high;
+               };
+
+               oe-n-pins {
+                       pins = "gpio168";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+
+               sel-pins {
+                       pins = "gpio167";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+
+       };
+
+       usb_1_ss1_sbu_default: usb-1-ss1-sbu-state {
+               mode-pins {
+                       pins = "gpio177";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+                       output-high;
+               };
+
+               oe-n-pins {
+                       pins = "gpio179";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+
+               sel-pins {
+                       pins = "gpio178";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+       };
+
+       wcn_sw_en: wcn-sw-en-state {
+               pins = "gpio214";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       wcn_wlan_bt_en: wcn-wlan-bt-en-state {
+               pins = "gpio116", "gpio117";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       wcd_default: wcd-reset-n-active-state {
+               pins = "gpio191";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+};
+
+&ufs_mem_hc {
+       status = "okay";
+
+       reset-gpios = <&tlmm 238 GPIO_ACTIVE_LOW>;
+       vcc-supply = <&vreg_l17b_2p5>;
+       vcc-max-microamp = <600000>;
+
+       vccq-supply = <&vreg_l2i_1p2>;
+       vccq-max-microamp = <600000>;
+};
+
+&ufs_mem_phy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l3i_0p8>;
+       vdda-pll-supply = <&vreg_l3e_1p2>;
+};
+
+&uart14 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn7850-bt";
+               max-speed = <3200000>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+       };
+};
+
+&uart21 {
+       compatible = "qcom,geni-debug-uart";
+       status = "okay";
+};
+
+&usb_1_ss0 {
+       status = "okay";
+};
+
+&usb_1_ss0_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&usb_1_ss0_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l1j_0p8>;
+
+       status = "okay";
+};
+
+&usb_1_ss0 {
+       dr_mode = "host";
+};
+
+&usb_1_ss0_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss0_hs_in>;
+};
+
+&usb_1_ss0_qmpphy_out {
+       remote-endpoint = <&pmic_glink_ss0_ss_in>;
+};
+
+&usb_1_ss1 {
+       status = "okay";
+};
+
+&usb_1_ss1_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&usb_1_ss1_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l2d_0p9>;
+
+       status = "okay";
+};
+
+&usb_1_ss1 {
+       dr_mode = "host";
+};
+
+&usb_1_ss1_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss1_hs_in>;
+};
+
+&usb_1_ss1_qmpphy_out {
+       remote-endpoint = <&pmic_glink_ss1_ss_in>;
+};
+
+&usb_1_ss2_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l2d_0p9>;
+
+       /delete-property/ mode-switch;
+       /delete-property/ orientation-switch;
+
+       status = "okay";
+
+       ports {
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /delete-node/ endpoint;
+
+                       usb_1_ss2_qmpphy_out_dp: endpoint@0 {
+                               reg = <0>;
+
+                               data-lanes = <3 2 1 0>;
+                               remote-endpoint = <&hdmi_bridge_dp_in>;
+                       };
+               };
+       };
+};
+
+
+/* MP0 goes to the USB-A port(USB3) and FPC */
+&usb_mp {
+       status = "okay";
+
+       /* Limit to single port */
+       phys = <&usb_mp_hsphy0>, <&usb_mp_qmpphy0>;
+       phy-names = "usb2-0", "usb3-0";
+};
+
+&usb_mp_hsphy0 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb6_repeater>;

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 1529

Quoted 10 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +10 -0
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};

The three nodes above are bogus on the 14in, it has no USBA port. Please move them to the 16 dts. Otherwise you block boot until the controller times out.

I think that is all. You can recheck my current tree and perhaps grab a fix or two more. I am not sure which apply, especially the speakers. I squashed on top of yours and separated the X1E. I also implemented backlight control and fan control by converting the EC driver into a proper platform driver.

Best,
Antheas

Quoted 74 lines
arch/arm64/boot/dts/qcom/x1e80100-samsung-galaxy-book4-edge-14.dts new file +28 -0
new file mode 100644
index 000000000..333a69a8a
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+/dts-v1/;
+
+#include "x1-samsung-galaxy-book4-edge.dtsi"
+
+/ {
+       model = "Samsung Galaxy Book4 Edge (14 inch)";
+       compatible = "samsung,galaxy-book4-edge-14", "samsung,galaxy-book4-edge",
+                    "qcom,x1e80100";
+};
+
+&i2c13 {
+       touchpad@40 {
+               compatible = "hid-over-i2c";
+               reg = <0x40>;
+
+               hid-descr-addr = <0xe>;
+               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-0 = <&tpad_default>;
+               pinctrl-names = "default";
+       };
+};
+
+&panel {
+       compatible = "samsung,atna40cu07", "samsung,atna33xc20";
+};
arch/arm64/boot/dts/qcom/x1e84100-samsung-galaxy-book4-edge-16.dts new file +31 -1
new file mode 100644
index 000000000..947eea411
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+/dts-v1/;
+
+#include "x1-samsung-galaxy-book4-edge.dtsi"
+
+/ {
+       model = "Samsung Galaxy Book4 Edge (16 inch)";
+       compatible = "samsung,galaxy-book4-edge-16", "samsung,galaxy-book4-edge",
+                    "qcom,x1e80100";
+};
+
+&i2c13 {
+       touchpad@50 {
+               compatible = "hid-over-i2c";
+               reg = <0x50>;
+
+               hid-descr-addr = <0xd1>;
+               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+               vddl-supply = <&vreg_l15b_1p8>;
+
+               pinctrl-0 = <&tpad_default>;
+               pinctrl-names = "default";
+       };
+};
+
+&panel {
+       compatible = "samsung,atna60cl07", "samsung,atna33xc20";
+};
--

2.43.0

#8 lore raw

Re: [PATCH v8 3/3] arm64: dts: qcom: Add hamoa Samsung Galaxy Book4 Edge devicetrees

Quoted 7 lines · Antheas Kapenekakis

Review

Quoted 3 lines · Maxim Storetvedt
(quoted diff) +2 -0
+
+       /* Still needed until there's a proper driver for type-c controller */

What happens if you remove it? the device has no pmic-glink and registers an invalid driver. Can someone suggest an alternative?

No display/drm and blocks boot shortly after. Not much in dmesg ("failed to acquire drm_bridge"). Something's not registered/probed(?). Probably still working over in your dts since its EmuMC driver re-adds what's missing in the chain.

Quoted 35 lines
Quoted 35 lines
(quoted diff) +34 -0
+       pmic-glink {
+               compatible = "qcom,x1e80100-pmic-glink",
+                            "qcom,sm8550-pmic-glink",
+                            "qcom,pmic-glink";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
+                                   <&tlmm 123 GPIO_ACTIVE_HIGH>;
+ [...]
+&swr0 {
+       status = "okay";
+
+       pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
+       pinctrl-names = "default";
+
+       /* WSA8845, Left Woofer */
+       left_woofer: speaker@0,0 {
+               compatible = "sdw20217020400";
+               reg = <0 0>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "WooferLeft";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <1 2 3 7 10 13>;
+       };
+
+       /* WSA8845, Left Tweeter */
+       left_tweeter: speaker@0,1 {
+               compatible = "sdw20217020400";
+               reg = <0 1>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TweeterLeft";
Quoted 9 lines

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi line 1146

Quoted 5 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +5 -0
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <4 5 6 7 11 13>;
+       };
+};

Review the speaker setup and consider moving it to individual dts, my devices do not share this setup.

Speakers not tested, so this setup might not apply either. Perhaps better to remove the nodes for now in that case.

Cheers,
-Max