1*308b26cdSLuca Weiss// SPDX-License-Identifier: BSD-3-Clause
2*308b26cdSLuca Weiss/*
3*308b26cdSLuca Weiss * Copyright (c) 2022, Luca Weiss <luca@z3ntu.xyz>
4*308b26cdSLuca Weiss */
5*308b26cdSLuca Weiss/dts-v1/;
6*308b26cdSLuca Weiss
7*308b26cdSLuca Weiss#include "sdm632.dtsi"
8*308b26cdSLuca Weiss#include "pm8953.dtsi"
9*308b26cdSLuca Weiss
10*308b26cdSLuca Weiss/ {
11*308b26cdSLuca Weiss	model = "Fairphone 3";
12*308b26cdSLuca Weiss	compatible = "fairphone,fp3", "qcom,sdm632";
13*308b26cdSLuca Weiss	chassis-type = "handset";
14*308b26cdSLuca Weiss	qcom,msm-id = <349 0>;
15*308b26cdSLuca Weiss	qcom,board-id = <8 0x10000>;
16*308b26cdSLuca Weiss
17*308b26cdSLuca Weiss	aliases {
18*308b26cdSLuca Weiss		mmc0 = &sdhc_1;
19*308b26cdSLuca Weiss		mmc1 = &sdhc_2;
20*308b26cdSLuca Weiss		serial0 = &uart_0;
21*308b26cdSLuca Weiss	};
22*308b26cdSLuca Weiss
23*308b26cdSLuca Weiss	chosen {
24*308b26cdSLuca Weiss		stdout-path = "serial0:115200n8";
25*308b26cdSLuca Weiss	};
26*308b26cdSLuca Weiss
27*308b26cdSLuca Weiss	gpio-keys {
28*308b26cdSLuca Weiss		compatible = "gpio-keys";
29*308b26cdSLuca Weiss
30*308b26cdSLuca Weiss		volume-up {
31*308b26cdSLuca Weiss			label = "volume_up";
32*308b26cdSLuca Weiss			linux,code = <KEY_VOLUMEUP>;
33*308b26cdSLuca Weiss			gpios = <&tlmm 85 GPIO_ACTIVE_LOW>;
34*308b26cdSLuca Weiss		};
35*308b26cdSLuca Weiss	};
36*308b26cdSLuca Weiss
37*308b26cdSLuca Weiss	vph_pwr: vph-pwr-regulator {
38*308b26cdSLuca Weiss		compatible = "regulator-fixed";
39*308b26cdSLuca Weiss		regulator-name = "vph_pwr";
40*308b26cdSLuca Weiss		regulator-always-on;
41*308b26cdSLuca Weiss		regulator-boot-on;
42*308b26cdSLuca Weiss	};
43*308b26cdSLuca Weiss};
44*308b26cdSLuca Weiss
45*308b26cdSLuca Weiss&hsusb_phy {
46*308b26cdSLuca Weiss	status = "okay";
47*308b26cdSLuca Weiss	vdd-supply = <&pm8953_l3>;
48*308b26cdSLuca Weiss	vdda-pll-supply = <&pm8953_l7>;
49*308b26cdSLuca Weiss	vdda-phy-dpdm-supply = <&pm8953_l13>;
50*308b26cdSLuca Weiss};
51*308b26cdSLuca Weiss
52*308b26cdSLuca Weiss&pm8953_resin {
53*308b26cdSLuca Weiss	status = "okay";
54*308b26cdSLuca Weiss	linux,code = <KEY_VOLUMEDOWN>;
55*308b26cdSLuca Weiss};
56*308b26cdSLuca Weiss
57*308b26cdSLuca Weiss&sdhc_1 {
58*308b26cdSLuca Weiss	status = "okay";
59*308b26cdSLuca Weiss	vmmc-supply = <&pm8953_l8>;
60*308b26cdSLuca Weiss	vqmmc-supply = <&pm8953_l5>;
61*308b26cdSLuca Weiss};
62*308b26cdSLuca Weiss
63*308b26cdSLuca Weiss&sdhc_2 {
64*308b26cdSLuca Weiss	status = "okay";
65*308b26cdSLuca Weiss	vmmc-supply = <&pm8953_l11>;
66*308b26cdSLuca Weiss	vqmmc-supply = <&pm8953_l12>;
67*308b26cdSLuca Weiss
68*308b26cdSLuca Weiss	cd-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
69*308b26cdSLuca Weiss};
70*308b26cdSLuca Weiss
71*308b26cdSLuca Weiss&rpm_requests {
72*308b26cdSLuca Weiss	pm8953-regulators {
73*308b26cdSLuca Weiss		compatible = "qcom,rpm-pm8953-regulators";
74*308b26cdSLuca Weiss
75*308b26cdSLuca Weiss		vdd_l1-supply = <&pm8953_s3>;
76*308b26cdSLuca Weiss		vdd_l2_l3-supply = <&pm8953_s3>;
77*308b26cdSLuca Weiss		vdd_l4_l5_l6_l7_l16_l19-supply = <&pm8953_s4>;
78*308b26cdSLuca Weiss		vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
79*308b26cdSLuca Weiss		vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;
80*308b26cdSLuca Weiss
81*308b26cdSLuca Weiss		pm8953_s3: s3 {
82*308b26cdSLuca Weiss			regulator-min-microvolt = <984000>;
83*308b26cdSLuca Weiss			regulator-max-microvolt = <1240000>;
84*308b26cdSLuca Weiss		};
85*308b26cdSLuca Weiss		pm8953_s4: s4 {
86*308b26cdSLuca Weiss			regulator-min-microvolt = <1036000>;
87*308b26cdSLuca Weiss			regulator-max-microvolt = <2040000>;
88*308b26cdSLuca Weiss		};
89*308b26cdSLuca Weiss		pm8953_s5: s5 {
90*308b26cdSLuca Weiss			regulator-min-microvolt = <1036000>;
91*308b26cdSLuca Weiss			regulator-max-microvolt = <2040000>;
92*308b26cdSLuca Weiss		};
93*308b26cdSLuca Weiss
94*308b26cdSLuca Weiss		pm8953_l1: l1 {
95*308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
96*308b26cdSLuca Weiss			regulator-max-microvolt = <1050000>;
97*308b26cdSLuca Weiss		};
98*308b26cdSLuca Weiss		pm8953_l2: l2 {
99*308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
100*308b26cdSLuca Weiss			regulator-max-microvolt = <1175000>;
101*308b26cdSLuca Weiss		};
102*308b26cdSLuca Weiss		pm8953_l3: l3 {
103*308b26cdSLuca Weiss			regulator-min-microvolt = <925000>;
104*308b26cdSLuca Weiss			regulator-max-microvolt = <925000>;
105*308b26cdSLuca Weiss		};
106*308b26cdSLuca Weiss		pm8953_l5: l5 {
107*308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
108*308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
109*308b26cdSLuca Weiss		};
110*308b26cdSLuca Weiss		pm8953_l6: l6 {
111*308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
112*308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
113*308b26cdSLuca Weiss		};
114*308b26cdSLuca Weiss		pm8953_l7: l7 {
115*308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
116*308b26cdSLuca Weiss			regulator-max-microvolt = <1900000>;
117*308b26cdSLuca Weiss		};
118*308b26cdSLuca Weiss		pm8953_l8: l8 {
119*308b26cdSLuca Weiss			regulator-min-microvolt = <2900000>;
120*308b26cdSLuca Weiss			regulator-max-microvolt = <2900000>;
121*308b26cdSLuca Weiss		};
122*308b26cdSLuca Weiss		pm8953_l9: l9 {
123*308b26cdSLuca Weiss			regulator-min-microvolt = <3000000>;
124*308b26cdSLuca Weiss			regulator-max-microvolt = <3300000>;
125*308b26cdSLuca Weiss		};
126*308b26cdSLuca Weiss		pm8953_l10: l10 {
127*308b26cdSLuca Weiss			regulator-min-microvolt = <2800000>;
128*308b26cdSLuca Weiss			regulator-max-microvolt = <3000000>;
129*308b26cdSLuca Weiss		};
130*308b26cdSLuca Weiss		pm8953_l11: l11 {
131*308b26cdSLuca Weiss			regulator-min-microvolt = <2950000>;
132*308b26cdSLuca Weiss			regulator-max-microvolt = <2950000>;
133*308b26cdSLuca Weiss		};
134*308b26cdSLuca Weiss		pm8953_l12: l12 {
135*308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
136*308b26cdSLuca Weiss			regulator-max-microvolt = <2950000>;
137*308b26cdSLuca Weiss		};
138*308b26cdSLuca Weiss		pm8953_l13: l13 {
139*308b26cdSLuca Weiss			regulator-min-microvolt = <3125000>;
140*308b26cdSLuca Weiss			regulator-max-microvolt = <3125000>;
141*308b26cdSLuca Weiss		};
142*308b26cdSLuca Weiss		pm8953_l16: l16 {
143*308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
144*308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
145*308b26cdSLuca Weiss		};
146*308b26cdSLuca Weiss		pm8953_l17: l17 {
147*308b26cdSLuca Weiss			regulator-min-microvolt = <2850000>;
148*308b26cdSLuca Weiss			regulator-max-microvolt = <2850000>;
149*308b26cdSLuca Weiss		};
150*308b26cdSLuca Weiss		pm8953_l19: l19 {
151*308b26cdSLuca Weiss			regulator-min-microvolt = <1200000>;
152*308b26cdSLuca Weiss			regulator-max-microvolt = <1350000>;
153*308b26cdSLuca Weiss		};
154*308b26cdSLuca Weiss		pm8953_l22: l22 {
155*308b26cdSLuca Weiss			regulator-min-microvolt = <2800000>;
156*308b26cdSLuca Weiss			regulator-max-microvolt = <2800000>;
157*308b26cdSLuca Weiss		};
158*308b26cdSLuca Weiss		pm8953_l23: l23 {
159*308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
160*308b26cdSLuca Weiss			regulator-max-microvolt = <1225000>;
161*308b26cdSLuca Weiss		};
162*308b26cdSLuca Weiss	};
163*308b26cdSLuca Weiss};
164*308b26cdSLuca Weiss
165*308b26cdSLuca Weiss&tlmm {
166*308b26cdSLuca Weiss	/*
167*308b26cdSLuca Weiss	 * 0-3: unused but protected by TZ
168*308b26cdSLuca Weiss	 * 135-138: fingerprint reader (SPI)
169*308b26cdSLuca Weiss	 */
170*308b26cdSLuca Weiss	gpio-reserved-ranges = <0 4>, <135 4>;
171*308b26cdSLuca Weiss};
172*308b26cdSLuca Weiss
173*308b26cdSLuca Weiss&uart_0 {
174*308b26cdSLuca Weiss	status = "okay";
175*308b26cdSLuca Weiss};
176*308b26cdSLuca Weiss
177*308b26cdSLuca Weiss&usb3 {
178*308b26cdSLuca Weiss	status = "okay";
179*308b26cdSLuca Weiss};
180*308b26cdSLuca Weiss
181*308b26cdSLuca Weiss&usb3_dwc3 {
182*308b26cdSLuca Weiss	dr_mode = "peripheral";
183*308b26cdSLuca Weiss};
184