MALI: midgard: RK: add wake_lock for delayed_work_to_power_off_gpu
[firefly-linux-kernel-4.4.55.git] / drivers / mfd / rt5036-misc.c
index 9dd6ad6db022b26c6dc20500493541fc0545dbdd..3a3bd7c2df07d052815b6189630774c9d9f0cd3f 100755 (executable)
@@ -25,6 +25,7 @@
 
 #include <linux/mfd/rt5036/rt5036.h>
 #include <linux/mfd/rt5036/rt5036-misc.h>
+#include <asm/system_misc.h>
 
 static struct i2c_client *g_shdn;
 
@@ -71,9 +72,17 @@ EXPORT_SYMBOL(rt5036_vin_exist);
 static bool rt_pm_off;
 void rt5036_chip_shutdown(void)
 {
-       if (g_shdn) {
-               rt5036_set_bits(g_shdn, RT5036_REG_MISC3, RT5036_CHIPSHDN_MASK);
-               rt5036_clr_bits(g_shdn, RT5036_REG_MISC3, RT5036_CHIPSHDN_MASK);
+       pr_info("%s\n", __func__);
+       if (rt5036_vin_exist()) {
+               arm_pm_restart('h', "charge");
+       } else {
+               if (g_shdn) {
+                       pr_info("chip enter shutdown process\n");
+                       rt5036_set_bits(g_shdn, RT5036_REG_MISC3,
+                                       RT5036_CHIPSHDN_MASK);
+                       rt5036_clr_bits(g_shdn, RT5036_REG_MISC3,
+                                       RT5036_CHIPSHDN_MASK);
+               }
        }
 }
 EXPORT_SYMBOL(rt5036_chip_shutdown);