Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f60be0d5 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'integrator-irq' of...

Merge tag 'integrator-irq' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator into next/soc

From Linus Walleij:

This provides the following Integrator refactorings:
- Switch the FPGA IRQ controller to use the simple IRQ domain
- Get rid of preallocated IRQ descriptors on the Integrator
- Move the FPGA IRQ driver to drivers/irqchip

* tag 'integrator-irq' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator:
  ARM: plat-versatile: move FPGA irq driver to drivers/irqchip
  ARM: integrator: get rid of preallocated irq descriptors
  ARM: plat-versatile: use simple irqdomain for FPGA IRQ
parents 3b19119b 2389d501
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -284,8 +284,8 @@ config ARCH_INTEGRATOR
	select MULTI_IRQ_HANDLER
	select NEED_MACH_MEMORY_H
	select PLAT_VERSATILE
	select PLAT_VERSATILE_FPGA_IRQ
	select SPARSE_IRQ
	select VERSATILE_FPGA_IRQ
	help
	  Support for ARM's Integrator platform.

@@ -318,7 +318,7 @@ config ARCH_VERSATILE
	select PLAT_VERSATILE
	select PLAT_VERSATILE_CLCD
	select PLAT_VERSATILE_CLOCK
	select PLAT_VERSATILE_FPGA_IRQ
	select VERSATILE_FPGA_IRQ
	help
	  This enables support for ARM Ltd Versatile board.

+54 −55
Original line number Diff line number Diff line
@@ -20,63 +20,62 @@
 */

/*
 *  Interrupt numbers
 * Interrupt numbers, all of the above are just static reservations
 * used so they can be encoded into device resources. They will finally
 * be done away with when switching to device tree.
 */
#define IRQ_PIC_START			1
#define IRQ_SOFTINT			1
#define IRQ_UARTINT0			2
#define IRQ_UARTINT1			3
#define IRQ_KMIINT0			4
#define IRQ_KMIINT1			5
#define IRQ_TIMERINT0			6
#define IRQ_TIMERINT1			7
#define IRQ_TIMERINT2			8
#define IRQ_RTCINT			9
#define IRQ_AP_EXPINT0			10
#define IRQ_AP_EXPINT1			11
#define IRQ_AP_EXPINT2			12
#define IRQ_AP_EXPINT3			13
#define IRQ_AP_PCIINT0			14
#define IRQ_AP_PCIINT1			15
#define IRQ_AP_PCIINT2			16
#define IRQ_AP_PCIINT3			17
#define IRQ_AP_V3INT			18
#define IRQ_AP_CPINT0			19
#define IRQ_AP_CPINT1			20
#define IRQ_AP_LBUSTIMEOUT 		21
#define IRQ_AP_APCINT			22
#define IRQ_CP_CLCDCINT			23
#define IRQ_CP_MMCIINT0			24
#define IRQ_CP_MMCIINT1			25
#define IRQ_CP_AACIINT			26
#define IRQ_CP_CPPLDINT			27
#define IRQ_CP_ETHINT			28
#define IRQ_CP_TSPENINT			29
#define IRQ_PIC_END			29
#define IRQ_PIC_START			64
#define IRQ_SOFTINT			(IRQ_PIC_START+0)
#define IRQ_UARTINT0			(IRQ_PIC_START+1)
#define IRQ_UARTINT1			(IRQ_PIC_START+2)
#define IRQ_KMIINT0			(IRQ_PIC_START+3)
#define IRQ_KMIINT1			(IRQ_PIC_START+4)
#define IRQ_TIMERINT0			(IRQ_PIC_START+5)
#define IRQ_TIMERINT1			(IRQ_PIC_START+6)
#define IRQ_TIMERINT2			(IRQ_PIC_START+7)
#define IRQ_RTCINT			(IRQ_PIC_START+8)
#define IRQ_AP_EXPINT0			(IRQ_PIC_START+9)
#define IRQ_AP_EXPINT1			(IRQ_PIC_START+10)
#define IRQ_AP_EXPINT2			(IRQ_PIC_START+11)
#define IRQ_AP_EXPINT3			(IRQ_PIC_START+12)
#define IRQ_AP_PCIINT0			(IRQ_PIC_START+13)
#define IRQ_AP_PCIINT1			(IRQ_PIC_START+14)
#define IRQ_AP_PCIINT2			(IRQ_PIC_START+15)
#define IRQ_AP_PCIINT3			(IRQ_PIC_START+16)
#define IRQ_AP_V3INT			(IRQ_PIC_START+17)
#define IRQ_AP_CPINT0			(IRQ_PIC_START+18)
#define IRQ_AP_CPINT1			(IRQ_PIC_START+19)
#define IRQ_AP_LBUSTIMEOUT 		(IRQ_PIC_START+20)
#define IRQ_AP_APCINT			(IRQ_PIC_START+21)
#define IRQ_CP_CLCDCINT			(IRQ_PIC_START+22)
#define IRQ_CP_MMCIINT0			(IRQ_PIC_START+23)
#define IRQ_CP_MMCIINT1			(IRQ_PIC_START+24)
#define IRQ_CP_AACIINT			(IRQ_PIC_START+25)
#define IRQ_CP_CPPLDINT			(IRQ_PIC_START+26)
#define IRQ_CP_ETHINT			(IRQ_PIC_START+27)
#define IRQ_CP_TSPENINT			(IRQ_PIC_START+28)
#define IRQ_PIC_END			(IRQ_PIC_START+28)

#define IRQ_CIC_START			32
#define IRQ_CM_SOFTINT			32
#define IRQ_CM_COMMRX			33
#define IRQ_CM_COMMTX			34
#define IRQ_CIC_END			34
#define IRQ_CIC_START			(IRQ_PIC_END+1)
#define IRQ_CM_SOFTINT			(IRQ_CIC_START+0)
#define IRQ_CM_COMMRX			(IRQ_CIC_START+1)
#define IRQ_CM_COMMTX			(IRQ_CIC_START+2)
#define IRQ_CIC_END			(IRQ_CIC_START+2)

/*
 * IntegratorCP only
 */
#define IRQ_SIC_START			35
#define IRQ_SIC_CP_SOFTINT		35
#define IRQ_SIC_CP_RI0			36
#define IRQ_SIC_CP_RI1			37
#define IRQ_SIC_CP_CARDIN		38
#define IRQ_SIC_CP_LMINT0		39
#define IRQ_SIC_CP_LMINT1		40
#define IRQ_SIC_CP_LMINT2		41
#define IRQ_SIC_CP_LMINT3		42
#define IRQ_SIC_CP_LMINT4		43
#define IRQ_SIC_CP_LMINT5		44
#define IRQ_SIC_CP_LMINT6		45
#define IRQ_SIC_CP_LMINT7		46
#define IRQ_SIC_END			46

#define NR_IRQS_INTEGRATOR_AP		34
#define NR_IRQS_INTEGRATOR_CP		47
#define IRQ_SIC_START			(IRQ_CIC_END+1)
#define IRQ_SIC_CP_SOFTINT		(IRQ_SIC_START+0)
#define IRQ_SIC_CP_RI0			(IRQ_SIC_START+1)
#define IRQ_SIC_CP_RI1			(IRQ_SIC_START+2)
#define IRQ_SIC_CP_CARDIN		(IRQ_SIC_START+3)
#define IRQ_SIC_CP_LMINT0		(IRQ_SIC_START+4)
#define IRQ_SIC_CP_LMINT1		(IRQ_SIC_START+5)
#define IRQ_SIC_CP_LMINT2		(IRQ_SIC_START+6)
#define IRQ_SIC_CP_LMINT3		(IRQ_SIC_START+7)
#define IRQ_SIC_CP_LMINT4		(IRQ_SIC_START+8)
#define IRQ_SIC_CP_LMINT5		(IRQ_SIC_START+9)
#define IRQ_SIC_CP_LMINT6		(IRQ_SIC_START+10)
#define IRQ_SIC_CP_LMINT7		(IRQ_SIC_START+11)
#define IRQ_SIC_END			(IRQ_SIC_START+11)
+1 −4
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include <linux/clockchips.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/irqchip/versatile-fpga.h>
#include <linux/mtd/physmap.h>
#include <linux/clk.h>
#include <linux/platform_data/clk-integrator.h>
@@ -56,8 +57,6 @@
#include <asm/mach/pci.h>
#include <asm/mach/time.h>

#include <plat/fpga-irq.h>

#include "common.h"

/* 
@@ -499,7 +498,6 @@ static const char * ap_dt_board_compat[] = {
DT_MACHINE_START(INTEGRATOR_AP_DT, "ARM Integrator/AP (Device Tree)")
	.reserve	= integrator_reserve,
	.map_io		= ap_map_io,
	.nr_irqs	= NR_IRQS_INTEGRATOR_AP,
	.init_early	= ap_init_early,
	.init_irq	= ap_init_irq_of,
	.handle_irq	= fpga_handle_irq,
@@ -609,7 +607,6 @@ MACHINE_START(INTEGRATOR, "ARM-Integrator")
	.atag_offset	= 0x100,
	.reserve	= integrator_reserve,
	.map_io		= ap_map_io,
	.nr_irqs	= NR_IRQS_INTEGRATOR_AP,
	.init_early	= ap_init_early,
	.init_irq	= ap_init_irq,
	.handle_irq	= fpga_handle_irq,
+2 −4
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/amba/clcd.h>
#include <linux/amba/mmci.h>
#include <linux/io.h>
#include <linux/irqchip/versatile-fpga.h>
#include <linux/gfp.h>
#include <linux/mtd/physmap.h>
#include <linux/platform_data/clk-integrator.h>
@@ -46,7 +47,6 @@
#include <asm/hardware/timer-sp.h>

#include <plat/clcd.h>
#include <plat/fpga-irq.h>
#include <plat/sched_clock.h>

#include "common.h"
@@ -350,7 +350,6 @@ static const char * intcp_dt_board_compat[] = {
DT_MACHINE_START(INTEGRATOR_CP_DT, "ARM Integrator/CP (Device Tree)")
	.reserve	= integrator_reserve,
	.map_io		= intcp_map_io,
	.nr_irqs	= NR_IRQS_INTEGRATOR_CP,
	.init_early	= intcp_init_early,
	.init_irq	= intcp_init_irq_of,
	.handle_irq	= fpga_handle_irq,
@@ -423,7 +422,7 @@ static void __init intcp_init_irq(void)
	u32 pic_mask, cic_mask, sic_mask;

	/* These masks are for the HW IRQ registers */
	pic_mask = ~((~0u) << (11 - IRQ_PIC_START));
	pic_mask = ~((~0u) << (11 - 0));
	pic_mask |= (~((~0u) << (29 - 22))) << 22;
	cic_mask = ~((~0u) << (1 + IRQ_CIC_END - IRQ_CIC_START));
	sic_mask = ~((~0u) << (1 + IRQ_SIC_END - IRQ_SIC_START));
@@ -504,7 +503,6 @@ MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP")
	.atag_offset	= 0x100,
	.reserve	= integrator_reserve,
	.map_io		= intcp_map_io,
	.nr_irqs	= NR_IRQS_INTEGRATOR_CP,
	.init_early	= intcp_init_early,
	.init_irq	= intcp_init_irq,
	.handle_irq	= fpga_handle_irq,
+1 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include <linux/amba/mmci.h>
#include <linux/amba/pl022.h>
#include <linux/io.h>
#include <linux/irqchip/versatile-fpga.h>
#include <linux/gfp.h>
#include <linux/clkdev.h>
#include <linux/mtd/physmap.h>
@@ -51,7 +52,6 @@
#include <asm/hardware/timer-sp.h>

#include <plat/clcd.h>
#include <plat/fpga-irq.h>
#include <plat/sched_clock.h>

#include "core.h"
Loading