1*4882a593Smuzhiyun#include "qcom-msm8974.dtsi" 2*4882a593Smuzhiyun#include "qcom-pm8841.dtsi" 3*4882a593Smuzhiyun#include "qcom-pm8941.dtsi" 4*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 5*4882a593Smuzhiyun#include <dt-bindings/input/input.h> 6*4882a593Smuzhiyun#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun/ { 10*4882a593Smuzhiyun model = "Fairphone 2"; 11*4882a593Smuzhiyun compatible = "fairphone,fp2", "qcom,msm8974"; 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun aliases { 14*4882a593Smuzhiyun serial0 = &blsp1_uart2; 15*4882a593Smuzhiyun }; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun chosen { 18*4882a593Smuzhiyun stdout-path = "serial0:115200n8"; 19*4882a593Smuzhiyun }; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun gpio-keys { 22*4882a593Smuzhiyun compatible = "gpio-keys"; 23*4882a593Smuzhiyun input-name = "gpio-keys"; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun pinctrl-names = "default"; 26*4882a593Smuzhiyun pinctrl-0 = <&gpio_keys_pin_a>; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun camera-snapshot { 29*4882a593Smuzhiyun label = "camera_snapshot"; 30*4882a593Smuzhiyun gpios = <&pm8941_gpios 1 GPIO_ACTIVE_LOW>; 31*4882a593Smuzhiyun linux,code = <KEY_CAMERA>; 32*4882a593Smuzhiyun wakeup-source; 33*4882a593Smuzhiyun debounce-interval = <15>; 34*4882a593Smuzhiyun }; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun volume-down { 37*4882a593Smuzhiyun label = "volume_down"; 38*4882a593Smuzhiyun gpios = <&pm8941_gpios 2 GPIO_ACTIVE_LOW>; 39*4882a593Smuzhiyun linux,code = <KEY_VOLUMEDOWN>; 40*4882a593Smuzhiyun wakeup-source; 41*4882a593Smuzhiyun debounce-interval = <15>; 42*4882a593Smuzhiyun }; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun volume-up { 45*4882a593Smuzhiyun label = "volume_up"; 46*4882a593Smuzhiyun gpios = <&pm8941_gpios 5 GPIO_ACTIVE_LOW>; 47*4882a593Smuzhiyun linux,code = <KEY_VOLUMEUP>; 48*4882a593Smuzhiyun wakeup-source; 49*4882a593Smuzhiyun debounce-interval = <15>; 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun }; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun vibrator { 54*4882a593Smuzhiyun compatible = "gpio-vibrator"; 55*4882a593Smuzhiyun enable-gpios = <&msmgpio 86 GPIO_ACTIVE_HIGH>; 56*4882a593Smuzhiyun vcc-supply = <&pm8941_l18>; 57*4882a593Smuzhiyun }; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun smd { 60*4882a593Smuzhiyun rpm { 61*4882a593Smuzhiyun rpm_requests { 62*4882a593Smuzhiyun pm8841-regulators { 63*4882a593Smuzhiyun s1 { 64*4882a593Smuzhiyun regulator-min-microvolt = <675000>; 65*4882a593Smuzhiyun regulator-max-microvolt = <1050000>; 66*4882a593Smuzhiyun }; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun s2 { 69*4882a593Smuzhiyun regulator-min-microvolt = <500000>; 70*4882a593Smuzhiyun regulator-max-microvolt = <1050000>; 71*4882a593Smuzhiyun }; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun s3 { 74*4882a593Smuzhiyun regulator-min-microvolt = <1050000>; 75*4882a593Smuzhiyun regulator-max-microvolt = <1050000>; 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun pm8941-regulators { 80*4882a593Smuzhiyun vdd_l1_l3-supply = <&pm8941_s1>; 81*4882a593Smuzhiyun vdd_l2_lvs1_2_3-supply = <&pm8941_s3>; 82*4882a593Smuzhiyun vdd_l4_l11-supply = <&pm8941_s1>; 83*4882a593Smuzhiyun vdd_l5_l7-supply = <&pm8941_s2>; 84*4882a593Smuzhiyun vdd_l6_l12_l14_l15-supply = <&pm8941_s2>; 85*4882a593Smuzhiyun vdd_l9_l10_l17_l22-supply = <&vreg_boost>; 86*4882a593Smuzhiyun vdd_l13_l20_l23_l24-supply = <&vreg_boost>; 87*4882a593Smuzhiyun vdd_l21-supply = <&vreg_boost>; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun s1 { 90*4882a593Smuzhiyun regulator-min-microvolt = <1300000>; 91*4882a593Smuzhiyun regulator-max-microvolt = <1300000>; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun regulator-always-on; 94*4882a593Smuzhiyun regulator-boot-on; 95*4882a593Smuzhiyun }; 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun s2 { 98*4882a593Smuzhiyun regulator-min-microvolt = <2150000>; 99*4882a593Smuzhiyun regulator-max-microvolt = <2150000>; 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun regulator-boot-on; 102*4882a593Smuzhiyun }; 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun s3 { 105*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 106*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun regulator-always-on; 109*4882a593Smuzhiyun regulator-boot-on; 110*4882a593Smuzhiyun }; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun l1 { 113*4882a593Smuzhiyun regulator-min-microvolt = <1225000>; 114*4882a593Smuzhiyun regulator-max-microvolt = <1225000>; 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun regulator-always-on; 117*4882a593Smuzhiyun regulator-boot-on; 118*4882a593Smuzhiyun }; 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun l2 { 121*4882a593Smuzhiyun regulator-min-microvolt = <1200000>; 122*4882a593Smuzhiyun regulator-max-microvolt = <1200000>; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun l3 { 126*4882a593Smuzhiyun regulator-min-microvolt = <1225000>; 127*4882a593Smuzhiyun regulator-max-microvolt = <1225000>; 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun l4 { 131*4882a593Smuzhiyun regulator-min-microvolt = <1225000>; 132*4882a593Smuzhiyun regulator-max-microvolt = <1225000>; 133*4882a593Smuzhiyun }; 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun l5 { 136*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 137*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 138*4882a593Smuzhiyun }; 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun l6 { 141*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 142*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun regulator-boot-on; 145*4882a593Smuzhiyun }; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun l7 { 148*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 149*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun regulator-boot-on; 152*4882a593Smuzhiyun }; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun l8 { 155*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 156*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun l9 { 160*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 161*4882a593Smuzhiyun regulator-max-microvolt = <2950000>; 162*4882a593Smuzhiyun }; 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun l10 { 165*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 166*4882a593Smuzhiyun regulator-max-microvolt = <2950000>; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun l11 { 170*4882a593Smuzhiyun regulator-min-microvolt = <1225000>; 171*4882a593Smuzhiyun regulator-max-microvolt = <1350000>; 172*4882a593Smuzhiyun }; 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun l12 { 175*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 176*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun regulator-always-on; 179*4882a593Smuzhiyun regulator-boot-on; 180*4882a593Smuzhiyun }; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun l13 { 183*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 184*4882a593Smuzhiyun regulator-max-microvolt = <2950000>; 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun regulator-boot-on; 187*4882a593Smuzhiyun }; 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun l14 { 190*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 191*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun l15 { 195*4882a593Smuzhiyun regulator-min-microvolt = <2050000>; 196*4882a593Smuzhiyun regulator-max-microvolt = <2050000>; 197*4882a593Smuzhiyun }; 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun l16 { 200*4882a593Smuzhiyun regulator-min-microvolt = <2700000>; 201*4882a593Smuzhiyun regulator-max-microvolt = <2700000>; 202*4882a593Smuzhiyun }; 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun l17 { 205*4882a593Smuzhiyun regulator-min-microvolt = <2850000>; 206*4882a593Smuzhiyun regulator-max-microvolt = <2850000>; 207*4882a593Smuzhiyun }; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun l18 { 210*4882a593Smuzhiyun regulator-min-microvolt = <2850000>; 211*4882a593Smuzhiyun regulator-max-microvolt = <2850000>; 212*4882a593Smuzhiyun }; 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun l19 { 215*4882a593Smuzhiyun regulator-min-microvolt = <2900000>; 216*4882a593Smuzhiyun regulator-max-microvolt = <3350000>; 217*4882a593Smuzhiyun }; 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun l20 { 220*4882a593Smuzhiyun regulator-min-microvolt = <2950000>; 221*4882a593Smuzhiyun regulator-max-microvolt = <2950000>; 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun regulator-boot-on; 224*4882a593Smuzhiyun regulator-system-load = <200000>; 225*4882a593Smuzhiyun regulator-allow-set-load; 226*4882a593Smuzhiyun }; 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun l21 { 229*4882a593Smuzhiyun regulator-min-microvolt = <2950000>; 230*4882a593Smuzhiyun regulator-max-microvolt = <2950000>; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun regulator-boot-on; 233*4882a593Smuzhiyun }; 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun l22 { 236*4882a593Smuzhiyun regulator-min-microvolt = <3000000>; 237*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 238*4882a593Smuzhiyun }; 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun l23 { 241*4882a593Smuzhiyun regulator-min-microvolt = <3000000>; 242*4882a593Smuzhiyun regulator-max-microvolt = <3000000>; 243*4882a593Smuzhiyun }; 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun l24 { 246*4882a593Smuzhiyun regulator-min-microvolt = <3075000>; 247*4882a593Smuzhiyun regulator-max-microvolt = <3075000>; 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun regulator-boot-on; 250*4882a593Smuzhiyun }; 251*4882a593Smuzhiyun }; 252*4882a593Smuzhiyun }; 253*4882a593Smuzhiyun }; 254*4882a593Smuzhiyun }; 255*4882a593Smuzhiyun}; 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun&soc { 258*4882a593Smuzhiyun serial@f991e000 { 259*4882a593Smuzhiyun status = "ok"; 260*4882a593Smuzhiyun }; 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun remoteproc@fb21b000 { 263*4882a593Smuzhiyun status = "ok"; 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun vddmx-supply = <&pm8841_s1>; 266*4882a593Smuzhiyun vddcx-supply = <&pm8841_s2>; 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun pinctrl-names = "default"; 269*4882a593Smuzhiyun pinctrl-0 = <&wcnss_pin_a>; 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun smd-edge { 272*4882a593Smuzhiyun qcom,remote-pid = <4>; 273*4882a593Smuzhiyun label = "pronto"; 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun wcnss { 276*4882a593Smuzhiyun status = "ok"; 277*4882a593Smuzhiyun }; 278*4882a593Smuzhiyun }; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun pinctrl@fd510000 { 282*4882a593Smuzhiyun sdhc1_pin_a: sdhc1-pin-active { 283*4882a593Smuzhiyun clk { 284*4882a593Smuzhiyun pins = "sdc1_clk"; 285*4882a593Smuzhiyun drive-strength = <16>; 286*4882a593Smuzhiyun bias-disable; 287*4882a593Smuzhiyun }; 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun cmd-data { 290*4882a593Smuzhiyun pins = "sdc1_cmd", "sdc1_data"; 291*4882a593Smuzhiyun drive-strength = <10>; 292*4882a593Smuzhiyun bias-pull-up; 293*4882a593Smuzhiyun }; 294*4882a593Smuzhiyun }; 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun sdhc2_pin_a: sdhc2-pin-active { 297*4882a593Smuzhiyun clk { 298*4882a593Smuzhiyun pins = "sdc2_clk"; 299*4882a593Smuzhiyun drive-strength = <10>; 300*4882a593Smuzhiyun bias-disable; 301*4882a593Smuzhiyun }; 302*4882a593Smuzhiyun 303*4882a593Smuzhiyun cmd-data { 304*4882a593Smuzhiyun pins = "sdc2_cmd", "sdc2_data"; 305*4882a593Smuzhiyun drive-strength = <6>; 306*4882a593Smuzhiyun bias-pull-up; 307*4882a593Smuzhiyun }; 308*4882a593Smuzhiyun }; 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun wcnss_pin_a: wcnss-pin-active { 311*4882a593Smuzhiyun wlan { 312*4882a593Smuzhiyun pins = "gpio36", "gpio37", "gpio38", "gpio39", "gpio40"; 313*4882a593Smuzhiyun function = "wlan"; 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun drive-strength = <6>; 316*4882a593Smuzhiyun bias-pull-down; 317*4882a593Smuzhiyun }; 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun bt { 320*4882a593Smuzhiyun pins = "gpio35", "gpio43", "gpio44"; 321*4882a593Smuzhiyun function = "bt"; 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun drive-strength = <2>; 324*4882a593Smuzhiyun bias-pull-down; 325*4882a593Smuzhiyun }; 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun fm { 328*4882a593Smuzhiyun pins = "gpio41", "gpio42"; 329*4882a593Smuzhiyun function = "fm"; 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun drive-strength = <2>; 332*4882a593Smuzhiyun bias-pull-down; 333*4882a593Smuzhiyun }; 334*4882a593Smuzhiyun }; 335*4882a593Smuzhiyun }; 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun sdhci@f9824900 { 338*4882a593Smuzhiyun status = "ok"; 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun vmmc-supply = <&pm8941_l20>; 341*4882a593Smuzhiyun vqmmc-supply = <&pm8941_s3>; 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun bus-width = <8>; 344*4882a593Smuzhiyun non-removable; 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun pinctrl-names = "default"; 347*4882a593Smuzhiyun pinctrl-0 = <&sdhc1_pin_a>; 348*4882a593Smuzhiyun }; 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun sdhci@f98a4900 { 351*4882a593Smuzhiyun status = "ok"; 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun vmmc-supply = <&pm8941_l21>; 354*4882a593Smuzhiyun vqmmc-supply = <&pm8941_l13>; 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun bus-width = <4>; 357*4882a593Smuzhiyun 358*4882a593Smuzhiyun pinctrl-names = "default"; 359*4882a593Smuzhiyun pinctrl-0 = <&sdhc2_pin_a>; 360*4882a593Smuzhiyun }; 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun usb@f9a55000 { 363*4882a593Smuzhiyun status = "ok"; 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun phys = <&usb_hs1_phy>; 366*4882a593Smuzhiyun phy-select = <&tcsr 0xb000 0>; 367*4882a593Smuzhiyun extcon = <&smbb>, <&usb_id>; 368*4882a593Smuzhiyun vbus-supply = <&chg_otg>; 369*4882a593Smuzhiyun 370*4882a593Smuzhiyun hnp-disable; 371*4882a593Smuzhiyun srp-disable; 372*4882a593Smuzhiyun adp-disable; 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun ulpi { 375*4882a593Smuzhiyun phy@a { 376*4882a593Smuzhiyun status = "ok"; 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun v1p8-supply = <&pm8941_l6>; 379*4882a593Smuzhiyun v3p3-supply = <&pm8941_l24>; 380*4882a593Smuzhiyun 381*4882a593Smuzhiyun extcon = <&smbb>; 382*4882a593Smuzhiyun qcom,init-seq = /bits/ 8 <0x1 0x64>; 383*4882a593Smuzhiyun }; 384*4882a593Smuzhiyun }; 385*4882a593Smuzhiyun }; 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun imem@fe805000 { 388*4882a593Smuzhiyun status = "okay"; 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun reboot-mode { 391*4882a593Smuzhiyun mode-normal = <0x77665501>; 392*4882a593Smuzhiyun mode-bootloader = <0x77665500>; 393*4882a593Smuzhiyun mode-recovery = <0x77665502>; 394*4882a593Smuzhiyun }; 395*4882a593Smuzhiyun }; 396*4882a593Smuzhiyun}; 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun&spmi_bus { 399*4882a593Smuzhiyun pm8941@0 { 400*4882a593Smuzhiyun gpios@c000 { 401*4882a593Smuzhiyun gpio_keys_pin_a: gpio-keys-active { 402*4882a593Smuzhiyun pins = "gpio1", "gpio2", "gpio5"; 403*4882a593Smuzhiyun function = "normal"; 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun bias-pull-up; 406*4882a593Smuzhiyun power-source = <PM8941_GPIO_S3>; 407*4882a593Smuzhiyun }; 408*4882a593Smuzhiyun }; 409*4882a593Smuzhiyun }; 410*4882a593Smuzhiyun}; 411