132c23138SJohan Hovold// SPDX-License-Identifier: BSD-3-Clause
232c23138SJohan Hovold/*
332c23138SJohan Hovold * Copyright (c) 2021, The Linux Foundation. All rights reserved.
432c23138SJohan Hovold * Copyright (c) 2022, Linaro Limited
532c23138SJohan Hovold */
632c23138SJohan Hovold
732c23138SJohan Hovold/dts-v1/;
832c23138SJohan Hovold
932c23138SJohan Hovold#include <dt-bindings/gpio/gpio.h>
1032c23138SJohan Hovold#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
1132c23138SJohan Hovold
1232c23138SJohan Hovold#include "sc8280xp.dtsi"
1332c23138SJohan Hovold#include "sc8280xp-pmics.dtsi"
1432c23138SJohan Hovold
1532c23138SJohan Hovold/ {
1632c23138SJohan Hovold	model = "Lenovo ThinkPad X13s";
1732c23138SJohan Hovold	compatible = "lenovo,thinkpad-x13s", "qcom,sc8280xp";
1832c23138SJohan Hovold
1932c23138SJohan Hovold	backlight {
2032c23138SJohan Hovold		compatible = "pwm-backlight";
2132c23138SJohan Hovold		pwms = <&pmc8280c_lpg 3 1000000>;
2232c23138SJohan Hovold		enable-gpios = <&pmc8280_1_gpios 8 GPIO_ACTIVE_HIGH>;
2332c23138SJohan Hovold		power-supply = <&vreg_edp_bl>;
2432c23138SJohan Hovold
2532c23138SJohan Hovold		pinctrl-names = "default";
2632c23138SJohan Hovold		pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>;
2732c23138SJohan Hovold	};
2832c23138SJohan Hovold
2932c23138SJohan Hovold	vreg_edp_bl: regulator-edp-bl {
3032c23138SJohan Hovold		compatible = "regulator-fixed";
3132c23138SJohan Hovold
3232c23138SJohan Hovold		regulator-name = "VBL9";
3332c23138SJohan Hovold		regulator-min-microvolt = <3600000>;
3432c23138SJohan Hovold		regulator-max-microvolt = <3600000>;
3532c23138SJohan Hovold
3632c23138SJohan Hovold		gpio = <&pmc8280_1_gpios 9 GPIO_ACTIVE_HIGH>;
3732c23138SJohan Hovold		enable-active-high;
3832c23138SJohan Hovold
3932c23138SJohan Hovold		pinctrl-names = "default";
4032c23138SJohan Hovold		pinctrl-0 = <&edp_bl_reg_en>;
4132c23138SJohan Hovold
4232c23138SJohan Hovold		regulator-boot-on;
4332c23138SJohan Hovold	};
4432c23138SJohan Hovold
4532c23138SJohan Hovold	vreg_misc_3p3: regulator-misc-3p3 {
4632c23138SJohan Hovold		compatible = "regulator-fixed";
4732c23138SJohan Hovold
4832c23138SJohan Hovold		regulator-name = "VCC3B";
4932c23138SJohan Hovold		regulator-min-microvolt = <3300000>;
5032c23138SJohan Hovold		regulator-max-microvolt = <3300000>;
5132c23138SJohan Hovold
5232c23138SJohan Hovold		gpio = <&pmc8280_1_gpios 1 GPIO_ACTIVE_HIGH>;
5332c23138SJohan Hovold		enable-active-high;
5432c23138SJohan Hovold
5532c23138SJohan Hovold		pinctrl-names = "default";
5632c23138SJohan Hovold		pinctrl-0 = <&misc_3p3_reg_en>;
5732c23138SJohan Hovold
5832c23138SJohan Hovold		regulator-boot-on;
5932c23138SJohan Hovold		regulator-always-on;
6032c23138SJohan Hovold	};
6132c23138SJohan Hovold};
6232c23138SJohan Hovold
6332c23138SJohan Hovold&apps_rsc {
6432c23138SJohan Hovold	pmc8280-1-rpmh-regulators {
6532c23138SJohan Hovold		compatible = "qcom,pm8350-rpmh-regulators";
6632c23138SJohan Hovold		qcom,pmic-id = "b";
6732c23138SJohan Hovold
6832c23138SJohan Hovold		vdd-l3-l5-supply = <&vreg_s11b>;
6932c23138SJohan Hovold
7032c23138SJohan Hovold		vreg_s11b: smps11 {
7132c23138SJohan Hovold			regulator-name = "vreg_s11b";
7232c23138SJohan Hovold			regulator-min-microvolt = <1272000>;
7332c23138SJohan Hovold			regulator-max-microvolt = <1272000>;
7432c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
7532c23138SJohan Hovold		};
7632c23138SJohan Hovold
7732c23138SJohan Hovold		vreg_l3b: ldo3 {
7832c23138SJohan Hovold			regulator-name = "vreg_l3b";
7932c23138SJohan Hovold			regulator-min-microvolt = <1200000>;
8032c23138SJohan Hovold			regulator-max-microvolt = <1200000>;
8132c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
8232c23138SJohan Hovold			regulator-boot-on;
8332c23138SJohan Hovold		};
8432c23138SJohan Hovold
8532c23138SJohan Hovold		vreg_l4b: ldo4 {
8632c23138SJohan Hovold			regulator-name = "vreg_l4b";
8732c23138SJohan Hovold			regulator-min-microvolt = <912000>;
8832c23138SJohan Hovold			regulator-max-microvolt = <912000>;
8932c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
9032c23138SJohan Hovold		};
9132c23138SJohan Hovold
9232c23138SJohan Hovold		vreg_l6b: ldo6 {
9332c23138SJohan Hovold			regulator-name = "vreg_l6b";
9432c23138SJohan Hovold			regulator-min-microvolt = <880000>;
9532c23138SJohan Hovold			regulator-max-microvolt = <880000>;
9632c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
9732c23138SJohan Hovold			regulator-boot-on;
9832c23138SJohan Hovold			regulator-always-on;	// FIXME: VDD_A_EDP_0_0P9
9932c23138SJohan Hovold		};
10032c23138SJohan Hovold	};
10132c23138SJohan Hovold
10232c23138SJohan Hovold	pmc8280c-rpmh-regulators {
10332c23138SJohan Hovold		compatible = "qcom,pm8350c-rpmh-regulators";
10432c23138SJohan Hovold		qcom,pmic-id = "c";
10532c23138SJohan Hovold
10632c23138SJohan Hovold		vreg_l1c: ldo1 {
10732c23138SJohan Hovold			regulator-name = "vreg_l1c";
10832c23138SJohan Hovold			regulator-min-microvolt = <1800000>;
10932c23138SJohan Hovold			regulator-max-microvolt = <1800000>;
11032c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
11132c23138SJohan Hovold		};
11232c23138SJohan Hovold
11332c23138SJohan Hovold		vreg_l12c: ldo12 {
11432c23138SJohan Hovold			regulator-name = "vreg_l12c";
11532c23138SJohan Hovold			regulator-min-microvolt = <1800000>;
11632c23138SJohan Hovold			regulator-max-microvolt = <1800000>;
11732c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
11832c23138SJohan Hovold		};
11932c23138SJohan Hovold
12032c23138SJohan Hovold		vreg_l13c: ldo13 {
12132c23138SJohan Hovold			regulator-name = "vreg_l13c";
12232c23138SJohan Hovold			regulator-min-microvolt = <3072000>;
12332c23138SJohan Hovold			regulator-max-microvolt = <3072000>;
12432c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
12532c23138SJohan Hovold		};
12632c23138SJohan Hovold	};
12732c23138SJohan Hovold
12832c23138SJohan Hovold	pmc8280-2-rpmh-regulators {
12932c23138SJohan Hovold		compatible = "qcom,pm8350-rpmh-regulators";
13032c23138SJohan Hovold		qcom,pmic-id = "d";
13132c23138SJohan Hovold
13232c23138SJohan Hovold		vdd-l1-l4-supply = <&vreg_s11b>;
13332c23138SJohan Hovold
13432c23138SJohan Hovold		vreg_l3d: ldo3 {
13532c23138SJohan Hovold			regulator-name = "vreg_l3d";
13632c23138SJohan Hovold			regulator-min-microvolt = <1200000>;
13732c23138SJohan Hovold			regulator-max-microvolt = <1200000>;
13832c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
13932c23138SJohan Hovold		};
14032c23138SJohan Hovold
14132c23138SJohan Hovold		vreg_l4d: ldo4 {
14232c23138SJohan Hovold			regulator-name = "vreg_l4d";
14332c23138SJohan Hovold			regulator-min-microvolt = <1200000>;
14432c23138SJohan Hovold			regulator-max-microvolt = <1200000>;
14532c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
14632c23138SJohan Hovold		};
14732c23138SJohan Hovold
14832c23138SJohan Hovold		vreg_l7d: ldo7 {
14932c23138SJohan Hovold			regulator-name = "vreg_l7d";
15032c23138SJohan Hovold			regulator-min-microvolt = <3072000>;
15132c23138SJohan Hovold			regulator-max-microvolt = <3072000>;
15232c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
15332c23138SJohan Hovold		};
15432c23138SJohan Hovold
15532c23138SJohan Hovold		vreg_l9d: ldo9 {
15632c23138SJohan Hovold			regulator-name = "vreg_l9d";
15732c23138SJohan Hovold			regulator-min-microvolt = <912000>;
15832c23138SJohan Hovold			regulator-max-microvolt = <912000>;
15932c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
16032c23138SJohan Hovold		};
16132c23138SJohan Hovold	};
16232c23138SJohan Hovold};
16332c23138SJohan Hovold
16432c23138SJohan Hovold&pmc8280c_lpg {
16532c23138SJohan Hovold	status = "okay";
16632c23138SJohan Hovold};
16732c23138SJohan Hovold
16832c23138SJohan Hovold&pmk8280_pon_pwrkey {
16932c23138SJohan Hovold	status = "okay";
17032c23138SJohan Hovold};
17132c23138SJohan Hovold
17232c23138SJohan Hovold&qup0 {
17332c23138SJohan Hovold	status = "okay";
17432c23138SJohan Hovold};
17532c23138SJohan Hovold
17632c23138SJohan Hovold&qup0_i2c4 {
17732c23138SJohan Hovold	clock-frequency = <400000>;
17832c23138SJohan Hovold
17932c23138SJohan Hovold	pinctrl-names = "default";
18097cc7ab3SJohan Hovold	pinctrl-0 = <&qup0_i2c4_default>;
18132c23138SJohan Hovold
18232c23138SJohan Hovold	status = "okay";
18332c23138SJohan Hovold
18432c23138SJohan Hovold	/* FIXME: verify */
18532c23138SJohan Hovold	touchscreen@10 {
18632c23138SJohan Hovold		compatible = "hid-over-i2c";
18732c23138SJohan Hovold		reg = <0x10>;
18897cc7ab3SJohan Hovold
18932c23138SJohan Hovold		hid-descr-addr = <0x1>;
19032c23138SJohan Hovold		interrupts-extended = <&tlmm 175 IRQ_TYPE_LEVEL_LOW>;
19132c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
19297cc7ab3SJohan Hovold
19397cc7ab3SJohan Hovold		pinctrl-names = "default";
19497cc7ab3SJohan Hovold		pinctrl-0 = <&ts0_default>;
19532c23138SJohan Hovold	};
19632c23138SJohan Hovold};
19732c23138SJohan Hovold
19832c23138SJohan Hovold&qup1 {
19932c23138SJohan Hovold	status = "okay";
20032c23138SJohan Hovold};
20132c23138SJohan Hovold
20232c23138SJohan Hovold&qup2 {
20332c23138SJohan Hovold	status = "okay";
20432c23138SJohan Hovold};
20532c23138SJohan Hovold
20632c23138SJohan Hovold&qup2_i2c5 {
20732c23138SJohan Hovold	clock-frequency = <400000>;
20832c23138SJohan Hovold
20932c23138SJohan Hovold	pinctrl-names = "default";
21097cc7ab3SJohan Hovold	pinctrl-0 = <&qup2_i2c5_default>;
21132c23138SJohan Hovold
21232c23138SJohan Hovold	status = "okay";
21332c23138SJohan Hovold
214ca1ce720SJohan Hovold	touchpad@15 {
215ca1ce720SJohan Hovold		compatible = "hid-over-i2c";
216ca1ce720SJohan Hovold		reg = <0x15>;
217ca1ce720SJohan Hovold
218ca1ce720SJohan Hovold		hid-descr-addr = <0x1>;
219ca1ce720SJohan Hovold		interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
220ca1ce720SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
221ca1ce720SJohan Hovold
222ca1ce720SJohan Hovold		pinctrl-names = "default";
223ca1ce720SJohan Hovold		pinctrl-0 = <&tpad_default>;
224ca1ce720SJohan Hovold
225ca1ce720SJohan Hovold		wakeup-source;
226ca1ce720SJohan Hovold
227ca1ce720SJohan Hovold		status = "disabled";
228ca1ce720SJohan Hovold	};
229ca1ce720SJohan Hovold
23032c23138SJohan Hovold	touchpad@2c {
23132c23138SJohan Hovold		compatible = "hid-over-i2c";
23232c23138SJohan Hovold		reg = <0x2c>;
23397cc7ab3SJohan Hovold
23432c23138SJohan Hovold		hid-descr-addr = <0x20>;
23532c23138SJohan Hovold		interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
23632c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
23797cc7ab3SJohan Hovold
23897cc7ab3SJohan Hovold		pinctrl-names = "default";
23997cc7ab3SJohan Hovold		pinctrl-0 = <&tpad_default>;
24070934652SJohan Hovold
24170934652SJohan Hovold		wakeup-source;
24232c23138SJohan Hovold	};
24332c23138SJohan Hovold
24432c23138SJohan Hovold	keyboard@68 {
24532c23138SJohan Hovold		compatible = "hid-over-i2c";
24632c23138SJohan Hovold		reg = <0x68>;
24797cc7ab3SJohan Hovold
24832c23138SJohan Hovold		hid-descr-addr = <0x1>;
24932c23138SJohan Hovold		interrupts-extended = <&tlmm 104 IRQ_TYPE_LEVEL_LOW>;
25032c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
25197cc7ab3SJohan Hovold
25297cc7ab3SJohan Hovold		pinctrl-names = "default";
25397cc7ab3SJohan Hovold		pinctrl-0 = <&kybd_default>;
25470934652SJohan Hovold
25570934652SJohan Hovold		wakeup-source;
25632c23138SJohan Hovold	};
25732c23138SJohan Hovold};
25832c23138SJohan Hovold
25932c23138SJohan Hovold&remoteproc_adsp {
26029f894ecSManivannan Sadhasivam	firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcadsp8280.mbn";
26132c23138SJohan Hovold
26232c23138SJohan Hovold	status = "okay";
26332c23138SJohan Hovold};
26432c23138SJohan Hovold
26532c23138SJohan Hovold&remoteproc_nsp0 {
26629f894ecSManivannan Sadhasivam	firmware-name = "qcom/sc8280xp/LENOVO/21BX/qccdsp8280.mbn";
26732c23138SJohan Hovold
26832c23138SJohan Hovold	status = "okay";
26932c23138SJohan Hovold};
27032c23138SJohan Hovold
27132c23138SJohan Hovold&usb_0 {
27232c23138SJohan Hovold	status = "okay";
27332c23138SJohan Hovold};
27432c23138SJohan Hovold
27532c23138SJohan Hovold&usb_0_dwc3 {
27632c23138SJohan Hovold	/* TODO: Define USB-C connector properly */
27732c23138SJohan Hovold	dr_mode = "host";
27832c23138SJohan Hovold};
27932c23138SJohan Hovold
28032c23138SJohan Hovold&usb_0_hsphy {
28132c23138SJohan Hovold	vdda-pll-supply = <&vreg_l9d>;
28232c23138SJohan Hovold	vdda18-supply = <&vreg_l1c>;
28332c23138SJohan Hovold	vdda33-supply = <&vreg_l7d>;
28432c23138SJohan Hovold
28532c23138SJohan Hovold	status = "okay";
28632c23138SJohan Hovold};
28732c23138SJohan Hovold
28832c23138SJohan Hovold&usb_0_qmpphy {
28932c23138SJohan Hovold	vdda-phy-supply = <&vreg_l9d>;
29032c23138SJohan Hovold	vdda-pll-supply = <&vreg_l4d>;
29132c23138SJohan Hovold
29232c23138SJohan Hovold	status = "okay";
29332c23138SJohan Hovold};
29432c23138SJohan Hovold
29532c23138SJohan Hovold&usb_1 {
29632c23138SJohan Hovold	status = "okay";
29732c23138SJohan Hovold};
29832c23138SJohan Hovold
29932c23138SJohan Hovold&usb_1_dwc3 {
30032c23138SJohan Hovold	/* TODO: Define USB-C connector properly */
30132c23138SJohan Hovold	dr_mode = "host";
30232c23138SJohan Hovold};
30332c23138SJohan Hovold
30432c23138SJohan Hovold&usb_1_hsphy {
30532c23138SJohan Hovold	vdda-pll-supply = <&vreg_l4b>;
30632c23138SJohan Hovold	vdda18-supply = <&vreg_l1c>;
30732c23138SJohan Hovold	vdda33-supply = <&vreg_l13c>;
30832c23138SJohan Hovold
30932c23138SJohan Hovold	status = "okay";
31032c23138SJohan Hovold};
31132c23138SJohan Hovold
31232c23138SJohan Hovold&usb_1_qmpphy {
31332c23138SJohan Hovold	vdda-phy-supply = <&vreg_l4b>;
31432c23138SJohan Hovold	vdda-pll-supply = <&vreg_l3b>;
31532c23138SJohan Hovold
31632c23138SJohan Hovold	status = "okay";
31732c23138SJohan Hovold};
31832c23138SJohan Hovold
31932c23138SJohan Hovold&xo_board_clk {
32032c23138SJohan Hovold	clock-frequency = <38400000>;
32132c23138SJohan Hovold};
32232c23138SJohan Hovold
32332c23138SJohan Hovold/* PINCTRL */
32432c23138SJohan Hovold
32532c23138SJohan Hovold&pmc8280_1_gpios {
32632c23138SJohan Hovold	edp_bl_en: edp-bl-en-state {
32732c23138SJohan Hovold		pins = "gpio8";
32832c23138SJohan Hovold		function = "normal";
32932c23138SJohan Hovold	};
33032c23138SJohan Hovold
33132c23138SJohan Hovold	edp_bl_reg_en: edp-bl-reg-en-state {
33232c23138SJohan Hovold		pins = "gpio9";
33332c23138SJohan Hovold		function = "normal";
33432c23138SJohan Hovold	};
33532c23138SJohan Hovold
33632c23138SJohan Hovold	misc_3p3_reg_en: misc-3p3-reg-en-state {
33732c23138SJohan Hovold		pins = "gpio1";
33832c23138SJohan Hovold		function = "normal";
33932c23138SJohan Hovold	};
34032c23138SJohan Hovold};
34132c23138SJohan Hovold
34232c23138SJohan Hovold&pmc8280c_gpios {
34332c23138SJohan Hovold	edp_bl_pwm: edp-bl-pwm-state {
34432c23138SJohan Hovold		pins = "gpio8";
34532c23138SJohan Hovold		function = "func1";
34632c23138SJohan Hovold	};
34732c23138SJohan Hovold};
34832c23138SJohan Hovold
34932c23138SJohan Hovold&tlmm {
35032c23138SJohan Hovold	gpio-reserved-ranges = <70 2>, <74 6>, <83 4>, <125 2>, <128 2>, <154 7>;
35132c23138SJohan Hovold
35232c23138SJohan Hovold	kybd_default: kybd-default-state {
353*91c4431bSKrzysztof Kozlowski		disable-pins {
35432c23138SJohan Hovold			pins = "gpio102";
35532c23138SJohan Hovold			function = "gpio";
35632c23138SJohan Hovold			output-low;
35732c23138SJohan Hovold		};
35832c23138SJohan Hovold
359*91c4431bSKrzysztof Kozlowski		int-n-pins {
36032c23138SJohan Hovold			pins = "gpio104";
36132c23138SJohan Hovold			function = "gpio";
36232c23138SJohan Hovold			bias-disable;
36332c23138SJohan Hovold		};
36432c23138SJohan Hovold
365*91c4431bSKrzysztof Kozlowski		reset-pins {
36632c23138SJohan Hovold			pins = "gpio105";
36732c23138SJohan Hovold			function = "gpio";
36832c23138SJohan Hovold			bias-disable;
36932c23138SJohan Hovold		};
37032c23138SJohan Hovold	};
37132c23138SJohan Hovold
37232c23138SJohan Hovold	qup0_i2c4_default: qup0-i2c4-default-state {
37332c23138SJohan Hovold		pins = "gpio171", "gpio172";
37432c23138SJohan Hovold		function = "qup4";
37532c23138SJohan Hovold		bias-disable;
37632c23138SJohan Hovold		drive-strength = <16>;
37732c23138SJohan Hovold	};
37832c23138SJohan Hovold
37932c23138SJohan Hovold	qup2_i2c5_default: qup2-i2c5-default-state {
38032c23138SJohan Hovold		pins = "gpio81", "gpio82";
38132c23138SJohan Hovold		function = "qup21";
38232c23138SJohan Hovold		bias-disable;
38332c23138SJohan Hovold		drive-strength = <16>;
38432c23138SJohan Hovold	};
38532c23138SJohan Hovold
38632c23138SJohan Hovold	tpad_default: tpad-default-state {
387*91c4431bSKrzysztof Kozlowski		int-n-pins {
38832c23138SJohan Hovold			pins = "gpio182";
38932c23138SJohan Hovold			function = "gpio";
39032c23138SJohan Hovold			bias-disable;
39132c23138SJohan Hovold		};
39232c23138SJohan Hovold	};
39332c23138SJohan Hovold
39432c23138SJohan Hovold	ts0_default: ts0-default-state {
395*91c4431bSKrzysztof Kozlowski		int-n-pins {
39632c23138SJohan Hovold			pins = "gpio175";
39732c23138SJohan Hovold			function = "gpio";
398e11978deSJohan Hovold			bias-disable;
39932c23138SJohan Hovold		};
40032c23138SJohan Hovold
401*91c4431bSKrzysztof Kozlowski		reset-n-pins {
40232c23138SJohan Hovold			pins = "gpio99";
40332c23138SJohan Hovold			function = "gpio";
40432c23138SJohan Hovold			output-high;
40532c23138SJohan Hovold			drive-strength = <16>;
40632c23138SJohan Hovold		};
40732c23138SJohan Hovold	};
40832c23138SJohan Hovold};
409