linux/Documentation/driver-api
Linus Walleij fdd61a013a gpio: Add support for hierarchical IRQ domains
Hierarchical IRQ domains can be used to stack different IRQ
controllers on top of each other.

Bring hierarchical IRQ domains into the GPIOLIB core with the
following basic idea:

Drivers that need their interrupts handled hierarchically
specify a callback to translate the child hardware IRQ and
IRQ type for each GPIO offset to a parent hardware IRQ and
parent hardware IRQ type.

Users have to pass the callback, fwnode, and parent irqdomain
before calling gpiochip_irqchip_add().

We use the new method of just filling in the struct
gpio_irq_chip before adding the gpiochip for all hierarchical
irqchips of this type.

The code path for device tree is pretty straight-forward,
while the code path for old boardfiles or anything else will
be more convoluted requireing upfront allocation of the
interrupts when adding the chip.

One specific use-case where this can be useful is if a power
management controller has top-level controls for wakeup
interrupts. In such cases, the power management controller can
be a parent to other interrupt controllers and program
additional registers when an IRQ has its wake capability
enabled or disabled.

The hierarchical irqchip helper code will only be available
when IRQ_DOMAIN_HIERARCHY is selected to GPIO chips using
this should select or depend on that symbol. When using
hierarchical IRQs, the parent interrupt controller must
also be hierarchical all the way up to the top interrupt
controller wireing directly into the CPU, so on systems
that do not have this we can get rid of all the extra
code for supporting hierarchical irqs.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Lina Iyer <ilina@codeaurora.org>
Cc: Jon Hunter <jonathanh@nvidia.com>
Cc: Sowjanya Komatineni <skomatineni@nvidia.com>
Cc: Bitan Biswas <bbiswas@nvidia.com>
Cc: linux-tegra@vger.kernel.org
Cc: David Daney <david.daney@cavium.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Brian Masney <masneyb@onstation.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Brian Masney <masneyb@onstation.org>
Co-developed-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20190808123242.5359-1-linus.walleij@linaro.org
2019-08-15 09:44:19 +02:00
..
80211 mac80211: call rate_control_send_low() internally 2019-06-14 14:17:37 +02:00
acpi Documentation: ACPI: move scan_handlers.txt to driver-api/acpi and convert to reST 2019-04-25 23:07:19 +02:00
backlight docs: lp855x-driver.rst: add it to the driver-api book 2019-07-15 11:03:02 -03:00
dmaengine Documentation: dmaengine: clean up description of dmatest usage 2019-07-05 12:21:01 +05:30
driver-model This round of clk driver and framework updates is heavy on the driver update 2019-07-17 10:07:48 -07:00
early-userspace docs: add SPDX tags to new index files 2019-07-15 11:03:03 -03:00
firmware docs: Fix a misdirected kerneldoc directive 2019-05-24 14:31:50 -06:00
fpga docs: fpga: document programming fpgas using regions 2018-10-16 11:13:50 +02:00
gpio gpio: Add support for hierarchical IRQ domains 2019-08-15 09:44:19 +02:00
i3c docs: driver-api: Add I3C documentation 2018-11-12 10:33:49 +01:00
iio docs: Do not seek kerneldoc comments in hw-consumer.h 2019-05-24 14:43:42 -06:00
md docs: add SPDX tags to new index files 2019-07-15 11:03:03 -03:00
mei mei: docs: update mei documentation 2019-06-06 16:51:37 +02:00
memory-devices docs: add SPDX tags to new index files 2019-07-15 11:03:03 -03:00
mmc docs: add SPDX tags to new index files 2019-07-15 11:03:03 -03:00
mtd docs: add SPDX tags to new index files 2019-07-15 11:03:03 -03:00
nfc docs: add SPDX tags to new index files 2019-07-15 11:03:03 -03:00
nvdimm docs: don't use nested tables 2019-07-15 11:03:04 -03:00
pci Documentation: Kill all references to mmiowb() 2019-04-08 12:00:45 +01:00
phy docs: add SPDX tags to new index files 2019-07-15 11:03:03 -03:00
pm docs: power: convert docs to ReST and rename to *.rst 2019-06-14 16:08:36 -05:00
rapidio docs: add SPDX tags to new index files 2019-07-15 11:03:03 -03:00
serial docs: serial: move it to the driver-api 2019-07-15 11:03:03 -03:00
soundwire docs: soundwire: locking: fix tags for a code-block 2019-06-04 20:48:45 +05:30
usb docs: power: convert docs to ReST and rename to *.rst 2019-06-14 16:08:36 -05:00
xilinx docs: driver-api: add xilinx driver API documentation 2019-07-15 11:03:02 -03:00
basics.rst docs: Do not seek comments in kernel/rcu/tree_plugin.h 2019-05-24 14:23:40 -06:00
bt8xxgpio.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
clk.rst docs: clk: fix struct syntax 2019-06-07 11:35:15 -06:00
component.rst drm/doc: document recommended component helper usage 2019-02-19 12:22:24 +01:00
conf.py
connector.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
console.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
dcdbas.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
dell_rbu.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
device_connection.rst Documentation: driver-api: fix device_connection.rst kernel-doc error 2018-04-27 17:17:34 -06:00
device_link.rst typed componented support + i915/snd-hda changes 2019-02-11 20:32:31 +01:00
device-io.rst Documentation: Kill all references to mmiowb() 2019-04-08 12:00:45 +01:00
dma-buf.rst dma-fence: Polish kernel-doc for dma-fence.c 2018-07-04 12:18:37 +02:00
edac.rst
edid.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
eisa.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
firewire.rst FireWire: add driver-api Introduction section 2018-09-06 09:41:16 -06:00
frame-buffer.rst
generic-counter.rst counter: fix Documentation build error due to incorrect source file name 2019-05-20 13:18:45 -06:00
hsi.rst
i2c.rst
index.rst docs: add a memory-devices subdir to driver-api 2019-07-15 11:03:03 -03:00
infrastructure.rst dma-mapping: move all DMA mapping code to kernel/dma 2018-06-14 08:50:37 +02:00
input.rst
interconnect.rst docs: interconnect.rst: add it to the driver-api guide 2019-07-15 09:20:28 -03:00
ipmb.rst docs: ipmb: place it at driver-api and convert to ReST 2019-06-30 19:33:25 -05:00
isa.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
isapnp.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
libata.rst libata: remove ata_sff_data_xfer_noirq() 2018-07-11 10:45:28 -07:00
lightnvm-pblk.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
men-chameleon-bus.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
message-based.rst
misc_devices.rst
miscellaneous.rst
mtdnand.rst mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
ntb.rst New feature to add support for NTB virtual MSI interrupts, the ability 2019-07-21 09:46:59 -07:00
nvmem.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
parport-lowlevel.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
pinctl.rst pinctrl.txt: Remove outdated information 2019-01-28 10:07:58 +01:00
pps.rst docs: driver-api: add remaining converted dirs to it 2019-07-15 11:03:03 -03:00
pti_intel_mid.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
ptp.rst docs: driver-api: add remaining converted dirs to it 2019-07-15 11:03:03 -03:00
pwm.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
regulator.rst
rfkill.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
s390-drivers.rst docs: s390: convert docs to ReST and rename to *.rst 2019-06-11 09:48:14 +02:00
scsi.rst
sgi-ioc4.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
slimbus.rst slimbus: stream: add stream support 2018-07-07 17:25:23 +02:00
sm501.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
smsc_ece1099.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
sound.rst
spi.rst
switchtec.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
sync_file.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
target.rst docs: No structured comments in target_core_device.c 2019-05-24 15:01:30 -06:00
uio-howto.rst doc: fix documentation about UIO_MEM_LOGICAL using 2019-06-19 19:31:21 +02:00
vfio-mediated-device.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
vfio.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
vme.rst
w1.rst
xillybus.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
zorro.rst docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00