1*4882a593Smuzhiyun// SPDX-License-Identifier: BSD-3-Clause 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (c) 2020, Konrad Dybcio 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun/dts-v1/; 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun#include "msm8992.dtsi" 9*4882a593Smuzhiyun#include "pm8994.dtsi" 10*4882a593Smuzhiyun#include "pmi8994.dtsi" 11*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 12*4882a593Smuzhiyun#include <dt-bindings/input/gpio-keys.h> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/ { 15*4882a593Smuzhiyun model = "Xiaomi Mi 4C"; 16*4882a593Smuzhiyun compatible = "xiaomi,libra", "qcom,msm8992"; 17*4882a593Smuzhiyun /* required for bootloader to select correct board */ 18*4882a593Smuzhiyun qcom,msm-id = <251 0 252 0>; 19*4882a593Smuzhiyun qcom,pmic-id = <65545 65546 0 0>; 20*4882a593Smuzhiyun qcom,board-id = <12 0>; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* This enables graphical output via bootloader-enabled display */ 23*4882a593Smuzhiyun chosen { 24*4882a593Smuzhiyun bootargs = "earlycon=tty0 console=tty0"; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #address-cells = <2>; 27*4882a593Smuzhiyun #size-cells = <2>; 28*4882a593Smuzhiyun ranges; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun framebuffer0: framebuffer@3404000 { 31*4882a593Smuzhiyun status= "okay"; 32*4882a593Smuzhiyun compatible = "simple-framebuffer"; 33*4882a593Smuzhiyun reg = <0 0x3404000 0 (1080 * 1920 * 3)>; 34*4882a593Smuzhiyun width = <1080>; 35*4882a593Smuzhiyun height = <1920>; 36*4882a593Smuzhiyun stride = <(1080 * 3)>; 37*4882a593Smuzhiyun format = "r8g8b8"; 38*4882a593Smuzhiyun }; 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun gpio_keys { 42*4882a593Smuzhiyun compatible = "gpio-keys"; 43*4882a593Smuzhiyun input-name = "gpio-keys"; 44*4882a593Smuzhiyun #address-cells = <1>; 45*4882a593Smuzhiyun #size-cells = <0>; 46*4882a593Smuzhiyun autorepeat; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun button@0 { 49*4882a593Smuzhiyun label = "Volume Up"; 50*4882a593Smuzhiyun gpios = <&pm8994_gpios 3 GPIO_ACTIVE_LOW>; 51*4882a593Smuzhiyun linux,input-type = <1>; 52*4882a593Smuzhiyun linux,code = <KEY_VOLUMEUP>; 53*4882a593Smuzhiyun wakeup-source; 54*4882a593Smuzhiyun debounce-interval = <15>; 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun reserved-memory { 59*4882a593Smuzhiyun #address-cells = <2>; 60*4882a593Smuzhiyun #size-cells = <2>; 61*4882a593Smuzhiyun ranges; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /* This is for getting crash logs using Android downstream kernels */ 64*4882a593Smuzhiyun ramoops@dfc00000 { 65*4882a593Smuzhiyun compatible = "ramoops"; 66*4882a593Smuzhiyun reg = <0x0 0xdfc00000 0x0 0x40000>; 67*4882a593Smuzhiyun console-size = <0x10000>; 68*4882a593Smuzhiyun record-size = <0x10000>; 69*4882a593Smuzhiyun ftrace-size = <0x10000>; 70*4882a593Smuzhiyun pmsg-size = <0x20000>; 71*4882a593Smuzhiyun }; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun continuous_splash: framebuffer@3401000{ 74*4882a593Smuzhiyun reg = <0x0 0x3401000 0x0 0x2200000>; 75*4882a593Smuzhiyun no-map; 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun dfps_data_mem: dfps_data_mem@3400000 { 79*4882a593Smuzhiyun reg = <0x0 0x3400000 0x0 0x1000>; 80*4882a593Smuzhiyun no-map; 81*4882a593Smuzhiyun }; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun peripheral_region: peripheral_region@7400000 { 84*4882a593Smuzhiyun reg = <0x0 0x7400000 0x0 0x1c00000>; 85*4882a593Smuzhiyun no-map; 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun modem_region: modem_region@9000000 { 89*4882a593Smuzhiyun reg = <0x0 0x9000000 0x0 0x5a00000>; 90*4882a593Smuzhiyun no-map; 91*4882a593Smuzhiyun }; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun tzapp: modem_region@ea00000 { 94*4882a593Smuzhiyun reg = <0x0 0xea00000 0x0 0x1900000>; 95*4882a593Smuzhiyun no-map; 96*4882a593Smuzhiyun }; 97*4882a593Smuzhiyun }; 98*4882a593Smuzhiyun}; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun&blsp_i2c2 { 101*4882a593Smuzhiyun status = "okay"; 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun /* Atmel or Synaptics touchscreen */ 104*4882a593Smuzhiyun}; 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun&blsp_i2c5 { 107*4882a593Smuzhiyun status = "okay"; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun /* Silabs si4705 FM transmitter */ 110*4882a593Smuzhiyun}; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun&blsp_i2c6 { 113*4882a593Smuzhiyun status = "okay"; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun /* NCI NFC, 116*4882a593Smuzhiyun * TI USB320 Type-C controller, 117*4882a593Smuzhiyun * Pericom 30216a USB (de)mux switch 118*4882a593Smuzhiyun */ 119*4882a593Smuzhiyun}; 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun&blsp_i2c7 { 122*4882a593Smuzhiyun status = "okay"; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /* cm36686 proximity and ambient light sensor */ 125*4882a593Smuzhiyun}; 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun&blsp_i2c13 { 128*4882a593Smuzhiyun status = "okay"; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun /* ST lsm6db0 gyro/accelerometer */ 131*4882a593Smuzhiyun}; 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun&blsp2_uart2 { 134*4882a593Smuzhiyun status = "okay"; 135*4882a593Smuzhiyun}; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun&rpm_requests { 138*4882a593Smuzhiyun pm8994-regulators { 139*4882a593Smuzhiyun compatible = "qcom,rpm-pm8994-regulators"; 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun vdd_l1-supply = <&pm8994_s7>; 142*4882a593Smuzhiyun vdd_l2_26_28-supply = <&pm8994_s3>; 143*4882a593Smuzhiyun vdd_l3_11-supply = <&pm8994_s3>; 144*4882a593Smuzhiyun vdd_l4_27_31-supply = <&pm8994_s3>; 145*4882a593Smuzhiyun vdd_l5_7-supply = <&pm8994_s3>; 146*4882a593Smuzhiyun vdd_l6_12_32-supply = <&pm8994_s5>; 147*4882a593Smuzhiyun vdd_l8_16_30-supply = <&vreg_vph_pwr>; 148*4882a593Smuzhiyun vdd_l9_10_18_22-supply = <&vreg_vph_pwr>; 149*4882a593Smuzhiyun vdd_l13_19_23_24-supply = <&vreg_vph_pwr>; 150*4882a593Smuzhiyun vdd_l14_15-supply = <&pm8994_s5>; 151*4882a593Smuzhiyun vdd_l17_29-supply = <&vreg_vph_pwr>; 152*4882a593Smuzhiyun vdd_l20_21-supply = <&vreg_vph_pwr>; 153*4882a593Smuzhiyun vdd_l25-supply = <&pm8994_s5>; 154*4882a593Smuzhiyun vdd_lvs1_2-supply = <&pm8994_s4>; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun pm8994_s1: s1 { 157*4882a593Smuzhiyun /* unused */ 158*4882a593Smuzhiyun status = "disabled"; 159*4882a593Smuzhiyun }; 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun pm8994_s2: s2 { 162*4882a593Smuzhiyun /* unused */ 163*4882a593Smuzhiyun status = "disabled"; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun pm8994_s3: s3 { 167*4882a593Smuzhiyun regulator-min-microvolt = <1300000>; 168*4882a593Smuzhiyun regulator-max-microvolt = <1300000>; 169*4882a593Smuzhiyun }; 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun pm8994_s4: s4 { 172*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 173*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 174*4882a593Smuzhiyun regulator-allow-set-load; 175*4882a593Smuzhiyun regulator-always-on; 176*4882a593Smuzhiyun regulator-system-load = <325000>; 177*4882a593Smuzhiyun }; 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun pm8994_s5: s5 { 180*4882a593Smuzhiyun regulator-min-microvolt = <2150000>; 181*4882a593Smuzhiyun regulator-max-microvolt = <2150000>; 182*4882a593Smuzhiyun }; 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun pm8994_s7: s7 { 185*4882a593Smuzhiyun regulator-min-microvolt = <1000000>; 186*4882a593Smuzhiyun regulator-max-microvolt = <1000000>; 187*4882a593Smuzhiyun }; 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun pm8994_l1: l1 { 190*4882a593Smuzhiyun regulator-min-microvolt = <1000000>; 191*4882a593Smuzhiyun regulator-max-microvolt = <1000000>; 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun pm8994_l2: l2 { 195*4882a593Smuzhiyun regulator-min-microvolt = <1250000>; 196*4882a593Smuzhiyun regulator-max-microvolt = <1250000>; 197*4882a593Smuzhiyun }; 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun pm8994_l3: l3 { 200*4882a593Smuzhiyun regulator-min-microvolt = <1200000>; 201*4882a593Smuzhiyun regulator-max-microvolt = <1200000>; 202*4882a593Smuzhiyun }; 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun pm8994_l4: l4 { 205*4882a593Smuzhiyun regulator-min-microvolt = <1225000>; 206*4882a593Smuzhiyun regulator-max-microvolt = <1225000>; 207*4882a593Smuzhiyun }; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun pm8994_l5: l5 { 210*4882a593Smuzhiyun /* unused */ 211*4882a593Smuzhiyun status = "disabled"; 212*4882a593Smuzhiyun }; 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun pm8994_l6: l6 { 215*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 216*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 217*4882a593Smuzhiyun }; 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun pm8994_l7: l7 { 220*4882a593Smuzhiyun /* unused */ 221*4882a593Smuzhiyun status = "disabled"; 222*4882a593Smuzhiyun }; 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun pm8994_l8: l8 { 225*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 226*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 227*4882a593Smuzhiyun }; 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun pm8994_l9: l9 { 230*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 231*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 232*4882a593Smuzhiyun }; 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun pm8994_l10: l10 { 235*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 236*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 237*4882a593Smuzhiyun }; 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun pm8994_l11: l11 { 240*4882a593Smuzhiyun regulator-min-microvolt = <1200000>; 241*4882a593Smuzhiyun regulator-max-microvolt = <1200000>; 242*4882a593Smuzhiyun }; 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun pm8994_l12: l12 { 245*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 246*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 247*4882a593Smuzhiyun }; 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun pm8994_l13: l13 { 250*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 251*4882a593Smuzhiyun regulator-max-microvolt = <2950000>; 252*4882a593Smuzhiyun }; 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun pm8994_l14: l14 { 255*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 256*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 257*4882a593Smuzhiyun }; 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun pm8994_l15: l15 { 260*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 261*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 262*4882a593Smuzhiyun }; 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun pm8994_l16: l16 { 265*4882a593Smuzhiyun regulator-min-microvolt = <2700000>; 266*4882a593Smuzhiyun regulator-max-microvolt = <2700000>; 267*4882a593Smuzhiyun }; 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun pm8994_l17: l17 { 270*4882a593Smuzhiyun regulator-min-microvolt = <2700000>; 271*4882a593Smuzhiyun regulator-max-microvolt = <2700000>; 272*4882a593Smuzhiyun }; 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun pm8994_l18: l18 { 275*4882a593Smuzhiyun regulator-min-microvolt = <2850000>; 276*4882a593Smuzhiyun regulator-max-microvolt = <2850000>; 277*4882a593Smuzhiyun regulator-always-on; 278*4882a593Smuzhiyun }; 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun pm8994_l19: l19 { 281*4882a593Smuzhiyun regulator-min-microvolt = <2800000>; 282*4882a593Smuzhiyun regulator-max-microvolt = <2800000>; 283*4882a593Smuzhiyun }; 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun pm8994_l20: l20 { 286*4882a593Smuzhiyun regulator-min-microvolt = <2950000>; 287*4882a593Smuzhiyun regulator-max-microvolt = <2950000>; 288*4882a593Smuzhiyun regulator-always-on; 289*4882a593Smuzhiyun regulator-boot-on; 290*4882a593Smuzhiyun regulator-allow-set-load; 291*4882a593Smuzhiyun regulator-system-load = <570000>; 292*4882a593Smuzhiyun }; 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun pm8994_l21: l21 { 295*4882a593Smuzhiyun regulator-min-microvolt = <2950000>; 296*4882a593Smuzhiyun regulator-max-microvolt = <2950000>; 297*4882a593Smuzhiyun regulator-always-on; 298*4882a593Smuzhiyun }; 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun pm8994_l22: l22 { 301*4882a593Smuzhiyun regulator-min-microvolt = <3000000>; 302*4882a593Smuzhiyun regulator-max-microvolt = <3000000>; 303*4882a593Smuzhiyun }; 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun pm8994_l23: l23 { 306*4882a593Smuzhiyun regulator-min-microvolt = <2800000>; 307*4882a593Smuzhiyun regulator-max-microvolt = <2800000>; 308*4882a593Smuzhiyun }; 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun pm8994_l24: l24 { 311*4882a593Smuzhiyun regulator-min-microvolt = <3075000>; 312*4882a593Smuzhiyun regulator-max-microvolt = <3150000>; 313*4882a593Smuzhiyun }; 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun pm8994_l25: l25 { 316*4882a593Smuzhiyun regulator-min-microvolt = <1000000>; 317*4882a593Smuzhiyun regulator-max-microvolt = <1000000>; 318*4882a593Smuzhiyun }; 319*4882a593Smuzhiyun 320*4882a593Smuzhiyun pm8994_l26: l26 { 321*4882a593Smuzhiyun regulator-min-microvolt = <987500>; 322*4882a593Smuzhiyun regulator-max-microvolt = <987500>; 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun }; 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun pm8994_l27: l27 { 327*4882a593Smuzhiyun regulator-min-microvolt = <1050000>; 328*4882a593Smuzhiyun regulator-max-microvolt = <1050000>; 329*4882a593Smuzhiyun }; 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun pm8994_l28: l28 { 332*4882a593Smuzhiyun regulator-min-microvolt = <1000000>; 333*4882a593Smuzhiyun regulator-max-microvolt = <1000000>; 334*4882a593Smuzhiyun }; 335*4882a593Smuzhiyun 336*4882a593Smuzhiyun pm8994_l29: l29 { 337*4882a593Smuzhiyun regulator-min-microvolt = <2800000>; 338*4882a593Smuzhiyun regulator-max-microvolt = <2800000>; 339*4882a593Smuzhiyun }; 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun pm8994_l30: l30 { 342*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 343*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 344*4882a593Smuzhiyun }; 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun pm8994_l31: l31 { 347*4882a593Smuzhiyun regulator-min-microvolt = <1262500>; 348*4882a593Smuzhiyun regulator-max-microvolt = <1262500>; 349*4882a593Smuzhiyun }; 350*4882a593Smuzhiyun 351*4882a593Smuzhiyun pm8994_l32: l32 { 352*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 353*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 354*4882a593Smuzhiyun }; 355*4882a593Smuzhiyun }; 356*4882a593Smuzhiyun}; 357*4882a593Smuzhiyun 358*4882a593Smuzhiyun&sdhc_1 { 359*4882a593Smuzhiyun status = "okay"; 360*4882a593Smuzhiyun 361*4882a593Smuzhiyun mmc-hs400-1_8v; 362*4882a593Smuzhiyun vmmc-supply = <&pm8994_l20>; 363*4882a593Smuzhiyun vqmmc-supply = <&pm8994_s4>; 364*4882a593Smuzhiyun}; 365