+ struct sdhci_s3c *sc = sdhci_priv(host);
+
+ if (sc->vmmc) {
+ int ret = regulator_disable(sc->vmmc);
+ if (ret)
+ return ret;
+ mdelay(2);
Shouldn't these delays be handled in the regulator framework itself?
A 2ms delay on power down seems suspicious for a regulator. I'm not sure why this is required but if it is I suspect it's due to a large cap on the regulator output and light load rather than something that's always true for whatever regulator is providing the supply.