Home | History | Annotate | Line # | Download | only in dts
      1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
      2 /*
      3  * Google Veyron (and derivatives) board device tree source
      4  *
      5  * Copyright 2015 Google, Inc
      6  */
      7 
      8 #include <dt-bindings/clock/rockchip,rk808.h>
      9 #include <dt-bindings/input/input.h>
     10 #include "rk3288.dtsi"
     11 
     12 / {
     13 	chosen {
     14 		stdout-path = "serial2:115200n8";
     15 	};
     16 
     17 	/*
     18 	 * The default coreboot on veyron devices ignores memory@0 nodes
     19 	 * and would instead create another memory node.
     20 	 */
     21 	memory {
     22 		device_type = "memory";
     23 		reg = <0x0 0x0 0x0 0x80000000>;
     24 	};
     25 
     26 
     27 	power_button: power-button {
     28 		compatible = "gpio-keys";
     29 		pinctrl-names = "default";
     30 		pinctrl-0 = <&pwr_key_l>;
     31 
     32 		power {
     33 			label = "Power";
     34 			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
     35 			linux,code = <KEY_POWER>;
     36 			debounce-interval = <100>;
     37 			wakeup-source;
     38 		};
     39 	};
     40 
     41 	gpio-restart {
     42 		compatible = "gpio-restart";
     43 		gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
     44 		pinctrl-names = "default";
     45 		pinctrl-0 = <&ap_warm_reset_h>;
     46 		priority = <200>;
     47 	};
     48 
     49 	emmc_pwrseq: emmc-pwrseq {
     50 		compatible = "mmc-pwrseq-emmc";
     51 		pinctrl-0 = <&emmc_reset>;
     52 		pinctrl-names = "default";
     53 		reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;
     54 	};
     55 
     56 	sdio_pwrseq: sdio-pwrseq {
     57 		compatible = "mmc-pwrseq-simple";
     58 		clocks = <&rk808 RK808_CLKOUT1>;
     59 		clock-names = "ext_clock";
     60 		pinctrl-names = "default";
     61 		pinctrl-0 = <&wifi_enable_h>;
     62 
     63 		/*
     64 		 * Depending on the actual card populated GPIO4 D4
     65 		 * correspond to one of these signals on the module:
     66 		 *
     67 		 * D4:
     68 		 * - SDIO_RESET_L_WL_REG_ON
     69 		 * - PDN (power down when low)
     70 		 */
     71 		reset-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>;
     72 	};
     73 
     74 	vcc_5v: vcc-5v {
     75 		compatible = "regulator-fixed";
     76 		regulator-name = "vcc_5v";
     77 		regulator-always-on;
     78 		regulator-boot-on;
     79 		regulator-min-microvolt = <5000000>;
     80 		regulator-max-microvolt = <5000000>;
     81 	};
     82 
     83 	vcc33_sys: vcc33-sys {
     84 		compatible = "regulator-fixed";
     85 		regulator-name = "vcc33_sys";
     86 		regulator-always-on;
     87 		regulator-boot-on;
     88 		regulator-min-microvolt = <3300000>;
     89 		regulator-max-microvolt = <3300000>;
     90 	};
     91 
     92 	vcc50_hdmi: vcc50-hdmi {
     93 		compatible = "regulator-fixed";
     94 		regulator-name = "vcc50_hdmi";
     95 		regulator-always-on;
     96 		regulator-boot-on;
     97 		vin-supply = <&vcc_5v>;
     98 	};
     99 
    100 	vdd_logic: vdd-logic {
    101 		compatible = "pwm-regulator";
    102 		regulator-name = "vdd_logic";
    103 
    104 		pwms = <&pwm1 0 1994 0>;
    105 		pwm-supply = <&vcc33_sys>;
    106 
    107 		pwm-dutycycle-range = <0x7b 0>;
    108 		pwm-dutycycle-unit = <0x94>;
    109 
    110 		regulator-always-on;
    111 		regulator-boot-on;
    112 		regulator-min-microvolt = <950000>;
    113 		regulator-max-microvolt = <1350000>;
    114 		regulator-ramp-delay = <4000>;
    115 	};
    116 };
    117 
    118 &cpu0 {
    119 	cpu0-supply = <&vdd_cpu>;
    120 };
    121 
    122 &cpu_crit {
    123 	temperature = <100000>;
    124 };
    125 
    126 /* rk3288-c used in Veyron Chrome-devices has slightly changed OPPs */
    127 &cpu_opp_table {
    128 	/delete-node/ opp-312000000;
    129 
    130 	opp-1512000000 {
    131 		opp-microvolt = <1250000>;
    132 	};
    133 	opp-1608000000 {
    134 		opp-microvolt = <1300000>;
    135 	};
    136 	opp-1704000000 {
    137 		opp-hz = /bits/ 64 <1704000000>;
    138 		opp-microvolt = <1350000>;
    139 	};
    140 	opp-1800000000 {
    141 		opp-hz = /bits/ 64 <1800000000>;
    142 		opp-microvolt = <1400000>;
    143 	};
    144 };
    145 
    146 &emmc {
    147 	status = "okay";
    148 
    149 	bus-width = <8>;
    150 	cap-mmc-highspeed;
    151 	rockchip,default-sample-phase = <158>;
    152 	disable-wp;
    153 	mmc-hs200-1_8v;
    154 	mmc-pwrseq = <&emmc_pwrseq>;
    155 	non-removable;
    156 	pinctrl-names = "default";
    157 	pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
    158 };
    159 
    160 &gpu {
    161 	mali-supply = <&vdd_gpu>;
    162 	status = "okay";
    163 };
    164 
    165 &gpu_alert0 {
    166 	temperature = <72500>;
    167 };
    168 
    169 &gpu_crit {
    170 	temperature = <100000>;
    171 };
    172 
    173 &hdmi {
    174 	pinctrl-names = "default", "unwedge";
    175 	pinctrl-0 = <&hdmi_ddc>;
    176 	pinctrl-1 = <&hdmi_ddc_unwedge>;
    177 	status = "okay";
    178 };
    179 
    180 &i2c0 {
    181 	status = "okay";
    182 
    183 	clock-frequency = <400000>;
    184 	i2c-scl-falling-time-ns = <50>;		/* 2.5ns measured */
    185 	i2c-scl-rising-time-ns = <100>;		/* 45ns measured */
    186 
    187 	rk808: pmic@1b {
    188 		compatible = "rockchip,rk808";
    189 		reg = <0x1b>;
    190 		clock-output-names = "xin32k", "wifibt_32kin";
    191 		interrupt-parent = <&gpio0>;
    192 		interrupts = <RK_PA4 IRQ_TYPE_LEVEL_LOW>;
    193 		pinctrl-names = "default";
    194 		pinctrl-0 = <&pmic_int_l>;
    195 		rockchip,system-power-controller;
    196 		wakeup-source;
    197 		#clock-cells = <1>;
    198 
    199 		vcc1-supply = <&vcc33_sys>;
    200 		vcc2-supply = <&vcc33_sys>;
    201 		vcc3-supply = <&vcc33_sys>;
    202 		vcc4-supply = <&vcc33_sys>;
    203 		vcc6-supply = <&vcc_5v>;
    204 		vcc7-supply = <&vcc33_sys>;
    205 		vcc8-supply = <&vcc33_sys>;
    206 		vcc12-supply = <&vcc_18>;
    207 		vddio-supply = <&vcc33_io>;
    208 
    209 		regulators {
    210 			vdd_cpu: DCDC_REG1 {
    211 				regulator-name = "vdd_arm";
    212 				regulator-always-on;
    213 				regulator-boot-on;
    214 				regulator-min-microvolt = <750000>;
    215 				regulator-max-microvolt = <1450000>;
    216 				regulator-ramp-delay = <6001>;
    217 				regulator-state-mem {
    218 					regulator-off-in-suspend;
    219 				};
    220 			};
    221 
    222 			vdd_gpu: DCDC_REG2 {
    223 				regulator-name = "vdd_gpu";
    224 				regulator-always-on;
    225 				regulator-boot-on;
    226 				regulator-min-microvolt = <800000>;
    227 				regulator-max-microvolt = <1250000>;
    228 				regulator-ramp-delay = <6001>;
    229 				regulator-state-mem {
    230 					regulator-off-in-suspend;
    231 				};
    232 			};
    233 
    234 			vcc135_ddr: DCDC_REG3 {
    235 				regulator-name = "vcc135_ddr";
    236 				regulator-always-on;
    237 				regulator-boot-on;
    238 				regulator-state-mem {
    239 					regulator-on-in-suspend;
    240 				};
    241 			};
    242 
    243 			/*
    244 			 * vcc_18 has several aliases.  (vcc18_flashio and
    245 			 * vcc18_wl).  We'll add those aliases here just to
    246 			 * make it easier to follow the schematic.  The signals
    247 			 * are actually hooked together and only separated for
    248 			 * power measurement purposes).
    249 			 */
    250 			vcc18_wl: vcc18_flashio: vcc_18: DCDC_REG4 {
    251 				regulator-name = "vcc_18";
    252 				regulator-always-on;
    253 				regulator-boot-on;
    254 				regulator-min-microvolt = <1800000>;
    255 				regulator-max-microvolt = <1800000>;
    256 				regulator-state-mem {
    257 					regulator-on-in-suspend;
    258 					regulator-suspend-microvolt = <1800000>;
    259 				};
    260 			};
    261 
    262 			/*
    263 			 * Note that both vcc33_io and vcc33_pmuio are always
    264 			 * powered together. To simplify the logic in the dts
    265 			 * we just refer to vcc33_io every time something is
    266 			 * powered from vcc33_pmuio. In fact, on later boards
    267 			 * (such as danger) they're the same net.
    268 			 */
    269 			vcc33_io: LDO_REG1 {
    270 				regulator-name = "vcc33_io";
    271 				regulator-always-on;
    272 				regulator-boot-on;
    273 				regulator-min-microvolt = <3300000>;
    274 				regulator-max-microvolt = <3300000>;
    275 				regulator-state-mem {
    276 					regulator-on-in-suspend;
    277 					regulator-suspend-microvolt = <3300000>;
    278 				};
    279 			};
    280 
    281 			vdd_10: LDO_REG3 {
    282 				regulator-name = "vdd_10";
    283 				regulator-always-on;
    284 				regulator-boot-on;
    285 				regulator-min-microvolt = <1000000>;
    286 				regulator-max-microvolt = <1000000>;
    287 				regulator-state-mem {
    288 					regulator-on-in-suspend;
    289 					regulator-suspend-microvolt = <1000000>;
    290 				};
    291 			};
    292 
    293 			vdd10_lcd_pwren_h: LDO_REG7 {
    294 				regulator-name = "vdd10_lcd_pwren_h";
    295 				regulator-always-on;
    296 				regulator-boot-on;
    297 				regulator-min-microvolt = <2500000>;
    298 				regulator-max-microvolt = <2500000>;
    299 				regulator-state-mem {
    300 					regulator-off-in-suspend;
    301 				};
    302 			};
    303 
    304 			vcc33_lcd: SWITCH_REG1 {
    305 				regulator-name = "vcc33_lcd";
    306 				regulator-always-on;
    307 				regulator-boot-on;
    308 				regulator-state-mem {
    309 					regulator-off-in-suspend;
    310 				};
    311 			};
    312 		};
    313 	};
    314 };
    315 
    316 &i2c1 {
    317 	status = "okay";
    318 
    319 	clock-frequency = <400000>;
    320 	i2c-scl-falling-time-ns = <50>;		/* 2.5ns measured */
    321 	i2c-scl-rising-time-ns = <100>;		/* 40ns measured */
    322 
    323 	tpm: tpm@20 {
    324 		compatible = "infineon,slb9645tt";
    325 		reg = <0x20>;
    326 		powered-while-suspended;
    327 	};
    328 };
    329 
    330 &i2c2 {
    331 	status = "okay";
    332 
    333 	/* 100kHz since 4.7k resistors don't rise fast enough */
    334 	clock-frequency = <100000>;
    335 	i2c-scl-falling-time-ns = <50>;		/* 10ns measured */
    336 	i2c-scl-rising-time-ns = <800>;		/* 600ns measured */
    337 };
    338 
    339 &i2c4 {
    340 	status = "okay";
    341 
    342 	clock-frequency = <400000>;
    343 	i2c-scl-falling-time-ns = <50>;		/* 11ns measured */
    344 	i2c-scl-rising-time-ns = <300>;		/* 225ns measured */
    345 };
    346 
    347 &io_domains {
    348 	status = "okay";
    349 
    350 	bb-supply = <&vcc33_io>;
    351 	dvp-supply = <&vcc_18>;
    352 	flash0-supply = <&vcc18_flashio>;
    353 	gpio1830-supply = <&vcc33_io>;
    354 	gpio30-supply = <&vcc33_io>;
    355 	lcdc-supply = <&vcc33_lcd>;
    356 	wifi-supply = <&vcc18_wl>;
    357 };
    358 
    359 &pwm1 {
    360 	status = "okay";
    361 };
    362 
    363 &sdio0 {
    364 	status = "okay";
    365 
    366 	bus-width = <4>;
    367 	cap-sd-highspeed;
    368 	cap-sdio-irq;
    369 	keep-power-in-suspend;
    370 	mmc-pwrseq = <&sdio_pwrseq>;
    371 	non-removable;
    372 	pinctrl-names = "default";
    373 	pinctrl-0 = <&sdio0_clk &sdio0_cmd &sdio0_bus4>;
    374 	sd-uhs-sdr12;
    375 	sd-uhs-sdr25;
    376 	sd-uhs-sdr50;
    377 	sd-uhs-sdr104;
    378 	vmmc-supply = <&vcc33_sys>;
    379 	vqmmc-supply = <&vcc18_wl>;
    380 };
    381 
    382 &spi2 {
    383 	status = "okay";
    384 
    385 	rx-sample-delay-ns = <12>;
    386 
    387 	flash@0 {
    388 		compatible = "jedec,spi-nor";
    389 		spi-max-frequency = <50000000>;
    390 		reg = <0>;
    391 	};
    392 };
    393 
    394 &tsadc {
    395 	status = "okay";
    396 
    397 	rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
    398 	rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
    399 	rockchip,hw-tshut-temp = <125000>;
    400 };
    401 
    402 &uart0 {
    403 	status = "okay";
    404 
    405 	/* Pins don't include flow control by default; add that in */
    406 	pinctrl-names = "default";
    407 	pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
    408 };
    409 
    410 &uart1 {
    411 	status = "okay";
    412 };
    413 
    414 &uart2 {
    415 	status = "okay";
    416 };
    417 
    418 &usbphy {
    419 	status = "okay";
    420 };
    421 
    422 &usb_host0_ehci {
    423 	status = "okay";
    424 
    425 	needs-reset-on-resume;
    426 };
    427 
    428 &usb_host1 {
    429 	status = "okay";
    430 	snps,need-phy-for-wake;
    431 };
    432 
    433 &usb_otg {
    434 	status = "okay";
    435 
    436 	assigned-clocks = <&cru SCLK_USBPHY480M_SRC>;
    437 	assigned-clock-parents = <&usbphy0>;
    438 	dr_mode = "host";
    439 	snps,need-phy-for-wake;
    440 };
    441 
    442 &vopb {
    443 	status = "okay";
    444 };
    445 
    446 &vopb_mmu {
    447 	status = "okay";
    448 };
    449 
    450 &wdt {
    451 	status = "okay";
    452 };
    453 
    454 &pinctrl {
    455 	pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
    456 		bias-disable;
    457 		drive-strength = <8>;
    458 	};
    459 
    460 	pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
    461 		bias-pull-up;
    462 		drive-strength = <8>;
    463 	};
    464 
    465 	pcfg_output_high: pcfg-output-high {
    466 		output-high;
    467 	};
    468 
    469 	pcfg_output_low: pcfg-output-low {
    470 		output-low;
    471 	};
    472 
    473 	buttons {
    474 		pwr_key_l: pwr-key-l {
    475 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
    476 		};
    477 	};
    478 
    479 	emmc {
    480 		emmc_reset: emmc-reset {
    481 			rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
    482 		};
    483 
    484 		/*
    485 		 * We run eMMC at max speed; bump up drive strength.
    486 		 * We also have external pulls, so disable the internal ones.
    487 		 */
    488 		emmc_clk: emmc-clk {
    489 			rockchip,pins = <3 RK_PC2 2 &pcfg_pull_none_drv_8ma>;
    490 		};
    491 
    492 		emmc_cmd: emmc-cmd {
    493 			rockchip,pins = <3 RK_PC0 2 &pcfg_pull_none_drv_8ma>;
    494 		};
    495 
    496 		emmc_bus8: emmc-bus8 {
    497 			rockchip,pins = <3 RK_PA0 2 &pcfg_pull_none_drv_8ma>,
    498 					<3 RK_PA1 2 &pcfg_pull_none_drv_8ma>,
    499 					<3 RK_PA2 2 &pcfg_pull_none_drv_8ma>,
    500 					<3 RK_PA3 2 &pcfg_pull_none_drv_8ma>,
    501 					<3 RK_PA4 2 &pcfg_pull_none_drv_8ma>,
    502 					<3 RK_PA5 2 &pcfg_pull_none_drv_8ma>,
    503 					<3 RK_PA6 2 &pcfg_pull_none_drv_8ma>,
    504 					<3 RK_PA7 2 &pcfg_pull_none_drv_8ma>;
    505 		};
    506 	};
    507 
    508 	pmic {
    509 		pmic_int_l: pmic-int-l {
    510 			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
    511 		};
    512 	};
    513 
    514 	reboot {
    515 		ap_warm_reset_h: ap-warm-reset-h {
    516 			rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
    517 		};
    518 	};
    519 
    520 	recovery-switch {
    521 		rec_mode_l: rec-mode-l {
    522 			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
    523 		};
    524 	};
    525 
    526 	sdio0 {
    527 		wifi_enable_h: wifienable-h {
    528 			rockchip,pins = <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
    529 		};
    530 
    531 		/* NOTE: mislabelled on schematic; should be bt_enable_h */
    532 		bt_enable_l: bt-enable-l {
    533 			rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
    534 		};
    535 
    536 		bt_host_wake: bt-host-wake {
    537 			rockchip,pins = <4 RK_PD7 RK_FUNC_GPIO &pcfg_pull_down>;
    538 		};
    539 
    540 		bt_host_wake_l: bt-host-wake-l {
    541 			rockchip,pins = <4 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
    542 		};
    543 
    544 		/*
    545 		 * We run sdio0 at max speed; bump up drive strength.
    546 		 * We also have external pulls, so disable the internal ones.
    547 		 */
    548 		sdio0_bus4: sdio0-bus4 {
    549 			rockchip,pins = <4 RK_PC4 1 &pcfg_pull_none_drv_8ma>,
    550 					<4 RK_PC5 1 &pcfg_pull_none_drv_8ma>,
    551 					<4 RK_PC6 1 &pcfg_pull_none_drv_8ma>,
    552 					<4 RK_PC7 1 &pcfg_pull_none_drv_8ma>;
    553 		};
    554 
    555 		sdio0_cmd: sdio0-cmd {
    556 			rockchip,pins = <4 RK_PD0 1 &pcfg_pull_none_drv_8ma>;
    557 		};
    558 
    559 		sdio0_clk: sdio0-clk {
    560 			rockchip,pins = <4 RK_PD1 1 &pcfg_pull_none_drv_8ma>;
    561 		};
    562 
    563 		/*
    564 		 * These pins are only present on very new veyron boards; on
    565 		 * older boards bt_dev_wake is simply always high.  Note that
    566 		 * gpio4_D2 is a NC on old veyron boards, so it doesn't hurt
    567 		 * to map this pin everywhere
    568 		 */
    569 		bt_dev_wake_sleep: bt-dev-wake-sleep {
    570 			rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_output_low>;
    571 		};
    572 
    573 		bt_dev_wake_awake: bt-dev-wake-awake {
    574 			rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_output_high>;
    575 		};
    576 
    577 		bt_dev_wake: bt-dev-wake {
    578 			rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
    579 		};
    580 	};
    581 
    582 	tpm {
    583 		tpm_int_h: tpm-int-h {
    584 			rockchip,pins = <7 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
    585 		};
    586 	};
    587 
    588 	write-protect {
    589 		fw_wp_ap: fw-wp-ap {
    590 			rockchip,pins = <7 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
    591 		};
    592 	};
    593 };
    594