Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/arch/arm64/boot/dts/rockchip/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 11 kB image not shown  

Quelle  rk3399-gru-chromebook.dtsi   Sprache: unbekannt

 
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Google Gru-Chromebook shared properties
 *
 * Copyright 2018 Google, Inc
 */

#include "rk3399-gru.dtsi"

/ {
 pp900_ap: regulator-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: regulator-pp900-ap {
 };

 /* EC turns on w/ pp900_pcie_en */
 pp900_pcie: regulator-pp900-ap {
 };

 pp3000: regulator-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: regulator-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: regulator-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: regulator-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: regulator-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: regulator-pp3000 {
 };

 pp1500_ap_io: regulator-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: regulator-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: regulator-pp3300 {
 };

 /* gpio is shared with pp1800_pcie and pinctrl is set there */
 pp3300_wifi_bt: regulator-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: regulator-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>;
 };

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

&edp_out {
 edp_out_panel: endpoint {
  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 = <0x0000 0x0 0x0 0x0 0x0>;
  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 {
 discretes {
  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>;
 };
};

[ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet)  ]