sh: intc_sh5 depends on cayman board for IRQ priority table.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
105eabfd51
commit
a1dc4b59fa
1 changed files with 37 additions and 34 deletions
|
@ -186,7 +186,6 @@ void __init plat_irq_setup(void)
|
||||||
{
|
{
|
||||||
unsigned long long __dummy0, __dummy1=~0x00000000100000f0;
|
unsigned long long __dummy0, __dummy1=~0x00000000100000f0;
|
||||||
unsigned long reg;
|
unsigned long reg;
|
||||||
unsigned long data;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
intc_virt = onchip_remap(INTC_BASE, 1024, "INTC");
|
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 */
|
/* Set default: per-line enable/disable, priority driven ack/eoi */
|
||||||
for (i = 0; i < NR_INTC_IRQS; i++) {
|
for (i = 0; i < NR_INTC_IRQS; i++)
|
||||||
if (platform_int_priority[i] != NO_PRIORITY) {
|
|
||||||
irq_desc[i].chip = &intc_irq_type;
|
irq_desc[i].chip = &intc_irq_type;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Disable all interrupts and set all priorities to 0 to avoid trouble */
|
/* Disable all interrupts and set all priorities to 0 to avoid trouble */
|
||||||
|
@ -211,13 +207,18 @@ void __init plat_irq_setup(void)
|
||||||
ctrl_outl( NO_PRIORITY, reg);
|
ctrl_outl( NO_PRIORITY, reg);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_SH_CAYMAN
|
||||||
|
{
|
||||||
|
unsigned long data;
|
||||||
|
|
||||||
/* Set IRLM */
|
/* Set IRLM */
|
||||||
/* If all the priorities are set to 'no priority', then
|
/* If all the priorities are set to 'no priority', then
|
||||||
* assume we are using encoded mode.
|
* assume we are using encoded mode.
|
||||||
*/
|
*/
|
||||||
irlm = platform_int_priority[IRQ_IRL0] + platform_int_priority[IRQ_IRL1] + \
|
irlm = platform_int_priority[IRQ_IRL0] +
|
||||||
platform_int_priority[IRQ_IRL2] + platform_int_priority[IRQ_IRL3];
|
platform_int_priority[IRQ_IRL1] +
|
||||||
|
platform_int_priority[IRQ_IRL2] +
|
||||||
|
platform_int_priority[IRQ_IRL3];
|
||||||
if (irlm == NO_PRIORITY) {
|
if (irlm == NO_PRIORITY) {
|
||||||
/* IRLM = 0 */
|
/* IRLM = 0 */
|
||||||
reg = INTC_ICR_CLEAR;
|
reg = INTC_ICR_CLEAR;
|
||||||
|
@ -232,7 +233,8 @@ void __init plat_irq_setup(void)
|
||||||
|
|
||||||
/* Set interrupt priorities according to platform description */
|
/* Set interrupt priorities according to platform description */
|
||||||
for (data = 0, reg = INTC_INTPRI_0; i < NR_INTC_IRQS; i++) {
|
for (data = 0, reg = INTC_INTPRI_0; i < NR_INTC_IRQS; i++) {
|
||||||
data |= platform_int_priority[i] << ((i % INTC_INTPRI_PPREG) * 4);
|
data |= platform_int_priority[i] <<
|
||||||
|
((i % INTC_INTPRI_PPREG) * 4);
|
||||||
if ((i % INTC_INTPRI_PPREG) == (INTC_INTPRI_PPREG - 1)) {
|
if ((i % INTC_INTPRI_PPREG) == (INTC_INTPRI_PPREG - 1)) {
|
||||||
/* Upon the 7th, set Priority Register */
|
/* Upon the 7th, set Priority Register */
|
||||||
ctrl_outl(data, reg);
|
ctrl_outl(data, reg);
|
||||||
|
@ -240,6 +242,7 @@ void __init plat_irq_setup(void)
|
||||||
reg += 8;
|
reg += 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* And now let interrupts come in.
|
* And now let interrupts come in.
|
||||||
|
|
Loading…
Add table
Reference in a new issue