• Tony Lindgren's avatar
    Input: omap-keypad - fix idle configuration to not block SoC idle states · e2ca26ec
    Tony Lindgren authored
    With PM enabled, I noticed that pressing a key on the droid4 keyboard will
    block deeper idle states for the SoC. Let's fix this by using IRQF_ONESHOT
    and stop constantly toggling the device OMAP4_KBD_IRQENABLE register as
    suggested by Dmitry Torokhov <dmitry.torokhov@gmail.com>.
    
    From the hardware point of view, looks like we need to manage the registers
    for OMAP4_KBD_IRQENABLE and OMAP4_KBD_WAKEUPENABLE together to avoid
    blocking deeper SoC idle states. And with toggling of OMAP4_KBD_IRQENABLE
    register now gone with IRQF_ONESHOT, also the SoC idle state problem is
    gone during runtime. We still also need to clear OMAP4_KBD_WAKEUPENABLE in
    omap4_keypad_close() though to pair it with omap4_keypad_open() to prevent
    blocking deeper SoC idle states after rmmod omap4-keypad.
    Reported-by: default avatarPavel Machek <pavel@ucw.cz>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    e2ca26ec
omap4-keypad.c 12.4 KB