return 0;
 }
 EXPORT_SYMBOL_GPL(mmc_regulator_get_supply);
+
+/**
+ * mmc_regulator_enable_vqmmc - enable VQMMC regulator for a host
+ * @mmc: the host to regulate
+ *
+ * Returns 0 or errno. Enables the regulator for vqmmc.
+ * Keeps track of the enable status for ensuring that calls to
+ * regulator_enable/disable are balanced.
+ */
+int mmc_regulator_enable_vqmmc(struct mmc_host *mmc)
+{
+       int ret = 0;
+
+       if (!IS_ERR(mmc->supply.vqmmc) && !mmc->vqmmc_enabled) {
+               ret = regulator_enable(mmc->supply.vqmmc);
+               if (ret < 0)
+                       dev_err(mmc_dev(mmc), "enabling vqmmc regulator failed\n");
+               else
+                       mmc->vqmmc_enabled = true;
+       }
+
+       return ret;
+}
+EXPORT_SYMBOL_GPL(mmc_regulator_enable_vqmmc);
+
+/**
+ * mmc_regulator_disable_vqmmc - disable VQMMC regulator for a host
+ * @mmc: the host to regulate
+ *
+ * Returns 0 or errno. Disables the regulator for vqmmc.
+ * Keeps track of the enable status for ensuring that calls to
+ * regulator_enable/disable are balanced.
+ */
+void mmc_regulator_disable_vqmmc(struct mmc_host *mmc)
+{
+       if (!IS_ERR(mmc->supply.vqmmc) && mmc->vqmmc_enabled) {
+               regulator_disable(mmc->supply.vqmmc);
+               mmc->vqmmc_enabled = false;
+       }
+}
+EXPORT_SYMBOL_GPL(mmc_regulator_disable_vqmmc);
 
        unsigned int            retune_paused:1; /* re-tuning is temporarily disabled */
        unsigned int            retune_crc_disable:1; /* don't trigger retune upon crc */
        unsigned int            can_dma_map_merge:1; /* merging can be used */
+       unsigned int            vqmmc_enabled:1; /* vqmmc regulator is enabled */
 
        int                     rescan_disable; /* disable card detection */
        int                     rescan_entered; /* used with nonremovable devices */
 #endif
 
 int mmc_regulator_get_supply(struct mmc_host *mmc);
+int mmc_regulator_enable_vqmmc(struct mmc_host *mmc);
+void mmc_regulator_disable_vqmmc(struct mmc_host *mmc);
 
 static inline int mmc_card_is_removable(struct mmc_host *host)
 {