summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorRong Dian <b38775@freescale.com>2012-07-24 10:34:15 +0800
committerTerry Lv <r65388@freescale.com>2012-07-25 13:11:40 +0800
commitcf3095062b75f6e518c6ef8a25b47a5b2ced7668 (patch)
treec6311ff595e20d68ff5f2483fa7af23b1bd1f3c0 /drivers/power
parent4bd49edd9a394aadffb25b317ca9a56d829e845c (diff)
ENGR00218070 imx6 battery: fix charger led first wrong indication status
because boot time gap between led framwork and battery driver init,when system boots with charger attatched, charger led framwork loses the first charger online event,add once extra power_supply_changed can fix this issure Signed-off-by: Rong Dian <b38775@freescale.com>
Diffstat (limited to 'drivers/power')
-rwxr-xr-xdrivers/power/sabresd_battery.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/power/sabresd_battery.c b/drivers/power/sabresd_battery.c
index fcbbbc58763e..d7815449a9ce 100755
--- a/drivers/power/sabresd_battery.c
+++ b/drivers/power/sabresd_battery.c
@@ -29,7 +29,7 @@
#include <linux/sort.h>
-#define BATTERY_UPDATE_INTERVAL 120 /*seconds*/
+#define BATTERY_UPDATE_INTERVAL 5 /*seconds*/
#define LOW_VOLT_THRESHOLD 2800000
#define HIGH_VOLT_THRESHOLD 4200000
#define ADC_SAMPLE_COUNT 6
@@ -55,6 +55,7 @@ struct max8903_data {
int percent;
int old_percent;
int usb_charger_online;
+ int first_delay_count;
struct power_supply bat;
struct power_supply detect_usb;
struct mutex work_lock;
@@ -291,6 +292,16 @@ static void max8903_battery_update_status(struct max8903_data *data)
changed_flag = false;
power_supply_changed(&data->bat);
}
+ /*
+ because boot time gap between led framwork and charger
+ framwork,when system boots with charger attatched, charger
+ led framwork loses the first charger online event,add once extra
+ power_supply_changed can fix this issure
+ */
+ if (data->first_delay_count < 200) {
+ data->first_delay_count = data->first_delay_count + 1 ;
+ power_supply_changed(&data->bat);
+ }
mutex_unlock(&data->work_lock);
}
@@ -599,6 +610,7 @@ static __devinit int max8903_probe(struct platform_device *pdev)
dev_err(dev, "Cannot allocate memory.\n");
return -ENOMEM;
}
+ data->first_delay_count = 0;
data->pdata = pdata;
data->dev = dev;
platform_set_drvdata(pdev, data);