Message ID | 20250425132727.5160-9-linux.amoon@gmail.com |
---|---|
State | New |
Headers | show |
Series | Add rtc and suspend to ram for Maxim MAX77686 PMIC | expand |
On 25/04/2025 15:26, Anand Moon wrote: > The MAX77686 PMCI is able to power down and up key core supplies and other > voltage rails via PWRREQ signal to enter / exit (deep) sleep mode. > PWRREQ status is ignored during initial power up and down processes. > All programming must be done before the AP enterns the sleep mode by > pulling PWRREQ low since the AP does not have programming capability > in (deep) sleep mode. > > Add suspend-to-mem node to regulator core to be enabled or disabled > during system suspend and also support changing the regulator operating > mode during runtime and when the system enter sleep mode (stand by mode). > > Regulators which can be turned off during system suspend: > -LDOn : 2, 6-8, 10-12, 14-16, > -BUCKn : 1-4. > Use standard regulator bindings for it ('regulator-off-in-suspend'). I do not believe you tested this but instead send whatever you found somewhere without actually understanding the code. In the past you were sending such patches - without knowing what they do and without actually testing. NAK Best regards, Krzysztof
Hi Krzysztof, On Fri, 25 Apr 2025 at 20:18, Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On 25/04/2025 15:26, Anand Moon wrote: > > The MAX77686 PMCI is able to power down and up key core supplies and other > > voltage rails via PWRREQ signal to enter / exit (deep) sleep mode. > > PWRREQ status is ignored during initial power up and down processes. > > All programming must be done before the AP enterns the sleep mode by > > pulling PWRREQ low since the AP does not have programming capability > > in (deep) sleep mode. > > > > Add suspend-to-mem node to regulator core to be enabled or disabled > > during system suspend and also support changing the regulator operating > > mode during runtime and when the system enter sleep mode (stand by mode). > > > > Regulators which can be turned off during system suspend: > > -LDOn : 2, 6-8, 10-12, 14-16, > > -BUCKn : 1-4. > > Use standard regulator bindings for it ('regulator-off-in-suspend'). > > I do not believe you tested this but instead send whatever you found > somewhere without actually understanding the code. In the past you were > sending such patches - without knowing what they do and without actually > testing. > > NAK > Thanks for your review comments, All the MAX77686 control register supports On/Off Control by PWRREQ signal. Once the Application Processor (AP) boots up, the AP is able to power down and up key core supplies and other voltage rails via PWRREQ signal to enter / exit (deep) sleep mode. PWRREQ status is ignored during initial power up and down processes. All programming must be done before the AP enterns the sleep mode by pulling PWRREQ l ow since the AP does not have programming capability in (deep) sleep mode. So PWRREQ has the following states for control registers 00: OFF (regardless of PWRREQ) 01: Output ON/OFF controlled by PWRREQ PWRREQ=H (1) : Output ON PWRREQ=L (0) : Output OFF 10: unused 11: ON (Regardless of PWRREQ) I have dome code mapping through the driver to understand this feature. If there is some code improvement plz suggest so. > Best regards, > Krzysztof Thanks -Anand
diff --git a/arch/arm/boot/dts/samsung/exynos5250-smdk5250.dts b/arch/arm/boot/dts/samsung/exynos5250-smdk5250.dts index d41409019671..866e56915a2a 100644 --- a/arch/arm/boot/dts/samsung/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/samsung/exynos5250-smdk5250.dts @@ -165,6 +165,10 @@ ldo2_reg: LDO2 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-always-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo3_reg: LDO3 { @@ -191,6 +195,10 @@ ldo6_reg: LDO6 { regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-always-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo7_reg: LDO7 { @@ -198,12 +206,20 @@ ldo7_reg: LDO7 { regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-always-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo8_reg: LDO8 { regulator-name = "P1.0V_LDO_OUT8"; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo10_reg: LDO10 { @@ -211,18 +227,30 @@ ldo10_reg: LDO10 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo11_reg: LDO11 { regulator-name = "P1.8V_LDO_OUT11"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo12_reg: LDO12 { regulator-name = "P3.0V_LDO_OUT12"; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo13_reg: LDO13 { @@ -235,18 +263,30 @@ ldo14_reg: LDO14 { regulator-name = "P1.8V_LDO_OUT14"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo15_reg: LDO15 { regulator-name = "P1.0V_LDO_OUT15"; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; ldo16_reg: LDO16 { regulator-name = "P1.8V_LDO_OUT16"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; buck1_reg: BUCK1 { @@ -255,6 +295,10 @@ buck1_reg: BUCK1 { regulator-max-microvolt = <1300000>; regulator-always-on; regulator-boot-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; buck2_reg: BUCK2 { @@ -263,6 +307,10 @@ buck2_reg: BUCK2 { regulator-max-microvolt = <1350000>; regulator-always-on; regulator-boot-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; buck3_reg: BUCK3 { @@ -271,6 +319,10 @@ buck3_reg: BUCK3 { regulator-max-microvolt = <1200000>; regulator-always-on; regulator-boot-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; buck4_reg: BUCK4 { @@ -279,6 +331,10 @@ buck4_reg: BUCK4 { regulator-max-microvolt = <1300000>; regulator-always-on; regulator-boot-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; }; buck5_reg: BUCK5 {
The MAX77686 PMCI is able to power down and up key core supplies and other voltage rails via PWRREQ signal to enter / exit (deep) sleep mode. PWRREQ status is ignored during initial power up and down processes. All programming must be done before the AP enterns the sleep mode by pulling PWRREQ low since the AP does not have programming capability in (deep) sleep mode. Add suspend-to-mem node to regulator core to be enabled or disabled during system suspend and also support changing the regulator operating mode during runtime and when the system enter sleep mode (stand by mode). Regulators which can be turned off during system suspend: -LDOn : 2, 6-8, 10-12, 14-16, -BUCKn : 1-4. Use standard regulator bindings for it ('regulator-off-in-suspend'). Signed-off-by: Anand Moon <linux.amoon@gmail.com> --- .../boot/dts/samsung/exynos5250-smdk5250.dts | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+)