Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe990cea authored by Felipe Balbi's avatar Felipe Balbi
Browse files

usb: dwc3: gadget: simplify queueing of isoc transfers



After all the previous changes, it's now a lot clearer how isoc
transfers should be managed. We don't need to try to End Transfers
from ep_queue since that's already done by cleanup_requests.

Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 4d588a14
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -1322,24 +1322,18 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
	 * errors which will force us issue EndTransfer command.
	 */
	if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
		if (!(dep->flags & DWC3_EP_PENDING_REQUEST) &&
				!(dep->flags & DWC3_EP_TRANSFER_STARTED))
			return 0;

		if ((dep->flags & DWC3_EP_PENDING_REQUEST)) {
			if (dep->flags & DWC3_EP_TRANSFER_STARTED) {
				dwc3_stop_active_transfer(dep, true);
				dep->flags = DWC3_EP_ENABLED;
			} else {
			if (!(dep->flags & DWC3_EP_TRANSFER_STARTED)) {
				__dwc3_gadget_start_isoc(dep);
				dep->flags &= ~DWC3_EP_PENDING_REQUEST;
			}
				return 0;
			}

		if (dep->flags & DWC3_EP_TRANSFER_STARTED)
			goto out;

		return 0;
		}
	}

out:
	return __dwc3_gadget_kick_transfer(dep);
}