Skip to content

Commit a8002a3

Browse files
bigunclemaxbrgl
authored andcommitted
gpio: pcf857x: Fix missing first interrupt
If no n_latch value will be provided at driver probe then all pins will be used as an input: gpio->out = ~n_latch; In that case initial state for all pins is "one": gpio->status = gpio->out; So if pcf857x IRQ happens with change pin value from "zero" to "one" then we miss it, because of "one" from IRQ and "one" from initial state leaves corresponding pin unchanged: change = (gpio->status ^ status) & gpio->irq_enabled; The right solution will be to read actual state at driver probe. Cc: [email protected] Fixes: 6e20a0a ("gpio: pcf857x: enable gpio_to_irq() support") Signed-off-by: Maxim Kiselev <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
1 parent 35d9e69 commit a8002a3

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/gpio/gpio-pcf857x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ static int pcf857x_probe(struct i2c_client *client,
332332
* reset state. Otherwise it flags pins to be driven low.
333333
*/
334334
gpio->out = ~n_latch;
335-
gpio->status = gpio->out;
335+
gpio->status = gpio->read(gpio->client);
336336

337337
/* Enable irqchip if we have an interrupt */
338338
if (client->irq) {

0 commit comments

Comments
 (0)