diff options
author | Magnus Damm <damm@opensource.se> | 2010-02-15 06:53:43 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-02-15 23:38:57 -0500 |
commit | fb1e776050f0f6a7b90eba03a1d001756454f9dc (patch) | |
tree | 5be962ef1e149d99c31382b255aa45f4ae7a67b8 /arch/sh | |
parent | d85429a31790361b9e952be3817134c23b3b758a (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.c | 6 |
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) | |||
724 | enum { | 724 | enum { |
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 = { | |||
890 | static struct intc_mask_reg mask_registers[] __initdata = { | 891 | static 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 = { | |||
962 | static struct intc_desc intc_desc __initdata = { | 963 | static 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 | }; |