]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: exynos: gs101-pixel: add all S2MPG1x regulators
authorAndré Draszik <andre.draszik@linaro.org>
Tue, 10 Feb 2026 11:30:43 +0000 (11:30 +0000)
committerKrzysztof Kozlowski <krzk@kernel.org>
Sat, 28 Feb 2026 14:40:26 +0000 (15:40 +0100)
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>
arch/arm64/boot/dts/exynos/google/gs101-oriole.dts
arch/arm64/boot/dts/exynos/google/gs101-pixel-common.dtsi
arch/arm64/boot/dts/exynos/google/gs101-raven.dts

index 8df42bedbc036b5e97f6238d64820370043ffef2..36721adcaa239da20d63173bdeab67f4381f3c91 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 
+#include <dt-bindings/regulator/samsung,s2mpg10-regulator.h>
 #include "gs101-pixel-common.dtsi"
 
 / {
        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";
index 93892adaa679439bd87b0630cf9416b05c9d4536..3a14610a6e69136f1b989cafea6a78668dab25a8 100644 (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 @@
                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";
                };
 };
 
 &acpm_ipc {
-       pmic {
+       pmic-1 {
                compatible = "samsung,s2mpg10-pmic";
                interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
                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>;
                };
 
                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 */
                };
        };
 };
                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>;
index 1e7e6b34b8649bc700a745c579a0268f0f6a9524..a422542715f27c8ea7a624f749b6d92e1bcb3429 100644 (file)
        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";