diff options
Diffstat (limited to 'arch/sh/kernel/cpu/irq/intc-sh5.c')
| -rw-r--r-- | arch/sh/kernel/cpu/irq/intc-sh5.c | 69 | 
1 files changed, 36 insertions, 33 deletions
diff --git a/arch/sh/kernel/cpu/irq/intc-sh5.c b/arch/sh/kernel/cpu/irq/intc-sh5.c index d6e0e2bdaad..de45c6a3e33 100644 --- a/arch/sh/kernel/cpu/irq/intc-sh5.c +++ b/arch/sh/kernel/cpu/irq/intc-sh5.c @@ -184,9 +184,8 @@ int intc_irq_describe(char* p, int irq)  void __init plat_irq_setup(void)  { -        unsigned long long __dummy0, __dummy1=~0x00000000100000f0; +	unsigned long long __dummy0, __dummy1=~0x00000000100000f0;  	unsigned long reg; -	unsigned long data;  	int i;  	intc_virt = onchip_remap(INTC_BASE, 1024, "INTC"); @@ -196,11 +195,8 @@ void __init plat_irq_setup(void)  	/* Set default: per-line enable/disable, priority driven ack/eoi */ -	for (i = 0; i < NR_INTC_IRQS; i++) { -		if (platform_int_priority[i] != NO_PRIORITY) { -			irq_desc[i].chip = &intc_irq_type; -		} -	} +	for (i = 0; i < NR_INTC_IRQS; i++) +		irq_desc[i].chip = &intc_irq_type;  	/* Disable all interrupts and set all priorities to 0 to avoid trouble */ @@ -211,35 +207,42 @@ void __init plat_irq_setup(void)  		ctrl_outl( NO_PRIORITY, reg); -	/* Set IRLM */ -	/* If all the priorities are set to 'no priority', then -	 * assume we are using encoded mode. -	 */ -	irlm = platform_int_priority[IRQ_IRL0] + platform_int_priority[IRQ_IRL1] + \ -		platform_int_priority[IRQ_IRL2] + platform_int_priority[IRQ_IRL3]; +#ifdef CONFIG_SH_CAYMAN +	{ +		unsigned long data; -	if (irlm == NO_PRIORITY) { -		/* IRLM = 0 */ -		reg = INTC_ICR_CLEAR; -		i = IRQ_INTA; -		printk("Trying to use encoded IRL0-3. IRLs unsupported.\n"); -	} else { -		/* IRLM = 1 */ -		reg = INTC_ICR_SET; -		i = IRQ_IRL0; -	} -	ctrl_outl(INTC_ICR_IRLM, reg); +		/* Set IRLM */ +		/* If all the priorities are set to 'no priority', then +		 * assume we are using encoded mode. +		 */ +		irlm = platform_int_priority[IRQ_IRL0] + +		       platform_int_priority[IRQ_IRL1] + +		       platform_int_priority[IRQ_IRL2] + +		       platform_int_priority[IRQ_IRL3]; +		if (irlm == NO_PRIORITY) { +			/* IRLM = 0 */ +			reg = INTC_ICR_CLEAR; +			i = IRQ_INTA; +			printk("Trying to use encoded IRL0-3. IRLs unsupported.\n"); +		} else { +			/* IRLM = 1 */ +			reg = INTC_ICR_SET; +			i = IRQ_IRL0; +		} +		ctrl_outl(INTC_ICR_IRLM, reg); -	/* Set interrupt priorities according to platform description */ -	for (data = 0, reg = INTC_INTPRI_0; i < NR_INTC_IRQS; i++) { -		data |= platform_int_priority[i] << ((i % INTC_INTPRI_PPREG) * 4); -		if ((i % INTC_INTPRI_PPREG) == (INTC_INTPRI_PPREG - 1)) { -			/* Upon the 7th, set Priority Register */ -			ctrl_outl(data, reg); -			data = 0; -			reg += 8; +		/* Set interrupt priorities according to platform description */ +		for (data = 0, reg = INTC_INTPRI_0; i < NR_INTC_IRQS; i++) { +			data |= platform_int_priority[i] << +				((i % INTC_INTPRI_PPREG) * 4); +			if ((i % INTC_INTPRI_PPREG) == (INTC_INTPRI_PPREG - 1)) { +				/* Upon the 7th, set Priority Register */ +				ctrl_outl(data, reg); +				data = 0; +				reg += 8; +			}  		} -	} +#endif  	/*  	 * And now let interrupts come in.  |