linux/drivers/usb/dwc2
Vardan Mikayelyan 5321922cb6 usb: dwc2: gadget: Add OUTTKNEPDIS and NAKINTRPT handlers
NAKINTRPT interrupt is starting point for isoc-in transfer,
synchronization done with first in token received from host,
core asserts this interrupt when responds with 0 length data
to in token, received from host.

The first IN token is asynchronous for device - device does not
know when first one token will arrive from host. On first token
arrival HW generates 2 interrupts: 'in token received while FIFO
empty' and 'NAK'. NAK interrupt for ISOC in means that token has
arrived and ZLP was sent in response to that as there was no data
in FIFO. SW is basing on this interrupt to obtain frame in which
token has come and then based on the interval calculates next
frame for transfer.

OUTTKNEPDIS interrupt is starting point for isoc-out transfer,
synchronization done with first out token received from host
while corresponding ep is disabled.

For OUTs the reason is same - device does not know initial frame
in which out token will come. For this HW generates OUTTKNEPDIS
- out token is received while EP is disabled. Upon getting this
interrupt SW starts calculation for next transfer frame.

Tested-by: John Keeping <john@metanate.com>
Signed-off-by: Vardan Mikayelyan <mvardan@synopsys.com>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
2016-06-21 10:49:54 +03:00
..
core_intr.c usb: dwc2: host: Clear interrupts before handling them 2015-12-15 09:12:41 -06:00
core.c usb: dwc2: Move host-specific core functions into hcd.c 2016-03-04 15:14:46 +02:00
core.h usb: dwc2: gadget: Corrected interval calculation 2016-06-21 10:49:29 +03:00
debug.h usb: dwc2: move debugfs code to a separate file 2015-04-29 15:18:25 -05:00
debugfs.c usb: dwc2: Use platform endianness when accessing registers 2015-09-27 10:54:31 -05:00
gadget.c usb: dwc2: gadget: Add OUTTKNEPDIS and NAKINTRPT handlers 2016-06-21 10:49:54 +03:00
hcd_ddma.c usb: dwc2: Fix issues in dwc2_complete_non_isoc_xfer_ddma() 2016-03-04 15:14:48 +02:00
hcd_intr.c usb: dwc2: host: If using uframe scheduler, end splits better 2016-03-04 15:14:45 +02:00
hcd_queue.c usb: dwc2: Fixed SOF interrupt enabling/disabling 2016-04-28 09:41:26 +03:00
hcd.c usb: dwc2: host: Setting qtd to NULL after freeing it 2016-04-28 09:41:12 +03:00
hcd.h usb: dwc2: host: Setting qtd to NULL after freeing it 2016-04-28 09:41:12 +03:00
hw.h usb: dwc2: Add missing register field definitions 2016-06-21 10:48:22 +03:00
Kconfig usb: dwc2: USB_DWC2 should depend on HAS_DMA 2016-02-20 20:23:02 -08:00
Makefile usb: dwc2: remove dwc2_platform.ko 2015-04-29 15:20:11 -05:00
pci.c usb: dwc2: pci: Add device mode to the dwc2-pci driver 2015-03-11 15:08:17 -05:00
platform.c usb: dwc2: Proper cleanup on dr_mode failure 2016-04-28 09:41:34 +03:00