Loading drivers/usb/dwc3/core.h +2 −0 Original line number Diff line number Diff line Loading @@ -722,6 +722,7 @@ struct dwc3_ep_events { * @desc: usb_endpoint_descriptor pointer * @dwc: pointer to DWC controller * @saved_state: ep state saved during hibernation * @missed_isoc_packets: counter for missed packets sent * @flags: endpoint flags (wedged, stalled, ...) * @number: endpoint number (1 - 15) * @type: set to bmAttributes & USB_ENDPOINT_XFERTYPE_MASK Loading Loading @@ -752,6 +753,7 @@ struct dwc3_ep { struct dwc3 *dwc; u32 saved_state; u32 missed_isoc_packets; unsigned flags; #define DWC3_EP_ENABLED BIT(0) #define DWC3_EP_STALL BIT(1) Loading drivers/usb/dwc3/debug_ipc.c +3 −2 Original line number Diff line number Diff line Loading @@ -149,10 +149,11 @@ void dwc3_dbg_dma_unmap(struct dwc3 *dwc, u8 ep_num, struct dwc3_request *req) req->trb->ctrl & DWC3_TRB_CTRL_HWO); } else { ipc_log_string(dwc->dwc_dma_ipc_log_ctxt, "%02X-%-3.3s %-25.25s 0x%pK 0x%lx %u 0x%lx %d", "%02X-%-3.3s %-25.25s 0x%pK 0x%lx %u 0x%lx %d %u", ep_num >> 1, ep_num & 1 ? "IN":"OUT", "UNMAP", &req->request, req->request.dma, req->request.length, req->trb_dma, req->trb->ctrl & DWC3_TRB_CTRL_HWO); req->trb_dma, req->trb->ctrl & DWC3_TRB_CTRL_HWO, req->request.actual); } } Loading drivers/usb/dwc3/gadget.c +23 −4 Original line number Diff line number Diff line Loading @@ -230,6 +230,10 @@ int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc, struct dwc3_ep *dep) && dwc3_is_usb31(dwc)) mult = 6; if ((dep->endpoint.maxburst > 6) && usb_endpoint_xfer_isoc(dep->endpoint.desc)) mult = 6; tmp = ((max_packet + mdwidth) * mult) + mdwidth; fifo_size = DIV_ROUND_UP(tmp, mdwidth); dep->fifo_depth = fifo_size; Loading Loading @@ -315,6 +319,12 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, dwc3_gadget_del_and_unmap_request(dep, req, status); if (usb_endpoint_xfer_isoc(dep->endpoint.desc) && (list_empty(&dep->started_list))) { dep->flags |= DWC3_EP_PENDING_REQUEST; dbg_event(dep->number, "STARTEDLISTEMPTY", 0); } spin_unlock(&dwc->lock); usb_gadget_giveback_request(&dep->endpoint, &req->request); spin_lock(&dwc->lock); Loading Loading @@ -1050,6 +1060,8 @@ static int dwc3_gadget_ep_disable(struct usb_ep *ep) spin_lock_irqsave(&dwc->lock, flags); ret = __dwc3_gadget_ep_disable(dep); dbg_event(dep->number, "DISABLE", ret); dbg_event(dep->number, "MISSEDISOCPKTS", dep->missed_isoc_packets); dep->missed_isoc_packets = 0; spin_unlock_irqrestore(&dwc->lock, flags); pm_runtime_mark_last_busy(dwc->sysdev); pm_runtime_put_sync_autosuspend(dwc->sysdev); Loading Loading @@ -1624,7 +1636,7 @@ static void __dwc3_gadget_start_isoc(struct dwc3_ep *dep) wraparound_bits += BIT(14); dep->frame_number = __dwc3_gadget_get_frame(dep->dwc) + 2 * dep->interval; max_t(u32, 16, 2 * dep->interval); /* align uf to ep interval */ dep->frame_number = (wraparound_bits | dep->frame_number) & Loading Loading @@ -1683,8 +1695,9 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) if ((dep->flags & DWC3_EP_PENDING_REQUEST)) { if (!(dep->flags & DWC3_EP_TRANSFER_STARTED)) { __dwc3_gadget_start_isoc(dep); return 0; dep->flags &= ~DWC3_EP_PENDING_REQUEST; } return 0; } } Loading Loading @@ -3177,12 +3190,18 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep, if (event->status & DEPEVT_STATUS_MISSED_ISOC) { status = -EXDEV; if (list_empty(&dep->started_list)) stop = true; dep->missed_isoc_packets++; dbg_event(dep->number, "MISSEDISOC", 0); } dwc3_gadget_ep_cleanup_completed_requests(dep, event, status); if (usb_endpoint_xfer_isoc(dep->endpoint.desc) && (list_empty(&dep->started_list))) { stop = true; dbg_event(dep->number, "STOPXFER", dep->frame_number); } if (stop) dwc3_stop_active_transfer(dwc, dep->number, true); /* Loading drivers/usb/gadget/function/uvc.h +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ extern unsigned int uvc_gadget_trace_param; * Driver specific constants */ #define UVC_NUM_REQUESTS 16 #define UVC_NUM_REQUESTS 64 #define UVC_MAX_REQUEST_SIZE 64 #define UVC_MAX_EVENTS 4 Loading Loading
drivers/usb/dwc3/core.h +2 −0 Original line number Diff line number Diff line Loading @@ -722,6 +722,7 @@ struct dwc3_ep_events { * @desc: usb_endpoint_descriptor pointer * @dwc: pointer to DWC controller * @saved_state: ep state saved during hibernation * @missed_isoc_packets: counter for missed packets sent * @flags: endpoint flags (wedged, stalled, ...) * @number: endpoint number (1 - 15) * @type: set to bmAttributes & USB_ENDPOINT_XFERTYPE_MASK Loading Loading @@ -752,6 +753,7 @@ struct dwc3_ep { struct dwc3 *dwc; u32 saved_state; u32 missed_isoc_packets; unsigned flags; #define DWC3_EP_ENABLED BIT(0) #define DWC3_EP_STALL BIT(1) Loading
drivers/usb/dwc3/debug_ipc.c +3 −2 Original line number Diff line number Diff line Loading @@ -149,10 +149,11 @@ void dwc3_dbg_dma_unmap(struct dwc3 *dwc, u8 ep_num, struct dwc3_request *req) req->trb->ctrl & DWC3_TRB_CTRL_HWO); } else { ipc_log_string(dwc->dwc_dma_ipc_log_ctxt, "%02X-%-3.3s %-25.25s 0x%pK 0x%lx %u 0x%lx %d", "%02X-%-3.3s %-25.25s 0x%pK 0x%lx %u 0x%lx %d %u", ep_num >> 1, ep_num & 1 ? "IN":"OUT", "UNMAP", &req->request, req->request.dma, req->request.length, req->trb_dma, req->trb->ctrl & DWC3_TRB_CTRL_HWO); req->trb_dma, req->trb->ctrl & DWC3_TRB_CTRL_HWO, req->request.actual); } } Loading
drivers/usb/dwc3/gadget.c +23 −4 Original line number Diff line number Diff line Loading @@ -230,6 +230,10 @@ int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc, struct dwc3_ep *dep) && dwc3_is_usb31(dwc)) mult = 6; if ((dep->endpoint.maxburst > 6) && usb_endpoint_xfer_isoc(dep->endpoint.desc)) mult = 6; tmp = ((max_packet + mdwidth) * mult) + mdwidth; fifo_size = DIV_ROUND_UP(tmp, mdwidth); dep->fifo_depth = fifo_size; Loading Loading @@ -315,6 +319,12 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, dwc3_gadget_del_and_unmap_request(dep, req, status); if (usb_endpoint_xfer_isoc(dep->endpoint.desc) && (list_empty(&dep->started_list))) { dep->flags |= DWC3_EP_PENDING_REQUEST; dbg_event(dep->number, "STARTEDLISTEMPTY", 0); } spin_unlock(&dwc->lock); usb_gadget_giveback_request(&dep->endpoint, &req->request); spin_lock(&dwc->lock); Loading Loading @@ -1050,6 +1060,8 @@ static int dwc3_gadget_ep_disable(struct usb_ep *ep) spin_lock_irqsave(&dwc->lock, flags); ret = __dwc3_gadget_ep_disable(dep); dbg_event(dep->number, "DISABLE", ret); dbg_event(dep->number, "MISSEDISOCPKTS", dep->missed_isoc_packets); dep->missed_isoc_packets = 0; spin_unlock_irqrestore(&dwc->lock, flags); pm_runtime_mark_last_busy(dwc->sysdev); pm_runtime_put_sync_autosuspend(dwc->sysdev); Loading Loading @@ -1624,7 +1636,7 @@ static void __dwc3_gadget_start_isoc(struct dwc3_ep *dep) wraparound_bits += BIT(14); dep->frame_number = __dwc3_gadget_get_frame(dep->dwc) + 2 * dep->interval; max_t(u32, 16, 2 * dep->interval); /* align uf to ep interval */ dep->frame_number = (wraparound_bits | dep->frame_number) & Loading Loading @@ -1683,8 +1695,9 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) if ((dep->flags & DWC3_EP_PENDING_REQUEST)) { if (!(dep->flags & DWC3_EP_TRANSFER_STARTED)) { __dwc3_gadget_start_isoc(dep); return 0; dep->flags &= ~DWC3_EP_PENDING_REQUEST; } return 0; } } Loading Loading @@ -3177,12 +3190,18 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep, if (event->status & DEPEVT_STATUS_MISSED_ISOC) { status = -EXDEV; if (list_empty(&dep->started_list)) stop = true; dep->missed_isoc_packets++; dbg_event(dep->number, "MISSEDISOC", 0); } dwc3_gadget_ep_cleanup_completed_requests(dep, event, status); if (usb_endpoint_xfer_isoc(dep->endpoint.desc) && (list_empty(&dep->started_list))) { stop = true; dbg_event(dep->number, "STOPXFER", dep->frame_number); } if (stop) dwc3_stop_active_transfer(dwc, dep->number, true); /* Loading
drivers/usb/gadget/function/uvc.h +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ extern unsigned int uvc_gadget_trace_param; * Driver specific constants */ #define UVC_NUM_REQUESTS 16 #define UVC_NUM_REQUESTS 64 #define UVC_MAX_REQUEST_SIZE 64 #define UVC_MAX_EVENTS 4 Loading