#include <linux/usb.h>
 #include <linux/usb/hcd.h>
 #include <linux/usb/chipidea.h>
+#include <linux/regulator/consumer.h>
 
 #include "../host/ehci.h"
 
        ehci->has_hostpc = ci->hw_bank.lpm;
        ehci->has_tdi_phy_lpm = ci->hw_bank.lpm;
 
+       if (ci->platdata->reg_vbus) {
+               ret = regulator_enable(ci->platdata->reg_vbus);
+               if (ret) {
+                       dev_err(ci->dev,
+                               "Failed to enable vbus regulator, ret=%d\n",
+                               ret);
+                       goto put_hcd;
+               }
+       }
+
        ret = usb_add_hcd(hcd, 0, 0);
        if (ret)
-               usb_put_hcd(hcd);
+               goto disable_reg;
        else
                ci->hcd = hcd;
 
                hw_write(ci, OP_USBMODE, USBMODE_CI_SDIS, USBMODE_CI_SDIS);
 
        return ret;
+
+disable_reg:
+       regulator_disable(ci->platdata->reg_vbus);
+
+put_hcd:
+       usb_put_hcd(hcd);
+
+       return ret;
 }
 
 static void host_stop(struct ci_hdrc *ci)
 
        usb_remove_hcd(hcd);
        usb_put_hcd(hcd);
+       if (ci->platdata->reg_vbus)
+               regulator_disable(ci->platdata->reg_vbus);
 }
 
 int ci_hdrc_host_init(struct ci_hdrc *ci)