-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
metag: Internal and external irqchips
Meta core internal interrupts (from HWSTATMETA and friends) are vectored onto the TR1 core trigger for the current thread. This is demultiplexed in irq-metag.c to individual Linux IRQs for each internal interrupt. External SoC interrupts (from HWSTATEXT and friends) are vectored onto the TR2 core trigger for the current thread. This is demultiplexed in irq-metag-ext.c to individual Linux IRQs for each external SoC interrupt. The external irqchip has devicetree bindings for configuring the number of irq banks and the type of masking available. Signed-off-by: James Hogan <james.hogan@imgtec.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Grant Likely <grant.likely@secretlab.ca> Cc: Rob Herring <rob.herring@calxeda.com> Cc: Rob Landley <rob@landley.net> Cc: Dom Cobley <popcornmix@gmail.com> Cc: Simon Arlott <simon@fire.lp0.eu> Cc: Viresh Kumar <viresh.kumar@linaro.org> Cc: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: devicetree-discuss@lists.ozlabs.org Cc: linux-doc@vger.kernel.org
- Loading branch information
James Hogan
committed
Mar 2, 2013
1 parent
63047ea
commit 5698c50
Showing
8 changed files
with
1,359 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
* Meta External Trigger Controller Binding | ||
|
||
This binding specifies what properties must be available in the device tree | ||
representation of a Meta external trigger controller. | ||
|
||
Required properties: | ||
|
||
- compatible: Specifies the compatibility list for the interrupt controller. | ||
The type shall be <string> and the value shall include "img,meta-intc". | ||
|
||
- num-banks: Specifies the number of interrupt banks (each of which can | ||
handle 32 interrupt sources). | ||
|
||
- interrupt-controller: The presence of this property identifies the node | ||
as an interupt controller. No property value shall be defined. | ||
|
||
- #interrupt-cells: Specifies the number of cells needed to encode an | ||
interrupt source. The type shall be a <u32> and the value shall be 2. | ||
|
||
- #address-cells: Specifies the number of cells needed to encode an | ||
address. The type shall be <u32> and the value shall be 0. As such, | ||
'interrupt-map' nodes do not have to specify a parent unit address. | ||
|
||
Optional properties: | ||
|
||
- no-mask: The controller doesn't have any mask registers. | ||
|
||
* Interrupt Specifier Definition | ||
|
||
Interrupt specifiers consists of 2 cells encoded as follows: | ||
|
||
- <1st-cell>: The interrupt-number that identifies the interrupt source. | ||
|
||
- <2nd-cell>: The Linux interrupt flags containing level-sense information, | ||
encoded as follows: | ||
1 = edge triggered | ||
4 = level-sensitive | ||
|
||
* Examples | ||
|
||
Example 1: | ||
|
||
/* | ||
* Meta external trigger block | ||
*/ | ||
intc: intc { | ||
// This is an interrupt controller node. | ||
interrupt-controller; | ||
|
||
// No address cells so that 'interrupt-map' nodes which | ||
// reference this interrupt controller node do not need a parent | ||
// address specifier. | ||
#address-cells = <0>; | ||
|
||
// Two cells to encode interrupt sources. | ||
#interrupt-cells = <2>; | ||
|
||
// Number of interrupt banks | ||
num-banks = <2>; | ||
|
||
// No HWMASKEXT is available (specify on Chorus2 and Comet ES1) | ||
no-mask; | ||
|
||
// Compatible with Meta hardware trigger block. | ||
compatible = "img,meta-intc"; | ||
}; | ||
|
||
Example 2: | ||
|
||
/* | ||
* An interrupt generating device that is wired to a Meta external | ||
* trigger block. | ||
*/ | ||
uart1: uart@0x02004c00 { | ||
// Interrupt source '5' that is level-sensitive. | ||
// Note that there are only two cells as specified in the | ||
// interrupt parent's '#interrupt-cells' property. | ||
interrupts = <5 4 /* level */>; | ||
|
||
// The interrupt controller that this device is wired to. | ||
interrupt-parent = <&intc>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,6 @@ | ||
obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o | ||
obj-$(CONFIG_METAG) += irq-metag-ext.o | ||
obj-$(CONFIG_METAG_PERFCOUNTER_IRQS) += irq-metag.o | ||
obj-$(CONFIG_ARCH_SUNXI) += irq-sunxi.o | ||
obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o | ||
obj-$(CONFIG_ARCH_SPEAR3XX) += spear-shirq.o |
Oops, something went wrong.