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
7308b26cdSLuca Weiss#include "sdm632.dtsi"
8308b26cdSLuca Weiss#include "pm8953.dtsi"
9308b26cdSLuca Weiss
10308b26cdSLuca Weiss/ {
11308b26cdSLuca Weiss	model = "Fairphone 3";
12308b26cdSLuca Weiss	compatible = "fairphone,fp3", "qcom,sdm632";
13308b26cdSLuca Weiss	chassis-type = "handset";
14308b26cdSLuca Weiss	qcom,msm-id = <349 0>;
15308b26cdSLuca Weiss	qcom,board-id = <8 0x10000>;
16308b26cdSLuca Weiss
17308b26cdSLuca Weiss	aliases {
18308b26cdSLuca Weiss		mmc0 = &sdhc_1;
19308b26cdSLuca Weiss		mmc1 = &sdhc_2;
20308b26cdSLuca Weiss		serial0 = &uart_0;
21308b26cdSLuca Weiss	};
22308b26cdSLuca Weiss
23308b26cdSLuca Weiss	chosen {
24308b26cdSLuca Weiss		stdout-path = "serial0:115200n8";
25308b26cdSLuca Weiss	};
26308b26cdSLuca Weiss
27308b26cdSLuca Weiss	gpio-keys {
28308b26cdSLuca Weiss		compatible = "gpio-keys";
29308b26cdSLuca Weiss
30b08f5cbdSKrzysztof Kozlowski		key-volume-up {
31308b26cdSLuca Weiss			label = "volume_up";
32308b26cdSLuca Weiss			linux,code = <KEY_VOLUMEUP>;
33308b26cdSLuca Weiss			gpios = <&tlmm 85 GPIO_ACTIVE_LOW>;
34308b26cdSLuca Weiss		};
35308b26cdSLuca Weiss	};
36308b26cdSLuca Weiss
37308b26cdSLuca Weiss	vph_pwr: vph-pwr-regulator {
38308b26cdSLuca Weiss		compatible = "regulator-fixed";
39308b26cdSLuca Weiss		regulator-name = "vph_pwr";
40308b26cdSLuca Weiss		regulator-always-on;
41308b26cdSLuca Weiss		regulator-boot-on;
42308b26cdSLuca Weiss	};
43308b26cdSLuca Weiss};
44308b26cdSLuca Weiss
45308b26cdSLuca Weiss&hsusb_phy {
46308b26cdSLuca Weiss	status = "okay";
47308b26cdSLuca Weiss	vdd-supply = <&pm8953_l3>;
48308b26cdSLuca Weiss	vdda-pll-supply = <&pm8953_l7>;
49308b26cdSLuca Weiss	vdda-phy-dpdm-supply = <&pm8953_l13>;
50308b26cdSLuca Weiss};
51308b26cdSLuca Weiss
526d9a666dSJob Noorman&i2c_3 {
536d9a666dSJob Noorman	status = "okay";
546d9a666dSJob Noorman
556d9a666dSJob Noorman	touchscreen@48 {
566d9a666dSJob Noorman		compatible = "himax,hx83112b";
576d9a666dSJob Noorman		reg = <0x48>;
586d9a666dSJob Noorman		interrupt-parent = <&tlmm>;
596d9a666dSJob Noorman		interrupts = <65 IRQ_TYPE_LEVEL_LOW>;
606d9a666dSJob Noorman		touchscreen-size-x = <1080>;
616d9a666dSJob Noorman		touchscreen-size-y = <2160>;
626d9a666dSJob Noorman		reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
636d9a666dSJob Noorman	};
646d9a666dSJob Noorman};
656d9a666dSJob Noorman
66*29dcf3c1SLuca Weiss&i2c_5 {
67*29dcf3c1SLuca Weiss	status = "okay";
68*29dcf3c1SLuca Weiss
69*29dcf3c1SLuca Weiss	nfc@28 {
70*29dcf3c1SLuca Weiss		compatible = "nxp,nq310", "nxp,nxp-nci-i2c";
71*29dcf3c1SLuca Weiss		reg = <0x28>;
72*29dcf3c1SLuca Weiss
73*29dcf3c1SLuca Weiss		interrupt-parent = <&tlmm>;
74*29dcf3c1SLuca Weiss		interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
75*29dcf3c1SLuca Weiss
76*29dcf3c1SLuca Weiss		enable-gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
77*29dcf3c1SLuca Weiss		firmware-gpios = <&tlmm 62 GPIO_ACTIVE_HIGH>;
78*29dcf3c1SLuca Weiss	};
79*29dcf3c1SLuca Weiss};
80*29dcf3c1SLuca Weiss
81308b26cdSLuca Weiss&pm8953_resin {
82308b26cdSLuca Weiss	status = "okay";
83308b26cdSLuca Weiss	linux,code = <KEY_VOLUMEDOWN>;
84308b26cdSLuca Weiss};
85308b26cdSLuca Weiss
86308b26cdSLuca Weiss&sdhc_1 {
87308b26cdSLuca Weiss	status = "okay";
88308b26cdSLuca Weiss	vmmc-supply = <&pm8953_l8>;
89308b26cdSLuca Weiss	vqmmc-supply = <&pm8953_l5>;
90308b26cdSLuca Weiss};
91308b26cdSLuca Weiss
92308b26cdSLuca Weiss&sdhc_2 {
93308b26cdSLuca Weiss	status = "okay";
94308b26cdSLuca Weiss	vmmc-supply = <&pm8953_l11>;
95308b26cdSLuca Weiss	vqmmc-supply = <&pm8953_l12>;
96308b26cdSLuca Weiss
97308b26cdSLuca Weiss	cd-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
98308b26cdSLuca Weiss};
99308b26cdSLuca Weiss
100308b26cdSLuca Weiss&rpm_requests {
101372698e8SKrzysztof Kozlowski	regulators {
102308b26cdSLuca Weiss		compatible = "qcom,rpm-pm8953-regulators";
103308b26cdSLuca Weiss
104308b26cdSLuca Weiss		vdd_l1-supply = <&pm8953_s3>;
105308b26cdSLuca Weiss		vdd_l2_l3-supply = <&pm8953_s3>;
106308b26cdSLuca Weiss		vdd_l4_l5_l6_l7_l16_l19-supply = <&pm8953_s4>;
107308b26cdSLuca Weiss		vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
108308b26cdSLuca Weiss		vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;
109308b26cdSLuca Weiss
110308b26cdSLuca Weiss		pm8953_s3: s3 {
111308b26cdSLuca Weiss			regulator-min-microvolt = <984000>;
112308b26cdSLuca Weiss			regulator-max-microvolt = <1240000>;
113308b26cdSLuca Weiss		};
114308b26cdSLuca Weiss		pm8953_s4: s4 {
115308b26cdSLuca Weiss			regulator-min-microvolt = <1036000>;
116308b26cdSLuca Weiss			regulator-max-microvolt = <2040000>;
117308b26cdSLuca Weiss		};
118308b26cdSLuca Weiss		pm8953_s5: s5 {
119308b26cdSLuca Weiss			regulator-min-microvolt = <1036000>;
120308b26cdSLuca Weiss			regulator-max-microvolt = <2040000>;
121308b26cdSLuca Weiss		};
122308b26cdSLuca Weiss
123308b26cdSLuca Weiss		pm8953_l1: l1 {
124308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
125308b26cdSLuca Weiss			regulator-max-microvolt = <1050000>;
126308b26cdSLuca Weiss		};
127308b26cdSLuca Weiss		pm8953_l2: l2 {
128308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
129308b26cdSLuca Weiss			regulator-max-microvolt = <1175000>;
130308b26cdSLuca Weiss		};
131308b26cdSLuca Weiss		pm8953_l3: l3 {
132308b26cdSLuca Weiss			regulator-min-microvolt = <925000>;
133308b26cdSLuca Weiss			regulator-max-microvolt = <925000>;
134308b26cdSLuca Weiss		};
135308b26cdSLuca Weiss		pm8953_l5: l5 {
136308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
137308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
138308b26cdSLuca Weiss		};
139308b26cdSLuca Weiss		pm8953_l6: l6 {
140308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
141308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
142308b26cdSLuca Weiss		};
143308b26cdSLuca Weiss		pm8953_l7: l7 {
144308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
145308b26cdSLuca Weiss			regulator-max-microvolt = <1900000>;
146308b26cdSLuca Weiss		};
147308b26cdSLuca Weiss		pm8953_l8: l8 {
148308b26cdSLuca Weiss			regulator-min-microvolt = <2900000>;
149308b26cdSLuca Weiss			regulator-max-microvolt = <2900000>;
150308b26cdSLuca Weiss		};
151308b26cdSLuca Weiss		pm8953_l9: l9 {
152308b26cdSLuca Weiss			regulator-min-microvolt = <3000000>;
153308b26cdSLuca Weiss			regulator-max-microvolt = <3300000>;
154308b26cdSLuca Weiss		};
155308b26cdSLuca Weiss		pm8953_l10: l10 {
156308b26cdSLuca Weiss			regulator-min-microvolt = <2800000>;
157308b26cdSLuca Weiss			regulator-max-microvolt = <3000000>;
158308b26cdSLuca Weiss		};
159308b26cdSLuca Weiss		pm8953_l11: l11 {
160308b26cdSLuca Weiss			regulator-min-microvolt = <2950000>;
161308b26cdSLuca Weiss			regulator-max-microvolt = <2950000>;
162308b26cdSLuca Weiss		};
163308b26cdSLuca Weiss		pm8953_l12: l12 {
164308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
165308b26cdSLuca Weiss			regulator-max-microvolt = <2950000>;
166308b26cdSLuca Weiss		};
167308b26cdSLuca Weiss		pm8953_l13: l13 {
168308b26cdSLuca Weiss			regulator-min-microvolt = <3125000>;
169308b26cdSLuca Weiss			regulator-max-microvolt = <3125000>;
170308b26cdSLuca Weiss		};
171308b26cdSLuca Weiss		pm8953_l16: l16 {
172308b26cdSLuca Weiss			regulator-min-microvolt = <1800000>;
173308b26cdSLuca Weiss			regulator-max-microvolt = <1800000>;
174308b26cdSLuca Weiss		};
175308b26cdSLuca Weiss		pm8953_l17: l17 {
176308b26cdSLuca Weiss			regulator-min-microvolt = <2850000>;
177308b26cdSLuca Weiss			regulator-max-microvolt = <2850000>;
178308b26cdSLuca Weiss		};
179308b26cdSLuca Weiss		pm8953_l19: l19 {
180308b26cdSLuca Weiss			regulator-min-microvolt = <1200000>;
181308b26cdSLuca Weiss			regulator-max-microvolt = <1350000>;
182308b26cdSLuca Weiss		};
183308b26cdSLuca Weiss		pm8953_l22: l22 {
184308b26cdSLuca Weiss			regulator-min-microvolt = <2800000>;
185308b26cdSLuca Weiss			regulator-max-microvolt = <2800000>;
186308b26cdSLuca Weiss		};
187308b26cdSLuca Weiss		pm8953_l23: l23 {
188308b26cdSLuca Weiss			regulator-min-microvolt = <975000>;
189308b26cdSLuca Weiss			regulator-max-microvolt = <1225000>;
190308b26cdSLuca Weiss		};
191308b26cdSLuca Weiss	};
192308b26cdSLuca Weiss};
193308b26cdSLuca Weiss
194308b26cdSLuca Weiss&tlmm {
195308b26cdSLuca Weiss	/*
196308b26cdSLuca Weiss	 * 0-3: unused but protected by TZ
197308b26cdSLuca Weiss	 * 135-138: fingerprint reader (SPI)
198308b26cdSLuca Weiss	 */
199308b26cdSLuca Weiss	gpio-reserved-ranges = <0 4>, <135 4>;
200308b26cdSLuca Weiss};
201308b26cdSLuca Weiss
202308b26cdSLuca Weiss&uart_0 {
203308b26cdSLuca Weiss	status = "okay";
204308b26cdSLuca Weiss};
205308b26cdSLuca Weiss
206308b26cdSLuca Weiss&usb3 {
207308b26cdSLuca Weiss	status = "okay";
208308b26cdSLuca Weiss};
209308b26cdSLuca Weiss
210308b26cdSLuca Weiss&usb3_dwc3 {
211308b26cdSLuca Weiss	dr_mode = "peripheral";
212308b26cdSLuca Weiss};
213