diff options
| -rw-r--r-- | drivers/mmc/host/bfin_sdh.c | 2 | ||||
| -rw-r--r-- | drivers/mmc/host/jz4740_mmc.c | 5 | ||||
| -rw-r--r-- | drivers/mmc/host/mmci.c | 10 | ||||
| -rw-r--r-- | drivers/mmc/host/sdhci-s3c.c | 36 | ||||
| -rw-r--r-- | drivers/mmc/host/ushc.c | 1 |
5 files changed, 45 insertions, 9 deletions
diff --git a/drivers/mmc/host/bfin_sdh.c b/drivers/mmc/host/bfin_sdh.c index bac7d62866b..0371bf50224 100644 --- a/drivers/mmc/host/bfin_sdh.c +++ b/drivers/mmc/host/bfin_sdh.c | |||
| @@ -462,7 +462,7 @@ static int __devinit sdh_probe(struct platform_device *pdev) | |||
| 462 | goto out; | 462 | goto out; |
| 463 | } | 463 | } |
| 464 | 464 | ||
| 465 | mmc = mmc_alloc_host(sizeof(*mmc), &pdev->dev); | 465 | mmc = mmc_alloc_host(sizeof(struct sdh_host), &pdev->dev); |
| 466 | if (!mmc) { | 466 | if (!mmc) { |
| 467 | ret = -ENOMEM; | 467 | ret = -ENOMEM; |
| 468 | goto out; | 468 | goto out; |
diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c index b3a0ab0e4c2..74218ad677e 100644 --- a/drivers/mmc/host/jz4740_mmc.c +++ b/drivers/mmc/host/jz4740_mmc.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | */ | 14 | */ |
| 15 | 15 | ||
| 16 | #include <linux/mmc/host.h> | 16 | #include <linux/mmc/host.h> |
| 17 | #include <linux/err.h> | ||
| 17 | #include <linux/io.h> | 18 | #include <linux/io.h> |
| 18 | #include <linux/irq.h> | 19 | #include <linux/irq.h> |
| 19 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
| @@ -827,8 +828,8 @@ static int __devinit jz4740_mmc_probe(struct platform_device* pdev) | |||
| 827 | } | 828 | } |
| 828 | 829 | ||
| 829 | host->clk = clk_get(&pdev->dev, "mmc"); | 830 | host->clk = clk_get(&pdev->dev, "mmc"); |
| 830 | if (!host->clk) { | 831 | if (IS_ERR(host->clk)) { |
| 831 | ret = -ENOENT; | 832 | ret = PTR_ERR(host->clk); |
| 832 | dev_err(&pdev->dev, "Failed to get mmc clock\n"); | 833 | dev_err(&pdev->dev, "Failed to get mmc clock\n"); |
| 833 | goto err_free_host; | 834 | goto err_free_host; |
| 834 | } | 835 | } |
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 2de12fe155d..4b8dcd5b2a0 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c | |||
| @@ -342,15 +342,15 @@ mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd, | |||
| 342 | 342 | ||
| 343 | host->cmd = NULL; | 343 | host->cmd = NULL; |
| 344 | 344 | ||
| 345 | cmd->resp[0] = readl(base + MMCIRESPONSE0); | ||
| 346 | cmd->resp[1] = readl(base + MMCIRESPONSE1); | ||
| 347 | cmd->resp[2] = readl(base + MMCIRESPONSE2); | ||
| 348 | cmd->resp[3] = readl(base + MMCIRESPONSE3); | ||
| 349 | |||
| 350 | if (status & MCI_CMDTIMEOUT) { | 345 | if (status & MCI_CMDTIMEOUT) { |
| 351 | cmd->error = -ETIMEDOUT; | 346 | cmd->error = -ETIMEDOUT; |
| 352 | } else if (status & MCI_CMDCRCFAIL && cmd->flags & MMC_RSP_CRC) { | 347 | } else if (status & MCI_CMDCRCFAIL && cmd->flags & MMC_RSP_CRC) { |
| 353 | cmd->error = -EILSEQ; | 348 | cmd->error = -EILSEQ; |
| 349 | } else { | ||
| 350 | cmd->resp[0] = readl(base + MMCIRESPONSE0); | ||
| 351 | cmd->resp[1] = readl(base + MMCIRESPONSE1); | ||
| 352 | cmd->resp[2] = readl(base + MMCIRESPONSE2); | ||
| 353 | cmd->resp[3] = readl(base + MMCIRESPONSE3); | ||
| 354 | } | 354 | } |
| 355 | 355 | ||
| 356 | if (!cmd->data || cmd->error) { | 356 | if (!cmd->data || cmd->error) { |
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 17203586305..5309ab95aad 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c | |||
| @@ -277,10 +277,43 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock) | |||
| 277 | host->clock = clock; | 277 | host->clock = clock; |
| 278 | } | 278 | } |
| 279 | 279 | ||
| 280 | /** | ||
| 281 | * sdhci_s3c_platform_8bit_width - support 8bit buswidth | ||
| 282 | * @host: The SDHCI host being queried | ||
| 283 | * @width: MMC_BUS_WIDTH_ macro for the bus width being requested | ||
| 284 | * | ||
| 285 | * We have 8-bit width support but is not a v3 controller. | ||
| 286 | * So we add platform_8bit_width() and support 8bit width. | ||
| 287 | */ | ||
| 288 | static int sdhci_s3c_platform_8bit_width(struct sdhci_host *host, int width) | ||
| 289 | { | ||
| 290 | u8 ctrl; | ||
| 291 | |||
| 292 | ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL); | ||
| 293 | |||
| 294 | switch (width) { | ||
| 295 | case MMC_BUS_WIDTH_8: | ||
| 296 | ctrl |= SDHCI_CTRL_8BITBUS; | ||
| 297 | ctrl &= ~SDHCI_CTRL_4BITBUS; | ||
| 298 | break; | ||
| 299 | case MMC_BUS_WIDTH_4: | ||
| 300 | ctrl |= SDHCI_CTRL_4BITBUS; | ||
| 301 | ctrl &= ~SDHCI_CTRL_8BITBUS; | ||
| 302 | break; | ||
| 303 | default: | ||
| 304 | break; | ||
| 305 | } | ||
| 306 | |||
| 307 | sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); | ||
| 308 | |||
| 309 | return 0; | ||
| 310 | } | ||
| 311 | |||
| 280 | static struct sdhci_ops sdhci_s3c_ops = { | 312 | static struct sdhci_ops sdhci_s3c_ops = { |
| 281 | .get_max_clock = sdhci_s3c_get_max_clk, | 313 | .get_max_clock = sdhci_s3c_get_max_clk, |
| 282 | .set_clock = sdhci_s3c_set_clock, | 314 | .set_clock = sdhci_s3c_set_clock, |
| 283 | .get_min_clock = sdhci_s3c_get_min_clock, | 315 | .get_min_clock = sdhci_s3c_get_min_clock, |
| 316 | .platform_8bit_width = sdhci_s3c_platform_8bit_width, | ||
| 284 | }; | 317 | }; |
| 285 | 318 | ||
| 286 | static void sdhci_s3c_notify_change(struct platform_device *dev, int state) | 319 | static void sdhci_s3c_notify_change(struct platform_device *dev, int state) |
| @@ -473,6 +506,9 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) | |||
| 473 | if (pdata->cd_type == S3C_SDHCI_CD_PERMANENT) | 506 | if (pdata->cd_type == S3C_SDHCI_CD_PERMANENT) |
| 474 | host->mmc->caps = MMC_CAP_NONREMOVABLE; | 507 | host->mmc->caps = MMC_CAP_NONREMOVABLE; |
| 475 | 508 | ||
| 509 | if (pdata->host_caps) | ||
| 510 | host->mmc->caps |= pdata->host_caps; | ||
| 511 | |||
| 476 | host->quirks |= (SDHCI_QUIRK_32BIT_DMA_ADDR | | 512 | host->quirks |= (SDHCI_QUIRK_32BIT_DMA_ADDR | |
| 477 | SDHCI_QUIRK_32BIT_DMA_SIZE); | 513 | SDHCI_QUIRK_32BIT_DMA_SIZE); |
| 478 | 514 | ||
diff --git a/drivers/mmc/host/ushc.c b/drivers/mmc/host/ushc.c index f8f65df9b01..f08f944ac53 100644 --- a/drivers/mmc/host/ushc.c +++ b/drivers/mmc/host/ushc.c | |||
| @@ -19,7 +19,6 @@ | |||
| 19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| 20 | #include <linux/usb.h> | 20 | #include <linux/usb.h> |
| 21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| 22 | #include <linux/usb.h> | ||
| 23 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
| 24 | #include <linux/dma-mapping.h> | 23 | #include <linux/dma-mapping.h> |
| 25 | #include <linux/mmc/host.h> | 24 | #include <linux/mmc/host.h> |
