Commit e7a46c81 authored by Marc Zyngier's avatar Marc Zyngier Committed by Thomas Gleixner

irqdomain: Documentation updates

Update the IRQ domain documentation to reflect the changes made
while divorcing the domain infrastructure from Device Tree.
Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Tested-by: default avatarHanjun Guo <hanjun.guo@linaro.org>
Tested-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Cc: Graeme Gregory <graeme@xora.org.uk>
Cc: Jake Oshins <jakeo@microsoft.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Link: http://lkml.kernel.org/r/1444737105-31573-18-git-send-email-marc.zyngier@arm.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent be5436c8
...@@ -32,9 +32,9 @@ top of the irq_alloc_desc*() API. An irq_domain to manage mapping is ...@@ -32,9 +32,9 @@ top of the irq_alloc_desc*() API. An irq_domain to manage mapping is
preferred over interrupt controller drivers open coding their own preferred over interrupt controller drivers open coding their own
reverse mapping scheme. reverse mapping scheme.
irq_domain also implements translation from Device Tree interrupt irq_domain also implements translation from an abstract irq_fwspec
specifiers to hwirq numbers, and can be easily extended to support structure to hwirq numbers (Device Tree and ACPI GSI so far), and can
other IRQ topology data sources. be easily extended to support other IRQ topology data sources.
=== irq_domain usage === === irq_domain usage ===
An interrupt controller driver creates and registers an irq_domain by An interrupt controller driver creates and registers an irq_domain by
...@@ -184,7 +184,7 @@ There are four major interfaces to use hierarchy irq_domain: ...@@ -184,7 +184,7 @@ There are four major interfaces to use hierarchy irq_domain:
related resources associated with these interrupts. related resources associated with these interrupts.
3) irq_domain_activate_irq(): activate interrupt controller hardware to 3) irq_domain_activate_irq(): activate interrupt controller hardware to
deliver the interrupt. deliver the interrupt.
3) irq_domain_deactivate_irq(): deactivate interrupt controller hardware 4) irq_domain_deactivate_irq(): deactivate interrupt controller hardware
to stop delivering the interrupt. to stop delivering the interrupt.
Following changes are needed to support hierarchy irq_domain. Following changes are needed to support hierarchy irq_domain.
......
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
* helpful for interrupt controllers to implement mapping between hardware * helpful for interrupt controllers to implement mapping between hardware
* irq numbers and the Linux irq number space. * irq numbers and the Linux irq number space.
* *
* irq_domains also have a hook for translating device tree interrupt * irq_domains also have hooks for translating device tree or other
* representation into a hardware irq number that can be mapped back to a * firmware interrupt representations into a hardware irq number that
* Linux irq number without any extra platform support code. * can be mapped back to a Linux irq number without any extra platform
* support code.
* *
* Interrupt controller "domain" data structure. This could be defined as a * Interrupt controller "domain" data structure. This could be defined as a
* irq domain controller. That is, it handles the mapping between hardware * irq domain controller. That is, it handles the mapping between hardware
...@@ -17,16 +18,12 @@ ...@@ -17,16 +18,12 @@
* model). It's the domain callbacks that are responsible for setting the * model). It's the domain callbacks that are responsible for setting the
* irq_chip on a given irq_desc after it's been mapped. * irq_chip on a given irq_desc after it's been mapped.
* *
* The host code and data structures are agnostic to whether or not * The host code and data structures use a fwnode_handle pointer to
* we use an open firmware device-tree. We do have references to struct * identify the domain. In some cases, and in order to preserve source
* device_node in two places: in irq_find_host() to find the host matching * code compatibility, this fwnode pointer is "upgraded" to a DT
* a given interrupt controller node, and of course as an argument to its * device_node. For those firmware infrastructures that do not provide
* counterpart domain->ops->match() callback. However, those are treated as * a unique identifier for an interrupt controller, the irq_domain
* generic pointers by the core and the fact that it's actually a device-node * code offers a fwnode allocator.
* pointer is purely a convention between callers and implementation. This
* code could thus be used on other architectures by replacing those two
* by some sort of arch-specific void * "token" used to identify interrupt
* controllers.
*/ */
#ifndef _LINUX_IRQDOMAIN_H #ifndef _LINUX_IRQDOMAIN_H
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment