Skip to content

Commit

Permalink
hwmon: (lm90) Add support to handle IRQ
Browse files Browse the repository at this point in the history
When the temperature exceed the limit range value,
the driver can handle the interrupt.

Signed-off-by: Wei Ni <wni@nvidia.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
  • Loading branch information
wni-WeiNi authored and Jean Delvare committed Nov 15, 2013
1 parent 072de49 commit 109b128
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions drivers/hwmon/lm90.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
#include <linux/err.h>
#include <linux/mutex.h>
#include <linux/sysfs.h>
#include <linux/interrupt.h>

/*
* Addresses to scan
Expand Down Expand Up @@ -1445,6 +1446,17 @@ static bool lm90_is_tripped(struct i2c_client *client, u16 *status)
return true;
}

static irqreturn_t lm90_irq_thread(int irq, void *dev_id)
{
struct i2c_client *client = dev_id;
u16 status;

if (lm90_is_tripped(client, &status))
return IRQ_HANDLED;
else
return IRQ_NONE;
}

static int lm90_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
Expand Down Expand Up @@ -1521,6 +1533,18 @@ static int lm90_probe(struct i2c_client *client,
goto exit_remove_files;
}

if (client->irq) {
dev_dbg(dev, "IRQ: %d\n", client->irq);
err = devm_request_threaded_irq(dev, client->irq,
NULL, lm90_irq_thread,
IRQF_TRIGGER_LOW | IRQF_ONESHOT,
"lm90", client);
if (err < 0) {
dev_err(dev, "cannot request IRQ %d\n", client->irq);
goto exit_remove_files;
}
}

return 0;

exit_remove_files:
Expand Down

0 comments on commit 109b128

Please sign in to comment.