gpio: dwapb: fix missing first irq for edgeboth irq type
dwapb_irq_set_type overwrites polarity register value for IRQ_TYPE_EDGE_BOTH case. If the polarity of one gpio is 0 by default, then it will set falling edge irq trigger. and the gpio may requires rising edge irq for the first time, and it will be missed. Do not overwrite polarity register for IRQ_TYPE_EDGE_BOTH case can solve this issue. Signed-off-by: Xiaoguang Chen <xgchenshy@gmail.com> Tested-by: Jisheng Zhang <jszhang@marvell.com> [Fix some really weird text encoding problem] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
eb2ec49b0d
commit
edadced2bc
|
@ -288,7 +288,8 @@ static int dwapb_irq_set_type(struct irq_data *d, u32 type)
|
|||
irq_setup_alt_chip(d, type);
|
||||
|
||||
dwapb_write(gpio, GPIO_INTTYPE_LEVEL, level);
|
||||
dwapb_write(gpio, GPIO_INT_POLARITY, polarity);
|
||||
if (type != IRQ_TYPE_EDGE_BOTH)
|
||||
dwapb_write(gpio, GPIO_INT_POLARITY, polarity);
|
||||
spin_unlock_irqrestore(&gc->bgpio_lock, flags);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue