Home | History | Annotate | Line # | Download | only in rockchip
      1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
      2 /*
      3  * Google Gru-Chromebook shared properties
      4  *
      5  * Copyright 2018 Google, Inc
      6  */
      7 
      8 #include "rk3399-gru.dtsi"
      9 
     10 / {
     11 	pp900_ap: pp900-ap {
     12 		compatible = "regulator-fixed";
     13 		regulator-name = "pp900_ap";
     14 
     15 		/* EC turns on w/ pp900_ap_en; always on for AP */
     16 		regulator-always-on;
     17 		regulator-boot-on;
     18 		regulator-min-microvolt = <900000>;
     19 		regulator-max-microvolt = <900000>;
     20 
     21 		vin-supply = <&ppvar_sys>;
     22 	};
     23 
     24 	/* EC turns on w/ pp900_usb_en */
     25 	pp900_usb: pp900-ap {
     26 	};
     27 
     28 	/* EC turns on w/ pp900_pcie_en */
     29 	pp900_pcie: pp900-ap {
     30 	};
     31 
     32 	pp3000: pp3000 {
     33 		compatible = "regulator-fixed";
     34 		regulator-name = "pp3000";
     35 		pinctrl-names = "default";
     36 		pinctrl-0 = <&pp3000_en>;
     37 
     38 		enable-active-high;
     39 		gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
     40 
     41 		regulator-always-on;
     42 		regulator-boot-on;
     43 		regulator-min-microvolt = <3000000>;
     44 		regulator-max-microvolt = <3000000>;
     45 
     46 		vin-supply = <&ppvar_sys>;
     47 	};
     48 
     49 	ppvar_centerlogic_pwm: ppvar-centerlogic-pwm {
     50 		compatible = "pwm-regulator";
     51 		regulator-name = "ppvar_centerlogic_pwm";
     52 
     53 		pwms = <&pwm3 0 3337 0>;
     54 		pwm-supply = <&ppvar_sys>;
     55 		pwm-dutycycle-range = <100 0>;
     56 		pwm-dutycycle-unit = <100>;
     57 
     58 		/* EC turns on w/ ppvar_centerlogic_en; always on for AP */
     59 		regulator-always-on;
     60 		regulator-boot-on;
     61 		regulator-min-microvolt = <799434>;
     62 		regulator-max-microvolt = <1049925>;
     63 	};
     64 
     65 	ppvar_centerlogic: ppvar-centerlogic {
     66 		compatible = "vctrl-regulator";
     67 		regulator-name = "ppvar_centerlogic";
     68 
     69 		regulator-min-microvolt = <799434>;
     70 		regulator-max-microvolt = <1049925>;
     71 
     72 		ctrl-supply = <&ppvar_centerlogic_pwm>;
     73 		ctrl-voltage-range = <799434 1049925>;
     74 
     75 		regulator-settling-time-up-us = <378>;
     76 		min-slew-down-rate = <225>;
     77 		ovp-threshold-percent = <16>;
     78 	};
     79 
     80 	/* Schematics call this PPVAR even though it's fixed */
     81 	ppvar_logic: ppvar-logic {
     82 		compatible = "regulator-fixed";
     83 		regulator-name = "ppvar_logic";
     84 
     85 		/* EC turns on w/ ppvar_logic_en; always on for AP */
     86 		regulator-always-on;
     87 		regulator-boot-on;
     88 		regulator-min-microvolt = <900000>;
     89 		regulator-max-microvolt = <900000>;
     90 
     91 		vin-supply = <&ppvar_sys>;
     92 	};
     93 
     94 	pp1800_audio: pp1800-audio {
     95 		compatible = "regulator-fixed";
     96 		regulator-name = "pp1800_audio";
     97 		pinctrl-names = "default";
     98 		pinctrl-0 = <&pp1800_audio_en>;
     99 
    100 		enable-active-high;
    101 		gpio = <&gpio0 2 GPIO_ACTIVE_HIGH>;
    102 
    103 		regulator-always-on;
    104 		regulator-boot-on;
    105 
    106 		vin-supply = <&pp1800>;
    107 	};
    108 
    109 	/* gpio is shared with pp3300_wifi_bt */
    110 	pp1800_pcie: pp1800-pcie {
    111 		compatible = "regulator-fixed";
    112 		regulator-name = "pp1800_pcie";
    113 		pinctrl-names = "default";
    114 		pinctrl-0 = <&wlan_module_pd_l>;
    115 
    116 		enable-active-high;
    117 		gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
    118 
    119 		/*
    120 		 * Need to wait 1ms + ramp-up time before we can power on WiFi.
    121 		 * This has been approximated as 8ms total.
    122 		 */
    123 		regulator-enable-ramp-delay = <8000>;
    124 
    125 		vin-supply = <&pp1800>;
    126 	};
    127 
    128 	/* Always on; plain and simple */
    129 	pp3000_ap: pp3000_emmc: pp3000 {
    130 	};
    131 
    132 	pp1500_ap_io: pp1500-ap-io {
    133 		compatible = "regulator-fixed";
    134 		regulator-name = "pp1500_ap_io";
    135 		pinctrl-names = "default";
    136 		pinctrl-0 = <&pp1500_en>;
    137 
    138 		enable-active-high;
    139 		gpio = <&gpio0 10 GPIO_ACTIVE_HIGH>;
    140 
    141 		regulator-always-on;
    142 		regulator-boot-on;
    143 		regulator-min-microvolt = <1500000>;
    144 		regulator-max-microvolt = <1500000>;
    145 
    146 		vin-supply = <&pp1800>;
    147 	};
    148 
    149 	pp3300_disp: pp3300-disp {
    150 		compatible = "regulator-fixed";
    151 		regulator-name = "pp3300_disp";
    152 		pinctrl-names = "default";
    153 		pinctrl-0 = <&pp3300_disp_en>;
    154 
    155 		enable-active-high;
    156 		gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
    157 
    158 		startup-delay-us = <2000>;
    159 		vin-supply = <&pp3300>;
    160 	};
    161 
    162 	/* EC turns on w/ pp3300_usb_en_l */
    163 	pp3300_usb: pp3300 {
    164 	};
    165 
    166 	/* gpio is shared with pp1800_pcie and pinctrl is set there */
    167 	pp3300_wifi_bt: pp3300-wifi-bt {
    168 		compatible = "regulator-fixed";
    169 		regulator-name = "pp3300_wifi_bt";
    170 
    171 		enable-active-high;
    172 		gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
    173 
    174 		vin-supply = <&pp3300>;
    175 	};
    176 
    177 	/*
    178 	 * This is a bit of a hack. The WiFi module should be reset at least
    179 	 * 1ms after its regulators have ramped up (max rampup time is ~7ms).
    180 	 * With some stretching of the imagination, we can call the 1.8V
    181 	 * regulator a supply.
    182 	 */
    183 	wlan_pd_n: wlan-pd-n {
    184 		compatible = "regulator-fixed";
    185 		regulator-name = "wlan_pd_n";
    186 		pinctrl-names = "default";
    187 		pinctrl-0 = <&wlan_module_reset_l>;
    188 
    189 		enable-active-high;
    190 		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
    191 
    192 		vin-supply = <&pp1800_pcie>;
    193 	};
    194 
    195 	backlight: backlight {
    196 		compatible = "pwm-backlight";
    197 		enable-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
    198 		power-supply = <&pp3300_disp>;
    199 		pinctrl-names = "default";
    200 		pinctrl-0 = <&bl_en>;
    201 		pwm-delay-us = <10000>;
    202 	};
    203 
    204 	gpio_keys: gpio-keys {
    205 		compatible = "gpio-keys";
    206 		pinctrl-names = "default";
    207 		pinctrl-0 = <&bt_host_wake_l>;
    208 
    209 		wake_on_bt: wake-on-bt {
    210 			label = "Wake-on-Bluetooth";
    211 			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
    212 			linux,code = <KEY_WAKEUP>;
    213 			wakeup-source;
    214 		};
    215 	};
    216 };
    217 
    218 &ppvar_bigcpu {
    219 	min-slew-down-rate = <225>;
    220 	ovp-threshold-percent = <16>;
    221 };
    222 
    223 &ppvar_litcpu {
    224 	min-slew-down-rate = <225>;
    225 	ovp-threshold-percent = <16>;
    226 };
    227 
    228 &ppvar_gpu {
    229 	min-slew-down-rate = <225>;
    230 	ovp-threshold-percent = <16>;
    231 };
    232 
    233 &cdn_dp {
    234 	extcon = <&usbc_extcon0>, <&usbc_extcon1>;
    235 };
    236 
    237 &edp {
    238 	status = "okay";
    239 
    240 	ports {
    241 		edp_out: port@1 {
    242 			reg = <1>;
    243 			#address-cells = <1>;
    244 			#size-cells = <0>;
    245 
    246 			edp_out_panel: endpoint@0 {
    247 				reg = <0>;
    248 				remote-endpoint = <&panel_in_edp>;
    249 			};
    250 		};
    251 	};
    252 };
    253 
    254 ap_i2c_mic: &i2c1 {
    255 	status = "okay";
    256 
    257 	clock-frequency = <400000>;
    258 
    259 	/* These are relatively safe rise/fall times */
    260 	i2c-scl-falling-time-ns = <50>;
    261 	i2c-scl-rising-time-ns = <300>;
    262 
    263 	headsetcodec: rt5514@57 {
    264 		compatible = "realtek,rt5514";
    265 		reg = <0x57>;
    266 		realtek,dmic-init-delay-ms = <20>;
    267 	};
    268 };
    269 
    270 ap_i2c_tp: &i2c5 {
    271 	status = "okay";
    272 
    273 	clock-frequency = <400000>;
    274 
    275 	/* These are relatively safe rise/fall times */
    276 	i2c-scl-falling-time-ns = <50>;
    277 	i2c-scl-rising-time-ns = <300>;
    278 
    279 	/*
    280 	 * Note strange pullup enable.  Apparently this avoids leakage but
    281 	 * still allows us to get nice 4.7K pullups for high speed i2c
    282 	 * transfers.  Basically we want the pullup on whenever the ap is
    283 	 * alive, so the "en" pin just gets set to output high.
    284 	 */
    285 	pinctrl-0 = <&i2c5_xfer &ap_i2c_tp_pu_en>;
    286 };
    287 
    288 &cros_ec {
    289 	cros_ec_pwm: ec-pwm {
    290 		compatible = "google,cros-ec-pwm";
    291 		#pwm-cells = <1>;
    292 	};
    293 
    294 	usbc_extcon1: extcon1 {
    295 		compatible = "google,extcon-usbc-cros-ec";
    296 		google,usb-port-id = <1>;
    297 	};
    298 };
    299 
    300 &sound {
    301 	rockchip,codec = <&max98357a &headsetcodec
    302 			  &codec &wacky_spi_audio &cdn_dp>;
    303 };
    304 
    305 &spi2 {
    306 	wacky_spi_audio: spi2@0 {
    307 		compatible = "realtek,rt5514";
    308 		reg = <0>;
    309 		interrupt-parent = <&gpio1>;
    310 		interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
    311 		pinctrl-names = "default";
    312 		pinctrl-0 = <&mic_int>;
    313 		/* May run faster once verified. */
    314 		spi-max-frequency = <10000000>;
    315 		wakeup-source;
    316 	};
    317 };
    318 
    319 &pci_rootport {
    320 	mvl_wifi: wifi@0,0 {
    321 		compatible = "pci1b4b,2b42";
    322 		reg = <0x83010000 0x0 0x00000000 0x0 0x00100000
    323 		       0x83010000 0x0 0x00100000 0x0 0x00100000>;
    324 		interrupt-parent = <&gpio0>;
    325 		interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
    326 		pinctrl-names = "default";
    327 		pinctrl-0 = <&wlan_host_wake_l>;
    328 		wakeup-source;
    329 	};
    330 };
    331 
    332 &tcphy1 {
    333 	status = "okay";
    334 	extcon = <&usbc_extcon1>;
    335 };
    336 
    337 &u2phy1 {
    338 	status = "okay";
    339 };
    340 
    341 &usb_host0_ehci {
    342 	status = "okay";
    343 };
    344 
    345 &usb_host1_ehci {
    346 	status = "okay";
    347 };
    348 
    349 &usb_host1_ohci {
    350 	status = "okay";
    351 };
    352 
    353 &usbdrd3_1 {
    354 	status = "okay";
    355 	extcon = <&usbc_extcon1>;
    356 };
    357 
    358 &usbdrd_dwc3_1 {
    359 	status = "okay";
    360 	dr_mode = "host";
    361 };
    362 
    363 &pinctrl {
    364 	discrete-regulators {
    365 		pp1500_en: pp1500-en {
    366 			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO
    367 					 &pcfg_pull_none>;
    368 		};
    369 
    370 		pp1800_audio_en: pp1800-audio-en {
    371 			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO
    372 					 &pcfg_pull_down>;
    373 		};
    374 
    375 		pp3000_en: pp3000-en {
    376 			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO
    377 					 &pcfg_pull_none>;
    378 		};
    379 
    380 		pp3300_disp_en: pp3300-disp-en {
    381 			rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO
    382 					 &pcfg_pull_none>;
    383 		};
    384 
    385 		wlan_module_pd_l: wlan-module-pd-l {
    386 			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO
    387 					 &pcfg_pull_down>;
    388 		};
    389 	};
    390 };
    391 
    392 &wifi {
    393 	wifi_perst_l: wifi-perst-l {
    394 		rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
    395 	};
    396 
    397 	wlan_host_wake_l: wlan-host-wake-l {
    398 		rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
    399 	};
    400 };
    401