diff options
author | Arnd Hannemann <arnd@arndnet.de> | 2010-12-28 17:22:36 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-01-12 00:36:41 -0500 |
commit | 365e108739a4b2b207bd61e066aa6eb9bd1b03c4 (patch) | |
tree | 0521a3b04222624b6bf28910acafb348266bb28d /arch | |
parent | 464495e5d8ba58ce6c103a2a176abaf313c0c704 (diff) |
sh: sh7723 / ap325rxa enable SDIO IRQs
This patch enables the interrupt generation for SDIO IRQs
of the sdhi controllers of the SoC. To make sure SDIO IRQs
are used announce the MMC_CAP_SDIO_IRQ capability
on ap325rxa.
Signed-off-by: Arnd Hannemann <arnd@arndnet.de>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/boards/mach-ap325rxa/setup.c | 16 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7723.c | 4 |
2 files changed, 18 insertions, 2 deletions
diff --git a/arch/sh/boards/mach-ap325rxa/setup.c b/arch/sh/boards/mach-ap325rxa/setup.c index 07ea908c510d..3e5fc3bbf3ed 100644 --- a/arch/sh/boards/mach-ap325rxa/setup.c +++ b/arch/sh/boards/mach-ap325rxa/setup.c | |||
@@ -14,6 +14,8 @@ | |||
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
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> | ||
18 | #include <linux/mmc/host.h> | ||
17 | #include <linux/mtd/physmap.h> | 19 | #include <linux/mtd/physmap.h> |
18 | #include <linux/mtd/sh_flctl.h> | 20 | #include <linux/mtd/sh_flctl.h> |
19 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
@@ -430,11 +432,18 @@ static struct resource sdhi0_cn3_resources[] = { | |||
430 | }, | 432 | }, |
431 | }; | 433 | }; |
432 | 434 | ||
435 | static struct sh_mobile_sdhi_info sdhi0_cn3_data = { | ||
436 | .tmio_caps = MMC_CAP_SDIO_IRQ, | ||
437 | }; | ||
438 | |||
433 | static struct platform_device sdhi0_cn3_device = { | 439 | static struct platform_device sdhi0_cn3_device = { |
434 | .name = "sh_mobile_sdhi", | 440 | .name = "sh_mobile_sdhi", |
435 | .id = 0, /* "sdhi0" clock */ | 441 | .id = 0, /* "sdhi0" clock */ |
436 | .num_resources = ARRAY_SIZE(sdhi0_cn3_resources), | 442 | .num_resources = ARRAY_SIZE(sdhi0_cn3_resources), |
437 | .resource = sdhi0_cn3_resources, | 443 | .resource = sdhi0_cn3_resources, |
444 | .dev = { | ||
445 | .platform_data = &sdhi0_cn3_data, | ||
446 | }, | ||
438 | .archdata = { | 447 | .archdata = { |
439 | .hwblk_id = HWBLK_SDHI0, | 448 | .hwblk_id = HWBLK_SDHI0, |
440 | }, | 449 | }, |
@@ -453,11 +462,18 @@ static struct resource sdhi1_cn7_resources[] = { | |||
453 | }, | 462 | }, |
454 | }; | 463 | }; |
455 | 464 | ||
465 | static struct sh_mobile_sdhi_info sdhi1_cn7_data = { | ||
466 | .tmio_caps = MMC_CAP_SDIO_IRQ, | ||
467 | }; | ||
468 | |||
456 | static struct platform_device sdhi1_cn7_device = { | 469 | static struct platform_device sdhi1_cn7_device = { |
457 | .name = "sh_mobile_sdhi", | 470 | .name = "sh_mobile_sdhi", |
458 | .id = 1, /* "sdhi1" clock */ | 471 | .id = 1, /* "sdhi1" clock */ |
459 | .num_resources = ARRAY_SIZE(sdhi1_cn7_resources), | 472 | .num_resources = ARRAY_SIZE(sdhi1_cn7_resources), |
460 | .resource = sdhi1_cn7_resources, | 473 | .resource = sdhi1_cn7_resources, |
474 | .dev = { | ||
475 | .platform_data = &sdhi1_cn7_data, | ||
476 | }, | ||
461 | .archdata = { | 477 | .archdata = { |
462 | .hwblk_id = HWBLK_SDHI1, | 478 | .hwblk_id = HWBLK_SDHI1, |
463 | }, | 479 | }, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c index 0eadefdbbba1..d7641221ee42 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c | |||
@@ -719,7 +719,7 @@ static struct intc_group groups[] __initdata = { | |||
719 | static struct intc_mask_reg mask_registers[] __initdata = { | 719 | static struct intc_mask_reg mask_registers[] __initdata = { |
720 | { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ | 720 | { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ |
721 | { 0, TMU1_TUNI2, TMU1_TUNI1, TMU1_TUNI0, | 721 | { 0, TMU1_TUNI2, TMU1_TUNI1, TMU1_TUNI0, |
722 | 0, DISABLED, ENABLED, ENABLED } }, | 722 | 0, ENABLED, ENABLED, ENABLED } }, |
723 | { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ | 723 | { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ |
724 | { VIO_VOUI, VIO_VEU2HI,VIO_BEUI,VIO_CEUI,DMAC0A_DEI3,DMAC0A_DEI2,DMAC0A_DEI1,DMAC0A_DEI0 } }, | 724 | { VIO_VOUI, VIO_VEU2HI,VIO_BEUI,VIO_CEUI,DMAC0A_DEI3,DMAC0A_DEI2,DMAC0A_DEI1,DMAC0A_DEI0 } }, |
725 | { 0xa4080088, 0xa40800c8, 8, /* IMR2 / IMCR2 */ | 725 | { 0xa4080088, 0xa40800c8, 8, /* IMR2 / IMCR2 */ |
@@ -736,7 +736,7 @@ static struct intc_mask_reg mask_registers[] __initdata = { | |||
736 | { I2C_DTEI, I2C_WAITI, I2C_TACKI, I2C_ALI, | 736 | { I2C_DTEI, I2C_WAITI, I2C_TACKI, I2C_ALI, |
737 | FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, | 737 | FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, |
738 | { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ | 738 | { 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ |
739 | { 0, DISABLED, ENABLED, ENABLED, | 739 | { 0, ENABLED, ENABLED, ENABLED, |
740 | 0, 0, SCIFA_SCIFA2, SIU_SIUI } }, | 740 | 0, 0, SCIFA_SCIFA2, SIU_SIUI } }, |
741 | { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */ | 741 | { 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */ |
742 | { 0, 0, 0, CMT_CMTI, 0, 0, USB_USI0,0 } }, | 742 | { 0, 0, 0, CMT_CMTI, 0, 0, USB_USI0,0 } }, |