diff options
Diffstat (limited to 'drivers/mmc/host/omap_hsmmc.c')
-rw-r--r-- | drivers/mmc/host/omap_hsmmc.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index ece163493a54..df27bb4fc098 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c | |||
@@ -1829,7 +1829,17 @@ static int omap_hsmmc_disable_fclk(struct mmc_host *mmc) | |||
1829 | return 0; | 1829 | return 0; |
1830 | } | 1830 | } |
1831 | 1831 | ||
1832 | static const struct mmc_host_ops omap_hsmmc_ops = { | 1832 | static int omap_hsmmc_multi_io_quirk(struct mmc_card *card, |
1833 | unsigned int direction, int blk_size) | ||
1834 | { | ||
1835 | /* This controller can't do multiblock reads due to hw bugs */ | ||
1836 | if (direction == MMC_DATA_READ) | ||
1837 | return 1; | ||
1838 | |||
1839 | return blk_size; | ||
1840 | } | ||
1841 | |||
1842 | static struct mmc_host_ops omap_hsmmc_ops = { | ||
1833 | .enable = omap_hsmmc_enable_fclk, | 1843 | .enable = omap_hsmmc_enable_fclk, |
1834 | .disable = omap_hsmmc_disable_fclk, | 1844 | .disable = omap_hsmmc_disable_fclk, |
1835 | .post_req = omap_hsmmc_post_req, | 1845 | .post_req = omap_hsmmc_post_req, |
@@ -2101,7 +2111,7 @@ static int omap_hsmmc_probe(struct platform_device *pdev) | |||
2101 | 2111 | ||
2102 | if (host->pdata->controller_flags & OMAP_HSMMC_BROKEN_MULTIBLOCK_READ) { | 2112 | if (host->pdata->controller_flags & OMAP_HSMMC_BROKEN_MULTIBLOCK_READ) { |
2103 | dev_info(&pdev->dev, "multiblock reads disabled due to 35xx erratum 2.1.1.128; MMC read performance may suffer\n"); | 2113 | dev_info(&pdev->dev, "multiblock reads disabled due to 35xx erratum 2.1.1.128; MMC read performance may suffer\n"); |
2104 | mmc->caps2 |= MMC_CAP2_NO_MULTI_READ; | 2114 | omap_hsmmc_ops.multi_io_quirk = omap_hsmmc_multi_io_quirk; |
2105 | } | 2115 | } |
2106 | 2116 | ||
2107 | pm_runtime_enable(host->dev); | 2117 | pm_runtime_enable(host->dev); |