aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2010-02-16 00:19:19 -0500
committerPaul Mundt <lethal@linux-sh.org>2010-02-16 22:45:44 -0500
commit838a4a9dcee0cbaeb0943531da00ac44d578f315 (patch)
tree91af10e655dc28cb9f79d0c04c87e771cdd5d4a2 /arch/sh
parente9125ac0bf78bc19181359a3411d2e2bb757942d (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')
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7723.c6
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)
602enum { 602enum {
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 = {
745static struct intc_mask_reg mask_registers[] __initdata = { 746static 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 = {
806static struct intc_desc intc_desc __initdata = { 807static 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};