Message ID | 57589859-fec1-4875-9127-d1f99e40a827@tuxedocomputers.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | arm64: dts: qcom: Add device tree for TUXEDO Elite 14 Gen1 | expand |
On 06/03/2025 13:25, Georg Gottleuber wrote: > Initial support for TUXEDO Elite 14 Gen1 based on Qualcomm Snapdragon X > Elite SoC (X1E78100). > > Working: > * Touchpad > * Keyboard > * eDP (no brightness control yet) > * NVMe > * USB Type-C port > * WiFi (WiFi 7 untested) > * GPU (software rendering) > > Not working: > * GPU (WIP: firmware loading but output is jerky) > * USB Type-A (WIP) > * Suspend with substantial energy saving > * Audio, Speakers, Microphones > * Camera > * Fingerprint Reader > > Signed-off-by: Georg Gottleuber <ggo@tuxedocomputers.com> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../qcom/x1e80100-tuxedo-elite-14-gen1.dts | 798 ++++++++++++++++++ > 2 files changed, 799 insertions(+) > create mode 100644 > arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 140b0b2abfb5..f0a9d677d957 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -298,3 +298,4 @@ 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 > dtb-$(CONFIG_ARCH_QCOM) += x1e80100-qcp.dtb > +dtb-$(CONFIG_ARCH_QCOM) += x1e80100-tuxedo-elite-14-gen1.dtb > diff --git a/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > new file mode 100644 > index 000000000000..86bdec4a2dd8 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > @@ -0,0 +1,798 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. > + * Copyright (c) 2025 TUXEDO Computers GmbH > + */ > + > +/dts-v1/; > + > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> > + > +#include "x1e80100.dtsi" > +#include "x1e80100-pmics.dtsi" > + > +/ { > + model = "TUXEDO Elite 14 Gen1"; > + compatible = "tuxedo,elite14gen1", "qcom,x1e80100"; Please run scripts/checkpatch.pl and fix reported warnings. After that, run also `scripts/checkpatch.pl --strict` and (probably) fix more warnings. Some warnings can be ignored, especially from --strict run, but the code here looks like it needs a fix. Feel free to get in touch if the warning is not clear. It does not look like you tested the DTS against bindings. Please run `make dtbs_check W=1` (see Documentation/devicetree/bindings/writing-schema.rst or https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/ for instructions). Maybe you need to update your dtschema and yamllint. Don't rely on distro packages for dtschema and be sure you are using the latest released dtschema. ... > + > + eusb3_repeater: redriver@47 { > + compatible = "nxp,ptn3222"; > + reg = <0x47>; > + #phy-cells = <0>; > + > + vdd1v8-supply = <&vreg_l4b_1p8>; > + vdd3v3-supply = <&vreg_l13b_3p0>; > + > + reset-gpios = <&tlmm 124 GPIO_ACTIVE_LOW>; > + > + pinctrl-0 = <&eusb3_reset_n>; > + pinctrl-names = "default"; No graph? Isn't it needed? > + }; > + > + eusb5_repeater: redriver@43 { > + compatible = "nxp,ptn3222"; > + reg = <0x43>; > + #phy-cells = <0>; > + > + vdd1v8-supply = <&vreg_l4b_1p8>; > + vdd3v3-supply = <&vreg_l13b_3p0>; > + > + reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>; > + > + pinctrl-0 = <&eusb6_reset_n>; > + pinctrl-names = "default"; > + }; > + > + eusb6_repeater: redriver@4f { > + compatible = "nxp,ptn3222"; > + reg = <0x4f>; > + #phy-cells = <0>; > + > + vdd1v8-supply = <&vreg_l4b_1p8>; > + vdd3v3-supply = <&vreg_l13b_3p0>; > + > + reset-gpios = <&tlmm 111 GPIO_ACTIVE_LOW>; > + > + pinctrl-0 = <&eusb6_reset_n>; > + pinctrl-names = "default"; > + }; > + Stray blank line > +}; > + > +&mdss { > + status = "okay"; > +}; > + > + > +&usb_1_ss0_dwc3_hs { > + remote-endpoint = <&pmic_glink_ss0_hs_in>; > +}; > + > +&usb_1_ss0_qmpphy_out { > + remote-endpoint = <&pmic_glink_ss0_ss_in>; > +}; > + Here as well Best regards, Krzysztof
On 6.03.2025 1:25 PM, Georg Gottleuber wrote: > Initial support for TUXEDO Elite 14 Gen1 based on Qualcomm Snapdragon X > Elite SoC (X1E78100). > > Working: > * Touchpad > * Keyboard > * eDP (no brightness control yet) in case your panel as a PWM backlight, you will need to set the PWM output pin function explicitly, see x1e80100-microsoft-romulus.dtsi > * NVMe > * USB Type-C port > * WiFi (WiFi 7 untested) > * GPU (software rendering) > > Not working: > * GPU (WIP: firmware loading but output is jerky) Please tell us more > * USB Type-A (WIP) > * Suspend with substantial energy saving > * Audio, Speakers, Microphones > * Camera > * Fingerprint Reader If it's connected to the multiport controller, you should be able to just enable it, like on the T14s, similarly to the Type-A port [...] > Signed-off-by: Georg Gottleuber <ggo@tuxedocomputers.com> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../qcom/x1e80100-tuxedo-elite-14-gen1.dts | 798 ++++++++++++++++++ > 2 files changed, 799 insertions(+) > create mode 100644 > arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 140b0b2abfb5..f0a9d677d957 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -298,3 +298,4 @@ 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 > dtb-$(CONFIG_ARCH_QCOM) += x1e80100-qcp.dtb > +dtb-$(CONFIG_ARCH_QCOM) += x1e80100-tuxedo-elite-14-gen1.dtb > diff --git a/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > new file mode 100644 > index 000000000000..86bdec4a2dd8 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > @@ -0,0 +1,798 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. > + * Copyright (c) 2025 TUXEDO Computers GmbH > + */ > + > +/dts-v1/; > + > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> > + > +#include "x1e80100.dtsi" > +#include "x1e80100-pmics.dtsi" > + > +/ { > + model = "TUXEDO Elite 14 Gen1"; Please use 8-wide tabs instead of spaces > + compatible = "tuxedo,elite14gen1", "qcom,x1e80100"; You'll need to define a new vendor in: Documentation/devicetree/bindings/vendor-prefixes.yaml [...] > + vreg_edp_3p3: regulator-edp-3p3 { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_EDP_3P3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + // EDP_VDD_EN_GPIO54 C-style (/* foo */) comments are preferred, but these ones can be removed, as they repeat what the code says [...] > +&gpu { > + status = "okay"; > + > + zap-shader { > + firmware-name = "qcom/a740_zap.mbn"; Are the laptop's OEM key/security fuses not blown? Konrad
Am 06.03.25 um 13:41 schrieb Krzysztof Kozlowski: ... > > Please run scripts/checkpatch.pl and fix reported warnings. After that, > run also `scripts/checkpatch.pl --strict` and (probably) fix more > warnings. Some warnings can be ignored, especially from --strict run, > but the code here looks like it needs a fix. Feel free to get in touch > if the warning is not clear. > > It does not look like you tested the DTS against bindings. Please run > `make dtbs_check W=1` (see > Documentation/devicetree/bindings/writing-schema.rst or > https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/ > for instructions). > Maybe you need to update your dtschema and yamllint. Don't rely on > distro packages for dtschema and be sure you are using the latest > released dtschema. Thank you for the advice and the offer to answer further questions. Didn't know that dtb_check exists. > ... > >> + >> + eusb3_repeater: redriver@47 { >> + compatible = "nxp,ptn3222"; >> + reg = <0x47>; >> + #phy-cells = <0>; >> + >> + vdd1v8-supply = <&vreg_l4b_1p8>; >> + vdd3v3-supply = <&vreg_l13b_3p0>; >> + >> + reset-gpios = <&tlmm 124 GPIO_ACTIVE_LOW>; >> + >> + pinctrl-0 = <&eusb3_reset_n>; >> + pinctrl-names = "default"; > > No graph? Isn't it needed? What do you mean by ‘no graph’? >> + }; >> + >> + eusb5_repeater: redriver@43 { >> + compatible = "nxp,ptn3222"; >> + reg = <0x43>; >> + #phy-cells = <0>; >> + >> + vdd1v8-supply = <&vreg_l4b_1p8>; >> + vdd3v3-supply = <&vreg_l13b_3p0>; >> + >> + reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>; >> + >> + pinctrl-0 = <&eusb6_reset_n>; >> + pinctrl-names = "default"; >> + }; >> + >> + eusb6_repeater: redriver@4f { >> + compatible = "nxp,ptn3222"; >> + reg = <0x4f>; >> + #phy-cells = <0>; >> + >> + vdd1v8-supply = <&vreg_l4b_1p8>; >> + vdd3v3-supply = <&vreg_l13b_3p0>; >> + >> + reset-gpios = <&tlmm 111 GPIO_ACTIVE_LOW>; >> + >> + pinctrl-0 = <&eusb6_reset_n>; >> + pinctrl-names = "default"; >> + }; >> + > > Stray blank line Sorry. Will fix this. >> +}; >> + >> +&mdss { >> + status = "okay"; >> +}; >> + > > >> + >> +&usb_1_ss0_dwc3_hs { >> + remote-endpoint = <&pmic_glink_ss0_hs_in>; >> +}; >> + >> +&usb_1_ss0_qmpphy_out { >> + remote-endpoint = <&pmic_glink_ss0_ss_in>; >> +}; >> + > > Here as well Same here. Regards, Georg
On 06/03/2025 14:56, Georg Gottleuber wrote: > >> ... >> >>> + >>> + eusb3_repeater: redriver@47 { >>> + compatible = "nxp,ptn3222"; >>> + reg = <0x47>; >>> + #phy-cells = <0>; >>> + >>> + vdd1v8-supply = <&vreg_l4b_1p8>; >>> + vdd3v3-supply = <&vreg_l13b_3p0>; >>> + >>> + reset-gpios = <&tlmm 124 GPIO_ACTIVE_LOW>; >>> + >>> + pinctrl-0 = <&eusb3_reset_n>; >>> + pinctrl-names = "default"; >> >> No graph? Isn't it needed? > > What do you mean by ‘no graph’? ports connecting this within USB graph between controller and connector. Just like other devices with redriver. Best regards, Krzysztof
Am 06.03.25 um 13:50 schrieb Konrad Dybcio: > On 6.03.2025 1:25 PM, Georg Gottleuber wrote: >> Initial support for TUXEDO Elite 14 Gen1 based on Qualcomm Snapdragon X >> Elite SoC (X1E78100). >> >> Working: >> * Touchpad >> * Keyboard >> * eDP (no brightness control yet) > > in case your panel as a PWM backlight, you will need to set the PWM > output pin function explicitly, see x1e80100-microsoft-romulus.dtsi Thank you, will check this. >> * NVMe >> * USB Type-C port >> * WiFi (WiFi 7 untested) >> * GPU (software rendering) >> >> Not working: >> * GPU (WIP: firmware loading but output is jerky) > > Please tell us more Oh, this is already an older thing: with kernel 6.10 loading gen70500_gmu.bin and gen70500_sqe.fw leading to partly slow and stuttering video output. Sometimes it rendered black edges / borders to KDE menus. Surely I did something wrong. I have just tried to reproduce the same setup, but I couldn't get it to work just now. If you are interested, I can try it again with a new/current kernel. (which is preferred? linux? linux-next?) >> * USB Type-A (WIP) >> * Suspend with substantial energy saving >> * Audio, Speakers, Microphones >> * Camera >> * Fingerprint Reader > > If it's connected to the multiport controller, you should be able to > just enable it, like on the T14s, similarly to the Type-A port sounds promising > [...] > >> Signed-off-by: Georg Gottleuber <ggo@tuxedocomputers.com> >> --- >> arch/arm64/boot/dts/qcom/Makefile | 1 + >> .../qcom/x1e80100-tuxedo-elite-14-gen1.dts | 798 ++++++++++++++++++ >> 2 files changed, 799 insertions(+) >> create mode 100644 >> arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts >> >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile >> index 140b0b2abfb5..f0a9d677d957 100644 >> --- a/arch/arm64/boot/dts/qcom/Makefile >> +++ b/arch/arm64/boot/dts/qcom/Makefile >> @@ -298,3 +298,4 @@ 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 >> dtb-$(CONFIG_ARCH_QCOM) += x1e80100-qcp.dtb >> +dtb-$(CONFIG_ARCH_QCOM) += x1e80100-tuxedo-elite-14-gen1.dtb >> diff --git a/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts >> new file mode 100644 >> index 000000000000..86bdec4a2dd8 >> --- /dev/null >> +++ b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts >> @@ -0,0 +1,798 @@ >> +// SPDX-License-Identifier: BSD-3-Clause >> +/* >> + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. >> + * Copyright (c) 2025 TUXEDO Computers GmbH >> + */ >> + >> +/dts-v1/; >> + >> +#include <dt-bindings/gpio/gpio.h> >> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> >> + >> +#include "x1e80100.dtsi" >> +#include "x1e80100-pmics.dtsi" >> + >> +/ { >> + model = "TUXEDO Elite 14 Gen1"; > > Please use 8-wide tabs instead of spaces Sorry. >> + compatible = "tuxedo,elite14gen1", "qcom,x1e80100"; > > You'll need to define a new vendor in: > > Documentation/devicetree/bindings/vendor-prefixes.yaml > > [...] > >> + vreg_edp_3p3: regulator-edp-3p3 { >> + compatible = "regulator-fixed"; >> + >> + regulator-name = "VREG_EDP_3P3"; >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + >> + // EDP_VDD_EN_GPIO54 > > C-style (/* foo */) comments are preferred, but these ones can be > removed, as they repeat what the code says I have overlooked this. Sorry. > [...] > >> +&gpu { >> + status = "okay"; >> + >> + zap-shader { >> + firmware-name = "qcom/a740_zap.mbn"; > > Are the laptop's OEM key/security fuses not blown? I'm not sure. How can I verify this? Regards, Georg
On Thu, Mar 06, 2025 at 03:03:32PM +0100, Krzysztof Kozlowski wrote: > On 06/03/2025 14:56, Georg Gottleuber wrote: > > > >> ... > >> > >>> + > >>> + eusb3_repeater: redriver@47 { > >>> + compatible = "nxp,ptn3222"; > >>> + reg = <0x47>; > >>> + #phy-cells = <0>; > >>> + > >>> + vdd1v8-supply = <&vreg_l4b_1p8>; > >>> + vdd3v3-supply = <&vreg_l13b_3p0>; > >>> + > >>> + reset-gpios = <&tlmm 124 GPIO_ACTIVE_LOW>; > >>> + > >>> + pinctrl-0 = <&eusb3_reset_n>; > >>> + pinctrl-names = "default"; > >> > >> No graph? Isn't it needed? > > > > What do you mean by ‘no graph’? > > ports connecting this within USB graph between controller and connector. > Just like other devices with redriver. No, eUSB2 redrivers don't need (and don't use) OF graph, they are basic PHYs. See Documentation/devicetree/bindings/phy/nxp,ptn3222.yaml So this one is correct.
On 6.03.2025 4:22 PM, Georg Gottleuber wrote: > > > Am 06.03.25 um 13:50 schrieb Konrad Dybcio: >> On 6.03.2025 1:25 PM, Georg Gottleuber wrote: >>> Initial support for TUXEDO Elite 14 Gen1 based on Qualcomm Snapdragon X >>> Elite SoC (X1E78100). >>> >>> Working: >>> * Touchpad >>> * Keyboard >>> * eDP (no brightness control yet) >> >> in case your panel as a PWM backlight, you will need to set the PWM >> output pin function explicitly, see x1e80100-microsoft-romulus.dtsi > > Thank you, will check this. > >>> * NVMe >>> * USB Type-C port >>> * WiFi (WiFi 7 untested) >>> * GPU (software rendering) >>> >>> Not working: >>> * GPU (WIP: firmware loading but output is jerky) >> >> Please tell us more > > Oh, this is already an older thing: with kernel 6.10 loading > gen70500_gmu.bin and gen70500_sqe.fw leading to partly slow and > stuttering video output. Sometimes it rendered black edges / borders to > KDE menus. Surely I did something wrong. > > I have just tried to reproduce the same setup, but I couldn't get it to > work just now. If you are interested, I can try it again with a > new/current kernel. (which is preferred? linux? linux-next?) linux-next/master is good [...] >>> +&gpu { >>> + status = "okay"; >>> + >>> + zap-shader { >>> + firmware-name = "qcom/a740_zap.mbn"; >> >> Are the laptop's OEM key/security fuses not blown? > > I'm not sure. How can I verify this? If you took the ZAP file from linux-firmware and it loaded, they are not blown.. meaning secure boot (not to be confused with UEFI secure boot) is not there and anyone can replace the entire secure firmware stack with what they please Konrad
On 06. 03. 25 19:15, Konrad Dybcio wrote: > On 6.03.2025 4:22 PM, Georg Gottleuber wrote: >> >> Am 06.03.25 um 13:50 schrieb Konrad Dybcio: >>> On 6.03.2025 1:25 PM, Georg Gottleuber wrote: >>>> Initial support for TUXEDO Elite 14 Gen1 based on Qualcomm Snapdragon X >>>> Elite SoC (X1E78100). >>>> >>>> Working: >>>> * Touchpad >>>> * Keyboard >>>> * eDP (no brightness control yet) >>> in case your panel as a PWM backlight, you will need to set the PWM >>> output pin function explicitly, see x1e80100-microsoft-romulus.dtsi >> Thank you, will check this. >> >>>> * NVMe >>>> * USB Type-C port >>>> * WiFi (WiFi 7 untested) >>>> * GPU (software rendering) >>>> >>>> Not working: >>>> * GPU (WIP: firmware loading but output is jerky) >>> Please tell us more >> Oh, this is already an older thing: with kernel 6.10 loading >> gen70500_gmu.bin and gen70500_sqe.fw leading to partly slow and >> stuttering video output. Sometimes it rendered black edges / borders to >> KDE menus. Surely I did something wrong. >> >> I have just tried to reproduce the same setup, but I couldn't get it to >> work just now. If you are interested, I can try it again with a >> new/current kernel. (which is preferred? linux? linux-next?) > linux-next/master is good > > [...] > >>>> +&gpu { >>>> + status = "okay"; >>>> + >>>> + zap-shader { >>>> + firmware-name = "qcom/a740_zap.mbn"; >>> Are the laptop's OEM key/security fuses not blown? >> I'm not sure. How can I verify this? > If you took the ZAP file from linux-firmware and it loaded, they are > not blown.. meaning secure boot (not to be confused with UEFI secure > boot) is not there and anyone can replace the entire secure firmware > stack with what they please > > Konrad > Which to be clear is probably something Tuxedo would want, because it's by far the simplest way to ensure that the person who buys the device can do that. Even without the SPI flash being write protected and requiring physical access to unprotect (which I believe is what google went with for chromebooks), afaik Linux can't access the spi flash in the default configuration so it would still not be particularly feasible for someone without physical access to abuse this. Although I'm a bit confused here, because to my knowledge being able to replace the "entire secure firmware stack" before it even has a chance to run (which is what anyone wanting to replace it would presumably intend to do) is considered a privilege escalation CVE by qualcomm and is not something you are supposed to be able to do without their blessing. I suppose they may be a bit more lax about allowing the OEM (and therefore the user if the OEM graciously doesn't lock the device down) to skip XBL_SEC (or whatever it's called now) with TME now being the first core to boot, which would certainly be nice even if it's literally "you can have it as long as it is no longer equivalent to full control over your hw, which is what you wanted in the first place"
On Thu, Mar 06, 2025 at 01:50:56PM +0100, Konrad Dybcio wrote: > On 6.03.2025 1:25 PM, Georg Gottleuber wrote: > > Initial support for TUXEDO Elite 14 Gen1 based on Qualcomm Snapdragon X > > Elite SoC (X1E78100). > > > > Working: > > * Touchpad > > * Keyboard > > * eDP (no brightness control yet) > > in case your panel as a PWM backlight, you will need to set the PWM > output pin function explicitly, see x1e80100-microsoft-romulus.dtsi > > > * NVMe > > * USB Type-C port > > * WiFi (WiFi 7 untested) > > * GPU (software rendering) > > > > Not working: > > * GPU (WIP: firmware loading but output is jerky) > > Please tell us more > > > * USB Type-A (WIP) > > * Suspend with substantial energy saving > > * Audio, Speakers, Microphones > > * Camera > > * Fingerprint Reader > > If it's connected to the multiport controller, you should be able to > just enable it, like on the T14s, similarly to the Type-A port > > [...] > > > Signed-off-by: Georg Gottleuber <ggo@tuxedocomputers.com> > > --- > > arch/arm64/boot/dts/qcom/Makefile | 1 + > > .../qcom/x1e80100-tuxedo-elite-14-gen1.dts | 798 ++++++++++++++++++ > > 2 files changed, 799 insertions(+) > > create mode 100644 > > arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > > > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > > index 140b0b2abfb5..f0a9d677d957 100644 > > --- a/arch/arm64/boot/dts/qcom/Makefile > > +++ b/arch/arm64/boot/dts/qcom/Makefile > > @@ -298,3 +298,4 @@ 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 > > dtb-$(CONFIG_ARCH_QCOM) += x1e80100-qcp.dtb > > +dtb-$(CONFIG_ARCH_QCOM) += x1e80100-tuxedo-elite-14-gen1.dtb > > diff --git a/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > > new file mode 100644 > > index 000000000000..86bdec4a2dd8 > > --- /dev/null > > +++ b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts > > > +&gpu { > > + status = "okay"; > > + > > + zap-shader { > > + firmware-name = "qcom/a740_zap.mbn"; > > Are the laptop's OEM key/security fuses not blown? Can this laptop use "qcom/x1e80100/gen70500_zap.mbn" which is already a part of linux-firmware?
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 140b0b2abfb5..f0a9d677d957 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -298,3 +298,4 @@ 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 dtb-$(CONFIG_ARCH_QCOM) += x1e80100-qcp.dtb +dtb-$(CONFIG_ARCH_QCOM) += x1e80100-tuxedo-elite-14-gen1.dtb diff --git a/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts new file mode 100644 index 000000000000..86bdec4a2dd8 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts @@ -0,0 +1,798 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2025 TUXEDO Computers GmbH + */ + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> + +#include "x1e80100.dtsi" +#include "x1e80100-pmics.dtsi" + +/ { + model = "TUXEDO Elite 14 Gen1"; + compatible = "tuxedo,elite14gen1", "qcom,x1e80100"; + + aliases { + serial0 = &uart21; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + 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; + }; + }; + + pmic-glink { + compatible = "qcom,x1e80100-pmic-glink", + "qcom,sm8550-pmic-glink", + "qcom,pmic-glink"; + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + + /* 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>; + }; + }; + }; + }; + }; + + reserved-memory { + linux,cma { + compatible = "shared-dma-pool"; + size = <0x0 0x8000000>; + reusable; + linux,cma-default; + }; + }; + + vreg_edp_3p3: regulator-edp-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_EDP_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + // EDP_VDD_EN_GPIO54 + gpio = <&tlmm 54 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&edp_reg_en>; + pinctrl-names = "default"; + + regulator-always-on; + regulator-boot-on; + }; + + vreg_nvme: regulator-nvme { + compatible = "regulator-fixed"; + + regulator-name = "VREG_NVME_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + // NVME_REG_EN_GPIO18 + gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&nvme_reg_en>; + pinctrl-names = "default"; + regulator-boot-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; + }; +}; + +&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_l2b_3p0: ldo2 { + regulator-name = "vreg_l2b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3072000>; + 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_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-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-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>; + }; + + vreg_l13b_3p0: ldo13 { + regulator-name = "vreg_l13b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3072000>; + 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>; + }; + + vreg_l16b_2p8: ldo16 { + regulator-name = "vreg_l16b_2p8"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + 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 = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3c_0p9: ldo3 { + regulator-name = "vreg_l3c_0p9"; + regulator-min-microvolt = <920000>; + 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 = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2d_0p9: ldo2 { + regulator-name = "vreg_l2d_0p9"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <912000>; + 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 = <880000>; + 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>; + }; + }; + + 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 = <880000>; + 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_0p9: ldo1 { + regulator-name = "vreg_l1j_0p9"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <912000>; + 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 = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; +}; + +&gpu { + status = "okay"; + + zap-shader { + firmware-name = "qcom/a740_zap.mbn"; + }; +}; + +&i2c0 { + clock-frequency = <400000>; + + status = "okay"; + + touchpad@2c { + compatible = "hid-over-i2c"; + reg = <0x2c>; + + hid-descr-addr = <0x20>; + interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>; + + pinctrl-0 = <&tpad_default>; + pinctrl-names = "default"; + + wakeup-source; + }; + + keyboard@3a { + compatible = "hid-over-i2c"; + reg = <0x3a>; + + hid-descr-addr = <0x1>; + interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>; + + pinctrl-0 = <&kybd_default>; + pinctrl-names = "default"; + + wakeup-source; + }; +}; + +&i2c5 { + clock-frequency = <400000>; + + status = "okay"; + + eusb3_repeater: redriver@47 { + compatible = "nxp,ptn3222"; + reg = <0x47>; + #phy-cells = <0>; + + vdd1v8-supply = <&vreg_l4b_1p8>; + vdd3v3-supply = <&vreg_l13b_3p0>; + + reset-gpios = <&tlmm 124 GPIO_ACTIVE_LOW>; + + pinctrl-0 = <&eusb3_reset_n>; + pinctrl-names = "default"; + }; + + eusb5_repeater: redriver@43 { + compatible = "nxp,ptn3222"; + reg = <0x43>; + #phy-cells = <0>; + + vdd1v8-supply = <&vreg_l4b_1p8>; + vdd3v3-supply = <&vreg_l13b_3p0>; + + reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>; + + pinctrl-0 = <&eusb6_reset_n>; + pinctrl-names = "default"; + }; + + eusb6_repeater: redriver@4f { + compatible = "nxp,ptn3222"; + reg = <0x4f>; + #phy-cells = <0>; + + vdd1v8-supply = <&vreg_l4b_1p8>; + vdd3v3-supply = <&vreg_l13b_3p0>; + + reset-gpios = <&tlmm 111 GPIO_ACTIVE_LOW>; + + pinctrl-0 = <&eusb6_reset_n>; + pinctrl-names = "default"; + }; + +}; + +&mdss { + status = "okay"; +}; + +&mdss_dp3 { + compatible = "qcom,x1e80100-dp"; + /delete-property/ #sound-dai-cells; + + status = "okay"; + + aux-bus { + panel { + compatible = "edp-panel"; + power-supply = <&vreg_edp_3p3>; + + 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 8100000000>; + + remote-endpoint = <&edp_panel_in>; + }; + }; + }; +}; + +&mdss_dp3_phy { + vdda-phy-supply = <&vreg_l3j_0p8>; + vdda-pll-supply = <&vreg_l2j_1p2>; + + status = "okay"; +}; + +&pcie4 { + status = "okay"; +}; + +&pcie4_phy { + vdda-phy-supply = <&vreg_l3j_0p8>; + vdda-pll-supply = <&vreg_l3e_1p2>; + + status = "okay"; +}; + +&pcie6a { + perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>; + + wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>; + + vddpe-3v3-supply = <&vreg_nvme>; + + pinctrl-0 = <&pcie6a_default>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&pcie6a_phy { + vdda-phy-supply = <&vreg_l1d_0p8>; + vdda-pll-supply = <&vreg_l2j_1p2>; + + status = "okay"; +}; + +&qupv3_0 { + status = "okay"; +}; + +&qupv3_1 { + status = "okay"; +}; + +&qupv3_2 { + status = "okay"; +}; + +&remoteproc_adsp { + firmware-name = "qcom/x1e80100/adsp.mbn", + "qcom/x1e80100/adsp_dtb.mbn"; + + status = "okay"; +}; + +&remoteproc_cdsp { + firmware-name = "qcom/x1e80100/cdsp.mbn", + "qcom/x1e80100/cdsp_dtb.mbn"; + + status = "okay"; +}; + +&smb2360_0 { + status = "okay"; +}; + +&smb2360_0_eusb2_repeater { + vdd18-supply = <&vreg_l3d_1p8>; + vdd3-supply = <&vreg_l2b_3p0>; +}; + +&smb2360_1 { + status = "okay"; +}; + +&tlmm { + gpio-reserved-ranges = <28 4>, /* Unused */ + <44 4>, /* SPI (TPM) */ + <238 1>; /* UFS Reset */ + + kybd_default: kybd-default-state { + pins = "gpio67"; + function = "gpio"; + bias-disable; + }; + + edp_reg_en: edp-reg-en-state { + pins = "gpio54"; + function = "gpio"; + drive-strength = <16>; + bias-pull-up; + }; + + nvme_reg_en: nvme-reg-en-state { + pins = "gpio18"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + hall_int_n_default: hall-int-n-state { + pins = "gpio92"; + function = "gpio"; + bias-disable; + }; + + eusb3_reset_n: eusb3-reset-n-state { + pins = "gpio124"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + output-low; + }; + + eusb6_reset_n: eusb6-reset-n-state { + pins = "gpio111"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + output-low; + }; + + eusb5_reset_n: eusb5-reset-n-state { + pins = "gpio184"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + output-low; + }; + + pcie4_default: pcie4-default-state { + perst-n-pins { + pins = "gpio146"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; + + clkreq-n-pins { + pins = "gpio147"; + function = "pcie4_clk"; + drive-strength = <2>; + bias-pull-up; + }; + + wake-n-pins { + pins = "gpio148"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + pcie6a_default: pcie6a-default-state { + perst-n-pins { + pins = "gpio152"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; + + clkreq-n-pins { + pins = "gpio153"; + function = "pcie6a_clk"; + drive-strength = <2>; + bias-pull-up; + }; + + wake-n-pins { + pins = "gpio154"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + tpad_default: tpad-default-state { + pins = "gpio3"; + function = "gpio"; + bias-disable; + }; + + wcd_default: wcd-reset-n-active-state { + pins = "gpio191"; + function = "gpio"; + drive-strength = <16>; + bias-disable; + output-low; + }; +}; + +&usb_1_ss0_hsphy { + vdd-supply = <&vreg_l3j_0p8>; + vdda12-supply = <&vreg_l2j_1p2>; + + phys = <&smb2360_0_eusb2_repeater>; + + status = "okay"; +}; + +&usb_1_ss0_qmpphy { + vdda-phy-supply = <&vreg_l2j_1p2>; + vdda-pll-supply = <&vreg_l1j_0p9>; + + status = "okay"; +}; + +&usb_1_ss0 { + status = "okay"; +}; + +&usb_1_ss0_dwc3 { + 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>; +}; +
Initial support for TUXEDO Elite 14 Gen1 based on Qualcomm Snapdragon X Elite SoC (X1E78100). Working: * Touchpad * Keyboard * eDP (no brightness control yet) * NVMe * USB Type-C port * WiFi (WiFi 7 untested) * GPU (software rendering) Not working: * GPU (WIP: firmware loading but output is jerky) * USB Type-A (WIP) * Suspend with substantial energy saving * Audio, Speakers, Microphones * Camera * Fingerprint Reader Signed-off-by: Georg Gottleuber <ggo@tuxedocomputers.com> --- arch/arm64/boot/dts/qcom/Makefile | 1 + .../qcom/x1e80100-tuxedo-elite-14-gen1.dts | 798 ++++++++++++++++++ 2 files changed, 799 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-tuxedo-elite-14-gen1.dts