|
@@ -26,6 +26,7 @@
|
|
|
#include <linux/init.h>
|
|
|
#include <linux/input/mt.h>
|
|
|
#include <linux/interrupt.h>
|
|
|
+#include <linux/irq.h>
|
|
|
#include <linux/module.h>
|
|
|
#include <linux/slab.h>
|
|
|
#include <linux/kernel.h>
|
|
@@ -1141,10 +1142,13 @@ static int elan_probe(struct i2c_client *client,
|
|
|
return error;
|
|
|
|
|
|
/*
|
|
|
- * Systems using device tree should set up interrupt via DTS,
|
|
|
- * the rest will use the default falling edge interrupts.
|
|
|
+ * Platform code (ACPI, DTS) should normally set up interrupt
|
|
|
+ * for us, but in case it did not let's fall back to using falling
|
|
|
+ * edge to be compatible with older Chromebooks.
|
|
|
*/
|
|
|
- irqflags = dev->of_node ? 0 : IRQF_TRIGGER_FALLING;
|
|
|
+ irqflags = irq_get_trigger_type(client->irq);
|
|
|
+ if (!irqflags)
|
|
|
+ irqflags = IRQF_TRIGGER_FALLING;
|
|
|
|
|
|
error = devm_request_threaded_irq(dev, client->irq, NULL, elan_isr,
|
|
|
irqflags | IRQF_ONESHOT,
|