|
@@ -22,6 +22,7 @@
|
|
|
#include <linux/i2c.h>
|
|
|
#include <linux/interrupt.h>
|
|
|
#include <linux/input.h>
|
|
|
+#include <linux/irq.h>
|
|
|
#include <linux/delay.h>
|
|
|
#include <linux/slab.h>
|
|
|
#include <linux/pm.h>
|
|
@@ -858,13 +859,16 @@ static struct hid_ll_driver i2c_hid_ll_driver = {
|
|
|
static int i2c_hid_init_irq(struct i2c_client *client)
|
|
|
{
|
|
|
struct i2c_hid *ihid = i2c_get_clientdata(client);
|
|
|
+ unsigned long irqflags = 0;
|
|
|
int ret;
|
|
|
|
|
|
dev_dbg(&client->dev, "Requesting IRQ: %d\n", client->irq);
|
|
|
|
|
|
+ if (!irq_get_trigger_type(client->irq))
|
|
|
+ irqflags = IRQF_TRIGGER_LOW;
|
|
|
+
|
|
|
ret = request_threaded_irq(client->irq, NULL, i2c_hid_irq,
|
|
|
- IRQF_TRIGGER_LOW | IRQF_ONESHOT,
|
|
|
- client->name, ihid);
|
|
|
+ irqflags | IRQF_ONESHOT, client->name, ihid);
|
|
|
if (ret < 0) {
|
|
|
dev_warn(&client->dev,
|
|
|
"Could not register for %s interrupt, irq = %d,"
|