gpio: gpio-msm-v2/v3: Fix spurious interrupts when gpio-irq is unmasked
To unmask a gpio interrupt, the gpio driver sets the INTR_RAW_STATUS_EN and INTR_ENABLE bits in the INTR_CFG register. As soon as the INTR_RAW_STATUS_EN is set, the INTR_STATUS is updated and this causes a spurious interrupt when the irq is enabled. This is noticed frequently when the gpio is pulled high and requests a rising edge interrupt or pulled low and is requesting a falling edge interrupt. Due the internal circuit design of the TLMM IRQ block, the above method causes a spurious interrupt when the irq was initialized. Hence, to avoid this behavior we set the INTR_RAW_STATUS_EN, clear the INTR_STATUS only once during setup. Every mask and unmask only toggles the INTR_ENABLE bit. CRs-Fixed: 346861 Change-Id: I1c9852ed91432582c3d050ccf933053fd368b216 Signed-off-by:Rohit Vaswani <rvaswani@codeaurora.org> Signed-off-by:
Taniya Das <tdas@codeaurora.org>
Loading
Please register or sign in to comment