summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajagopala V <rajagopala.v@stericsson.com>2011-12-20 09:45:56 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:01:18 +0200
commit3a3a2a4eb80d4ed20313afd53b2bd50f499af253 (patch)
tree3f95702409f8883ce737dde60064cf2faf0f042b
parentf773f909f17144a20f4a7c1d23e7615ebca62062 (diff)
power: ab5500-btemp: manual mode monitoring as platform data
Move battery temperature manual mode monitoring selection to platform data. ST-Ericsson Linux next: NA ST-Ericsson ID: 372448 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I9224e5cc8bed77be6a10344d32e480a7717a1d22 Signed-off-by: Rajagopala V <rajagopala.v@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/43248 Reviewed-by: QABUILD Reviewed-by: Arun MURTHY <arun.murthy@stericsson.com> Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
-rw-r--r--arch/arm/mach-ux500/board-u5500-bm.c1
-rw-r--r--drivers/power/ab5500_btemp.c68
2 files changed, 32 insertions, 37 deletions
diff --git a/arch/arm/mach-ux500/board-u5500-bm.c b/arch/arm/mach-ux500/board-u5500-bm.c
index f7ca803da42..96b7cc656eb 100644
--- a/arch/arm/mach-ux500/board-u5500-bm.c
+++ b/arch/arm/mach-ux500/board-u5500-bm.c
@@ -473,6 +473,7 @@ struct abx500_bm_data ab5500_bm_data = {
#endif
.chg_unknown_bat = false,
.enable_overshoot = false,
+ .auto_trig = false,
.fg_res = 200,
.cap_levels = &cap_levels,
.bat_type = bat_type,
diff --git a/drivers/power/ab5500_btemp.c b/drivers/power/ab5500_btemp.c
index 08d5ae89dbe..3ce07f149e2 100644
--- a/drivers/power/ab5500_btemp.c
+++ b/drivers/power/ab5500_btemp.c
@@ -38,9 +38,6 @@
#define RESET 0x00
#define ADOUT_10K_PULL_UP 0x07
-/* Enable battery temp monitoring manual mode */
-#define BTEMP_MANUAL_MONITORING
-
#define to_ab5500_btemp_device_info(x) container_of((x), \
struct ab5500_btemp, btemp_psy);
@@ -335,7 +332,7 @@ static int ab5500_btemp_measure_temp(struct ab5500_btemp *di)
id = di->bat->batt_id;
if (di->bat->adc_therm == ABx500_ADC_THERM_BATCTRL &&
- id != BATTERY_UNKNOWN) {
+ id != BATTERY_UNKNOWN && !di->bat->auto_trig) {
rbat = ab5500_btemp_get_batctrl_res(di);
if (rbat < 0) {
dev_err(di->dev, "%s get batctrl res failed\n",
@@ -456,25 +453,26 @@ static void ab5500_btemp_periodic_work(struct work_struct *work)
power_supply_changed(&di->btemp_psy);
}
di->bat->temp_now = di->bat_temp;
-#if defined(BTEMP_MANUAL_MONITORING)
- /* Check for temperature limits */
- ab5500_btemp_bat_temp_trig(0);
- /* Schedule a new measurement */
- if (di->events.usb_conn)
+ if (!di->bat->auto_trig) {
+ /* Check for temperature limits */
+ ab5500_btemp_bat_temp_trig(0);
+
+ /* Schedule a new measurement */
+ if (di->events.usb_conn)
+ queue_delayed_work(di->btemp_wq,
+ &di->btemp_periodic_work,
+ round_jiffies(di->bat->interval_charging * HZ));
+ else
+ queue_delayed_work(di->btemp_wq,
+ &di->btemp_periodic_work,
+ round_jiffies(di->bat->interval_not_charging * HZ));
+ } else {
+ /* Schedule a new measurement */
queue_delayed_work(di->btemp_wq,
&di->btemp_periodic_work,
round_jiffies(di->bat->interval_charging * HZ));
- else
- queue_delayed_work(di->btemp_wq,
- &di->btemp_periodic_work,
- round_jiffies(di->bat->interval_not_charging * HZ));
-#else
- /* Schedule a new measurement */
- queue_delayed_work(di->btemp_wq,
- &di->btemp_periodic_work,
- round_jiffies(di->bat->interval_charging * HZ));
-#endif
+ }
}
/**
@@ -623,18 +621,15 @@ static int ab5500_btemp_get_ext_psy_data(struct device *dev, void *data)
/* USB disconnected */
if (!ret.intval && di->events.usb_conn) {
di->events.usb_conn = false;
-#if !defined(BTEMP_MANUAL_MONITORING)
+ if (di->bat->auto_trig)
ab5500_btemp_periodic(di,
false);
-#endif
}
/* USB connected */
else if (ret.intval && !di->events.usb_conn) {
di->events.usb_conn = true;
-
-#if !defined(BTEMP_MANUAL_MONITORING)
+ if (di->bat->auto_trig)
ab5500_btemp_periodic(di, true);
-#endif
}
break;
default:
@@ -686,7 +681,6 @@ static int ab5500_btemp_bat_temp_trig(int mux)
return 0;;
}
-#if !defined(BTEMP_MANUAL_MONITORING)
static int ab5500_btemp_auto_temp(struct ab5500_btemp *di)
{
struct adc_auto_input *auto_ip;
@@ -710,7 +704,6 @@ static int ab5500_btemp_auto_temp(struct ab5500_btemp *di)
"failed to set auto trigger for battery temp\n");
return ret;
}
-#endif
#if defined(CONFIG_PM)
static int ab5500_btemp_resume(struct platform_device *pdev)
@@ -858,18 +851,19 @@ static int __devinit ab5500_btemp_probe(struct platform_device *pdev)
dev_dbg(di->dev, "Requested %s IRQ %d: %d\n",
ab5500_btemp_irq[i].name, irq, ret);
}
-#if defined(BTEMP_MANUAL_MONITORING)
- /* Schedule monitoring work only if battery type is known */
- if (di->bat->batt_id != BATTERY_UNKNOWN)
- queue_delayed_work(di->btemp_wq, &di->btemp_periodic_work, 0);
-#else
- ret = ab5500_btemp_auto_temp(di);
- if (ret) {
- dev_err(di->dev,
- "failed to register auto trigger for battery temp\n");
- goto free_irq;
+
+ if (!di->bat->auto_trig) {
+ /* Schedule monitoring work only if battery type is known */
+ if (di->bat->batt_id != BATTERY_UNKNOWN)
+ queue_delayed_work(di->btemp_wq, &di->btemp_periodic_work, 0);
+ } else {
+ ret = ab5500_btemp_auto_temp(di);
+ if (ret) {
+ dev_err(di->dev,
+ "failed to register auto trigger for battery temp\n");
+ goto free_irq;
+ }
}
-#endif
platform_set_drvdata(pdev, di);
list_add_tail(&di->node, &ab5500_btemp_list);