• Anson Huang's avatar
    Input: imx_keypad - make sure keyboard can always wake up system · 5f546398
    Anson Huang authored
    [ Upstream commit ce9a53eb ]
    
    There are several scenarios that keyboard can NOT wake up system
    from suspend, e.g., if a keyboard is depressed between system
    device suspend phase and device noirq suspend phase, the keyboard
    ISR will be called and both keyboard depress and release interrupts
    will be disabled, then keyboard will no longer be able to wake up
    system. Another scenario would be, if a keyboard is kept depressed,
    and then system goes into suspend, the expected behavior would be
    when keyboard is released, system will be waked up, but current
    implementation can NOT achieve that, because both depress and release
    interrupts are disabled in ISR, and the event check is still in
    progress.
    
    To fix these issues, need to make sure keyboard's depress or release
    interrupt is enabled after noirq device suspend phase, this patch
    moves the suspend/resume callback to noirq suspend/resume phase, and
    enable the corresponding interrupt according to current keyboard status.
    Signed-off-by: default avatarAnson Huang <Anson.Huang@nxp.com>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    5f546398
imx_keypad.c 16 KB