1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (c) 2020, Alexey Minnekhanov <alexey.min@gmail.com> 4 * Copyright (c) 2021, Dang Huynh <danct12@riseup.net> 5 */ 6 7/dts-v1/; 8 9#include "sdm660.dtsi" 10#include "pm660.dtsi" 11#include "pm660l.dtsi" 12#include <dt-bindings/input/input.h> 13#include <dt-bindings/input/gpio-keys.h> 14 15/ { 16 model = "Xiaomi Redmi Note 7"; 17 compatible = "xiaomi,lavender", "qcom,sdm660"; 18 chassis-type = "handset"; 19 20 aliases { 21 serial0 = &blsp1_uart2; 22 }; 23 24 chosen { 25 #address-cells = <2>; 26 #size-cells = <2>; 27 ranges; 28 29 stdout-path = "serial0:115200n8"; 30 31 framebuffer0: framebuffer@9d400000 { 32 compatible = "simple-framebuffer"; 33 reg = <0 0x9d400000 0 (1080 * 2340 * 4)>; 34 width = <1080>; 35 height = <2340>; 36 stride = <(1080 * 4)>; 37 format = "a8r8g8b8"; 38 }; 39 }; 40 41 vph_pwr: vph-pwr-regulator { 42 compatible = "regulator-fixed"; 43 regulator-name = "vph_pwr"; 44 regulator-min-microvolt = <3700000>; 45 regulator-max-microvolt = <3700000>; 46 47 regulator-always-on; 48 regulator-boot-on; 49 }; 50 51 gpio-keys { 52 compatible = "gpio-keys"; 53 54 volup { 55 label = "Volume Up"; 56 gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>; 57 linux,code = <KEY_VOLUMEUP>; 58 debounce-interval = <15>; 59 }; 60 }; 61 62 reserved-memory { 63 #address-cells = <2>; 64 #size-cells = <2>; 65 ranges; 66 67 ramoops@a0000000 { 68 compatible = "ramoops"; 69 reg = <0x0 0xa0000000 0x0 0x400000>; 70 console-size = <0x20000>; 71 record-size = <0x20000>; 72 ftrace-size = <0x0>; 73 pmsg-size = <0x20000>; 74 }; 75 76 framebuffer_mem: memory@9d400000 { 77 reg = <0x0 0x9d400000 0x0 0x23ff000>; 78 no-map; 79 }; 80 }; 81 82 /* 83 * Until we hook up type-c detection, we 84 * have to stick with this. But it works. 85 */ 86 extcon_usb: extcon-usb { 87 compatible = "linux,extcon-usb-gpio"; 88 id-gpio = <&tlmm 58 GPIO_ACTIVE_HIGH>; 89 }; 90}; 91 92&blsp1_uart2 { 93 status = "okay"; 94}; 95 96&pon_pwrkey { 97 status = "okay"; 98}; 99 100&pon_resin { 101 status = "okay"; 102 103 linux,code = <KEY_VOLUMEDOWN>; 104}; 105 106&qusb2phy { 107 status = "okay"; 108 109 vdd-supply = <&vreg_l1b_0p925>; 110 vdda-phy-dpdm-supply = <&vreg_l7b_3p125>; 111}; 112 113&rpm_requests { 114 pm660l-regulators { 115 compatible = "qcom,rpm-pm660l-regulators"; 116 117 vdd_s1-supply = <&vph_pwr>; 118 vdd_s2-supply = <&vph_pwr>; 119 vdd_s3_s4-supply = <&vph_pwr>; 120 vdd_s5-supply = <&vph_pwr>; 121 vdd_s6-supply = <&vph_pwr>; 122 123 vdd_l1_l9_l10-supply = <&vreg_s2b_1p05>; 124 vdd_l2-supply = <&vreg_bob>; 125 vdd_l3_l5_l7_l8-supply = <&vreg_bob>; 126 vdd_l4_l6-supply = <&vreg_bob>; 127 vdd_bob-supply = <&vph_pwr>; 128 129 vreg_s1b_1p125: s1 { 130 regulator-min-microvolt = <1125000>; 131 regulator-max-microvolt = <1125000>; 132 regulator-enable-ramp-delay = <200>; 133 }; 134 135 vreg_s2b_1p05: s2 { 136 regulator-min-microvolt = <1050000>; 137 regulator-max-microvolt = <1050000>; 138 regulator-enable-ramp-delay = <200>; 139 }; 140 141 /* LDOs */ 142 vreg_l1b_0p925: l1 { 143 regulator-min-microvolt = <800000>; 144 regulator-max-microvolt = <925000>; 145 regulator-enable-ramp-delay = <250>; 146 regulator-allow-set-load; 147 }; 148 149 /* SDHCI 3.3V signal doesn't seem to be supported. */ 150 vreg_l2b_2p95: l2 { 151 regulator-min-microvolt = <1648000>; 152 regulator-max-microvolt = <2696000>; 153 regulator-enable-ramp-delay = <250>; 154 regulator-allow-set-load; 155 }; 156 157 vreg_l3b_3p3: l3 { 158 regulator-min-microvolt = <1700000>; 159 regulator-max-microvolt = <3300000>; 160 regulator-enable-ramp-delay = <250>; 161 regulator-allow-set-load; 162 }; 163 164 vreg_l4b_2p95: l4 { 165 regulator-min-microvolt = <2944000>; 166 regulator-max-microvolt = <2952000>; 167 regulator-enable-ramp-delay = <250>; 168 169 regulator-min-microamp = <200>; 170 regulator-max-microamp = <600000>; 171 regulator-system-load = <570000>; 172 regulator-allow-set-load; 173 }; 174 175 /* 176 * Downstream specifies a range of 1721-3600mV, 177 * but the only assigned consumers are SDHCI2 VMMC 178 * and Coresight QPDI that both request pinned 2.95V. 179 * Tighten the range to 1.8-3.328 (closest to 3.3) to 180 * make the mmc driver happy. 181 */ 182 vreg_l5b_2p95: l5 { 183 regulator-min-microvolt = <1800000>; 184 regulator-max-microvolt = <3328000>; 185 regulator-enable-ramp-delay = <250>; 186 regulator-allow-set-load; 187 regulator-system-load = <800000>; 188 }; 189 190 vreg_l7b_3p125: l7 { 191 regulator-min-microvolt = <2700000>; 192 regulator-max-microvolt = <3125000>; 193 regulator-enable-ramp-delay = <250>; 194 }; 195 196 vreg_l8b_3p3: l8 { 197 regulator-min-microvolt = <3200000>; 198 regulator-max-microvolt = <3400000>; 199 regulator-enable-ramp-delay = <250>; 200 }; 201 202 vreg_bob: bob { 203 regulator-min-microvolt = <3300000>; 204 regulator-max-microvolt = <3600000>; 205 regulator-enable-ramp-delay = <500>; 206 }; 207 }; 208 209 pm660-regulators { 210 compatible = "qcom,rpm-pm660-regulators"; 211 212 vdd_s1-supply = <&vph_pwr>; 213 vdd_s2-supply = <&vph_pwr>; 214 vdd_s3-supply = <&vph_pwr>; 215 vdd_s4-supply = <&vph_pwr>; 216 vdd_s5-supply = <&vph_pwr>; 217 vdd_s6-supply = <&vph_pwr>; 218 219 vdd_l1_l6_l7-supply = <&vreg_s5a_1p35>; 220 vdd_l2_l3-supply = <&vreg_s2b_1p05>; 221 vdd_l5-supply = <&vreg_s2b_1p05>; 222 vdd_l8_l9_l10_l11_l12_l13_l14-supply = <&vreg_s4a_2p04>; 223 vdd_l15_l16_l17_l18_l19-supply = <&vreg_bob>; 224 225 /* 226 * S1A (FTAPC0), S2A (FTAPC1), S3A (HFAPC1) are managed 227 * by the Core Power Reduction hardened (CPRh) and the 228 * Operating State Manager (OSM) HW automatically. 229 */ 230 231 vreg_s4a_2p04: s4 { 232 regulator-min-microvolt = <1805000>; 233 regulator-max-microvolt = <2040000>; 234 regulator-enable-ramp-delay = <200>; 235 regulator-always-on; 236 }; 237 238 vreg_s5a_1p35: s5 { 239 regulator-min-microvolt = <1224000>; 240 regulator-max-microvolt = <1350000>; 241 regulator-enable-ramp-delay = <200>; 242 }; 243 244 vreg_s6a_0p87: s6 { 245 regulator-min-microvolt = <504000>; 246 regulator-max-microvolt = <992000>; 247 regulator-enable-ramp-delay = <150>; 248 }; 249 250 /* LDOs */ 251 vreg_l1a_1p225: l1 { 252 regulator-min-microvolt = <1150000>; 253 regulator-max-microvolt = <1250000>; 254 regulator-enable-ramp-delay = <250>; 255 regulator-allow-set-load; 256 }; 257 258 vreg_l2a_1p0: l2 { 259 regulator-min-microvolt = <950000>; 260 regulator-max-microvolt = <1010000>; 261 regulator-enable-ramp-delay = <250>; 262 }; 263 264 vreg_l3a_1p0: l3 { 265 regulator-min-microvolt = <950000>; 266 regulator-max-microvolt = <1010000>; 267 regulator-enable-ramp-delay = <250>; 268 }; 269 270 vreg_l5a_0p848: l5 { 271 regulator-min-microvolt = <525000>; 272 regulator-max-microvolt = <950000>; 273 regulator-enable-ramp-delay = <250>; 274 }; 275 276 vreg_l6a_1p3: l6 { 277 regulator-min-microvolt = <1200000>; 278 regulator-max-microvolt = <1370000>; 279 regulator-allow-set-load; 280 regulator-enable-ramp-delay = <250>; 281 }; 282 283 vreg_l7a_1p2: l7 { 284 regulator-min-microvolt = <1200000>; 285 regulator-max-microvolt = <1200000>; 286 regulator-enable-ramp-delay = <250>; 287 }; 288 289 vreg_l8a_1p8: l8 { 290 regulator-min-microvolt = <1750000>; 291 regulator-max-microvolt = <1800000>; 292 regulator-enable-ramp-delay = <250>; 293 regulator-system-load = <325000>; 294 regulator-allow-set-load; 295 }; 296 297 vreg_l9a_1p8: l9 { 298 regulator-min-microvolt = <1750000>; 299 regulator-max-microvolt = <1900000>; 300 regulator-enable-ramp-delay = <250>; 301 regulator-allow-set-load; 302 }; 303 304 vreg_l10a_1p8: l10 { 305 regulator-min-microvolt = <1780000>; 306 regulator-max-microvolt = <1950000>; 307 regulator-enable-ramp-delay = <250>; 308 regulator-allow-set-load; 309 }; 310 311 vreg_l11a_1p8: l11 { 312 regulator-min-microvolt = <1780000>; 313 regulator-max-microvolt = <1950000>; 314 regulator-enable-ramp-delay = <250>; 315 }; 316 317 vreg_l12a_1p8: l12 { 318 regulator-min-microvolt = <1780000>; 319 regulator-max-microvolt = <1950000>; 320 regulator-enable-ramp-delay = <250>; 321 }; 322 323 /* This gives power to the LPDDR4: never turn it off! */ 324 vreg_l13a_1p8: l13 { 325 regulator-min-microvolt = <1780000>; 326 regulator-max-microvolt = <1950000>; 327 regulator-enable-ramp-delay = <250>; 328 regulator-boot-on; 329 regulator-always-on; 330 }; 331 332 vreg_l14a_1p8: l14 { 333 regulator-min-microvolt = <1710000>; 334 regulator-max-microvolt = <1900000>; 335 regulator-enable-ramp-delay = <250>; 336 }; 337 338 vreg_l15a_1p8: l15 { 339 regulator-min-microvolt = <1650000>; 340 regulator-max-microvolt = <2950000>; 341 regulator-enable-ramp-delay = <250>; 342 }; 343 344 vreg_l16a_2p7: l16 { 345 regulator-min-microvolt = <2800000>; 346 regulator-max-microvolt = <2800000>; 347 regulator-enable-ramp-delay = <250>; 348 regulator-always-on; 349 }; 350 351 vreg_l17a_1p8: l17 { 352 regulator-min-microvolt = <1648000>; 353 regulator-max-microvolt = <2952000>; 354 regulator-enable-ramp-delay = <250>; 355 }; 356 357 vreg_l19a_3p3: l19 { 358 regulator-min-microvolt = <3312000>; 359 regulator-max-microvolt = <3400000>; 360 regulator-enable-ramp-delay = <250>; 361 regulator-allow-set-load; 362 }; 363 }; 364}; 365 366&sdhc_1 { 367 status = "okay"; 368 supports-cqe; 369 370 mmc-hs200-1_8v; 371 mmc-hs400-1_8v; 372 mmc-hs400-enhanced-strobe; 373 374 vmmc-supply = <&vreg_l4b_2p95>; 375 vqmmc-supply = <&vreg_l8a_1p8>; 376}; 377 378&sdhc_2 { 379 status = "okay"; 380 381 vmmc-supply = <&vreg_l5b_2p95>; 382 vqmmc-supply = <&vreg_l2b_2p95>; 383}; 384 385&tlmm { 386 gpio-reserved-ranges = <8 4>; 387}; 388 389&usb3 { 390 status = "okay"; 391}; 392 393&usb3_dwc3 { 394 dr_mode = "peripheral"; 395 extcon = <&extcon_usb>; 396}; 397