M701: add charing animation when charging power off and restart.
authorzhengxing <zhengxing@rock-chips.com>
Mon, 15 Oct 2012 03:41:18 +0000 (11:41 +0800)
committerzhengxing <zhengxing@rock-chips.com>
Mon, 15 Oct 2012 03:41:18 +0000 (11:41 +0800)
arch/arm/mach-rk30/board-rk3066b-m701.c

index 3aac306606ca517f37b7c5373f12529cb5e69075..4c21be42be8301ac13d02c0379ea01efbf7e24a4 100755 (executable)
@@ -1600,10 +1600,34 @@ static void __init rk30_i2c_register_board_info(void)
 }
 //end of i2c
 
+#define POWEROFF_CHARGING_ANIMATION            (1)
 #define POWER_ON_PIN RK30_PIN0_PA0   //power_hold
 static void rk30_pm_power_off(void)
 {
-       printk(KERN_ERR "rk30_pm_power_off start...\n");
+#if POWEROFF_CHARGING_ANIMATION
+       int pwr_cnt = 0;
+       struct rk30_adc_battery_platform_data *batt_plat_data = &rk30_adc_battery_platdata;
+       if (gpio_get_value (batt_plat_data->dc_det_pin)  ==
+               batt_plat_data->dc_det_level) {
+               printk("AC Charging, try to restart...\n");
+               while (1) {
+                        if (gpio_get_value (batt_plat_data->dc_det_pin) !=
+                               batt_plat_data->dc_det_level ) {
+                               pwr_cnt = 0;
+                               break;
+                        }
+                        if (pwr_cnt++ > 40)
+                               break;
+                        mdelay(50);
+               }
+               if (pwr_cnt > 40)  {
+                       printk("AC Charging, will restart system...\n");
+                       arm_pm_restart(0, NULL);
+               }
+       }
+#endif
+
+       printk("rk30_pm_power_off start...\n");
        gpio_direction_output(POWER_ON_PIN, GPIO_LOW);
 #if defined(CONFIG_MFD_WM831X)
        wm831x_set_bits(Wm831x,WM831X_GPIO_LEVEL,0x0001,0x0000);  //set sys_pwr 0