summaryrefslogtreecommitdiff
path: root/drivers/hwmon
diff options
context:
space:
mode:
authorRajagopala V <rajagopala.v@stericsson.com>2011-08-25 13:31:50 +0530
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 16:00:10 +0200
commit381d38edd48df811f4a107fe2bf95743717ec29c (patch)
treeea0b3828bdda16681106cc90c2d98dbd7214531a /drivers/hwmon
parent12e3cefdb803603f79703cc8756ab24bbaad9757 (diff)
hwmon: ab5500: support for battery temp monitor
add support for battery temperature monitor ST-Ericsson Linux next: NA ST-Ericsson ID: WP257616 ST-Ericsson FOSS-OUT ID: NA Change-Id: I344947ed41b4dd0a49abcb28e57b7b3c697dc57d Signed-off-by: Rajagopala V <rajagopala.v@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/28233 Reviewed-by: Arun MURTHY <arun.murthy@stericsson.com> Reviewed-by: QATEST Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r--drivers/hwmon/ab5500.c14
-rw-r--r--drivers/hwmon/abx500.h2
2 files changed, 14 insertions, 2 deletions
diff --git a/drivers/hwmon/ab5500.c b/drivers/hwmon/ab5500.c
index f229d103ec1..79540c9a79b 100644
--- a/drivers/hwmon/ab5500.c
+++ b/drivers/hwmon/ab5500.c
@@ -23,6 +23,7 @@
#include <linux/hwmon-sysfs.h>
#include <linux/platform_device.h>
#include <linux/mfd/abx500/ab5500-gpadc.h>
+#include <linux/mfd/abx500/ab5500-bm.h>
#include "abx500.h"
/* AB5500 driver monitors GPADC - XTAL_TEMP, PCB_TEMP,
@@ -47,12 +48,17 @@ static int ab5500_output_convert(int val, u8 sensor)
static int ab5500_read_sensor(struct abx500_temp *data, u8 sensor)
{
+ int val;
/*
- * TODO: Add support for BAT_CTRL node, since this
+ * Special treatment for BAT_CTRL node, since this
* temperature measurement is more complex than just
* an ADC readout
*/
- int val = ab5500_gpadc_convert(data->ab5500_gpadc, sensor);
+ if (sensor == BAT_CTRL)
+ val = ab5500_btemp_get_batctrl_temp(data->ab5500_btemp);
+ else
+ val = ab5500_gpadc_convert(data->ab5500_gpadc, sensor);
+
if (val < 0)
return val;
else
@@ -156,6 +162,10 @@ int __init abx500_hwmon_init(struct abx500_temp *data)
if (IS_ERR(data->ab5500_gpadc))
return PTR_ERR(data->ab5500_gpadc);
+ data->ab5500_btemp = ab5500_btemp_get();
+ if (IS_ERR(data->ab5500_btemp))
+ return PTR_ERR(data->ab5500_btemp);
+
err = ab5500_temp_shutdown_auto(data);
if (err < 0) {
dev_err(&data->pdev->dev, "Failed to register"
diff --git a/drivers/hwmon/abx500.h b/drivers/hwmon/abx500.h
index 1d41aa191fe..77ae7cbd5c1 100644
--- a/drivers/hwmon/abx500.h
+++ b/drivers/hwmon/abx500.h
@@ -12,6 +12,7 @@
struct ab8500_gpadc;
struct ab5500_gpadc;
struct ab8500_btemp;
+struct ab5500_btemp;
struct adc_auto_input;
struct abx500_temp;
@@ -63,6 +64,7 @@ struct abx500_temp {
struct ab8500_gpadc *ab8500_gpadc;
struct ab5500_gpadc *ab5500_gpadc;
struct ab8500_btemp *ab8500_btemp;
+ struct ab5500_btemp *ab5500_btemp;
struct adc_auto_input *gpadc_auto;
struct abx500_temp_ops ops;
u8 gpadc_addr[NUM_SENSORS];