1
1
===============================================
2
- The irq_domain interrupt number mapping library
2
+ The irq_domain Interrupt Number Mapping Library
3
3
===============================================
4
4
5
5
The current design of the Linux kernel uses a single large number
6
6
space where each separate IRQ source is assigned a different number.
7
7
This is simple when there is only one interrupt controller, but in
8
- systems with multiple interrupt controllers the kernel must ensure
8
+ systems with multiple interrupt controllers, the kernel must ensure
9
9
that each one gets assigned non-overlapping allocations of Linux
10
10
IRQ numbers.
11
11
12
12
The number of interrupt controllers registered as unique irqchips
13
- show a rising tendency: for example subdrivers of different kinds
13
+ shows a rising tendency. For example, subdrivers of different kinds
14
14
such as GPIO controllers avoid reimplementing identical callback
15
15
mechanisms as the IRQ core system by modelling their interrupt
16
- handlers as irqchips, i .e. in effect cascading interrupt controllers.
16
+ handlers as irqchips. I .e. in effect cascading interrupt controllers.
17
17
18
18
Here the interrupt number loose all kind of correspondence to
19
19
hardware interrupt numbers: whereas in the past, IRQ numbers could
20
20
be chosen so they matched the hardware IRQ line into the root
21
21
interrupt controller (i.e. the component actually fireing the
22
22
interrupt line to the CPU) nowadays this number is just a number.
23
23
24
- For this reason we need a mechanism to separate controller-local
25
- interrupt numbers, called hardware irq's , from Linux IRQ numbers.
24
+ For this reason, we need a mechanism to separate controller-local
25
+ interrupt numbers, called hardware IRQs , from Linux IRQ numbers.
26
26
27
27
The irq_alloc_desc*() and irq_free_desc*() APIs provide allocation of
28
28
irq numbers, but they don't provide any support for reverse mapping of
29
29
the controller-local IRQ (hwirq) number into the Linux IRQ number
30
30
space.
31
31
32
- The irq_domain library adds mapping between hwirq and IRQ numbers on
32
+ The irq_domain library adds a mapping between hwirq and IRQ numbers on
33
33
top of the irq_alloc_desc*() API. An irq_domain to manage mapping is
34
34
preferred over interrupt controller drivers open coding their own
35
35
reverse mapping scheme.
@@ -38,7 +38,7 @@ irq_domain also implements translation from an abstract irq_fwspec
38
38
structure to hwirq numbers (Device Tree and ACPI GSI so far), and can
39
39
be easily extended to support other IRQ topology data sources.
40
40
41
- irq_domain usage
41
+ irq_domain Usage
42
42
================
43
43
44
44
An interrupt controller driver creates and registers an irq_domain by
@@ -76,7 +76,7 @@ If the driver has the Linux IRQ number or the irq_data pointer, and
76
76
needs to know the associated hwirq number (such as in the irq_chip
77
77
callbacks) then it can be directly obtained from irq_data->hwirq.
78
78
79
- Types of irq_domain mappings
79
+ Types of irq_domain Mappings
80
80
============================
81
81
82
82
There are several mechanisms available for reverse mapping from hwirq
@@ -101,7 +101,7 @@ map are fixed time lookup for IRQ numbers, and irq_descs are only
101
101
allocated for in-use IRQs. The disadvantage is that the table must be
102
102
as large as the largest possible hwirq number.
103
103
104
- The majority of drivers should use the linear map.
104
+ The majority of drivers should use the Linear map.
105
105
106
106
Tree
107
107
----
@@ -189,7 +189,7 @@ that the driver using the simple domain call irq_create_mapping()
189
189
before any irq_find_mapping() since the latter will actually work
190
190
for the static IRQ assignment case.
191
191
192
- Hierarchy IRQ domain
192
+ Hierarchy IRQ Domain
193
193
--------------------
194
194
195
195
On some architectures, there may be multiple interrupt controllers
0 commit comments