diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-15 20:30:09 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-15 20:30:09 -0500 |
commit | 60d7ef3fd34dca2eb7ef4c997ccf1ef76a9ba148 (patch) | |
tree | a5d9449b76af277c8f36008535c5d00036e021de /Documentation | |
parent | 9b8ec916df67ba31614796037caf606b763e2e79 (diff) | |
parent | c848126734e8621e81659d819922b20d93a2aa6d (diff) |
Merge branch 'irq-irqdomain-arm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq domain ARM updates from Thomas Gleixner:
"This set of changes make use of hierarchical irqdomains to provide:
- MSI/ITS support for GICv3
- MSI support for GICv2m
- Interrupt polarity extender for GICv1
Marc has come more cleanups for the existing extension hooks of GIC in
the pipeline, but they are going to be 3.20 material"
* 'irq-irqdomain-arm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (22 commits)
irqchip: gicv3-its: Fix ITT allocation
irqchip: gicv3-its: Move some alloc/free code to activate/deactivate
irqchip: gicv3-its: Fix domain free in multi-MSI case
irqchip: gic: Remove warning by including linux/irqdomain.h
irqchip: gic-v2m: Add DT bindings for GICv2m
irqchip: gic-v2m: Add support for ARM GICv2m MSI(-X) doorbell
irqchip: mtk-sysirq: dt-bindings: Add bindings for mediatek sysirq
irqchip: mtk-sysirq: Add sysirq interrupt polarity support
irqchip: gic: Support hierarchy irq domain.
irqchip: GICv3: Binding updates for ITS
irqchip: GICv3: ITS: enable compilation of the ITS driver
irqchip: GICv3: ITS: plug ITS init into main GICv3 code
irqchip: GICv3: ITS: DT probing and initialization
irqchip: GICv3: ITS: MSI support
irqchip: GICv3: ITS: device allocation and configuration
irqchip: GICv3: ITS: tables allocators
irqchip: GICv3: ITS: LPI allocator
irqchip: GICv3: ITS: irqchip implementation
irqchip: GICv3: ITS command queue
irqchip: GICv3: rework redistributor structure
...
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/devicetree/bindings/arm/gic-v3.txt | 39 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/gic.txt | 53 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt | 28 |
3 files changed, 120 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/arm/gic-v3.txt b/Documentation/devicetree/bindings/arm/gic-v3.txt index 33cd05e6c125..ddfade40ac59 100644 --- a/Documentation/devicetree/bindings/arm/gic-v3.txt +++ b/Documentation/devicetree/bindings/arm/gic-v3.txt | |||
@@ -49,11 +49,29 @@ Optional | |||
49 | occupied by the redistributors. Required if more than one such | 49 | occupied by the redistributors. Required if more than one such |
50 | region is present. | 50 | region is present. |
51 | 51 | ||
52 | Sub-nodes: | ||
53 | |||
54 | GICv3 has one or more Interrupt Translation Services (ITS) that are | ||
55 | used to route Message Signalled Interrupts (MSI) to the CPUs. | ||
56 | |||
57 | These nodes must have the following properties: | ||
58 | - compatible : Should at least contain "arm,gic-v3-its". | ||
59 | - msi-controller : Boolean property. Identifies the node as an MSI controller | ||
60 | - reg: Specifies the base physical address and size of the ITS | ||
61 | registers. | ||
62 | |||
63 | The main GIC node must contain the appropriate #address-cells, | ||
64 | #size-cells and ranges properties for the reg property of all ITS | ||
65 | nodes. | ||
66 | |||
52 | Examples: | 67 | Examples: |
53 | 68 | ||
54 | gic: interrupt-controller@2cf00000 { | 69 | gic: interrupt-controller@2cf00000 { |
55 | compatible = "arm,gic-v3"; | 70 | compatible = "arm,gic-v3"; |
56 | #interrupt-cells = <3>; | 71 | #interrupt-cells = <3>; |
72 | #address-cells = <2>; | ||
73 | #size-cells = <2>; | ||
74 | ranges; | ||
57 | interrupt-controller; | 75 | interrupt-controller; |
58 | reg = <0x0 0x2f000000 0 0x10000>, // GICD | 76 | reg = <0x0 0x2f000000 0 0x10000>, // GICD |
59 | <0x0 0x2f100000 0 0x200000>, // GICR | 77 | <0x0 0x2f100000 0 0x200000>, // GICR |
@@ -61,11 +79,20 @@ Examples: | |||
61 | <0x0 0x2c010000 0 0x2000>, // GICH | 79 | <0x0 0x2c010000 0 0x2000>, // GICH |
62 | <0x0 0x2c020000 0 0x2000>; // GICV | 80 | <0x0 0x2c020000 0 0x2000>; // GICV |
63 | interrupts = <1 9 4>; | 81 | interrupts = <1 9 4>; |
82 | |||
83 | gic-its@2c200000 { | ||
84 | compatible = "arm,gic-v3-its"; | ||
85 | msi-controller; | ||
86 | reg = <0x0 0x2c200000 0 0x200000>; | ||
87 | }; | ||
64 | }; | 88 | }; |
65 | 89 | ||
66 | gic: interrupt-controller@2c010000 { | 90 | gic: interrupt-controller@2c010000 { |
67 | compatible = "arm,gic-v3"; | 91 | compatible = "arm,gic-v3"; |
68 | #interrupt-cells = <3>; | 92 | #interrupt-cells = <3>; |
93 | #address-cells = <2>; | ||
94 | #size-cells = <2>; | ||
95 | ranges; | ||
69 | interrupt-controller; | 96 | interrupt-controller; |
70 | redistributor-stride = <0x0 0x40000>; // 256kB stride | 97 | redistributor-stride = <0x0 0x40000>; // 256kB stride |
71 | #redistributor-regions = <2>; | 98 | #redistributor-regions = <2>; |
@@ -76,4 +103,16 @@ Examples: | |||
76 | <0x0 0x2c060000 0 0x2000>, // GICH | 103 | <0x0 0x2c060000 0 0x2000>, // GICH |
77 | <0x0 0x2c080000 0 0x2000>; // GICV | 104 | <0x0 0x2c080000 0 0x2000>; // GICV |
78 | interrupts = <1 9 4>; | 105 | interrupts = <1 9 4>; |
106 | |||
107 | gic-its@2c200000 { | ||
108 | compatible = "arm,gic-v3-its"; | ||
109 | msi-controller; | ||
110 | reg = <0x0 0x2c200000 0 0x200000>; | ||
111 | }; | ||
112 | |||
113 | gic-its@2c400000 { | ||
114 | compatible = "arm,gic-v3-its"; | ||
115 | msi-controller; | ||
116 | reg = <0x0 0x2c400000 0 0x200000>; | ||
117 | }; | ||
79 | }; | 118 | }; |
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index b38608af66db..8112d0c3675a 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt | |||
@@ -97,3 +97,56 @@ Example: | |||
97 | <0x2c006000 0x2000>; | 97 | <0x2c006000 0x2000>; |
98 | interrupts = <1 9 0xf04>; | 98 | interrupts = <1 9 0xf04>; |
99 | }; | 99 | }; |
100 | |||
101 | |||
102 | * GICv2m extension for MSI/MSI-x support (Optional) | ||
103 | |||
104 | Certain revisions of GIC-400 supports MSI/MSI-x via V2M register frame(s). | ||
105 | This is enabled by specifying v2m sub-node(s). | ||
106 | |||
107 | Required properties: | ||
108 | |||
109 | - compatible : The value here should contain "arm,gic-v2m-frame". | ||
110 | |||
111 | - msi-controller : Identifies the node as an MSI controller. | ||
112 | |||
113 | - reg : GICv2m MSI interface register base and size | ||
114 | |||
115 | Optional properties: | ||
116 | |||
117 | - arm,msi-base-spi : When the MSI_TYPER register contains an incorrect | ||
118 | value, this property should contain the SPI base of | ||
119 | the MSI frame, overriding the HW value. | ||
120 | |||
121 | - arm,msi-num-spis : When the MSI_TYPER register contains an incorrect | ||
122 | value, this property should contain the number of | ||
123 | SPIs assigned to the frame, overriding the HW value. | ||
124 | |||
125 | Example: | ||
126 | |||
127 | interrupt-controller@e1101000 { | ||
128 | compatible = "arm,gic-400"; | ||
129 | #interrupt-cells = <3>; | ||
130 | #address-cells = <2>; | ||
131 | #size-cells = <2>; | ||
132 | interrupt-controller; | ||
133 | interrupts = <1 8 0xf04>; | ||
134 | ranges = <0 0 0 0xe1100000 0 0x100000>; | ||
135 | reg = <0x0 0xe1110000 0 0x01000>, | ||
136 | <0x0 0xe112f000 0 0x02000>, | ||
137 | <0x0 0xe1140000 0 0x10000>, | ||
138 | <0x0 0xe1160000 0 0x10000>; | ||
139 | v2m0: v2m@0x8000 { | ||
140 | compatible = "arm,gic-v2m-frame"; | ||
141 | msi-controller; | ||
142 | reg = <0x0 0x80000 0 0x1000>; | ||
143 | }; | ||
144 | |||
145 | .... | ||
146 | |||
147 | v2mN: v2m@0x9000 { | ||
148 | compatible = "arm,gic-v2m-frame"; | ||
149 | msi-controller; | ||
150 | reg = <0x0 0x90000 0 0x1000>; | ||
151 | }; | ||
152 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt b/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt new file mode 100644 index 000000000000..d680b07ec6e8 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | Mediatek 65xx/81xx sysirq | ||
2 | |||
3 | Mediatek SOCs sysirq support controllable irq inverter for each GIC SPI | ||
4 | interrupt. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: should be one of: | ||
8 | "mediatek,mt8135-sysirq" | ||
9 | "mediatek,mt8127-sysirq" | ||
10 | "mediatek,mt6589-sysirq" | ||
11 | "mediatek,mt6582-sysirq" | ||
12 | "mediatek,mt6577-sysirq" | ||
13 | - interrupt-controller : Identifies the node as an interrupt controller | ||
14 | - #interrupt-cells : Use the same format as specified by GIC in | ||
15 | Documentation/devicetree/bindings/arm/gic.txt | ||
16 | - interrupt-parent: phandle of irq parent for sysirq. The parent must | ||
17 | use the same interrupt-cells format as GIC. | ||
18 | - reg: Physical base address of the intpol registers and length of memory | ||
19 | mapped region. | ||
20 | |||
21 | Example: | ||
22 | sysirq: interrupt-controller@10200100 { | ||
23 | compatible = "mediatek,mt6589-sysirq", "mediatek,mt6577-sysirq"; | ||
24 | interrupt-controller; | ||
25 | #interrupt-cells = <3>; | ||
26 | interrupt-parent = <&gic>; | ||
27 | reg = <0 0x10200100 0 0x1c>; | ||
28 | }; | ||