arm64: dts: exynos: gs101-pixel: add all S2MPG1x regulators

Most rails are the same between Pixel 6 and Pro, with the following
differences:
    * only Pro has UWB
    * Pro uses l2m, not l14m, for TCXO
    * Pro uses bucka, not l31m, for NFC

Signed-off-by: André Draszik <andre.draszik@linaro.org>
Link: https://patch.msgid.link/20260210-s2mpg1x-regulators-dts-v2-1-68783c9e0a32@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
This commit is contained in:
André Draszik 2026-02-10 11:30:43 +00:00 committed by Krzysztof Kozlowski
parent 5d692f20de
commit 862529843f
3 changed files with 549 additions and 1 deletions

View File

@ -8,6 +8,7 @@
/dts-v1/;
#include <dt-bindings/regulator/samsung,s2mpg10-regulator.h>
#include "gs101-pixel-common.dtsi"
/ {
@ -15,6 +16,27 @@ / {
compatible = "google,gs101-oriole", "google,gs101";
};
&acpm_ipc {
pmic-1 {
regulators {
ldo14m {
/* PLL */
regulator-name = "avdd18_tcxo";
regulator-min-microvolt = <1600000>;
regulator-max-microvolt = <1950000>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_TCXO_ON>;
};
ldo31m {
regulator-name = "nfc";
regulator-min-microvolt = <1600000>;
regulator-max-microvolt = <1950000>;
};
};
};
};
&cont_splash_mem {
reg = <0x0 0xfac00000 (1080 * 2400 * 4)>;
status = "okay";

View File

@ -10,6 +10,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/regulator/samsung,s2mpg10-regulator.h>
#include <dt-bindings/usb/pd.h>
#include "gs101-pinctrl.h"
#include "gs101.dtsi"
@ -28,6 +29,8 @@ chosen {
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";
};
@ -101,7 +104,7 @@ cont_splash_mem: splash@fac00000 {
};
&acpm_ipc {
pmic {
pmic-1 {
compatible = "samsung,s2mpg10-pmic";
interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
@ -109,6 +112,22 @@ pmic {
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>;
@ -117,6 +136,489 @@ clocks {
};
regulators {
buck1m {
regulator-name = "vdd_mif";
regulator-min-microvolt = <450000>;
regulator-max-microvolt = <1300000>;
regulator-ramp-delay = <6250>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_PWREN_MIF>;
};
buck2m {
regulator-name = "vdd_cpucl2";
regulator-min-microvolt = <450000>;
regulator-max-microvolt = <1300000>;
regulator-ramp-delay = <12500>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_CPUCL2_EN2>;
};
buck3m {
regulator-name = "vdd_cpucl1";
regulator-min-microvolt = <450000>;
regulator-max-microvolt = <1300000>;
regulator-ramp-delay = <12500>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_CPUCL1_EN2>;
};
buck4m {
regulator-name = "vdd_cpucl0";
regulator-min-microvolt = <450000>;
regulator-max-microvolt = <1300000>;
regulator-ramp-delay = <12500>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_PWREN>;
};
buck5m {
regulator-name = "vdd_int";
regulator-min-microvolt = <450000>;
regulator-max-microvolt = <1300000>;
regulator-ramp-delay = <12500>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_PWREN_MIF>;
};
buck6m {
regulator-name = "vdd_cpucl2_m";
regulator-min-microvolt = <450000>;
regulator-max-microvolt = <1350000>;
regulator-ramp-delay = <12500>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_CPUCL2_EN2>;
};
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_EXTCTRL_PWREN_MIF>;
};
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 = <S2MPG10_EXTCTRL_TPU_EN>;
};
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 = <S2MPG10_EXTCTRL_PWREN_MIF>;
};
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 = <S2MPG10_EXTCTRL_PWREN_MIF>;
};
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 = <S2MPG10_EXTCTRL_TCXO_ON>;
};
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 = <S2MPG10_EXTCTRL_PWREN_MIF>;
};
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 = <S2MPG10_EXTCTRL_CPUCL1_EN2>;
};
ldo12m {
regulator-name = "vdd_cpucl0_m";
regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1300000>;
regulator-ramp-delay = <6250>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_PWREN>;
};
ldo13m {
regulator-name = "vdd_tpu_m";
regulator-min-microvolt = <450000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-always-on;
samsung,ext-control = <S2MPG10_EXTCTRL_TPU_EN>;
};
/* 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 = <S2MPG10_EXTCTRL_LDO20M_EN2>;
};
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 = <S2MPG11_EXTCTRL_PWREN_MIF>;
};
buck2s {
regulator-name = "vdd_g3d";
regulator-min-microvolt = <450000>;
regulator-max-microvolt = <1300000>;
regulator-ramp-delay = <12500>;
regulator-always-on;
samsung,ext-control = <S2MPG11_EXTCTRL_G3D_EN>;
};
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_EXTCTRL_PWREN_MIF>;
};
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 = <S2MPG11_EXTCTRL_G3D_EN>;
};
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_EXTCTRL_UFS_EN>;
};
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 = <S2MPG11_EXTCTRL_G3D_EN>;
};
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 = <S2MPG11_EXTCTRL_UFS_EN>;
};
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 = <S2MPG11_EXTCTRL_LDO13S_EN>;
};
/* ldo14s is board specific, ldo15s is unused */
};
};
};
@ -317,6 +819,12 @@ pmic_int: pmic-int-pins {
samsung,pin-pud = <GS101_PIN_PULL_NONE>;
};
sub_pmic_int: sub-pmic-int-pins {
samsung,pins = "gpa0-7";
samsung,pin-function = <GS101_PIN_FUNC_EINT>;
samsung,pin-pud = <GS101_PIN_PULL_NONE>;
};
key_power: key-power-pins {
samsung,pins = "gpa10-1";
samsung,pin-function = <GS101_PIN_FUNC_EINT>;

View File

@ -15,6 +15,24 @@ / {
compatible = "google,gs101-raven", "google,gs101";
};
&acpm_ipc {
pmic-2 {
regulators {
ldo4s {
regulator-name = "vdd2_uwb";
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <3300000>;
};
ldo14s {
regulator-name = "vdd3_uwb";
regulator-min-microvolt = <1600000>;
regulator-max-microvolt = <1950000>;
};
};
};
};
&cont_splash_mem {
reg = <0x0 0xfac00000 (1440 * 3120 * 4)>;
status = "okay";