diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-13 21:06:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-13 21:06:37 -0400 |
commit | eb3bbf805f8509f03ee479becf8c2f00737e1efb (patch) | |
tree | 90ea306a044f4a1788dc87f94411d8572856279d | |
parent | 5e8530810805858892959b8ebbcec1009ea8c12d (diff) | |
parent | eba3f13716740c8a4bc12a987d3391a3c1f79e66 (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/Kconfig | 9 | ||||
-rw-r--r-- | drivers/mmc/host/Makefile | 2 | ||||
-rw-r--r-- | drivers/mmc/host/msm_sdcc.c | 35 |
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 | ||
259 | config MMC_MSM7X00A | 259 | config 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 | ||
266 | config MMC_MXC | 267 | config 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 | |||
21 | obj-$(CONFIG_MMC_AT91) += at91_mci.o | 21 | obj-$(CONFIG_MMC_AT91) += at91_mci.o |
22 | obj-$(CONFIG_MMC_ATMELMCI) += atmel-mci.o | 22 | obj-$(CONFIG_MMC_ATMELMCI) += atmel-mci.o |
23 | obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o | 23 | obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o |
24 | obj-$(CONFIG_MMC_MSM7X00A) += msm_sdcc.o | 24 | obj-$(CONFIG_MMC_MSM) += msm_sdcc.o |
25 | obj-$(CONFIG_MMC_MVSDIO) += mvsdio.o | 25 | obj-$(CONFIG_MMC_MVSDIO) += mvsdio.o |
26 | obj-$(CONFIG_MMC_DAVINCI) += davinci_mmc.o | 26 | obj-$(CONFIG_MMC_DAVINCI) += davinci_mmc.o |
27 | obj-$(CONFIG_MMC_SPI) += mmc_spi.o | 27 | obj-$(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 | ||
161 | uint32_t msmsdcc_fifo_addr(struct msmsdcc_host *host) | 161 | uint32_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 | ||
177 | static inline void | 166 | static 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 | ||
1283 | static void | ||
1284 | do_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 | |||
1292 | static int | 1299 | static int |
1293 | msmsdcc_suspend(struct platform_device *dev, pm_message_t state) | 1300 | msmsdcc_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 | ||
1337 | static struct platform_driver msmsdcc_driver = { | 1348 | static struct platform_driver msmsdcc_driver = { |
1338 | .probe = msmsdcc_probe, | 1349 | .probe = msmsdcc_probe, |