Skip to contentSkip to conversation

X1E Dell XPS 9345 support

PATCH Applied Aleksandrs Vinarskis 5 participants 13 messages Oct 3, 2024 – Oct 16, 2024

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

v4 cover X1E Dell XPS 9345 support

Introduce support for the mentioned laptop.

Very similar to other X1E laptops, device tree was derived by analyzing dtsi of existing models and ACPI tables of this laptop [1]. Most notable difference were
* TZ protected SPI19.
* Keyboard only working after suspend/resume sequence, will do a follow up patch to i2c-hid.
* Lots of small deviations in LDOs voltages.

Successfully tested with Debian 12 and Gnome. Firmware for GPU/aDSP/cDSP was extracted from Windows, WiFi firmware from upstream linux-firmware.

Quite a few things alraedy work, details in patches, quite a few still in WIP or TODOs. Since fixing these may take me a while due to lack of documentation, sending current progress as its very much usable.

[1] https://github.com/aarch64-laptops/build/blob/master/misc/dell-xps-9345/acpi/DSDT.dsl

--------

Changes to V3:
* Rename device from tributo-13 to xps13-9345
* Update commit description - identify EC over i2c, likely camera model
* Update cover letter - no hacks needed when build on top of linux-next
* v3 link: https://lore.kernel.org/all/[email protected]/

--------

Changes to V2:
* Fix uart21 missing alias
* Fix redundant mdss_dp3 defines
* Fix touchscreen i2c address
* Update commit description - OLED panel reported working
* Update commit description - touchscreen reported working
* Update commit description - battery info reported working
* Update commit description - add keyboard patches link
* v2 link: https://lore.kernel.org/all/[email protected]/

--------

Changes to V1:
* Fix misalignments due to wrong tab/space conversion
* Fix regulator namings
* Fix reasonable warnings from scripts/checkpatch.pl
* Restructure all (sub)nodes alphabetically
* v1 link: https://lore.kernel.org/all/[email protected]/

Aleksandrs Vinarskis (3):
dt-bindings: arm: qcom: Add Dell XPS 13 9345
firmware: qcom: scm: Allow QSEECOM on Dell XPS 13 9345
arm64: dts: qcom: Add support for X1-based Dell XPS 13 9345

 .../devicetree/bindings/arm/qcom.yaml         |   1 +
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../dts/qcom/x1e80100-dell-xps13-9345.dts     | 863 ++++++++++++++++++
 drivers/firmware/qcom/qcom_scm.c              |   1 +
 4 files changed, 866 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
Signature · 1 line
2.43.0
#1 lore raw

PATCH v4 1/3 dt-bindings: arm: qcom: Add Dell XPS 13 9345

Document the X1E80100-based Dell XPS 13 9345 laptop, platform codenamed 'Tributo'/'Tributo R'.

---
 Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/arm/qcom.yaml +1 -0
index 5cb54d69af0b..7c01fe30dabc 100644
@@ -1058,6 +1058,7 @@ properties:
       - items:
           - enum:
               - asus,vivobook-s15
+              - dell,xps13-9345
               - lenovo,yoga-slim7x
               - microsoft,romulus13
               - microsoft,romulus15
Signature · 1 line
2.43.0
Tested-by on v4 1/3
#2 lore raw

Re: [PATCH v4 1/3] dt-bindings: arm: qcom: Add Dell XPS 13 9345

Hello Aleksandrs,

[Again in plain text]

Quoted 23 lines · Aleksandrs Vinarskis

Document the X1E80100-based Dell XPS 13 9345 laptop, platform codenamed 'Tributo'/'Tributo R'.

---
 Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/arm/qcom.yaml +1 -1
index 5cb54d69af0b..7c01fe30dabc 100644
@@ -1058,6 +1058,7 @@ properties:
       - items:
           - enum:
               - asus,vivobook-s15
+              - dell,xps13-9345
               - lenovo,yoga-slim7x
               - microsoft,romulus13
               - microsoft,romulus15
--
Quoted 1 line

2.43.0

regards
Stefan Schmidt

#3 lore raw

Re: [PATCH v4 1/3] dt-bindings: arm: qcom: Add Dell XPS 13 9345

Quoted 16 lines · Stefan Schmidt

Hello Aleksandrs,

[Again in plain text]

Quoted 10 lines · Aleksandrs Vinarskis

Document the X1E80100-based Dell XPS 13 9345 laptop, platform codenamed 'Tributo'/'Tributo R'.

---
 Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
 1 file changed, 1 insertion(+)
Quoted 16 lines
Quoted 13 lines
Documentation/devicetree/bindings/arm/qcom.yaml +1 -1
index 5cb54d69af0b..7c01fe30dabc 100644
@@ -1058,6 +1058,7 @@ properties:
       - items:
           - enum:
               - asus,vivobook-s15
+              - dell,xps13-9345
               - lenovo,yoga-slim7x
               - microsoft,romulus13
               - microsoft,romulus15
--
Quoted 1 line

2.43.0

How do you test bindings? Running static checks in kernel tree is the same as compiling software and adding tested-by.

Best regards,
Krzysztof

#4 lore raw

Re: [PATCH v4 1/3] dt-bindings: arm: qcom: Add Dell XPS 13 9345

Hello,

Quoted 35 lines · Krzysztof Kozlowski
Quoted 16 lines · Stefan Schmidt

Hello Aleksandrs,

[Again in plain text]

Quoted 10 lines · Aleksandrs Vinarskis

Document the X1E80100-based Dell XPS 13 9345 laptop, platform codenamed 'Tributo'/'Tributo R'.

---
 Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
 1 file changed, 1 insertion(+)
Quoted 16 lines
Quoted 13 lines
Documentation/devicetree/bindings/arm/qcom.yaml +1 -1
index 5cb54d69af0b..7c01fe30dabc 100644
@@ -1058,6 +1058,7 @@ properties:
       - items:
           - enum:
               - asus,vivobook-s15
+              - dell,xps13-9345
               - lenovo,yoga-slim7x
               - microsoft,romulus13
               - microsoft,romulus15
--
Quoted 1 line

2.43.0

Quoted 2 lines

How do you test bindings? Running static checks in kernel tree is the same as compiling software and adding tested-by.

I took the whole patchset in when testing it on the actual hardware, so I gave the tested-by for the whole series as well. That being said, the binding patch here does indeed not benefit from any on device testing. Feel free to drop it.

regards
Stefan Schmidt

#5 lore raw

PATCH v4 2/3 firmware: qcom: scm: Allow QSEECOM on Dell XPS 13 9345

In reply to Aleksandrs Vinarskis

Allow particular machine accessing eg. efivars.

---
 drivers/firmware/qcom/qcom_scm.c | 1 +
 1 file changed, 1 insertion(+)
drivers/firmware/qcom/qcom_scm.c +1 -0
index 10986cb11ec0..2495c08a52f5 100644
@@ -1731,6 +1731,7 @@ EXPORT_SYMBOL_GPL(qcom_scm_qseecom_app_send);
  + any potential issues with this, only allow validated machines for now.
  */
 static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = {
+	{ .compatible = "dell,xps13-9345" },
 	{ .compatible = "lenovo,flex-5g" },
 	{ .compatible = "lenovo,thinkpad-t14s" },
 	{ .compatible = "lenovo,thinkpad-x13s", },
Signature · 1 line
2.43.0
Tested-by on v4 2/3
#6 lore raw

Re: [PATCH v4 2/3] firmware: qcom: scm: Allow QSEECOM on Dell XPS 13 9345

Hello Aleksandrs,

[Again in plain text]

Quoted 22 lines · Aleksandrs Vinarskis

Allow particular machine accessing eg. efivars.

---
 drivers/firmware/qcom/qcom_scm.c | 1 +
 1 file changed, 1 insertion(+)
drivers/firmware/qcom/qcom_scm.c +1 -1
index 10986cb11ec0..2495c08a52f5 100644
@@ -1731,6 +1731,7 @@ EXPORT_SYMBOL_GPL(qcom_scm_qseecom_app_send);
  + any potential issues with this, only allow validated machines for now.
  */
 static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = {
+       { .compatible = "dell,xps13-9345" },
        { .compatible = "lenovo,flex-5g" },
        { .compatible = "lenovo,thinkpad-t14s" },
        { .compatible = "lenovo,thinkpad-x13s", },
--
Quoted 1 line

2.43.0

regards
Stefan Schmidt

#7 lore raw

PATCH v4 3/3 arm64: dts: qcom: Add support for X1-based Dell XPS 13 9345

In reply to Aleksandrs Vinarskis

Initial support for Dell XPS 9345 13" 2024 (Codenamed 'Tributo') based on X1E80100.

Working:
* Touchpad
* Keyboard (only post suspend&resume, i2c-hid patch required [1])
* Touchscreen
* eDP (low-res IPS, OLED) with brightness control
* NVME
* USB Type-C ports in USB2/USB3 (one orientation)
* WiFi
* GPU/aDSP/cDSP firmware loading (requires binaries from Windows)
* Lid switch
* Sleep/suspend, nothing visibly broken on resume

Not working:
* Speakers (WIP, pin guessing, x4 WSA8845)
* Microphones (WIP, pin guessing, dual array)
* Fingerprint Reader (WIP, USB MP with ptn3222)
* USB as DP/USB3 (WIP, PS8830 based)
* Camera (Likely OV01A10)
* EC over i2c

Should be working, but cannot be tested due to lack of hw:
* higher res IPS panel

[1] https://lore.kernel.org/all/[email protected]/

---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../dts/qcom/x1e80100-dell-xps13-9345.dts     | 863 ++++++++++++++++++
 2 files changed, 864 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
arch/arm64/boot/dts/qcom/Makefile +1 -0
index ae002c7cf126..a67663e1f5fc 100644
@@ -271,6 +271,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= sm8650-qrd.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= x1e78100-lenovo-thinkpad-t14s.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= x1e80100-asus-vivobook-s15.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= x1e80100-crd.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= x1e80100-dell-xps13-9345.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= x1e80100-lenovo-yoga-slim7x.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= x1e80100-microsoft-romulus13.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= x1e80100-microsoft-romulus15.dtb
arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts new file +863 -0

863 lines not on this page · raw message

Signature · 1 line
2.43.0
Tested-by on v4 3/3
#8 lore raw

Re: [PATCH v4 3/3] arm64: dts: qcom: Add support for X1-based Dell XPS 13 9345

Hello Aleksandrs,

[Again in plain text]

Quoted 27 lines · Aleksandrs Vinarskis

Initial support for Dell XPS 9345 13" 2024 (Codenamed 'Tributo') based on X1E80100.

Working:
* Touchpad
* Keyboard (only post suspend&resume, i2c-hid patch required [1])
* Touchscreen
* eDP (low-res IPS, OLED) with brightness control
* NVME
* USB Type-C ports in USB2/USB3 (one orientation)
* WiFi
* GPU/aDSP/cDSP firmware loading (requires binaries from Windows)
* Lid switch
* Sleep/suspend, nothing visibly broken on resume

Not working:
* Speakers (WIP, pin guessing, x4 WSA8845)
* Microphones (WIP, pin guessing, dual array)
* Fingerprint Reader (WIP, USB MP with ptn3222)
* USB as DP/USB3 (WIP, PS8830 based)
* Camera (Likely OV01A10)
* EC over i2c

Should be working, but cannot be tested due to lack of hw:
* higher res IPS panel

Quoted 8 lines

[1] https://lore.kernel.org/all/[email protected]/

---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../dts/qcom/x1e80100-dell-xps13-9345.dts     | 863 ++++++++++++++++++
 2 files changed, 864 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts

regards
Stefan Schmidt

#9 lore raw

Re: [PATCH v4 3/3] arm64: dts: qcom: Add support for X1-based Dell XPS 13 9345

Quoted 36 lines · Stefan Schmidt

Hello Aleksandrs,

[Again in plain text]

Quoted 29 lines · Aleksandrs Vinarskis

Initial support for Dell XPS 9345 13" 2024 (Codenamed 'Tributo') based on X1E80100.

Working:
* Touchpad
* Keyboard (only post suspend&resume, i2c-hid patch required [1])
* Touchscreen
* eDP (low-res IPS, OLED) with brightness control
* NVME
* USB Type-C ports in USB2/USB3 (one orientation)
* WiFi
* GPU/aDSP/cDSP firmware loading (requires binaries from Windows)
* Lid switch
* Sleep/suspend, nothing visibly broken on resume

Not working:
* Speakers (WIP, pin guessing, x4 WSA8845)
* Microphones (WIP, pin guessing, dual array)
* Fingerprint Reader (WIP, USB MP with ptn3222)
* USB as DP/USB3 (WIP, PS8830 based)
* Camera (Likely OV01A10)
* EC over i2c

Should be working, but cannot be tested due to lack of hw:
* higher res IPS panel

[1] https://lore.kernel.org/all/[email protected]/

Quoted 8 lines
Quoted 6 lines
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../dts/qcom/x1e80100-dell-xps13-9345.dts     | 863 ++++++++++++++++++
 2 files changed, 864 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts

Hi,

Thanks for taking your time to test this.
For the record, which variant did you test it on (low res IPS/OLED/high res IPS)?

Regards,
Alex

Quoted 3 lines

regards
Stefan Schmidt

#10 lore raw

Re: [PATCH v4 3/3] arm64: dts: qcom: Add support for X1-based Dell XPS 13 9345

Hello,

Quoted 4 lines · Aleksandrs Vinarskis

Thanks for taking your time to test this.
For the record, which variant did you test it on (low res IPS/OLED/high res IPS)?

OLED

regards
Stefan Schmidt

#11 lore raw
In reply to Aleksandrs Vinarskis
Quoted 59 lines · Aleksandrs Vinarskis

Introduce support for the mentioned laptop.

Very similar to other X1E laptops, device tree was derived by analyzing dtsi of existing models and ACPI tables of this laptop [1]. Most notable difference were
* TZ protected SPI19.
* Keyboard only working after suspend/resume sequence, will do a follow up patch to i2c-hid.
* Lots of small deviations in LDOs voltages.

Successfully tested with Debian 12 and Gnome. Firmware for GPU/aDSP/cDSP was extracted from Windows, WiFi firmware from upstream linux-firmware.

Quite a few things alraedy work, details in patches, quite a few still in WIP or TODOs. Since fixing these may take me a while due to lack of documentation, sending current progress as its very much usable.

[1] https://github.com/aarch64-laptops/build/blob/master/misc/dell-xps-9345/acpi/DSDT.dsl

--------

Changes to V3:
* Rename device from tributo-13 to xps13-9345
* Update commit description - identify EC over i2c, likely camera model
* Update cover letter - no hacks needed when build on top of linux-next
* v3 link: https://lore.kernel.org/all/[email protected]/

--------

Changes to V2:
* Fix uart21 missing alias
* Fix redundant mdss_dp3 defines
* Fix touchscreen i2c address
* Update commit description - OLED panel reported working
* Update commit description - touchscreen reported working
* Update commit description - battery info reported working
* Update commit description - add keyboard patches link
* v2 link: https://lore.kernel.org/all/[email protected]/

--------

Changes to V1:
* Fix misalignments due to wrong tab/space conversion
* Fix regulator namings
* Fix reasonable warnings from scripts/checkpatch.pl
* Restructure all (sub)nodes alphabetically
* v1 link: https://lore.kernel.org/all/[email protected]/

Aleksandrs Vinarskis (3):
dt-bindings: arm: qcom: Add Dell XPS 13 9345
firmware: qcom: scm: Allow QSEECOM on Dell XPS 13 9345
arm64: dts: qcom: Add support for X1-based Dell XPS 13 9345

 .../devicetree/bindings/arm/qcom.yaml         |   1 +
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../dts/qcom/x1e80100-dell-xps13-9345.dts     | 863 ++++++++++++++++++
 drivers/firmware/qcom/qcom_scm.c              |   1 +
 4 files changed, 866 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
Quoted 5 lines

--
2.43.0

My bot found new DTB warnings on the .dts files added or changed in this series.

Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings are fixed by another series. Ultimately, it is up to the platform maintainer whether these warnings are acceptable or not. No need to reply unless the platform maintainer has comments.

If you already ran DT checks and didn't see these error(s), then make sure dt-schema is up to date:

  pip3 install dtschema --upgrade

New warnings running 'make CHECK_DTBS=y qcom/x1e80100-dell-xps13-9345.dtb' for [email protected]:

arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dtb: domain-idle-states: cluster-sleep-0: 'idle-state-name' does not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/power/domain-idle-state.yaml#
arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dtb: domain-idle-states: cluster-sleep-1: 'idle-state-name' does not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/power/domain-idle-state.yaml#
arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dtb: usb@a2f8800: interrupt-names: ['pwr_event', 'dp_hs_phy_irq', 'dm_hs_phy_irq'] is too short
from schema $id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml#

maintainer Applied
#12 lore raw

Re: (subset) [PATCH v4 0/3] X1E Dell XPS 9345 support

In reply to Aleksandrs Vinarskis
Quoted 10 lines · Aleksandrs Vinarskis

Introduce support for the mentioned laptop.

Very similar to other X1E laptops, device tree was derived by analyzing dtsi of existing models and ACPI tables of this laptop [1]. Most notable difference were
* TZ protected SPI19.
* Keyboard only working after suspend/resume sequence, will do a follow up patch to i2c-hid.
* Lots of small deviations in LDOs voltages.

[...]

Applied, thanks!

[1/3] dt-bindings: arm: qcom: Add Dell XPS 13 9345

      commit: 1aa50217d7fd1b9932d3552a20c2f7fd58d77cfa
[3/3] arm64: dts: qcom: Add support for X1-based Dell XPS 13 9345
      commit: f5b788d0e8cdaac7df6ec9a24926672965d87dfc

Best regards,

Signature · 1 line
Bjorn Andersson <[email protected]>