1*32c23138SJohan Hovold// SPDX-License-Identifier: BSD-3-Clause
2*32c23138SJohan Hovold/*
3*32c23138SJohan Hovold * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4*32c23138SJohan Hovold * Copyright (c) 2022, Linaro Limited
5*32c23138SJohan Hovold */
6*32c23138SJohan Hovold
7*32c23138SJohan Hovold/dts-v1/;
8*32c23138SJohan Hovold
9*32c23138SJohan Hovold#include <dt-bindings/gpio/gpio.h>
10*32c23138SJohan Hovold#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
11*32c23138SJohan Hovold
12*32c23138SJohan Hovold#include "sc8280xp.dtsi"
13*32c23138SJohan Hovold#include "sc8280xp-pmics.dtsi"
14*32c23138SJohan Hovold
15*32c23138SJohan Hovold/ {
16*32c23138SJohan Hovold	model = "Lenovo ThinkPad X13s";
17*32c23138SJohan Hovold	compatible = "lenovo,thinkpad-x13s", "qcom,sc8280xp";
18*32c23138SJohan Hovold
19*32c23138SJohan Hovold	backlight {
20*32c23138SJohan Hovold		compatible = "pwm-backlight";
21*32c23138SJohan Hovold		pwms = <&pmc8280c_lpg 3 1000000>;
22*32c23138SJohan Hovold		enable-gpios = <&pmc8280_1_gpios 8 GPIO_ACTIVE_HIGH>;
23*32c23138SJohan Hovold		power-supply = <&vreg_edp_bl>;
24*32c23138SJohan Hovold
25*32c23138SJohan Hovold		pinctrl-names = "default";
26*32c23138SJohan Hovold		pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>;
27*32c23138SJohan Hovold	};
28*32c23138SJohan Hovold
29*32c23138SJohan Hovold	vreg_edp_bl: regulator-edp-bl {
30*32c23138SJohan Hovold		compatible = "regulator-fixed";
31*32c23138SJohan Hovold
32*32c23138SJohan Hovold		regulator-name = "VBL9";
33*32c23138SJohan Hovold		regulator-min-microvolt = <3600000>;
34*32c23138SJohan Hovold		regulator-max-microvolt = <3600000>;
35*32c23138SJohan Hovold
36*32c23138SJohan Hovold		gpio = <&pmc8280_1_gpios 9 GPIO_ACTIVE_HIGH>;
37*32c23138SJohan Hovold		enable-active-high;
38*32c23138SJohan Hovold
39*32c23138SJohan Hovold		pinctrl-names = "default";
40*32c23138SJohan Hovold		pinctrl-0 = <&edp_bl_reg_en>;
41*32c23138SJohan Hovold
42*32c23138SJohan Hovold		regulator-boot-on;
43*32c23138SJohan Hovold	};
44*32c23138SJohan Hovold
45*32c23138SJohan Hovold	vreg_misc_3p3: regulator-misc-3p3 {
46*32c23138SJohan Hovold		compatible = "regulator-fixed";
47*32c23138SJohan Hovold
48*32c23138SJohan Hovold		regulator-name = "VCC3B";
49*32c23138SJohan Hovold		regulator-min-microvolt = <3300000>;
50*32c23138SJohan Hovold		regulator-max-microvolt = <3300000>;
51*32c23138SJohan Hovold
52*32c23138SJohan Hovold		gpio = <&pmc8280_1_gpios 1 GPIO_ACTIVE_HIGH>;
53*32c23138SJohan Hovold		enable-active-high;
54*32c23138SJohan Hovold
55*32c23138SJohan Hovold		pinctrl-names = "default";
56*32c23138SJohan Hovold		pinctrl-0 = <&misc_3p3_reg_en>;
57*32c23138SJohan Hovold
58*32c23138SJohan Hovold		regulator-boot-on;
59*32c23138SJohan Hovold		regulator-always-on;
60*32c23138SJohan Hovold	};
61*32c23138SJohan Hovold};
62*32c23138SJohan Hovold
63*32c23138SJohan Hovold&apps_rsc {
64*32c23138SJohan Hovold	pmc8280-1-rpmh-regulators {
65*32c23138SJohan Hovold		compatible = "qcom,pm8350-rpmh-regulators";
66*32c23138SJohan Hovold		qcom,pmic-id = "b";
67*32c23138SJohan Hovold
68*32c23138SJohan Hovold		vdd-l3-l5-supply = <&vreg_s11b>;
69*32c23138SJohan Hovold
70*32c23138SJohan Hovold		vreg_s11b: smps11 {
71*32c23138SJohan Hovold			regulator-name = "vreg_s11b";
72*32c23138SJohan Hovold			regulator-min-microvolt = <1272000>;
73*32c23138SJohan Hovold			regulator-max-microvolt = <1272000>;
74*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
75*32c23138SJohan Hovold		};
76*32c23138SJohan Hovold
77*32c23138SJohan Hovold		vreg_l3b: ldo3 {
78*32c23138SJohan Hovold			regulator-name = "vreg_l3b";
79*32c23138SJohan Hovold			regulator-min-microvolt = <1200000>;
80*32c23138SJohan Hovold			regulator-max-microvolt = <1200000>;
81*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
82*32c23138SJohan Hovold			regulator-allow-set-load;
83*32c23138SJohan Hovold			regulator-boot-on;
84*32c23138SJohan Hovold		};
85*32c23138SJohan Hovold
86*32c23138SJohan Hovold		vreg_l4b: ldo4 {
87*32c23138SJohan Hovold			regulator-name = "vreg_l4b";
88*32c23138SJohan Hovold			regulator-min-microvolt = <912000>;
89*32c23138SJohan Hovold			regulator-max-microvolt = <912000>;
90*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
91*32c23138SJohan Hovold			regulator-allow-set-load;
92*32c23138SJohan Hovold		};
93*32c23138SJohan Hovold
94*32c23138SJohan Hovold		vreg_l6b: ldo6 {
95*32c23138SJohan Hovold			regulator-name = "vreg_l6b";
96*32c23138SJohan Hovold			regulator-min-microvolt = <880000>;
97*32c23138SJohan Hovold			regulator-max-microvolt = <880000>;
98*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
99*32c23138SJohan Hovold			regulator-allow-set-load;
100*32c23138SJohan Hovold			regulator-boot-on;
101*32c23138SJohan Hovold			regulator-always-on;	// FIXME: VDD_A_EDP_0_0P9
102*32c23138SJohan Hovold		};
103*32c23138SJohan Hovold	};
104*32c23138SJohan Hovold
105*32c23138SJohan Hovold	pmc8280c-rpmh-regulators {
106*32c23138SJohan Hovold		compatible = "qcom,pm8350c-rpmh-regulators";
107*32c23138SJohan Hovold		qcom,pmic-id = "c";
108*32c23138SJohan Hovold
109*32c23138SJohan Hovold		vreg_l1c: ldo1 {
110*32c23138SJohan Hovold			regulator-name = "vreg_l1c";
111*32c23138SJohan Hovold			regulator-min-microvolt = <1800000>;
112*32c23138SJohan Hovold			regulator-max-microvolt = <1800000>;
113*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
114*32c23138SJohan Hovold			regulator-allow-set-load;
115*32c23138SJohan Hovold		};
116*32c23138SJohan Hovold
117*32c23138SJohan Hovold		vreg_l12c: ldo12 {
118*32c23138SJohan Hovold			regulator-name = "vreg_l12c";
119*32c23138SJohan Hovold			regulator-min-microvolt = <1800000>;
120*32c23138SJohan Hovold			regulator-max-microvolt = <1800000>;
121*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
122*32c23138SJohan Hovold			regulator-allow-set-load;
123*32c23138SJohan Hovold		};
124*32c23138SJohan Hovold
125*32c23138SJohan Hovold		vreg_l13c: ldo13 {
126*32c23138SJohan Hovold			regulator-name = "vreg_l13c";
127*32c23138SJohan Hovold			regulator-min-microvolt = <3072000>;
128*32c23138SJohan Hovold			regulator-max-microvolt = <3072000>;
129*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
130*32c23138SJohan Hovold			regulator-allow-set-load;
131*32c23138SJohan Hovold		};
132*32c23138SJohan Hovold	};
133*32c23138SJohan Hovold
134*32c23138SJohan Hovold	pmc8280-2-rpmh-regulators {
135*32c23138SJohan Hovold		compatible = "qcom,pm8350-rpmh-regulators";
136*32c23138SJohan Hovold		qcom,pmic-id = "d";
137*32c23138SJohan Hovold
138*32c23138SJohan Hovold		vdd-l1-l4-supply = <&vreg_s11b>;
139*32c23138SJohan Hovold
140*32c23138SJohan Hovold		vreg_l3d: ldo3 {
141*32c23138SJohan Hovold			regulator-name = "vreg_l3d";
142*32c23138SJohan Hovold			regulator-min-microvolt = <1200000>;
143*32c23138SJohan Hovold			regulator-max-microvolt = <1200000>;
144*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
145*32c23138SJohan Hovold			regulator-allow-set-load;
146*32c23138SJohan Hovold		};
147*32c23138SJohan Hovold
148*32c23138SJohan Hovold		vreg_l4d: ldo4 {
149*32c23138SJohan Hovold			regulator-name = "vreg_l4d";
150*32c23138SJohan Hovold			regulator-min-microvolt = <1200000>;
151*32c23138SJohan Hovold			regulator-max-microvolt = <1200000>;
152*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
153*32c23138SJohan Hovold			regulator-allow-set-load;
154*32c23138SJohan Hovold		};
155*32c23138SJohan Hovold
156*32c23138SJohan Hovold		vreg_l7d: ldo7 {
157*32c23138SJohan Hovold			regulator-name = "vreg_l7d";
158*32c23138SJohan Hovold			regulator-min-microvolt = <3072000>;
159*32c23138SJohan Hovold			regulator-max-microvolt = <3072000>;
160*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
161*32c23138SJohan Hovold			regulator-allow-set-load;
162*32c23138SJohan Hovold		};
163*32c23138SJohan Hovold
164*32c23138SJohan Hovold		vreg_l9d: ldo9 {
165*32c23138SJohan Hovold			regulator-name = "vreg_l9d";
166*32c23138SJohan Hovold			regulator-min-microvolt = <912000>;
167*32c23138SJohan Hovold			regulator-max-microvolt = <912000>;
168*32c23138SJohan Hovold			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
169*32c23138SJohan Hovold			regulator-allow-set-load;
170*32c23138SJohan Hovold		};
171*32c23138SJohan Hovold	};
172*32c23138SJohan Hovold};
173*32c23138SJohan Hovold
174*32c23138SJohan Hovold&pmc8280c_lpg {
175*32c23138SJohan Hovold	status = "okay";
176*32c23138SJohan Hovold};
177*32c23138SJohan Hovold
178*32c23138SJohan Hovold&pmk8280_pon_pwrkey {
179*32c23138SJohan Hovold	status = "okay";
180*32c23138SJohan Hovold};
181*32c23138SJohan Hovold
182*32c23138SJohan Hovold&qup0 {
183*32c23138SJohan Hovold	status = "okay";
184*32c23138SJohan Hovold};
185*32c23138SJohan Hovold
186*32c23138SJohan Hovold&qup0_i2c4 {
187*32c23138SJohan Hovold	clock-frequency = <400000>;
188*32c23138SJohan Hovold
189*32c23138SJohan Hovold	pinctrl-names = "default";
190*32c23138SJohan Hovold	pinctrl-0 = <&qup0_i2c4_default>, <&ts0_default>;
191*32c23138SJohan Hovold
192*32c23138SJohan Hovold	status = "okay";
193*32c23138SJohan Hovold
194*32c23138SJohan Hovold	/* FIXME: verify */
195*32c23138SJohan Hovold	touchscreen@10 {
196*32c23138SJohan Hovold		compatible = "hid-over-i2c";
197*32c23138SJohan Hovold		reg = <0x10>;
198*32c23138SJohan Hovold		hid-descr-addr = <0x1>;
199*32c23138SJohan Hovold		interrupts-extended = <&tlmm 175 IRQ_TYPE_LEVEL_LOW>;
200*32c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
201*32c23138SJohan Hovold	};
202*32c23138SJohan Hovold};
203*32c23138SJohan Hovold
204*32c23138SJohan Hovold&qup1 {
205*32c23138SJohan Hovold	status = "okay";
206*32c23138SJohan Hovold};
207*32c23138SJohan Hovold
208*32c23138SJohan Hovold&qup2 {
209*32c23138SJohan Hovold	status = "okay";
210*32c23138SJohan Hovold};
211*32c23138SJohan Hovold
212*32c23138SJohan Hovold&qup2_i2c5 {
213*32c23138SJohan Hovold	clock-frequency = <400000>;
214*32c23138SJohan Hovold
215*32c23138SJohan Hovold	pinctrl-names = "default";
216*32c23138SJohan Hovold	pinctrl-0 = <&qup2_i2c5_default>, <&kybd_default>, <&tpad_default>;
217*32c23138SJohan Hovold
218*32c23138SJohan Hovold	status = "okay";
219*32c23138SJohan Hovold
220*32c23138SJohan Hovold	touchpad@2c {
221*32c23138SJohan Hovold		compatible = "hid-over-i2c";
222*32c23138SJohan Hovold		reg = <0x2c>;
223*32c23138SJohan Hovold		hid-descr-addr = <0x20>;
224*32c23138SJohan Hovold		interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
225*32c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
226*32c23138SJohan Hovold	};
227*32c23138SJohan Hovold
228*32c23138SJohan Hovold	keyboard@68 {
229*32c23138SJohan Hovold		compatible = "hid-over-i2c";
230*32c23138SJohan Hovold		reg = <0x68>;
231*32c23138SJohan Hovold		hid-descr-addr = <0x1>;
232*32c23138SJohan Hovold		interrupts-extended = <&tlmm 104 IRQ_TYPE_LEVEL_LOW>;
233*32c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
234*32c23138SJohan Hovold	};
235*32c23138SJohan Hovold};
236*32c23138SJohan Hovold
237*32c23138SJohan Hovold&remoteproc_adsp {
238*32c23138SJohan Hovold	firmware-name = "qcom/sc8280xp/qcadsp8280.mbn";
239*32c23138SJohan Hovold
240*32c23138SJohan Hovold	status = "okay";
241*32c23138SJohan Hovold};
242*32c23138SJohan Hovold
243*32c23138SJohan Hovold&remoteproc_nsp0 {
244*32c23138SJohan Hovold	firmware-name = "qcom/sc8280xp/qccdsp8280.mbn";
245*32c23138SJohan Hovold
246*32c23138SJohan Hovold	status = "okay";
247*32c23138SJohan Hovold};
248*32c23138SJohan Hovold
249*32c23138SJohan Hovold&usb_0 {
250*32c23138SJohan Hovold	status = "okay";
251*32c23138SJohan Hovold};
252*32c23138SJohan Hovold
253*32c23138SJohan Hovold&usb_0_dwc3 {
254*32c23138SJohan Hovold	/* TODO: Define USB-C connector properly */
255*32c23138SJohan Hovold	dr_mode = "host";
256*32c23138SJohan Hovold};
257*32c23138SJohan Hovold
258*32c23138SJohan Hovold&usb_0_hsphy {
259*32c23138SJohan Hovold	vdda-pll-supply = <&vreg_l9d>;
260*32c23138SJohan Hovold	vdda18-supply = <&vreg_l1c>;
261*32c23138SJohan Hovold	vdda33-supply = <&vreg_l7d>;
262*32c23138SJohan Hovold
263*32c23138SJohan Hovold	status = "okay";
264*32c23138SJohan Hovold};
265*32c23138SJohan Hovold
266*32c23138SJohan Hovold&usb_0_qmpphy {
267*32c23138SJohan Hovold	vdda-phy-supply = <&vreg_l9d>;
268*32c23138SJohan Hovold	vdda-pll-supply = <&vreg_l4d>;
269*32c23138SJohan Hovold
270*32c23138SJohan Hovold	status = "okay";
271*32c23138SJohan Hovold};
272*32c23138SJohan Hovold
273*32c23138SJohan Hovold&usb_1 {
274*32c23138SJohan Hovold	status = "okay";
275*32c23138SJohan Hovold};
276*32c23138SJohan Hovold
277*32c23138SJohan Hovold&usb_1_dwc3 {
278*32c23138SJohan Hovold	/* TODO: Define USB-C connector properly */
279*32c23138SJohan Hovold	dr_mode = "host";
280*32c23138SJohan Hovold};
281*32c23138SJohan Hovold
282*32c23138SJohan Hovold&usb_1_hsphy {
283*32c23138SJohan Hovold	vdda-pll-supply = <&vreg_l4b>;
284*32c23138SJohan Hovold	vdda18-supply = <&vreg_l1c>;
285*32c23138SJohan Hovold	vdda33-supply = <&vreg_l13c>;
286*32c23138SJohan Hovold
287*32c23138SJohan Hovold	status = "okay";
288*32c23138SJohan Hovold};
289*32c23138SJohan Hovold
290*32c23138SJohan Hovold&usb_1_qmpphy {
291*32c23138SJohan Hovold	vdda-phy-supply = <&vreg_l4b>;
292*32c23138SJohan Hovold	vdda-pll-supply = <&vreg_l3b>;
293*32c23138SJohan Hovold
294*32c23138SJohan Hovold	status = "okay";
295*32c23138SJohan Hovold};
296*32c23138SJohan Hovold
297*32c23138SJohan Hovold&xo_board_clk {
298*32c23138SJohan Hovold	clock-frequency = <38400000>;
299*32c23138SJohan Hovold};
300*32c23138SJohan Hovold
301*32c23138SJohan Hovold/* PINCTRL */
302*32c23138SJohan Hovold
303*32c23138SJohan Hovold&pmc8280_1_gpios {
304*32c23138SJohan Hovold	edp_bl_en: edp-bl-en-state {
305*32c23138SJohan Hovold		pins = "gpio8";
306*32c23138SJohan Hovold		function = "normal";
307*32c23138SJohan Hovold	};
308*32c23138SJohan Hovold
309*32c23138SJohan Hovold	edp_bl_reg_en: edp-bl-reg-en-state {
310*32c23138SJohan Hovold		pins = "gpio9";
311*32c23138SJohan Hovold		function = "normal";
312*32c23138SJohan Hovold	};
313*32c23138SJohan Hovold
314*32c23138SJohan Hovold	misc_3p3_reg_en: misc-3p3-reg-en-state {
315*32c23138SJohan Hovold		pins = "gpio1";
316*32c23138SJohan Hovold		function = "normal";
317*32c23138SJohan Hovold	};
318*32c23138SJohan Hovold};
319*32c23138SJohan Hovold
320*32c23138SJohan Hovold&pmc8280c_gpios {
321*32c23138SJohan Hovold	edp_bl_pwm: edp-bl-pwm-state {
322*32c23138SJohan Hovold		pins = "gpio8";
323*32c23138SJohan Hovold		function = "func1";
324*32c23138SJohan Hovold	};
325*32c23138SJohan Hovold};
326*32c23138SJohan Hovold
327*32c23138SJohan Hovold&tlmm {
328*32c23138SJohan Hovold	gpio-reserved-ranges = <70 2>, <74 6>, <83 4>, <125 2>, <128 2>, <154 7>;
329*32c23138SJohan Hovold
330*32c23138SJohan Hovold	kybd_default: kybd-default-state {
331*32c23138SJohan Hovold		disable {
332*32c23138SJohan Hovold			pins = "gpio102";
333*32c23138SJohan Hovold			function = "gpio";
334*32c23138SJohan Hovold			output-low;
335*32c23138SJohan Hovold		};
336*32c23138SJohan Hovold
337*32c23138SJohan Hovold		int-n {
338*32c23138SJohan Hovold			pins = "gpio104";
339*32c23138SJohan Hovold			function = "gpio";
340*32c23138SJohan Hovold			bias-disable;
341*32c23138SJohan Hovold		};
342*32c23138SJohan Hovold
343*32c23138SJohan Hovold		reset {
344*32c23138SJohan Hovold			pins = "gpio105";
345*32c23138SJohan Hovold			function = "gpio";
346*32c23138SJohan Hovold			bias-disable;
347*32c23138SJohan Hovold		};
348*32c23138SJohan Hovold	};
349*32c23138SJohan Hovold
350*32c23138SJohan Hovold	qup0_i2c4_default: qup0-i2c4-default-state {
351*32c23138SJohan Hovold		pins = "gpio171", "gpio172";
352*32c23138SJohan Hovold		function = "qup4";
353*32c23138SJohan Hovold		bias-disable;
354*32c23138SJohan Hovold		drive-strength = <16>;
355*32c23138SJohan Hovold	};
356*32c23138SJohan Hovold
357*32c23138SJohan Hovold	qup2_i2c5_default: qup2-i2c5-default-state {
358*32c23138SJohan Hovold		pins = "gpio81", "gpio82";
359*32c23138SJohan Hovold		function = "qup21";
360*32c23138SJohan Hovold		bias-disable;
361*32c23138SJohan Hovold		drive-strength = <16>;
362*32c23138SJohan Hovold	};
363*32c23138SJohan Hovold
364*32c23138SJohan Hovold	tpad_default: tpad-default-state {
365*32c23138SJohan Hovold		int-n {
366*32c23138SJohan Hovold			pins = "gpio182";
367*32c23138SJohan Hovold			function = "gpio";
368*32c23138SJohan Hovold			bias-disable;
369*32c23138SJohan Hovold		};
370*32c23138SJohan Hovold	};
371*32c23138SJohan Hovold
372*32c23138SJohan Hovold	ts0_default: ts0-default-state {
373*32c23138SJohan Hovold		int-n {
374*32c23138SJohan Hovold			pins = "gpio175";
375*32c23138SJohan Hovold			function = "gpio";
376*32c23138SJohan Hovold			bias-pull-up;
377*32c23138SJohan Hovold		};
378*32c23138SJohan Hovold
379*32c23138SJohan Hovold		reset-n {
380*32c23138SJohan Hovold			pins = "gpio99";
381*32c23138SJohan Hovold			function = "gpio";
382*32c23138SJohan Hovold			output-high;
383*32c23138SJohan Hovold			drive-strength = <16>;
384*32c23138SJohan Hovold		};
385*32c23138SJohan Hovold	};
386*32c23138SJohan Hovold};
387