• Tony Lindgren's avatar
    Input: omap4-keypad - implement errata check for lost key-up events · 2f6aa61d
    Tony Lindgren authored
    We are still missing handling for errata i689 related issues for the
    case where we never see a key up interrupt for the last pressed key.
    
    To fix the issue, we must scan the key state again after the keyboard
    controller has idled to check if a key up event was missed. This is
    described in the omap4 silicon errata documentation for Errata ID i689
    "1.32 Keyboard Key Up Event Can Be Missed":
    
    "When a key is released for a time shorter than the debounce time,
     in-between 2 key press (KP1 and KP2), the keyboard state machine will go
     to idle mode and will never detect the key release (after KP1, and also
     after KP2), and thus will never generate a new IRQ indicating the key
     release."
    
    We can use PM runtime autosuspend features to check the keyboard state
    after it enters idle.
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Link: https://lore.kernel.org/r/X/vrygoBxzGyXhfc@atomide.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    2f6aa61d
omap4-keypad.c 12.6 KB