Skip to content
  • Brian Norris's avatar
    genirq: Add chip_[suspend|resume] PM support to irq_chip · be9b22b6
    Brian Norris authored
    Some (admittedly odd) irqchips perform functions that are not directly
    related to any of their child IRQ lines, and therefore need to perform
    some tasks during suspend/resume regardless of whether there are
    any "installed" interrupts for the irqchip. However, the current
    generic-chip framework does not call the chip's irq_{suspend,resume}
    when there are no interrupts installed (this makes sense, because there
    are no irq_data objects for such a call to be made).
    
    More specifically, irq-bcm7120-l2 configures both a forwarding mask
    (which affects other top-level GIC IRQs) and a second-level interrupt
    mask (for managing its own child interrupts). The former must be
    saved/restored on suspend/resume, even when there's nothing to do for
    the latter.
    
    This patch adds a new set of suspend/resume hooks to irq_chip_generic,
    to help represent *chip* suspend/resume, rather than IRQ suspend/resume.
    These callbacks will always be called for an IRQ chip (regardless of the
    installed interrupts) and are based on the per-chip irq_chip_generic
    struct, rather than the per-IRQ irq_data struct.
    
    The original problem report is described in extra detail here:
    http://lkml.kernel.org/g/20150619224123.GL4917@ld-irv-0074
    
    
    
    Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
    Tested-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Cc: Gregory Fong <gregory.0xf0@gmail.com>
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: linux-mips@linux-mips.org
    Cc: Kevin Cernekee <cernekee@chromium.org>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Link: http://lkml.kernel.org/r/1437607300-40858-1-git-send-email-computersforpeace@gmail.com
    
    
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    be9b22b6