arm64: dts: qcom: Add HP OmniBook X 16-cp1
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
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.
--- Documentation/devicetree/bindings/arm/qcom.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/arm/qcom.yaml +1 -0
@@ -191,6 +191,7 @@ properties: - items: - enum: + - hp,omnibook-x16-cp1 - qcom,mahua-crd - const: qcom,mahua
Signature · 1 line
2.55.0
PATCH 2/2 arm64: dts: qcom: Add HP OmniBook X 16-cp1
In reply to Jeff RoachAdd 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.
--- 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
@@ -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
[email protected]
AI reviewThank 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
[ ... ]
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
Re: [PATCH 1/2] dt-bindings: arm: qcom: Add HP OmniBook X 16-cp1
In reply to Jeff RoachQuoted 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