mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
UPSTREAM: usb: dwc3: gadget: add a per-endpoint request queue lock
This will allow us to process several endpoints at a
time by making sure that we lock only shared
resources.
Change-Id: I87b6ffd1db1fbbdaeed30271b984918b5e0d9b6c
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit 74674cbf85)
This commit is contained in:
@@ -480,6 +480,7 @@ struct dwc3_event_buffer {
|
||||
* @endpoint: usb endpoint
|
||||
* @pending_list: list of pending requests for this endpoint
|
||||
* @started_list: list of started requests on this endpoint
|
||||
* @lock: spinlock for endpoint request queue traversal
|
||||
* @regs: pointer to first endpoint register
|
||||
* @trb_pool: array of transaction buffers
|
||||
* @trb_pool_dma: dma address of @trb_pool
|
||||
@@ -502,6 +503,7 @@ struct dwc3_ep {
|
||||
struct list_head pending_list;
|
||||
struct list_head started_list;
|
||||
|
||||
spinlock_t lock;
|
||||
void __iomem *regs;
|
||||
|
||||
struct dwc3_trb *trb_pool;
|
||||
|
||||
@@ -1849,6 +1849,7 @@ static int dwc3_gadget_init_hw_endpoints(struct dwc3 *dwc,
|
||||
(epnum & 1) ? "in" : "out");
|
||||
|
||||
dep->endpoint.name = dep->name;
|
||||
spin_lock_init(&dep->lock);
|
||||
|
||||
dwc3_trace(trace_dwc3_gadget, "initializing %s", dep->name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user