irqchip/bcm7120-l2: Perform suspend/resume even without installed child IRQs
authorBrian Norris <computersforpeace@gmail.com>
Wed, 22 Jul 2015 23:21:40 +0000 (16:21 -0700)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 27 Jul 2015 06:09:38 +0000 (08:09 +0200)
commitfd537766715e9b6bf7ff07abb22f4817201433db
tree963ba098d42265895cf79ab168067e4f5030a336
parentbe9b22b6a7e6725162c64155a08b71f0654b675c
irqchip/bcm7120-l2: Perform suspend/resume even without installed child IRQs

Make use of the new irq_chip_generic suspend/resume callbacks.

This is required because if there are no installed child IRQs for this
chip, the irq_chip::irq_{suspend,resume} functions will not be called.
However, we still need to save/restore the forwarding mask, to enable
the top-level GIC interrupt; otherwise, we lose UART output after S3
resume.

In addition to refactoring the callbacks, we have to self-initialize the
mask cache, since the genirq core also doesn't initialize this until the
first child IRQ is installed.

The original problem report is described in extra detail here:
http://lkml.kernel.org/g/20150619224123.GL4917@ld-irv-0074

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Tested-by: Florian 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-2-git-send-email-computersforpeace@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/irqchip/irq-bcm7120-l2.c