diff options
author | Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us> | 2016-07-17 08:30:42 -0700 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2016-09-12 22:36:55 +0200 |
commit | 993ad293597ac3e46574e2ccd074432824305a91 (patch) | |
tree | 06550379eea3d62814543bfebd70d4386a884532 /target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch | |
parent | d27bce8d28eb129af0abd9c80a7756301b7d588a (diff) | |
download | upstream-993ad293597ac3e46574e2ccd074432824305a91.tar.gz upstream-993ad293597ac3e46574e2ccd074432824305a91.tar.bz2 upstream-993ad293597ac3e46574e2ccd074432824305a91.zip |
kernel: Backport pending appended DTB handling patches
Backport patches from upstream Linux kernel which are making the
kernel stores the appended dtb not in the same resisters as defined in
the UHI specification, use a separate variable on MIPS.
Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
[some modifications]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
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 edb8fcf705..c03280149e 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 - |