aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host/msm_sdcc.c
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 /drivers/mmc/host/msm_sdcc.c
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
Diffstat (limited to 'drivers/mmc/host/msm_sdcc.c')
-rw-r--r--drivers/mmc/host/msm_sdcc.c35
1 files changed, 23 insertions, 12 deletions
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,