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-allow-set-load;
8332c23138SJohan Hovold			regulator-boot-on;
8432c23138SJohan Hovold		};
8532c23138SJohan Hovold
8632c23138SJohan Hovold		vreg_l4b: ldo4 {
8732c23138SJohan Hovold			regulator-name = "vreg_l4b";
8832c23138SJohan Hovold			regulator-min-microvolt = <912000>;
8932c23138SJohan Hovold			regulator-max-microvolt = <912000>;
9032c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
9132c23138SJohan Hovold			regulator-allow-set-load;
9232c23138SJohan Hovold		};
9332c23138SJohan Hovold
9432c23138SJohan Hovold		vreg_l6b: ldo6 {
9532c23138SJohan Hovold			regulator-name = "vreg_l6b";
9632c23138SJohan Hovold			regulator-min-microvolt = <880000>;
9732c23138SJohan Hovold			regulator-max-microvolt = <880000>;
9832c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
9932c23138SJohan Hovold			regulator-allow-set-load;
10032c23138SJohan Hovold			regulator-boot-on;
10132c23138SJohan Hovold			regulator-always-on;	// FIXME: VDD_A_EDP_0_0P9
10232c23138SJohan Hovold		};
10332c23138SJohan Hovold	};
10432c23138SJohan Hovold
10532c23138SJohan Hovold	pmc8280c-rpmh-regulators {
10632c23138SJohan Hovold		compatible = "qcom,pm8350c-rpmh-regulators";
10732c23138SJohan Hovold		qcom,pmic-id = "c";
10832c23138SJohan Hovold
10932c23138SJohan Hovold		vreg_l1c: ldo1 {
11032c23138SJohan Hovold			regulator-name = "vreg_l1c";
11132c23138SJohan Hovold			regulator-min-microvolt = <1800000>;
11232c23138SJohan Hovold			regulator-max-microvolt = <1800000>;
11332c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
11432c23138SJohan Hovold			regulator-allow-set-load;
11532c23138SJohan Hovold		};
11632c23138SJohan Hovold
11732c23138SJohan Hovold		vreg_l12c: ldo12 {
11832c23138SJohan Hovold			regulator-name = "vreg_l12c";
11932c23138SJohan Hovold			regulator-min-microvolt = <1800000>;
12032c23138SJohan Hovold			regulator-max-microvolt = <1800000>;
12132c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
12232c23138SJohan Hovold			regulator-allow-set-load;
12332c23138SJohan Hovold		};
12432c23138SJohan Hovold
12532c23138SJohan Hovold		vreg_l13c: ldo13 {
12632c23138SJohan Hovold			regulator-name = "vreg_l13c";
12732c23138SJohan Hovold			regulator-min-microvolt = <3072000>;
12832c23138SJohan Hovold			regulator-max-microvolt = <3072000>;
12932c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
13032c23138SJohan Hovold			regulator-allow-set-load;
13132c23138SJohan Hovold		};
13232c23138SJohan Hovold	};
13332c23138SJohan Hovold
13432c23138SJohan Hovold	pmc8280-2-rpmh-regulators {
13532c23138SJohan Hovold		compatible = "qcom,pm8350-rpmh-regulators";
13632c23138SJohan Hovold		qcom,pmic-id = "d";
13732c23138SJohan Hovold
13832c23138SJohan Hovold		vdd-l1-l4-supply = <&vreg_s11b>;
13932c23138SJohan Hovold
14032c23138SJohan Hovold		vreg_l3d: ldo3 {
14132c23138SJohan Hovold			regulator-name = "vreg_l3d";
14232c23138SJohan Hovold			regulator-min-microvolt = <1200000>;
14332c23138SJohan Hovold			regulator-max-microvolt = <1200000>;
14432c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
14532c23138SJohan Hovold			regulator-allow-set-load;
14632c23138SJohan Hovold		};
14732c23138SJohan Hovold
14832c23138SJohan Hovold		vreg_l4d: ldo4 {
14932c23138SJohan Hovold			regulator-name = "vreg_l4d";
15032c23138SJohan Hovold			regulator-min-microvolt = <1200000>;
15132c23138SJohan Hovold			regulator-max-microvolt = <1200000>;
15232c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
15332c23138SJohan Hovold			regulator-allow-set-load;
15432c23138SJohan Hovold		};
15532c23138SJohan Hovold
15632c23138SJohan Hovold		vreg_l7d: ldo7 {
15732c23138SJohan Hovold			regulator-name = "vreg_l7d";
15832c23138SJohan Hovold			regulator-min-microvolt = <3072000>;
15932c23138SJohan Hovold			regulator-max-microvolt = <3072000>;
16032c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
16132c23138SJohan Hovold			regulator-allow-set-load;
16232c23138SJohan Hovold		};
16332c23138SJohan Hovold
16432c23138SJohan Hovold		vreg_l9d: ldo9 {
16532c23138SJohan Hovold			regulator-name = "vreg_l9d";
16632c23138SJohan Hovold			regulator-min-microvolt = <912000>;
16732c23138SJohan Hovold			regulator-max-microvolt = <912000>;
16832c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
16932c23138SJohan Hovold			regulator-allow-set-load;
17032c23138SJohan Hovold		};
17132c23138SJohan Hovold	};
17232c23138SJohan Hovold};
17332c23138SJohan Hovold
17432c23138SJohan Hovold&pmc8280c_lpg {
17532c23138SJohan Hovold	status = "okay";
17632c23138SJohan Hovold};
17732c23138SJohan Hovold
17832c23138SJohan Hovold&pmk8280_pon_pwrkey {
17932c23138SJohan Hovold	status = "okay";
18032c23138SJohan Hovold};
18132c23138SJohan Hovold
18232c23138SJohan Hovold&qup0 {
18332c23138SJohan Hovold	status = "okay";
18432c23138SJohan Hovold};
18532c23138SJohan Hovold
18632c23138SJohan Hovold&qup0_i2c4 {
18732c23138SJohan Hovold	clock-frequency = <400000>;
18832c23138SJohan Hovold
18932c23138SJohan Hovold	pinctrl-names = "default";
19097cc7ab3SJohan Hovold	pinctrl-0 = <&qup0_i2c4_default>;
19132c23138SJohan Hovold
19232c23138SJohan Hovold	status = "okay";
19332c23138SJohan Hovold
19432c23138SJohan Hovold	/* FIXME: verify */
19532c23138SJohan Hovold	touchscreen@10 {
19632c23138SJohan Hovold		compatible = "hid-over-i2c";
19732c23138SJohan Hovold		reg = <0x10>;
19897cc7ab3SJohan Hovold
19932c23138SJohan Hovold		hid-descr-addr = <0x1>;
20032c23138SJohan Hovold		interrupts-extended = <&tlmm 175 IRQ_TYPE_LEVEL_LOW>;
20132c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
20297cc7ab3SJohan Hovold
20397cc7ab3SJohan Hovold		pinctrl-names = "default";
20497cc7ab3SJohan Hovold		pinctrl-0 = <&ts0_default>;
20532c23138SJohan Hovold	};
20632c23138SJohan Hovold};
20732c23138SJohan Hovold
20832c23138SJohan Hovold&qup1 {
20932c23138SJohan Hovold	status = "okay";
21032c23138SJohan Hovold};
21132c23138SJohan Hovold
21232c23138SJohan Hovold&qup2 {
21332c23138SJohan Hovold	status = "okay";
21432c23138SJohan Hovold};
21532c23138SJohan Hovold
21632c23138SJohan Hovold&qup2_i2c5 {
21732c23138SJohan Hovold	clock-frequency = <400000>;
21832c23138SJohan Hovold
21932c23138SJohan Hovold	pinctrl-names = "default";
22097cc7ab3SJohan Hovold	pinctrl-0 = <&qup2_i2c5_default>;
22132c23138SJohan Hovold
22232c23138SJohan Hovold	status = "okay";
22332c23138SJohan Hovold
224*ca1ce720SJohan Hovold	touchpad@15 {
225*ca1ce720SJohan Hovold		compatible = "hid-over-i2c";
226*ca1ce720SJohan Hovold		reg = <0x15>;
227*ca1ce720SJohan Hovold
228*ca1ce720SJohan Hovold		hid-descr-addr = <0x1>;
229*ca1ce720SJohan Hovold		interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
230*ca1ce720SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
231*ca1ce720SJohan Hovold
232*ca1ce720SJohan Hovold		pinctrl-names = "default";
233*ca1ce720SJohan Hovold		pinctrl-0 = <&tpad_default>;
234*ca1ce720SJohan Hovold
235*ca1ce720SJohan Hovold		wakeup-source;
236*ca1ce720SJohan Hovold
237*ca1ce720SJohan Hovold		status = "disabled";
238*ca1ce720SJohan Hovold	};
239*ca1ce720SJohan Hovold
24032c23138SJohan Hovold	touchpad@2c {
24132c23138SJohan Hovold		compatible = "hid-over-i2c";
24232c23138SJohan Hovold		reg = <0x2c>;
24397cc7ab3SJohan Hovold
24432c23138SJohan Hovold		hid-descr-addr = <0x20>;
24532c23138SJohan Hovold		interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
24632c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
24797cc7ab3SJohan Hovold
24897cc7ab3SJohan Hovold		pinctrl-names = "default";
24997cc7ab3SJohan Hovold		pinctrl-0 = <&tpad_default>;
25070934652SJohan Hovold
25170934652SJohan Hovold		wakeup-source;
25232c23138SJohan Hovold	};
25332c23138SJohan Hovold
25432c23138SJohan Hovold	keyboard@68 {
25532c23138SJohan Hovold		compatible = "hid-over-i2c";
25632c23138SJohan Hovold		reg = <0x68>;
25797cc7ab3SJohan Hovold
25832c23138SJohan Hovold		hid-descr-addr = <0x1>;
25932c23138SJohan Hovold		interrupts-extended = <&tlmm 104 IRQ_TYPE_LEVEL_LOW>;
26032c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
26197cc7ab3SJohan Hovold
26297cc7ab3SJohan Hovold		pinctrl-names = "default";
26397cc7ab3SJohan Hovold		pinctrl-0 = <&kybd_default>;
26470934652SJohan Hovold
26570934652SJohan Hovold		wakeup-source;
26632c23138SJohan Hovold	};
26732c23138SJohan Hovold};
26832c23138SJohan Hovold
26932c23138SJohan Hovold&remoteproc_adsp {
27032c23138SJohan Hovold	firmware-name = "qcom/sc8280xp/qcadsp8280.mbn";
27132c23138SJohan Hovold
27232c23138SJohan Hovold	status = "okay";
27332c23138SJohan Hovold};
27432c23138SJohan Hovold
27532c23138SJohan Hovold&remoteproc_nsp0 {
27632c23138SJohan Hovold	firmware-name = "qcom/sc8280xp/qccdsp8280.mbn";
27732c23138SJohan Hovold
27832c23138SJohan Hovold	status = "okay";
27932c23138SJohan Hovold};
28032c23138SJohan Hovold
28132c23138SJohan Hovold&usb_0 {
28232c23138SJohan Hovold	status = "okay";
28332c23138SJohan Hovold};
28432c23138SJohan Hovold
28532c23138SJohan Hovold&usb_0_dwc3 {
28632c23138SJohan Hovold	/* TODO: Define USB-C connector properly */
28732c23138SJohan Hovold	dr_mode = "host";
28832c23138SJohan Hovold};
28932c23138SJohan Hovold
29032c23138SJohan Hovold&usb_0_hsphy {
29132c23138SJohan Hovold	vdda-pll-supply = <&vreg_l9d>;
29232c23138SJohan Hovold	vdda18-supply = <&vreg_l1c>;
29332c23138SJohan Hovold	vdda33-supply = <&vreg_l7d>;
29432c23138SJohan Hovold
29532c23138SJohan Hovold	status = "okay";
29632c23138SJohan Hovold};
29732c23138SJohan Hovold
29832c23138SJohan Hovold&usb_0_qmpphy {
29932c23138SJohan Hovold	vdda-phy-supply = <&vreg_l9d>;
30032c23138SJohan Hovold	vdda-pll-supply = <&vreg_l4d>;
30132c23138SJohan Hovold
30232c23138SJohan Hovold	status = "okay";
30332c23138SJohan Hovold};
30432c23138SJohan Hovold
30532c23138SJohan Hovold&usb_1 {
30632c23138SJohan Hovold	status = "okay";
30732c23138SJohan Hovold};
30832c23138SJohan Hovold
30932c23138SJohan Hovold&usb_1_dwc3 {
31032c23138SJohan Hovold	/* TODO: Define USB-C connector properly */
31132c23138SJohan Hovold	dr_mode = "host";
31232c23138SJohan Hovold};
31332c23138SJohan Hovold
31432c23138SJohan Hovold&usb_1_hsphy {
31532c23138SJohan Hovold	vdda-pll-supply = <&vreg_l4b>;
31632c23138SJohan Hovold	vdda18-supply = <&vreg_l1c>;
31732c23138SJohan Hovold	vdda33-supply = <&vreg_l13c>;
31832c23138SJohan Hovold
31932c23138SJohan Hovold	status = "okay";
32032c23138SJohan Hovold};
32132c23138SJohan Hovold
32232c23138SJohan Hovold&usb_1_qmpphy {
32332c23138SJohan Hovold	vdda-phy-supply = <&vreg_l4b>;
32432c23138SJohan Hovold	vdda-pll-supply = <&vreg_l3b>;
32532c23138SJohan Hovold
32632c23138SJohan Hovold	status = "okay";
32732c23138SJohan Hovold};
32832c23138SJohan Hovold
32932c23138SJohan Hovold&xo_board_clk {
33032c23138SJohan Hovold	clock-frequency = <38400000>;
33132c23138SJohan Hovold};
33232c23138SJohan Hovold
33332c23138SJohan Hovold/* PINCTRL */
33432c23138SJohan Hovold
33532c23138SJohan Hovold&pmc8280_1_gpios {
33632c23138SJohan Hovold	edp_bl_en: edp-bl-en-state {
33732c23138SJohan Hovold		pins = "gpio8";
33832c23138SJohan Hovold		function = "normal";
33932c23138SJohan Hovold	};
34032c23138SJohan Hovold
34132c23138SJohan Hovold	edp_bl_reg_en: edp-bl-reg-en-state {
34232c23138SJohan Hovold		pins = "gpio9";
34332c23138SJohan Hovold		function = "normal";
34432c23138SJohan Hovold	};
34532c23138SJohan Hovold
34632c23138SJohan Hovold	misc_3p3_reg_en: misc-3p3-reg-en-state {
34732c23138SJohan Hovold		pins = "gpio1";
34832c23138SJohan Hovold		function = "normal";
34932c23138SJohan Hovold	};
35032c23138SJohan Hovold};
35132c23138SJohan Hovold
35232c23138SJohan Hovold&pmc8280c_gpios {
35332c23138SJohan Hovold	edp_bl_pwm: edp-bl-pwm-state {
35432c23138SJohan Hovold		pins = "gpio8";
35532c23138SJohan Hovold		function = "func1";
35632c23138SJohan Hovold	};
35732c23138SJohan Hovold};
35832c23138SJohan Hovold
35932c23138SJohan Hovold&tlmm {
36032c23138SJohan Hovold	gpio-reserved-ranges = <70 2>, <74 6>, <83 4>, <125 2>, <128 2>, <154 7>;
36132c23138SJohan Hovold
36232c23138SJohan Hovold	kybd_default: kybd-default-state {
36332c23138SJohan Hovold		disable {
36432c23138SJohan Hovold			pins = "gpio102";
36532c23138SJohan Hovold			function = "gpio";
36632c23138SJohan Hovold			output-low;
36732c23138SJohan Hovold		};
36832c23138SJohan Hovold
36932c23138SJohan Hovold		int-n {
37032c23138SJohan Hovold			pins = "gpio104";
37132c23138SJohan Hovold			function = "gpio";
37232c23138SJohan Hovold			bias-disable;
37332c23138SJohan Hovold		};
37432c23138SJohan Hovold
37532c23138SJohan Hovold		reset {
37632c23138SJohan Hovold			pins = "gpio105";
37732c23138SJohan Hovold			function = "gpio";
37832c23138SJohan Hovold			bias-disable;
37932c23138SJohan Hovold		};
38032c23138SJohan Hovold	};
38132c23138SJohan Hovold
38232c23138SJohan Hovold	qup0_i2c4_default: qup0-i2c4-default-state {
38332c23138SJohan Hovold		pins = "gpio171", "gpio172";
38432c23138SJohan Hovold		function = "qup4";
38532c23138SJohan Hovold		bias-disable;
38632c23138SJohan Hovold		drive-strength = <16>;
38732c23138SJohan Hovold	};
38832c23138SJohan Hovold
38932c23138SJohan Hovold	qup2_i2c5_default: qup2-i2c5-default-state {
39032c23138SJohan Hovold		pins = "gpio81", "gpio82";
39132c23138SJohan Hovold		function = "qup21";
39232c23138SJohan Hovold		bias-disable;
39332c23138SJohan Hovold		drive-strength = <16>;
39432c23138SJohan Hovold	};
39532c23138SJohan Hovold
39632c23138SJohan Hovold	tpad_default: tpad-default-state {
39732c23138SJohan Hovold		int-n {
39832c23138SJohan Hovold			pins = "gpio182";
39932c23138SJohan Hovold			function = "gpio";
40032c23138SJohan Hovold			bias-disable;
40132c23138SJohan Hovold		};
40232c23138SJohan Hovold	};
40332c23138SJohan Hovold
40432c23138SJohan Hovold	ts0_default: ts0-default-state {
40532c23138SJohan Hovold		int-n {
40632c23138SJohan Hovold			pins = "gpio175";
40732c23138SJohan Hovold			function = "gpio";
408e11978deSJohan Hovold			bias-disable;
40932c23138SJohan Hovold		};
41032c23138SJohan Hovold
41132c23138SJohan Hovold		reset-n {
41232c23138SJohan Hovold			pins = "gpio99";
41332c23138SJohan Hovold			function = "gpio";
41432c23138SJohan Hovold			output-high;
41532c23138SJohan Hovold			drive-strength = <16>;
41632c23138SJohan Hovold		};
41732c23138SJohan Hovold	};
41832c23138SJohan Hovold};
419