Some devices have a pin that can generate an interrupt when
the battery's status changes. Add an interrupt handler to
read the new battery status.

Signed-off-by: Andrew F. Davis <a...@ti.com>
---
 drivers/power/bq27xxx_battery.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/drivers/power/bq27xxx_battery.c b/drivers/power/bq27xxx_battery.c
index fe18a2d..473aa2f 100644
--- a/drivers/power/bq27xxx_battery.c
+++ b/drivers/power/bq27xxx_battery.c
@@ -48,6 +48,7 @@
 #include <linux/idr.h>
 #include <linux/i2c.h>
 #include <linux/slab.h>
+#include <linux/interrupt.h>
 #include <asm/unaligned.h>
 
 #include <linux/power/bq27xxx_battery.h>
@@ -761,6 +762,15 @@ static void bq27xxx_battery_update(struct 
bq27xxx_device_info *di)
        di->last_update = jiffies;
 }
 
+static irqreturn_t bq27xxx_battery_irq_handler_thread(int irq, void *data)
+{
+       struct bq27xxx_device_info *di = data;
+
+       bq27xxx_battery_update(di);
+
+       return IRQ_HANDLED;
+}
+
 static void bq27xxx_battery_poll(struct work_struct *work)
 {
        struct bq27xxx_device_info *di =
@@ -1128,6 +1138,19 @@ static int bq27xxx_battery_i2c_probe(struct i2c_client 
*client,
 
        i2c_set_clientdata(client, di);
 
+       if (client->irq) {
+               retval = devm_request_threaded_irq(&client->dev, client->irq,
+                               NULL, bq27xxx_battery_irq_handler_thread,
+                               IRQF_ONESHOT,
+                               name, di);
+               if (retval) {
+                       dev_err(&client->dev,
+                               "Unable to register IRQ %d error %d\n",
+                               client->irq, retval);
+                       return retval;
+               }
+       }
+
        return 0;
 
 batt_failed:
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to