diff options
| author | Magnus Damm <damm@opensource.se> | 2010-02-16 00:17:52 -0500 |
|---|---|---|
| committer | Paul Mundt <lethal@linux-sh.org> | 2010-02-16 22:45:43 -0500 |
| commit | e9125ac0bf78bc19181359a3411d2e2bb757942d (patch) | |
| tree | e4ca2ede81fecf5c9aaf75040188bfc1737f6322 /arch/sh/kernel | |
| parent | 4d2185d93c670902b6e4716b360e2bcb7d2f7b2f (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.c | 4 |
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) | |||
| 447 | enum { | 447 | enum { |
| 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 = { | |||
| 575 | static struct intc_desc intc_desc __initdata = { | 576 | static 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 | }; |
