diff mbox series

[v2,3/4] ARM: dts: exynos: Add regulator suspend configuration to Odroid XU3/XU4/HC1 family

Message ID 20190621155845.7079-3-krzk@kernel.org (mailing list archive)
State New, archived
Headers show
Series [v2,1/4] ARM: dts: exynos: Disable unused buck10 regulator on Odroid HC1 board | expand

Commit Message

Krzysztof Kozlowski June 21, 2019, 3:58 p.m. UTC
Add the PMIC regulator suspend configuration to entire Odroid
XU3/XU4/HC1 family of boards to reduce power usage during suspend.  The
configuration is based on vendor (Hardkernel) reference kernel.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>

---

Tested on XU3 and HC1 with SD card.

---

Changes since v1:
1. Add Marek's tag.
---
 arch/arm/boot/dts/exynos5422-odroid-core.dtsi | 92 +++++++++++++++++++
 1 file changed, 92 insertions(+)

Comments

Anand Moon June 23, 2019, 4:02 p.m. UTC | #1
Hi Krzysztof,

Thanks for this patch. Please add my

Tested-by: Anand Moon <linux.amoon@gmail.com>

[snip]

Could you integrate below small changes into this patch.
with these below changes suspend and resume work correctly at my end.

[1] XU4_suspendresume.patch

As per S2MPS11B PMIC 1.2.1 Regulator (Features)
Fix the min max value for *Buck7* and *Buck8*

-- Buck7 (VDD_1.0V_LDO) 1.5 A (1.2 V to 1.5 V, 12.5 mV step, default on 1.35 V)
-- Buck8 (VDD_1.8V_LDO) 2.5 A (1.8 V to 2.1 V, 12.5 mV step, default on 2.0 V)

Also add suspend-off for *Buck9*
Buck9 internally controls the power of USB hub.
Adding suspend the this node help proper reset of USB hub on Odroid
XU4 / HC1/ XU3
during suspend and resume. Below it the logs from my testing.

[2] https://pastebin.com/pRJJmWL6

Best Regards
-Anand
[root@archl-xu4e ~]#  rtcwake -d /dev/rtc0 -m mem -s 10
rtcwake: assuming RTC uses UTC ...
rtcwake: wakeup from "mem" using /dev/rtc0 at Sun Jun 23 14:29:56 2019
[   72.707852] PM: suspend entry (deep)
[   72.712727] Filesystems sync: 0.002 seconds
[   72.722108] Freezing user space processes ... (elapsed 0.002 seconds) done.
[   72.730550] OOM killer disabled.
[   72.733462] Freezing remaining freezable tasks ... (elapsed 0.002 seconds) done.
[   72.815847] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[   72.971552] wake enabled for irq 151
[   73.007942] wake enabled for irq 155
[   73.128081] samsung-pinctrl 13400000.pinctrl: Setting external wakeup interrupt mask: 0xffffffe7
[   73.146535] Disabling non-boot CPUs ...
[   73.225374] s3c2410-wdt 101d0000.watchdog: watchdog disabled
[   73.229930] usb usb1: root hub lost power or was reset
[   73.299725] usb usb2: root hub lost power or was reset
[   73.304474] wake disabled for irq 155
[   73.314064] wake disabled for irq 151
[   73.331117] exynos-tmu 10060000.tmu: More trip points than supported by this TMU.
[   73.337297] exynos-tmu 10060000.tmu: 2 trip points should be configured in polling mode.
[   73.345343] exynos-tmu 10064000.tmu: More trip points than supported by this TMU.
[   73.352807] exynos-tmu 10064000.tmu: 2 trip points should be configured in polling mode.
[   73.360916] exynos-tmu 10068000.tmu: More trip points than supported by this TMU.
[   73.368295] exynos-tmu 10068000.tmu: 2 trip points should be configured in polling mode.
[   73.376429] exynos-tmu 1006c000.tmu: More trip points than supported by this TMU.
[   73.383742] exynos-tmu 1006c000.tmu: 2 trip points should be configured in polling mode.
[   73.394345] usb usb3: root hub lost power or was reset
[   73.394704] s3c-rtc 101e0000.rtc: rtc disabled, re-enabling
[   73.394840] usb usb5: root hub lost power or was reset
[   73.394864] usb usb6: root hub lost power or was reset
[   73.398063] usb usb4: root hub lost power or was reset
[   73.806876] usb 4-1: reset SuperSpeed Gen 1 USB device number 2 using xhci-hcd
[   73.986504] usb 3-1: reset high-speed USB device number 2 using xhci-hcd
[   74.026814] usb 5-1: reset high-speed USB device number 2 using xhci-hcd
[   74.266364] usb 4-1.1: reset SuperSpeed Gen 1 USB device number 3 using xhci-hcd
[   74.988689] OOM killer enabled.
[   74.990372] Restarting tasks ... done.
[   74.997529] PM: suspend exit
[   75.014009] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 400000Hz, actual 396825HZ div = 63)
[root@archl-xu4e ~]# [   75.243019] mmc_host mmc0: Bus speed (slot 0) = 200000000Hz (slot req 200000000Hz, actual 200000000HZ div = 0)
[   75.255929] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 52000000Hz, actual 50000000HZ div = 0)
[   75.290096] mmc_host mmc0: Bus speed (slot 0) = 400000000Hz (slot req 200000000Hz, actual 200000000HZ div = 1)

[root@archl-xu4e ~]#  rtcwake -d /dev/rtc0 -m mem -s 10
rtcwake: assuming RTC uses UTC ...
rtcwake: wakeup from "mem" using /dev/rtc0 at Sun Jun 23 14:30:20 2019
[   86.308500] PM: suspend entry (deep)
[   86.311962] Filesystems sync: 0.001 seconds
[   86.320781] Freezing user space processes ... (elapsed 0.002 seconds) done.
[   86.328542] OOM killer disabled.
[   86.331644] Freezing remaining freezable tasks ... (elapsed 0.002 seconds) done.
[   86.435700] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[   86.591293] wake enabled for irq 151
[   86.626989] wake enabled for irq 155
[   86.747140] samsung-pinctrl 13400000.pinctrl: Setting external wakeup interrupt mask: 0xffffffe7
[   86.765605] Disabling non-boot CPUs ...
[   86.841073] s3c2410-wdt 101d0000.watchdog: watchdog disabled
[   86.845648] usb usb1: root hub lost power or was reset
[   86.919564] usb usb2: root hub lost power or was reset
[   86.924314] wake disabled for irq 155
[   86.933852] wake disabled for irq 151
[   86.950827] exynos-tmu 10060000.tmu: More trip points than supported by this TMU.
[   86.957003] exynos-tmu 10060000.tmu: 2 trip points should be configured in polling mode.
[   86.965055] exynos-tmu 10064000.tmu: More trip points than supported by this TMU.
[   86.972496] exynos-tmu 10064000.tmu: 2 trip points should be configured in polling mode.
[   86.980632] exynos-tmu 10068000.tmu: More trip points than supported by this TMU.
[   86.988014] exynos-tmu 10068000.tmu: 2 trip points should be configured in polling mode.
[   86.996148] exynos-tmu 1006c000.tmu: More trip points than supported by this TMU.
[   87.003452] exynos-tmu 1006c000.tmu: 2 trip points should be configured in polling mode.
[   87.013926] usb usb3: root hub lost power or was reset
[   87.014295] s3c-rtc 101e0000.rtc: rtc disabled, re-enabling
[   87.014473] usb usb5: root hub lost power or was reset
[   87.014498] usb usb6: root hub lost power or was reset
[   87.017644] usb usb4: root hub lost power or was reset
[   87.427075] usb 4-1: reset SuperSpeed Gen 1 USB device number 2 using xhci-hcd
[   87.606386] usb 3-1: reset high-speed USB device number 2 using xhci-hcd
[   87.646461] usb 5-1: reset high-speed USB device number 2 using xhci-hcd
[   87.886242] usb 4-1.1: reset SuperSpeed Gen 1 USB device number 3 using xhci-hcd
[   88.607881] OOM killer enabled.
[   88.609562] Restarting tasks ... done.
[   88.614340] PM: suspend exit
[   88.632953] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 400000Hz, actual 396825HZ div = 63)
[root@archl-xu4e ~]# [   88.896900] mmc_host mmc0: Bus speed (slot 0) = 200000000Hz (slot req 200000000Hz, actual 200000000HZ div = 0)
[   88.912970] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 52000000Hz, actual 50000000HZ div = 0)
[   88.929810] mmc_host mmc0: Bus speed (slot 0) = 400000000Hz (slot req 200000000Hz, actual 200000000HZ div = 1)

[root@archl-xu4e ~]#  rtcwake -d /dev/rtc0 -m mem -s 10
rtcwake: assuming RTC uses UTC ...
rtcwake: wakeup from "mem" using /dev/rtc0 at Sun Jun 23 14:30:41 2019
[   97.024433] PM: suspend entry (deep)
[   97.030395] Filesystems sync: 0.003 seconds
[   97.036715] Freezing user space processes ... (elapsed 0.002 seconds) done.
[   97.044507] OOM killer disabled.
[   97.047753] Freezing remaining freezable tasks ... (elapsed 0.002 seconds) done.
[   97.105552] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[   97.261608] wake enabled for irq 151
[   97.299424] wake enabled for irq 155
[   97.415885] samsung-pinctrl 13400000.pinctrl: Setting external wakeup interrupt mask: 0xffffffe7
[   97.433150] Disabling non-boot CPUs ...
[   97.526880] s3c2410-wdt 101d0000.watchdog: watchdog disabled
[   97.531343] usb usb1: root hub lost power or was reset
[   97.609426] usb usb2: root hub lost power or was reset
[   97.614169] wake disabled for irq 155
[   97.623676] wake disabled for irq 151
[   97.640212] exynos-tmu 10060000.tmu: More trip points than supported by this TMU.
[   97.646403] exynos-tmu 10060000.tmu: 2 trip points should be configured in polling mode.
[   97.654436] exynos-tmu 10064000.tmu: More trip points than supported by this TMU.
[   97.661883] exynos-tmu 10064000.tmu: 2 trip points should be configured in polling mode.
[   97.670005] exynos-tmu 10068000.tmu: More trip points than supported by this TMU.
[   97.677395] exynos-tmu 10068000.tmu: 2 trip points should be configured in polling mode.
[   97.685522] exynos-tmu 1006c000.tmu: More trip points than supported by this TMU.
[   97.692834] exynos-tmu 1006c000.tmu: 2 trip points should be configured in polling mode.
[   97.703438] usb usb3: root hub lost power or was reset
[   97.703790] s3c-rtc 101e0000.rtc: rtc disabled, re-enabling
[   97.707156] usb usb4: root hub lost power or was reset
[   97.719084] usb usb5: root hub lost power or was reset
[   97.722931] usb usb6: root hub lost power or was reset
[   98.116558] usb 4-1: reset SuperSpeed Gen 1 USB device number 2 using xhci-hcd
[   98.296240] usb 3-1: reset high-speed USB device number 2 using xhci-hcd
[   98.336318] usb 5-1: reset high-speed USB device number 2 using xhci-hcd
[   98.576097] usb 4-1.1: reset SuperSpeed Gen 1 USB device number 3 using xhci-hcd
[   99.300281] OOM killer enabled.
[   99.301995] Restarting tasks ... done.
[   99.309311] PM: suspend exit
[root@archl-xu4e ~]# [   99.326729] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 400000Hz, actual 396825HZ div = 63)
[   99.563622] mmc_host mmc0: Bus speed (slot 0) = 200000000Hz (slot req 200000000Hz, actual 200000000HZ div = 0)
[   99.577778] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 52000000Hz, actual 50000000HZ div = 0)
[   99.587818] mmc_host mmc0: Bus speed (slot 0) = 400000000Hz (slot req 200000000Hz, actual 200000000HZ div = 1)

[root@archl-xu4e ~]# lsusb -t
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/2p, 5000M
        |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=uas, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/2p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=exynos-ehci/3p, 480M
Marek Szyprowski June 24, 2019, 7:20 a.m. UTC | #2
Hi Anand,

On 2019-06-23 18:02, Anand Moon wrote:
> Thanks for this patch. Please add my
>
> Tested-by: Anand Moon <linux.amoon@gmail.com>
>
> [snip]
>
> Could you integrate below small changes into this patch.
> with these below changes suspend and resume work correctly at my end.
>
> [1] XU4_suspendresume.patch
>
> As per S2MPS11B PMIC 1.2.1 Regulator (Features)
> Fix the min max value for *Buck7* and *Buck8*
>
> -- Buck7 (VDD_1.0V_LDO) 1.5 A (1.2 V to 1.5 V, 12.5 mV step, default on 1.35 V)
> -- Buck8 (VDD_1.8V_LDO) 2.5 A (1.8 V to 2.1 V, 12.5 mV step, default on 2.0 V)

Could you elaborate why such change for Buck7 and Buck8 is needed?

> Also add suspend-off for *Buck9*
> Buck9 internally controls the power of USB hub.
> Adding suspend the this node help proper reset of USB hub on Odroid
> XU4 / HC1/ XU3
> during suspend and resume. Below it the logs from my testing.

Disabling Buck9 in suspend indeed reduces the power consumed by the 
board during suspend-to-ram from about 80mA to as little as 7-10mA, what 
matches the results of OdroidXU3. Thanks for the hint!

Best regards
Krzysztof Kozlowski June 24, 2019, 7:41 a.m. UTC | #3
On Mon, 24 Jun 2019 at 09:20, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
>
> Hi Anand,
>
> On 2019-06-23 18:02, Anand Moon wrote:
> > Thanks for this patch. Please add my
> >
> > Tested-by: Anand Moon <linux.amoon@gmail.com>
> >
> > [snip]
> >
> > Could you integrate below small changes into this patch.
> > with these below changes suspend and resume work correctly at my end.
> >
> > [1] XU4_suspendresume.patch
> >
> > As per S2MPS11B PMIC 1.2.1 Regulator (Features)
> > Fix the min max value for *Buck7* and *Buck8*
> >
> > -- Buck7 (VDD_1.0V_LDO) 1.5 A (1.2 V to 1.5 V, 12.5 mV step, default on 1.35 V)
> > -- Buck8 (VDD_1.8V_LDO) 2.5 A (1.8 V to 2.1 V, 12.5 mV step, default on 2.0 V)
>
> Could you elaborate why such change for Buck7 and Buck8 is needed?

Anand has here valid point - the constraints in DTS do not match
hardware manual. This leads to question whether voltage table in
driver is proper... Another point is the voltage itself. The
schematics describes them as at specific voltage (1.35 V and 2.0 V)
but after boot they are 1.2 V and 1.85 V. Maybe this shift comes from
the problem above.

>
> > Also add suspend-off for *Buck9*
> > Buck9 internally controls the power of USB hub.
> > Adding suspend the this node help proper reset of USB hub on Odroid
> > XU4 / HC1/ XU3
> > during suspend and resume. Below it the logs from my testing.
>
> Disabling Buck9 in suspend indeed reduces the power consumed by the
> board during suspend-to-ram from about 80mA to as little as 7-10mA, what
> matches the results of OdroidXU3. Thanks for the hint!

Although I did not get what is the difference in the logs (Anand
pasted two logs but they look the same) but the power consumption is
reason is good enough. I would be happy to put in the changelog entire
consumption  difference. I can measure it on XU3-Lite but can you give
me the XU4 (before and after)?

Best regards,
Krzysztof
Marek Szyprowski June 24, 2019, 9:01 a.m. UTC | #4
Hi Krzysztof,

On 2019-06-24 09:41, Krzysztof Kozlowski wrote:
> On Mon, 24 Jun 2019 at 09:20, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
>> On 2019-06-23 18:02, Anand Moon wrote:
>>> Thanks for this patch. Please add my
>>>
>>> Tested-by: Anand Moon <linux.amoon@gmail.com>
>>>
>>> [snip]
>>>
>>> Could you integrate below small changes into this patch.
>>> with these below changes suspend and resume work correctly at my end.
>>>
>>> [1] XU4_suspendresume.patch
>>>
>>> As per S2MPS11B PMIC 1.2.1 Regulator (Features)
>>> Fix the min max value for *Buck7* and *Buck8*
>>>
>>> -- Buck7 (VDD_1.0V_LDO) 1.5 A (1.2 V to 1.5 V, 12.5 mV step, default on 1.35 V)
>>> -- Buck8 (VDD_1.8V_LDO) 2.5 A (1.8 V to 2.1 V, 12.5 mV step, default on 2.0 V)
>> Could you elaborate why such change for Buck7 and Buck8 is needed?
> Anand has here valid point - the constraints in DTS do not match
> hardware manual. This leads to question whether voltage table in
> driver is proper... Another point is the voltage itself. The
> schematics describes them as at specific voltage (1.35 V and 2.0 V)
> but after boot they are 1.2 V and 1.85 V. Maybe this shift comes from
> the problem above.
>
>>> Also add suspend-off for *Buck9*
>>> Buck9 internally controls the power of USB hub.
>>> Adding suspend the this node help proper reset of USB hub on Odroid
>>> XU4 / HC1/ XU3
>>> during suspend and resume. Below it the logs from my testing.
>> Disabling Buck9 in suspend indeed reduces the power consumed by the
>> board during suspend-to-ram from about 80mA to as little as 7-10mA, what
>> matches the results of OdroidXU3. Thanks for the hint!
> Although I did not get what is the difference in the logs (Anand
> pasted two logs but they look the same) but the power consumption is
> reason is good enough. I would be happy to put in the changelog entire
> consumption  difference. I can measure it on XU3-Lite but can you give
> me the XU4 (before and after)?\


HC1:

next-20190620: 120mA (@5V)
this patchset: 72mA (@5V)
this patchset + fixup from Anand: 7-10mA (@5V)

XU4 (SDcard):

next-20190620: 88mA (@5V)
this patchset: 74mA (@5V), sometimes 42mA (@5V)
this patchset + fixup from Anand: 6-9mA (@5V)


XU4 (eMMC):

next-20190620: 100mA (@5V)
this patchset: 72mA (@5V), sometimes 41mA (@5V)
this patchset + fixup from Anand: 6-9mA (@5V)


Best regards
Anand Moon June 24, 2019, 1:42 p.m. UTC | #5
Hi Marek / Krzysztof,

On Mon, 24 Jun 2019 at 14:31, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
>
> Hi Krzysztof,
>
> On 2019-06-24 09:41, Krzysztof Kozlowski wrote:
> > On Mon, 24 Jun 2019 at 09:20, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
> >> On 2019-06-23 18:02, Anand Moon wrote:
> >>> Thanks for this patch. Please add my
> >>>
> >>> Tested-by: Anand Moon <linux.amoon@gmail.com>
> >>>
> >>> [snip]
> >>>
> >>> Could you integrate below small changes into this patch.
> >>> with these below changes suspend and resume work correctly at my end.
> >>>
> >>> [1] XU4_suspendresume.patch
> >>>
> >>> As per S2MPS11B PMIC 1.2.1 Regulator (Features)
> >>> Fix the min max value for *Buck7* and *Buck8*
> >>>
> >>> -- Buck7 (VDD_1.0V_LDO) 1.5 A (1.2 V to 1.5 V, 12.5 mV step, default on 1.35 V)
> >>> -- Buck8 (VDD_1.8V_LDO) 2.5 A (1.8 V to 2.1 V, 12.5 mV step, default on 2.0 V)
> >> Could you elaborate why such change for Buck7 and Buck8 is needed?
> > Anand has here valid point - the constraints in DTS do not match
> > hardware manual. This leads to question whether voltage table in
> > driver is proper... Another point is the voltage itself. The
> > schematics describes them as at specific voltage (1.35 V and 2.0 V)
> > but after boot they are 1.2 V and 1.85 V. Maybe this shift comes from
> > the problem above.
> >
> >>> Also add suspend-off for *Buck9*
> >>> Buck9 internally controls the power of USB hub.
> >>> Adding suspend the this node help proper reset of USB hub on Odroid
> >>> XU4 / HC1/ XU3
> >>> during suspend and resume. Below it the logs from my testing.
> >> Disabling Buck9 in suspend indeed reduces the power consumed by the
> >> board during suspend-to-ram from about 80mA to as little as 7-10mA, what
> >> matches the results of OdroidXU3. Thanks for the hint!
> > Although I did not get what is the difference in the logs (Anand
> > pasted two logs but they look the same) but the power consumption is
> > reason is good enough. I would be happy to put in the changelog entire
> > consumption  difference. I can measure it on XU3-Lite but can you give
> > me the XU4 (before and after)?\
>
>
> HC1:
>
> next-20190620: 120mA (@5V)
> this patchset: 72mA (@5V)
> this patchset + fixup from Anand: 7-10mA (@5V)
>
> XU4 (SDcard):
>
> next-20190620: 88mA (@5V)
> this patchset: 74mA (@5V), sometimes 42mA (@5V)
> this patchset + fixup from Anand: 6-9mA (@5V)
>
>
> XU4 (eMMC):
>
> next-20190620: 100mA (@5V)
> this patchset: 72mA (@5V), sometimes 41mA (@5V)
> this patchset + fixup from Anand: 6-9mA (@5V)
>
>
> Best regards
> --
> Marek Szyprowski, PhD
> Samsung R&D Institute Poland
>

Thanks for this results.

Best Regards
-Anand
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/exynos5422-odroid-core.dtsi b/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
index 0f967259ad29..5a4f7dd2568b 100644
--- a/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
+++ b/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
@@ -177,6 +177,10 @@ 
 				regulator-name = "vdd_adc";
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <1800000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo5_reg: LDO5 {
@@ -184,6 +188,10 @@ 
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <1800000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo6_reg: LDO6 {
@@ -191,6 +199,10 @@ 
 				regulator-min-microvolt = <1000000>;
 				regulator-max-microvolt = <1000000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo7_reg: LDO7 {
@@ -198,6 +210,10 @@ 
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <1800000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo8_reg: LDO8 {
@@ -205,6 +221,10 @@ 
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <1800000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo9_reg: LDO9 {
@@ -212,6 +232,10 @@ 
 				regulator-min-microvolt = <3000000>;
 				regulator-max-microvolt = <3000000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo10_reg: LDO10 {
@@ -219,6 +243,10 @@ 
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <1800000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo11_reg: LDO11 {
@@ -226,6 +254,10 @@ 
 				regulator-min-microvolt = <1000000>;
 				regulator-max-microvolt = <1000000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo12_reg: LDO12 {
@@ -239,6 +271,10 @@ 
 				regulator-name = "vddq_mmc2";
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <2800000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo14_reg: LDO14 {
@@ -253,6 +289,10 @@ 
 				regulator-min-microvolt = <3300000>;
 				regulator-max-microvolt = <3300000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo16_reg: LDO16 {
@@ -267,18 +307,30 @@ 
 				regulator-min-microvolt = <3300000>;
 				regulator-max-microvolt = <3300000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo18_reg: LDO18 {
 				regulator-name = "vdd_emmc_1V8";
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <1800000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo19_reg: LDO19 {
 				regulator-name = "vdd_sd";
 				regulator-min-microvolt = <2800000>;
 				regulator-max-microvolt = <2800000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo20_reg: LDO20 {
@@ -307,6 +359,10 @@ 
 				regulator-min-microvolt = <1100000>;
 				regulator-max-microvolt = <1100000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo24_reg: LDO24 {
@@ -328,6 +384,10 @@ 
 				regulator-name = "vdd_ldo26";
 				regulator-min-microvolt = <800000>;
 				regulator-max-microvolt = <3950000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo27_reg: LDO27 {
@@ -335,6 +395,10 @@ 
 				regulator-min-microvolt = <1000000>;
 				regulator-max-microvolt = <1000000>;
 				regulator-always-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo28_reg: LDO28 {
@@ -342,6 +406,10 @@ 
 				regulator-name = "vdd_ldo28";
 				regulator-min-microvolt = <800000>;
 				regulator-max-microvolt = <3950000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			ldo29_reg: LDO29 {
@@ -420,6 +488,10 @@ 
 				regulator-max-microvolt = <1300000>;
 				regulator-always-on;
 				regulator-boot-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			buck2_reg: BUCK2 {
@@ -428,6 +500,10 @@ 
 				regulator-max-microvolt = <1500000>;
 				regulator-always-on;
 				regulator-boot-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			buck3_reg: BUCK3 {
@@ -436,6 +512,10 @@ 
 				regulator-max-microvolt = <1400000>;
 				regulator-always-on;
 				regulator-boot-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			buck4_reg: BUCK4 {
@@ -444,6 +524,10 @@ 
 				regulator-max-microvolt = <1400000>;
 				regulator-always-on;
 				regulator-boot-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			buck5_reg: BUCK5 {
@@ -460,6 +544,10 @@ 
 				regulator-max-microvolt = <1500000>;
 				regulator-always-on;
 				regulator-boot-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 
 			buck7_reg: BUCK7 {
@@ -490,6 +578,10 @@ 
 				regulator-name = "vdd_vmem";
 				regulator-min-microvolt = <2850000>;
 				regulator-max-microvolt = <2850000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
 			};
 		};
 	};