Re: Query: DWC3: IOC bit settings in case of isoc transfer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/15/2012 7:45 PM, Pratyush Anand wrote:
Hi Balbi,


Currently in case of isoc, interrupt is programmed after each TRB_NUM/4
ie 8th TRB. A TRB is programmed against each submitted request from
gadget. If we do not want to limit the minimum number of necessary
request to be submitted from gadget then we must receive interrupt on
each TRB submission. There can be such situation with a gadget working
with ping-pong buffer.

Would it be fine if we implement something like following.

Any comment??



If a gadget does not want to receive interrupt after each request
completion then it may set no_interrupt flag.

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 86f3933..ccf92f3 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -740,8 +740,11 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
case USB_ENDPOINT_XFER_ISOC:
trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST;

- /* IOC every DWC3_TRB_NUM / 4 so we can refill */
- if (!(cur_slot % (DWC3_TRB_NUM / 4)))
+ /*
+ * FIXME: Forcing interrupt to be received at every req,
+ * untill gadget sets no_interrupt flag
+ */
+ if (!req->request.no_interrupt)
trb->ctrl |= DWC3_TRB_CTRL_IOC;
break;


Whats your opinion?

Regards
Pratyush

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux