Message ID | 20240719-topic-t14s_upstream-v1-3-d7d97fdebb28@linaro.org (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | ThinkPad T14s Gen 6 support | expand |
On 24-07-19 22:16:38, Konrad Dybcio wrote: > Add support for the aforementioned laptop. That includes: > > - input methods, incl. lid switch (keyboard needs the pdc > wakeup-parent removal hack..) > - NVMe, WiFi > - USB-C ports > - GPU, display > - DSPs > > Notably, the USB-A ports on the side are depenedent on the USB > multiport controller making it upstream. > > At least one of the eDP panels used (non-touchscreen) identifies as > BOE 0x0b66. > > See below for the hardware description from the OEM. > > Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> Few comments below. Otherwise, LGTM. Reviewed-by: Abel Vesa <abel.vesa@linaro.org> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ > 2 files changed, 793 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 0e5c810304fb..734a05e04c4a 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb > dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb > dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb > 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-lenovo-yoga-slim7x.dtb > diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts So what happens for SKUs of this model wil have x1e80100 ? Maybe we should stick to x1e80100 ? > new file mode 100644 > index 000000000000..b12953267505 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts > @@ -0,0 +1,792 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. > + * Copyright (c) 2024, Linaro Limited > + */ > + > +/dts-v1/; > + > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/input/gpio-keys.h> > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> > + > +#include "x1e80100.dtsi" > +#include "x1e80100-pmics.dtsi" > + > +/ { > + model = "Lenovo ThinkPad T14s Gen 6"; > + compatible = "lenovo,thinkpad-t14s", "qcom,x1e78100", "qcom,x1e80100"; > + > + aliases { > + serial0 = &uart21; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + [...] > + > + 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_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&edp_reg_en>; > + pinctrl-names = "default"; > + > + regulator-always-on; Drop this. > + regulator-boot-on; > + }; > + [...] > + > +&tlmm { > + gpio-reserved-ranges = <34 2>, /* Unused */ > + <44 4>, /* SPI (TPM) */ > + <72 2>, /* Secure EC I2C connection (?) */ > + <238 1>; /* UFS Reset */ > + > + tpad_default: tpad-default-state { > + pins = "gpio3"; > + function = "gpio"; > + bias-pull-up; > + }; > + > + nvme_reg_en: nvme-reg-en-state { > + pins = "gpio18"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + ts0_default: ts0-default-state { > + reset-n-pins { > + pins = "gpio48"; > + function = "gpio"; > + output-high; > + drive-strength = <16>; > + }; > + > + int-n-pins { > + pins = "gpio51"; > + function = "gpio"; > + bias-disable; > + }; > + }; > + > + kybd_default: kybd-default-state { > + pins = "gpio67"; > + function = "gpio"; > + bias-disable; > + }; > + > + edp_reg_en: edp-reg-en-state { > + pins = "gpio70"; > + function = "gpio"; > + drive-strength = <16>; > + bias-pull-up; bias-disable, maybe ? > + }; > + > + hall_int_n_default: hall-int-n-state { > + pins = "gpio92"; > + function = "gpio"; > + bias-disable; > + }; > + [...] > > -- > 2.45.2 >
On 21.07.2024 6:40 PM, Abel Vesa wrote: > On 24-07-19 22:16:38, Konrad Dybcio wrote: >> Add support for the aforementioned laptop. That includes: >> >> - input methods, incl. lid switch (keyboard needs the pdc >> wakeup-parent removal hack..) >> - NVMe, WiFi >> - USB-C ports >> - GPU, display >> - DSPs >> >> Notably, the USB-A ports on the side are depenedent on the USB >> multiport controller making it upstream. >> >> At least one of the eDP panels used (non-touchscreen) identifies as >> BOE 0x0b66. >> >> See below for the hardware description from the OEM. >> >> Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 >> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > Few comments below. Otherwise, LGTM. > > Reviewed-by: Abel Vesa <abel.vesa@linaro.org> > >> --- >> arch/arm64/boot/dts/qcom/Makefile | 1 + >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ >> 2 files changed, 793 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile >> index 0e5c810304fb..734a05e04c4a 100644 >> --- a/arch/arm64/boot/dts/qcom/Makefile >> +++ b/arch/arm64/boot/dts/qcom/Makefile >> @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb >> 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-lenovo-yoga-slim7x.dtb >> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts > > So what happens for SKUs of this model wil have x1e80100 ? > > Maybe we should stick to x1e80100 ? This one only ships with 78100 [...] >> + 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_HIGH>; >> + enable-active-high; >> + >> + pinctrl-0 = <&edp_reg_en>; >> + pinctrl-names = "default"; >> + >> + regulator-always-on; > > Drop this. Oops! [...] >> + >> + edp_reg_en: edp-reg-en-state { >> + pins = "gpio70"; >> + function = "gpio"; >> + drive-strength = <16>; >> + bias-pull-up; > > bias-disable, maybe ? Yeah, probably Konrad
On Fri, Jul 19, 2024 at 10:16:38PM +0200, Konrad Dybcio wrote: > +/ { > + model = "Lenovo ThinkPad T14s Gen 6"; > + compatible = "lenovo,thinkpad-t14s", "qcom,x1e78100", "qcom,x1e80100"; > + > + aliases { > + serial0 = &uart21; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; I don't think this machine has a serial console. > +&pcie4 { Missing perst and wake gpios and pin configuration. > + status = "okay"; > +}; > + > +&pcie4_phy { > + vdda-phy-supply = <&vreg_l3j_0p8>; This should most likely be vreg_l3i as on the CRD reference design. > + vdda-pll-supply = <&vreg_l3e_1p2>; > + > + status = "okay"; > +}; > + pcie6a_default: pcie2a-default-state { copy-pasta: pcie6a-default-state > + clkreq-n-pins { > + pins = "gpio153"; > + function = "pcie6a_clk"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + > + perst-n-pins { > + pins = "gpio152"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-down; bias-disable > + }; > + > + wake-n-pins { > + pins = "gpio154"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + }; > +&uart21 { > + compatible = "qcom,geni-debug-uart"; > + > + status = "okay"; > +}; Likely not present / accessible so no need to slow down boot by printing logs at 115200. Johan
On 24-07-22 10:42:57, Konrad Dybcio wrote: > On 21.07.2024 6:40 PM, Abel Vesa wrote: > > On 24-07-19 22:16:38, Konrad Dybcio wrote: > >> Add support for the aforementioned laptop. That includes: > >> > >> - input methods, incl. lid switch (keyboard needs the pdc > >> wakeup-parent removal hack..) > >> - NVMe, WiFi > >> - USB-C ports > >> - GPU, display > >> - DSPs > >> > >> Notably, the USB-A ports on the side are depenedent on the USB > >> multiport controller making it upstream. > >> > >> At least one of the eDP panels used (non-touchscreen) identifies as > >> BOE 0x0b66. > >> > >> See below for the hardware description from the OEM. > >> > >> Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 > >> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > Few comments below. Otherwise, LGTM. > > > > Reviewed-by: Abel Vesa <abel.vesa@linaro.org> > > > >> --- > >> arch/arm64/boot/dts/qcom/Makefile | 1 + > >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ > >> 2 files changed, 793 insertions(+) > >> > >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > >> index 0e5c810304fb..734a05e04c4a 100644 > >> --- a/arch/arm64/boot/dts/qcom/Makefile > >> +++ b/arch/arm64/boot/dts/qcom/Makefile > >> @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb > >> 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-lenovo-yoga-slim7x.dtb > >> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts > > > > So what happens for SKUs of this model wil have x1e80100 ? > > > > Maybe we should stick to x1e80100 ? > > This one only ships with 78100 > Sure, but then in upstream we only have 80100. Plus, it is included in this file as well. I don't know what's the right thing to do here. But I think it keeps things more simple if we keep everything under the x1e80100 umbrella. > [...] > > >> + 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_HIGH>; > >> + enable-active-high; > >> + > >> + pinctrl-0 = <&edp_reg_en>; > >> + pinctrl-names = "default"; > >> + > >> + regulator-always-on; > > > > Drop this. > > Oops! > > [...] > > >> + > >> + edp_reg_en: edp-reg-en-state { > >> + pins = "gpio70"; > >> + function = "gpio"; > >> + drive-strength = <16>; > >> + bias-pull-up; > > > > bias-disable, maybe ? > > Yeah, probably > > Konrad >
On Mon, Jul 22, 2024 at 3:11 AM Abel Vesa <abel.vesa@linaro.org> wrote: > > On 24-07-22 10:42:57, Konrad Dybcio wrote: > > On 21.07.2024 6:40 PM, Abel Vesa wrote: > > > On 24-07-19 22:16:38, Konrad Dybcio wrote: > > >> Add support for the aforementioned laptop. That includes: > > >> > > >> - input methods, incl. lid switch (keyboard needs the pdc > > >> wakeup-parent removal hack..) > > >> - NVMe, WiFi > > >> - USB-C ports > > >> - GPU, display > > >> - DSPs > > >> > > >> Notably, the USB-A ports on the side are depenedent on the USB > > >> multiport controller making it upstream. > > >> > > >> At least one of the eDP panels used (non-touchscreen) identifies as > > >> BOE 0x0b66. > > >> > > >> See below for the hardware description from the OEM. > > >> > > >> Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 > > >> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > > > Few comments below. Otherwise, LGTM. > > > > > > Reviewed-by: Abel Vesa <abel.vesa@linaro.org> > > > > > >> --- > > >> arch/arm64/boot/dts/qcom/Makefile | 1 + > > >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ > > >> 2 files changed, 793 insertions(+) > > >> > > >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > > >> index 0e5c810304fb..734a05e04c4a 100644 > > >> --- a/arch/arm64/boot/dts/qcom/Makefile > > >> +++ b/arch/arm64/boot/dts/qcom/Makefile > > >> @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb > > >> 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-lenovo-yoga-slim7x.dtb > > >> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts > > > > > > So what happens for SKUs of this model wil have x1e80100 ? > > > > > > Maybe we should stick to x1e80100 ? > > > > This one only ships with 78100 > > > > Sure, but then in upstream we only have 80100. Plus, it is included in > this file as well. > > I don't know what's the right thing to do here. But I think it keeps > things more simple if we keep everything under the x1e80100 umbrella. plus sticking to x1e80100 will avoid angering tab completion :-P BR, -R > > [...] > > > > >> + 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_HIGH>; > > >> + enable-active-high; > > >> + > > >> + pinctrl-0 = <&edp_reg_en>; > > >> + pinctrl-names = "default"; > > >> + > > >> + regulator-always-on; > > > > > > Drop this. > > > > Oops! > > > > [...] > > > > >> + > > >> + edp_reg_en: edp-reg-en-state { > > >> + pins = "gpio70"; > > >> + function = "gpio"; > > >> + drive-strength = <16>; > > >> + bias-pull-up; > > > > > > bias-disable, maybe ? > > > > Yeah, probably > > > > Konrad > > >
On Mon, Jul 22, 2024 at 08:00:19AM GMT, Rob Clark wrote: > On Mon, Jul 22, 2024 at 3:11 AM Abel Vesa <abel.vesa@linaro.org> wrote: > > > > On 24-07-22 10:42:57, Konrad Dybcio wrote: > > > On 21.07.2024 6:40 PM, Abel Vesa wrote: > > > > On 24-07-19 22:16:38, Konrad Dybcio wrote: > > > >> Add support for the aforementioned laptop. That includes: > > > >> > > > >> - input methods, incl. lid switch (keyboard needs the pdc > > > >> wakeup-parent removal hack..) > > > >> - NVMe, WiFi > > > >> - USB-C ports > > > >> - GPU, display > > > >> - DSPs > > > >> > > > >> Notably, the USB-A ports on the side are depenedent on the USB > > > >> multiport controller making it upstream. > > > >> > > > >> At least one of the eDP panels used (non-touchscreen) identifies as > > > >> BOE 0x0b66. > > > >> > > > >> See below for the hardware description from the OEM. > > > >> > > > >> Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 > > > >> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > > > > > Few comments below. Otherwise, LGTM. > > > > > > > > Reviewed-by: Abel Vesa <abel.vesa@linaro.org> > > > > > > > >> --- > > > >> arch/arm64/boot/dts/qcom/Makefile | 1 + > > > >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ > > > >> 2 files changed, 793 insertions(+) > > > >> > > > >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > > > >> index 0e5c810304fb..734a05e04c4a 100644 > > > >> --- a/arch/arm64/boot/dts/qcom/Makefile > > > >> +++ b/arch/arm64/boot/dts/qcom/Makefile > > > >> @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb > > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb > > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb > > > >> 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-lenovo-yoga-slim7x.dtb > > > >> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts > > > > > > > > So what happens for SKUs of this model wil have x1e80100 ? > > > > > > > > Maybe we should stick to x1e80100 ? > > > > > > This one only ships with 78100 > > > > > > > Sure, but then in upstream we only have 80100. Plus, it is included in > > this file as well. > > > > I don't know what's the right thing to do here. But I think it keeps > > things more simple if we keep everything under the x1e80100 umbrella. > > plus sticking to x1e80100 will avoid angering tab completion :-P This is an old argument, with no clear answer. For some devices we choose to use correct SoC name (sda660-inforce-ifc6560). For other we didn't (sdm845-db845c, which really is SDA845). However for most of the devices the goal is to be accurate (think about all the qcs vs qcm stories). So my 2c. would go to x1e78100.
On Mon, Jul 22, 2024 at 07:03:43PM GMT, Dmitry Baryshkov wrote: > On Mon, Jul 22, 2024 at 08:00:19AM GMT, Rob Clark wrote: > > On Mon, Jul 22, 2024 at 3:11 AM Abel Vesa <abel.vesa@linaro.org> wrote: > > > > > > On 24-07-22 10:42:57, Konrad Dybcio wrote: > > > > On 21.07.2024 6:40 PM, Abel Vesa wrote: > > > > > On 24-07-19 22:16:38, Konrad Dybcio wrote: > > > > >> Add support for the aforementioned laptop. That includes: > > > > >> > > > > >> - input methods, incl. lid switch (keyboard needs the pdc > > > > >> wakeup-parent removal hack..) > > > > >> - NVMe, WiFi > > > > >> - USB-C ports > > > > >> - GPU, display > > > > >> - DSPs > > > > >> > > > > >> Notably, the USB-A ports on the side are depenedent on the USB > > > > >> multiport controller making it upstream. > > > > >> > > > > >> At least one of the eDP panels used (non-touchscreen) identifies as > > > > >> BOE 0x0b66. > > > > >> > > > > >> See below for the hardware description from the OEM. > > > > >> > > > > >> Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 > > > > >> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > > > > > > > Few comments below. Otherwise, LGTM. > > > > > > > > > > Reviewed-by: Abel Vesa <abel.vesa@linaro.org> > > > > > > > > > >> --- > > > > >> arch/arm64/boot/dts/qcom/Makefile | 1 + > > > > >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ > > > > >> 2 files changed, 793 insertions(+) > > > > >> > > > > >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > > > > >> index 0e5c810304fb..734a05e04c4a 100644 > > > > >> --- a/arch/arm64/boot/dts/qcom/Makefile > > > > >> +++ b/arch/arm64/boot/dts/qcom/Makefile > > > > >> @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb > > > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb > > > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb > > > > >> 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-lenovo-yoga-slim7x.dtb > > > > >> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts > > > > > > > > > > So what happens for SKUs of this model wil have x1e80100 ? > > > > > > > > > > Maybe we should stick to x1e80100 ? > > > > > > > > This one only ships with 78100 > > > > > > > > > > Sure, but then in upstream we only have 80100. Plus, it is included in > > > this file as well. > > > > > > I don't know what's the right thing to do here. But I think it keeps > > > things more simple if we keep everything under the x1e80100 umbrella. > > > > plus sticking to x1e80100 will avoid angering tab completion :-P > > This is an old argument, with no clear answer. For some devices we > choose to use correct SoC name (sda660-inforce-ifc6560). For other we > didn't (sdm845-db845c, which really is SDA845). However for most of the > devices the goal is to be accurate (think about all the qcs vs qcm > stories). So my 2c. would go to x1e78100. > I agree, x1e78100 follows the naming scheme we have agreed upon - for better or worse. Regards, Bjorn > -- > With best wishes > Dmitry
> Date: Tue, 23 Jul 2024 13:55:20 -0500 > From: Bjorn Andersson <andersson@kernel.org> > > On Mon, Jul 22, 2024 at 07:03:43PM GMT, Dmitry Baryshkov wrote: > > On Mon, Jul 22, 2024 at 08:00:19AM GMT, Rob Clark wrote: > > > On Mon, Jul 22, 2024 at 3:11 AM Abel Vesa <abel.vesa@linaro.org> wrote: > > > > > > > > On 24-07-22 10:42:57, Konrad Dybcio wrote: > > > > > On 21.07.2024 6:40 PM, Abel Vesa wrote: > > > > > > On 24-07-19 22:16:38, Konrad Dybcio wrote: > > > > > >> Add support for the aforementioned laptop. That includes: > > > > > >> > > > > > >> - input methods, incl. lid switch (keyboard needs the pdc > > > > > >> wakeup-parent removal hack..) > > > > > >> - NVMe, WiFi > > > > > >> - USB-C ports > > > > > >> - GPU, display > > > > > >> - DSPs > > > > > >> > > > > > >> Notably, the USB-A ports on the side are depenedent on the USB > > > > > >> multiport controller making it upstream. > > > > > >> > > > > > >> At least one of the eDP panels used (non-touchscreen) identifies as > > > > > >> BOE 0x0b66. > > > > > >> > > > > > >> See below for the hardware description from the OEM. > > > > > >> > > > > > >> Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 > > > > > >> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > > > > > > > > > Few comments below. Otherwise, LGTM. > > > > > > > > > > > > Reviewed-by: Abel Vesa <abel.vesa@linaro.org> > > > > > > > > > > > >> --- > > > > > >> arch/arm64/boot/dts/qcom/Makefile | 1 + > > > > > >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ > > > > > >> 2 files changed, 793 insertions(+) > > > > > >> > > > > > >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > > > > > >> index 0e5c810304fb..734a05e04c4a 100644 > > > > > >> --- a/arch/arm64/boot/dts/qcom/Makefile > > > > > >> +++ b/arch/arm64/boot/dts/qcom/Makefile > > > > > >> @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb > > > > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb > > > > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb > > > > > >> 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-lenovo-yoga-slim7x.dtb > > > > > >> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts > > > > > > > > > > > > So what happens for SKUs of this model wil have x1e80100 ? > > > > > > > > > > > > Maybe we should stick to x1e80100 ? > > > > > > > > > > This one only ships with 78100 > > > > > > > > > > > > > Sure, but then in upstream we only have 80100. Plus, it is included in > > > > this file as well. > > > > > > > > I don't know what's the right thing to do here. But I think it keeps > > > > things more simple if we keep everything under the x1e80100 umbrella. > > > > > > plus sticking to x1e80100 will avoid angering tab completion :-P > > > > This is an old argument, with no clear answer. For some devices we > > choose to use correct SoC name (sda660-inforce-ifc6560). For other we > > didn't (sdm845-db845c, which really is SDA845). However for most of the > > devices the goal is to be accurate (think about all the qcs vs qcm > > stories). So my 2c. would go to x1e78100. > > > > I agree, x1e78100 follows the naming scheme we have agreed upon - for > better or worse. So should the device trees for the Asus Vivobook S15 and the Lenovo Yoga Slim 7x be renamed then? Since those also (only) ship with X1E-78-100 variants of the SoC. There is supposed to be a variant of the Vivobook with the X1P-64-100 (I haven't seen it actually for sale yet). Since that one has only 10 CPU cores, should that one gets its own device tree? That may not be possible. I have a strong suspicion that all the variants are just binned versions of the same SoC, where the X1P just has two of the cores disabled. If Qualcomm, like Apple, attempts to increase the yield by binning SoCs with broken or badly performing cores as X1P it might be a lottery which of the 12 cores get disabled. And for the vendors that do offer models with different X1E variants, are there going to multiple device trees, one for each variant? I'm asking because on OpenBSD we load the device trees in our bootloader and map SMBIOS vendor and product names to a device tree name. So a consistent naming scheme for the device trees is desirable. Thanks, Mark > Regards, > Bjorn > > > -- > > With best wishes > > Dmitry >
On Tue, Jul 23, 2024 at 2:28 PM Mark Kettenis <mark.kettenis@xs4all.nl> wrote: > > > Date: Tue, 23 Jul 2024 13:55:20 -0500 > > From: Bjorn Andersson <andersson@kernel.org> > > > > On Mon, Jul 22, 2024 at 07:03:43PM GMT, Dmitry Baryshkov wrote: > > > On Mon, Jul 22, 2024 at 08:00:19AM GMT, Rob Clark wrote: > > > > On Mon, Jul 22, 2024 at 3:11 AM Abel Vesa <abel.vesa@linaro.org> wrote: > > > > > > > > > > On 24-07-22 10:42:57, Konrad Dybcio wrote: > > > > > > On 21.07.2024 6:40 PM, Abel Vesa wrote: > > > > > > > On 24-07-19 22:16:38, Konrad Dybcio wrote: > > > > > > >> Add support for the aforementioned laptop. That includes: > > > > > > >> > > > > > > >> - input methods, incl. lid switch (keyboard needs the pdc > > > > > > >> wakeup-parent removal hack..) > > > > > > >> - NVMe, WiFi > > > > > > >> - USB-C ports > > > > > > >> - GPU, display > > > > > > >> - DSPs > > > > > > >> > > > > > > >> Notably, the USB-A ports on the side are depenedent on the USB > > > > > > >> multiport controller making it upstream. > > > > > > >> > > > > > > >> At least one of the eDP panels used (non-touchscreen) identifies as > > > > > > >> BOE 0x0b66. > > > > > > >> > > > > > > >> See below for the hardware description from the OEM. > > > > > > >> > > > > > > >> Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 > > > > > > >> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > > > > > > > > > > > Few comments below. Otherwise, LGTM. > > > > > > > > > > > > > > Reviewed-by: Abel Vesa <abel.vesa@linaro.org> > > > > > > > > > > > > > >> --- > > > > > > >> arch/arm64/boot/dts/qcom/Makefile | 1 + > > > > > > >> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ > > > > > > >> 2 files changed, 793 insertions(+) > > > > > > >> > > > > > > >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > > > > > > >> index 0e5c810304fb..734a05e04c4a 100644 > > > > > > >> --- a/arch/arm64/boot/dts/qcom/Makefile > > > > > > >> +++ b/arch/arm64/boot/dts/qcom/Makefile > > > > > > >> @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb > > > > > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb > > > > > > >> dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb > > > > > > >> 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-lenovo-yoga-slim7x.dtb > > > > > > >> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts > > > > > > > > > > > > > > So what happens for SKUs of this model wil have x1e80100 ? > > > > > > > > > > > > > > Maybe we should stick to x1e80100 ? > > > > > > > > > > > > This one only ships with 78100 > > > > > > > > > > > > > > > > Sure, but then in upstream we only have 80100. Plus, it is included in > > > > > this file as well. > > > > > > > > > > I don't know what's the right thing to do here. But I think it keeps > > > > > things more simple if we keep everything under the x1e80100 umbrella. > > > > > > > > plus sticking to x1e80100 will avoid angering tab completion :-P > > > > > > This is an old argument, with no clear answer. For some devices we > > > choose to use correct SoC name (sda660-inforce-ifc6560). For other we > > > didn't (sdm845-db845c, which really is SDA845). However for most of the > > > devices the goal is to be accurate (think about all the qcs vs qcm > > > stories). So my 2c. would go to x1e78100. > > > > > > > I agree, x1e78100 follows the naming scheme we have agreed upon - for > > better or worse. > > So should the device trees for the Asus Vivobook S15 and the Lenovo > Yoga Slim 7x be renamed then? Since those also (only) ship with > X1E-78-100 variants of the SoC. > > There is supposed to be a variant of the Vivobook with the X1P-64-100 > (I haven't seen it actually for sale yet). Since that one has only 10 > CPU cores, should that one gets its own device tree? That may not be > possible. I have a strong suspicion that all the variants are just > binned versions of the same SoC, where the X1P just has two of the > cores disabled. If Qualcomm, like Apple, attempts to increase the > yield by binning SoCs with broken or badly performing cores as X1P it > might be a lottery which of the 12 cores get disabled. > > And for the vendors that do offer models with different X1E variants, > are there going to multiple device trees, one for each variant? > > I'm asking because on OpenBSD we load the device trees in our > bootloader and map SMBIOS vendor and product names to a device tree > name. So a consistent naming scheme for the device trees is > desirable. multi-sku laptops are going to make this a mess.. We really should just reconsider.. or maybe sidestep the issue and call them all "x1-crd.dts", "x1-lenovo-yoga-7x.dts", etc BR, -R > Thanks, > > Mark > > > Regards, > > Bjorn > > > > > -- > > > With best wishes > > > Dmitry > >
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 0e5c810304fb..734a05e04c4a 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -261,6 +261,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb 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-lenovo-yoga-slim7x.dtb diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts new file mode 100644 index 000000000000..b12953267505 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts @@ -0,0 +1,792 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2024, Linaro Limited + */ + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/gpio-keys.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> + +#include "x1e80100.dtsi" +#include "x1e80100-pmics.dtsi" + +/ { + model = "Lenovo ThinkPad T14s Gen 6"; + compatible = "lenovo,thinkpad-t14s", "qcom,x1e78100", "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; + wakeup-event-action = <EV_ACT_DEASSERTED>; + }; + }; + + pmic-glink { + compatible = "qcom,x1e80100-pmic-glink", + "qcom,sm8550-pmic-glink", + "qcom,pmic-glink"; + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>, + <&tlmm 123 GPIO_ACTIVE_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + + /* Display-adjacent 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>; + }; + }; + }; + }; + + /* User-adjacent 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>; + }; + }; + }; + }; + }; + + 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>; + + gpio = <&tlmm 70 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>; + + gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&nvme_reg_en>; + pinctrl-names = "default"; + }; + + 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_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_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_0p8: ldo3 { + regulator-name = "vreg_l3c_0p8"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <912000>; + 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_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_0p8: ldo1 { + regulator-name = "vreg_l1j_0p8"; + 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/x1e80100/LENOVO/21N1/qcdxkmsuc8380.mbn"; + }; +}; + +&i2c0 { + clock-frequency = <400000>; + + status = "okay"; + + /* ELAN06E2 or ELAN06E3 */ + touchpad@15 { + compatible = "hid-over-i2c"; + reg = <0x15>; + + hid-descr-addr = <0x1>; + interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>; + + pinctrl-0 = <&tpad_default>; + pinctrl-names = "default"; + + wakeup-source; + }; + + /* TODO: second-sourced SYNA8022 or SYNA8024 touchpad @ 0x2c */ + + /* ELAN06F1 or SYNA06F2 */ + 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; + }; +}; + +&i2c8 { + clock-frequency = <400000>; + + status = "okay"; + + /* ILIT2911 or GTCH1563 */ + touchscreen@10 { + compatible = "hid-over-i2c"; + reg = <0x10>; + + hid-descr-addr = <0x1>; + interrupts-extended = <&tlmm 51 IRQ_TYPE_LEVEL_LOW>; + + pinctrl-0 = <&ts0_default>; + pinctrl-names = "default"; + }; + + /* TODO: second-sourced touchscreen @ 0x41 */ +}; + +&mdss { + status = "okay"; +}; + +&mdss_dp3 { + compatible = "qcom,x1e80100-dp"; + /delete-property/ #sound-dai-cells; + + status = "okay"; + + aux-bus { + panel { + compatible = "edp-panel"; + enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>; + power-supply = <&vreg_edp_3p3>; + + 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 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"; +}; + +&pmc8380_3_gpios { + edp_bl_en: edp-bl-en-state { + pins = "gpio4"; + function = "normal"; + power-source = <1>; + input-disable; + output-enable; + }; +}; + +&qupv3_0 { + status = "okay"; +}; + +&qupv3_1 { + status = "okay"; +}; + +&qupv3_2 { + status = "okay"; +}; + +&remoteproc_adsp { + firmware-name = "qcom/x1e80100/LENOVO/21N1/qcadsp8380.mbn", + "qcom/x1e80100/LENOVO/21N1/adsp_dtbs.elf"; + + status = "okay"; +}; + +&remoteproc_cdsp { + firmware-name = "qcom/x1e80100/LENOVO/21N1/qccdsp8380.mbn", + "qcom/x1e80100/LENOVO/21N1/cdsp_dtbs.elf"; + + status = "okay"; +}; + +&smb2360_0_eusb2_repeater { + vdd18-supply = <&vreg_l3d_1p8>; + vdd3-supply = <&vreg_l2b_3p0>; +}; + +&smb2360_1_eusb2_repeater { + vdd18-supply = <&vreg_l3d_1p8>; + vdd3-supply = <&vreg_l14b_3p0>; +}; + +&tlmm { + gpio-reserved-ranges = <34 2>, /* Unused */ + <44 4>, /* SPI (TPM) */ + <72 2>, /* Secure EC I2C connection (?) */ + <238 1>; /* UFS Reset */ + + tpad_default: tpad-default-state { + pins = "gpio3"; + function = "gpio"; + bias-pull-up; + }; + + nvme_reg_en: nvme-reg-en-state { + pins = "gpio18"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + ts0_default: ts0-default-state { + reset-n-pins { + pins = "gpio48"; + function = "gpio"; + output-high; + drive-strength = <16>; + }; + + int-n-pins { + pins = "gpio51"; + function = "gpio"; + bias-disable; + }; + }; + + kybd_default: kybd-default-state { + pins = "gpio67"; + function = "gpio"; + bias-disable; + }; + + edp_reg_en: edp-reg-en-state { + pins = "gpio70"; + function = "gpio"; + drive-strength = <16>; + bias-pull-up; + }; + + hall_int_n_default: hall-int-n-state { + pins = "gpio92"; + function = "gpio"; + bias-disable; + }; + + pcie6a_default: pcie2a-default-state { + clkreq-n-pins { + pins = "gpio153"; + function = "pcie6a_clk"; + drive-strength = <2>; + bias-pull-up; + }; + + perst-n-pins { + pins = "gpio152"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; + + wake-n-pins { + pins = "gpio154"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + wcd_default: wcd-reset-n-active-state { + pins = "gpio191"; + function = "gpio"; + drive-strength = <16>; + bias-disable; + output-low; + }; +}; + +&uart21 { + compatible = "qcom,geni-debug-uart"; + + status = "okay"; +}; + +&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_l3e_1p2>; + vdda-pll-supply = <&vreg_l1j_0p8>; + + 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>; +}; + +&usb_1_ss1_hsphy { + vdd-supply = <&vreg_l3j_0p8>; + vdda12-supply = <&vreg_l2j_1p2>; + + phys = <&smb2360_1_eusb2_repeater>; + + status = "okay"; +}; + +&usb_1_ss1_qmpphy { + vdda-phy-supply = <&vreg_l3e_1p2>; + vdda-pll-supply = <&vreg_l2d_0p9>; + + status = "okay"; +}; + +&usb_1_ss1 { + status = "okay"; +}; + +&usb_1_ss1_dwc3 { + 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>; +};
Add support for the aforementioned laptop. That includes: - input methods, incl. lid switch (keyboard needs the pdc wakeup-parent removal hack..) - NVMe, WiFi - USB-C ports - GPU, display - DSPs Notably, the USB-A ports on the side are depenedent on the USB multiport controller making it upstream. At least one of the eDP panels used (non-touchscreen) identifies as BOE 0x0b66. See below for the hardware description from the OEM. Link: https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/lenovo-thinkpad-t14s-gen-6-(14-inch-snapdragon)/len101t0099 Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> --- arch/arm64/boot/dts/qcom/Makefile | 1 + .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 792 +++++++++++++++++++++ 2 files changed, 793 insertions(+)