aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2010-02-15 06:53:43 -0500
committerPaul Mundt <lethal@linux-sh.org>2010-02-15 23:38:57 -0500
commitfb1e776050f0f6a7b90eba03a1d001756454f9dc (patch)
tree5be962ef1e149d99c31382b255aa45f4ae7a67b8 /arch/sh
parentd85429a31790361b9e952be3817134c23b3b758a (diff)
sh: fix sh7724 SDHI support using INTC force_disable
Update the sh7724 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-sh7724.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c
index c0815a43b6a3..31e3451f7e3d 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c
@@ -724,6 +724,7 @@ void l2_cache_init(void)
724enum { 724enum {
725 UNUSED = 0, 725 UNUSED = 0,
726 ENABLED, 726 ENABLED,
727 DISABLED,
727 728
728 /* interrupt sources */ 729 /* interrupt sources */
729 IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, 730 IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7,
@@ -890,7 +891,7 @@ static struct intc_group groups[] __initdata = {
890static struct intc_mask_reg mask_registers[] __initdata = { 891static struct intc_mask_reg mask_registers[] __initdata = {
891 { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ 892 { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */
892 { 0, TMU1_TUNI2, TMU1_TUNI1, TMU1_TUNI0, 893 { 0, TMU1_TUNI2, TMU1_TUNI1, TMU1_TUNI0,
893 0, 0, ENABLED, ENABLED } }, 894 0, DISABLED, ENABLED, ENABLED } },
894 { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ 895 { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */
895 { VIO_VOU, VIO_VEU1, VIO_BEU0, VIO_CEU0, 896 { VIO_VOU, VIO_VEU1, VIO_BEU0, VIO_CEU0,
896 DMAC0A_DEI3, DMAC0A_DEI2, DMAC0A_DEI1, DMAC0A_DEI0 } }, 897 DMAC0A_DEI3, DMAC0A_DEI2, DMAC0A_DEI1, DMAC0A_DEI0 } },
@@ -912,7 +913,7 @@ static struct intc_mask_reg mask_registers[] __initdata = {
912 { I2C0_DTEI, I2C0_WAITI, I2C0_TACKI, I2C0_ALI, 913 { I2C0_DTEI, I2C0_WAITI, I2C0_TACKI, I2C0_ALI,
913 I2C1_DTEI, I2C1_WAITI, I2C1_TACKI, I2C1_ALI } }, 914 I2C1_DTEI, I2C1_WAITI, I2C1_TACKI, I2C1_ALI } },
914 { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ 915 { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */
915 { 0, 0, ENABLED, ENABLED, 916 { DISABLED, DISABLED, ENABLED, ENABLED,
916 0, 0, SCIFA5, FSI } }, 917 0, 0, SCIFA5, FSI } },
917 { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */ 918 { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */
918 { 0, 0, 0, CMT, 0, USB1, USB0, 0 } }, 919 { 0, 0, 0, CMT, 0, USB1, USB0, 0 } },
@@ -962,6 +963,7 @@ static struct intc_mask_reg ack_registers[] __initdata = {
962static struct intc_desc intc_desc __initdata = { 963static struct intc_desc intc_desc __initdata = {
963 .name = "sh7724", 964 .name = "sh7724",
964 .force_enable = ENABLED, 965 .force_enable = ENABLED,
966 .force_disable = DISABLED,
965 .hw = INTC_HW_DESC(vectors, groups, mask_registers, 967 .hw = INTC_HW_DESC(vectors, groups, mask_registers,
966 prio_registers, sense_registers, ack_registers), 968 prio_registers, sense_registers, ack_registers),
967}; 969};