forked from Minki/linux
71266d9d39
When GPIOs that are routed to PDC are used as output they can still latch
the IRQ pending at GIC. As a result the spurious IRQ was handled when the
client driver change the direction to input to starts using it as IRQ.
Currently such erroneous latched IRQ are cleared with .irq_enable callback
however if the driver continue to use GPIO as interrupt and invokes
disable_irq() followed by enable_irq() then everytime during enable_irq()
previously latched interrupt gets cleared.
This can make edge IRQs not seen after enable_irq() if they had arrived
after the driver has invoked disable_irq() and were pending at GIC.
Move clearing erroneous IRQ to .irq_request_resources callback as this is
the place where GPIO direction is changed as input and its locked as IRQ.
While at this add a missing check to invoke msm_gpio_irq_clear_unmask()
from .irq_enable callback only when GPIO is not routed to PDC.
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
pinctrl-apq8064.c | ||
pinctrl-apq8084.c | ||
pinctrl-ipq4019.c | ||
pinctrl-ipq6018.c | ||
pinctrl-ipq8064.c | ||
pinctrl-ipq8074.c | ||
pinctrl-mdm9615.c | ||
pinctrl-msm8x74.c | ||
pinctrl-msm8226.c | ||
pinctrl-msm8660.c | ||
pinctrl-msm8916.c | ||
pinctrl-msm8960.c | ||
pinctrl-msm8976.c | ||
pinctrl-msm8994.c | ||
pinctrl-msm8996.c | ||
pinctrl-msm8998.c | ||
pinctrl-msm.c | ||
pinctrl-msm.h | ||
pinctrl-qcs404.c | ||
pinctrl-qdf2xxx.c | ||
pinctrl-sc7180.c | ||
pinctrl-sdm660.c | ||
pinctrl-sdm845.c | ||
pinctrl-sm8150.c | ||
pinctrl-sm8250.c | ||
pinctrl-spmi-gpio.c | ||
pinctrl-spmi-mpp.c | ||
pinctrl-ssbi-gpio.c | ||
pinctrl-ssbi-mpp.c |