power: reset: sc27xx: Power off the external subsystems' connection
authorSherry Zong <sherry.zong@unisoc.com>
Mon, 9 Mar 2020 08:18:44 +0000 (16:18 +0800)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Wed, 11 Mar 2020 22:32:09 +0000 (23:32 +0100)
When powering off the whole system, we should power off some external
subsystems' connection firstly, otherwise some external subsystems
will hold some power and result in powering down abnormally.

Signed-off-by: Sherry Zong <sherry.zong@unisoc.com>
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/reset/sc27xx-poweroff.c

index 29fb08b..2bedd4c 100644 (file)
@@ -13,6 +13,8 @@
 
 #define SC27XX_PWR_PD_HW       0xc2c
 #define SC27XX_PWR_OFF_EN      BIT(0)
+#define SC27XX_SLP_CTRL                0xdf0
+#define SC27XX_LDO_XTL_EN      BIT(3)
 
 static struct regmap *regmap;
 
@@ -40,6 +42,9 @@ static struct syscore_ops poweroff_syscore_ops = {
 
 static void sc27xx_poweroff_do_poweroff(void)
 {
+       /* Disable the external subsys connection's power firstly */
+       regmap_write(regmap, SC27XX_SLP_CTRL, SC27XX_LDO_XTL_EN);
+
        regmap_write(regmap, SC27XX_PWR_PD_HW, SC27XX_PWR_OFF_EN);
 }