Skip to content

Commit

Permalink
arm64: dts: qcom: sc8280xp: add Lenovo Thinkpad X13s devicetree
Browse files Browse the repository at this point in the history
Add an initial devicetree for the Lenovo Thinkpad X13s with support for
USB, backlight, keyboard, touchpad, touchscreen (to be verified), PMICs
and remoteprocs.

Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@somainline.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220622132617.24604-1-johan+linaro@kernel.org
  • Loading branch information
Johan Hovold authored and Bjorn Andersson committed Jul 3, 2022
1 parent 519183a commit 32c2313
Show file tree
Hide file tree
Showing 2 changed files with 387 additions and 0 deletions.
1 change: 1 addition & 0 deletions arch/arm64/boot/dts/qcom/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sc7280-idp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7280-idp2.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7280-crd-r3.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc8280xp-crd.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc8280xp-lenovo-thinkpad-x13s.dtb
dtb-$(CONFIG_ARCH_QCOM) += sda660-inforce-ifc6560.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-ganges-kirin.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-discovery.dtb
Expand Down
386 changes: 386 additions & 0 deletions arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,386 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022, Linaro Limited
*/

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>

#include "sc8280xp.dtsi"
#include "sc8280xp-pmics.dtsi"

/ {
model = "Lenovo ThinkPad X13s";
compatible = "lenovo,thinkpad-x13s", "qcom,sc8280xp";

backlight {
compatible = "pwm-backlight";
pwms = <&pmc8280c_lpg 3 1000000>;
enable-gpios = <&pmc8280_1_gpios 8 GPIO_ACTIVE_HIGH>;
power-supply = <&vreg_edp_bl>;

pinctrl-names = "default";
pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>;
};

vreg_edp_bl: regulator-edp-bl {
compatible = "regulator-fixed";

regulator-name = "VBL9";
regulator-min-microvolt = <3600000>;
regulator-max-microvolt = <3600000>;

gpio = <&pmc8280_1_gpios 9 GPIO_ACTIVE_HIGH>;
enable-active-high;

pinctrl-names = "default";
pinctrl-0 = <&edp_bl_reg_en>;

regulator-boot-on;
};

vreg_misc_3p3: regulator-misc-3p3 {
compatible = "regulator-fixed";

regulator-name = "VCC3B";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;

gpio = <&pmc8280_1_gpios 1 GPIO_ACTIVE_HIGH>;
enable-active-high;

pinctrl-names = "default";
pinctrl-0 = <&misc_3p3_reg_en>;

regulator-boot-on;
regulator-always-on;
};
};

&apps_rsc {
pmc8280-1-rpmh-regulators {
compatible = "qcom,pm8350-rpmh-regulators";
qcom,pmic-id = "b";

vdd-l3-l5-supply = <&vreg_s11b>;

vreg_s11b: smps11 {
regulator-name = "vreg_s11b";
regulator-min-microvolt = <1272000>;
regulator-max-microvolt = <1272000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l3b: ldo3 {
regulator-name = "vreg_l3b";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
regulator-boot-on;
};

vreg_l4b: ldo4 {
regulator-name = "vreg_l4b";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
};

vreg_l6b: ldo6 {
regulator-name = "vreg_l6b";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <880000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
regulator-boot-on;
regulator-always-on; // FIXME: VDD_A_EDP_0_0P9
};
};

pmc8280c-rpmh-regulators {
compatible = "qcom,pm8350c-rpmh-regulators";
qcom,pmic-id = "c";

vreg_l1c: ldo1 {
regulator-name = "vreg_l1c";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
};

vreg_l12c: ldo12 {
regulator-name = "vreg_l12c";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
};

vreg_l13c: ldo13 {
regulator-name = "vreg_l13c";
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
};
};

pmc8280-2-rpmh-regulators {
compatible = "qcom,pm8350-rpmh-regulators";
qcom,pmic-id = "d";

vdd-l1-l4-supply = <&vreg_s11b>;

vreg_l3d: ldo3 {
regulator-name = "vreg_l3d";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
};

vreg_l4d: ldo4 {
regulator-name = "vreg_l4d";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
};

vreg_l7d: ldo7 {
regulator-name = "vreg_l7d";
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
};

vreg_l9d: ldo9 {
regulator-name = "vreg_l9d";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
};
};
};

&pmc8280c_lpg {
status = "okay";
};

&pmk8280_pon_pwrkey {
status = "okay";
};

&qup0 {
status = "okay";
};

&qup0_i2c4 {
clock-frequency = <400000>;

pinctrl-names = "default";
pinctrl-0 = <&qup0_i2c4_default>, <&ts0_default>;

status = "okay";

/* FIXME: verify */
touchscreen@10 {
compatible = "hid-over-i2c";
reg = <0x10>;
hid-descr-addr = <0x1>;
interrupts-extended = <&tlmm 175 IRQ_TYPE_LEVEL_LOW>;
vdd-supply = <&vreg_misc_3p3>;
};
};

&qup1 {
status = "okay";
};

&qup2 {
status = "okay";
};

&qup2_i2c5 {
clock-frequency = <400000>;

pinctrl-names = "default";
pinctrl-0 = <&qup2_i2c5_default>, <&kybd_default>, <&tpad_default>;

status = "okay";

touchpad@2c {
compatible = "hid-over-i2c";
reg = <0x2c>;
hid-descr-addr = <0x20>;
interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
vdd-supply = <&vreg_misc_3p3>;
};

keyboard@68 {
compatible = "hid-over-i2c";
reg = <0x68>;
hid-descr-addr = <0x1>;
interrupts-extended = <&tlmm 104 IRQ_TYPE_LEVEL_LOW>;
vdd-supply = <&vreg_misc_3p3>;
};
};

&remoteproc_adsp {
firmware-name = "qcom/sc8280xp/qcadsp8280.mbn";

status = "okay";
};

&remoteproc_nsp0 {
firmware-name = "qcom/sc8280xp/qccdsp8280.mbn";

status = "okay";
};

&usb_0 {
status = "okay";
};

&usb_0_dwc3 {
/* TODO: Define USB-C connector properly */
dr_mode = "host";
};

&usb_0_hsphy {
vdda-pll-supply = <&vreg_l9d>;
vdda18-supply = <&vreg_l1c>;
vdda33-supply = <&vreg_l7d>;

status = "okay";
};

&usb_0_qmpphy {
vdda-phy-supply = <&vreg_l9d>;
vdda-pll-supply = <&vreg_l4d>;

status = "okay";
};

&usb_1 {
status = "okay";
};

&usb_1_dwc3 {
/* TODO: Define USB-C connector properly */
dr_mode = "host";
};

&usb_1_hsphy {
vdda-pll-supply = <&vreg_l4b>;
vdda18-supply = <&vreg_l1c>;
vdda33-supply = <&vreg_l13c>;

status = "okay";
};

&usb_1_qmpphy {
vdda-phy-supply = <&vreg_l4b>;
vdda-pll-supply = <&vreg_l3b>;

status = "okay";
};

&xo_board_clk {
clock-frequency = <38400000>;
};

/* PINCTRL */

&pmc8280_1_gpios {
edp_bl_en: edp-bl-en-state {
pins = "gpio8";
function = "normal";
};

edp_bl_reg_en: edp-bl-reg-en-state {
pins = "gpio9";
function = "normal";
};

misc_3p3_reg_en: misc-3p3-reg-en-state {
pins = "gpio1";
function = "normal";
};
};

&pmc8280c_gpios {
edp_bl_pwm: edp-bl-pwm-state {
pins = "gpio8";
function = "func1";
};
};

&tlmm {
gpio-reserved-ranges = <70 2>, <74 6>, <83 4>, <125 2>, <128 2>, <154 7>;

kybd_default: kybd-default-state {
disable {
pins = "gpio102";
function = "gpio";
output-low;
};

int-n {
pins = "gpio104";
function = "gpio";
bias-disable;
};

reset {
pins = "gpio105";
function = "gpio";
bias-disable;
};
};

qup0_i2c4_default: qup0-i2c4-default-state {
pins = "gpio171", "gpio172";
function = "qup4";
bias-disable;
drive-strength = <16>;
};

qup2_i2c5_default: qup2-i2c5-default-state {
pins = "gpio81", "gpio82";
function = "qup21";
bias-disable;
drive-strength = <16>;
};

tpad_default: tpad-default-state {
int-n {
pins = "gpio182";
function = "gpio";
bias-disable;
};
};

ts0_default: ts0-default-state {
int-n {
pins = "gpio175";
function = "gpio";
bias-pull-up;
};

reset-n {
pins = "gpio99";
function = "gpio";
output-high;
drive-strength = <16>;
};
};
};

0 comments on commit 32c2313

Please sign in to comment.