Lines Matching full:mmc
3 * Helper functions for MMC regulators.
11 #include <linux/mmc/host.h>
57 * can be provided to MMC/SD/SDIO devices using the specified voltage
59 * MMC host adapter.
96 * @mmc: the host to regulate
102 * MMC host drivers may use this to enable or disable a regulator using
106 int mmc_regulator_set_ocr(struct mmc_host *mmc, in mmc_regulator_set_ocr() argument
120 if (result == 0 && !mmc->regulator_enabled) { in mmc_regulator_set_ocr()
123 mmc->regulator_enabled = true; in mmc_regulator_set_ocr()
125 } else if (mmc->regulator_enabled) { in mmc_regulator_set_ocr()
128 mmc->regulator_enabled = false; in mmc_regulator_set_ocr()
132 dev_err(mmc_dev(mmc), in mmc_regulator_set_ocr()
165 * @mmc: the host to regulate
182 int mmc_regulator_set_vqmmc(struct mmc_host *mmc, struct mmc_ios *ios) in mmc_regulator_set_vqmmc() argument
184 struct device *dev = mmc_dev(mmc); in mmc_regulator_set_vqmmc()
188 if (IS_ERR(mmc->supply.vqmmc)) in mmc_regulator_set_vqmmc()
193 return mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc, in mmc_regulator_set_vqmmc()
196 return mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc, in mmc_regulator_set_vqmmc()
199 ret = mmc_ocrbitnum_to_vdd(mmc->ios.vdd, &volt, &max_uV); in mmc_regulator_set_vqmmc()
216 ret = mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc, in mmc_regulator_set_vqmmc()
221 return mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc, in mmc_regulator_set_vqmmc()
231 * @mmc: The mmc host to regulate
236 * be called by mmc host drivers.
241 int mmc_regulator_set_vqmmc2(struct mmc_host *mmc, struct mmc_ios *ios) in mmc_regulator_set_vqmmc2() argument
243 if (IS_ERR(mmc->supply.vqmmc2)) in mmc_regulator_set_vqmmc2()
249 mmc->supply.vqmmc2, 1700000, 1800000, 1950000); in mmc_regulator_set_vqmmc2()
267 * @mmc: the host to regulate
275 int mmc_regulator_get_supply(struct mmc_host *mmc) in mmc_regulator_get_supply() argument
277 struct device *dev = mmc_dev(mmc); in mmc_regulator_get_supply()
280 mmc->supply.vmmc = devm_regulator_get_optional(dev, "vmmc"); in mmc_regulator_get_supply()
281 mmc->supply.vqmmc = devm_regulator_get_optional(dev, "vqmmc"); in mmc_regulator_get_supply()
282 mmc->supply.vqmmc2 = devm_regulator_get_optional(dev, "vqmmc2"); in mmc_regulator_get_supply()
284 if (IS_ERR(mmc->supply.vmmc)) { in mmc_regulator_get_supply()
285 if (PTR_ERR(mmc->supply.vmmc) == -EPROBE_DEFER) in mmc_regulator_get_supply()
291 ret = mmc_regulator_get_ocrmask(mmc->supply.vmmc); in mmc_regulator_get_supply()
293 mmc->ocr_avail = ret; in mmc_regulator_get_supply()
298 if (IS_ERR(mmc->supply.vqmmc)) { in mmc_regulator_get_supply()
299 if (PTR_ERR(mmc->supply.vqmmc) == -EPROBE_DEFER) in mmc_regulator_get_supply()
306 if (IS_ERR(mmc->supply.vqmmc2)) { in mmc_regulator_get_supply()
307 if (PTR_ERR(mmc->supply.vqmmc2) == -EPROBE_DEFER) in mmc_regulator_get_supply()
318 * @mmc: the host to regulate
324 int mmc_regulator_enable_vqmmc(struct mmc_host *mmc) in mmc_regulator_enable_vqmmc() argument
328 if (!IS_ERR(mmc->supply.vqmmc) && !mmc->vqmmc_enabled) { in mmc_regulator_enable_vqmmc()
329 ret = regulator_enable(mmc->supply.vqmmc); in mmc_regulator_enable_vqmmc()
331 dev_err(mmc_dev(mmc), "enabling vqmmc regulator failed\n"); in mmc_regulator_enable_vqmmc()
333 mmc->vqmmc_enabled = true; in mmc_regulator_enable_vqmmc()
342 * @mmc: the host to regulate
348 void mmc_regulator_disable_vqmmc(struct mmc_host *mmc) in mmc_regulator_disable_vqmmc() argument
350 if (!IS_ERR(mmc->supply.vqmmc) && mmc->vqmmc_enabled) { in mmc_regulator_disable_vqmmc()
351 regulator_disable(mmc->supply.vqmmc); in mmc_regulator_disable_vqmmc()
352 mmc->vqmmc_enabled = false; in mmc_regulator_disable_vqmmc()