Skip to contentSkip to conversation

Add initial DTS for Samsung Galaxy Book4 Edge

PATCH Superseded Maxim Storetvedt 5 participants 15 messages Sep 20 – Sep 29

Subsystems (3)

v7 of 8 Superseded Latest is v8 →

lore
Share & tools
lore
#0 lore raw

v7 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 v6 [1].

Supported:
- Keyboard
- Touchpad
- USB type-c
- Display
- HDMI
- WiFi
- Bluetooth
- ADSP / CDSP
- GPU
- UFS
- Suspend

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

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             |    2 +
 .../qcom/x1-samsung-galaxy-book4-edge.dtsi    | 1537 +++++++++++++++++
 .../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, 1606 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 v7 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 v7 1/3] dt-bindings: arm: Add Samsung Galaxy Book4 Edge

Quoted 4 lines · Maxim Storetvedt

Add the Samsung Galaxy Book4 Edge compatibility bindings

---

<form letter>
This is a friendly reminder during the review process.

It looks like you received a tag and forgot to add it.

If you do not know the process, here is a short explanation:
Please add Acked-by/Reviewed-by/Tested-by tags when posting new versions of patchset, under or above your Signed-off-by tag, unless patch changed significantly (e.g. new properties added to the DT bindings). Tag is "received", when provided in a message replied to you on the mailing list. Tools like b4 can help here. However, there's no need to repost patches *only* to add the tags. The upstream maintainer will do that for tags received on the version they apply.

Please read:
https://elixir.bootlin.com/linux/v6.12-rc3/source/Documentation/process/submitting-patches.rst#L577

If a tag was not added on purpose, please state in the patch changelog or cover letter why and what changed.
</form letter>

Best regards,
Krzysztof

#3 lore raw

PATCH v7 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
#4 lore raw

PATCH v7 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

as well as 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.

---
 arch/arm64/boot/dts/qcom/Makefile             |    2 +
 .../qcom/x1-samsung-galaxy-book4-edge.dtsi    | 1537 +++++++++++++++++
 .../x1e80100-samsung-galaxy-book4-edge-14.dts |   28 +
 .../x1e84100-samsung-galaxy-book4-edge-16.dts |   31 +
 4 files changed, 1598 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 +2 -0
index 5c19f945c..d8273f86f 100644
@@ -498,3 +498,5 @@ 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
+dtb-$(CONFIG_ARCH_QCOM)	+= x1e80100-samsung-galaxy-book4-edge-14.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= x1e84100-samsung-galaxy-book4-edge-16.dtb
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +1537 -0

1,537 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
#5 lore raw

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

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider: - [Medium] dt-bindings: touchscreen@5d node missing interrupts property - [Medium] sound: incorrect audio…

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [Medium] dt-bindings: touchscreen@5d node missing interrupts property
- [Medium] sound: incorrect audio routing for right speakers to same macro output
- [Low] dt-bindings: invalid enable-active-low property in regulator-fixed node
- [Low] dt-bindings: pmic-glink missing qcom,sm8550-pmic-glink fallback string --

commit 2d1c565b5f3cc1fc06395b66ffcf702541cf9a0d
Author: Maxim Storetvedt <[email protected]>

arm64: dts: qcom: Add hamoa Samsung Galaxy Book4 Edge devicetrees

This commit adds devicetrees for the 14-inch and 16-inch hamoa SKUs of the Samsung Galaxy Book4 Edge. It uses a common dtsi derived from nodes that were able to work on Linux.

Quoted 5 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +0 -0
new file mode 100644
index 0000000000000..51ec68bbab141

[ ... ]

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

Quoted 3 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +3 -0
+	pmic-glink {
+		compatible = "qcom,x1e80100-pmic-glink",
+			     "qcom,pmic-glink";

[Severity: Low]
Does this violate the pmic-glink devicetree schema? The schema requires that "qcom,x1e80100-pmic-glink" must be followed by the "qcom,sm8550-pmic-glink" fallback string.

Omitting the intermediate fallback will trigger dtbs_check warnings, even though the driver matches "qcom,x1e80100-pmic-glink" directly.

[ ... ]

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

Quoted 7 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +7 -0
+	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_SPK2 OUT",
+				"TweeterRight IN", "WSA2 WSA_SPK2 OUT",

[Severity: Medium]
Is the right-side audio routing mapped correctly here? Both "WooferRight IN" and "TweeterRight IN" are mapped to the same "WSA2 WSA_SPK2 OUT" macro channel.

It appears "WooferRight IN" should map to "WSA2 WSA_SPK1 OUT" to maintain discrete stereo/crossover separation for the right side, instead of routing both to the same output channel.

[ ... ]

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

Quoted 9 lines
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +9 -0
+	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>;
+		enable-active-low;

[Severity: Low]
Is it correct to include the enable-active-low property here?

The regulator-fixed bindings do not support this property (only enable-active-high is valid). Active-low polarity is already correctly and implicitly defined by the GPIO_ACTIVE_LOW flag in the gpio specifier. Leaving this in will trigger a dtbs_check schema validation error.

[ ... ]

Quoted 8 lines

+&i2c8 {

arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +7 -0
+	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 923

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

[Severity: Medium]
Will this node fail to probe? The hid-over-i2c binding requires the interrupts or interrupts-extended property.

Since interrupts-extended is commented out but the node remains active (no status = "disabled"), the i2c-hid driver will unconditionally fail to probe without an IRQ. This leaves the touchscreen non-functional and the devicetree schema invalid. Should this node either be properly configured or marked disabled?

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=3
#6 lore raw

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

In reply to Maxim Storetvedt
Quoted 9 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

Quoted 7 lines

as well as 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.

There are no such tags. Don't invent own.

Either they provided SoB for the code you used, or not. If they did, then you could take them. Otherwise not and read obligations on your side expressed in DCO.

Also look at Co-developed tag, if that's applicable.

Best regards,
Krzysztof

#7 lore raw

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

Quoted 20 lines · Krzysztof Kozlowski
Quoted 9 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

Quoted 7 lines

as well as 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.

There are no such tags. Don't invent own.

Quoted 9 lines

Either they provided SoB for the code you used, or not. If they did, then you could take them. Otherwise not and read obligations on your side expressed in DCO.

Also look at Co-developed tag, if that's applicable.

Best regards,
Krzysztof

Not formal tags by any means; both of these patches have been very useful though, and should somehow be highlighted. Bon, to be revisited.

In the meantime, there seem to be some sashiko warnings that need to be addressed before this series can continue in any case.

Cheers,
-Max

#8 lore raw

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

In reply to Maxim Storetvedt
Quoted 11 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

Links go in the bottom, Based-on-a-patch is not a thing, you may add a Coby as noted in a parallel thread.

Quoted 2 lines

as well as 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.

Hi Maxim,
I tested this series on a kernel with various other backports on two european (norwegian market) galaxy book4 edges.

Specifically, the 14in NP940XMA and the 15.6in (not 16) NP750XQB. Specifically, the later is an X1Plus variant that came out a year later with cheaper components. It does not work properly on either on them. I was hoping that at least the 14in model would work as is but no.

My test devices have proprietary Samsung battery controllers (ENE-KB9058) and type C controllers (Samsung EmuEC). Also the speaker amplifiers are different. So the battery reporting, audio, and USB C ports do not work at all using your DTs. The TPM does not bind either but you do not claim that it does. At least they got me to boot and for that I am grateful.

Other stuff also does not work, but I am just listing the main ones.

I suggest you change the -14/-16 suffixes on both models with something more specific.

The prior patches in the series look fine to my eyes. I did not A/B test them, just pulled them in.

Best,
Antheas

Quoted 1,640 lines
---
 arch/arm64/boot/dts/qcom/Makefile             |    2 +
 .../qcom/x1-samsung-galaxy-book4-edge.dtsi    | 1537 +++++++++++++++++
 .../x1e80100-samsung-galaxy-book4-edge-14.dts |   28 +
 .../x1e84100-samsung-galaxy-book4-edge-16.dts |   31 +
 4 files changed, 1598 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 +2 -0
index 5c19f945c..d8273f86f 100644
@@ -498,3 +498,5 @@ 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
+dtb-$(CONFIG_ARCH_QCOM)        += x1e80100-samsung-galaxy-book4-edge-14.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += x1e84100-samsung-galaxy-book4-edge-16.dtb
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +1537 -0
new file mode 100644
index 000000000..51ec68bba
@@ -0,0 +1,1537 @@
+// 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";
+               type = "a";
+
+               port {
+                       hdmi_con: endpoint {
+                               remote-endpoint = <&hdmi_bridge_tmds_out>;
+                       };
+               };
+       };
+
+       pmic-glink {
+               compatible = "qcom,x1e80100-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_SPK2 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>;
+               enable-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>;
+
+               hid-descr-addr = <0x1>;
+               //interrupts-extended = <&tlmm 34 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+
+               //pinctrl-0 = <&ts0_default>;
+               //pinctrl-names = "default";
+       };
+};
+
+&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 {
+               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>;
+       };
+};
+
+&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 = <34 2>, /* 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";
+               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;
+               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 {
+               int-n-pins {
+                       pins = "gpio51";
+                       function = "gpio";
+                       bias-disable;
+               };
+
+               reset-n-pins {
+                       pins = "gpio48";
+                       function = "gpio";
+                       output-high;
+                       drive-strength = <16>;
+               };
+       };
+
+       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>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};
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

#9 lore raw

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

Quoted 37 lines · Antheas Kapenekakis
Quoted 11 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

Links go in the bottom, Based-on-a-patch is not a thing, you may add a Coby as noted in a parallel thread.

Quoted 2 lines

as well as 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.

Hi Maxim,
I tested this series on a kernel with various other backports on two european (norwegian market) galaxy book4 edges.

Specifically, the 14in NP940XMA and the 15.6in (not 16) NP750XQB. Specifically, the later is an X1Plus variant that came out a year later with cheaper components. It does not work properly on either on them. I was hoping that at least the 14in model would work as is but no.

My test devices have proprietary Samsung battery controllers (ENE-KB9058) and type C controllers (Samsung EmuEC). Also the speaker amplifiers are different. So the battery reporting, audio, and USB C ports do not work at all using your DTs. The TPM does not bind either but you do not claim that it does. At least they got me to boot and for that I am grateful.

Quoted 7 lines

Other stuff also does not work, but I am just listing the main ones.

I suggest you change the -14/-16 suffixes on both models with something more specific.

The prior patches in the series look fine to my eyes. I did not A/B test them, just pulled them in.

Wrong email again. Sorry. Please reply to my kernel email, best.

Quoted 1,643 lines

Best,
Antheas

Quoted 1,640 lines
---
 arch/arm64/boot/dts/qcom/Makefile             |    2 +
 .../qcom/x1-samsung-galaxy-book4-edge.dtsi    | 1537 +++++++++++++++++
 .../x1e80100-samsung-galaxy-book4-edge-14.dts |   28 +
 .../x1e84100-samsung-galaxy-book4-edge-16.dts |   31 +
 4 files changed, 1598 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 +2 -0
index 5c19f945c..d8273f86f 100644
@@ -498,3 +498,5 @@ 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
+dtb-$(CONFIG_ARCH_QCOM)        += x1e80100-samsung-galaxy-book4-edge-14.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += x1e84100-samsung-galaxy-book4-edge-16.dtb
arch/arm64/boot/dts/qcom/x1-samsung-galaxy-book4-edge.dtsi new file +1537 -0
new file mode 100644
index 000000000..51ec68bba
@@ -0,0 +1,1537 @@
+// 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";
+               type = "a";
+
+               port {
+                       hdmi_con: endpoint {
+                               remote-endpoint = <&hdmi_bridge_tmds_out>;
+                       };
+               };
+       };
+
+       pmic-glink {
+               compatible = "qcom,x1e80100-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_SPK2 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>;
+               enable-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>;
+
+               hid-descr-addr = <0x1>;
+               //interrupts-extended = <&tlmm 34 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+
+               //pinctrl-0 = <&ts0_default>;
+               //pinctrl-names = "default";
+       };
+};
+
+&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 {
+               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>;
+       };
+};
+
+&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 = <34 2>, /* 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";
+               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;
+               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 {
+               int-n-pins {
+                       pins = "gpio51";
+                       function = "gpio";
+                       bias-disable;
+               };
+
+               reset-n-pins {
+                       pins = "gpio48";
+                       function = "gpio";
+                       output-high;
+                       drive-strength = <16>;
+               };
+       };
+
+       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>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};
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

#10 lore raw

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

In reply to Antheas Kapenekakis
Quoted 38 lines · Antheas Kapenekakis
Quoted 11 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

Links go in the bottom, Based-on-a-patch is not a thing, you may add a Coby as noted in a parallel thread.

Quoted 2 lines

as well as 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.

Hi Maxim,
I tested this series on a kernel with various other backports on two european (norwegian market) galaxy book4 edges.

Specifically, the 14in NP940XMA and the 15.6in (not 16) NP750XQB. Specifically, the later is an X1Plus variant that came out a year later with cheaper components. It does not work properly on either on them. I was hoping that at least the 14in model would work as is but no.

My test devices have proprietary Samsung battery controllers (ENE-KB9058) and type C controllers (Samsung EmuEC). Also the speaker amplifiers are different. So the battery reporting, audio, and USB C ports do not work at all using your DTs. The TPM does not bind either but you do not claim that it does. At least they got me to boot and for that I am grateful.

Other stuff also does not work, but I am just listing the main ones.

Quoted 9 lines

I suggest you change the -14/-16 suffixes on both models with something more specific.

The prior patches in the series look fine to my eyes. I did not A/B test them, just pulled them in.

Best,
Antheas

Hi Antheas,

Thanks for giving it a test! I think we both have the (almost) same device, and your experience on the 14" NP940XMA (NO) probably mirrors that of my NP940XMA (IT).

USB-C should already work for this SKU with the patch DT, but not USB-C hotplug (yet). For now, everything is just left as already set up by the firmware, so peripherals plugged in after boot will not be detected. Everything inserted before boot, and hotplug on USB hubs, should still be fine. Could you give it a try on your device?

Battery state monitoring should also be with the same caveats on both these devices, going via a separate protocol over I2C instead of following the other X1Es. There is a separate battery driver for this, and also other useful patches (like the webcam and kb backlight) downstream. For now at least, only the features listed in the cover are included here, but our repo linked there has pointers to the other relevant patches needed for now.

On that topic, you will also find links to devicetrees for the X1P42100 Book4 Edge there (via Ciscobugger). This might not be the same X1P SKU, but could also be worth a try.

Cheers,
-Max

#11 lore raw

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

Quoted 57 lines · Maxim Storetvedt
Quoted 38 lines · Antheas Kapenekakis
Quoted 11 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

Links go in the bottom, Based-on-a-patch is not a thing, you may add a Coby as noted in a parallel thread.

Quoted 2 lines

as well as 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.

Hi Maxim,
I tested this series on a kernel with various other backports on two european (norwegian market) galaxy book4 edges.

Specifically, the 14in NP940XMA and the 15.6in (not 16) NP750XQB. Specifically, the later is an X1Plus variant that came out a year later with cheaper components. It does not work properly on either on them. I was hoping that at least the 14in model would work as is but no.

My test devices have proprietary Samsung battery controllers (ENE-KB9058) and type C controllers (Samsung EmuEC). Also the speaker amplifiers are different. So the battery reporting, audio, and USB C ports do not work at all using your DTs. The TPM does not bind either but you do not claim that it does. At least they got me to boot and for that I am grateful.

Other stuff also does not work, but I am just listing the main ones.

Quoted 9 lines

I suggest you change the -14/-16 suffixes on both models with something more specific.

The prior patches in the series look fine to my eyes. I did not A/B test them, just pulled them in.

Best,
Antheas

Hi Antheas,

Thanks for giving it a test! I think we both have the (almost) same device, and your experience on the 14" NP940XMA (NO) probably mirrors that of my NP940XMA (IT).

Quoted 5 lines

USB-C should already work for this SKU with the patch DT, but not USB-C hotplug (yet). For now, everything is just left as already set up by the firmware, so peripherals plugged in after boot will not be detected. Everything inserted before boot, and hotplug on USB hubs, should still be fine. Could you give it a try on your device?

Yes, that mirrors my experience. But without a TypeC driver you don't get renegotiation. So no USB3, no fast charging, no hotplugging, and no DP alt mode. I wrote one but it's still buggy and a bit too complicated.

Quoted 7 lines

Battery state monitoring should also be with the same caveats on both these devices, going via a separate protocol over I2C instead of following the other X1Es. There is a separate battery driver for this, and also other useful patches (like the webcam and kb backlight) downstream. For now at least, only the features listed in the cover are included here, but our repo linked there has pointers to the other relevant patches needed for now.

I did not find a battery driver so likewise I wrote mine. I think the battery driver is more upstreamable than the TypeC driver. That will take a lot of work.

But it also means you have a spurious hunk on your dt then. The hunk that registers the dead battery and supposedly controls the TypeC connectors from qualcomm can be removed as it is not present on your device. It can then be replaced with one that registers the proper driver later.

Quoted 3 lines

On that topic, you will also find links to devicetrees for the X1P42100 Book4 Edge there (via Ciscobugger). This might not be the same X1P SKU, but could also be worth a try.

I had a quick look at your repo. In my initial attempt, I tried to reference your upstream (not you) but quickly gave up due to the large number of commits and dtbs.

I only see a polling commit in your tree after it diverges, I do not see a battery driver?

I think the only realistic way forward for me is to wait for upstream to catch up and only add support for my reference devices (the 14 and 15.6) so I can flesh out my userspace until qualcomm starts to deliver results on mainline kernels.

I attach my current tree below [1], note it is very unclean and I am currently doing fix commits. Once I get to a place where I am happy with base functionality, I will squash everything send it as a series. If you tell me that your device works with the drivers I wrote (note the LLM assistance), we can synergize. I do not expect the typec driver to get upstreamed unless someone more familiar with the type c internals gets involved, as a lot of the changes go over my head. But I think it is realistic for me to upstream the battery driver, unless you have a simpler alternative.

the drivers relevant to you are ene-kb9058 and samsung-emuec. If they work with your laptop and are universal for these devices great. Note that they are both interrupt based so the battery reporting changes instantly. You can also take my dt for the 14 in for a spin or just deploy my tree as a test.

I am contemplating whether an initial series using DTs, then a follow-up switching to ACPI is simpler for everyone involved. But as I see the huge amount of dts, I start to get concerned. So I might send my initial series that enables the device to boot using ACPI instead. As you know, Windows uses ACPI to boot the device and a lot of the dt i derived was from the ACPI tables I dumped in Windows. The DT was important for me to get an initial bring up for the device. I can now sync kernels to it in ~2 minutes so I can rapidly iterate.

To that end, can anyone tell me why are we not attempting to use ACPI to boot these devices and relying on DTs on the ARM side? I know that traditionally for phones DTs are used but these are UEFI devices and contain proper BIOS data for autodiscovery. What is the current blocker? Switching to ACPI should let us drop all laptop specific DTs by adding parsers to their currently DT only drivers. Am I wrong?

Antheas

[1] https://github.com/anatase-org/patchwork/commits/7.2.7-an12

Quoted 2 lines

Cheers,
-Max

#12 lore raw

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

Quoted 81 lines · Antheas Kapenekakis
Quoted 57 lines · Maxim Storetvedt
Quoted 38 lines · Antheas Kapenekakis
Quoted 11 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

Links go in the bottom, Based-on-a-patch is not a thing, you may add a Coby as noted in a parallel thread.

Quoted 2 lines

as well as 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.

Hi Maxim,
I tested this series on a kernel with various other backports on two european (norwegian market) galaxy book4 edges.

Specifically, the 14in NP940XMA and the 15.6in (not 16) NP750XQB. Specifically, the later is an X1Plus variant that came out a year later with cheaper components. It does not work properly on either on them. I was hoping that at least the 14in model would work as is but no.

My test devices have proprietary Samsung battery controllers (ENE-KB9058) and type C controllers (Samsung EmuEC). Also the speaker amplifiers are different. So the battery reporting, audio, and USB C ports do not work at all using your DTs. The TPM does not bind either but you do not claim that it does. At least they got me to boot and for that I am grateful.

Other stuff also does not work, but I am just listing the main ones.

Quoted 9 lines

I suggest you change the -14/-16 suffixes on both models with something more specific.

The prior patches in the series look fine to my eyes. I did not A/B test them, just pulled them in.

Best,
Antheas

Hi Antheas,

Thanks for giving it a test! I think we both have the (almost) same device, and your experience on the 14" NP940XMA (NO) probably mirrors that of my NP940XMA (IT).

Quoted 5 lines

USB-C should already work for this SKU with the patch DT, but not USB-C hotplug (yet). For now, everything is just left as already set up by the firmware, so peripherals plugged in after boot will not be detected. Everything inserted before boot, and hotplug on USB hubs, should still be fine. Could you give it a try on your device?

Yes, that mirrors my experience. But without a TypeC driver you don't get renegotiation. So no USB3, no fast charging, no hotplugging, and no DP alt mode. I wrote one but it's still buggy and a bit too complicated.

Quoted 7 lines

Battery state monitoring should also be with the same caveats on both these devices, going via a separate protocol over I2C instead of following the other X1Es. There is a separate battery driver for this, and also other useful patches (like the webcam and kb backlight) downstream. For now at least, only the features listed in the cover are included here, but our repo linked there has pointers to the other relevant patches needed for now.

I did not find a battery driver so likewise I wrote mine. I think the battery driver is more upstreamable than the TypeC driver. That will take a lot of work.

Quoted 5 lines

But it also means you have a spurious hunk on your dt then. The hunk that registers the dead battery and supposedly controls the TypeC connectors from qualcomm can be removed as it is not present on your device. It can then be replaced with one that registers the proper driver later.

Just left as-is as placeholders, but yes, can otherwise be removed. Do not really affect anything otherwise.

Quoted 5 lines
Quoted 4 lines

On that topic, you will also find links to devicetrees for the X1P42100 Book4 Edge there (via Ciscobugger). This might not be the same X1P SKU, but could also be worth a try.

Quoted 7 lines

I had a quick look at your repo. In my initial attempt, I tried to reference your upstream (not you) but quickly gave up due to the large number of commits and dtbs.

I only see a polling commit in your tree after it diverges, I do not see a battery driver?

Plenty of old branches here, but README should always be up-to-date with links to all the patches used [1]. In this case, we just use the existing battery driver by Saddy [2].

Quoted 15 lines

I think the only realistic way forward for me is to wait for upstream to catch up and only add support for my reference devices (the 14 and 15.6) so I can flesh out my userspace until qualcomm starts to deliver results on mainline kernels.

I attach my current tree below [1], note it is very unclean and I am currently doing fix commits. Once I get to a place where I am happy with base functionality, I will squash everything send it as a series. If you tell me that your device works with the drivers I wrote (note the LLM assistance), we can synergize. I do not expect the typec driver to get upstreamed unless someone more familiar with the type c internals gets involved, as a lot of the changes go over my head. But I think it is realistic for me to upstream the battery driver, unless you have a simpler alternative.

Quoted 6 lines

the drivers relevant to you are ene-kb9058 and samsung-emuec. If they work with your laptop and are universal for these devices great. Note that they are both interrupt based so the battery reporting changes instantly. You can also take my dt for the 14 in for a spin or just deploy my tree as a test.

Thanks for that link! Tested your np940xma.dtb + ene-kb9058 and samsung-emuec drivers on top of my tree, and they seem to boot fine on my NP940XMA as well. Battery monitoring displayed, and there is hotplug detection (for the charger).

Quoted 9 lines

I am contemplating whether an initial series using DTs, then a follow-up switching to ACPI is simpler for everyone involved. But as I see the huge amount of dts, I start to get concerned. So I might send my initial series that enables the device to boot using ACPI instead. As you know, Windows uses ACPI to boot the device and a lot of the dt i derived was from the ACPI tables I dumped in Windows. The DT was important for me to get an initial bring up for the device. I can now sync kernels to it in ~2 minutes so I can rapidly iterate.

Quoted 7 lines

To that end, can anyone tell me why are we not attempting to use ACPI to boot these devices and relying on DTs on the ARM side? I know that traditionally for phones DTs are used but these are UEFI devices and contain proper BIOS data for autodiscovery. What is the current blocker? Switching to ACPI should let us drop all laptop specific DTs by adding parsers to their currently DT only drivers. Am I wrong?

There's an interesting discussion for that here that's worth a look [3]

Cheers,
-Max

[1]
https://github.com/zensanp/linux-book4-edge/blob/x1e80100-book4e-7.2-14-tmp/README.md
[2] https://github.com/Saddytech/Galaxy-Book4-Edge-linux/tree/main/driver
[3]
https://lore.kernel.org/linux-acpi/[email protected]/

#13 lore raw

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

Quoted 84 lines · Maxim Storetvedt
Quoted 81 lines · Antheas Kapenekakis
Quoted 57 lines · Maxim Storetvedt
Quoted 38 lines · Antheas Kapenekakis
Quoted 11 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:

combined with the patch series the Honor Magicbook Art 14, which shares device similarities:

Links go in the bottom, Based-on-a-patch is not a thing, you may add a Coby as noted in a parallel thread.

Quoted 2 lines

as well as 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.

Hi Maxim,
I tested this series on a kernel with various other backports on two european (norwegian market) galaxy book4 edges.

Specifically, the 14in NP940XMA and the 15.6in (not 16) NP750XQB. Specifically, the later is an X1Plus variant that came out a year later with cheaper components. It does not work properly on either on them. I was hoping that at least the 14in model would work as is but no.

My test devices have proprietary Samsung battery controllers (ENE-KB9058) and type C controllers (Samsung EmuEC). Also the speaker amplifiers are different. So the battery reporting, audio, and USB C ports do not work at all using your DTs. The TPM does not bind either but you do not claim that it does. At least they got me to boot and for that I am grateful.

Other stuff also does not work, but I am just listing the main ones.

Quoted 9 lines

I suggest you change the -14/-16 suffixes on both models with something more specific.

The prior patches in the series look fine to my eyes. I did not A/B test them, just pulled them in.

Best,
Antheas

Hi Antheas,

Thanks for giving it a test! I think we both have the (almost) same device, and your experience on the 14" NP940XMA (NO) probably mirrors that of my NP940XMA (IT).

Quoted 5 lines

USB-C should already work for this SKU with the patch DT, but not USB-C hotplug (yet). For now, everything is just left as already set up by the firmware, so peripherals plugged in after boot will not be detected. Everything inserted before boot, and hotplug on USB hubs, should still be fine. Could you give it a try on your device?

Yes, that mirrors my experience. But without a TypeC driver you don't get renegotiation. So no USB3, no fast charging, no hotplugging, and no DP alt mode. I wrote one but it's still buggy and a bit too complicated.

Quoted 7 lines

Battery state monitoring should also be with the same caveats on both these devices, going via a separate protocol over I2C instead of following the other X1Es. There is a separate battery driver for this, and also other useful patches (like the webcam and kb backlight) downstream. For now at least, only the features listed in the cover are included here, but our repo linked there has pointers to the other relevant patches needed for now.

I did not find a battery driver so likewise I wrote mine. I think the battery driver is more upstreamable than the TypeC driver. That will take a lot of work.

Quoted 8 lines
Quoted 5 lines

But it also means you have a spurious hunk on your dt then. The hunk that registers the dead battery and supposedly controls the TypeC connectors from qualcomm can be removed as it is not present on your device. It can then be replaced with one that registers the proper driver later.

Just left as-is as placeholders, but yes, can otherwise be removed. Do not really affect anything otherwise.

Unfortunately, there is no such thing as placeholder. When your series merges it will have no placeholders. Fold the contents of [1] into this patch for next revision. This node should not be included and is not used for these devices. This will drop the duplicate battery and also allow you to drop your external rule.

[1] https://github.com/anatase-org/patchwork/commit/4b9fe35f55c78342b24c2ab309acc8dc38a890cf

Quoted 39 lines
Quoted 5 lines
Quoted 4 lines

On that topic, you will also find links to devicetrees for the X1P42100 Book4 Edge there (via Ciscobugger). This might not be the same X1P SKU, but could also be worth a try.

Quoted 7 lines

I had a quick look at your repo. In my initial attempt, I tried to reference your upstream (not you) but quickly gave up due to the large number of commits and dtbs.

I only see a polling commit in your tree after it diverges, I do not see a battery driver?

Plenty of old branches here, but README should always be up-to-date with links to all the patches used [1]. In this case, we just use the existing battery driver by Saddy [2].

Quoted 15 lines

I think the only realistic way forward for me is to wait for upstream to catch up and only add support for my reference devices (the 14 and 15.6) so I can flesh out my userspace until qualcomm starts to deliver results on mainline kernels.

I attach my current tree below [1], note it is very unclean and I am currently doing fix commits. Once I get to a place where I am happy with base functionality, I will squash everything send it as a series. If you tell me that your device works with the drivers I wrote (note the LLM assistance), we can synergize. I do not expect the typec driver to get upstreamed unless someone more familiar with the type c internals gets involved, as a lot of the changes go over my head. But I think it is realistic for me to upstream the battery driver, unless you have a simpler alternative.

Quoted 6 lines

the drivers relevant to you are ene-kb9058 and samsung-emuec. If they work with your laptop and are universal for these devices great. Note that they are both interrupt based so the battery reporting changes instantly. You can also take my dt for the 14 in for a spin or just deploy my tree as a test.

Quoted 4 lines

Thanks for that link! Tested your np940xma.dtb + ene-kb9058 and samsung-emuec drivers on top of my tree, and they seem to boot fine on my NP940XMA as well. Battery monitoring displayed, and there is hotplug detection (for the charger).

Good to know. I will base on your V7 going forward and only do my changes on top (removing the separate dbts I did thinking there was a deviation). This will hopefully help you to push this through.

Quoted 17 lines
Quoted 9 lines

I am contemplating whether an initial series using DTs, then a follow-up switching to ACPI is simpler for everyone involved. But as I see the huge amount of dts, I start to get concerned. So I might send my initial series that enables the device to boot using ACPI instead. As you know, Windows uses ACPI to boot the device and a lot of the dt i derived was from the ACPI tables I dumped in Windows. The DT was important for me to get an initial bring up for the device. I can now sync kernels to it in ~2 minutes so I can rapidly iterate.

Quoted 7 lines

To that end, can anyone tell me why are we not attempting to use ACPI to boot these devices and relying on DTs on the ARM side? I know that traditionally for phones DTs are used but these are UEFI devices and contain proper BIOS data for autodiscovery. What is the current blocker? Switching to ACPI should let us drop all laptop specific DTs by adding parsers to their currently DT only drivers. Am I wrong?

Quoted 1 line

There's an interesting discussion for that here that's worth a look [3]

I had a look. Interesting discussion. So that's where Hans went. Good to know. Great hire by Qualcomm. I will consider his points and track followups for ACPI

Best,
Antheas

Quoted 10 lines

Cheers,
-Max

[1]
https://github.com/zensanp/linux-book4-edge/blob/x1e80100-book4e-7.2-14-tmp/README.md
[2] https://github.com/Saddytech/Galaxy-Book4-Edge-linux/tree/main/driver
[3]
https://lore.kernel.org/linux-acpi/[email protected]/

#14 lore raw
In reply to Maxim Storetvedt
Quoted 11 lines · Maxim Storetvedt

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 v6 [1].

Supported:
- Keyboard
- Touchpad
- USB type-c

On the next revision, specify that USB type A is fully supported (16 in) and Type C is supported as initialized by UEFI only

Quoted 1 line

- Display

Consider fixing the Touchscreen too. If I recall the goodix driver works as is. At least on my device. Update the dbt. You may reference my oot dbt for this.

I will add my reviewed-by/tested-by on the final revision and that's enough for me. You don't need to give me more credit than that.

Best,
Antheas

Quoted 67 lines

- HDMI
- WiFi
- Bluetooth
- ADSP / CDSP
- GPU
- UFS
- Suspend

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

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             |    2 +
 .../qcom/x1-samsung-galaxy-book4-edge.dtsi    | 1537 +++++++++++++++++
 .../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, 1606 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 --
2.43.0