--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
-@@ -533,6 +533,7 @@ static const struct driver_info wwan_inf
+@@ -540,6 +540,7 @@ static const struct driver_info wwan_inf
#define LINKSYS_VENDOR_ID 0x13b1
#define NVIDIA_VENDOR_ID 0x0955
#define HP_VENDOR_ID 0x03f0
static const struct usb_device_id products[] = {
/* BLACKLIST !!
-@@ -742,6 +743,13 @@ static const struct usb_device_id produc
+@@ -749,6 +750,13 @@ static const struct usb_device_id produc
USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
.driver_info = 0,
},
#define MCU_TYPE_PLA 0x0100
#define MCU_TYPE_USB 0x0000
-@@ -1817,6 +1818,10 @@ static int rx_bottom(struct r8152 *tp, i
+@@ -1820,6 +1821,10 @@ static int rx_bottom(struct r8152 *tp, i
unsigned int pkt_len;
struct sk_buff *skb;
pkt_len = le32_to_cpu(rx_desc->opts1) & RX_LEN_MASK;
if (pkt_len < ETH_ZLEN)
break;
-@@ -4513,6 +4518,7 @@ static struct usb_device_id rtl8152_tabl
+@@ -4516,6 +4521,7 @@ static struct usb_device_id rtl8152_tabl
{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x304f)},
{REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)},
{REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff)},
int ret;
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -4443,6 +4443,14 @@ hub_port_init(struct usb_hub *hub, struc
+@@ -4454,6 +4454,14 @@ hub_port_init(struct usb_hub *hub, struc
else
speed = usb_speed_string(udev->speed);
if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
mode = USB_DR_MODE_HOST;
else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET))
-@@ -227,8 +246,9 @@ static void dwc3_frame_length_adjustment
-
- reg = dwc3_readl(dwc->regs, DWC3_GFLADJ);
- dft = reg & DWC3_GFLADJ_30MHZ_MASK;
-- if (!dev_WARN_ONCE(dwc->dev, dft == dwc->fladj,
-- "request value same as default, ignoring\n")) {
-+ if (dft == dwc->fladj) {
-+ dev_warn(dwc->dev, "request value same as default, ignoring\n");
-+ } else {
- reg &= ~DWC3_GFLADJ_30MHZ_MASK;
- reg |= DWC3_GFLADJ_30MHZ_SDBND_SEL | dwc->fladj;
- dwc3_writel(dwc->regs, DWC3_GFLADJ, reg);
-@@ -599,6 +619,99 @@ static int dwc3_phy_setup(struct dwc3 *d
+@@ -598,6 +617,99 @@ static int dwc3_phy_setup(struct dwc3 *d
return 0;
}
static void dwc3_core_exit(struct dwc3 *dwc)
{
dwc3_event_buffers_cleanup(dwc);
-@@ -741,6 +854,8 @@ static int dwc3_core_init(struct dwc3 *d
+@@ -740,6 +852,8 @@ static int dwc3_core_init(struct dwc3 *d
if (ret)
goto err1;
/* Adjust Frame Length */
dwc3_frame_length_adjustment(dwc);
-@@ -939,11 +1054,117 @@ static void dwc3_core_exit_mode(struct d
+@@ -938,11 +1052,117 @@ static void dwc3_core_exit_mode(struct d
}
}
struct resource *res;
struct dwc3 *dwc;
u8 lpm_nyet_threshold;
-@@ -975,6 +1196,11 @@ static int dwc3_probe(struct platform_de
+@@ -974,6 +1194,11 @@ static int dwc3_probe(struct platform_de
dwc->xhci_resources[0].flags = res->flags;
dwc->xhci_resources[0].name = res->name;
res->start += DWC3_GLOBALS_REGS_START;
/*
-@@ -1017,6 +1243,12 @@ static int dwc3_probe(struct platform_de
+@@ -1016,6 +1241,12 @@ static int dwc3_probe(struct platform_de
dwc->usb3_lpm_capable = device_property_read_bool(dev,
"snps,usb3_lpm_capable");
dwc->disable_scramble_quirk = device_property_read_bool(dev,
"snps,disable_scramble_quirk");
dwc->u2exit_lfps_quirk = device_property_read_bool(dev,
-@@ -1061,6 +1293,8 @@ static int dwc3_probe(struct platform_de
+@@ -1060,6 +1291,8 @@ static int dwc3_probe(struct platform_de
dwc->hird_threshold = hird_threshold
| (dwc->is_utmi_l1_suspend << 4);
platform_set_drvdata(pdev, dwc);
dwc3_cache_hwparams(dwc);
-@@ -1084,6 +1318,11 @@ static int dwc3_probe(struct platform_de
+@@ -1083,6 +1316,11 @@ static int dwc3_probe(struct platform_de
if (ret < 0)
goto err1;
/* DR has been stopped in usb_gadget_unregister_driver() */
remove_proc_file();
-@@ -2570,7 +2580,7 @@ static int fsl_udc_remove(struct platfor
- dma_pool_destroy(udc_controller->td_pool);
- free_irq(udc_controller->irq, udc_controller);
- iounmap(dr_regs);
-- if (pdata->operating_mode == FSL_USB2_DR_DEVICE)
-+ if (res && (pdata->operating_mode == FSL_USB2_DR_DEVICE))
- release_mem_region(res->start, resource_size(res));
-
- /* free udc --wait for the release() finished */
--- a/drivers/usb/gadget/udc/fsl_usb2_udc.h
+++ b/drivers/usb/gadget/udc/fsl_usb2_udc.h
@@ -20,6 +20,10 @@
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -1855,14 +1855,17 @@ static int finish_td(struct xhci_hcd *xh
+@@ -1859,14 +1859,17 @@ static int finish_td(struct xhci_hcd *xh
union xhci_trb *event_trb, struct xhci_transfer_event *event,
struct xhci_virt_ep *ep, int *status, bool skip)
{
u32 trb_comp_code;
slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags));
-@@ -1888,13 +1891,29 @@ static int finish_td(struct xhci_hcd *xh
+@@ -1892,13 +1895,29 @@ static int finish_td(struct xhci_hcd *xh
if (trb_comp_code == COMP_STALL ||
xhci_requires_manual_halt_cleanup(xhci, ep_ctx,
trb_comp_code)) {
while (ep_ring->dequeue != td->last_trb)
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -1609,14 +1609,38 @@ int xhci_urb_dequeue(struct usb_hcd *hcd
+@@ -1619,14 +1619,38 @@ int xhci_urb_dequeue(struct usb_hcd *hcd
ret = -ENOMEM;
goto done;
}
#define BCSR5_INT_USB (0x02)
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
-@@ -362,6 +362,7 @@ struct usb_bus {
+@@ -360,6 +360,7 @@ struct usb_bus {
* for control transfers?
*/
u8 otg_port; /* 0, or number of OTG/HNP port */