ARM: at91: pm: move the setup of soc_pm.bu->suspended
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Thu, 15 Apr 2021 10:49:48 +0000 (13:49 +0300)
committerNicolas Ferre <nicolas.ferre@microchip.com>
Mon, 19 Jul 2021 12:32:11 +0000 (14:32 +0200)
Move the setup of soc_pm.bu->suspended in platform_suspend::begin
function so that the PMC code in charge with clocks suspend/resume
to differentiate b/w standard PM mode and backup mode.

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20210415105010.569620-3-claudiu.beznea@microchip.com
arch/arm/mach-at91/pm.c

index e13ceef..3742a1f 100644 (file)
@@ -214,6 +214,8 @@ static int at91_sam9x60_config_pmc_ws(void __iomem *pmc, u32 mode, u32 polarity)
  */
 static int at91_pm_begin(suspend_state_t state)
 {
+       int ret;
+
        switch (state) {
        case PM_SUSPEND_MEM:
                soc_pm.data.mode = soc_pm.data.suspend_mode;
@@ -227,7 +229,16 @@ static int at91_pm_begin(suspend_state_t state)
                soc_pm.data.mode = -1;
        }
 
-       return at91_pm_config_ws(soc_pm.data.mode, true);
+       ret = at91_pm_config_ws(soc_pm.data.mode, true);
+       if (ret)
+               return ret;
+
+       if (soc_pm.data.mode == AT91_PM_BACKUP)
+               soc_pm.bu->suspended = 1;
+       else if (soc_pm.bu)
+               soc_pm.bu->suspended = 0;
+
+       return 0;
 }
 
 /*
@@ -296,8 +307,6 @@ static int at91_suspend_finish(unsigned long val)
 static void at91_pm_suspend(suspend_state_t state)
 {
        if (soc_pm.data.mode == AT91_PM_BACKUP) {
-               soc_pm.bu->suspended = 1;
-
                cpu_suspend(0, at91_suspend_finish);
 
                /* The SRAM is lost between suspend cycles */