Home | History | Annotate | Line # | Download | only in qcom
      1 // SPDX-License-Identifier: BSD-3-Clause
      2 /*
      3  * Copyright (c) 2020, Konrad Dybcio <konrad.dybcio (a] somainline.org>
      4  * Copyright (c) 2020, AngeloGioacchino Del Regno
      5  *                     <angelogioacchino.delregno (a] somainline.org>
      6  */
      7 
      8 #include "pm660.dtsi"
      9 #include "pm660l.dtsi"
     10 #include <dt-bindings/gpio/gpio.h>
     11 #include <dt-bindings/input/input.h>
     12 #include <dt-bindings/input/gpio-keys.h>
     13 
     14 / {
     15 	/* required for bootloader to select correct board */
     16 	qcom,msm-id = <318 0>;
     17 	qcom,board-id = <8 1>;
     18 	qcom,pmic-id = <0x1001b 0x101011a 0x00 0x00 0x1001b 0x201011a 0x00 0x00>;
     19 
     20 	/* This part enables graphical output via bootloader-enabled display */
     21 	chosen {
     22 		bootargs = "earlycon=tty0 console=tty0";
     23 
     24 		#address-cells = <2>;
     25 		#size-cells = <2>;
     26 		ranges;
     27 
     28 		stdout-path = "framebuffer0";
     29 
     30 		framebuffer0: framebuffer@9d400000 {
     31 			compatible = "simple-framebuffer";
     32 			reg = <0 0x9d400000 0 (1920 * 1080 * 4)>;
     33 			width = <1080>;
     34 			height = <1920>;
     35 			stride = <(1080 * 4)>;
     36 			format = "a8r8g8b8";
     37 			status= "okay";
     38 		};
     39 	};
     40 
     41 	board_vbat: vbat-regulator {
     42 		compatible = "regulator-fixed";
     43 		regulator-name = "VBAT";
     44 
     45 		regulator-min-microvolt = <4000000>;
     46 		regulator-max-microvolt = <4000000>;
     47 		regulator-always-on;
     48 		regulator-boot-on;
     49 	};
     50 
     51 	vph_pwr: vph-pwr-regulator {
     52 		compatible = "regulator-fixed";
     53 		regulator-name = "vph_pwr";
     54 
     55 		regulator-always-on;
     56 		regulator-boot-on;
     57 	};
     58 
     59 	cam_vdig_imx300_219_vreg: cam_vdig_imx300_219_vreg {
     60 		compatible = "regulator-fixed";
     61 		regulator-name = "cam_vdig_imx300_219_vreg";
     62 		startup-delay-us = <0>;
     63 		enable-active-high;
     64 		gpio = <&tlmm 52 GPIO_ACTIVE_HIGH>;
     65 		pinctrl-names = "default";
     66 		pinctrl-0 = <&cam_vdig_default>;
     67 	};
     68 
     69 	cam_vana_front_vreg: cam_vana_front_vreg {
     70 		compatible = "regulator-fixed";
     71 		regulator-name = "cam_vana_front_vreg";
     72 		startup-delay-us = <0>;
     73 		enable-active-high;
     74 		gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
     75 		pinctrl-names = "default";
     76 		pinctrl-0 = <&imx219_vana_default>;
     77 	};
     78 
     79 	cam_vana_rear_vreg: cam_vana_rear_vreg {
     80 		compatible = "regulator-fixed";
     81 		regulator-name = "cam_vana_rear_vreg";
     82 		startup-delay-us = <0>;
     83 		enable-active-high;
     84 		gpio = <&tlmm 50 GPIO_ACTIVE_HIGH>;
     85 		regulator-always-on;
     86 		pinctrl-names = "default";
     87 		pinctrl-0 = <&imx300_vana_default>;
     88 	};
     89 
     90 	gpio_keys {
     91 		status = "okay";
     92 		compatible = "gpio-keys";
     93 		input-name = "gpio-keys";
     94 		#address-cells = <1>;
     95 		#size-cells = <0>;
     96 
     97 		camera_focus {
     98 			label = "Camera Focus";
     99 			gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
    100 			linux,input-type = <1>;
    101 			linux,code = <KEY_CAMERA_FOCUS>;
    102 			debounce-interval = <15>;
    103 		};
    104 
    105 		camera_snapshot {
    106 			label = "Camera Snapshot";
    107 			gpios = <&tlmm 113 GPIO_ACTIVE_LOW>;
    108 			linux,input-type = <1>;
    109 			linux,code = <KEY_CAMERA>;
    110 			debounce-interval = <15>;
    111 		};
    112 
    113 		vol_down {
    114 			label = "Volume Down";
    115 			gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>;
    116 			linux,input-type = <1>;
    117 			linux,code = <KEY_VOLUMEDOWN>;
    118 			gpio-key,wakeup;
    119 			debounce-interval = <15>;
    120 		};
    121 	};
    122 
    123 	reserved-memory {
    124 		#address-cells = <2>;
    125 		#size-cells = <2>;
    126 		ranges;
    127 
    128 		ramoops@ffc00000 {
    129 			compatible = "ramoops";
    130 			reg = <0x0 0xffc00000 0x0 0x100000>;
    131 			record-size = <0x10000>;
    132 			console-size = <0x60000>;
    133 			ftrace-size = <0x10000>;
    134 			pmsg-size = <0x20000>;
    135 			ecc-size = <16>;
    136 			status = "okay";
    137 		};
    138 
    139 		debug_region@ffb00000 {
    140 			reg = <0x00 0xffb00000 0x00 0x100000>;
    141 			no-map;
    142 		};
    143 
    144 		removed_region@85800000 {
    145 			reg = <0x00 0x85800000 0x00 0x3700000>;
    146 			no-map;
    147 		};
    148 	};
    149 
    150 	/*
    151 	 * Until we hook up type-c detection, we
    152 	 * have to stick with this. But it works.
    153 	 */
    154 	extcon_usb: extcon-usb {
    155 		compatible = "linux,extcon-usb-gpio";
    156 		id-gpio = <&tlmm 58 GPIO_ACTIVE_HIGH>;
    157 	};
    158 };
    159 
    160 &adsp_pil {
    161 	firmware-name = "adsp.mdt";
    162 };
    163 
    164 &blsp_i2c1 {
    165 	status = "okay";
    166 
    167 	touchscreen: synaptics-rmi4-i2c@70 {
    168 		compatible = "syna,rmi4-i2c";
    169 		reg = <0x70>;
    170 		#address-cells = <1>;
    171 		#size-cells = <0>;
    172 		interrupts-extended = <&tlmm 45 0x2008>;
    173 
    174 		pinctrl-names = "default";
    175 		pinctrl-0 = <&ts_int_active &ts_lcd_id_active>;
    176 
    177 		syna,reset-delay-ms = <200>;
    178 		syna,startup-delay-ms = <220>;
    179 
    180 		rmi4-f01@1 {
    181 			reg = <0x01>;
    182 			syna,nosleep-mode = <1>;
    183 		};
    184 
    185 		rmi4-f11@11 {
    186 			reg = <0x11>;
    187 			syna,sensor-type = <1>;
    188 		};
    189 	};
    190 };
    191 
    192 &blsp_i2c2 {
    193 	status = "okay";
    194 
    195 	/* SMB1351 charger */
    196 };
    197 
    198 /* I2C3, 4, 5, 7 and 8 are disabled on this board. */
    199 
    200 &blsp_i2c6 {
    201 	status = "okay";
    202 
    203 	/* NXP NFC */
    204 };
    205 
    206 &blsp1_uart2 {
    207 	status = "okay";
    208 
    209 	/* MSM serial console */
    210 };
    211 
    212 &blsp2_uart1 {
    213 	status = "okay";
    214 
    215 	/* HCI Bluetooth */
    216 };
    217 
    218 &pon {
    219 	volup {
    220 		compatible = "qcom,pm8941-resin";
    221 		interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
    222 		debounce = <15625>;
    223 		bias-pull-up;
    224 		linux,code = <KEY_VOLUMEUP>;
    225 	};
    226 };
    227 
    228 &qusb2phy {
    229 	status = "okay";
    230 
    231 	vdd-supply = <&vreg_l1b_0p925>;
    232 	vdda-pll-supply = <&vreg_l10a_1p8>;
    233 	vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
    234 };
    235 
    236 &rpm_requests {
    237 	pm660l-regulators {
    238 		compatible = "qcom,rpm-pm660l-regulators";
    239 
    240 		vdd_s1-supply = <&vph_pwr>;
    241 		vdd_s2-supply = <&vph_pwr>;
    242 		vdd_s3_s4-supply = <&vph_pwr>;
    243 		vdd_s5-supply = <&vph_pwr>;
    244 		vdd_s6-supply = <&vph_pwr>;
    245 
    246 		vdd_l1_l9_l10-supply = <&vreg_s2b_1p05>;
    247 		vdd_l2-supply = <&vreg_bob>;
    248 		vdd_l3_l5_l7_l8-supply = <&vreg_bob>;
    249 		vdd_l4_l6-supply = <&vreg_bob>;
    250 		vdd_bob-supply = <&vph_pwr>;
    251 
    252 		vreg_s1b_1p125: s1 {
    253 			regulator-min-microvolt = <1125000>;
    254 			regulator-max-microvolt = <1125000>;
    255 			regulator-enable-ramp-delay = <200>;
    256 			regulator-ramp-delay = <0>;
    257 		};
    258 
    259 		vreg_s2b_1p05: s2 {
    260 			regulator-min-microvolt = <1050000>;
    261 			regulator-max-microvolt = <1050000>;
    262 			regulator-enable-ramp-delay = <200>;
    263 			regulator-ramp-delay = <0>;
    264 		};
    265 
    266 		/*
    267 		 * At least on Nile's configuration, S3B/S4B (VDD_CX) and
    268 		 * S5B (VDD_MX) are managed only through RPM Power Domains.
    269 		 * Trying to set a voltage on the main supply will create
    270 		 * havoc and freeze the SoC.
    271 		 * In any case, reference voltages for these regulators are:
    272 		 * S3B/S4B: 0.870V
    273 		 * S5B: 0.915V
    274 		 */
    275 
    276 		/* LDOs */
    277 		vreg_l1b_0p925: l1 {
    278 			regulator-min-microvolt = <920000>;
    279 			regulator-max-microvolt = <928000>;
    280 			regulator-enable-ramp-delay = <250>;
    281 			regulator-ramp-delay = <0>;
    282 			regulator-allow-set-load;
    283 		};
    284 
    285 		vreg_l2b_2p95: l2 {
    286 			/*
    287 			 * This regulator supports 1.648 - 3.104V on this board
    288 			 * but we set a max voltage of anything less than 2.7V
    289 			 * to satisfy a condition in sdhci.c that will disable
    290 			 * 3.3V SDHCI signaling, which happens to be not really
    291 			 * supported on the Xperia Nile/Ganges platform.
    292 			 */
    293 			regulator-min-microvolt = <1648000>;
    294 			regulator-max-microvolt = <2696000>;
    295 			regulator-enable-ramp-delay = <250>;
    296 			regulator-ramp-delay = <0>;
    297 			regulator-allow-set-load;
    298 		};
    299 
    300 		vreg_l3b_3p0: l3 {
    301 			regulator-min-microvolt = <2800000>;
    302 			regulator-max-microvolt = <2800000>;
    303 			regulator-enable-ramp-delay = <250>;
    304 			regulator-ramp-delay = <0>;
    305 			regulator-min-microamp = <200>;
    306 			regulator-max-microamp = <600000>;
    307 			regulator-system-load = <100000>;
    308 			regulator-allow-set-load;
    309 		};
    310 
    311 		vreg_l4b_29p5: l4 {
    312 			regulator-min-microvolt = <2944000>;
    313 			regulator-max-microvolt = <2952000>;
    314 			regulator-enable-ramp-delay = <250>;
    315 			regulator-ramp-delay = <0>;
    316 
    317 			regulator-min-microamp = <200>;
    318 			regulator-max-microamp = <600000>;
    319 			regulator-system-load = <570000>;
    320 			regulator-allow-set-load;
    321 		};
    322 
    323 		/*
    324 		 * Downstream specifies a range of 1721-3600mV,
    325 		 * but the only assigned consumers are SDHCI2 VMMC
    326 		 * and Coresight QPDI that both request pinned 2.95V.
    327 		 * Tighten the range to 1.8-3.328 (closest to 3.3) to
    328 		 * make the mmc driver happy.
    329 		 */
    330 		vreg_l5b_29p5: l5 {
    331 			regulator-min-microvolt = <1800000>;
    332 			regulator-max-microvolt = <3328000>;
    333 			regulator-enable-ramp-delay = <250>;
    334 			regulator-ramp-delay = <0>;
    335 			regulator-allow-set-load;
    336 			regulator-system-load = <800000>;
    337 		};
    338 
    339 		vreg_l6b_3p3: l6 {
    340 			regulator-min-microvolt = <1704000>;
    341 			regulator-max-microvolt = <3312000>;
    342 			regulator-enable-ramp-delay = <250>;
    343 			regulator-ramp-delay = <0>;
    344 		};
    345 
    346 		vreg_l7b_3p125: l7 {
    347 			regulator-min-microvolt = <2704000>;
    348 			regulator-max-microvolt = <3128000>;
    349 			regulator-enable-ramp-delay = <250>;
    350 			regulator-ramp-delay = <0>;
    351 		};
    352 
    353 		vreg_l8b_3p3: l8 {
    354 			regulator-min-microvolt = <2800000>;
    355 			regulator-max-microvolt = <3400000>;
    356 			regulator-enable-ramp-delay = <250>;
    357 			regulator-ramp-delay = <0>;
    358 		};
    359 
    360 		/* L9B (870mV) is currently unused */
    361 		/* L10B (915mV) is currently unused */
    362 
    363 		vreg_bob: bob {
    364 			regulator-min-microvolt = <3304000>;
    365 			regulator-max-microvolt = <3624000>;
    366 			regulator-enable-ramp-delay = <500>;
    367 			regulator-ramp-delay = <0>;
    368 		};
    369 	};
    370 
    371 	pm660-regulators {
    372 		compatible = "qcom,rpm-pm660-regulators";
    373 
    374 		vdd_s1-supply = <&vph_pwr>;
    375 		vdd_s2-supply = <&vph_pwr>;
    376 		vdd_s3-supply = <&vph_pwr>;
    377 		vdd_s4-supply = <&vph_pwr>;
    378 		vdd_s5-supply = <&vph_pwr>;
    379 		vdd_s6-supply = <&vph_pwr>;
    380 
    381 		vdd_l1_l6_l7-supply = <&vreg_s5a_1p35>;
    382 		vdd_l2_l3-supply = <&vreg_s2b_1p05>;
    383 		vdd_l5-supply = <&vreg_s2b_1p05>;
    384 		vdd_l8_l9_l10_l11_l12_l13_l14-supply = <&vreg_s4a_2p04>;
    385 		vdd_l15_l16_l17_l18_l19-supply = <&vreg_bob>;
    386 
    387 		/*
    388 		 * S1A (FTAPC0), S2A (FTAPC1), S3A (HFAPC1) are managed
    389 		 * by the Core Power Reduction hardened (CPRh) and the
    390 		 * Operating State Manager (OSM) HW automatically.
    391 		 */
    392 
    393 		vreg_s4a_2p04: s4 {
    394 			regulator-min-microvolt = <2040000>;
    395 			regulator-max-microvolt = <2040000>;
    396 			regulator-enable-ramp-delay = <200>;
    397 			regulator-ramp-delay = <0>;
    398 			regulator-always-on;
    399 		};
    400 
    401 		vreg_s5a_1p35: s5 {
    402 			regulator-min-microvolt = <1224000>;
    403 			regulator-max-microvolt = <1350000>;
    404 			regulator-enable-ramp-delay = <200>;
    405 			regulator-ramp-delay = <0>;
    406 		};
    407 
    408 		vreg_s6a_0p87: s6 {
    409 			regulator-min-microvolt = <504000>;
    410 			regulator-max-microvolt = <992000>;
    411 			regulator-enable-ramp-delay = <150>;
    412 			regulator-ramp-delay = <0>;
    413 		};
    414 
    415 		/* LDOs */
    416 		vreg_l1a_1p225: l1 {
    417 			regulator-min-microvolt = <1226000>;
    418 			regulator-max-microvolt = <1250000>;
    419 			regulator-enable-ramp-delay = <250>;
    420 			regulator-ramp-delay = <0>;
    421 			regulator-allow-set-load;
    422 		};
    423 
    424 		vreg_l2a_1p0: l2 {
    425 			regulator-min-microvolt = <944000>;
    426 			regulator-max-microvolt = <1008000>;
    427 			regulator-enable-ramp-delay = <250>;
    428 			regulator-ramp-delay = <0>;
    429 		};
    430 
    431 		vreg_l3a_1p0: l3 {
    432 			regulator-min-microvolt = <944000>;
    433 			regulator-max-microvolt = <1008000>;
    434 			regulator-enable-ramp-delay = <250>;
    435 			regulator-ramp-delay = <0>;
    436 		};
    437 
    438 		vreg_l5a_0p848: l5 {
    439 			regulator-min-microvolt = <800000>;
    440 			regulator-max-microvolt = <952000>;
    441 			regulator-enable-ramp-delay = <250>;
    442 			regulator-ramp-delay = <0>;
    443 		};
    444 
    445 		vreg_l6a_1p3: l6 {
    446 			regulator-min-microvolt = <1304000>;
    447 			regulator-max-microvolt = <1368000>;
    448 			regulator-allow-set-load;
    449 			regulator-enable-ramp-delay = <250>;
    450 			regulator-ramp-delay = <0>;
    451 		};
    452 
    453 		vreg_l7a_1p2: l7 {
    454 			regulator-min-microvolt = <1200000>;
    455 			regulator-max-microvolt = <1200000>;
    456 			regulator-enable-ramp-delay = <250>;
    457 			regulator-ramp-delay = <0>;
    458 		};
    459 
    460 		vreg_l8a_1p8: l8 {
    461 			regulator-min-microvolt = <1800000>;
    462 			regulator-max-microvolt = <1800000>;
    463 			regulator-enable-ramp-delay = <250>;
    464 			regulator-ramp-delay = <0>;
    465 			regulator-system-load = <325000>;
    466 			regulator-allow-set-load;
    467 		};
    468 
    469 		vreg_l9a_1p8: l9 {
    470 			regulator-min-microvolt = <1804000>;
    471 			regulator-max-microvolt = <1896000>;
    472 			regulator-enable-ramp-delay = <250>;
    473 			regulator-ramp-delay = <0>;
    474 			regulator-allow-set-load;
    475 		};
    476 
    477 		vreg_l10a_1p8: l10 {
    478 			regulator-min-microvolt = <1800000>;
    479 			regulator-max-microvolt = <1944000>;
    480 			regulator-enable-ramp-delay = <250>;
    481 			regulator-ramp-delay = <0>;
    482 			regulator-allow-set-load;
    483 		};
    484 
    485 		vreg_l11a_1p8: l11 {
    486 			regulator-min-microvolt = <1784000>;
    487 			regulator-max-microvolt = <1944000>;
    488 			regulator-enable-ramp-delay = <250>;
    489 			regulator-ramp-delay = <0>;
    490 		};
    491 
    492 		vreg_l12a_1p8: l12 {
    493 			regulator-min-microvolt = <1800000>;
    494 			regulator-max-microvolt = <1944000>;
    495 			regulator-enable-ramp-delay = <250>;
    496 			regulator-ramp-delay = <0>;
    497 		};
    498 
    499 		/* This gives power to the LPDDR4: never turn it off! */
    500 		vreg_l13a_1p8: l13 {
    501 			regulator-min-microvolt = <1800000>;
    502 			regulator-max-microvolt = <1944000>;
    503 			regulator-enable-ramp-delay = <250>;
    504 			regulator-ramp-delay = <0>;
    505 			regulator-boot-on;
    506 			regulator-always-on;
    507 		};
    508 
    509 		vreg_l14a_1p8: l14 {
    510 			regulator-min-microvolt = <1710000>;
    511 			regulator-max-microvolt = <1904000>;
    512 			regulator-enable-ramp-delay = <250>;
    513 			regulator-ramp-delay = <0>;
    514 		};
    515 
    516 		vreg_l15a_1p8: l15 {
    517 			regulator-min-microvolt = <1648000>;
    518 			regulator-max-microvolt = <2952000>;
    519 			regulator-enable-ramp-delay = <250>;
    520 			regulator-ramp-delay = <0>;
    521 		};
    522 
    523 		/* L16A (2.70V) is unused */
    524 
    525 		vreg_l17a_1p8: l17 {
    526 			regulator-min-microvolt = <1648000>;
    527 			regulator-max-microvolt = <2952000>;
    528 			regulator-enable-ramp-delay = <250>;
    529 			regulator-ramp-delay = <0>;
    530 		};
    531 
    532 		vreg_l18a_1v8: l18 {
    533 			regulator-min-microvolt = <1800000>;
    534 			regulator-max-microvolt = <1800000>;
    535 			regulator-enable-ramp-delay = <250>;
    536 			regulator-ramp-delay = <10>;
    537 			regulator-min-microamp = <200>;
    538 			regulator-max-microamp = <50000>;
    539 			regulator-system-load = <10000>;
    540 			regulator-allow-set-load;
    541 		};
    542 
    543 		vreg_l19a_3p3: l19 {
    544 			regulator-min-microvolt = <3312000>;
    545 			regulator-max-microvolt = <3400000>;
    546 			regulator-enable-ramp-delay = <250>;
    547 			regulator-ramp-delay = <0>;
    548 			regulator-allow-set-load;
    549 		};
    550 	};
    551 };
    552 
    553 &sdhc_1 {
    554 	status = "okay";
    555 	supports-cqe;
    556 
    557 	/* SoMC Nile platform's eMMC doesn't support HS200 mode */
    558 	mmc-ddr-1_8v;
    559 	mmc-hs400-1_8v;
    560 	mmc-hs400-enhanced-strobe;
    561 
    562 	vmmc-supply = <&vreg_l4b_29p5>;
    563 	vqmmc-supply = <&vreg_l8a_1p8>;
    564 };
    565 
    566 &sdhc_2 {
    567 	status = "okay";
    568 
    569 	vmmc-supply = <&vreg_l5b_29p5>;
    570 	vqmmc-supply = <&vreg_l2b_2p95>;
    571 };
    572 
    573 &tlmm {
    574 	gpio-reserved-ranges = <8 4>;
    575 
    576 	ts_int_active: ts-int-active {
    577 		pins = "gpio45";
    578 		drive-strength = <8>;
    579 		bias-pull-up;
    580 	};
    581 
    582 	ts_lcd_id_active: ts-lcd-id-active {
    583 		pins = "gpio56";
    584 		drive-strength = <8>;
    585 		bias-disable;
    586 	};
    587 
    588 	imx300_vana_default: imx300-vana-default {
    589 		pins = "gpio50";
    590 		function = "gpio";
    591 		bias-disable;
    592 		drive-strength = <2>;
    593 	};
    594 
    595 	imx219_vana_default: imx219-vana-default {
    596 		pins = "gpio51";
    597 		function = "gpio";
    598 		bias-disable;
    599 		drive-strength = <2>;
    600 	};
    601 
    602 	cam_vdig_default: cam-vdig-default {
    603 		pins = "gpio52";
    604 		function = "gpio";
    605 		bias-disable;
    606 		drive-strength = <2>;
    607 	};
    608 };
    609 
    610 &usb3 {
    611 	status = "okay";
    612 };
    613 
    614 &usb3_dwc3 {
    615 	dr_mode = "peripheral";
    616 	extcon = <&extcon_usb>;
    617 };
    618