diff options
author | Pavel Pisa <ppisa@pikron.com> | 2006-04-02 14:27:07 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-04-02 14:27:07 -0400 |
commit | 56ca904053ab14ba4067a72b69a5edf246771209 (patch) | |
tree | 23dc10e74bb4ce3d2a2ce5a9d8da1c5f5feda94d /arch | |
parent | 65dbf34393f7b3d20e993d9651a825df0fa5376b (diff) |
[ARM] 3457/1: i.MX: SD/MMC support for i.MX/MX1
Patch from Pavel Pisa
This patch adds support of i.MX/MX1 SD/MMC controller.
It has been significantly redesigned from the original Sascha Hauer's
version to support scatter-gather DMA, to conform to latest Pierre Ossman's
and Russell King's MMC-SD Linux 2.6.x infrastructure.
The handling of all events has been moved to the softirq context
and is designed with no busy-looping in mind. Unfortunately
some controller bugs has to be overcome by limited looping
about 2-20 usec but these are observed only for initial card
recognition phase.
There are still some missing/missed IRQs problems under heavy load.
Help of somebody with access to the full SDHC design information
is probably necessary.
Regenerated against 2.6.16-git-060402 to solve clash with other patches.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-imx/generic.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c index 37613ad68366..9d8331be2b58 100644 --- a/arch/arm/mach-imx/generic.c +++ b/arch/arm/mach-imx/generic.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <asm/arch/imx-regs.h> | 33 | #include <asm/arch/imx-regs.h> |
34 | 34 | ||
35 | #include <asm/mach/map.h> | 35 | #include <asm/mach/map.h> |
36 | #include <asm/arch/mmc.h> | ||
36 | 37 | ||
37 | void imx_gpio_mode(int gpio_mode) | 38 | void imx_gpio_mode(int gpio_mode) |
38 | { | 39 | { |
@@ -175,13 +176,25 @@ static struct resource imx_mmc_resources[] = { | |||
175 | }, | 176 | }, |
176 | }; | 177 | }; |
177 | 178 | ||
179 | static u64 imxmmmc_dmamask = 0xffffffffUL; | ||
180 | |||
178 | static struct platform_device imx_mmc_device = { | 181 | static struct platform_device imx_mmc_device = { |
179 | .name = "imx-mmc", | 182 | .name = "imx-mmc", |
180 | .id = 0, | 183 | .id = 0, |
184 | .dev = { | ||
185 | .dma_mask = &imxmmmc_dmamask, | ||
186 | .coherent_dma_mask = 0xffffffff, | ||
187 | }, | ||
181 | .num_resources = ARRAY_SIZE(imx_mmc_resources), | 188 | .num_resources = ARRAY_SIZE(imx_mmc_resources), |
182 | .resource = imx_mmc_resources, | 189 | .resource = imx_mmc_resources, |
183 | }; | 190 | }; |
184 | 191 | ||
192 | void __init imx_set_mmc_info(struct imxmmc_platform_data *info) | ||
193 | { | ||
194 | imx_mmc_device.dev.platform_data = info; | ||
195 | } | ||
196 | EXPORT_SYMBOL(imx_set_mmc_info); | ||
197 | |||
185 | static struct resource imx_uart1_resources[] = { | 198 | static struct resource imx_uart1_resources[] = { |
186 | [0] = { | 199 | [0] = { |
187 | .start = 0x00206000, | 200 | .start = 0x00206000, |