diff options
author | Magnus Damm <damm@opensource.se> | 2010-02-16 00:19:19 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-02-16 22:45:44 -0500 |
commit | 838a4a9dcee0cbaeb0943531da00ac44d578f315 (patch) | |
tree | 91af10e655dc28cb9f79d0c04c87e771cdd5d4a2 /arch/sh/kernel | |
parent | e9125ac0bf78bc19181359a3411d2e2bb757942d (diff) |
sh: fix sh7723 SDHI support using INTC force_disable
Update the sh7723 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-sh7723.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c index 7b90ebcfa20e..85c61f624702 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c | |||
@@ -602,6 +602,7 @@ void l2_cache_init(void) | |||
602 | enum { | 602 | enum { |
603 | UNUSED=0, | 603 | UNUSED=0, |
604 | ENABLED, | 604 | ENABLED, |
605 | DISABLED, | ||
605 | 606 | ||
606 | /* interrupt sources */ | 607 | /* interrupt sources */ |
607 | IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, | 608 | IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, |
@@ -745,7 +746,7 @@ static struct intc_group groups[] __initdata = { | |||
745 | static struct intc_mask_reg mask_registers[] __initdata = { | 746 | static struct intc_mask_reg mask_registers[] __initdata = { |
746 | { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ | 747 | { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ |
747 | { 0, TMU1_TUNI2, TMU1_TUNI1, TMU1_TUNI0, | 748 | { 0, TMU1_TUNI2, TMU1_TUNI1, TMU1_TUNI0, |
748 | 0, 0, ENABLED, ENABLED } }, | 749 | 0, DISABLED, ENABLED, ENABLED } }, |
749 | { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ | 750 | { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ |
750 | { VIO_VOUI, VIO_VEU2HI,VIO_BEUI,VIO_CEUI,DMAC0A_DEI3,DMAC0A_DEI2,DMAC0A_DEI1,DMAC0A_DEI0 } }, | 751 | { VIO_VOUI, VIO_VEU2HI,VIO_BEUI,VIO_CEUI,DMAC0A_DEI3,DMAC0A_DEI2,DMAC0A_DEI1,DMAC0A_DEI0 } }, |
751 | { 0xa4080088, 0xa40800c8, 8, /* IMR2 / IMCR2 */ | 752 | { 0xa4080088, 0xa40800c8, 8, /* IMR2 / IMCR2 */ |
@@ -762,7 +763,7 @@ static struct intc_mask_reg mask_registers[] __initdata = { | |||
762 | { I2C_DTEI, I2C_WAITI, I2C_TACKI, I2C_ALI, | 763 | { I2C_DTEI, I2C_WAITI, I2C_TACKI, I2C_ALI, |
763 | FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, | 764 | FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, |
764 | { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ | 765 | { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ |
765 | { 0, 0, ENABLED, ENABLED, | 766 | { 0, DISABLED, ENABLED, ENABLED, |
766 | 0, 0, SCIFA_SCIFA2, SIU_SIUI } }, | 767 | 0, 0, SCIFA_SCIFA2, SIU_SIUI } }, |
767 | { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */ | 768 | { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */ |
768 | { 0, 0, 0, CMT_CMTI, 0, 0, USB_USI0,0 } }, | 769 | { 0, 0, 0, CMT_CMTI, 0, 0, USB_USI0,0 } }, |
@@ -806,6 +807,7 @@ static struct intc_mask_reg ack_registers[] __initdata = { | |||
806 | static struct intc_desc intc_desc __initdata = { | 807 | static struct intc_desc intc_desc __initdata = { |
807 | .name = "sh7723", | 808 | .name = "sh7723", |
808 | .force_enable = ENABLED, | 809 | .force_enable = ENABLED, |
810 | .force_disable = DISABLED, | ||
809 | .hw = INTC_HW_DESC(vectors, groups, mask_registers, | 811 | .hw = INTC_HW_DESC(vectors, groups, mask_registers, |
810 | prio_registers, sense_registers, ack_registers), | 812 | prio_registers, sense_registers, ack_registers), |
811 | }; | 813 | }; |