aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch
diff options
context:
space:
mode:
authorPavel Kubelun <be.dissent@gmail.com>2016-11-12 14:35:56 +0300
committerJohn Crispin <john@phrozen.org>2016-11-21 09:58:42 +0100
commit70434c3f948749690de24effbfd98f7a64e0991f (patch)
tree31de7f236a55c7649afcf2b7fea8d75ec4a5f3ed /target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch
parent6e65576f2d808513148bc8b6e399e62805c3fe03 (diff)
downloadupstream-70434c3f948749690de24effbfd98f7a64e0991f.tar.gz
upstream-70434c3f948749690de24effbfd98f7a64e0991f.tar.bz2
upstream-70434c3f948749690de24effbfd98f7a64e0991f.zip
ipq806x: switch to upstream usb driver and backport fixes
Also removing fifo-resize property drom DT as it has been removed from the driver. Signed-off-by: Pavel Kubelun <be.dissent@gmail.com>
Diffstat (limited to 'target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch')
-rw-r--r--target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch104
1 files changed, 104 insertions, 0 deletions
diff --git a/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch b/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch
new file mode 100644
index 0000000000..64d796cf38
--- /dev/null
+++ b/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch
@@ -0,0 +1,104 @@
+From 696c8b1282205caa5206264449f80ef756f14ef7 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <felipe.balbi@linux.intel.com>
+Date: Wed, 30 Mar 2016 09:37:03 +0300
+Subject: usb: dwc3: drop ev_buffs array
+
+we will be using a single event buffer and that
+renders ev_buffs array unnecessary. Let's remove it
+in favor of a single pointer to a single event
+buffer.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
+---
+ drivers/usb/dwc3/core.c | 13 ++++---------
+ drivers/usb/dwc3/core.h | 2 +-
+ drivers/usb/dwc3/gadget.c | 4 ++--
+ 3 files changed, 7 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
+index 9e5c57c7..05b7ec3 100644
+--- a/drivers/usb/dwc3/core.c
++++ b/drivers/usb/dwc3/core.c
+@@ -204,7 +204,7 @@ static void dwc3_free_event_buffers(struct dwc3 *dwc)
+ {
+ struct dwc3_event_buffer *evt;
+
+- evt = dwc->ev_buffs[0];
++ evt = dwc->ev_buf;
+ if (evt)
+ dwc3_free_one_event_buffer(dwc, evt);
+ }
+@@ -221,17 +221,12 @@ static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length)
+ {
+ struct dwc3_event_buffer *evt;
+
+- dwc->ev_buffs = devm_kzalloc(dwc->dev, sizeof(*dwc->ev_buffs),
+- GFP_KERNEL);
+- if (!dwc->ev_buffs)
+- return -ENOMEM;
+-
+ evt = dwc3_alloc_one_event_buffer(dwc, length);
+ if (IS_ERR(evt)) {
+ dev_err(dwc->dev, "can't allocate event buffer\n");
+ return PTR_ERR(evt);
+ }
+- dwc->ev_buffs[0] = evt;
++ dwc->ev_buf = evt;
+
+ return 0;
+ }
+@@ -246,7 +241,7 @@ static int dwc3_event_buffers_setup(struct dwc3 *dwc)
+ {
+ struct dwc3_event_buffer *evt;
+
+- evt = dwc->ev_buffs[0];
++ evt = dwc->ev_buf;
+ dwc3_trace(trace_dwc3_core,
+ "Event buf %p dma %08llx length %d\n",
+ evt->buf, (unsigned long long) evt->dma,
+@@ -269,7 +264,7 @@ static void dwc3_event_buffers_cleanup(struct dwc3 *dwc)
+ {
+ struct dwc3_event_buffer *evt;
+
+- evt = dwc->ev_buffs[0];
++ evt = dwc->ev_buf;
+
+ evt->lpos = 0;
+
+diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
+index be03999..df72234a 100644
+--- a/drivers/usb/dwc3/core.h
++++ b/drivers/usb/dwc3/core.h
+@@ -753,7 +753,7 @@ struct dwc3 {
+ struct platform_device *xhci;
+ struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM];
+
+- struct dwc3_event_buffer **ev_buffs;
++ struct dwc3_event_buffer *ev_buf;
+ struct dwc3_ep *eps[DWC3_ENDPOINTS_NUM];
+
+ struct usb_gadget gadget;
+diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
+index 5e6a495..96dfde0 100644
+--- a/drivers/usb/dwc3/gadget.c
++++ b/drivers/usb/dwc3/gadget.c
+@@ -2609,7 +2609,7 @@ static irqreturn_t dwc3_process_event_buf(struct dwc3 *dwc)
+ int left;
+ u32 reg;
+
+- evt = dwc->ev_buffs[0];
++ evt = dwc->ev_buf;
+ left = evt->count;
+
+ if (!(evt->flags & DWC3_EVENT_PENDING))
+@@ -2668,7 +2668,7 @@ static irqreturn_t dwc3_check_event_buf(struct dwc3 *dwc)
+ u32 count;
+ u32 reg;
+
+- evt = dwc->ev_buffs[0];
++ evt = dwc->ev_buf;
+
+ count = dwc3_readl(dwc->regs, DWC3_GEVNTCOUNT(0));
+ count &= DWC3_GEVNTCOUNT_MASK;
+--
+cgit v0.12