From b43d6f2739cae50bee01d1ce9c66d3d374a65126 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 2 Aug 2011 22:50:06 +0800 Subject: [PATCH] RK29_phone:impove battery detect driver --- drivers/power/wm831x_power.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/power/wm831x_power.c b/drivers/power/wm831x_power.c index 6d37030d25f8..efe82d287036 100755 --- a/drivers/power/wm831x_power.c +++ b/drivers/power/wm831x_power.c @@ -735,6 +735,8 @@ void wm831x_batt_vol_level(struct wm831x_power *wm831x_power, int batt_vol, int static int disp_plus = 1000; static int disp_minus = 1000; static int disp_curr = 0; + static int disp_num = 50; + *level = wm831x_power->batt_info.level; ret = wm831x_bat_check_status(wm831x_power->wm831x, &status); @@ -799,16 +801,23 @@ void wm831x_batt_vol_level(struct wm831x_power *wm831x_power, int batt_vol, int disp_curr = 0; } else - { + { + if (*level <= (wm831x_power->batt_info.level-1)) { disp_plus = 0; disp_curr = 0; - if (++disp_minus > 50) + if (++disp_minus > disp_num) { *level = wm831x_power->batt_info.level - 1; disp_minus = 0; + + if((*level < 17) || (*level > 85)) + disp_num = 10; + else + disp_num = 50; + } else { @@ -820,7 +829,7 @@ void wm831x_batt_vol_level(struct wm831x_power *wm831x_power, int batt_vol, int disp_plus = 0; disp_minus = 0; - if (++disp_curr > 50) + if (++disp_curr > disp_num) { *level = *level; disp_curr = 0; @@ -835,10 +844,14 @@ void wm831x_batt_vol_level(struct wm831x_power *wm831x_power, int batt_vol, int disp_minus = 0; disp_curr = 0; - if (++disp_plus > 100) + if (++disp_plus > (disp_num<<1)) { *level = wm831x_power->batt_info.level + 1; disp_plus = 0; + if((*level < 17) || (*level > 85)) + disp_num = 10; + else + disp_num = 50; } else { -- 2.34.1