• Samuel Holland's avatar
    irqchip/sun6i-r: Add wakeup support · 7ab365f6
    Samuel Holland authored
    Maintain bitmaps of wake-enabled IRQs and mux inputs, and program them
    to the hardware during the syscore phase of suspend and shutdown. Then
    restore the original set of enabled IRQs (only the NMI) during resume.
    
    This serves two purposes. First, it lets power management firmware
    running on the ARISC coprocessor know which wakeup sources Linux wants
    to have enabled. That way, it can avoid turning them off when it shuts
    down the remainder of the clock tree. Second, it preconfigures the
    coprocessor's interrupt controller, so the firmware's wakeup logic
    is as simple as waiting for an interrupt to arrive.
    
    The suspend/resume logic is not conditional on PM_SLEEP because it is
    identical to the init/shutdown logic. Wake IRQs may be enabled during
    shutdown to allow powering the board back on. As an example, see
    commit a5c5e50c ("Input: gpio-keys - add shutdown callback").
    Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
    Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20210118055040.21910-5-samuel@sholland.org
    7ab365f6
irq-sun6i-r.c 11.6 KB