Skip to contentSkip to conversation

arm64: dts: qcom: Add HP OmniBook X 16-cp1

PATCH Superseded Jeff Roach 3 participants 5 messages Oct 24 – Oct 26

Subsystems (3)

v1 of 5 Superseded Latest is v5 →

lore
Share & tools
lore

Jeff Roach

author
#0 lore raw

cover arm64: dts: qcom: Add HP OmniBook X 16-cp1

This adds a device tree for the HP OmniBook X 16-cp1 (board 8F46), a 16" laptop with the 12-core Snapdragon X2 Elite (Mahua).

Tested with Ubuntu's 7.3-based linux-qcom-x1e kernel. Everything listed in patch 2 works there, including suspend (s2idle).

Notes:
- DisplayPort at HBR2 needs "phy: qualcomm: qmp-combo: update DP PHY PLL programming on Glymur" v5 [1]. Without it the stream runs at half rate and the monitor shows no picture. With it, about 1 in 4 plug-ins still gives no picture; replugging fixes it.
- The GPU is disabled. It works with "drm/msm: Mahua GPU support" [2] applied; I'll send a follow-up to enable it once that lands.
- Audio needs a topology and UCM config for the "HP-OmniBook-X16" model, which are not upstream yet. The headphone jack (SDCA) is not described.
- I hit one hard lockup while plugging USB-C devices during testing and could not reproduce it in later plug/unplug cycles.

Earlier bring-up report: [3]

[1] https://lore.kernel.org/all/[email protected]/
[2] https://lore.kernel.org/all/[email protected]/
[3] https://lore.kernel.org/all/CAAnD8Rb4ZZrHFWMJayabioB_8bOHh1mqZ5LCXZz0jTNGMA7UZQ@mail.gmail.com/

Jeff Roach (2):
dt-bindings: arm: qcom: Add HP OmniBook X 16-cp1
arm64: dts: qcom: Add HP OmniBook X 16-cp1

 .../devicetree/bindings/arm/qcom.yaml         |   1 +
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/mahua-hp-omnibook-x16.dts   | 840 ++++++++++++++++++
 3 files changed, 842 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/mahua-hp-omnibook-x16.dts

base-commit: f5672a3dff0291d6a45eb0c258b9d2baeb4dc577

Signature · 1 line
2.55.0
author
#1 lore raw

PATCH 1/2 dt-bindings: arm: qcom: Add HP OmniBook X 16-cp1

Document the HP OmniBook X 16-cp1 laptop, based on the Qualcomm Mahua (Snapdragon X2 Elite, 12 cores) SoC.

Assisted-by Claude Opus 5.5
---
 Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/arm/qcom.yaml +1 -0
index 121ca557ce..4dd57e8663 100644
@@ -191,6 +191,7 @@ properties:
 
       - items:
           - enum:
+              - hp,omnibook-x16-cp1
               - qcom,mahua-crd
           - const: qcom,mahua
 
Signature · 1 line
2.55.0
#2 lore raw

Re: [PATCH 1/2] dt-bindings: arm: qcom: Add HP OmniBook X 16-cp1

Quoted 4 lines · Jeff Roach

Document the HP OmniBook X 16-cp1 laptop, based on the Qualcomm Mahua (Snapdragon X2 Elite, 12 cores) SoC.

Assisted-by Claude Opus 5.5

Please read the docs how this is supposed to be constructed. Then run the checkpatch...

Best regards,
Krzysztof

author
#3 lore raw

PATCH 2/2 arm64: dts: qcom: Add HP OmniBook X 16-cp1

In reply to Jeff Roach

Add a device tree for the HP OmniBook X 16-cp1 laptop, based on the Qualcomm Mahua (Snapdragon X2 Elite, 12 cores) SoC.

Supported and tested:
- Keyboard, touchpad and touchscreen over I2C HID
- Lid switch
- NVMe SSD (PCIe 5)
- Qualcomm QCC2072 Wi-Fi (PCIe 4, M.2 key E slot)
- Two USB-C ports with orientation switching, USB PD and battery reporting through pmic-glink
- USB-A port (usb_2)
- Webcam on the internal USB 2.0 host
- eDP OLED panel with DP AUX backlight
- DisplayPort alt mode on both USB-C ports
- ADSP and CDSP remoteprocs
- Two speakers (WSA8845) and two digital microphones

The GPU is left disabled until Mahua's Adreno X2-85 is supported.

Assisted-by Claude Opus 5.5
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/mahua-hp-omnibook-x16.dts   | 840 ++++++++++++++++++
 2 files changed, 841 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/mahua-hp-omnibook-x16.dts
arch/arm64/boot/dts/qcom/Makefile +1 -0
index 88230c4e00..a3ba955451 100644
@@ -64,6 +64,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= lemans-evk-el2.dtb
 lemans-evk-ifp-mezzanine-dtbs	:= lemans-evk.dtb lemans-evk-ifp-mezzanine.dtbo
 dtb-$(CONFIG_ARCH_QCOM)	+= lemans-evk-ifp-mezzanine.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= mahua-crd.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= mahua-hp-omnibook-x16.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= mahua-lenovo-thinkpad-t14s-gen7-lcd.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= milos-fairphone-fp6.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= milos-nothing-asteroids.dtb
arch/arm64/boot/dts/qcom/mahua-hp-omnibook-x16.dts new file +840 -0

840 lines not on this page · raw message

Signature · 1 line
2.55.0
#4 lore raw
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] arm64: dts: qcom: missing data-lanes on usb_2_qmpphy in qmp_combo_probe() --

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] arm64: dts: qcom: missing data-lanes on usb_2_qmpphy in qmp_combo_probe() --

commit 445e95f688e19265eba79721f7454f1310f9d5f6
Author: Jeff Roach <[email protected]>

arm64: dts: qcom: Add HP OmniBook X 16-cp1

This commit adds a device tree for the HP OmniBook X 16-cp1 laptop based on the Qualcomm Mahua (Snapdragon X2 Elite) SoC, enabling keyboard, touchpad, touchscreen, PCIe NVMe and Wi-Fi, USB-C and USB-A ports, eDP panel, remoteprocs, and audio.

Quoted 5 lines
arch/arm64/boot/dts/qcom/mahua-hp-omnibook-x16.dts new file +0 -0
new file mode 100644
index 0000000000000..94882596d83e4

[ ... ]

Quoted 16 lines
arch/arm64/boot/dts/qcom/mahua-hp-omnibook-x16.dts new file +16 -0
+/* USB-A port on the right side */
+&usb_2 {
+	dr_mode = "host";
+
+	/delete-property/ usb-role-switch;
+
+	status = "okay";
+};
+
+&usb_2_hsphy {
+	vdd-supply = <&vreg_l4c_e1_0p91>;
+	vdda12-supply = <&vreg_l4f_e1_1p2>;
+
+	status = "okay";
+};
+

arch/arm64/boot/dts/qcom/mahua-hp-omnibook-x16.dts line 826

Quoted 10 lines
arch/arm64/boot/dts/qcom/mahua-hp-omnibook-x16.dts new file +10 -0
+&usb_2_qmpphy {
+	vdda-phy-supply = <&vreg_l4c_e1_0p91>;
+	vdda-pll-supply = <&vreg_l4f_e1_1p2>;
+	refgen-supply = <&vreg_l1c_e1_0p91>;
+
+	/delete-property/ mode-switch;
+	/delete-property/ orientation-switch;
+
+	status = "okay";
+};

[Severity: Medium]
Should usb_2_qmpphy also define a static USB3 data-lanes mapping under ports/port@0/endpoint@1 when mode-switch and orientation-switch are deleted?

In arch/arm64/boot/dts/qcom/glymur.dtsi, usb_2_qmpphy only defines an empty unnumbered endpoint under port@0 without data-lanes:

	usb_2_qmpphy: phy@88e1000 {
		...
		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				usb_2_qmpphy_out: endpoint {
				};
			};

When neither mode-switch nor orientation-switch is present, drivers/phy/qualcomm/phy-qcom-qmp-combo.c:qmp_combo_probe() falls back to reading static lane mappings from port@0/endpoint@0 (for DP) and port@0/endpoint@1 (for USB3):

	if (of_property_present(dev->of_node, "mode-switch") ||
	    of_property_present(dev->of_node, "orientation-switch")) {
		ret = qmp_combo_typec_register(qmp);
		if (ret)
			goto err_node_put;
	} else {
		enum typec_orientation dp_orientation = TYPEC_ORIENTATION_NONE;
		enum typec_orientation usb3_orientation = TYPEC_ORIENTATION_NONE;

		ret = qmp_combo_get_dt_dp_orientation(dev, &dp_orientation);
		if (ret)
			goto err_node_put;

		ret = qmp_combo_get_dt_usb3_orientation(dev, &usb3_orientation);
		if (ret)
			goto err_node_put;
		...
		} else {
			dev_warn(dev, "unable to determine orientation & mode from data-lanes");
		}
	}

Without replacing usb_2_qmpphy_out with endpoint@1 containing data-lanes (such as <1 0> or <2 3>), both dp_orientation and usb3_orientation remain TYPEC_ORIENTATION_NONE. Does this cause qmp_combo_probe() to emit the warning above, leave qmp->qmpphy_mode at QMPPHY_MODE_USB3DP instead of QMPPHY_MODE_USB3_ONLY, and leave qmp->orientation unset?

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