The chipidea binding describes the optional property of a regulator for vbus named "vbus-supply". Add support for this property to the driver so it can be used on boards with a gpio-controlled regulator. Signed-off-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx> --- drivers/usb/imx/chipidea-imx.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/usb/imx/chipidea-imx.c b/drivers/usb/imx/chipidea-imx.c index 9b6829b..84522dc 100644 --- a/drivers/usb/imx/chipidea-imx.c +++ b/drivers/usb/imx/chipidea-imx.c @@ -18,6 +18,7 @@ #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> @@ -32,6 +33,7 @@ struct imx_chipidea { struct ehci_data data; unsigned long flags; enum imx_usb_mode mode; + struct regulator *reg_vbus; int portno; enum usb_phy_interface phymode; }; @@ -41,6 +43,12 @@ static int imx_chipidea_port_init(void *drvdata) struct imx_chipidea *ci = drvdata; int ret; + if (ci->reg_vbus) { + ret = regulator_enable(ci->reg_vbus); + if (ret < 0) + return ret; + } + if ((ci->flags & MXC_EHCI_PORTSC_MASK) == MXC_EHCI_MODE_ULPI) { dev_dbg(ci->dev, "using ULPI phy\n"); if (IS_ENABLED(CONFIG_USB_ULPI)) { @@ -54,8 +62,11 @@ static int imx_chipidea_port_init(void *drvdata) ret = -ENODEV; } - if (ret) + if (ret) { + if (ci->reg_vbus) + regulator_disable(ci->reg_vbus); return ret; + } } ret = imx_usbmisc_port_init(ci->portno, ci->flags); @@ -126,6 +137,8 @@ static int imx_chipidea_probe_dt(struct imx_chipidea *ci) "disable-over-current", NULL)) ci->flags |= MXC_EHCI_DISABLE_OVERCURRENT; + ci->reg_vbus = regulator_get(ci->dev, "vbus"); + return 0; } -- 2.0.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox