Messages in this thread | | | From | Andy Shevchenko <> | Date | Fri, 9 Feb 2018 17:03:54 +0200 | Subject | Re: [PATCH] Input: gpio_keys: Add level trigger support for GPIO keys |
| |
On Fri, Feb 9, 2018 at 11:23 AM, Baolin Wang <baolin.wang@linaro.org> wrote: > On 9 February 2018 at 14:39, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: >> On Thu, Feb 8, 2018 at 10:08 PM, Baolin Wang <baolin.wang@linaro.org> wrote: >>> On some platforms (such as Spreadtrum platform), the GPIO keys can only >>> be triggered by level type. >> >> How do you stop the interrupt from re-triggering as long as the key >> stays pressed? > > We will set the level type irq handler as handle_level_irq(), in this > function, it will mask and ack the irq firstly.
Wouldn't be ambiguous?
1. User presses the key -> a) we got edge followed by level signaling; b) IRQ core masks line, calls handler, ACKs, unmasks; c) somewhere here Press Event is sent; d) we still have level... We get IRQ fired again? But see 1. It obviously not the case. 2. User releases the key -> ...
So, the main question if I understood Dmitry correctly is the period in time where IRQ line should be masked on one hand, and on the other it will guarantee that user didn't release-press cylcle.
-- With Best Regards, Andy Shevchenko
| |