• Chunfeng Yun's avatar
    PM / wakeirq: support enabling wake-up irq after runtime_suspend called · 25971410
    Chunfeng Yun authored
    When the dedicated wake IRQ is level trigger, and it uses the
    device's low-power status as the wakeup source, that means if the
    device is not in low-power state, the wake IRQ will be triggered
    if enabled; For this case, need enable the wake IRQ after running
    the device's ->runtime_suspend() which make it enter low-power state.
    
    e.g.
    Assume the wake IRQ is a low level trigger type, and the wakeup
    signal comes from the low-power status of the device.
    The wakeup signal is low level at running time (0), and becomes
    high level when the device enters low-power state (runtime_suspend
    (1) is called), a wakeup event at (2) make the device exit low-power
    state, then the wakeup signal also becomes low level.
    
                    ------------------
                   |           ^     ^|
    ----------------           |     | --------------
     |<---(0)--->|<--(1)--|   (3)   (2)    (4)
    
    if enable the wake IRQ before running runtime_suspend during (0),
    a wake IRQ will arise, it causes resume immediately;
    it works if enable wake IRQ ( e.g. at (3) or (4)) after running
    ->runtime_suspend().
    
    This patch introduces a new status WAKE_IRQ_DEDICATED_REVERSE to
    optionally support enabling wake IRQ after running ->runtime_suspend().
    Suggested-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: default avatarChunfeng Yun <chunfeng.yun@mediatek.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    25971410
wakeirq.c 10.8 KB