xref: /openbmc/linux/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts (revision 060f35a317ef09101b128f399dce7ed13d019461)
14cbea668SLuca Weiss// SPDX-License-Identifier: BSD-3-Clause
24cbea668SLuca Weiss/*
34cbea668SLuca Weiss * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
44cbea668SLuca Weiss */
54cbea668SLuca Weiss
64cbea668SLuca Weiss/dts-v1/;
74cbea668SLuca Weiss
8582e7c10SLuca Weiss/* PMK8350 (in reality a PMK8003) is configured to use SID6 instead of 0 */
9582e7c10SLuca Weiss#define PMK8350_SID 6
10582e7c10SLuca Weiss
114cbea668SLuca Weiss#include <dt-bindings/gpio/gpio.h>
12582e7c10SLuca Weiss#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
134cbea668SLuca Weiss#include <dt-bindings/input/input.h>
141c170714SLuca Weiss#include <dt-bindings/leds/common.h>
154cbea668SLuca Weiss#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
164cbea668SLuca Weiss#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
174cbea668SLuca Weiss#include "sm7225.dtsi"
187a52967dSLuca Weiss#include "pm6150l.dtsi"
194cbea668SLuca Weiss#include "pm6350.dtsi"
2080f63766SLuca Weiss#include "pm7250b.dtsi"
21582e7c10SLuca Weiss#include "pmk8350.dtsi"
224cbea668SLuca Weiss
234cbea668SLuca Weiss/ {
244cbea668SLuca Weiss	model = "Fairphone 4";
254cbea668SLuca Weiss	compatible = "fairphone,fp4", "qcom,sm7225";
260112b06fSStephan Gerhold	chassis-type = "handset";
274cbea668SLuca Weiss
284cbea668SLuca Weiss	/* required for bootloader to select correct board */
29*f23f69f0SLuca Weiss	qcom,msm-id = <459 0x10000>;
304cbea668SLuca Weiss	qcom,board-id = <8 32>;
314cbea668SLuca Weiss
324cbea668SLuca Weiss	aliases {
339e5c45a5SLuca Weiss		serial0 = &uart9;
34c4ef464bSLuca Weiss		serial1 = &uart1;
354cbea668SLuca Weiss	};
364cbea668SLuca Weiss
374cbea668SLuca Weiss	chosen {
384cbea668SLuca Weiss		#address-cells = <2>;
394cbea668SLuca Weiss		#size-cells = <2>;
404cbea668SLuca Weiss		ranges;
414cbea668SLuca Weiss
424cbea668SLuca Weiss		stdout-path = "serial0:115200n8";
434cbea668SLuca Weiss
444cbea668SLuca Weiss		framebuffer0: framebuffer@a000000 {
454cbea668SLuca Weiss			compatible = "simple-framebuffer";
464cbea668SLuca Weiss			reg = <0 0xa0000000 0 (2340 * 1080 * 4)>;
474cbea668SLuca Weiss			width = <1080>;
484cbea668SLuca Weiss			height = <2340>;
494cbea668SLuca Weiss			stride = <(1080 * 4)>;
504cbea668SLuca Weiss			format = "a8r8g8b8";
514cbea668SLuca Weiss		};
524cbea668SLuca Weiss	};
534cbea668SLuca Weiss
544cbea668SLuca Weiss	gpio-keys {
554cbea668SLuca Weiss		compatible = "gpio-keys";
564cbea668SLuca Weiss		pinctrl-names = "default";
574cbea668SLuca Weiss		pinctrl-0 = <&gpio_keys_pin>;
584cbea668SLuca Weiss
59b08f5cbdSKrzysztof Kozlowski		key-volume-up {
604cbea668SLuca Weiss			label = "volume_up";
614cbea668SLuca Weiss			linux,code = <KEY_VOLUMEUP>;
624cbea668SLuca Weiss			gpios = <&pm6350_gpios 2 GPIO_ACTIVE_LOW>;
634cbea668SLuca Weiss		};
644cbea668SLuca Weiss	};
65bc279dc0SLuca Weiss
66bc279dc0SLuca Weiss	reserved-memory {
67bc279dc0SLuca Weiss		/*
68bc279dc0SLuca Weiss		 * The rmtfs memory region in downstream is 'dynamically allocated'
69bc279dc0SLuca Weiss		 * but given the same address every time. Hard code it as this address is
70bc279dc0SLuca Weiss		 * where the modem firmware expects it to be.
71bc279dc0SLuca Weiss		 */
72bc279dc0SLuca Weiss		memory@efe01000 {
73bc279dc0SLuca Weiss			compatible = "qcom,rmtfs-mem";
74bc279dc0SLuca Weiss			reg = <0 0xefe01000 0 0x600000>;
75bc279dc0SLuca Weiss			no-map;
76bc279dc0SLuca Weiss
77bc279dc0SLuca Weiss			qcom,client-id = <1>;
78bc279dc0SLuca Weiss			qcom,vmid = <15>;
79bc279dc0SLuca Weiss		};
80bc279dc0SLuca Weiss	};
8180f63766SLuca Weiss
8280f63766SLuca Weiss	thermal-zones {
8380f63766SLuca Weiss		chg-skin-thermal {
8480f63766SLuca Weiss			polling-delay-passive = <0>;
8580f63766SLuca Weiss			polling-delay = <0>;
8680f63766SLuca Weiss			thermal-sensors = <&pm7250b_adc_tm 0>;
8780f63766SLuca Weiss
8880f63766SLuca Weiss			trips {
8980f63766SLuca Weiss				active-config0 {
9080f63766SLuca Weiss					temperature = <125000>;
9180f63766SLuca Weiss					hysteresis = <1000>;
9280f63766SLuca Weiss					type = "passive";
9380f63766SLuca Weiss				};
9480f63766SLuca Weiss			};
9580f63766SLuca Weiss		};
9680f63766SLuca Weiss
9780f63766SLuca Weiss		conn-thermal {
9880f63766SLuca Weiss			polling-delay-passive = <0>;
9980f63766SLuca Weiss			polling-delay = <0>;
10080f63766SLuca Weiss			thermal-sensors = <&pm7250b_adc_tm 1>;
10180f63766SLuca Weiss
10280f63766SLuca Weiss			trips {
10380f63766SLuca Weiss				active-config0 {
10480f63766SLuca Weiss					temperature = <125000>;
10580f63766SLuca Weiss					hysteresis = <1000>;
10680f63766SLuca Weiss					type = "passive";
10780f63766SLuca Weiss				};
10880f63766SLuca Weiss			};
10980f63766SLuca Weiss		};
11080f63766SLuca Weiss	};
111bc279dc0SLuca Weiss};
112bc279dc0SLuca Weiss
113bc279dc0SLuca Weiss&adsp {
114bc279dc0SLuca Weiss	firmware-name = "qcom/sm7225/fairphone4/adsp.mdt";
11565aedb0bSLuca Weiss	status = "okay";
1164cbea668SLuca Weiss};
1174cbea668SLuca Weiss
1184cbea668SLuca Weiss&apps_rsc {
11945e9251bSKrzysztof Kozlowski	regulators-0 {
1204cbea668SLuca Weiss		compatible = "qcom,pm6350-rpmh-regulators";
1214cbea668SLuca Weiss		qcom,pmic-id = "a";
1224cbea668SLuca Weiss
1234cbea668SLuca Weiss		vreg_s1a: smps1 {
1244cbea668SLuca Weiss			regulator-min-microvolt = <1000000>;
1254cbea668SLuca Weiss			regulator-max-microvolt = <1200000>;
1264cbea668SLuca Weiss		};
1274cbea668SLuca Weiss
1284cbea668SLuca Weiss		vreg_s2a: smps2 {
1294cbea668SLuca Weiss			regulator-min-microvolt = <1503000>;
1304cbea668SLuca Weiss			regulator-max-microvolt = <2048000>;
1314cbea668SLuca Weiss		};
1324cbea668SLuca Weiss
1334cbea668SLuca Weiss		vreg_l2a: ldo2 {
1344cbea668SLuca Weiss			regulator-min-microvolt = <1503000>;
1354cbea668SLuca Weiss			regulator-max-microvolt = <1980000>;
1364cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1374cbea668SLuca Weiss		};
1384cbea668SLuca Weiss
1394cbea668SLuca Weiss		vreg_l3a: ldo3 {
1404cbea668SLuca Weiss			regulator-min-microvolt = <2700000>;
1414cbea668SLuca Weiss			regulator-max-microvolt = <3300000>;
1424cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1434cbea668SLuca Weiss		};
1444cbea668SLuca Weiss
1454cbea668SLuca Weiss		vreg_l4a: ldo4 {
1464cbea668SLuca Weiss			regulator-min-microvolt = <352000>;
1474cbea668SLuca Weiss			regulator-max-microvolt = <801000>;
1484cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1494cbea668SLuca Weiss		};
1504cbea668SLuca Weiss
1514cbea668SLuca Weiss		vreg_l5a: ldo5 {
1524cbea668SLuca Weiss			regulator-min-microvolt = <1503000>;
1534cbea668SLuca Weiss			regulator-max-microvolt = <1980000>;
1544cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1554cbea668SLuca Weiss		};
1564cbea668SLuca Weiss
1574cbea668SLuca Weiss		vreg_l6a: ldo6 {
1584cbea668SLuca Weiss			regulator-min-microvolt = <1710000>;
1594cbea668SLuca Weiss			regulator-max-microvolt = <3544000>;
1604cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1614cbea668SLuca Weiss		};
1624cbea668SLuca Weiss
1634cbea668SLuca Weiss		vreg_l7a: ldo7 {
1644cbea668SLuca Weiss			regulator-min-microvolt = <1620000>;
1654cbea668SLuca Weiss			regulator-max-microvolt = <1980000>;
1664cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1674cbea668SLuca Weiss		};
1684cbea668SLuca Weiss
1694cbea668SLuca Weiss		vreg_l8a: ldo8 {
1704cbea668SLuca Weiss			regulator-min-microvolt = <2800000>;
1714cbea668SLuca Weiss			regulator-max-microvolt = <2800000>;
1724cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1734cbea668SLuca Weiss		};
1744cbea668SLuca Weiss
1754cbea668SLuca Weiss		vreg_l9a: ldo9 {
1764cbea668SLuca Weiss			regulator-min-microvolt = <1650000>;
1774cbea668SLuca Weiss			regulator-max-microvolt = <3401000>;
1784cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1794cbea668SLuca Weiss		};
1804cbea668SLuca Weiss
1814cbea668SLuca Weiss		vreg_l11a: ldo11 {
1824cbea668SLuca Weiss			regulator-min-microvolt = <1800000>;
1834cbea668SLuca Weiss			regulator-max-microvolt = <2000000>;
1844cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1854cbea668SLuca Weiss		};
1864cbea668SLuca Weiss
1874cbea668SLuca Weiss		vreg_l12a: ldo12 {
1884cbea668SLuca Weiss			regulator-min-microvolt = <1620000>;
1894cbea668SLuca Weiss			regulator-max-microvolt = <1980000>;
1904cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1914cbea668SLuca Weiss		};
1924cbea668SLuca Weiss
1934cbea668SLuca Weiss		vreg_l13a: ldo13 {
1944cbea668SLuca Weiss			regulator-min-microvolt = <570000>;
1954cbea668SLuca Weiss			regulator-max-microvolt = <650000>;
1964cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
1974cbea668SLuca Weiss		};
1984cbea668SLuca Weiss
1994cbea668SLuca Weiss		vreg_l14a: ldo14 {
2004cbea668SLuca Weiss			regulator-min-microvolt = <1700000>;
2014cbea668SLuca Weiss			regulator-max-microvolt = <1900000>;
2024cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2034cbea668SLuca Weiss		};
2044cbea668SLuca Weiss
2054cbea668SLuca Weiss		vreg_l15a: ldo15 {
2064cbea668SLuca Weiss			regulator-min-microvolt = <1100000>;
2074cbea668SLuca Weiss			regulator-max-microvolt = <1305000>;
2084cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2094cbea668SLuca Weiss		};
2104cbea668SLuca Weiss
2114cbea668SLuca Weiss		vreg_l16a: ldo16 {
2124cbea668SLuca Weiss			regulator-min-microvolt = <830000>;
2134cbea668SLuca Weiss			regulator-max-microvolt = <921000>;
2144cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2154cbea668SLuca Weiss		};
2164cbea668SLuca Weiss
2174cbea668SLuca Weiss		vreg_l18a: ldo18 {
2184cbea668SLuca Weiss			regulator-min-microvolt = <788000>;
2194cbea668SLuca Weiss			regulator-max-microvolt = <1049000>;
2204cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2214cbea668SLuca Weiss		};
2224cbea668SLuca Weiss
2234cbea668SLuca Weiss		vreg_l19a: ldo19 {
2244cbea668SLuca Weiss			regulator-min-microvolt = <1080000>;
2254cbea668SLuca Weiss			regulator-max-microvolt = <1305000>;
2264cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2274cbea668SLuca Weiss		};
2284cbea668SLuca Weiss
2294cbea668SLuca Weiss		vreg_l20a: ldo20 {
2304cbea668SLuca Weiss			regulator-min-microvolt = <530000>;
2314cbea668SLuca Weiss			regulator-max-microvolt = <801000>;
2324cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2334cbea668SLuca Weiss		};
2344cbea668SLuca Weiss
2354cbea668SLuca Weiss		vreg_l21a: ldo21 {
2364cbea668SLuca Weiss			regulator-min-microvolt = <751000>;
2374cbea668SLuca Weiss			regulator-max-microvolt = <825000>;
2384cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2394cbea668SLuca Weiss		};
2404cbea668SLuca Weiss
2414cbea668SLuca Weiss		vreg_l22a: ldo22 {
2424cbea668SLuca Weiss			regulator-min-microvolt = <1080000>;
2434cbea668SLuca Weiss			regulator-max-microvolt = <1305000>;
2444cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2454cbea668SLuca Weiss		};
2464cbea668SLuca Weiss	};
2474cbea668SLuca Weiss
24845e9251bSKrzysztof Kozlowski	regulators-1 {
2494cbea668SLuca Weiss		compatible = "qcom,pm6150l-rpmh-regulators";
2504cbea668SLuca Weiss		qcom,pmic-id = "e";
2514cbea668SLuca Weiss
2524cbea668SLuca Weiss		vreg_s8e: smps8 {
2534cbea668SLuca Weiss			regulator-min-microvolt = <313000>;
2544cbea668SLuca Weiss			regulator-max-microvolt = <1395000>;
2554cbea668SLuca Weiss		};
2564cbea668SLuca Weiss
2574cbea668SLuca Weiss		vreg_l1e: ldo1 {
2584cbea668SLuca Weiss			regulator-min-microvolt = <1620000>;
2594cbea668SLuca Weiss			regulator-max-microvolt = <1980000>;
2604cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2614cbea668SLuca Weiss		};
2624cbea668SLuca Weiss
2634cbea668SLuca Weiss		vreg_l2e: ldo2 {
2644cbea668SLuca Weiss			regulator-min-microvolt = <1170000>;
2654cbea668SLuca Weiss			regulator-max-microvolt = <1305000>;
2664cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2674cbea668SLuca Weiss		};
2684cbea668SLuca Weiss
2694cbea668SLuca Weiss		vreg_l3e: ldo3 {
2704cbea668SLuca Weiss			regulator-min-microvolt = <1100000>;
2714cbea668SLuca Weiss			regulator-max-microvolt = <1299000>;
2724cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2734cbea668SLuca Weiss		};
2744cbea668SLuca Weiss
2754cbea668SLuca Weiss		vreg_l4e: ldo4 {
2764cbea668SLuca Weiss			regulator-min-microvolt = <1620000>;
2774cbea668SLuca Weiss			regulator-max-microvolt = <3300000>;
2784cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2794cbea668SLuca Weiss		};
2804cbea668SLuca Weiss
2814cbea668SLuca Weiss		vreg_l5e: ldo5 {
2824cbea668SLuca Weiss			regulator-min-microvolt = <1620000>;
2834cbea668SLuca Weiss			regulator-max-microvolt = <3300000>;
2844cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
2854cbea668SLuca Weiss		};
2864cbea668SLuca Weiss
2874cbea668SLuca Weiss		vreg_l6e: ldo6 {
2884cbea668SLuca Weiss			regulator-min-microvolt = <1700000>;
28994262a18SLuca Weiss			regulator-max-microvolt = <2950000>;
2904cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
29194262a18SLuca Weiss			regulator-allow-set-load;
29225f08f02SJohan Hovold			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
29394262a18SLuca Weiss						   RPMH_REGULATOR_MODE_HPM>;
2944cbea668SLuca Weiss		};
2954cbea668SLuca Weiss
2964cbea668SLuca Weiss		vreg_l7e: ldo7 {
2974cbea668SLuca Weiss			regulator-min-microvolt = <2700000>;
2984cbea668SLuca Weiss			regulator-max-microvolt = <3544000>;
2994cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
3004cbea668SLuca Weiss		};
3014cbea668SLuca Weiss
3024cbea668SLuca Weiss		vreg_l8e: ldo8 {
3034cbea668SLuca Weiss			regulator-min-microvolt = <1620000>;
3044cbea668SLuca Weiss			regulator-max-microvolt = <2000000>;
3054cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
3064cbea668SLuca Weiss		};
3074cbea668SLuca Weiss
3084cbea668SLuca Weiss		vreg_l9e: ldo9 {
3094cbea668SLuca Weiss			regulator-min-microvolt = <2700000>;
31094262a18SLuca Weiss			regulator-max-microvolt = <2960000>;
3114cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
31294262a18SLuca Weiss			regulator-allow-set-load;
31325f08f02SJohan Hovold			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
31494262a18SLuca Weiss						   RPMH_REGULATOR_MODE_HPM>;
3154cbea668SLuca Weiss		};
3164cbea668SLuca Weiss
3174cbea668SLuca Weiss		vreg_l10e: ldo10 {
3184cbea668SLuca Weiss			regulator-min-microvolt = <3000000>;
3194cbea668SLuca Weiss			regulator-max-microvolt = <3401000>;
3204cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
3214cbea668SLuca Weiss		};
3224cbea668SLuca Weiss
3234cbea668SLuca Weiss		vreg_l11e: ldo11 {
3244cbea668SLuca Weiss			regulator-min-microvolt = <3000000>;
3254cbea668SLuca Weiss			regulator-max-microvolt = <3401000>;
3264cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
3274cbea668SLuca Weiss		};
3284cbea668SLuca Weiss
3294cbea668SLuca Weiss		vreg_bob: bob {
3304cbea668SLuca Weiss			regulator-min-microvolt = <1620000>;
3314cbea668SLuca Weiss			regulator-max-microvolt = <5492000>;
3324cbea668SLuca Weiss			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
3334cbea668SLuca Weiss			regulator-allow-bypass;
3344cbea668SLuca Weiss		};
3354cbea668SLuca Weiss	};
3364cbea668SLuca Weiss};
3374cbea668SLuca Weiss
338bd3dc67bSLuca Weiss&cci0 {
339bd3dc67bSLuca Weiss	status = "okay";
340bd3dc67bSLuca Weiss};
341bd3dc67bSLuca Weiss
342bd3dc67bSLuca Weiss&cci0_i2c0 {
343bd3dc67bSLuca Weiss	/* IMX582 @ 0x1a */
344bd3dc67bSLuca Weiss};
345bd3dc67bSLuca Weiss
346bd3dc67bSLuca Weiss&cci0_i2c1 {
347bd3dc67bSLuca Weiss	/* IMX582 @ 0x1a */
348bd3dc67bSLuca Weiss};
349bd3dc67bSLuca Weiss
350bd3dc67bSLuca Weiss&cci1 {
351bd3dc67bSLuca Weiss	status = "okay";
352bd3dc67bSLuca Weiss};
353bd3dc67bSLuca Weiss
354bd3dc67bSLuca Weiss&cci1_i2c0 {
355bd3dc67bSLuca Weiss	/* IMX576 @ 0x10 */
356bd3dc67bSLuca Weiss};
357bd3dc67bSLuca Weiss
358bc279dc0SLuca Weiss&cdsp {
359bc279dc0SLuca Weiss	firmware-name = "qcom/sm7225/fairphone4/cdsp.mdt";
36065aedb0bSLuca Weiss	status = "okay";
361bc279dc0SLuca Weiss};
362bc279dc0SLuca Weiss
363574f2ffdSLuca Weiss&gpi_dma0 {
364574f2ffdSLuca Weiss	status = "okay";
365574f2ffdSLuca Weiss};
366574f2ffdSLuca Weiss
367574f2ffdSLuca Weiss&gpi_dma1 {
368574f2ffdSLuca Weiss	status = "okay";
369574f2ffdSLuca Weiss};
370574f2ffdSLuca Weiss
371574f2ffdSLuca Weiss&i2c0 {
372574f2ffdSLuca Weiss	clock-frequency = <400000>;
373574f2ffdSLuca Weiss	status = "okay";
374574f2ffdSLuca Weiss
375574f2ffdSLuca Weiss	/* ST21NFCD NFC @ 8 */
376574f2ffdSLuca Weiss	/* VL53L3 ToF @ 29 */
377574f2ffdSLuca Weiss	/* AW88264A amplifier @ 34 */
378574f2ffdSLuca Weiss	/* AW88264A amplifier @ 35 */
379574f2ffdSLuca Weiss};
380574f2ffdSLuca Weiss
381574f2ffdSLuca Weiss&i2c8 {
382574f2ffdSLuca Weiss	clock-frequency = <400000>;
383574f2ffdSLuca Weiss	status = "okay";
384574f2ffdSLuca Weiss
385574f2ffdSLuca Weiss	/* HX83112A touchscreen @ 48 */
386574f2ffdSLuca Weiss};
387574f2ffdSLuca Weiss
388413821b7SLuca Weiss&i2c10 {
389413821b7SLuca Weiss	clock-frequency = <400000>;
39065aedb0bSLuca Weiss	status = "okay";
391413821b7SLuca Weiss
392574f2ffdSLuca Weiss	/* PM8008 PMIC @ 8 and 9 */
393574f2ffdSLuca Weiss	/* PX8618 @ 26 */
394574f2ffdSLuca Weiss	/* SMB1395 PMIC @ 34 */
395574f2ffdSLuca Weiss
396413821b7SLuca Weiss	haptics@5a {
397413821b7SLuca Weiss		compatible = "awinic,aw8695";
398413821b7SLuca Weiss		reg = <0x5a>;
399413821b7SLuca Weiss		interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_FALLING>;
400413821b7SLuca Weiss		reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
401413821b7SLuca Weiss
402413821b7SLuca Weiss		awinic,f0-preset = <2350>;
403413821b7SLuca Weiss		awinic,f0-coefficient = <260>;
404413821b7SLuca Weiss		awinic,f0-calibration-percent = <7>;
405413821b7SLuca Weiss		awinic,drive-level = <125>;
406413821b7SLuca Weiss
407413821b7SLuca Weiss		awinic,f0-detection-play-time = <5>;
408413821b7SLuca Weiss		awinic,f0-detection-wait-time = <3>;
409413821b7SLuca Weiss		awinic,f0-detection-repeat = <2>;
410413821b7SLuca Weiss		awinic,f0-detection-trace = <15>;
411413821b7SLuca Weiss
412413821b7SLuca Weiss		awinic,boost-debug = /bits/ 8 <0x30 0xeb 0xd4>;
413413821b7SLuca Weiss		awinic,tset = /bits/ 8 <0x12>;
414413821b7SLuca Weiss		awinic,r-spare = /bits/ 8 <0x68>;
415413821b7SLuca Weiss
416413821b7SLuca Weiss		awinic,bemf-upper-threshold = <4104>;
417413821b7SLuca Weiss		awinic,bemf-lower-threshold = <1016>;
418413821b7SLuca Weiss	};
419413821b7SLuca Weiss};
420413821b7SLuca Weiss
42160bf8740SLuca Weiss&ipa {
42260bf8740SLuca Weiss	qcom,gsi-loader = "self";
42360bf8740SLuca Weiss	memory-region = <&pil_ipa_fw_mem>;
42460bf8740SLuca Weiss	firmware-name = "qcom/sm7225/fairphone4/ipa_fws.mdt";
42560bf8740SLuca Weiss	status = "okay";
42660bf8740SLuca Weiss};
42760bf8740SLuca Weiss
428bc279dc0SLuca Weiss&mpss {
429bc279dc0SLuca Weiss	firmware-name = "qcom/sm7225/fairphone4/modem.mdt";
43065aedb0bSLuca Weiss	status = "okay";
431bc279dc0SLuca Weiss};
432bc279dc0SLuca Weiss
4331c170714SLuca Weiss&pm6150l_flash {
4341c170714SLuca Weiss	status = "okay";
4351c170714SLuca Weiss
4361c170714SLuca Weiss	led-0 {
4371c170714SLuca Weiss		function = LED_FUNCTION_FLASH;
4381c170714SLuca Weiss		color = <LED_COLOR_ID_YELLOW>;
4391c170714SLuca Weiss		led-sources = <1>;
4401c170714SLuca Weiss		led-max-microamp = <180000>;
4411c170714SLuca Weiss		flash-max-microamp = <1000000>;
4421c170714SLuca Weiss		flash-max-timeout-us = <1280000>;
4431c170714SLuca Weiss	};
4441c170714SLuca Weiss
4451c170714SLuca Weiss	led-1 {
4461c170714SLuca Weiss		function = LED_FUNCTION_FLASH;
4471c170714SLuca Weiss		color = <LED_COLOR_ID_WHITE>;
4481c170714SLuca Weiss		led-sources = <2>;
4491c170714SLuca Weiss		led-max-microamp = <180000>;
4501c170714SLuca Weiss		flash-max-microamp = <1000000>;
4511c170714SLuca Weiss		flash-max-timeout-us = <1280000>;
4521c170714SLuca Weiss	};
4531c170714SLuca Weiss};
4541c170714SLuca Weiss
4557a52967dSLuca Weiss&pm6150l_wled {
4567a52967dSLuca Weiss	qcom,switching-freq = <800>;
4577a52967dSLuca Weiss	qcom,current-limit-microamp = <20000>;
4587a52967dSLuca Weiss	qcom,num-strings = <2>;
45965aedb0bSLuca Weiss
46065aedb0bSLuca Weiss	status = "okay";
4617a52967dSLuca Weiss};
4627a52967dSLuca Weiss
4634cbea668SLuca Weiss&pm6350_gpios {
464ff36bed5SKrzysztof Kozlowski	gpio_keys_pin: gpio-keys-state {
4654cbea668SLuca Weiss		pins = "gpio2";
4664cbea668SLuca Weiss		function = PMIC_GPIO_FUNC_NORMAL;
4674cbea668SLuca Weiss		bias-pull-up;
4684cbea668SLuca Weiss		input-enable;
4694cbea668SLuca Weiss		power-source = <0>;
4704cbea668SLuca Weiss	};
4714cbea668SLuca Weiss};
4724cbea668SLuca Weiss
4734cbea668SLuca Weiss&pm6350_resin {
4744cbea668SLuca Weiss	linux,code = <KEY_VOLUMEDOWN>;
47565aedb0bSLuca Weiss	status = "okay";
4764cbea668SLuca Weiss};
4774cbea668SLuca Weiss
47880f63766SLuca Weiss&pm7250b_adc {
47941c18552SMarijn Suijten	channel@4d {
48080f63766SLuca Weiss		reg = <ADC5_AMUX_THM1_100K_PU>;
48180f63766SLuca Weiss		qcom,ratiometric;
48280f63766SLuca Weiss		qcom,hw-settle-time = <200>;
48380f63766SLuca Weiss		qcom,pre-scaling = <1 1>;
48480f63766SLuca Weiss		label = "charger_skin_therm";
48580f63766SLuca Weiss	};
48680f63766SLuca Weiss
48741c18552SMarijn Suijten	channel@4f {
48880f63766SLuca Weiss		reg = <ADC5_AMUX_THM3_100K_PU>;
48980f63766SLuca Weiss		qcom,ratiometric;
49080f63766SLuca Weiss		qcom,hw-settle-time = <200>;
49180f63766SLuca Weiss		qcom,pre-scaling = <1 1>;
49280f63766SLuca Weiss		label = "conn_therm";
49380f63766SLuca Weiss	};
49480f63766SLuca Weiss};
49580f63766SLuca Weiss
49680f63766SLuca Weiss&pm7250b_adc_tm {
49780f63766SLuca Weiss	status = "okay";
49880f63766SLuca Weiss
49980f63766SLuca Weiss	charger-skin-therm@0 {
50080f63766SLuca Weiss		reg = <0>;
50180f63766SLuca Weiss		io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>;
50280f63766SLuca Weiss		qcom,ratiometric;
50380f63766SLuca Weiss		qcom,hw-settle-time-us = <200>;
50480f63766SLuca Weiss	};
50580f63766SLuca Weiss
50680f63766SLuca Weiss	conn-therm@1 {
50780f63766SLuca Weiss		reg = <1>;
50880f63766SLuca Weiss		io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>;
50980f63766SLuca Weiss		qcom,ratiometric;
51080f63766SLuca Weiss		qcom,hw-settle-time-us = <200>;
51180f63766SLuca Weiss	};
51280f63766SLuca Weiss};
51380f63766SLuca Weiss
514582e7c10SLuca Weiss&pmk8350_rtc {
515582e7c10SLuca Weiss	status = "okay";
516582e7c10SLuca Weiss};
517582e7c10SLuca Weiss
518582e7c10SLuca Weiss&pmk8350_vadc {
51941c18552SMarijn Suijten	channel@644 {
520582e7c10SLuca Weiss		reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
521582e7c10SLuca Weiss		qcom,ratiometric;
522582e7c10SLuca Weiss		qcom,hw-settle-time = <200>;
523582e7c10SLuca Weiss		qcom,pre-scaling = <1 1>;
524582e7c10SLuca Weiss		label = "xo_therm";
525582e7c10SLuca Weiss	};
526582e7c10SLuca Weiss};
527582e7c10SLuca Weiss
528c4ef464bSLuca Weiss&qup_uart1_cts {
529c4ef464bSLuca Weiss	/*
530c4ef464bSLuca Weiss	 * Configure a bias-bus-hold on CTS to lower power
531c4ef464bSLuca Weiss	 * usage when Bluetooth is turned off. Bus hold will
532c4ef464bSLuca Weiss	 * maintain a low power state regardless of whether
533c4ef464bSLuca Weiss	 * the Bluetooth module drives the pin in either
534c4ef464bSLuca Weiss	 * direction or leaves the pin fully unpowered.
535c4ef464bSLuca Weiss	 */
536c4ef464bSLuca Weiss	bias-bus-hold;
537c4ef464bSLuca Weiss};
538c4ef464bSLuca Weiss
539c4ef464bSLuca Weiss&qup_uart1_rts {
540c4ef464bSLuca Weiss	/* We'll drive RTS, so no pull */
541c4ef464bSLuca Weiss	drive-strength = <2>;
542c4ef464bSLuca Weiss	bias-disable;
543c4ef464bSLuca Weiss};
544c4ef464bSLuca Weiss
545c4ef464bSLuca Weiss&qup_uart1_rx {
546c4ef464bSLuca Weiss	/*
547c4ef464bSLuca Weiss	 * Configure a pull-up on RX. This is needed to avoid
548c4ef464bSLuca Weiss	 * garbage data when the TX pin of the Bluetooth module is
549c4ef464bSLuca Weiss	 * in tri-state (module powered off or not driving the
550c4ef464bSLuca Weiss	 * signal yet).
551c4ef464bSLuca Weiss	 */
552c4ef464bSLuca Weiss	bias-pull-up;
553c4ef464bSLuca Weiss};
554c4ef464bSLuca Weiss
555c4ef464bSLuca Weiss&qup_uart1_tx {
556c4ef464bSLuca Weiss	/* We'll drive TX, so no pull */
557c4ef464bSLuca Weiss	drive-strength = <2>;
558c4ef464bSLuca Weiss	bias-disable;
559c4ef464bSLuca Weiss};
560c4ef464bSLuca Weiss
561574f2ffdSLuca Weiss&qupv3_id_0 {
562574f2ffdSLuca Weiss	status = "okay";
563574f2ffdSLuca Weiss};
564574f2ffdSLuca Weiss
5654cbea668SLuca Weiss&qupv3_id_1 {
5664cbea668SLuca Weiss	status = "okay";
5674cbea668SLuca Weiss};
5684cbea668SLuca Weiss
56994262a18SLuca Weiss&sdc2_off_state {
57094262a18SLuca Weiss	sd-cd-pins {
57194262a18SLuca Weiss		pins = "gpio94";
57294262a18SLuca Weiss		function = "gpio";
57394262a18SLuca Weiss		drive-strength = <2>;
57494262a18SLuca Weiss		bias-disable;
57594262a18SLuca Weiss	};
57694262a18SLuca Weiss};
57794262a18SLuca Weiss
57894262a18SLuca Weiss&sdc2_on_state {
57994262a18SLuca Weiss	sd-cd-pins {
58094262a18SLuca Weiss		pins = "gpio94";
58194262a18SLuca Weiss		function = "gpio";
58294262a18SLuca Weiss		drive-strength = <2>;
58394262a18SLuca Weiss		bias-pull-up;
58494262a18SLuca Weiss	};
58594262a18SLuca Weiss};
58694262a18SLuca Weiss
58794262a18SLuca Weiss&sdhc_2 {
58894262a18SLuca Weiss	vmmc-supply = <&vreg_l9e>;
58994262a18SLuca Weiss	vqmmc-supply = <&vreg_l6e>;
59094262a18SLuca Weiss
59194262a18SLuca Weiss	cd-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
59294262a18SLuca Weiss
59394262a18SLuca Weiss	status = "okay";
59494262a18SLuca Weiss};
59594262a18SLuca Weiss
5964cbea668SLuca Weiss&tlmm {
5974cbea668SLuca Weiss	gpio-reserved-ranges = <13 4>, <56 2>;
598c4ef464bSLuca Weiss
599c4ef464bSLuca Weiss	qup_uart1_sleep_cts: qup-uart1-sleep-cts-state {
600c4ef464bSLuca Weiss		pins = "gpio61";
601c4ef464bSLuca Weiss		function = "gpio";
602c4ef464bSLuca Weiss		/*
603c4ef464bSLuca Weiss		 * Configure a bias-bus-hold on CTS to lower power
604c4ef464bSLuca Weiss		 * usage when Bluetooth is turned off. Bus hold will
605c4ef464bSLuca Weiss		 * maintain a low power state regardless of whether
606c4ef464bSLuca Weiss		 * the Bluetooth module drives the pin in either
607c4ef464bSLuca Weiss		 * direction or leaves the pin fully unpowered.
608c4ef464bSLuca Weiss		 */
609c4ef464bSLuca Weiss		bias-bus-hold;
610c4ef464bSLuca Weiss	};
611c4ef464bSLuca Weiss
612c4ef464bSLuca Weiss	qup_uart1_sleep_rts: qup-uart1-sleep-rts-state {
613c4ef464bSLuca Weiss		pins = "gpio62";
614c4ef464bSLuca Weiss		function = "gpio";
615c4ef464bSLuca Weiss		/*
616c4ef464bSLuca Weiss		 * Configure pull-down on RTS. As RTS is active low
617c4ef464bSLuca Weiss		 * signal, pull it low to indicate the BT SoC that it
618c4ef464bSLuca Weiss		 * can wakeup the system anytime from suspend state by
619c4ef464bSLuca Weiss		 * pulling RX low (by sending wakeup bytes).
620c4ef464bSLuca Weiss		 */
621c4ef464bSLuca Weiss		bias-pull-down;
622c4ef464bSLuca Weiss	};
623c4ef464bSLuca Weiss
624c4ef464bSLuca Weiss	qup_uart1_sleep_rx: qup-uart1-sleep-rx-state {
625c4ef464bSLuca Weiss		pins = "gpio64";
626c4ef464bSLuca Weiss		function = "gpio";
627c4ef464bSLuca Weiss		/*
628c4ef464bSLuca Weiss		 * Configure a pull-up on RX. This is needed to avoid
629c4ef464bSLuca Weiss		 * garbage data when the TX pin of the Bluetooth module
630c4ef464bSLuca Weiss		 * is floating which may cause spurious wakeups.
631c4ef464bSLuca Weiss		 */
632c4ef464bSLuca Weiss		bias-pull-up;
633c4ef464bSLuca Weiss	};
634c4ef464bSLuca Weiss
635c4ef464bSLuca Weiss	qup_uart1_sleep_tx: qup-uart1-sleep-tx-state {
636c4ef464bSLuca Weiss		pins = "gpio63";
637c4ef464bSLuca Weiss		function = "gpio";
638c4ef464bSLuca Weiss		/*
639c4ef464bSLuca Weiss		 * Configure pull-up on TX when it isn't actively driven
640c4ef464bSLuca Weiss		 * to prevent BT SoC from receiving garbage during sleep.
641c4ef464bSLuca Weiss		 */
642c4ef464bSLuca Weiss		bias-pull-up;
643c4ef464bSLuca Weiss	};
644c4ef464bSLuca Weiss};
645c4ef464bSLuca Weiss
646c4ef464bSLuca Weiss&uart1 {
647c4ef464bSLuca Weiss	/delete-property/ interrupts;
648c4ef464bSLuca Weiss	interrupts-extended = <&intc GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>,
649c4ef464bSLuca Weiss			      <&tlmm 64 IRQ_TYPE_EDGE_FALLING>;
650c4ef464bSLuca Weiss
651c4ef464bSLuca Weiss	pinctrl-names = "default", "sleep";
652c4ef464bSLuca Weiss	pinctrl-1 = <&qup_uart1_sleep_cts>, <&qup_uart1_sleep_rts>, <&qup_uart1_sleep_tx>, <&qup_uart1_sleep_rx>;
653c4ef464bSLuca Weiss
654c4ef464bSLuca Weiss	status = "okay";
655c4ef464bSLuca Weiss
656c4ef464bSLuca Weiss	bluetooth {
657c4ef464bSLuca Weiss		compatible = "qcom,wcn3988-bt";
658c4ef464bSLuca Weiss
659c4ef464bSLuca Weiss		vddio-supply = <&vreg_l11a>;
660c4ef464bSLuca Weiss		vddxo-supply = <&vreg_l7a>;
661c4ef464bSLuca Weiss		vddrf-supply = <&vreg_l2e>;
662c4ef464bSLuca Weiss		vddch0-supply = <&vreg_l10e>;
663c4ef464bSLuca Weiss		swctrl-gpios = <&tlmm 69 GPIO_ACTIVE_HIGH>;
664c4ef464bSLuca Weiss
665c4ef464bSLuca Weiss		max-speed = <3200000>;
666c4ef464bSLuca Weiss	};
6674cbea668SLuca Weiss};
6684cbea668SLuca Weiss
6699e5c45a5SLuca Weiss&uart9 {
6704cbea668SLuca Weiss	status = "okay";
6714cbea668SLuca Weiss};
6724cbea668SLuca Weiss
673606efee9SLuca Weiss&ufs_mem_hc {
674606efee9SLuca Weiss	reset-gpios = <&tlmm 156 GPIO_ACTIVE_LOW>;
675606efee9SLuca Weiss
676606efee9SLuca Weiss	vcc-supply = <&vreg_l7e>;
677606efee9SLuca Weiss	vcc-max-microamp = <800000>;
678606efee9SLuca Weiss	vccq2-supply = <&vreg_l12a>;
679606efee9SLuca Weiss	vccq2-max-microamp = <800000>;
68065aedb0bSLuca Weiss
68165aedb0bSLuca Weiss	status = "okay";
682606efee9SLuca Weiss};
683606efee9SLuca Weiss
684606efee9SLuca Weiss&ufs_mem_phy {
685606efee9SLuca Weiss	vdda-phy-supply = <&vreg_l18a>;
686606efee9SLuca Weiss	vdda-pll-supply = <&vreg_l22a>;
68765aedb0bSLuca Weiss
68865aedb0bSLuca Weiss	status = "okay";
689606efee9SLuca Weiss};
690606efee9SLuca Weiss
6914cbea668SLuca Weiss&usb_1 {
6924cbea668SLuca Weiss	status = "okay";
6934cbea668SLuca Weiss};
6944cbea668SLuca Weiss
6954cbea668SLuca Weiss&usb_1_dwc3 {
6964cbea668SLuca Weiss	maximum-speed = "super-speed";
6974cbea668SLuca Weiss	dr_mode = "peripheral";
6984cbea668SLuca Weiss};
6994cbea668SLuca Weiss
7004cbea668SLuca Weiss&usb_1_hsphy {
7014cbea668SLuca Weiss	vdd-supply = <&vreg_l18a>;
7024cbea668SLuca Weiss	vdda-pll-supply = <&vreg_l2a>;
7034cbea668SLuca Weiss	vdda-phy-dpdm-supply = <&vreg_l3a>;
70465aedb0bSLuca Weiss
70565aedb0bSLuca Weiss	status = "okay";
7064cbea668SLuca Weiss};
7074cbea668SLuca Weiss
7084cbea668SLuca Weiss&usb_1_qmpphy {
7094cbea668SLuca Weiss	vdda-phy-supply = <&vreg_l22a>;
7104cbea668SLuca Weiss	vdda-pll-supply = <&vreg_l16a>;
71165aedb0bSLuca Weiss
71265aedb0bSLuca Weiss	status = "okay";
7134cbea668SLuca Weiss};
71422437c43SLuca Weiss
71522437c43SLuca Weiss&wifi {
71622437c43SLuca Weiss	vdd-0.8-cx-mx-supply = <&vreg_l4a>;
71722437c43SLuca Weiss	vdd-1.8-xo-supply = <&vreg_l7a>;
71822437c43SLuca Weiss	vdd-1.3-rfa-supply = <&vreg_l2e>;
71922437c43SLuca Weiss	vdd-3.3-ch0-supply = <&vreg_l10e>;
72022437c43SLuca Weiss	vdd-3.3-ch1-supply = <&vreg_l11e>;
72165aedb0bSLuca Weiss
72265aedb0bSLuca Weiss	status = "okay";
72322437c43SLuca Weiss};
724