1308b26cdSLuca Weiss// SPDX-License-Identifier: BSD-3-Clause
2308b26cdSLuca Weiss/*
3308b26cdSLuca Weiss * Copyright (c) 2022, Luca Weiss <luca@z3ntu.xyz>
4308b26cdSLuca Weiss */
5308b26cdSLuca Weiss/dts-v1/;
6308b26cdSLuca Weiss
7*0c4f1091SLuca Weiss#include <dt-bindings/leds/common.h>
8308b26cdSLuca Weiss#include "sdm632.dtsi"
9308b26cdSLuca Weiss#include "pm8953.dtsi"
10*0c4f1091SLuca Weiss#include "pmi632.dtsi"
11308b26cdSLuca Weiss
12308b26cdSLuca Weiss/ {
13308b26cdSLuca Weiss	model = "Fairphone 3";
14308b26cdSLuca Weiss	compatible = "fairphone,fp3", "qcom,sdm632";
15308b26cdSLuca Weiss	chassis-type = "handset";
16308b26cdSLuca Weiss	qcom,msm-id = <349 0>;
17308b26cdSLuca Weiss	qcom,board-id = <8 0x10000>;
18308b26cdSLuca Weiss
19308b26cdSLuca Weiss	aliases {
20308b26cdSLuca Weiss		mmc0 = &sdhc_1;
21308b26cdSLuca Weiss		mmc1 = &sdhc_2;
22308b26cdSLuca Weiss		serial0 = &uart_0;
23308b26cdSLuca Weiss	};
24308b26cdSLuca Weiss
25308b26cdSLuca Weiss	chosen {
26308b26cdSLuca Weiss		stdout-path = "serial0:115200n8";
27308b26cdSLuca Weiss	};
28308b26cdSLuca Weiss
29308b26cdSLuca Weiss	gpio-keys {
30308b26cdSLuca Weiss		compatible = "gpio-keys";
31308b26cdSLuca Weiss
32b08f5cbdSKrzysztof Kozlowski		key-volume-up {
33308b26cdSLuca Weiss			label = "volume_up";
34308b26cdSLuca Weiss			linux,code = <KEY_VOLUMEUP>;
35308b26cdSLuca Weiss			gpios = <&tlmm 85 GPIO_ACTIVE_LOW>;
36308b26cdSLuca Weiss		};
37308b26cdSLuca Weiss	};
38308b26cdSLuca Weiss
39308b26cdSLuca Weiss	vph_pwr: vph-pwr-regulator {
40308b26cdSLuca Weiss		compatible = "regulator-fixed";
41308b26cdSLuca Weiss		regulator-name = "vph_pwr";
42308b26cdSLuca Weiss		regulator-always-on;
43308b26cdSLuca Weiss		regulator-boot-on;
44308b26cdSLuca Weiss	};
45308b26cdSLuca Weiss};
46308b26cdSLuca Weiss
47308b26cdSLuca Weiss&hsusb_phy {
48308b26cdSLuca Weiss	status = "okay";
49308b26cdSLuca Weiss	vdd-supply = <&pm8953_l3>;
50308b26cdSLuca Weiss	vdda-pll-supply = <&pm8953_l7>;
51308b26cdSLuca Weiss	vdda-phy-dpdm-supply = <&pm8953_l13>;
52308b26cdSLuca Weiss};
53308b26cdSLuca Weiss
546d9a666dSJob Noorman&i2c_3 {
556d9a666dSJob Noorman	status = "okay";
566d9a666dSJob Noorman
576d9a666dSJob Noorman	touchscreen@48 {
586d9a666dSJob Noorman		compatible = "himax,hx83112b";
596d9a666dSJob Noorman		reg = <0x48>;
606d9a666dSJob Noorman		interrupt-parent = <&tlmm>;
616d9a666dSJob Noorman		interrupts = <65 IRQ_TYPE_LEVEL_LOW>;
626d9a666dSJob Noorman		touchscreen-size-x = <1080>;
636d9a666dSJob Noorman		touchscreen-size-y = <2160>;
646d9a666dSJob Noorman		reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
656d9a666dSJob Noorman	};
666d9a666dSJob Noorman};
676d9a666dSJob Noorman
6829dcf3c1SLuca Weiss&i2c_5 {
6929dcf3c1SLuca Weiss	status = "okay";
7029dcf3c1SLuca Weiss
7129dcf3c1SLuca Weiss	nfc@28 {
7229dcf3c1SLuca Weiss		compatible = "nxp,nq310", "nxp,nxp-nci-i2c";
7329dcf3c1SLuca Weiss		reg = <0x28>;
7429dcf3c1SLuca Weiss
7529dcf3c1SLuca Weiss		interrupt-parent = <&tlmm>;
7629dcf3c1SLuca Weiss		interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
7729dcf3c1SLuca Weiss
7829dcf3c1SLuca Weiss		enable-gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
7929dcf3c1SLuca Weiss		firmware-gpios = <&tlmm 62 GPIO_ACTIVE_HIGH>;
8029dcf3c1SLuca Weiss	};
8129dcf3c1SLuca Weiss};
8229dcf3c1SLuca Weiss
83308b26cdSLuca Weiss&pm8953_resin {
84308b26cdSLuca Weiss	status = "okay";
85308b26cdSLuca Weiss	linux,code = <KEY_VOLUMEDOWN>;
86308b26cdSLuca Weiss};
87308b26cdSLuca Weiss
88*0c4f1091SLuca Weiss&pmi632_lpg {
89*0c4f1091SLuca Weiss	status = "okay";
90*0c4f1091SLuca Weiss
91*0c4f1091SLuca Weiss	multi-led {
92*0c4f1091SLuca Weiss		color = <LED_COLOR_ID_RGB>;
93*0c4f1091SLuca Weiss		function = LED_FUNCTION_STATUS;
94*0c4f1091SLuca Weiss
95*0c4f1091SLuca Weiss		#address-cells = <1>;
96*0c4f1091SLuca Weiss		#size-cells = <0>;
97*0c4f1091SLuca Weiss
98*0c4f1091SLuca Weiss		led@1 {
99*0c4f1091SLuca Weiss			reg = <1>;
100*0c4f1091SLuca Weiss			color = <LED_COLOR_ID_RED>;
101*0c4f1091SLuca Weiss		};
102*0c4f1091SLuca Weiss
103*0c4f1091SLuca Weiss		led@2 {
104*0c4f1091SLuca Weiss			reg = <2>;
105*0c4f1091SLuca Weiss			color = <LED_COLOR_ID_GREEN>;
106*0c4f1091SLuca Weiss		};
107*0c4f1091SLuca Weiss
108*0c4f1091SLuca Weiss		led@3 {
109*0c4f1091SLuca Weiss			reg = <3>;
110*0c4f1091SLuca Weiss			color = <LED_COLOR_ID_BLUE>;
111*0c4f1091SLuca Weiss		};
112*0c4f1091SLuca Weiss	};
113*0c4f1091SLuca Weiss};
114*0c4f1091SLuca Weiss
115308b26cdSLuca Weiss&sdhc_1 {
116308b26cdSLuca Weiss	status = "okay";
117308b26cdSLuca Weiss	vmmc-supply = <&pm8953_l8>;
118308b26cdSLuca Weiss	vqmmc-supply = <&pm8953_l5>;
119308b26cdSLuca Weiss};
120308b26cdSLuca Weiss
121308b26cdSLuca Weiss&sdhc_2 {
122308b26cdSLuca Weiss	status = "okay";
123308b26cdSLuca Weiss	vmmc-supply = <&pm8953_l11>;
124308b26cdSLuca Weiss	vqmmc-supply = <&pm8953_l12>;
125308b26cdSLuca Weiss
126308b26cdSLuca Weiss	cd-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
127308b26cdSLuca Weiss};
128308b26cdSLuca Weiss
129308b26cdSLuca Weiss&rpm_requests {
130372698e8SKrzysztof Kozlowski	regulators {
131308b26cdSLuca Weiss		compatible = "qcom,rpm-pm8953-regulators";
132308b26cdSLuca Weiss
133308b26cdSLuca Weiss		vdd_l1-supply = <&pm8953_s3>;
134308b26cdSLuca Weiss		vdd_l2_l3-supply = <&pm8953_s3>;
135308b26cdSLuca Weiss		vdd_l4_l5_l6_l7_l16_l19-supply = <&pm8953_s4>;
136308b26cdSLuca Weiss		vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
137308b26cdSLuca Weiss		vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;
138308b26cdSLuca Weiss
139308b26cdSLuca Weiss		pm8953_s3: s3 {
140308b26cdSLuca Weiss			regulator-min-microvolt = <984000>;
141308b26cdSLuca Weiss			regulator-max-microvolt = <1240000>;
142308b26cdSLuca Weiss		};
143308b26cdSLuca Weiss		pm8953_s4: s4 {
144308b26cdSLuca Weiss			regulator-min-microvolt = <1036000>;
145308b26cdSLuca Weiss			regulator-max-microvolt = <2040000>;
146308b26cdSLuca Weiss		};
147308b26cdSLuca Weiss		pm8953_s5: s5 {
148308b26cdSLuca Weiss			regulator-min-microvolt = <1036000>;
149308b26cdSLuca Weiss			regulator-max-microvolt = <2040000>;
150308b26cdSLuca Weiss		};
151308b26cdSLuca Weiss
152308b26cdSLuca Weiss		pm8953_l1: l1 {
153308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
154308b26cdSLuca Weiss			regulator-max-microvolt = <1050000>;
155308b26cdSLuca Weiss		};
156308b26cdSLuca Weiss		pm8953_l2: l2 {
157308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
158308b26cdSLuca Weiss			regulator-max-microvolt = <1175000>;
159308b26cdSLuca Weiss		};
160308b26cdSLuca Weiss		pm8953_l3: l3 {
161308b26cdSLuca Weiss			regulator-min-microvolt = <925000>;
162308b26cdSLuca Weiss			regulator-max-microvolt = <925000>;
163308b26cdSLuca Weiss		};
164308b26cdSLuca Weiss		pm8953_l5: l5 {
165308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
166308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
167308b26cdSLuca Weiss		};
168308b26cdSLuca Weiss		pm8953_l6: l6 {
169308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
170308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
171308b26cdSLuca Weiss		};
172308b26cdSLuca Weiss		pm8953_l7: l7 {
173308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
174308b26cdSLuca Weiss			regulator-max-microvolt = <1900000>;
175308b26cdSLuca Weiss		};
176308b26cdSLuca Weiss		pm8953_l8: l8 {
177308b26cdSLuca Weiss			regulator-min-microvolt = <2900000>;
178308b26cdSLuca Weiss			regulator-max-microvolt = <2900000>;
179308b26cdSLuca Weiss		};
180308b26cdSLuca Weiss		pm8953_l9: l9 {
181308b26cdSLuca Weiss			regulator-min-microvolt = <3000000>;
182308b26cdSLuca Weiss			regulator-max-microvolt = <3300000>;
183308b26cdSLuca Weiss		};
184308b26cdSLuca Weiss		pm8953_l10: l10 {
185308b26cdSLuca Weiss			regulator-min-microvolt = <2800000>;
186308b26cdSLuca Weiss			regulator-max-microvolt = <3000000>;
187308b26cdSLuca Weiss		};
188308b26cdSLuca Weiss		pm8953_l11: l11 {
189308b26cdSLuca Weiss			regulator-min-microvolt = <2950000>;
190308b26cdSLuca Weiss			regulator-max-microvolt = <2950000>;
191308b26cdSLuca Weiss		};
192308b26cdSLuca Weiss		pm8953_l12: l12 {
193308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
194308b26cdSLuca Weiss			regulator-max-microvolt = <2950000>;
195308b26cdSLuca Weiss		};
196308b26cdSLuca Weiss		pm8953_l13: l13 {
197308b26cdSLuca Weiss			regulator-min-microvolt = <3125000>;
198308b26cdSLuca Weiss			regulator-max-microvolt = <3125000>;
199308b26cdSLuca Weiss		};
200308b26cdSLuca Weiss		pm8953_l16: l16 {
201308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
202308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
203308b26cdSLuca Weiss		};
204308b26cdSLuca Weiss		pm8953_l17: l17 {
205308b26cdSLuca Weiss			regulator-min-microvolt = <2850000>;
206308b26cdSLuca Weiss			regulator-max-microvolt = <2850000>;
207308b26cdSLuca Weiss		};
208308b26cdSLuca Weiss		pm8953_l19: l19 {
209308b26cdSLuca Weiss			regulator-min-microvolt = <1200000>;
210308b26cdSLuca Weiss			regulator-max-microvolt = <1350000>;
211308b26cdSLuca Weiss		};
212308b26cdSLuca Weiss		pm8953_l22: l22 {
213308b26cdSLuca Weiss			regulator-min-microvolt = <2800000>;
214308b26cdSLuca Weiss			regulator-max-microvolt = <2800000>;
215308b26cdSLuca Weiss		};
216308b26cdSLuca Weiss		pm8953_l23: l23 {
217308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
218308b26cdSLuca Weiss			regulator-max-microvolt = <1225000>;
219308b26cdSLuca Weiss		};
220308b26cdSLuca Weiss	};
221308b26cdSLuca Weiss};
222308b26cdSLuca Weiss
223308b26cdSLuca Weiss&tlmm {
224308b26cdSLuca Weiss	/*
225308b26cdSLuca Weiss	 * 0-3: unused but protected by TZ
226308b26cdSLuca Weiss	 * 135-138: fingerprint reader (SPI)
227308b26cdSLuca Weiss	 */
228308b26cdSLuca Weiss	gpio-reserved-ranges = <0 4>, <135 4>;
229308b26cdSLuca Weiss};
230308b26cdSLuca Weiss
231308b26cdSLuca Weiss&uart_0 {
232308b26cdSLuca Weiss	status = "okay";
233308b26cdSLuca Weiss};
234308b26cdSLuca Weiss
235308b26cdSLuca Weiss&usb3 {
236308b26cdSLuca Weiss	status = "okay";
237308b26cdSLuca Weiss};
238308b26cdSLuca Weiss
239308b26cdSLuca Weiss&usb3_dwc3 {
240308b26cdSLuca Weiss	dr_mode = "peripheral";
241308b26cdSLuca Weiss};
242