Commit edadced2 authored by Xiaoguang Chen's avatar Xiaoguang Chen Committed by Linus Walleij

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: default avatarXiaoguang Chen <xgchenshy@gmail.com>
Tested-by: default avatarJisheng Zhang <jszhang@marvell.com>
[Fix some really weird text encoding problem]
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent eb2ec49b
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment