diff options
author | Arnd Hannemann <arnd@arndnet.de> | 2010-12-28 17:22:34 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-01-12 00:36:33 -0500 |
commit | a68a07841848a25fa04918b441667fd192cea108 (patch) | |
tree | 11a2262c7f77c56681dafa3153788b220990ea73 /arch/sh | |
parent | 4162cf64973df51fc885825bc9ca4d055891c49f (diff) |
sh: sh7724 Enable SDIO IRQs
This patch enables the interrupt generation for SDIO IRQs
of the sdhi controllers of the SoC. To make sure interrupt
are handled announce the MMC_CAP_SDIO_IRQ capability
on ecovec, kfr2r09 and se7724.
Tested with a b43-based SDIO wireless card on ecovec.
Signed-off-by: Arnd Hannemann <arnd@arndnet.de>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/boards/mach-ecovec24/setup.c | 2 | ||||
-rw-r--r-- | arch/sh/boards/mach-kfr2r09/setup.c | 2 | ||||
-rw-r--r-- | arch/sh/boards/mach-se/7724/setup.c | 3 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7724.c | 4 |
4 files changed, 9 insertions, 2 deletions
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index f48c492a68d3..ee8dd45be1e2 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
@@ -473,6 +473,7 @@ static struct sh_mobile_sdhi_info sdhi0_info = { | |||
473 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 473 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
474 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 474 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
475 | .set_pwr = sdhi0_set_pwr, | 475 | .set_pwr = sdhi0_set_pwr, |
476 | .tmio_caps = MMC_CAP_SDIO_IRQ, | ||
476 | }; | 477 | }; |
477 | 478 | ||
478 | static struct resource sdhi0_resources[] = { | 479 | static struct resource sdhi0_resources[] = { |
@@ -511,6 +512,7 @@ static void sdhi1_set_pwr(struct platform_device *pdev, int state) | |||
511 | static struct sh_mobile_sdhi_info sdhi1_info = { | 512 | static struct sh_mobile_sdhi_info sdhi1_info = { |
512 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, | 513 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, |
513 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, | 514 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, |
515 | .tmio_caps = MMC_CAP_SDIO_IRQ, | ||
514 | .set_pwr = sdhi1_set_pwr, | 516 | .set_pwr = sdhi1_set_pwr, |
515 | }; | 517 | }; |
516 | 518 | ||
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c index 9b60eaabf8f3..7504daaa85da 100644 --- a/arch/sh/boards/mach-kfr2r09/setup.c +++ b/arch/sh/boards/mach-kfr2r09/setup.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
13 | #include <linux/mfd/sh_mobile_sdhi.h> | 13 | #include <linux/mfd/sh_mobile_sdhi.h> |
14 | #include <linux/mmc/host.h> | ||
14 | #include <linux/mfd/tmio.h> | 15 | #include <linux/mfd/tmio.h> |
15 | #include <linux/mtd/physmap.h> | 16 | #include <linux/mtd/physmap.h> |
16 | #include <linux/mtd/onenand.h> | 17 | #include <linux/mtd/onenand.h> |
@@ -366,6 +367,7 @@ static struct sh_mobile_sdhi_info sh7724_sdhi0_data = { | |||
366 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 367 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
367 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 368 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
368 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE, | 369 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE, |
370 | .tmio_caps = MMC_CAP_SDIO_IRQ, | ||
369 | }; | 371 | }; |
370 | 372 | ||
371 | static struct platform_device kfr2r09_sh_sdhi0_device = { | 373 | static struct platform_device kfr2r09_sh_sdhi0_device = { |
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c index 527a0cd956b5..6dc7407f2cd0 100644 --- a/arch/sh/boards/mach-se/7724/setup.c +++ b/arch/sh/boards/mach-se/7724/setup.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/mfd/sh_mobile_sdhi.h> | 17 | #include <linux/mfd/sh_mobile_sdhi.h> |
18 | #include <linux/mmc/host.h> | ||
18 | #include <linux/mtd/physmap.h> | 19 | #include <linux/mtd/physmap.h> |
19 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
20 | #include <linux/smc91x.h> | 21 | #include <linux/smc91x.h> |
@@ -467,6 +468,7 @@ static struct resource sdhi0_cn7_resources[] = { | |||
467 | static struct sh_mobile_sdhi_info sh7724_sdhi0_data = { | 468 | static struct sh_mobile_sdhi_info sh7724_sdhi0_data = { |
468 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 469 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
469 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 470 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
471 | .tmio_caps = MMC_CAP_SDIO_IRQ, | ||
470 | }; | 472 | }; |
471 | 473 | ||
472 | static struct platform_device sdhi0_cn7_device = { | 474 | static struct platform_device sdhi0_cn7_device = { |
@@ -498,6 +500,7 @@ static struct resource sdhi1_cn8_resources[] = { | |||
498 | static struct sh_mobile_sdhi_info sh7724_sdhi1_data = { | 500 | static struct sh_mobile_sdhi_info sh7724_sdhi1_data = { |
499 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, | 501 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, |
500 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, | 502 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, |
503 | .tmio_caps = MMC_CAP_SDIO_IRQ, | ||
501 | }; | 504 | }; |
502 | 505 | ||
503 | static struct platform_device sdhi1_cn8_device = { | 506 | static struct platform_device sdhi1_cn8_device = { |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c index 828c9657eb52..c598a7f61b7f 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c | |||
@@ -1144,7 +1144,7 @@ static struct intc_group groups[] __initdata = { | |||
1144 | static struct intc_mask_reg mask_registers[] __initdata = { | 1144 | static struct intc_mask_reg mask_registers[] __initdata = { |
1145 | { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ | 1145 | { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ |
1146 | { 0, TMU1_TUNI2, TMU1_TUNI1, TMU1_TUNI0, | 1146 | { 0, TMU1_TUNI2, TMU1_TUNI1, TMU1_TUNI0, |
1147 | 0, DISABLED, ENABLED, ENABLED } }, | 1147 | 0, ENABLED, ENABLED, ENABLED } }, |
1148 | { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ | 1148 | { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ |
1149 | { VIO_VOU, VIO_VEU1, VIO_BEU0, VIO_CEU0, | 1149 | { VIO_VOU, VIO_VEU1, VIO_BEU0, VIO_CEU0, |
1150 | DMAC0A_DEI3, DMAC0A_DEI2, DMAC0A_DEI1, DMAC0A_DEI0 } }, | 1150 | DMAC0A_DEI3, DMAC0A_DEI2, DMAC0A_DEI1, DMAC0A_DEI0 } }, |
@@ -1166,7 +1166,7 @@ static struct intc_mask_reg mask_registers[] __initdata = { | |||
1166 | { I2C0_DTEI, I2C0_WAITI, I2C0_TACKI, I2C0_ALI, | 1166 | { I2C0_DTEI, I2C0_WAITI, I2C0_TACKI, I2C0_ALI, |
1167 | I2C1_DTEI, I2C1_WAITI, I2C1_TACKI, I2C1_ALI } }, | 1167 | I2C1_DTEI, I2C1_WAITI, I2C1_TACKI, I2C1_ALI } }, |
1168 | { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ | 1168 | { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ |
1169 | { DISABLED, DISABLED, ENABLED, ENABLED, | 1169 | { DISABLED, ENABLED, ENABLED, ENABLED, |
1170 | 0, 0, SCIFA5, FSI } }, | 1170 | 0, 0, SCIFA5, FSI } }, |
1171 | { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */ | 1171 | { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */ |
1172 | { 0, 0, 0, CMT, 0, USB1, USB0, 0 } }, | 1172 | { 0, 0, 0, CMT, 0, USB1, USB0, 0 } }, |