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";
19032c23138SJohan Hovold	pinctrl-0 = <&qup0_i2c4_default>, <&ts0_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>;
19832c23138SJohan Hovold		hid-descr-addr = <0x1>;
19932c23138SJohan Hovold		interrupts-extended = <&tlmm 175 IRQ_TYPE_LEVEL_LOW>;
20032c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
20132c23138SJohan Hovold	};
20232c23138SJohan Hovold};
20332c23138SJohan Hovold
20432c23138SJohan Hovold&qup1 {
20532c23138SJohan Hovold	status = "okay";
20632c23138SJohan Hovold};
20732c23138SJohan Hovold
20832c23138SJohan Hovold&qup2 {
20932c23138SJohan Hovold	status = "okay";
21032c23138SJohan Hovold};
21132c23138SJohan Hovold
21232c23138SJohan Hovold&qup2_i2c5 {
21332c23138SJohan Hovold	clock-frequency = <400000>;
21432c23138SJohan Hovold
21532c23138SJohan Hovold	pinctrl-names = "default";
21632c23138SJohan Hovold	pinctrl-0 = <&qup2_i2c5_default>, <&kybd_default>, <&tpad_default>;
21732c23138SJohan Hovold
21832c23138SJohan Hovold	status = "okay";
21932c23138SJohan Hovold
22032c23138SJohan Hovold	touchpad@2c {
22132c23138SJohan Hovold		compatible = "hid-over-i2c";
22232c23138SJohan Hovold		reg = <0x2c>;
22332c23138SJohan Hovold		hid-descr-addr = <0x20>;
22432c23138SJohan Hovold		interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
22532c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
22632c23138SJohan Hovold	};
22732c23138SJohan Hovold
22832c23138SJohan Hovold	keyboard@68 {
22932c23138SJohan Hovold		compatible = "hid-over-i2c";
23032c23138SJohan Hovold		reg = <0x68>;
23132c23138SJohan Hovold		hid-descr-addr = <0x1>;
23232c23138SJohan Hovold		interrupts-extended = <&tlmm 104 IRQ_TYPE_LEVEL_LOW>;
23332c23138SJohan Hovold		vdd-supply = <&vreg_misc_3p3>;
23432c23138SJohan Hovold	};
23532c23138SJohan Hovold};
23632c23138SJohan Hovold
23732c23138SJohan Hovold&remoteproc_adsp {
238*29f894ecSManivannan Sadhasivam	firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcadsp8280.mbn";
23932c23138SJohan Hovold
24032c23138SJohan Hovold	status = "okay";
24132c23138SJohan Hovold};
24232c23138SJohan Hovold
24332c23138SJohan Hovold&remoteproc_nsp0 {
244*29f894ecSManivannan Sadhasivam	firmware-name = "qcom/sc8280xp/LENOVO/21BX/qccdsp8280.mbn";
24532c23138SJohan Hovold
24632c23138SJohan Hovold	status = "okay";
24732c23138SJohan Hovold};
24832c23138SJohan Hovold
24932c23138SJohan Hovold&usb_0 {
25032c23138SJohan Hovold	status = "okay";
25132c23138SJohan Hovold};
25232c23138SJohan Hovold
25332c23138SJohan Hovold&usb_0_dwc3 {
25432c23138SJohan Hovold	/* TODO: Define USB-C connector properly */
25532c23138SJohan Hovold	dr_mode = "host";
25632c23138SJohan Hovold};
25732c23138SJohan Hovold
25832c23138SJohan Hovold&usb_0_hsphy {
25932c23138SJohan Hovold	vdda-pll-supply = <&vreg_l9d>;
26032c23138SJohan Hovold	vdda18-supply = <&vreg_l1c>;
26132c23138SJohan Hovold	vdda33-supply = <&vreg_l7d>;
26232c23138SJohan Hovold
26332c23138SJohan Hovold	status = "okay";
26432c23138SJohan Hovold};
26532c23138SJohan Hovold
26632c23138SJohan Hovold&usb_0_qmpphy {
26732c23138SJohan Hovold	vdda-phy-supply = <&vreg_l9d>;
26832c23138SJohan Hovold	vdda-pll-supply = <&vreg_l4d>;
26932c23138SJohan Hovold
27032c23138SJohan Hovold	status = "okay";
27132c23138SJohan Hovold};
27232c23138SJohan Hovold
27332c23138SJohan Hovold&usb_1 {
27432c23138SJohan Hovold	status = "okay";
27532c23138SJohan Hovold};
27632c23138SJohan Hovold
27732c23138SJohan Hovold&usb_1_dwc3 {
27832c23138SJohan Hovold	/* TODO: Define USB-C connector properly */
27932c23138SJohan Hovold	dr_mode = "host";
28032c23138SJohan Hovold};
28132c23138SJohan Hovold
28232c23138SJohan Hovold&usb_1_hsphy {
28332c23138SJohan Hovold	vdda-pll-supply = <&vreg_l4b>;
28432c23138SJohan Hovold	vdda18-supply = <&vreg_l1c>;
28532c23138SJohan Hovold	vdda33-supply = <&vreg_l13c>;
28632c23138SJohan Hovold
28732c23138SJohan Hovold	status = "okay";
28832c23138SJohan Hovold};
28932c23138SJohan Hovold
29032c23138SJohan Hovold&usb_1_qmpphy {
29132c23138SJohan Hovold	vdda-phy-supply = <&vreg_l4b>;
29232c23138SJohan Hovold	vdda-pll-supply = <&vreg_l3b>;
29332c23138SJohan Hovold
29432c23138SJohan Hovold	status = "okay";
29532c23138SJohan Hovold};
29632c23138SJohan Hovold
29732c23138SJohan Hovold&xo_board_clk {
29832c23138SJohan Hovold	clock-frequency = <38400000>;
29932c23138SJohan Hovold};
30032c23138SJohan Hovold
30132c23138SJohan Hovold/* PINCTRL */
30232c23138SJohan Hovold
30332c23138SJohan Hovold&pmc8280_1_gpios {
30432c23138SJohan Hovold	edp_bl_en: edp-bl-en-state {
30532c23138SJohan Hovold		pins = "gpio8";
30632c23138SJohan Hovold		function = "normal";
30732c23138SJohan Hovold	};
30832c23138SJohan Hovold
30932c23138SJohan Hovold	edp_bl_reg_en: edp-bl-reg-en-state {
31032c23138SJohan Hovold		pins = "gpio9";
31132c23138SJohan Hovold		function = "normal";
31232c23138SJohan Hovold	};
31332c23138SJohan Hovold
31432c23138SJohan Hovold	misc_3p3_reg_en: misc-3p3-reg-en-state {
31532c23138SJohan Hovold		pins = "gpio1";
31632c23138SJohan Hovold		function = "normal";
31732c23138SJohan Hovold	};
31832c23138SJohan Hovold};
31932c23138SJohan Hovold
32032c23138SJohan Hovold&pmc8280c_gpios {
32132c23138SJohan Hovold	edp_bl_pwm: edp-bl-pwm-state {
32232c23138SJohan Hovold		pins = "gpio8";
32332c23138SJohan Hovold		function = "func1";
32432c23138SJohan Hovold	};
32532c23138SJohan Hovold};
32632c23138SJohan Hovold
32732c23138SJohan Hovold&tlmm {
32832c23138SJohan Hovold	gpio-reserved-ranges = <70 2>, <74 6>, <83 4>, <125 2>, <128 2>, <154 7>;
32932c23138SJohan Hovold
33032c23138SJohan Hovold	kybd_default: kybd-default-state {
33132c23138SJohan Hovold		disable {
33232c23138SJohan Hovold			pins = "gpio102";
33332c23138SJohan Hovold			function = "gpio";
33432c23138SJohan Hovold			output-low;
33532c23138SJohan Hovold		};
33632c23138SJohan Hovold
33732c23138SJohan Hovold		int-n {
33832c23138SJohan Hovold			pins = "gpio104";
33932c23138SJohan Hovold			function = "gpio";
34032c23138SJohan Hovold			bias-disable;
34132c23138SJohan Hovold		};
34232c23138SJohan Hovold
34332c23138SJohan Hovold		reset {
34432c23138SJohan Hovold			pins = "gpio105";
34532c23138SJohan Hovold			function = "gpio";
34632c23138SJohan Hovold			bias-disable;
34732c23138SJohan Hovold		};
34832c23138SJohan Hovold	};
34932c23138SJohan Hovold
35032c23138SJohan Hovold	qup0_i2c4_default: qup0-i2c4-default-state {
35132c23138SJohan Hovold		pins = "gpio171", "gpio172";
35232c23138SJohan Hovold		function = "qup4";
35332c23138SJohan Hovold		bias-disable;
35432c23138SJohan Hovold		drive-strength = <16>;
35532c23138SJohan Hovold	};
35632c23138SJohan Hovold
35732c23138SJohan Hovold	qup2_i2c5_default: qup2-i2c5-default-state {
35832c23138SJohan Hovold		pins = "gpio81", "gpio82";
35932c23138SJohan Hovold		function = "qup21";
36032c23138SJohan Hovold		bias-disable;
36132c23138SJohan Hovold		drive-strength = <16>;
36232c23138SJohan Hovold	};
36332c23138SJohan Hovold
36432c23138SJohan Hovold	tpad_default: tpad-default-state {
36532c23138SJohan Hovold		int-n {
36632c23138SJohan Hovold			pins = "gpio182";
36732c23138SJohan Hovold			function = "gpio";
36832c23138SJohan Hovold			bias-disable;
36932c23138SJohan Hovold		};
37032c23138SJohan Hovold	};
37132c23138SJohan Hovold
37232c23138SJohan Hovold	ts0_default: ts0-default-state {
37332c23138SJohan Hovold		int-n {
37432c23138SJohan Hovold			pins = "gpio175";
37532c23138SJohan Hovold			function = "gpio";
37632c23138SJohan Hovold			bias-pull-up;
37732c23138SJohan Hovold		};
37832c23138SJohan Hovold
37932c23138SJohan Hovold		reset-n {
38032c23138SJohan Hovold			pins = "gpio99";
38132c23138SJohan Hovold			function = "gpio";
38232c23138SJohan Hovold			output-high;
38332c23138SJohan Hovold			drive-strength = <16>;
38432c23138SJohan Hovold		};
38532c23138SJohan Hovold	};
38632c23138SJohan Hovold};
387