aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2010-02-16 00:17:52 -0500
committerPaul Mundt <lethal@linux-sh.org>2010-02-16 22:45:43 -0500
commite9125ac0bf78bc19181359a3411d2e2bb757942d (patch)
treee4ca2ede81fecf5c9aaf75040188bfc1737f6322 /arch/sh/kernel
parent4d2185d93c670902b6e4716b360e2bcb7d2f7b2f (diff)
sh: fix sh7722 SDHI support using INTC force_disable
Update the sh7722 INTC tables with force_enable support to mask out pending unsupported SDHI interrupt sources. Without this patch the kernel locks up due to a pending SDHI interrupt that the tmio_mmc driver cannot handle. Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7722.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
index 0949135a125c..ef3f97827808 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
@@ -447,6 +447,7 @@ void __init plat_early_device_setup(void)
447enum { 447enum {
448 UNUSED=0, 448 UNUSED=0,
449 ENABLED, 449 ENABLED,
450 DISABLED,
450 451
451 /* interrupt sources */ 452 /* interrupt sources */
452 IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, 453 IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7,
@@ -534,7 +535,7 @@ static struct intc_mask_reg mask_registers[] __initdata = {
534 { I2C_DTEI, I2C_WAITI, I2C_TACKI, I2C_ALI, 535 { I2C_DTEI, I2C_WAITI, I2C_TACKI, I2C_ALI,
535 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLENDI, FLCTL_FLSTEI } }, 536 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLENDI, FLCTL_FLSTEI } },
536 { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ 537 { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */
537 { 0, 0, ENABLED, ENABLED, 0, 0, TWODG, SIU } }, 538 { DISABLED, DISABLED, ENABLED, ENABLED, 0, 0, TWODG, SIU } },
538 { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */ 539 { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */
539 { 0, 0, 0, CMT, 0, USB_USBI1, USB_USBI0, } }, 540 { 0, 0, 0, CMT, 0, USB_USBI1, USB_USBI0, } },
540 { 0xa40800a8, 0xa40800e8, 8, /* IMR10 / IMCR10 */ 541 { 0xa40800a8, 0xa40800e8, 8, /* IMR10 / IMCR10 */
@@ -575,6 +576,7 @@ static struct intc_mask_reg ack_registers[] __initdata = {
575static struct intc_desc intc_desc __initdata = { 576static struct intc_desc intc_desc __initdata = {
576 .name = "sh7722", 577 .name = "sh7722",
577 .force_enable = ENABLED, 578 .force_enable = ENABLED,
579 .force_disable = DISABLED,
578 .hw = INTC_HW_DESC(vectors, groups, mask_registers, 580 .hw = INTC_HW_DESC(vectors, groups, mask_registers,
579 prio_registers, sense_registers, ack_registers), 581 prio_registers, sense_registers, ack_registers),
580}; 582};