aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch
diff options
context:
space:
mode:
authorDaniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>2016-07-17 08:30:42 -0700
committerHauke Mehrtens <hauke@hauke-m.de>2016-09-12 22:36:55 +0200
commit993ad293597ac3e46574e2ccd074432824305a91 (patch)
tree06550379eea3d62814543bfebd70d4386a884532 /target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch
parentd27bce8d28eb129af0abd9c80a7756301b7d588a (diff)
downloadupstream-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.patch57
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
-