diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-08 13:03:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-08 13:03:52 -0400 |
commit | 132d68d37d33f1d0b9c1f507c8b4d64c27ecec8a (patch) | |
tree | b3c05972e5579e1574873fe745fb1358c62a269c /drivers/usb/dwc3/core.c | |
parent | 80f232121b69cc69a31ccb2b38c1665d770b0710 (diff) | |
parent | 3515468a87a47781f6af818773650513ff14656a (diff) |
Merge tag 'usb-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB/PHY updates from Greg KH:
"Here is the big set of USB and PHY driver patches for 5.2-rc1
There is the usual set of:
- USB gadget updates
- PHY driver updates and additions
- USB serial driver updates and fixes
- typec updates and new chips supported
- mtu3 driver updates
- xhci driver updates
- other tiny driver updates
Nothing really interesting, just constant forward progress.
All of these have been in linux-next for a while with no reported
issues. The usb-gadget and usb-serial trees were merged a bit "late",
but both of them had been in linux-next before they got merged here
last Friday"
* tag 'usb-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (206 commits)
USB: serial: f81232: implement break control
USB: serial: f81232: add high baud rate support
USB: serial: f81232: clear overrun flag
USB: serial: f81232: fix interrupt worker not stop
usb: dwc3: Rename DWC3_DCTL_LPM_ERRATA
usb: dwc3: Fix default lpm_nyet_threshold value
usb: dwc3: debug: Print GET_STATUS(device) tracepoint
usb: dwc3: Do core validation early on probe
usb: dwc3: gadget: Set lpm_capable
usb: gadget: atmel: tie wake lock to running clock
usb: gadget: atmel: support USB suspend
usb: gadget: atmel_usba_udc: simplify setting of interrupt-enabled mask
dwc2: gadget: Fix completed transfer size calculation in DDMA
usb: dwc2: Set lpm mode parameters depend on HW configuration
usb: dwc2: Fix channel disable flow
usb: dwc2: Set actual frame number for completed ISOC transfer
usb: gadget: do not use __constant_cpu_to_le16
usb: dwc2: gadget: Increase descriptors count for ISOC's
usb: introduce usb_ep_type_string() function
usb: dwc3: move synchronize_irq() out of the spinlock protected block
...
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); |