summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2021-11-15 14:21:20 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2021-11-15 14:21:20 +0100
commit0fdbd47ac4ff832f1c950db0b6ccb2eda3824158 (patch)
treeb6f121ca8017c89be96af2ff96d07f1f20e8f52c /drivers/usb
parent42cdd1452a51ca970a6cda76e3bdbe4f04d6e13f (diff)
parenta1511452b8eb44cdce2e7e879b82d147e213654e (diff)
downloadbarebox-0fdbd47ac4ff832f1c950db0b6ccb2eda3824158.tar.gz
barebox-0fdbd47ac4ff832f1c950db0b6ccb2eda3824158.tar.xz
Merge branch 'for-next/rockchip'
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/dwc3/core.c11
-rw-r--r--drivers/usb/dwc3/core.h2
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 2a4d1c066d..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"
@@ -1123,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);
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index f2f7a311d1..94cc594920 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -1003,6 +1003,8 @@ struct dwc3 {
struct clk_bulk_data *clks;
int num_clks;
+ struct reset_control *reset;
+
struct phy *usb2_generic_phy;
struct phy *usb3_generic_phy;