diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-04 18:59:13 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-04 18:59:13 -0400 |
| commit | d09cc3659db494aca4b3bb2393c533fb4946b794 (patch) | |
| tree | 158d1dd5fa5fddf1c99da677a193b8561c11274d | |
| parent | 82e627eb5e07d7993216c9e63fb5550cf6ed25d7 (diff) | |
| parent | c0ffa793994a7a69c37a96dabf38323eae1dffa6 (diff) | |
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next
Pull core irq updates from Thomas Gleixner:
"The irq department delivers:
- Another tree wide update to get rid of the horrible create_irq
interface along with its even more horrible variants. That also
gets rid of the last leftovers of the initial sparse irq hackery.
arch/driver specific changes have been either acked or ignored.
- A fix for the spurious interrupt detection logic with threaded
interrupts.
- A new ARM SoC interrupt controller
- The usual pile of fixes and improvements all over the place"
* 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (40 commits)
Documentation: brcmstb-l2: Add Broadcom STB Level-2 interrupt controller binding
irqchip: brcmstb-l2: Add Broadcom Set Top Box Level-2 interrupt controller
genirq: Improve documentation to match current implementation
ARM: iop13xx: fix msi support with sparse IRQ
genirq: Provide !SMP stub for irq_set_affinity_notifier()
irqchip: armada-370-xp: Move the devicetree binding documentation
irqchip: gic: Use mask field in GICC_IAR
genirq: Remove dynamic_irq mess
ia64: Use irq_init_desc
genirq: Replace dynamic_irq_init/cleanup
genirq: Remove irq_reserve_irq[s]
genirq: Replace reserve_irqs in core code
s390: Avoid call to irq_reserve_irqs()
s390: Remove pointless arch_show_interrupts()
s390: pci: Check return value of alloc_irq_desc() proper
sh: intc: Remove pointless irq_reserve_irqs() invocation
x86, irq: Remove pointless irq_reserve_irqs() call
genirq: Make create/destroy_irq() ia64 private
tile: Use SPARSE_IRQ
tile: pci: Use irq_alloc/free_hwirq()
...
56 files changed, 597 insertions, 396 deletions
diff --git a/Documentation/IRQ-domain.txt b/Documentation/IRQ-domain.txt index 03df71aeb38c..8a8b82c9ca53 100644 --- a/Documentation/IRQ-domain.txt +++ b/Documentation/IRQ-domain.txt | |||
| @@ -41,8 +41,7 @@ An interrupt controller driver creates and registers an irq_domain by | |||
| 41 | calling one of the irq_domain_add_*() functions (each mapping method | 41 | calling one of the irq_domain_add_*() functions (each mapping method |
| 42 | has a different allocator function, more on that later). The function | 42 | has a different allocator function, more on that later). The function |
| 43 | will return a pointer to the irq_domain on success. The caller must | 43 | will return a pointer to the irq_domain on success. The caller must |
| 44 | provide the allocator function with an irq_domain_ops structure with | 44 | provide the allocator function with an irq_domain_ops structure. |
| 45 | the .map callback populated as a minimum. | ||
| 46 | 45 | ||
| 47 | In most cases, the irq_domain will begin empty without any mappings | 46 | In most cases, the irq_domain will begin empty without any mappings |
| 48 | between hwirq and IRQ numbers. Mappings are added to the irq_domain | 47 | between hwirq and IRQ numbers. Mappings are added to the irq_domain |
diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.txt new file mode 100644 index 000000000000..448273a30a11 --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.txt | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | Broadcom Generic Level 2 Interrupt Controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | |||
| 5 | - compatible: should be "brcm,l2-intc" | ||
| 6 | - reg: specifies the base physical address and size of the registers | ||
| 7 | - interrupt-controller: identifies the node as an interrupt controller | ||
| 8 | - #interrupt-cells: specifies the number of cells needed to encode an | ||
| 9 | interrupt source. Should be 1. | ||
| 10 | - interrupt-parent: specifies the phandle to the parent interrupt controller | ||
| 11 | this controller is cacaded from | ||
| 12 | - interrupts: specifies the interrupt line in the interrupt-parent irq space | ||
| 13 | to be used for cascading | ||
| 14 | |||
| 15 | Optional properties: | ||
| 16 | |||
| 17 | - brcm,irq-can-wake: If present, this means the L2 controller can be used as a | ||
| 18 | wakeup source for system suspend/resume. | ||
| 19 | |||
| 20 | Example: | ||
| 21 | |||
| 22 | hif_intr2_intc: interrupt-controller@f0441000 { | ||
| 23 | compatible = "brcm,l2-intc"; | ||
| 24 | reg = <0xf0441000 0x30>; | ||
| 25 | interrupt-controller; | ||
| 26 | #interrupt-cells = <1>; | ||
| 27 | interrupt-parent = <&intc>; | ||
| 28 | interrupts = <0x0 0x20 0x0>; | ||
| 29 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt b/Documentation/devicetree/bindings/interrupt-controller/marvell,armada-370-xp-mpic.txt index 5fc03134a999..5fc03134a999 100644 --- a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/marvell,armada-370-xp-mpic.txt | |||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 071dce78959a..ad89a033f17f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -480,6 +480,7 @@ config ARCH_IOP13XX | |||
| 480 | select PCI | 480 | select PCI |
| 481 | select PLAT_IOP | 481 | select PLAT_IOP |
| 482 | select VMSPLIT_1G | 482 | select VMSPLIT_1G |
| 483 | select SPARSE_IRQ | ||
| 483 | help | 484 | help |
| 484 | Support for Intel's IOP13XX (XScale) family of processors. | 485 | Support for Intel's IOP13XX (XScale) family of processors. |
| 485 | 486 | ||
diff --git a/arch/arm/mach-iop13xx/include/mach/irqs.h b/arch/arm/mach-iop13xx/include/mach/irqs.h index 054e7acb5bfa..e8d24d32121a 100644 --- a/arch/arm/mach-iop13xx/include/mach/irqs.h +++ b/arch/arm/mach-iop13xx/include/mach/irqs.h | |||
| @@ -191,6 +191,4 @@ static inline u32 read_intpnd_3(void) | |||
| 191 | #define NR_IOP13XX_IRQS (IRQ_IOP13XX_HPI + 1) | 191 | #define NR_IOP13XX_IRQS (IRQ_IOP13XX_HPI + 1) |
| 192 | #endif | 192 | #endif |
| 193 | 193 | ||
| 194 | #define NR_IRQS NR_IOP13XX_IRQS | ||
| 195 | |||
| 196 | #endif /* _IOP13XX_IRQ_H_ */ | 194 | #endif /* _IOP13XX_IRQ_H_ */ |
diff --git a/arch/arm/mach-iop13xx/include/mach/time.h b/arch/arm/mach-iop13xx/include/mach/time.h index f1c00d6d560b..15bc9bb78a6b 100644 --- a/arch/arm/mach-iop13xx/include/mach/time.h +++ b/arch/arm/mach-iop13xx/include/mach/time.h | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | #ifndef _IOP13XX_TIME_H_ | 1 | #ifndef _IOP13XX_TIME_H_ |
| 2 | #define _IOP13XX_TIME_H_ | 2 | #define _IOP13XX_TIME_H_ |
| 3 | |||
| 4 | #include <mach/irqs.h> | ||
| 5 | |||
| 3 | #define IRQ_IOP_TIMER0 IRQ_IOP13XX_TIMER0 | 6 | #define IRQ_IOP_TIMER0 IRQ_IOP13XX_TIMER0 |
| 4 | 7 | ||
| 5 | #define IOP_TMR_EN 0x02 | 8 | #define IOP_TMR_EN 0x02 |
diff --git a/arch/arm/mach-iop13xx/iq81340mc.c b/arch/arm/mach-iop13xx/iq81340mc.c index 02a8228ac2d3..9cd07d396093 100644 --- a/arch/arm/mach-iop13xx/iq81340mc.c +++ b/arch/arm/mach-iop13xx/iq81340mc.c | |||
| @@ -93,4 +93,5 @@ MACHINE_START(IQ81340MC, "Intel IQ81340MC") | |||
| 93 | .init_time = iq81340mc_timer_init, | 93 | .init_time = iq81340mc_timer_init, |
| 94 | .init_machine = iq81340mc_init, | 94 | .init_machine = iq81340mc_init, |
| 95 | .restart = iop13xx_restart, | 95 | .restart = iop13xx_restart, |
| 96 | .nr_irqs = NR_IOP13XX_IRQS, | ||
| 96 | MACHINE_END | ||
