On Thu, May 14, 2015 at 3:32 AM, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > On Wed, May 13, 2015 at 5:44 PM, Feng Kan <fkan@xxxxxxx> wrote: > >> We are using the gpio driver with gpio_key for power button. The gpio >> status can only be retrieved from the GIC register when the gpio is >> acting as a interrupt. > > OK I understand so much. SPISR is a status register of the state > of the IRQ lines of shared peripherals. > > But surely the GPIO block has its own status register, so are > you saying that this register is unreliable? When the GPIO is used as interrupt, the gpio block does not report the status anymore. Which leaves us stuck with SPISR. > > I can think of a few reasons, like transient IRQs etc but > what is actually causing this? I won't say the obvious. > > Techically the GIC would normally be higher up the food > chain, i.e. one IRQ on the GIC is cascaded to sub-IRQs on > the GPIO chip by virtue of its own struct irq_chip and > irqdomain. The exception is typically only systems where > the GPIO block is fused with the IRQ controller so that each > GPIO line has its own unique IRQ line on the primary, > top-level interrupt controller. > > Which GPIO driver is this? Is it upstream? Yes, it is upstream. It is the xgene slimpro gpio driver. I am starting to think that we ought to switch to use some gpio poll driver rather than using gpio-key. > > Yours, > Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html