cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rk3288-veyron.dtsi (12625B)


      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};