aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mmc/omap.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/mmc/omap.c b/drivers/mmc/omap.c
index 895d4879027d..4bf7df8c4275 100644
--- a/drivers/mmc/omap.c
+++ b/drivers/mmc/omap.c
@@ -60,8 +60,9 @@ struct mmc_omap_host {
60 unsigned char id; /* 16xx chips have 2 MMC blocks */ 60 unsigned char id; /* 16xx chips have 2 MMC blocks */
61 struct clk * iclk; 61 struct clk * iclk;
62 struct clk * fclk; 62 struct clk * fclk;
63 struct resource *res; 63 struct resource *mem_res;
64 void __iomem *base; 64 void __iomem *virt_base;
65 unsigned int phys_base;
65 int irq; 66 int irq;
66 unsigned char bus_mode; 67 unsigned char bus_mode;
67 unsigned char hw_bus_mode; 68 unsigned char hw_bus_mode;
@@ -354,9 +355,9 @@ mmc_omap_xfer_data(struct mmc_omap_host *host, int write)
354 host->data->bytes_xfered += n; 355 host->data->bytes_xfered += n;
355 356
356 if (write) { 357 if (write) {
357 __raw_writesw(host->base + OMAP_MMC_REG_DATA, host->buffer, n); 358 __raw_writesw(host->virt_base + OMAP_MMC_REG_DATA, host->buffer, n);
358 } else { 359 } else {
359 __raw_readsw(host->base + OMAP_MMC_REG_DATA, host->buffer, n); 360 __raw_readsw(host->virt_base + OMAP_MMC_REG_DATA, host->buffer, n);
360 } 361 }
361} 362}
362 363
@@ -581,7 +582,7 @@ mmc_omap_prepare_dma(struct mmc_omap_host *host, struct mmc_data *data)
581 int dst_port = 0; 582 int dst_port = 0;
582 int sync_dev = 0; 583 int sync_dev = 0;
583 584
584 data_addr = io_v2p((u32) host->base) + OMAP_MMC_REG_DATA; 585 data_addr = host->phys_base + OMAP_MMC_REG_DATA;
585 frame = data->blksz; 586 frame = data->blksz;
586 count = sg_dma_len(sg); 587 count = sg_dma_len(sg);
587 588
@@ -1001,7 +1002,7 @@ static int __init mmc_omap_probe(struct platform_device *pdev)
1001 host->dma_timer.data = (unsigned long) host; 1002 host->dma_timer.data = (unsigned long) host;
1002 1003
1003 host->id = pdev->id; 1004 host->id = pdev->id;
1004 host->res = r; 1005 host->mem_res = r;
1005 host->irq = irq; 1006 host->irq = irq;
1006 1007
1007 if (cpu_is_omap24xx()) { 1008 if (cpu_is_omap24xx()) {
@@ -1032,7 +1033,8 @@ static int __init mmc_omap_probe(struct platform_device *pdev)
1032 host->dma_ch = -1; 1033 host->dma_ch = -1;
1033 1034
1034 host->irq = pdev->resource[1].start; 1035 host->irq = pdev->resource[1].start;
1035 host->base = (void __iomem*)IO_ADDRESS(r->start); 1036 host->phys_base = host->mem_res->start;
1037 host->virt_base = (void __iomem *) IO_ADDRESS(host->phys_base);
1036 1038
1037 mmc->ops = &mmc_omap_ops; 1039 mmc->ops = &mmc_omap_ops;
1038 mmc->f_min = 400000; 1040 mmc->f_min = 400000;