123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592 |
- // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
- /*
- * Google Gru-Chromebook shared properties
- *
- * Copyright 2018 Google, Inc
- */
- #include "rk3399-gru.dtsi"
- / {
- pp900_ap: pp900-ap {
- compatible = "regulator-fixed";
- regulator-name = "pp900_ap";
- /* EC turns on w/ pp900_ap_en; always on for AP */
- regulator-always-on;
- regulator-boot-on;
- regulator-min-microvolt = <900000>;
- regulator-max-microvolt = <900000>;
- vin-supply = <&ppvar_sys>;
- };
- /* EC turns on w/ pp900_usb_en */
- pp900_usb: pp900-ap {
- };
- /* EC turns on w/ pp900_pcie_en */
- pp900_pcie: pp900-ap {
- };
- pp3000: pp3000 {
- compatible = "regulator-fixed";
- regulator-name = "pp3000";
- pinctrl-names = "default";
- pinctrl-0 = <&pp3000_en>;
- enable-active-high;
- gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
- regulator-always-on;
- regulator-boot-on;
- regulator-min-microvolt = <3000000>;
- regulator-max-microvolt = <3000000>;
- vin-supply = <&ppvar_sys>;
- };
- ppvar_centerlogic_pwm: ppvar-centerlogic-pwm {
- compatible = "pwm-regulator";
- regulator-name = "ppvar_centerlogic_pwm";
- pwms = <&pwm3 0 3337 0>;
- pwm-supply = <&ppvar_sys>;
- pwm-dutycycle-range = <100 0>;
- pwm-dutycycle-unit = <100>;
- /* EC turns on w/ ppvar_centerlogic_en; always on for AP */
- regulator-always-on;
- regulator-boot-on;
- regulator-min-microvolt = <799434>;
- regulator-max-microvolt = <1049925>;
- };
- ppvar_centerlogic: ppvar-centerlogic {
- compatible = "vctrl-regulator";
- regulator-name = "ppvar_centerlogic";
- regulator-min-microvolt = <799434>;
- regulator-max-microvolt = <1049925>;
- ctrl-supply = <&ppvar_centerlogic_pwm>;
- ctrl-voltage-range = <799434 1049925>;
- regulator-settling-time-up-us = <378>;
- min-slew-down-rate = <225>;
- ovp-threshold-percent = <16>;
- };
- /* Schematics call this PPVAR even though it's fixed */
- ppvar_logic: ppvar-logic {
- compatible = "regulator-fixed";
- regulator-name = "ppvar_logic";
- /* EC turns on w/ ppvar_logic_en; always on for AP */
- regulator-always-on;
- regulator-boot-on;
- regulator-min-microvolt = <900000>;
- regulator-max-microvolt = <900000>;
- vin-supply = <&ppvar_sys>;
- };
- pp1800_audio: pp1800-audio {
- compatible = "regulator-fixed";
- regulator-name = "pp1800_audio";
- pinctrl-names = "default";
- pinctrl-0 = <&pp1800_audio_en>;
- enable-active-high;
- gpio = <&gpio0 2 GPIO_ACTIVE_HIGH>;
- regulator-always-on;
- regulator-boot-on;
- vin-supply = <&pp1800>;
- };
- /* gpio is shared with pp3300_wifi_bt */
- pp1800_pcie: pp1800-pcie {
- compatible = "regulator-fixed";
- regulator-name = "pp1800_pcie";
- pinctrl-names = "default";
- pinctrl-0 = <&wlan_module_pd_l>;
- enable-active-high;
- gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
- /*
- * Need to wait 1ms + ramp-up time before we can power on WiFi.
- * This has been approximated as 8ms total.
- */
- regulator-enable-ramp-delay = <8000>;
- vin-supply = <&pp1800>;
- };
- /* Always on; plain and simple */
- pp3000_ap: pp3000_emmc: pp3000 {
- };
- pp1500_ap_io: pp1500-ap-io {
- compatible = "regulator-fixed";
- regulator-name = "pp1500_ap_io";
- pinctrl-names = "default";
- pinctrl-0 = <&pp1500_en>;
- enable-active-high;
- gpio = <&gpio0 10 GPIO_ACTIVE_HIGH>;
- regulator-always-on;
- regulator-boot-on;
- regulator-min-microvolt = <1500000>;
- regulator-max-microvolt = <1500000>;
- vin-supply = <&pp1800>;
- };
- pp3300_disp: pp3300-disp {
- compatible = "regulator-fixed";
- regulator-name = "pp3300_disp";
- pinctrl-names = "default";
- pinctrl-0 = <&pp3300_disp_en>;
- enable-active-high;
- gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
- startup-delay-us = <2000>;
- vin-supply = <&pp3300>;
- };
- /* EC turns on w/ pp3300_usb_en_l */
- pp3300_usb: pp3300 {
- };
- /* gpio is shared with pp1800_pcie and pinctrl is set there */
- pp3300_wifi_bt: pp3300-wifi-bt {
- compatible = "regulator-fixed";
- regulator-name = "pp3300_wifi_bt";
- enable-active-high;
- gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
- vin-supply = <&pp3300>;
- };
- /*
- * This is a bit of a hack. The WiFi module should be reset at least
- * 1ms after its regulators have ramped up (max rampup time is ~7ms).
- * With some stretching of the imagination, we can call the 1.8V
- * regulator a supply.
- */
- wlan_pd_n: wlan-pd-n {
- compatible = "regulator-fixed";
- regulator-name = "wlan_pd_n";
- pinctrl-names = "default";
- pinctrl-0 = <&wlan_module_reset_l>;
- enable-active-high;
- gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
- vin-supply = <&pp1800_pcie>;
- };
- backlight: backlight {
- compatible = "pwm-backlight";
- enable-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
- power-supply = <&pp3300_disp>;
- pinctrl-names = "default";
- pinctrl-0 = <&bl_en>;
- pwm-delay-us = <10000>;
- };
- gpio_keys: gpio-keys {
- compatible = "gpio-keys";
- pinctrl-names = "default";
- pinctrl-0 = <&bt_host_wake_l>;
- wake_on_bt: key-wake-on-bt {
- label = "Wake-on-Bluetooth";
- gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
- linux,code = <KEY_WAKEUP>;
- wakeup-source;
- };
- };
- };
- &ppvar_bigcpu {
- min-slew-down-rate = <225>;
- ovp-threshold-percent = <16>;
- };
- &ppvar_litcpu {
- min-slew-down-rate = <225>;
- ovp-threshold-percent = <16>;
- };
- &ppvar_gpu {
- min-slew-down-rate = <225>;
- ovp-threshold-percent = <16>;
- };
- &cdn_dp {
- extcon = <&usbc_extcon0>, <&usbc_extcon1>;
- };
- &dmc {
- center-supply = <&ppvar_centerlogic>;
- rockchip,pd-idle-dis-freq-hz = <800000000>;
- rockchip,sr-idle-dis-freq-hz = <800000000>;
- rockchip,sr-mc-gate-idle-dis-freq-hz = <800000000>;
- };
- &edp {
- status = "okay";
- /*
- * eDP PHY/clk don't sync reliably at anything other than 24 MHz. Only
- * set this here, because rk3399-gru.dtsi ensures we can generate this
- * off GPLL=600MHz, whereas some other RK3399 boards may not.
- */
- assigned-clocks = <&cru PCLK_EDP>;
- assigned-clock-rates = <24000000>;
- ports {
- edp_out: port@1 {
- reg = <1>;
- #address-cells = <1>;
- #size-cells = <0>;
- edp_out_panel: endpoint@0 {
- reg = <0>;
- remote-endpoint = <&panel_in_edp>;
- };
- };
- };
- };
- &gpio0 {
- gpio-line-names = /* GPIO0 A 0-7 */
- "AP_RTC_CLK_IN",
- "EC_AP_INT_L",
- "PP1800_AUDIO_EN",
- "BT_HOST_WAKE_L",
- "WLAN_MODULE_PD_L",
- "H1_INT_OD_L",
- "CENTERLOGIC_DVS_PWM",
- "",
- /* GPIO0 B 0-4 */
- "WIFI_HOST_WAKE_L",
- "PMUIO2_33_18_L",
- "PP1500_EN",
- "AP_EC_WARM_RESET_REQ",
- "PP3000_EN";
- };
- &gpio1 {
- gpio-line-names = /* GPIO1 A 0-7 */
- "",
- "",
- "SPK_PA_EN",
- "",
- "TRACKPAD_INT_L",
- "AP_EC_S3_S0_L",
- "AP_EC_OVERTEMP",
- "AP_SPI_FLASH_MISO",
- /* GPIO1 B 0-7 */
- "AP_SPI_FLASH_MOSI_R",
- "AP_SPI_FLASH_CLK_R",
- "AP_SPI_FLASH_CS_L_R",
- "WLAN_MODULE_RESET_L",
- "WIFI_DISABLE_L",
- "MIC_INT",
- "",
- "AP_I2C_DVS_SDA",
- /* GPIO1 C 0-7 */
- "AP_I2C_DVS_SCL",
- "AP_BL_EN",
- /*
- * AP_FLASH_WP is crossystem ABI. Schematics call it
- * AP_FW_WP or CPU1_FW_WP, depending on the variant.
- */
- "AP_FLASH_WP",
- "LITCPU_DVS_PWM",
- "AP_I2C_AUDIO_SDA",
- "AP_I2C_AUDIO_SCL",
- "",
- "HEADSET_INT_L";
- };
- &gpio2 {
- gpio-line-names = /* GPIO2 A 0-7 */
- "",
- "",
- "SD_IO_PWR_EN",
- "",
- "",
- "",
- "",
- "",
- /* GPIO2 B 0-7 */
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- /* GPIO2 C 0-7 */
- "",
- "",
- "",
- "",
- "AP_SPI_EC_MISO",
- "AP_SPI_EC_MOSI",
- "AP_SPI_EC_CLK",
- "AP_SPI_EC_CS_L",
- /* GPIO2 D 0-4 */
- "BT_DEV_WAKE_L",
- "",
- "WIFI_PCIE_CLKREQ_L",
- "WIFI_PERST_L",
- "SD_PWR_3000_1800_L";
- };
- &gpio3 {
- gpio-line-names = /* GPIO3 A 0-7 */
- "",
- "",
- "",
- "",
- "AP_SPI_TPM_MISO",
- "AP_SPI_TPM_MOSI_R",
- "AP_SPI_TPM_CLK_R",
- "AP_SPI_TPM_CS_L_R",
- /* GPIO3 B 0-7 */
- "EC_IN_RW",
- "",
- "AP_I2C_TP_SDA",
- "AP_I2C_TP_SCL",
- "AP_I2C_TP_PU_EN",
- "TOUCH_INT_L",
- "",
- "",
- /* GPIO3 C 0-7 */
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- /* GPIO3 D 0-7 */
- "I2S0_SCLK",
- "I2S0_LRCK_RX",
- "I2S0_LRCK_TX",
- "I2S0_SDI_0",
- "I2S0_SDI_1",
- "",
- "I2S0_SDO_1",
- "I2S0_SDO_0";
- };
- &gpio4 {
- gpio-line-names = /* GPIO4 A 0-7 */
- "I2S_MCLK",
- "AP_I2C_MIC_SDA",
- "AP_I2C_MIC_SCL",
- "",
- "",
- "",
- "",
- "",
- /* GPIO4 B 0-7 */
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- /* GPIO4 C 0-7 */
- "AP_I2C_TS_SDA",
- "AP_I2C_TS_SCL",
- "GPU_DVS_PWM",
- "UART_DBG_TX_AP_RX",
- "UART_AP_TX_DBG_RX",
- "",
- "BIGCPU_DVS_PWM",
- "EDP_HPD_3V0",
- /* GPIO4 D 0-5 */
- "SD_CARD_DET_L",
- "USB_DP_HPD",
- "TOUCH_RESET_L",
- "PP3300_DISP_EN",
- "",
- "SD_SLOT_PWR_EN";
- };
- ap_i2c_mic: &i2c1 {
- status = "okay";
- clock-frequency = <400000>;
- /* These are relatively safe rise/fall times */
- i2c-scl-falling-time-ns = <50>;
- i2c-scl-rising-time-ns = <300>;
- headsetcodec: rt5514@57 {
- compatible = "realtek,rt5514";
- reg = <0x57>;
- realtek,dmic-init-delay-ms = <20>;
- };
- };
- ap_i2c_tp: &i2c5 {
- status = "okay";
- clock-frequency = <400000>;
- /* These are relatively safe rise/fall times */
- i2c-scl-falling-time-ns = <50>;
- i2c-scl-rising-time-ns = <300>;
- /*
- * Note strange pullup enable. Apparently this avoids leakage but
- * still allows us to get nice 4.7K pullups for high speed i2c
- * transfers. Basically we want the pullup on whenever the ap is
- * alive, so the "en" pin just gets set to output high.
- */
- pinctrl-0 = <&i2c5_xfer &ap_i2c_tp_pu_en>;
- };
- &cros_ec {
- cros_ec_pwm: pwm {
- compatible = "google,cros-ec-pwm";
- #pwm-cells = <1>;
- };
- usbc_extcon1: extcon1 {
- compatible = "google,extcon-usbc-cros-ec";
- google,usb-port-id = <1>;
- };
- };
- &sound {
- rockchip,codec = <&max98357a &headsetcodec
- &codec &wacky_spi_audio &cdn_dp>;
- };
- &spi2 {
- wacky_spi_audio: spi2@0 {
- compatible = "realtek,rt5514";
- reg = <0>;
- interrupt-parent = <&gpio1>;
- interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
- pinctrl-names = "default";
- pinctrl-0 = <&mic_int>;
- /* May run faster once verified. */
- spi-max-frequency = <10000000>;
- wakeup-source;
- };
- };
- &pci_rootport {
- mvl_wifi: wifi@0,0 {
- compatible = "pci1b4b,2b42";
- reg = <0x83010000 0x0 0x00000000 0x0 0x00100000
- 0x83010000 0x0 0x00100000 0x0 0x00100000>;
- interrupt-parent = <&gpio0>;
- interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
- pinctrl-names = "default";
- pinctrl-0 = <&wlan_host_wake_l>;
- wakeup-source;
- };
- };
- &tcphy1 {
- status = "okay";
- extcon = <&usbc_extcon1>;
- };
- &u2phy1 {
- status = "okay";
- };
- &usb_host0_ehci {
- status = "okay";
- };
- &usb_host1_ehci {
- status = "okay";
- };
- &usb_host1_ohci {
- status = "okay";
- };
- &usbdrd3_1 {
- status = "okay";
- extcon = <&usbc_extcon1>;
- };
- &usbdrd_dwc3_1 {
- status = "okay";
- dr_mode = "host";
- };
- &pinctrl {
- discrete-regulators {
- pp1500_en: pp1500-en {
- rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO
- &pcfg_pull_none>;
- };
- pp1800_audio_en: pp1800-audio-en {
- rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO
- &pcfg_pull_down>;
- };
- pp3000_en: pp3000-en {
- rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO
- &pcfg_pull_none>;
- };
- pp3300_disp_en: pp3300-disp-en {
- rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO
- &pcfg_pull_none>;
- };
- wlan_module_pd_l: wlan-module-pd-l {
- rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO
- &pcfg_pull_down>;
- };
- };
- };
- &wifi {
- wifi_perst_l: wifi-perst-l {
- rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
- };
- wlan_host_wake_l: wlan-host-wake-l {
- /* Kevin has an external pull up, but Bob does not */
- rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
- };
- };
|