162306a36Sopenharmony_ci// SPDX-License-Identifier: BSD-3-Clause
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci/dts-v1/;
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci/* PMK8350 (in reality a PMK8003) is configured to use SID6 instead of 0 */
962306a36Sopenharmony_ci#define PMK8350_SID 6
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
1262306a36Sopenharmony_ci#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
1362306a36Sopenharmony_ci#include <dt-bindings/input/input.h>
1462306a36Sopenharmony_ci#include <dt-bindings/leds/common.h>
1562306a36Sopenharmony_ci#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
1662306a36Sopenharmony_ci#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
1762306a36Sopenharmony_ci#include "sm7225.dtsi"
1862306a36Sopenharmony_ci#include "pm6150l.dtsi"
1962306a36Sopenharmony_ci#include "pm6350.dtsi"
2062306a36Sopenharmony_ci#include "pm7250b.dtsi"
2162306a36Sopenharmony_ci#include "pmk8350.dtsi"
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci/ {
2462306a36Sopenharmony_ci	model = "Fairphone 4";
2562306a36Sopenharmony_ci	compatible = "fairphone,fp4", "qcom,sm7225";
2662306a36Sopenharmony_ci	chassis-type = "handset";
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	/* required for bootloader to select correct board */
2962306a36Sopenharmony_ci	qcom,msm-id = <434 0x10000>, <459 0x10000>;
3062306a36Sopenharmony_ci	qcom,board-id = <8 32>;
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	aliases {
3362306a36Sopenharmony_ci		serial0 = &uart9;
3462306a36Sopenharmony_ci		serial1 = &uart1;
3562306a36Sopenharmony_ci	};
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci	chosen {
3862306a36Sopenharmony_ci		#address-cells = <2>;
3962306a36Sopenharmony_ci		#size-cells = <2>;
4062306a36Sopenharmony_ci		ranges;
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci		stdout-path = "serial0:115200n8";
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci		framebuffer0: framebuffer@a000000 {
4562306a36Sopenharmony_ci			compatible = "simple-framebuffer";
4662306a36Sopenharmony_ci			reg = <0 0xa0000000 0 (2340 * 1080 * 4)>;
4762306a36Sopenharmony_ci			width = <1080>;
4862306a36Sopenharmony_ci			height = <2340>;
4962306a36Sopenharmony_ci			stride = <(1080 * 4)>;
5062306a36Sopenharmony_ci			format = "a8r8g8b8";
5162306a36Sopenharmony_ci		};
5262306a36Sopenharmony_ci	};
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	gpio-keys {
5562306a36Sopenharmony_ci		compatible = "gpio-keys";
5662306a36Sopenharmony_ci		pinctrl-names = "default";
5762306a36Sopenharmony_ci		pinctrl-0 = <&gpio_keys_pin>;
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci		key-volume-up {
6062306a36Sopenharmony_ci			label = "volume_up";
6162306a36Sopenharmony_ci			linux,code = <KEY_VOLUMEUP>;
6262306a36Sopenharmony_ci			gpios = <&pm6350_gpios 2 GPIO_ACTIVE_LOW>;
6362306a36Sopenharmony_ci		};
6462306a36Sopenharmony_ci	};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci	reserved-memory {
6762306a36Sopenharmony_ci		/*
6862306a36Sopenharmony_ci		 * The rmtfs memory region in downstream is 'dynamically allocated'
6962306a36Sopenharmony_ci		 * but given the same address every time. Hard code it as this address is
7062306a36Sopenharmony_ci		 * where the modem firmware expects it to be.
7162306a36Sopenharmony_ci		 */
7262306a36Sopenharmony_ci		memory@efe01000 {
7362306a36Sopenharmony_ci			compatible = "qcom,rmtfs-mem";
7462306a36Sopenharmony_ci			reg = <0 0xefe01000 0 0x600000>;
7562306a36Sopenharmony_ci			no-map;
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci			qcom,client-id = <1>;
7862306a36Sopenharmony_ci			qcom,vmid = <15>;
7962306a36Sopenharmony_ci		};
8062306a36Sopenharmony_ci	};
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	thermal-zones {
8362306a36Sopenharmony_ci		chg-skin-thermal {
8462306a36Sopenharmony_ci			polling-delay-passive = <0>;
8562306a36Sopenharmony_ci			polling-delay = <0>;
8662306a36Sopenharmony_ci			thermal-sensors = <&pm7250b_adc_tm 0>;
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci			trips {
8962306a36Sopenharmony_ci				active-config0 {
9062306a36Sopenharmony_ci					temperature = <125000>;
9162306a36Sopenharmony_ci					hysteresis = <1000>;
9262306a36Sopenharmony_ci					type = "passive";
9362306a36Sopenharmony_ci				};
9462306a36Sopenharmony_ci			};
9562306a36Sopenharmony_ci		};
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci		conn-thermal {
9862306a36Sopenharmony_ci			polling-delay-passive = <0>;
9962306a36Sopenharmony_ci			polling-delay = <0>;
10062306a36Sopenharmony_ci			thermal-sensors = <&pm7250b_adc_tm 1>;
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci			trips {
10362306a36Sopenharmony_ci				active-config0 {
10462306a36Sopenharmony_ci					temperature = <125000>;
10562306a36Sopenharmony_ci					hysteresis = <1000>;
10662306a36Sopenharmony_ci					type = "passive";
10762306a36Sopenharmony_ci				};
10862306a36Sopenharmony_ci			};
10962306a36Sopenharmony_ci		};
11062306a36Sopenharmony_ci	};
11162306a36Sopenharmony_ci};
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci&adsp {
11462306a36Sopenharmony_ci	firmware-name = "qcom/sm7225/fairphone4/adsp.mdt";
11562306a36Sopenharmony_ci	status = "okay";
11662306a36Sopenharmony_ci};
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci&apps_rsc {
11962306a36Sopenharmony_ci	regulators-0 {
12062306a36Sopenharmony_ci		compatible = "qcom,pm6350-rpmh-regulators";
12162306a36Sopenharmony_ci		qcom,pmic-id = "a";
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci		vreg_s1a: smps1 {
12462306a36Sopenharmony_ci			regulator-min-microvolt = <1000000>;
12562306a36Sopenharmony_ci			regulator-max-microvolt = <1200000>;
12662306a36Sopenharmony_ci		};
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci		vreg_s2a: smps2 {
12962306a36Sopenharmony_ci			regulator-min-microvolt = <1503000>;
13062306a36Sopenharmony_ci			regulator-max-microvolt = <2048000>;
13162306a36Sopenharmony_ci		};
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci		vreg_l2a: ldo2 {
13462306a36Sopenharmony_ci			regulator-min-microvolt = <1503000>;
13562306a36Sopenharmony_ci			regulator-max-microvolt = <1980000>;
13662306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
13762306a36Sopenharmony_ci		};
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci		vreg_l3a: ldo3 {
14062306a36Sopenharmony_ci			regulator-min-microvolt = <2700000>;
14162306a36Sopenharmony_ci			regulator-max-microvolt = <3300000>;
14262306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
14362306a36Sopenharmony_ci		};
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci		vreg_l4a: ldo4 {
14662306a36Sopenharmony_ci			regulator-min-microvolt = <352000>;
14762306a36Sopenharmony_ci			regulator-max-microvolt = <801000>;
14862306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
14962306a36Sopenharmony_ci		};
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci		vreg_l5a: ldo5 {
15262306a36Sopenharmony_ci			regulator-min-microvolt = <1503000>;
15362306a36Sopenharmony_ci			regulator-max-microvolt = <1980000>;
15462306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
15562306a36Sopenharmony_ci		};
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci		vreg_l6a: ldo6 {
15862306a36Sopenharmony_ci			regulator-min-microvolt = <1710000>;
15962306a36Sopenharmony_ci			regulator-max-microvolt = <3544000>;
16062306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
16162306a36Sopenharmony_ci		};
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci		vreg_l7a: ldo7 {
16462306a36Sopenharmony_ci			regulator-min-microvolt = <1620000>;
16562306a36Sopenharmony_ci			regulator-max-microvolt = <1980000>;
16662306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
16762306a36Sopenharmony_ci		};
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci		vreg_l8a: ldo8 {
17062306a36Sopenharmony_ci			regulator-min-microvolt = <2800000>;
17162306a36Sopenharmony_ci			regulator-max-microvolt = <2800000>;
17262306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
17362306a36Sopenharmony_ci		};
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci		vreg_l9a: ldo9 {
17662306a36Sopenharmony_ci			regulator-min-microvolt = <1650000>;
17762306a36Sopenharmony_ci			regulator-max-microvolt = <3401000>;
17862306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
17962306a36Sopenharmony_ci		};
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci		vreg_l11a: ldo11 {
18262306a36Sopenharmony_ci			regulator-min-microvolt = <1800000>;
18362306a36Sopenharmony_ci			regulator-max-microvolt = <2000000>;
18462306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
18562306a36Sopenharmony_ci		};
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci		vreg_l12a: ldo12 {
18862306a36Sopenharmony_ci			regulator-min-microvolt = <1620000>;
18962306a36Sopenharmony_ci			regulator-max-microvolt = <1980000>;
19062306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
19162306a36Sopenharmony_ci		};
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci		vreg_l13a: ldo13 {
19462306a36Sopenharmony_ci			regulator-min-microvolt = <570000>;
19562306a36Sopenharmony_ci			regulator-max-microvolt = <650000>;
19662306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
19762306a36Sopenharmony_ci		};
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci		vreg_l14a: ldo14 {
20062306a36Sopenharmony_ci			regulator-min-microvolt = <1700000>;
20162306a36Sopenharmony_ci			regulator-max-microvolt = <1900000>;
20262306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
20362306a36Sopenharmony_ci		};
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci		vreg_l15a: ldo15 {
20662306a36Sopenharmony_ci			regulator-min-microvolt = <1100000>;
20762306a36Sopenharmony_ci			regulator-max-microvolt = <1305000>;
20862306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
20962306a36Sopenharmony_ci		};
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci		vreg_l16a: ldo16 {
21262306a36Sopenharmony_ci			regulator-min-microvolt = <830000>;
21362306a36Sopenharmony_ci			regulator-max-microvolt = <921000>;
21462306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
21562306a36Sopenharmony_ci		};
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci		vreg_l18a: ldo18 {
21862306a36Sopenharmony_ci			regulator-min-microvolt = <788000>;
21962306a36Sopenharmony_ci			regulator-max-microvolt = <1049000>;
22062306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
22162306a36Sopenharmony_ci		};
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci		vreg_l19a: ldo19 {
22462306a36Sopenharmony_ci			regulator-min-microvolt = <1080000>;
22562306a36Sopenharmony_ci			regulator-max-microvolt = <1305000>;
22662306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
22762306a36Sopenharmony_ci		};
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci		vreg_l20a: ldo20 {
23062306a36Sopenharmony_ci			regulator-min-microvolt = <530000>;
23162306a36Sopenharmony_ci			regulator-max-microvolt = <801000>;
23262306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
23362306a36Sopenharmony_ci		};
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci		vreg_l21a: ldo21 {
23662306a36Sopenharmony_ci			regulator-min-microvolt = <751000>;
23762306a36Sopenharmony_ci			regulator-max-microvolt = <825000>;
23862306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
23962306a36Sopenharmony_ci		};
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci		vreg_l22a: ldo22 {
24262306a36Sopenharmony_ci			regulator-min-microvolt = <1080000>;
24362306a36Sopenharmony_ci			regulator-max-microvolt = <1305000>;
24462306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
24562306a36Sopenharmony_ci		};
24662306a36Sopenharmony_ci	};
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci	regulators-1 {
24962306a36Sopenharmony_ci		compatible = "qcom,pm6150l-rpmh-regulators";
25062306a36Sopenharmony_ci		qcom,pmic-id = "e";
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci		vreg_s8e: smps8 {
25362306a36Sopenharmony_ci			regulator-min-microvolt = <313000>;
25462306a36Sopenharmony_ci			regulator-max-microvolt = <1395000>;
25562306a36Sopenharmony_ci		};
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci		vreg_l1e: ldo1 {
25862306a36Sopenharmony_ci			regulator-min-microvolt = <1620000>;
25962306a36Sopenharmony_ci			regulator-max-microvolt = <1980000>;
26062306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
26162306a36Sopenharmony_ci		};
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci		vreg_l2e: ldo2 {
26462306a36Sopenharmony_ci			regulator-min-microvolt = <1170000>;
26562306a36Sopenharmony_ci			regulator-max-microvolt = <1305000>;
26662306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
26762306a36Sopenharmony_ci		};
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci		vreg_l3e: ldo3 {
27062306a36Sopenharmony_ci			regulator-min-microvolt = <1100000>;
27162306a36Sopenharmony_ci			regulator-max-microvolt = <1299000>;
27262306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
27362306a36Sopenharmony_ci		};
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci		vreg_l4e: ldo4 {
27662306a36Sopenharmony_ci			regulator-min-microvolt = <1620000>;
27762306a36Sopenharmony_ci			regulator-max-microvolt = <3300000>;
27862306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
27962306a36Sopenharmony_ci		};
28062306a36Sopenharmony_ci
28162306a36Sopenharmony_ci		vreg_l5e: ldo5 {
28262306a36Sopenharmony_ci			regulator-min-microvolt = <1620000>;
28362306a36Sopenharmony_ci			regulator-max-microvolt = <3300000>;
28462306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
28562306a36Sopenharmony_ci		};
28662306a36Sopenharmony_ci
28762306a36Sopenharmony_ci		vreg_l6e: ldo6 {
28862306a36Sopenharmony_ci			regulator-min-microvolt = <1700000>;
28962306a36Sopenharmony_ci			regulator-max-microvolt = <2950000>;
29062306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
29162306a36Sopenharmony_ci			regulator-allow-set-load;
29262306a36Sopenharmony_ci			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
29362306a36Sopenharmony_ci						   RPMH_REGULATOR_MODE_HPM>;
29462306a36Sopenharmony_ci		};
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ci		vreg_l7e: ldo7 {
29762306a36Sopenharmony_ci			regulator-min-microvolt = <2700000>;
29862306a36Sopenharmony_ci			regulator-max-microvolt = <3544000>;
29962306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
30062306a36Sopenharmony_ci		};
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci		vreg_l8e: ldo8 {
30362306a36Sopenharmony_ci			regulator-min-microvolt = <1620000>;
30462306a36Sopenharmony_ci			regulator-max-microvolt = <2000000>;
30562306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
30662306a36Sopenharmony_ci		};
30762306a36Sopenharmony_ci
30862306a36Sopenharmony_ci		vreg_l9e: ldo9 {
30962306a36Sopenharmony_ci			regulator-min-microvolt = <2700000>;
31062306a36Sopenharmony_ci			regulator-max-microvolt = <2960000>;
31162306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
31262306a36Sopenharmony_ci			regulator-allow-set-load;
31362306a36Sopenharmony_ci			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
31462306a36Sopenharmony_ci						   RPMH_REGULATOR_MODE_HPM>;
31562306a36Sopenharmony_ci		};
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ci		vreg_l10e: ldo10 {
31862306a36Sopenharmony_ci			regulator-min-microvolt = <3000000>;
31962306a36Sopenharmony_ci			regulator-max-microvolt = <3401000>;
32062306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
32162306a36Sopenharmony_ci		};
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_ci		vreg_l11e: ldo11 {
32462306a36Sopenharmony_ci			regulator-min-microvolt = <3000000>;
32562306a36Sopenharmony_ci			regulator-max-microvolt = <3401000>;
32662306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
32762306a36Sopenharmony_ci		};
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ci		vreg_bob: bob {
33062306a36Sopenharmony_ci			regulator-min-microvolt = <1620000>;
33162306a36Sopenharmony_ci			regulator-max-microvolt = <5492000>;
33262306a36Sopenharmony_ci			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
33362306a36Sopenharmony_ci			regulator-allow-bypass;
33462306a36Sopenharmony_ci		};
33562306a36Sopenharmony_ci	};
33662306a36Sopenharmony_ci};
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_ci&cci0 {
33962306a36Sopenharmony_ci	status = "okay";
34062306a36Sopenharmony_ci};
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_ci&cci0_i2c0 {
34362306a36Sopenharmony_ci	/* IMX582 @ 0x1a */
34462306a36Sopenharmony_ci};
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ci&cci0_i2c1 {
34762306a36Sopenharmony_ci	/* IMX582 @ 0x1a */
34862306a36Sopenharmony_ci};
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_ci&cci1 {
35162306a36Sopenharmony_ci	status = "okay";
35262306a36Sopenharmony_ci};
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_ci&cci1_i2c0 {
35562306a36Sopenharmony_ci	/* IMX576 @ 0x10 */
35662306a36Sopenharmony_ci};
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ci&cdsp {
35962306a36Sopenharmony_ci	firmware-name = "qcom/sm7225/fairphone4/cdsp.mdt";
36062306a36Sopenharmony_ci	status = "okay";
36162306a36Sopenharmony_ci};
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci&gpi_dma0 {
36462306a36Sopenharmony_ci	status = "okay";
36562306a36Sopenharmony_ci};
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_ci&gpi_dma1 {
36862306a36Sopenharmony_ci	status = "okay";
36962306a36Sopenharmony_ci};
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci&i2c0 {
37262306a36Sopenharmony_ci	clock-frequency = <400000>;
37362306a36Sopenharmony_ci	status = "okay";
37462306a36Sopenharmony_ci
37562306a36Sopenharmony_ci	/* ST21NFCD NFC @ 8 */
37662306a36Sopenharmony_ci	/* VL53L3 ToF @ 29 */
37762306a36Sopenharmony_ci	/* AW88264A amplifier @ 34 */
37862306a36Sopenharmony_ci	/* AW88264A amplifier @ 35 */
37962306a36Sopenharmony_ci};
38062306a36Sopenharmony_ci
38162306a36Sopenharmony_ci&i2c8 {
38262306a36Sopenharmony_ci	clock-frequency = <400000>;
38362306a36Sopenharmony_ci	status = "okay";
38462306a36Sopenharmony_ci
38562306a36Sopenharmony_ci	/* HX83112A touchscreen @ 48 */
38662306a36Sopenharmony_ci};
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ci&i2c10 {
38962306a36Sopenharmony_ci	clock-frequency = <400000>;
39062306a36Sopenharmony_ci	status = "okay";
39162306a36Sopenharmony_ci
39262306a36Sopenharmony_ci	/* PM8008 PMIC @ 8 and 9 */
39362306a36Sopenharmony_ci	/* PX8618 @ 26 */
39462306a36Sopenharmony_ci	/* SMB1395 PMIC @ 34 */
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ci	haptics@5a {
39762306a36Sopenharmony_ci		compatible = "awinic,aw8695";
39862306a36Sopenharmony_ci		reg = <0x5a>;
39962306a36Sopenharmony_ci		interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_FALLING>;
40062306a36Sopenharmony_ci		reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
40162306a36Sopenharmony_ci
40262306a36Sopenharmony_ci		awinic,f0-preset = <2350>;
40362306a36Sopenharmony_ci		awinic,f0-coefficient = <260>;
40462306a36Sopenharmony_ci		awinic,f0-calibration-percent = <7>;
40562306a36Sopenharmony_ci		awinic,drive-level = <125>;
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci		awinic,f0-detection-play-time = <5>;
40862306a36Sopenharmony_ci		awinic,f0-detection-wait-time = <3>;
40962306a36Sopenharmony_ci		awinic,f0-detection-repeat = <2>;
41062306a36Sopenharmony_ci		awinic,f0-detection-trace = <15>;
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_ci		awinic,boost-debug = /bits/ 8 <0x30 0xeb 0xd4>;
41362306a36Sopenharmony_ci		awinic,tset = /bits/ 8 <0x12>;
41462306a36Sopenharmony_ci		awinic,r-spare = /bits/ 8 <0x68>;
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ci		awinic,bemf-upper-threshold = <4104>;
41762306a36Sopenharmony_ci		awinic,bemf-lower-threshold = <1016>;
41862306a36Sopenharmony_ci	};
41962306a36Sopenharmony_ci};
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci&ipa {
42262306a36Sopenharmony_ci	qcom,gsi-loader = "self";
42362306a36Sopenharmony_ci	memory-region = <&pil_ipa_fw_mem>;
42462306a36Sopenharmony_ci	firmware-name = "qcom/sm7225/fairphone4/ipa_fws.mdt";
42562306a36Sopenharmony_ci	status = "okay";
42662306a36Sopenharmony_ci};
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci&mpss {
42962306a36Sopenharmony_ci	firmware-name = "qcom/sm7225/fairphone4/modem.mdt";
43062306a36Sopenharmony_ci	status = "okay";
43162306a36Sopenharmony_ci};
43262306a36Sopenharmony_ci
43362306a36Sopenharmony_ci&pm6150l_flash {
43462306a36Sopenharmony_ci	status = "okay";
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ci	led-0 {
43762306a36Sopenharmony_ci		function = LED_FUNCTION_FLASH;
43862306a36Sopenharmony_ci		color = <LED_COLOR_ID_YELLOW>;
43962306a36Sopenharmony_ci		led-sources = <1>;
44062306a36Sopenharmony_ci		led-max-microamp = <180000>;
44162306a36Sopenharmony_ci		flash-max-microamp = <1000000>;
44262306a36Sopenharmony_ci		flash-max-timeout-us = <1280000>;
44362306a36Sopenharmony_ci	};
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_ci	led-1 {
44662306a36Sopenharmony_ci		function = LED_FUNCTION_FLASH;
44762306a36Sopenharmony_ci		color = <LED_COLOR_ID_WHITE>;
44862306a36Sopenharmony_ci		led-sources = <2>;
44962306a36Sopenharmony_ci		led-max-microamp = <180000>;
45062306a36Sopenharmony_ci		flash-max-microamp = <1000000>;
45162306a36Sopenharmony_ci		flash-max-timeout-us = <1280000>;
45262306a36Sopenharmony_ci	};
45362306a36Sopenharmony_ci};
45462306a36Sopenharmony_ci
45562306a36Sopenharmony_ci&pm6150l_wled {
45662306a36Sopenharmony_ci	qcom,switching-freq = <800>;
45762306a36Sopenharmony_ci	qcom,current-limit-microamp = <20000>;
45862306a36Sopenharmony_ci	qcom,num-strings = <2>;
45962306a36Sopenharmony_ci
46062306a36Sopenharmony_ci	status = "okay";
46162306a36Sopenharmony_ci};
46262306a36Sopenharmony_ci
46362306a36Sopenharmony_ci&pm6350_gpios {
46462306a36Sopenharmony_ci	gpio_keys_pin: gpio-keys-state {
46562306a36Sopenharmony_ci		pins = "gpio2";
46662306a36Sopenharmony_ci		function = PMIC_GPIO_FUNC_NORMAL;
46762306a36Sopenharmony_ci		bias-pull-up;
46862306a36Sopenharmony_ci		input-enable;
46962306a36Sopenharmony_ci		power-source = <0>;
47062306a36Sopenharmony_ci	};
47162306a36Sopenharmony_ci};
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ci&pm6350_resin {
47462306a36Sopenharmony_ci	linux,code = <KEY_VOLUMEDOWN>;
47562306a36Sopenharmony_ci	status = "okay";
47662306a36Sopenharmony_ci};
47762306a36Sopenharmony_ci
47862306a36Sopenharmony_ci&pm7250b_adc {
47962306a36Sopenharmony_ci	channel@4d {
48062306a36Sopenharmony_ci		reg = <ADC5_AMUX_THM1_100K_PU>;
48162306a36Sopenharmony_ci		qcom,ratiometric;
48262306a36Sopenharmony_ci		qcom,hw-settle-time = <200>;
48362306a36Sopenharmony_ci		qcom,pre-scaling = <1 1>;
48462306a36Sopenharmony_ci		label = "charger_skin_therm";
48562306a36Sopenharmony_ci	};
48662306a36Sopenharmony_ci
48762306a36Sopenharmony_ci	channel@4f {
48862306a36Sopenharmony_ci		reg = <ADC5_AMUX_THM3_100K_PU>;
48962306a36Sopenharmony_ci		qcom,ratiometric;
49062306a36Sopenharmony_ci		qcom,hw-settle-time = <200>;
49162306a36Sopenharmony_ci		qcom,pre-scaling = <1 1>;
49262306a36Sopenharmony_ci		label = "conn_therm";
49362306a36Sopenharmony_ci	};
49462306a36Sopenharmony_ci};
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_ci&pm7250b_adc_tm {
49762306a36Sopenharmony_ci	status = "okay";
49862306a36Sopenharmony_ci
49962306a36Sopenharmony_ci	charger-skin-therm@0 {
50062306a36Sopenharmony_ci		reg = <0>;
50162306a36Sopenharmony_ci		io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>;
50262306a36Sopenharmony_ci		qcom,ratiometric;
50362306a36Sopenharmony_ci		qcom,hw-settle-time-us = <200>;
50462306a36Sopenharmony_ci	};
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci	conn-therm@1 {
50762306a36Sopenharmony_ci		reg = <1>;
50862306a36Sopenharmony_ci		io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>;
50962306a36Sopenharmony_ci		qcom,ratiometric;
51062306a36Sopenharmony_ci		qcom,hw-settle-time-us = <200>;
51162306a36Sopenharmony_ci	};
51262306a36Sopenharmony_ci};
51362306a36Sopenharmony_ci
51462306a36Sopenharmony_ci&pmk8350_rtc {
51562306a36Sopenharmony_ci	status = "okay";
51662306a36Sopenharmony_ci};
51762306a36Sopenharmony_ci
51862306a36Sopenharmony_ci&pmk8350_vadc {
51962306a36Sopenharmony_ci	channel@644 {
52062306a36Sopenharmony_ci		reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
52162306a36Sopenharmony_ci		qcom,ratiometric;
52262306a36Sopenharmony_ci		qcom,hw-settle-time = <200>;
52362306a36Sopenharmony_ci		qcom,pre-scaling = <1 1>;
52462306a36Sopenharmony_ci		label = "xo_therm";
52562306a36Sopenharmony_ci	};
52662306a36Sopenharmony_ci};
52762306a36Sopenharmony_ci
52862306a36Sopenharmony_ci&qup_uart1_cts {
52962306a36Sopenharmony_ci	/*
53062306a36Sopenharmony_ci	 * Configure a bias-bus-hold on CTS to lower power
53162306a36Sopenharmony_ci	 * usage when Bluetooth is turned off. Bus hold will
53262306a36Sopenharmony_ci	 * maintain a low power state regardless of whether
53362306a36Sopenharmony_ci	 * the Bluetooth module drives the pin in either
53462306a36Sopenharmony_ci	 * direction or leaves the pin fully unpowered.
53562306a36Sopenharmony_ci	 */
53662306a36Sopenharmony_ci	bias-bus-hold;
53762306a36Sopenharmony_ci};
53862306a36Sopenharmony_ci
53962306a36Sopenharmony_ci&qup_uart1_rts {
54062306a36Sopenharmony_ci	/* We'll drive RTS, so no pull */
54162306a36Sopenharmony_ci	drive-strength = <2>;
54262306a36Sopenharmony_ci	bias-disable;
54362306a36Sopenharmony_ci};
54462306a36Sopenharmony_ci
54562306a36Sopenharmony_ci&qup_uart1_rx {
54662306a36Sopenharmony_ci	/*
54762306a36Sopenharmony_ci	 * Configure a pull-up on RX. This is needed to avoid
54862306a36Sopenharmony_ci	 * garbage data when the TX pin of the Bluetooth module is
54962306a36Sopenharmony_ci	 * in tri-state (module powered off or not driving the
55062306a36Sopenharmony_ci	 * signal yet).
55162306a36Sopenharmony_ci	 */
55262306a36Sopenharmony_ci	bias-pull-up;
55362306a36Sopenharmony_ci};
55462306a36Sopenharmony_ci
55562306a36Sopenharmony_ci&qup_uart1_tx {
55662306a36Sopenharmony_ci	/* We'll drive TX, so no pull */
55762306a36Sopenharmony_ci	drive-strength = <2>;
55862306a36Sopenharmony_ci	bias-disable;
55962306a36Sopenharmony_ci};
56062306a36Sopenharmony_ci
56162306a36Sopenharmony_ci&qupv3_id_0 {
56262306a36Sopenharmony_ci	status = "okay";
56362306a36Sopenharmony_ci};
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ci&qupv3_id_1 {
56662306a36Sopenharmony_ci	status = "okay";
56762306a36Sopenharmony_ci};
56862306a36Sopenharmony_ci
56962306a36Sopenharmony_ci&sdc2_off_state {
57062306a36Sopenharmony_ci	sd-cd-pins {
57162306a36Sopenharmony_ci		pins = "gpio94";
57262306a36Sopenharmony_ci		function = "gpio";
57362306a36Sopenharmony_ci		drive-strength = <2>;
57462306a36Sopenharmony_ci		bias-disable;
57562306a36Sopenharmony_ci	};
57662306a36Sopenharmony_ci};
57762306a36Sopenharmony_ci
57862306a36Sopenharmony_ci&sdc2_on_state {
57962306a36Sopenharmony_ci	sd-cd-pins {
58062306a36Sopenharmony_ci		pins = "gpio94";
58162306a36Sopenharmony_ci		function = "gpio";
58262306a36Sopenharmony_ci		drive-strength = <2>;
58362306a36Sopenharmony_ci		bias-pull-up;
58462306a36Sopenharmony_ci	};
58562306a36Sopenharmony_ci};
58662306a36Sopenharmony_ci
58762306a36Sopenharmony_ci&sdhc_2 {
58862306a36Sopenharmony_ci	vmmc-supply = <&vreg_l9e>;
58962306a36Sopenharmony_ci	vqmmc-supply = <&vreg_l6e>;
59062306a36Sopenharmony_ci
59162306a36Sopenharmony_ci	cd-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_ci	status = "okay";
59462306a36Sopenharmony_ci};
59562306a36Sopenharmony_ci
59662306a36Sopenharmony_ci&tlmm {
59762306a36Sopenharmony_ci	gpio-reserved-ranges = <13 4>, <56 2>;
59862306a36Sopenharmony_ci
59962306a36Sopenharmony_ci	qup_uart1_sleep_cts: qup-uart1-sleep-cts-state {
60062306a36Sopenharmony_ci		pins = "gpio61";
60162306a36Sopenharmony_ci		function = "gpio";
60262306a36Sopenharmony_ci		/*
60362306a36Sopenharmony_ci		 * Configure a bias-bus-hold on CTS to lower power
60462306a36Sopenharmony_ci		 * usage when Bluetooth is turned off. Bus hold will
60562306a36Sopenharmony_ci		 * maintain a low power state regardless of whether
60662306a36Sopenharmony_ci		 * the Bluetooth module drives the pin in either
60762306a36Sopenharmony_ci		 * direction or leaves the pin fully unpowered.
60862306a36Sopenharmony_ci		 */
60962306a36Sopenharmony_ci		bias-bus-hold;
61062306a36Sopenharmony_ci	};
61162306a36Sopenharmony_ci
61262306a36Sopenharmony_ci	qup_uart1_sleep_rts: qup-uart1-sleep-rts-state {
61362306a36Sopenharmony_ci		pins = "gpio62";
61462306a36Sopenharmony_ci		function = "gpio";
61562306a36Sopenharmony_ci		/*
61662306a36Sopenharmony_ci		 * Configure pull-down on RTS. As RTS is active low
61762306a36Sopenharmony_ci		 * signal, pull it low to indicate the BT SoC that it
61862306a36Sopenharmony_ci		 * can wakeup the system anytime from suspend state by
61962306a36Sopenharmony_ci		 * pulling RX low (by sending wakeup bytes).
62062306a36Sopenharmony_ci		 */
62162306a36Sopenharmony_ci		bias-pull-down;
62262306a36Sopenharmony_ci	};
62362306a36Sopenharmony_ci
62462306a36Sopenharmony_ci	qup_uart1_sleep_rx: qup-uart1-sleep-rx-state {
62562306a36Sopenharmony_ci		pins = "gpio64";
62662306a36Sopenharmony_ci		function = "gpio";
62762306a36Sopenharmony_ci		/*
62862306a36Sopenharmony_ci		 * Configure a pull-up on RX. This is needed to avoid
62962306a36Sopenharmony_ci		 * garbage data when the TX pin of the Bluetooth module
63062306a36Sopenharmony_ci		 * is floating which may cause spurious wakeups.
63162306a36Sopenharmony_ci		 */
63262306a36Sopenharmony_ci		bias-pull-up;
63362306a36Sopenharmony_ci	};
63462306a36Sopenharmony_ci
63562306a36Sopenharmony_ci	qup_uart1_sleep_tx: qup-uart1-sleep-tx-state {
63662306a36Sopenharmony_ci		pins = "gpio63";
63762306a36Sopenharmony_ci		function = "gpio";
63862306a36Sopenharmony_ci		/*
63962306a36Sopenharmony_ci		 * Configure pull-up on TX when it isn't actively driven
64062306a36Sopenharmony_ci		 * to prevent BT SoC from receiving garbage during sleep.
64162306a36Sopenharmony_ci		 */
64262306a36Sopenharmony_ci		bias-pull-up;
64362306a36Sopenharmony_ci	};
64462306a36Sopenharmony_ci};
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_ci&uart1 {
64762306a36Sopenharmony_ci	/delete-property/ interrupts;
64862306a36Sopenharmony_ci	interrupts-extended = <&intc GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>,
64962306a36Sopenharmony_ci			      <&tlmm 64 IRQ_TYPE_EDGE_FALLING>;
65062306a36Sopenharmony_ci
65162306a36Sopenharmony_ci	pinctrl-names = "default", "sleep";
65262306a36Sopenharmony_ci	pinctrl-1 = <&qup_uart1_sleep_cts>, <&qup_uart1_sleep_rts>, <&qup_uart1_sleep_tx>, <&qup_uart1_sleep_rx>;
65362306a36Sopenharmony_ci
65462306a36Sopenharmony_ci	status = "okay";
65562306a36Sopenharmony_ci
65662306a36Sopenharmony_ci	bluetooth {
65762306a36Sopenharmony_ci		compatible = "qcom,wcn3988-bt";
65862306a36Sopenharmony_ci
65962306a36Sopenharmony_ci		vddio-supply = <&vreg_l11a>;
66062306a36Sopenharmony_ci		vddxo-supply = <&vreg_l7a>;
66162306a36Sopenharmony_ci		vddrf-supply = <&vreg_l2e>;
66262306a36Sopenharmony_ci		vddch0-supply = <&vreg_l10e>;
66362306a36Sopenharmony_ci		swctrl-gpios = <&tlmm 69 GPIO_ACTIVE_HIGH>;
66462306a36Sopenharmony_ci
66562306a36Sopenharmony_ci		max-speed = <3200000>;
66662306a36Sopenharmony_ci	};
66762306a36Sopenharmony_ci};
66862306a36Sopenharmony_ci
66962306a36Sopenharmony_ci&uart9 {
67062306a36Sopenharmony_ci	status = "okay";
67162306a36Sopenharmony_ci};
67262306a36Sopenharmony_ci
67362306a36Sopenharmony_ci&ufs_mem_hc {
67462306a36Sopenharmony_ci	reset-gpios = <&tlmm 156 GPIO_ACTIVE_LOW>;
67562306a36Sopenharmony_ci
67662306a36Sopenharmony_ci	vcc-supply = <&vreg_l7e>;
67762306a36Sopenharmony_ci	vcc-max-microamp = <800000>;
67862306a36Sopenharmony_ci	vccq2-supply = <&vreg_l12a>;
67962306a36Sopenharmony_ci	vccq2-max-microamp = <800000>;
68062306a36Sopenharmony_ci
68162306a36Sopenharmony_ci	status = "okay";
68262306a36Sopenharmony_ci};
68362306a36Sopenharmony_ci
68462306a36Sopenharmony_ci&ufs_mem_phy {
68562306a36Sopenharmony_ci	vdda-phy-supply = <&vreg_l18a>;
68662306a36Sopenharmony_ci	vdda-pll-supply = <&vreg_l22a>;
68762306a36Sopenharmony_ci
68862306a36Sopenharmony_ci	status = "okay";
68962306a36Sopenharmony_ci};
69062306a36Sopenharmony_ci
69162306a36Sopenharmony_ci&usb_1 {
69262306a36Sopenharmony_ci	status = "okay";
69362306a36Sopenharmony_ci};
69462306a36Sopenharmony_ci
69562306a36Sopenharmony_ci&usb_1_dwc3 {
69662306a36Sopenharmony_ci	maximum-speed = "super-speed";
69762306a36Sopenharmony_ci	dr_mode = "peripheral";
69862306a36Sopenharmony_ci};
69962306a36Sopenharmony_ci
70062306a36Sopenharmony_ci&usb_1_hsphy {
70162306a36Sopenharmony_ci	vdd-supply = <&vreg_l18a>;
70262306a36Sopenharmony_ci	vdda-pll-supply = <&vreg_l2a>;
70362306a36Sopenharmony_ci	vdda-phy-dpdm-supply = <&vreg_l3a>;
70462306a36Sopenharmony_ci
70562306a36Sopenharmony_ci	status = "okay";
70662306a36Sopenharmony_ci};
70762306a36Sopenharmony_ci
70862306a36Sopenharmony_ci&usb_1_qmpphy {
70962306a36Sopenharmony_ci	vdda-phy-supply = <&vreg_l22a>;
71062306a36Sopenharmony_ci	vdda-pll-supply = <&vreg_l16a>;
71162306a36Sopenharmony_ci
71262306a36Sopenharmony_ci	status = "okay";
71362306a36Sopenharmony_ci};
71462306a36Sopenharmony_ci
71562306a36Sopenharmony_ci&wifi {
71662306a36Sopenharmony_ci	vdd-0.8-cx-mx-supply = <&vreg_l4a>;
71762306a36Sopenharmony_ci	vdd-1.8-xo-supply = <&vreg_l7a>;
71862306a36Sopenharmony_ci	vdd-1.3-rfa-supply = <&vreg_l2e>;
71962306a36Sopenharmony_ci	vdd-3.3-ch0-supply = <&vreg_l10e>;
72062306a36Sopenharmony_ci	vdd-3.3-ch1-supply = <&vreg_l11e>;
72162306a36Sopenharmony_ci
72262306a36Sopenharmony_ci	status = "okay";
72362306a36Sopenharmony_ci};
724