|
@@ -1777,13 +1777,19 @@ int sdhci_add_host(struct sdhci_host *host)
|
|
* Maximum block size. This varies from controller to controller and
|
|
* Maximum block size. This varies from controller to controller and
|
|
* is specified in the capabilities register.
|
|
* is specified in the capabilities register.
|
|
*/
|
|
*/
|
|
- mmc->max_blk_size = (caps & SDHCI_MAX_BLOCK_MASK) >> SDHCI_MAX_BLOCK_SHIFT;
|
|
|
|
- if (mmc->max_blk_size >= 3) {
|
|
|
|
- printk(KERN_WARNING "%s: Invalid maximum block size, "
|
|
|
|
- "assuming 512 bytes\n", mmc_hostname(mmc));
|
|
|
|
- mmc->max_blk_size = 512;
|
|
|
|
- } else
|
|
|
|
- mmc->max_blk_size = 512 << mmc->max_blk_size;
|
|
|
|
|
|
+ if (host->quirks & SDHCI_QUIRK_FORCE_BLK_SZ_2048) {
|
|
|
|
+ mmc->max_blk_size = 2;
|
|
|
|
+ } else {
|
|
|
|
+ mmc->max_blk_size = (caps & SDHCI_MAX_BLOCK_MASK) >>
|
|
|
|
+ SDHCI_MAX_BLOCK_SHIFT;
|
|
|
|
+ if (mmc->max_blk_size >= 3) {
|
|
|
|
+ printk(KERN_WARNING "%s: Invalid maximum block size, "
|
|
|
|
+ "assuming 512 bytes\n", mmc_hostname(mmc));
|
|
|
|
+ mmc->max_blk_size = 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ mmc->max_blk_size = 512 << mmc->max_blk_size;
|
|
|
|
|
|
/*
|
|
/*
|
|
* Maximum block count.
|
|
* Maximum block count.
|