// SPDX-License-Identifier: GPL-2.0-only /* * Device Tree nodes common for all GS101-based Pixel * * Copyright 2021-2023 Google LLC * Copyright 2023 Linaro Ltd - */ /dts-v1/; #include #include #include #include #include "gs101-pinctrl.h" #include "gs101.dtsi" / { aliases { serial0 = &serial_0; }; chosen { /* Bootloader expects bootargs specified otherwise it crashes */ bootargs = ""; stdout-path = &serial_0; /* Use display framebuffer as setup by bootloader */ framebuffer0: framebuffer-0 { compatible = "simple-framebuffer"; memory-region = <&cont_splash_mem>; vci-supply = <&s2mpg10_ldo22m>; vddi-supply = <&s2mpg11_bucka>; /* format properties to be added by actual board */ status = "disabled"; }; }; gpio-keys { compatible = "gpio-keys"; pinctrl-0 = <&key_voldown>, <&key_volup>, <&key_power>; pinctrl-names = "default"; button-vol-down { label = "KEY_VOLUMEDOWN"; linux,code = ; gpios = <&gpa7 3 GPIO_ACTIVE_LOW>; wakeup-source; }; button-vol-up { label = "KEY_VOLUMEUP"; linux,code = ; gpios = <&gpa8 1 GPIO_ACTIVE_LOW>; wakeup-source; }; button-power { label = "KEY_POWER"; linux,code = ; gpios = <&gpa10 1 GPIO_ACTIVE_LOW>; wakeup-source; }; }; reboot-mode { compatible = "nvmem-reboot-mode"; nvmem-cells = <&nvmem_reboot_mode>; nvmem-cell-names = "reboot-mode"; mode-bootloader = <0x800000fc>; mode-charge = <0x8000000a>; mode-dm-verity-device-corrupted = <0x80000050>; mode-fastboot = <0x800000fa>; mode-reboot-ab-update = <0x80000052>; mode-recovery = <0x800000ff>; mode-rescue = <0x800000f9>; mode-shutdown-thermal = <0x80000051>; mode-shutdown-thermal-battery = <0x80000051>; }; /* TODO: Remove this once PMIC is implemented */ reg_placeholder: regulator-0 { compatible = "regulator-fixed"; regulator-name = "placeholder_reg"; }; /* TODO: Remove this once S2MPG11 slave PMIC is implemented */ ufs_0_fixed_vcc_reg: regulator-1 { compatible = "regulator-fixed"; regulator-name = "ufs-vcc"; gpio = <&gpp0 1 GPIO_ACTIVE_HIGH>; regulator-boot-on; enable-active-high; }; reserved-memory { cont_splash_mem: splash@fac00000 { /* size to be updated by actual board */ reg = <0x0 0xfac00000 0x0>; no-map; status = "disabled"; }; }; }; &acpm_ipc { pmic-1 { compatible = "samsung,s2mpg10-pmic"; interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&pmic_int>; system-power-controller; wakeup-source; vinl1m-supply = <&s2mpg11_buck3s>; vinl2m-supply = <&s2mpg11_buck3s>; vinl3m-supply = <&s2mpg10_buck8m>; vinl4m-supply = <&s2mpg10_buck9m>; vinl5m-supply = <&s2mpg10_buck9m>; vinl6m-supply = <&s2mpg10_buck9m>; vinl7m-supply = <&s2mpg11_buck6s>; vinl8m-supply = <&s2mpg11_buck6s>; vinl9m-supply = <&s2mpg11_buck7s>; vinl10m-supply = <&s2mpg11_buck7s>; vinl11m-supply = <&s2mpg11_buck7s>; vinl12m-supply = <&s2mpg11_bucka>; vinl13m-supply = <&s2mpg11_bucka>; vinl14m-supply = <&s2mpg11_buckboost>; vinl15m-supply = <&s2mpg11_buckboost>; clocks { compatible = "samsung,s2mpg10-clk"; #clock-cells = <1>; clock-output-names = "rtc32k_ap", "peri32k1", "peri32k2"; }; regulators { buck1m { regulator-name = "vdd_mif"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; regulator-always-on; samsung,ext-control = ; }; buck2m { regulator-name = "vdd_cpucl2"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; buck3m { regulator-name = "vdd_cpucl1"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; buck4m { regulator-name = "vdd_cpucl0"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; buck5m { regulator-name = "vdd_int"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; buck6m { regulator-name = "vdd_cpucl2_m"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1350000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; buck7m { /* GPU */ regulator-name = "vdd_int_m"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; regulator-always-on; samsung,ext-control = ; }; s2mpg10_buck8m: buck8m { regulator-name = "lldo2"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; }; s2mpg10_buck9m: buck9m { regulator-name = "lldo3"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; }; buck10m { regulator-name = "vdd_tpu"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; ldo1m { /* ALIVE, AOC PLL */ regulator-name = "vdd_l1m_alive"; regulator-min-microvolt = <700000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; regulator-always-on; }; ldo2m { /* lots, DDR */ regulator-name = "vdd_l2m_alive"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; regulator-always-on; }; ldo3m { /* AVDD: MIPI CSI & DSI, PLL: CPUCL SHARED TPU UFS */ regulator-name = "ldo3m"; regulator-min-microvolt = <725000>; regulator-max-microvolt = <1300000>; regulator-always-on; samsung,ext-control = ; }; ldo4m { /* AVDD: MIPI CSI & DSI, UFS, OTP, TS_SUB, TS_TOP, XOTP */ regulator-name = "ldo4m"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; regulator-always-on; samsung,ext-control = ; }; ldo5m { /* VDD: ADD, AVDD: TCXO & TCXO_FAR */ regulator-name = "avdd075_tcxo"; regulator-min-microvolt = <725000>; regulator-max-microvolt = <1300000>; regulator-always-on; samsung,ext-control = ; }; ldo6m { /* PLL CPUCL & MIFx, UFS clk, MIPI DSI */ regulator-name = "vdd_pll"; regulator-min-microvolt = <725000>; regulator-max-microvolt = <1300000>; regulator-always-on; samsung,ext-control = ; }; ldo7m { /* IO (HSI (USB)) */ regulator-name = "vdd_hsi"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <950000>; regulator-ramp-delay = <6250>; /* * TODO: link to HSI power domain, without this, * Linux hangs during USB access. */ regulator-always-on; }; ldo8m { regulator-name = "vdd085_usb"; regulator-min-microvolt = <725000>; regulator-max-microvolt = <1300000>; regulator-always-on; }; ldo9m { regulator-name = "vdd18_usb"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; regulator-always-on; }; ldo10m { regulator-name = "vdd33_usb"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3350000>; regulator-always-on; }; ldo11m { regulator-name = "vdd_cpucl1_m"; regulator-min-microvolt = <700000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; regulator-always-on; samsung,ext-control = ; }; ldo12m { regulator-name = "vdd_cpucl0_m"; regulator-min-microvolt = <700000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; regulator-always-on; samsung,ext-control = ; }; ldo13m { regulator-name = "vdd_tpu_m"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <950000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; /* ldo14m is board specific */ ldo15m { regulator-name = "vdd_slc_m"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <950000>; regulator-ramp-delay = <12500>; regulator-always-on; }; ldo16m { regulator-name = "vdd085_pcie0"; regulator-min-microvolt = <725000>; regulator-max-microvolt = <1300000>; }; ldo17m { regulator-name = "vdd085_pcie1"; regulator-min-microvolt = <725000>; regulator-max-microvolt = <1300000>; }; ldo18m { regulator-name = "vdd18_pcie0"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; }; ldo19m { regulator-name = "vdd18_pcie1"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; }; ldo20m { /* DMIC, memory power */ regulator-name = "vddq_aoc_pdm"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; regulator-always-on; samsung,ext-control = ; }; ldo21m { /* Dauntless */ regulator-name = "vdd_dtls"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <3300000>; regulator-always-on; }; s2mpg10_ldo22m: ldo22m { /* display */ regulator-name = "vci_disp"; regulator-min-microvolt = <3025000>; regulator-max-microvolt = <3025000>; }; /* ldo23m & ldo24m are unused */ ldo25m { /* touch */ regulator-name = "dvdd_tsp"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; }; ldo26m { /* touch */ regulator-name = "avdd_ts"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <3300000>; }; ldo27m { /* under-display fingerprint scanner */ regulator-name = "avdd_udfps"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <3300000>; }; /* *ldo28m .. ldo30m are unused, ldo31m is board specific */ }; }; pmic-2 { compatible = "samsung,s2mpg11-pmic"; interrupts-extended = <&gpa0 7 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&sub_pmic_int>; wakeup-source; vinl1s-supply = <&s2mpg10_buck8m>; vinl2s-supply = <&s2mpg11_buck6s>; vinl3s-supply = <&s2mpg11_buck7s>; vinl4s-supply = <&s2mpg11_buck7s>; vinl5s-supply = <&s2mpg11_buckboost>; vinl6s-supply = <&s2mpg11_buckboost>; vinbd-supply = <&s2mpg11_buckboost>; regulators { buck1s { /* multimedia */ regulator-name = "vdd_cam"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; buck2s { regulator-name = "vdd_g3d"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; s2mpg11_buck3s: buck3s { regulator-name = "lldo1"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; }; buck4s { /* DDR */ regulator-name = "vdd2h_mem"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; regulator-always-on; }; buck5s { /* DDR */ regulator-name = "vddq_mem"; regulator-min-microvolt = <400000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; regulator-always-on; samsung,ext-control = ; }; s2mpg11_buck6s: buck6s { regulator-name = "lldo4"; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1500000>; regulator-ramp-delay = <6250>; }; s2mpg11_buck7s: buck7s { regulator-name = "mldo"; regulator-min-microvolt = <1500000>; regulator-max-microvolt = <2200000>; regulator-ramp-delay = <6250>; }; buck8s { regulator-name = "vdd_g3d_l2"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; samsung,ext-control = ; }; buck9s { regulator-name = "vdd_aoc"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <12500>; regulator-always-on; }; buck10s { /* DDR */ regulator-name = "vdd2l_mem"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <1300000>; regulator-ramp-delay = <6250>; regulator-always-on; }; buckd { regulator-name = "vcc_ufs"; regulator-min-microvolt = <2400000>; regulator-max-microvolt = <3300000>; regulator-ramp-delay = <6250>; regulator-always-on; samsung,ext-control = ; }; s2mpg11_bucka: bucka { /* lots, IO */ regulator-name = "bucka"; regulator-min-microvolt = <1700000>; regulator-max-microvolt = <2100000>; regulator-ramp-delay = <6250>; regulator-always-on; }; s2mpg11_buckboost: buckboost { regulator-name = "buckboost"; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3600000>; }; ldo1s { regulator-name = "vdd_g3d_m"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <950000>; regulator-ramp-delay = <6250>; regulator-always-on; samsung,ext-control = ; }; ldo2s { regulator-name = "vdd_aoc_ret"; regulator-min-microvolt = <450000>; regulator-max-microvolt = <950000>; regulator-ramp-delay = <12500>; regulator-always-on; }; /* ldo3s & ldo5s are unused, ldo4s is board specific */ ldo6s { /* sensors */ regulator-name = "vdd_prox"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <3300000>; }; ldo7s { /* sensors */ regulator-name = "vdd_sensors"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; }; ldo8s { regulator-name = "vccq_ufs"; regulator-min-microvolt = <1130400>; regulator-max-microvolt = <1281200>; regulator-always-on; samsung,ext-control = ; }; ldo9s { regulator-name = "vdd_gnss"; regulator-min-microvolt = <725000>; regulator-max-microvolt = <1300000>; }; ldo10s { regulator-name = "vdd_gnss_rf"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; }; ldo11s { regulator-name = "vdd_gnss_aux"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <1950000>; }; /* ldo12s is unused */ ldo13s { regulator-name = "vddq_mmc"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3350000>; regulator-always-on; samsung,ext-control = ; }; /* ldo14s is board specific, ldo15s is unused */ }; }; }; &ext_24_5m { clock-frequency = <24576000>; }; &ext_200m { clock-frequency = <200000000>; }; &hsi2c_8 { status = "okay"; eeprom: eeprom@50 { compatible = "atmel,24c08"; reg = <0x50>; }; }; &hsi2c_12 { status = "okay"; /* TODO: add the devices once drivers exist */ usb-typec@25 { compatible = "maxim,max77759-tcpci", "maxim,max33359"; reg = <0x25>; interrupts-extended = <&gpa8 2 IRQ_TYPE_LEVEL_LOW>; pinctrl-0 = <&typec_int>; pinctrl-names = "default"; connector { compatible = "usb-c-connector"; label = "USB-C"; data-role = "dual"; power-role = "dual"; self-powered; try-power-role = "sink"; op-sink-microwatt = <2600000>; slow-charger-loop; /* * max77759 operating in reverse boost mode (0xA) can * source up to 1.5A while extboost can only do ~1A. * Since extboost is the primary path, advertise 900mA. */ source-pdos = ; sink-pdos = ; sink-vdos = ; sink-vdos-v1 = ; /* * Until bootloader is updated to set those two when * console is enabled, we disable PD here. */ pd-disable; typec-power-opmode = "default"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usbc0_orien_sw: endpoint { remote-endpoint = <&usbdrd31_phy_orien_switch>; }; }; port@1 { reg = <1>; usbc0_role_sw: endpoint { remote-endpoint = <&usbdrd31_dwc3_role_switch>; }; }; }; }; }; fuel-gauge@36 { compatible = "maxim,max77759-fg"; reg = <0x36>; pinctrl-0 = <&if_pmic_fg_int>; pinctrl-names = "default"; interrupts-extended = <&gpa9 3 IRQ_TYPE_LEVEL_LOW>; shunt-resistor-micro-ohms = <5000>; }; pmic@66 { compatible = "maxim,max77759"; reg = <0x66>; pinctrl-0 = <&if_pmic_int>; pinctrl-names = "default"; interrupts-extended = <&gpa8 3 IRQ_TYPE_LEVEL_LOW>; interrupt-controller; #interrupt-cells = <2>; gpio { compatible = "maxim,max77759-gpio"; gpio-controller; #gpio-cells = <2>; /* * "Human-readable name [SIGNAL_LABEL]" where the * latter comes from the schematic */ gpio-line-names = "OTG boost [OTG_BOOST_EN]", "max20339 IRQ [MW_OVP_INT_L]"; interrupt-controller; #interrupt-cells = <2>; }; nvmem-0 { compatible = "maxim,max77759-nvmem"; nvmem-layout { compatible = "fixed-layout"; #address-cells = <1>; #size-cells = <1>; nvmem_reboot_mode: reboot-mode@0 { reg = <0x0 0x4>; }; boot-reason@4 { reg = <0x4 0x4>; }; shutdown-user-flag@8 { reg = <0x8 0x1>; }; rsoc@a { reg = <0xa 0x2>; }; }; }; }; }; &pinctrl_far_alive { key_voldown: key-voldown-pins { samsung,pins = "gpa7-3"; samsung,pin-function = ; samsung,pin-pud = ; samsung,pin-drv = ; }; key_volup: key-volup-pins { samsung,pins = "gpa8-1"; samsung,pin-function = ; samsung,pin-pud = ; samsung,pin-drv = ; }; typec_int: typec-int-pins { samsung,pins = "gpa8-2"; samsung,pin-function = ; samsung,pin-pud = ; samsung,pin-drv = ; }; if_pmic_int: if-pmic-int-pins { samsung,pins = "gpa8-3"; samsung,pin-function = ; samsung,pin-pud = ; samsung,pin-drv = ; }; }; &pinctrl_gpio_alive { pmic_int: pmic-int-pins { samsung,pins = "gpa0-6"; samsung,pin-function = ; samsung,pin-pud = ; }; sub_pmic_int: sub-pmic-int-pins { samsung,pins = "gpa0-7"; samsung,pin-function = ; samsung,pin-pud = ; }; if_pmic_fg_int: if-pmic-fg-int-pins { samsung,pins = "gpa9-3"; samsung,pin-function = ; samsung,pin-pud = ; samsung,pin-drv = ; }; key_power: key-power-pins { samsung,pins = "gpa10-1"; samsung,pin-function = ; samsung,pin-pud = ; samsung,pin-drv = ; }; }; &serial_0 { status = "okay"; }; &ufs_0 { status = "okay"; vcc-supply = <&ufs_0_fixed_vcc_reg>; }; &ufs_0_phy { status = "okay"; }; &usbdrd31 { vdd10-supply = <®_placeholder>; vdd33-supply = <®_placeholder>; status = "okay"; }; &usbdrd31_dwc3 { dr_mode = "otg"; usb-role-switch; role-switch-default-mode = "peripheral"; maximum-speed = "super-speed-plus"; status = "okay"; port { usbdrd31_dwc3_role_switch: endpoint { remote-endpoint = <&usbc0_role_sw>; }; }; }; &usbdrd31_phy { orientation-switch; /* TODO: Update these once PMIC is implemented */ pll-supply = <®_placeholder>; dvdd-usb20-supply = <®_placeholder>; vddh-usb20-supply = <®_placeholder>; vdd33-usb20-supply = <®_placeholder>; vdda-usbdp-supply = <®_placeholder>; vddh-usbdp-supply = <®_placeholder>; status = "okay"; port { usbdrd31_phy_orien_switch: endpoint { remote-endpoint = <&usbc0_orien_sw>; }; }; }; &usi_uart { samsung,clkreq-on; /* needed for UART mode */ status = "okay"; }; &usi8 { samsung,mode = ; status = "okay"; }; &usi12 { samsung,mode = ; status = "okay"; }; &watchdog_cl0 { timeout-sec = <30>; status = "okay"; };