|
@@ -1061,7 +1061,15 @@ static int __devinit mmci_probe(struct amba_device *dev,
|
|
|
}
|
|
|
|
|
|
mmc->ops = &mmci_ops;
|
|
|
- mmc->f_min = (host->mclk + 511) / 512;
|
|
|
+ /*
|
|
|
+ * The ARM and ST versions of the block have slightly different
|
|
|
+ * clock divider equations which means that the minimum divider
|
|
|
+ * differs too.
|
|
|
+ */
|
|
|
+ if (variant->st_clkdiv)
|
|
|
+ mmc->f_min = DIV_ROUND_UP(host->mclk, 257);
|
|
|
+ else
|
|
|
+ mmc->f_min = DIV_ROUND_UP(host->mclk, 512);
|
|
|
/*
|
|
|
* If the platform data supplies a maximum operating
|
|
|
* frequency, this takes precedence. Else, we fall back
|