@@ -487,8 +487,15 @@ static int __devinit qt2160_probe(struct i2c_client *client,
}
if (client->irq) {
- error = request_irq(client->irq, qt2160_irq,
- IRQF_TRIGGER_FALLING, "qt2160", qt2160);
+ if (hw_info->irq_flags) {
+ error = request_irq(client->irq, qt2160_irq,
+ hw_info->irq_flags, "qt2160",
+ qt2160);
+ } else {
+ error = request_irq(client->irq, qt2160_irq,
+ IRQF_TRIGGER_FALLING, "qt2160",
+ qt2160);
+ }
if (error) {
dev_err(&client->dev,
"failed to allocate irq %d\n", client->irq);
@@ -21,6 +21,7 @@
* @key_burst_length: key sensitivity; 0 use default
* @low_power_mode: value 0 use default; each +1 increment causes the chip to
* sleep 16ms longer before detecting a touch (slower response); max 255
+ * @irq_flags: value 0 use default IRQF_TRIGGER_FALLING
*/
struct qt2160_info {
void *data;
@@ -31,6 +32,7 @@ struct qt2160_info {
unsigned char key_aks[QT2160_MAXKEYS];
unsigned char key_burst_length[QT2160_MAXKEYS];
unsigned char low_power_mode;
+ unsigned long irq_flags;
};
#endif /* __QT2160_H__ */