Add some code to parse and enable vbus supply when probing. Signed-off-by: Markus Pargmann <mpa@xxxxxxxxxxxxxx> --- drivers/usb/imx/chipidea-imx.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/usb/imx/chipidea-imx.c b/drivers/usb/imx/chipidea-imx.c index 9b6829b8f59f..fd3a57145f4d 100644 --- a/drivers/usb/imx/chipidea-imx.c +++ b/drivers/usb/imx/chipidea-imx.c @@ -15,9 +15,11 @@ #include <common.h> #include <init.h> #include <io.h> +#include <linux/err.h> #include <of.h> #include <errno.h> #include <driver.h> +#include <regulator.h> #include <usb/usb.h> #include <usb/ehci.h> #include <usb/chipidea-imx.h> @@ -136,6 +138,7 @@ static int imx_chipidea_probe(struct device_d *dev) void __iomem *base; struct imx_chipidea *ci; uint32_t portsc; + struct regulator *vbus; ci = xzalloc(sizeof(*ci)); ci->dev = dev; @@ -184,9 +187,23 @@ static int imx_chipidea_probe(struct device_d *dev) ret = ci_udc_register(dev, base); } else { dev_err(dev, "No supported role\n"); - ret = -ENODEV; + return -ENODEV; + } + + if (ret) + return ret; + + vbus = regulator_get(dev, "vbus"); + if (IS_ERR(vbus)) { + dev_err(dev, "Failed to get vbus regulator %ld\n", PTR_ERR(vbus)); + return PTR_ERR(vbus); } + if (ci->mode == IMX_USB_MODE_HOST) + ret = regulator_enable(vbus); + else + ret = regulator_disable(vbus); + return ret; }; -- 2.0.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox