diff options
Diffstat (limited to 'drivers/usb/dwc3/core.c')
-rw-r--r-- | drivers/usb/dwc3/core.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index a1b126f90261..4aff1d8dbc4f 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c | |||
@@ -828,6 +828,7 @@ static void dwc3_set_incr_burst_type(struct dwc3 *dwc) | |||
828 | ret = device_property_read_u32_array(dev, | 828 | ret = device_property_read_u32_array(dev, |
829 | "snps,incr-burst-type-adjustment", vals, ntype); | 829 | "snps,incr-burst-type-adjustment", vals, ntype); |
830 | if (ret) { | 830 | if (ret) { |
831 | kfree(vals); | ||
831 | dev_err(dev, "Error to get property\n"); | 832 | dev_err(dev, "Error to get property\n"); |
832 | return; | 833 | return; |
833 | } | 834 | } |
@@ -846,6 +847,8 @@ static void dwc3_set_incr_burst_type(struct dwc3 *dwc) | |||
846 | incrx_mode = INCRX_BURST_MODE; | 847 | incrx_mode = INCRX_BURST_MODE; |
847 | } | 848 | } |
848 | 849 | ||
850 | kfree(vals); | ||
851 | |||
849 | /* Enable Undefined Length INCR Burst and Enable INCRx Burst */ | 852 | /* Enable Undefined Length INCR Burst and Enable INCRx Burst */ |
850 | cfg &= ~DWC3_GSBUSCFG0_INCRBRST_MASK; | 853 | cfg &= ~DWC3_GSBUSCFG0_INCRBRST_MASK; |
851 | if (incrx_mode) | 854 | if (incrx_mode) |
@@ -893,12 +896,6 @@ static int dwc3_core_init(struct dwc3 *dwc) | |||
893 | u32 reg; | 896 | u32 reg; |
894 | int ret; | 897 | int ret; |
895 | 898 | ||
896 | if (!dwc3_core_is_valid(dwc)) { | ||
897 | dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n"); | ||
898 | ret = -ENODEV; | ||
899 | goto err0; | ||
900 | } | ||
901 | |||
902 | /* | 899 | /* |
903 | * Write Linux Version Code to our GUID register so it's easy to figure | 900 | * Write Linux Version Code to our GUID register so it's easy to figure |
904 | * out which kernel version a bug was found. | 901 | * out which kernel version a bug was found. |
@@ -1218,7 +1215,7 @@ static void dwc3_get_properties(struct dwc3 *dwc) | |||
1218 | u8 tx_max_burst_prd; | 1215 | u8 tx_max_burst_prd; |
1219 | 1216 | ||
1220 | /* default to highest possible threshold */ | 1217 | /* default to highest possible threshold */ |
1221 | lpm_nyet_threshold = 0xff; | 1218 | lpm_nyet_threshold = 0xf; |
1222 | 1219 | ||
1223 | /* default to -3.5dB de-emphasis */ | 1220 | /* default to -3.5dB de-emphasis */ |
1224 | tx_de_emphasis = 1; | 1221 | tx_de_emphasis = 1; |
@@ -1426,6 +1423,11 @@ static int dwc3_probe(struct platform_device *pdev) | |||
1426 | dwc->regs = regs; | 1423 | dwc->regs = regs; |
1427 | dwc->regs_size = resource_size(&dwc_res); | 1424 | dwc->regs_size = resource_size(&dwc_res); |
1428 | 1425 | ||
1426 | if (!dwc3_core_is_valid(dwc)) { | ||
1427 | dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n"); | ||
1428 | return -ENODEV; | ||
1429 | } | ||
1430 | |||
1429 | dwc3_get_properties(dwc); | 1431 | dwc3_get_properties(dwc); |
1430 | 1432 | ||
1431 | dwc->reset = devm_reset_control_get_optional_shared(dev, NULL); | 1433 | dwc->reset = devm_reset_control_get_optional_shared(dev, NULL); |
@@ -1600,6 +1602,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) | |||
1600 | spin_lock_irqsave(&dwc->lock, flags); | 1602 | spin_lock_irqsave(&dwc->lock, flags); |
1601 | dwc3_gadget_suspend(dwc); | 1603 | dwc3_gadget_suspend(dwc); |
1602 | spin_unlock_irqrestore(&dwc->lock, flags); | 1604 | spin_unlock_irqrestore(&dwc->lock, flags); |
1605 | synchronize_irq(dwc->irq_gadget); | ||
1603 | dwc3_core_exit(dwc); | 1606 | dwc3_core_exit(dwc); |
1604 | break; | 1607 | break; |
1605 | case DWC3_GCTL_PRTCAP_HOST: | 1608 | case DWC3_GCTL_PRTCAP_HOST: |
@@ -1632,6 +1635,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) | |||
1632 | spin_lock_irqsave(&dwc->lock, flags); | 1635 | spin_lock_irqsave(&dwc->lock, flags); |
1633 | dwc3_gadget_suspend(dwc); | 1636 | dwc3_gadget_suspend(dwc); |
1634 | spin_unlock_irqrestore(&dwc->lock, flags); | 1637 | spin_unlock_irqrestore(&dwc->lock, flags); |
1638 | synchronize_irq(dwc->irq_gadget); | ||
1635 | } | 1639 | } |
1636 | 1640 | ||
1637 | dwc3_otg_exit(dwc); | 1641 | dwc3_otg_exit(dwc); |