aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-08-13 21:06:37 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-13 21:06:37 -0400
commiteb3bbf805f8509f03ee479becf8c2f00737e1efb (patch)
tree90ea306a044f4a1788dc87f94411d8572856279d
parent5e8530810805858892959b8ebbcec1009ea8c12d (diff)
parenteba3f13716740c8a4bc12a987d3391a3c1f79e66 (diff)
Merge branch 'msm-mmc_sdcc' of git://codeaurora.org/quic/kernel/dwalker/linux-msm
* 'msm-mmc_sdcc' of git://codeaurora.org/quic/kernel/dwalker/linux-msm: mmc: msm_sdcc: Rename config MMC_MSM7X00A to MMC_MSM mmc: msm_sdcc: Compile the driver for msm7x30 mmc: msm: fix up build breakage on !PM
-rw-r--r--drivers/mmc/host/Kconfig9
-rw-r--r--drivers/mmc/host/Makefile2
-rw-r--r--drivers/mmc/host/msm_sdcc.c35
3 files changed, 29 insertions, 17 deletions
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index c997474c649f..283190bc2a40 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -256,12 +256,13 @@ config MMC_IMX
256 256
257 If unsure, say N. 257 If unsure, say N.
258 258
259config MMC_MSM7X00A 259config MMC_MSM
260 tristate "Qualcomm MSM 7X00A SDCC Controller Support" 260 tristate "Qualcomm SDCC Controller Support"
261 depends on MMC && ARCH_MSM && !ARCH_MSM7X30 261 depends on MMC && ARCH_MSM
262 help 262 help
263 This provides support for the SD/MMC cell found in the 263 This provides support for the SD/MMC cell found in the
264 MSM 7X00A controllers from Qualcomm. 264 MSM and QSD SOCs from Qualcomm. The controller also has
265 support for SDIO devices.
265 266
266config MMC_MXC 267config MMC_MXC
267 tristate "Freescale i.MX2/3 Multimedia Card Interface support" 268 tristate "Freescale i.MX2/3 Multimedia Card Interface support"
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index fe0ba4e2b8b0..840bcb52d82f 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -21,7 +21,7 @@ obj-$(CONFIG_MMC_OMAP_HS) += omap_hsmmc.o
21obj-$(CONFIG_MMC_AT91) += at91_mci.o 21obj-$(CONFIG_MMC_AT91) += at91_mci.o
22obj-$(CONFIG_MMC_ATMELMCI) += atmel-mci.o 22obj-$(CONFIG_MMC_ATMELMCI) += atmel-mci.o
23obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o 23obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o
24obj-$(CONFIG_MMC_MSM7X00A) += msm_sdcc.o 24obj-$(CONFIG_MMC_MSM) += msm_sdcc.o
25obj-$(CONFIG_MMC_MVSDIO) += mvsdio.o 25obj-$(CONFIG_MMC_MVSDIO) += mvsdio.o
26obj-$(CONFIG_MMC_DAVINCI) += davinci_mmc.o 26obj-$(CONFIG_MMC_DAVINCI) += davinci_mmc.o
27obj-$(CONFIG_MMC_SPI) += mmc_spi.o 27obj-$(CONFIG_MMC_SPI) += mmc_spi.o
diff --git a/drivers/mmc/host/msm_sdcc.c b/drivers/mmc/host/msm_sdcc.c
index 6824917f5c60..ff7752348b11 100644
--- a/drivers/mmc/host/msm_sdcc.c
+++ b/drivers/mmc/host/msm_sdcc.c
@@ -160,18 +160,7 @@ msmsdcc_stop_data(struct msmsdcc_host *host)
160 160
161uint32_t msmsdcc_fifo_addr(struct msmsdcc_host *host) 161uint32_t msmsdcc_fifo_addr(struct msmsdcc_host *host)
162{ 162{
163 switch (host->pdev_id) { 163 return host->memres->start + MMCIFIFO;
164 case 1:
165 return MSM_SDC1_PHYS + MMCIFIFO;
166 case 2:
167 return MSM_SDC2_PHYS + MMCIFIFO;
168 case 3:
169 return MSM_SDC3_PHYS + MMCIFIFO;
170 case 4:
171 return MSM_SDC4_PHYS + MMCIFIFO;
172 }
173 BUG();
174 return 0;
175} 164}
176 165
177static inline void 166static inline void
@@ -1289,6 +1278,24 @@ msmsdcc_probe(struct platform_device *pdev)
1289 return ret; 1278 return ret;
1290} 1279}
1291 1280
1281#ifdef CONFIG_PM
1282#ifdef CONFIG_MMC_MSM7X00A_RESUME_IN_WQ
1283static void
1284do_resume_work(struct work_struct *work)
1285{
1286 struct msmsdcc_host *host =
1287 container_of(work, struct msmsdcc_host, resume_task);
1288 struct mmc_host *mmc = host->mmc;
1289
1290 if (mmc) {
1291 mmc_resume_host(mmc);
1292 if (host->stat_irq)
1293 enable_irq(host->stat_irq);
1294 }
1295}
1296#endif
1297
1298
1292static int 1299static int
1293msmsdcc_suspend(struct platform_device *dev, pm_message_t state) 1300msmsdcc_suspend(struct platform_device *dev, pm_message_t state)
1294{ 1301{
@@ -1333,6 +1340,10 @@ msmsdcc_resume(struct platform_device *dev)
1333 } 1340 }
1334 return 0; 1341 return 0;
1335} 1342}
1343#else
1344#define msmsdcc_suspend 0
1345#define msmsdcc_resume 0
1346#endif
1336 1347
1337static struct platform_driver msmsdcc_driver = { 1348static struct platform_driver msmsdcc_driver = {
1338 .probe = msmsdcc_probe, 1349 .probe = msmsdcc_probe,