diff options
author | Magnus Damm <damm@opensource.se> | 2011-01-06 05:41:09 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-01-12 00:44:34 -0500 |
commit | 9213c0007dc4863ea1c3dd6553f2f05a88573768 (patch) | |
tree | 719e2962e5dfe681c2be3c00df192ddad3509fe7 /arch | |
parent | 969f9a19122141465d02a889d7d1de34eb53e609 (diff) |
ARM: mach-shmobile: sh7377 Enable SDIO IRQs
This patch enables interrupt generation for SDIO IRQs
of the SDHI block on the sh7377 aka G4 processor. Use
together with a recent SDHI driver using TMIO_MMC_SDIO_IRQ
and with the MMC_CAP_SDIO_IRQ flag in the board code.
The G4EVM specific SDHI platform data is also updated to
flag SDIO capabilities.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-shmobile/board-g4evm.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/intc-sh7377.c | 4 |
2 files changed, 17 insertions, 2 deletions
diff --git a/arch/arm/mach-shmobile/board-g4evm.c b/arch/arm/mach-shmobile/board-g4evm.c index c13f01280b7e..dee3e9231fb9 100644 --- a/arch/arm/mach-shmobile/board-g4evm.c +++ b/arch/arm/mach-shmobile/board-g4evm.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/io.h> | 30 | #include <linux/io.h> |
31 | #include <linux/input.h> | 31 | #include <linux/input.h> |
32 | #include <linux/input/sh_keysc.h> | 32 | #include <linux/input/sh_keysc.h> |
33 | #include <linux/mmc/host.h> | ||
33 | #include <linux/mfd/sh_mobile_sdhi.h> | 34 | #include <linux/mfd/sh_mobile_sdhi.h> |
34 | #include <linux/gpio.h> | 35 | #include <linux/gpio.h> |
35 | #include <mach/sh7377.h> | 36 | #include <mach/sh7377.h> |
@@ -196,6 +197,10 @@ static struct platform_device keysc_device = { | |||
196 | }; | 197 | }; |
197 | 198 | ||
198 | /* SDHI */ | 199 | /* SDHI */ |
200 | static struct sh_mobile_sdhi_info sdhi0_info = { | ||
201 | .tmio_caps = MMC_CAP_SDIO_IRQ, | ||
202 | }; | ||
203 | |||
199 | static struct resource sdhi0_resources[] = { | 204 | static struct resource sdhi0_resources[] = { |
200 | [0] = { | 205 | [0] = { |
201 | .name = "SDHI0", | 206 | .name = "SDHI0", |
@@ -214,6 +219,13 @@ static struct platform_device sdhi0_device = { | |||
214 | .num_resources = ARRAY_SIZE(sdhi0_resources), | 219 | .num_resources = ARRAY_SIZE(sdhi0_resources), |
215 | .resource = sdhi0_resources, | 220 | .resource = sdhi0_resources, |
216 | .id = 0, | 221 | .id = 0, |
222 | .dev = { | ||
223 | .platform_data = &sdhi0_info, | ||
224 | }, | ||
225 | }; | ||
226 | |||
227 | static struct sh_mobile_sdhi_info sdhi1_info = { | ||
228 | .tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ, | ||
217 | }; | 229 | }; |
218 | 230 | ||
219 | static struct resource sdhi1_resources[] = { | 231 | static struct resource sdhi1_resources[] = { |
@@ -234,6 +246,9 @@ static struct platform_device sdhi1_device = { | |||
234 | .num_resources = ARRAY_SIZE(sdhi1_resources), | 246 | .num_resources = ARRAY_SIZE(sdhi1_resources), |
235 | .resource = sdhi1_resources, | 247 | .resource = sdhi1_resources, |
236 | .id = 1, | 248 | .id = 1, |
249 | .dev = { | ||
250 | .platform_data = &sdhi1_info, | ||
251 | }, | ||
237 | }; | 252 | }; |
238 | 253 | ||
239 | static struct platform_device *g4evm_devices[] __initdata = { | 254 | static struct platform_device *g4evm_devices[] __initdata = { |
diff --git a/arch/arm/mach-shmobile/intc-sh7377.c b/arch/arm/mach-shmobile/intc-sh7377.c index 2cdeb8ccd821..dd568382cc9f 100644 --- a/arch/arm/mach-shmobile/intc-sh7377.c +++ b/arch/arm/mach-shmobile/intc-sh7377.c | |||
@@ -234,10 +234,10 @@ static struct intc_mask_reg intca_mask_registers[] __initdata = { | |||
234 | { SCIFB, SCIFA5, SCIFA4, MSIOF1, | 234 | { SCIFB, SCIFA5, SCIFA4, MSIOF1, |
235 | 0, 0, MSIOF2, 0 } }, | 235 | 0, 0, MSIOF2, 0 } }, |
236 | { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */ | 236 | { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */ |
237 | { DISABLED, DISABLED, ENABLED, ENABLED, | 237 | { DISABLED, ENABLED, ENABLED, ENABLED, |
238 | FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, | 238 | FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, |
239 | { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */ | 239 | { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */ |
240 | { DISABLED, DISABLED, ENABLED, ENABLED, | 240 | { DISABLED, ENABLED, ENABLED, ENABLED, |
241 | TTI20, USBDMAC_USHDMI, 0, MSUG } }, | 241 | TTI20, USBDMAC_USHDMI, 0, MSUG } }, |
242 | { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */ | 242 | { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */ |
243 | { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10, | 243 | { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10, |