@@ -225,16 +225,18 @@ static irqreturn_t tca8418_irq_handler(int irq, void *dev_id)if(error){dev_err(&keypad_data->client->dev,"unable to read REG_INT_STAT\n");-gotoexit;+returnIRQ_NONE;}+if(!reg)+returnIRQ_NONE;+if(reg&INT_STAT_OVR_FLOW_INT)dev_warn(&keypad_data->client->dev,"overflow occurred\n");if(reg&INT_STAT_K_INT)tca8418_read_keypad(keypad_data);-exit:/* Clear all interrupts, even IRQs we didn't check (GPI, CAD, LCK) */reg=0xff;error=tca8418_write_byte(keypad_data,REG_INT_STAT,reg);
@@ -377,7 +379,9 @@ static int __devinit tca8418_keypad_probe(struct i2c_client *client,client->irq=gpio_to_irq(client->irq);error=request_threaded_irq(client->irq,NULL,tca8418_irq_handler,-IRQF_TRIGGER_FALLING|IRQF_ONESHOT,+IRQF_TRIGGER_FALLING|+IRQF_SHARED|+IRQF_ONESHOT,client->name,keypad_data);
I do not think that using ONESHOT IRQ handlers in shared interrupt
configuration is a good idea as that interrupt will stay masked until
the keypad is done processing it, which may take some time.
Thanks.
--
Dmitry
From: Alban Bedel <hidden> Date: 2012-11-06 16:34:34
On Mon, 5 Nov 2012 10:58:06 -0800
Dmitry Torokhov [off-list ref] wrote:
I do not think that using ONESHOT IRQ handlers in shared interrupt
configuration is a good idea as that interrupt will stay masked until
the keypad is done processing it, which may take some time.
I don't really see what the problem is, shared ONESHOT handlers are
supported by the IRQ framework. The IRQ line of this device is an open
drain and so can be shared, and is shared on the hardware I'm using!
I agree that the interrupt masking time might rise a little if many
devices share the same line, but that's the normal drawback of shared
interrupts.
Alban
On Tue, Nov 06, 2012 at 05:34:30PM +0100, Alban Bedel wrote:
On Mon, 5 Nov 2012 10:58:06 -0800
Dmitry Torokhov [off-list ref] wrote:
quoted
I do not think that using ONESHOT IRQ handlers in shared interrupt
configuration is a good idea as that interrupt will stay masked until
the keypad is done processing it, which may take some time.
I don't really see what the problem is, shared ONESHOT handlers are
supported by the IRQ framework. The IRQ line of this device is an open
drain and so can be shared, and is shared on the hardware I'm using!
I agree that the interrupt masking time might rise a little if many
devices share the same line, but that's the normal drawback of shared
interrupts.