diff options
Diffstat (limited to 'drivers/mmc/host/sdhci.c')
-rw-r--r-- | drivers/mmc/host/sdhci.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 3a72fe2cf1cf..30d8e3d4e6fd 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c | |||
@@ -1777,13 +1777,19 @@ int sdhci_add_host(struct sdhci_host *host) | |||
1777 | * Maximum block size. This varies from controller to controller and | 1777 | * Maximum block size. This varies from controller to controller and |
1778 | * is specified in the capabilities register. | 1778 | * is specified in the capabilities register. |
1779 | */ | 1779 | */ |
1780 | mmc->max_blk_size = (caps & SDHCI_MAX_BLOCK_MASK) >> SDHCI_MAX_BLOCK_SHIFT; | 1780 | if (host->quirks & SDHCI_QUIRK_FORCE_BLK_SZ_2048) { |
1781 | if (mmc->max_blk_size >= 3) { | 1781 | mmc->max_blk_size = 2; |
1782 | printk(KERN_WARNING "%s: Invalid maximum block size, " | 1782 | } else { |
1783 | "assuming 512 bytes\n", mmc_hostname(mmc)); | 1783 | mmc->max_blk_size = (caps & SDHCI_MAX_BLOCK_MASK) >> |
1784 | mmc->max_blk_size = 512; | 1784 | SDHCI_MAX_BLOCK_SHIFT; |
1785 | } else | 1785 | if (mmc->max_blk_size >= 3) { |
1786 | mmc->max_blk_size = 512 << mmc->max_blk_size; | 1786 | printk(KERN_WARNING "%s: Invalid maximum block size, " |
1787 | "assuming 512 bytes\n", mmc_hostname(mmc)); | ||
1788 | mmc->max_blk_size = 0; | ||
1789 | } | ||
1790 | } | ||
1791 | |||
1792 | mmc->max_blk_size = 512 << mmc->max_blk_size; | ||
1787 | 1793 | ||
1788 | /* | 1794 | /* |
1789 | * Maximum block count. | 1795 | * Maximum block count. |