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