char *buf)
{
struct mmc_host *mmc = container_of(dev, struct mmc_host, class_dev);
+ int val = 0;
- return sprintf(buf, "%d\n", (mmc->caps2 & MMC_CAP2_NO_MULTI_READ) ? 0 : 1);
+ if (!(mmc->caps2 & MMC_CAP2_NO_MULTI_READ)) {
+ val = 1;
+ if (mmc->f_max == OMAP_MMC_MAX_CLOCK)
+ val = 2;
+ }
+
+ return sprintf(buf, "%d\n", val);
}
static ssize_t
if (ret)
return -EINVAL;
- if (val)
- mmc->caps2 &= ~MMC_CAP2_NO_MULTI_READ;
- else
+ switch (val) {
+ case 0:
mmc->caps2 |= MMC_CAP2_NO_MULTI_READ;
+ mmc->f_max = OMAP_MMC_MAX_CLOCK;
+ break;
+ case 1:
+ mmc->caps2 &= ~MMC_CAP2_NO_MULTI_READ;
+ mmc->f_max = 32000000;
+ break;
+ case 2:
+ mmc->caps2 &= ~MMC_CAP2_NO_MULTI_READ;
+ mmc->f_max = OMAP_MMC_MAX_CLOCK;
+ break;
+ }
return count;
}
/* MMC_CAP2_NO_MULTI_READ makes it crawl, try a different workaround */
mmc->caps2 &= ~MMC_CAP2_NO_MULTI_READ;
- mmc->max_blk_count = 8;
- mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
- mmc->max_seg_size = mmc->max_req_size;
+ mmc->max_segs = 1;
+ mmc->f_max = 32000000;
}
omap_hsmmc_debugfs(mmc);