From 70434c3f948749690de24effbfd98f7a64e0991f Mon Sep 17 00:00:00 2001 From: Pavel Kubelun Date: Sat, 12 Nov 2016 14:35:56 +0300 Subject: 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 --- .../096-09-usb-dwc3-drop-ev_buffs-array.patch | 104 +++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch (limited to 'target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch') 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 0000000..64d796c --- /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 +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 +--- + 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 -- cgit v1.1