]> asedeno.scripts.mit.edu Git - linux.git/commit
usb: dwc2: gadget: ISOC's starting flow improvement
authorMinas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Fri, 27 Jul 2018 10:48:45 +0000 (14:48 +0400)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Mon, 30 Jul 2018 07:39:18 +0000 (10:39 +0300)
commit4d4f1e79b800c80313280eec1af25a242a50dce5
tree403f17b27efa79c31617ddf6911aa1272fb5fe57
parentfe369e1826b3efae11012ad07d1713223c37ec5d
usb: dwc2: gadget: ISOC's starting flow improvement

To start ISOC transfers in handlers dwc2_gadget_handle_nak() and
dwc2_gadget_handle_out_token_ep_disabled() driver reads current frame
number, based on which, set target frame number to start first ISOC
transfer.

In case if system's high IRQ latency and multiple EP's asserted
interrupt in same frame, there are high probability that when reading
current frame number in EP's handlers, actual frame number can be
increased. As result for bInterval > 1, starting target frame
will be set wrongly and all ISOC packets will be dropped.

In patch "usb: dwc2: Change reading of current frame number flow"
reading of current frame number done ASAP in common interrupt handler.
This frame number stored in frame_number variable which used as
starting frame number for ISOC EP's in above mentioned handlers.

Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc2/gadget.c