diff options
-rw-r--r-- | drivers/usb/dwc3/core.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 443e4fb9b8f3..6aa091339989 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c | |||
@@ -241,6 +241,15 @@ static int __devinit dwc3_core_init(struct dwc3 *dwc) | |||
241 | u32 reg; | 241 | u32 reg; |
242 | int ret; | 242 | int ret; |
243 | 243 | ||
244 | reg = dwc3_readl(dwc->regs, DWC3_GSNPSID); | ||
245 | /* This should read as U3 followed by revision number */ | ||
246 | if ((reg & DWC3_GSNPSID_MASK) != 0x55330000) { | ||
247 | dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n"); | ||
248 | ret = -ENODEV; | ||
249 | goto err0; | ||
250 | } | ||
251 | dwc->revision = reg & DWC3_GSNPSREV_MASK; | ||
252 | |||
244 | dwc3_core_soft_reset(dwc); | 253 | dwc3_core_soft_reset(dwc); |
245 | 254 | ||
246 | /* issue device SoftReset too */ | 255 | /* issue device SoftReset too */ |
@@ -260,16 +269,6 @@ static int __devinit dwc3_core_init(struct dwc3 *dwc) | |||
260 | cpu_relax(); | 269 | cpu_relax(); |
261 | } while (true); | 270 | } while (true); |
262 | 271 | ||
263 | reg = dwc3_readl(dwc->regs, DWC3_GSNPSID); | ||
264 | /* This should read as U3 followed by revision number */ | ||
265 | if ((reg & DWC3_GSNPSID_MASK) != 0x55330000) { | ||
266 | dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n"); | ||
267 | ret = -ENODEV; | ||
268 | goto err0; | ||
269 | } | ||
270 | |||
271 | dwc->revision = reg & DWC3_GSNPSREV_MASK; | ||
272 | |||
273 | ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_NUM, | 272 | ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_NUM, |
274 | DWC3_EVENT_BUFFERS_SIZE); | 273 | DWC3_EVENT_BUFFERS_SIZE); |
275 | if (ret) { | 274 | if (ret) { |