diff options
Diffstat (limited to 'drivers/usb/dwc3/core.c')
-rw-r--r-- | drivers/usb/dwc3/core.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 04b700d12d..fb3cae4de9 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -14,6 +14,7 @@ #include <dma.h> #include <driver.h> #include <init.h> +#include <linux/reset.h> #include "gadget.h" #include "core.h" @@ -1114,8 +1115,6 @@ static int dwc3_probe(struct device_d *dev) if (of_find_property(dev->device_node, "clocks", NULL)) { ret = clk_bulk_get(dev, dwc->num_clks, dwc->clks); - if (ret == -EPROBE_DEFER) - return ret; if (ret) return ret; } @@ -1125,6 +1124,16 @@ static int dwc3_probe(struct device_d *dev) if (ret) return ret; + dwc->reset = reset_control_get(dev, NULL); + if (IS_ERR(dwc->reset)) { + dev_err(dev, "Failed to get reset control: %pe\n", dwc->reset); + return PTR_ERR(dwc->reset); + } + + reset_control_assert(dwc->reset); + mdelay(1); + reset_control_deassert(dwc->reset); + dwc3_coresoft_reset(dwc); dwc3_cache_hwparams(dwc); |