diff options
Diffstat (limited to 'target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch')
-rw-r--r-- | target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch | 57 |
1 files changed, 24 insertions, 33 deletions
diff --git a/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch b/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch index edb8fcf..c032801 100644 --- a/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch +++ b/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch @@ -18,11 +18,9 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> drivers/usb/gadget/udc/net2280.h | 1 + 3 files changed, 34 insertions(+), 22 deletions(-) -diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig -index 7c28941..658b8da 100644 --- a/drivers/usb/gadget/udc/Kconfig +++ b/drivers/usb/gadget/udc/Kconfig -@@ -312,7 +312,7 @@ config USB_NET2272_DMA +@@ -298,7 +298,7 @@ config USB_NET2272_DMA If unsure, say "N" here. The driver works fine in PIO mode. config USB_NET2280 @@ -31,7 +29,7 @@ index 7c28941..658b8da 100644 depends on PCI help NetChip 2280 / 2282 is a PCI based USB peripheral controller which -@@ -322,6 +322,8 @@ config USB_NET2280 +@@ -308,6 +308,8 @@ config USB_NET2280 (for control transfers) and several endpoints with dedicated functions. @@ -40,11 +38,9 @@ index 7c28941..658b8da 100644 PLX 3380 / 3382 is a PCIe based USB peripheral controller which supports full, high speed USB 2.0 and super speed USB 3.0 data transfers. -diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c -index c894b94..614ab951 100644 --- a/drivers/usb/gadget/udc/net2280.c +++ b/drivers/usb/gadget/udc/net2280.c -@@ -211,7 +211,7 @@ net2280_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) +@@ -211,7 +211,7 @@ net2280_enable(struct usb_ep *_ep, const goto print_err; } @@ -53,7 +49,7 @@ index c894b94..614ab951 100644 if ((desc->bEndpointAddress & 0x0f) >= 0x0c) { ret = -EDOM; goto print_err; -@@ -245,7 +245,7 @@ net2280_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) +@@ -245,7 +245,7 @@ net2280_enable(struct usb_ep *_ep, const /* set type, direction, address; reset fifo counters */ writel(BIT(FIFO_FLUSH), &ep->regs->ep_stat); @@ -62,7 +58,7 @@ index c894b94..614ab951 100644 tmp = readl(&ep->cfg->ep_cfg); /* If USB ep number doesn't match hardware ep number */ if ((tmp & 0xf) != usb_endpoint_num(desc)) { -@@ -316,7 +316,7 @@ net2280_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) +@@ -316,7 +316,7 @@ net2280_enable(struct usb_ep *_ep, const BIT(CLEAR_NAK_OUT_PACKETS_MODE), &ep->regs->ep_rsp); } @@ -71,7 +67,7 @@ index c894b94..614ab951 100644 ep_clear_seqnum(ep); writel(tmp, &ep->cfg->ep_cfg); -@@ -527,7 +527,7 @@ static int net2280_disable(struct usb_ep *_ep) +@@ -527,7 +527,7 @@ static int net2280_disable(struct usb_ep spin_lock_irqsave(&ep->dev->lock, flags); nuke(ep); @@ -80,7 +76,7 @@ index c894b94..614ab951 100644 ep_reset_338x(ep->dev->regs, ep); else ep_reset_228x(ep->dev->regs, ep); -@@ -862,7 +862,7 @@ static void start_queue(struct net2280_ep *ep, u32 dmactl, u32 td_dma) +@@ -862,7 +862,7 @@ static void start_queue(struct net2280_e writel(readl(&dma->dmastat), &dma->dmastat); writel(td_dma, &dma->dmadesc); @@ -89,7 +85,7 @@ index c894b94..614ab951 100644 dmactl |= BIT(DMA_REQUEST_OUTSTANDING); writel(dmactl, &dma->dmactl); -@@ -1046,7 +1046,7 @@ net2280_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags) +@@ -1046,7 +1046,7 @@ net2280_queue(struct usb_ep *_ep, struct /* kickstart this i/o queue? */ if (list_empty(&ep->queue) && !ep->stopped && @@ -98,7 +94,7 @@ index c894b94..614ab951 100644 (readl(&ep->regs->ep_rsp) & BIT(CLEAR_ENDPOINT_HALT)))) { /* use DMA if the endpoint supports it, else pio */ -@@ -1169,7 +1169,7 @@ static void scan_dma_completions(struct net2280_ep *ep) +@@ -1169,7 +1169,7 @@ static void scan_dma_completions(struct break; } else if (!ep->is_in && (req->req.length % ep->ep.maxpacket) && @@ -107,7 +103,7 @@ index c894b94..614ab951 100644 tmp = readl(&ep->regs->ep_stat); /* AVOID TROUBLE HERE by not issuing short reads from -@@ -1367,7 +1367,7 @@ net2280_set_halt_and_wedge(struct usb_ep *_ep, int value, int wedged) +@@ -1367,7 +1367,7 @@ net2280_set_halt_and_wedge(struct usb_ep ep->wedged = 1; } else { clear_halt(ep); @@ -116,7 +112,7 @@ index c894b94..614ab951 100644 !list_empty(&ep->queue) && ep->td_dma) restart_dma(ep); ep->wedged = 0; -@@ -2394,7 +2394,7 @@ static int net2280_start(struct usb_gadget *_gadget, +@@ -2394,7 +2394,7 @@ static int net2280_start(struct usb_gadg */ net2280_led_active(dev, 1); @@ -125,7 +121,7 @@ index c894b94..614ab951 100644 defect7374_enable_data_eps_zero(dev); ep0_start(dev); -@@ -3063,7 +3063,7 @@ static void handle_stat0_irqs(struct net2280 *dev, u32 stat) +@@ -3063,7 +3063,7 @@ static void handle_stat0_irqs(struct net } ep->stopped = 0; dev->protocol_stall = 0; @@ -134,7 +130,7 @@ index c894b94..614ab951 100644 if (ep->dev->quirks & PLX_2280) tmp = BIT(FIFO_OVERFLOW) | BIT(FIFO_UNDERFLOW); -@@ -3090,7 +3090,7 @@ static void handle_stat0_irqs(struct net2280 *dev, u32 stat) +@@ -3090,7 +3090,7 @@ static void handle_stat0_irqs(struct net cpu_to_le32s(&u.raw[0]); cpu_to_le32s(&u.raw[1]); @@ -143,7 +139,7 @@ index c894b94..614ab951 100644 defect7374_workaround(dev, u.r); tmp = 0; -@@ -3173,7 +3173,7 @@ static void handle_stat0_irqs(struct net2280 *dev, u32 stat) +@@ -3173,7 +3173,7 @@ static void handle_stat0_irqs(struct net } else { ep_vdbg(dev, "%s clear halt\n", e->ep.name); clear_halt(e); @@ -152,7 +148,7 @@ index c894b94..614ab951 100644 !list_empty(&e->queue) && e->td_dma) restart_dma(e); } -@@ -3195,7 +3195,7 @@ static void handle_stat0_irqs(struct net2280 *dev, u32 stat) +@@ -3195,7 +3195,7 @@ static void handle_stat0_irqs(struct net if (e->ep.name == ep0name) goto do_stall; set_halt(e); @@ -179,7 +175,7 @@ index c894b94..614ab951 100644 u32 r_dmacount = readl(&dma->dmacount); if (!ep->is_in && (r_dmacount & 0x00FFFFFF) && (tmp & BIT(DMA_TRANSACTION_DONE_INTERRUPT))) -@@ -3468,7 +3468,7 @@ static irqreturn_t net2280_irq(int irq, void *_dev) +@@ -3468,7 +3468,7 @@ static irqreturn_t net2280_irq(int irq, /* control requests and PIO */ handle_stat0_irqs(dev, readl(&dev->regs->irqstat0)); @@ -188,7 +184,7 @@ index c894b94..614ab951 100644 /* re-enable interrupt to trigger any possible new interrupt */ u32 pciirqenb1 = readl(&dev->regs->pciirqenb1); writel(pciirqenb1 & 0x7FFFFFFF, &dev->regs->pciirqenb1); -@@ -3513,7 +3513,7 @@ static void net2280_remove(struct pci_dev *pdev) +@@ -3513,7 +3513,7 @@ static void net2280_remove(struct pci_de } if (dev->got_irq) free_irq(pdev->irq, dev); @@ -197,7 +193,7 @@ index c894b94..614ab951 100644 pci_disable_msi(pdev); if (dev->regs) iounmap(dev->regs); -@@ -3593,7 +3593,7 @@ static int net2280_probe(struct pci_dev *pdev, const struct pci_device_id *id) +@@ -3593,7 +3593,7 @@ static int net2280_probe(struct pci_dev dev->dep = (struct net2280_dep_regs __iomem *) (base + 0x0200); dev->epregs = (struct net2280_ep_regs __iomem *) (base + 0x0300); @@ -206,7 +202,7 @@ index c894b94..614ab951 100644 u32 fsmvalue; u32 usbstat; dev->usb_ext = (struct usb338x_usb_ext_regs __iomem *) -@@ -3637,7 +3637,7 @@ static int net2280_probe(struct pci_dev *pdev, const struct pci_device_id *id) +@@ -3637,7 +3637,7 @@ static int net2280_probe(struct pci_dev goto done; } @@ -215,8 +211,8 @@ index c894b94..614ab951 100644 if (pci_enable_msi(pdev)) ep_err(dev, "Failed to enable MSI mode\n"); -@@ -3755,10 +3755,19 @@ static const struct pci_device_id pci_ids[] = { { - .class = PCI_CLASS_SERIAL_USB_DEVICE, +@@ -3755,10 +3755,19 @@ static const struct pci_device_id pci_id + .class = ((PCI_CLASS_SERIAL_USB << 8) | 0xfe), .class_mask = ~0, .vendor = PCI_VENDOR_ID_PLX, + .device = 0x2380, @@ -235,8 +231,8 @@ index c894b94..614ab951 100644 + .driver_data = PLX_PCIE | PLX_SUPERSPEED, }, { - .class = PCI_CLASS_SERIAL_USB_DEVICE, -@@ -3767,7 +3776,7 @@ static const struct pci_device_id pci_ids[] = { { + .class = ((PCI_CLASS_SERIAL_USB << 8) | 0xfe), +@@ -3767,7 +3776,7 @@ static const struct pci_device_id pci_id .device = 0x3382, .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, @@ -245,11 +241,9 @@ index c894b94..614ab951 100644 }, { /* end: all zeroes */ } }; -diff --git a/drivers/usb/gadget/udc/net2280.h b/drivers/usb/gadget/udc/net2280.h -index 0d32052..2736a95 100644 --- a/drivers/usb/gadget/udc/net2280.h +++ b/drivers/usb/gadget/udc/net2280.h -@@ -47,6 +47,7 @@ set_idx_reg(struct net2280_regs __iomem *regs, u32 index, u32 value) +@@ -47,6 +47,7 @@ set_idx_reg(struct net2280_regs __iomem #define PLX_LEGACY BIT(0) #define PLX_2280 BIT(1) #define PLX_SUPERSPEED BIT(2) @@ -257,6 +251,3 @@ index 0d32052..2736a95 100644 #define REG_DIAG 0x0 #define RETRY_COUNTER 16 --- -1.9.1 - |