[PATCH V3 00/17] Add support for Tegra210 AGIC

From: Jon Hunter
Date: Wed May 04 2016 - 12:25:53 EST


The Tegra210 has a 2nd level interrupt controller located in a separate
power domain to the main GIC interrupt controller and hence requires
runtime-pm support.

Add a platform driver for the GICs that require runtime-pm and make the
necessary changes to the genirq and irqdomain core to support IRQ chips
that require runtime-pm.

Please note that although as the subject states this adds support for
the Tegra210 AGIC, in this current version there is really nothing
specific in this series for Tegra. However, rather than changing the
subject I opted to keep it the same so people recognise this is a
continuation of that work.

Changes since V2:
- Corrected RPM support for irqchips in genirq core as pointed out by
Kevin Hilman.
- Corrected patch to save the irq type when mapping the interrupt.
- Dropped changes to DT binding documentation and added patch to prevent
early init of GICs if the 'clocks' and/or 'power-domains' DT
properties are present (as we have discussed).
- Moved platform driver code into it's own source file.
- Separate changes for preparing for the platform driver into 3 patches
in an attempt to make it more readable!
- Added fix for checking an interrupt descriptor is valid during IRQ
setup.

Changes since V1:
- Updated GIC to only WARN and not return an error if configuring a PPI
fails but will still return an error if an SPI fails (per discussion
with Marc).
- Dropped change to mask sense bits for GIC-v3 (as this is not
necessary)
- Split patch to avoid setting interrupt type when mapping the IRQ into
two patches per TGLX's feedback.
- Changed name of irqchip device structure to "parent_device"
- Moved call to irq_chip_pm_get() outside of chip_bus_lock().
- Dropped patch to remove clock names from GIC DT documentation and
added AGIC clock names.
- Update GIC platform driver to look-up clocks names from static list.

Jon Hunter (17):
irqchip/gic: Don't unnecessarily write the IRQ configuration
irqchip/gic: WARN if setting the interrupt type for a PPI fails
irqchip: Mask the non-type/sense bits when translating an IRQ
irqdomain: Fix handling of type settings for existing mappings
genirq: Look-up trigger type if not specified by caller
irqdomain: Don't set type when mapping an IRQ
genirq: Ensure IRQ descriptor is valid when setting-up the IRQ
genirq: Add runtime power management support for IRQ chips
irqchip/gic: Don't initialise chip if mapping IO space fails
irqchip/gic: Remove static irq_chip definition for eoimode1
irqchip/gic: Return an error if GIC initialisation fails
irqchip/gic: Pass GIC pointer to save/restore functions
irqchip/gic: Don't allow early initialisation if GIC requires RPM
irqchip/gic: Add helper function for configuring a GIC via device-tree
irqchip/gic: Split GIC init in preparation for platform driver
irqchip/gic: Prepare for adding platform driver
irqchip/gic: Add platform driver for non-root GICs that require RPM

drivers/irqchip/Kconfig | 6 +
drivers/irqchip/Makefile | 1 +
drivers/irqchip/irq-crossbar.c | 2 +-
drivers/irqchip/irq-gic-common.c | 19 ++-
drivers/irqchip/irq-gic-pm.c | 241 ++++++++++++++++++++++++++++++++++
drivers/irqchip/irq-gic.c | 277 +++++++++++++++++++++++----------------
drivers/irqchip/irq-gic.h | 63 +++++++++
drivers/irqchip/irq-tegra.c | 2 +-
include/linux/irq.h | 4 +
include/linux/irqdomain.h | 3 +
kernel/irq/chip.c | 35 +++++
kernel/irq/internals.h | 1 +
kernel/irq/irqdomain.c | 58 ++++++--
kernel/irq/manage.c | 40 +++++-
14 files changed, 617 insertions(+), 135 deletions(-)
create mode 100644 drivers/irqchip/irq-gic-pm.c
create mode 100644 drivers/irqchip/irq-gic.h

--
2.1.4