diff options
Diffstat (limited to 'drivers/mmc')
| -rw-r--r-- | drivers/mmc/host/mmci.c | 2 | ||||
| -rw-r--r-- | drivers/mmc/host/pxamci.c | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 705a5894a6bb..90d168ad03b6 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c | |||
| @@ -56,7 +56,7 @@ static void mmci_set_clkreg(struct mmci_host *host, unsigned int desired) | |||
| 56 | clk = 255; | 56 | clk = 255; |
| 57 | host->cclk = host->mclk / (2 * (clk + 1)); | 57 | host->cclk = host->mclk / (2 * (clk + 1)); |
| 58 | } | 58 | } |
| 59 | if (host->hw_designer == 0x80) | 59 | if (host->hw_designer == AMBA_VENDOR_ST) |
| 60 | clk |= MCI_FCEN; /* Bug fix in ST IP block */ | 60 | clk |= MCI_FCEN; /* Bug fix in ST IP block */ |
| 61 | clk |= MCI_CLK_ENABLE; | 61 | clk |= MCI_CLK_ENABLE; |
| 62 | /* This hasn't proven to be worthwhile */ | 62 | /* This hasn't proven to be worthwhile */ |
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c index 9fb480bb0e0a..bb47ff465c04 100644 --- a/drivers/mmc/host/pxamci.c +++ b/drivers/mmc/host/pxamci.c | |||
| @@ -43,6 +43,9 @@ | |||
| 43 | #define NR_SG 1 | 43 | #define NR_SG 1 |
| 44 | #define CLKRT_OFF (~0) | 44 | #define CLKRT_OFF (~0) |
| 45 | 45 | ||
| 46 | #define mmc_has_26MHz() (cpu_is_pxa300() || cpu_is_pxa310() \ | ||
| 47 | || cpu_is_pxa935()) | ||
| 48 | |||
| 46 | struct pxamci_host { | 49 | struct pxamci_host { |
| 47 | struct mmc_host *mmc; | 50 | struct mmc_host *mmc; |
| 48 | spinlock_t lock; | 51 | spinlock_t lock; |
| @@ -457,7 +460,7 @@ static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | |||
| 457 | clk_enable(host->clk); | 460 | clk_enable(host->clk); |
| 458 | 461 | ||
| 459 | if (ios->clock == 26000000) { | 462 | if (ios->clock == 26000000) { |
| 460 | /* to support 26MHz on pxa300/pxa310 */ | 463 | /* to support 26MHz */ |
| 461 | host->clkrt = 7; | 464 | host->clkrt = 7; |
| 462 | } else { | 465 | } else { |
| 463 | /* to handle (19.5MHz, 26MHz) */ | 466 | /* to handle (19.5MHz, 26MHz) */ |
| @@ -608,8 +611,7 @@ static int pxamci_probe(struct platform_device *pdev) | |||
| 608 | * Calculate minimum clock rate, rounding up. | 611 | * Calculate minimum clock rate, rounding up. |
| 609 | */ | 612 | */ |
| 610 | mmc->f_min = (host->clkrate + 63) / 64; | 613 | mmc->f_min = (host->clkrate + 63) / 64; |
| 611 | mmc->f_max = (cpu_is_pxa300() || cpu_is_pxa310()) ? 26000000 | 614 | mmc->f_max = (mmc_has_26MHz()) ? 26000000 : host->clkrate; |
| 612 | : host->clkrate; | ||
| 613 | 615 | ||
| 614 | pxamci_init_ocr(host); | 616 | pxamci_init_ocr(host); |
| 615 | 617 | ||
| @@ -618,7 +620,7 @@ static int pxamci_probe(struct platform_device *pdev) | |||
| 618 | if (!cpu_is_pxa25x()) { | 620 | if (!cpu_is_pxa25x()) { |
| 619 | mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ; | 621 | mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ; |
| 620 | host->cmdat |= CMDAT_SDIO_INT_EN; | 622 | host->cmdat |= CMDAT_SDIO_INT_EN; |
| 621 | if (cpu_is_pxa300() || cpu_is_pxa310()) | 623 | if (mmc_has_26MHz()) |
| 622 | mmc->caps |= MMC_CAP_MMC_HIGHSPEED | | 624 | mmc->caps |= MMC_CAP_MMC_HIGHSPEED | |
| 623 | MMC_CAP_SD_HIGHSPEED; | 625 | MMC_CAP_SD_HIGHSPEED; |
| 624 | } | 626 | } |
