64 byte EP0 OUT data transfer issue on Chipidea highspeed dual role controller

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

 



I am developing a custom USB device on a iMX6q platform (Wandboard)
Chipidea HDRC (highspeed dual role controller). The HID interface
consists of a single Interrupt IN ep and ep0. It is required to send
HID reports from Host to Gadget over ep0 (with set_report cmd on
hidraw interface) in OUT direction. The size of each HID report is 64
bytes.

The Chipidea HDRC is unable to receive/ process the 64 bytes of data
over ep0 (OUT). The setup stage is fine. No UDC interrupt is raised by
controller to indicate completion of transaction. The same data
transfer works fine for <64 bytes (63, 63 etc) and >64 bytes (65, 66
etc) where the transfers are split as 64+n. Analyzer logs attached.

1. Is there an issue with Chipidea HDRC receiving wMaxPacketSize (i.e.
64 byte) aligned data transfers on ep0 in OUT direction?
2. Anything that needs to be configured/ added in descriptor or source
to have completion interrupt hit on 64 bytes data transfer on ep0 OUT?

THank you!!
  File C:\Program Files (x86)\Lecroy\USBTracer\data.usb.
  From Packet #33198 to Packet #38355.

Packet#
_______|_______________________________________________________________________
Packet(33198) Dir(-->) H(S) SETUP(0xB4) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(8) 
_______| Time Stamp(00001.3535 6645) 
_______|_______________________________________________________________________
Packet(33199) Dir(-->) H(S) DATA0(0xC3) Data(8 bytes) CRC16(0xB504) Pkt Len(16) 
_______| Time Stamp(00001.3535 6669) 
_______|_______________________________________________________________________
Packet(33200) Dir(<--) H(S) ACK(0x4B) Pkt Len(6) Time Stamp(00001.3535 6705) 
_______|_______________________________________________________________________
Packet(38351) Dir(-->) H(S) PING(0x2D) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(10) 
_______| Time Stamp(00001.3663 3101) 
_______|_______________________________________________________________________
Packet(38352) Dir(<--) H(S) ACK(0x4B) Pkt Len(8) Time Stamp(00001.3663 3129) 
_______|_______________________________________________________________________
Packet(38353) Dir(-->) H(S) OUT(0x87) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(10) 
_______| Time Stamp(00001.3663 3275) 
_______|_______________________________________________________________________
Packet(38354) Dir(-->) H(S) DATA1(0xD2) Data(64 bytes) CRC16(0x9A52) Pkt Len(74) 
_______| Time Stamp(00001.3663 3299) 
_______|_______________________________________________________________________
Packet(38355) Dir(<--) H(S) NYET(0x69) Pkt Len(8) Time Stamp(00001.3663 3391) 
_______|_______________________________________________________________________
  File C:\Program Files (x86)\Lecroy\USBTracer\data.usb.
  From Packet #29969 to Packet #87486.

Packet#
_______|_______________________________________________________________________
Packet(29969) Dir(-->) H(S) SETUP(0xB4) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(8) 
_______| Time Stamp(00001.0957 5739) 
_______|_______________________________________________________________________
Packet(29970) Dir(-->) H(S) DATA0(0xC3) Data(8 bytes) CRC16(0x3101) Pkt Len(16) 
_______| Time Stamp(00001.0957 5763) 
_______|_______________________________________________________________________
Packet(29971) Dir(<--) H(S) ACK(0x4B) Pkt Len(8) Time Stamp(00001.0957 5797) 
_______|_______________________________________________________________________
Packet(35124) Dir(-->) H(S) PING(0x2D) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(8) 
_______| Time Stamp(00001.1085 2569) 
_______|_______________________________________________________________________
Packet(35125) Dir(<--) H(S) ACK(0x4B) Pkt Len(6) Time Stamp(00001.1085 2597) 
_______|_______________________________________________________________________
Packet(35126) Dir(-->) H(S) OUT(0x87) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(8) 
_______| Time Stamp(00001.1085 2729) 
_______|_______________________________________________________________________
Packet(35127) Dir(-->) H(S) DATA1(0xD2) Data(62 bytes) CRC16(0xADB3) Pkt Len(70) 
_______| Time Stamp(00001.1085 2753) 
_______|_______________________________________________________________________
Packet(35128) Dir(<--) H(S) NYET(0x69) Pkt Len(6) Time Stamp(00001.1085 2843) 
_______|_______________________________________________________________________
Packet(87484) Dir(-->) H(S) IN(0x96) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(10) 
_______| Time Stamp(00001.2386 3931) 
_______|_______________________________________________________________________
Packet(87485) Dir(<--) H(S) DATA1(0xD2) Data(0 bytes) CRC16(0x0000) Pkt Len(10) 
_______| Time Stamp(00001.2386 3959) 
_______|_______________________________________________________________________
Packet(87486) Dir(-->) H(S) ACK(0x4B) Pkt Len(8) Time Stamp(00001.2386 3987) 
_______|_______________________________________________________________________
  File C:\Program Files (x86)\Lecroy\USBTracer\data.usb.
  From Packet #37091 to Packet #87527.

Packet#
_______|_______________________________________________________________________
Packet(37091) Dir(-->) H(S) SETUP(0xB4) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(8) 
_______| Time Stamp(00001.3844 5502) 
_______|_______________________________________________________________________
Packet(37092) Dir(-->) H(S) DATA0(0xC3) Data(8 bytes) CRC16(0x350D) Pkt Len(16) 
_______| Time Stamp(00001.3844 5526) 
_______|_______________________________________________________________________
Packet(37093) Dir(<--) H(S) ACK(0x4B) Pkt Len(8) Time Stamp(00001.3844 5562) 
_______|_______________________________________________________________________
Packet(42250) Dir(-->) H(S) PING(0x2D) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(10) 
_______| Time Stamp(00001.3972 2419) 
_______|_______________________________________________________________________
Packet(42251) Dir(<--) H(S) ACK(0x4B) Pkt Len(8) Time Stamp(00001.3972 2447) 
_______|_______________________________________________________________________
Packet(42252) Dir(-->) H(S) OUT(0x87) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(10) 
_______| Time Stamp(00001.3972 2591) 
_______|_______________________________________________________________________
Packet(42253) Dir(-->) H(S) DATA1(0xD2) Data(64 bytes) CRC16(0x9A52) Pkt Len(74) 
_______| Time Stamp(00001.3972 2615) 
_______|_______________________________________________________________________
Packet(42254) Dir(<--) H(S) NYET(0x69) Pkt Len(8) Time Stamp(00001.3972 2707) 
_______|_______________________________________________________________________
Packet(42255) Dir(-->) H(S) PING(0x2D) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(10) 
_______| Time Stamp(00001.3972 2859) 
_______|_______________________________________________________________________
Packet(42256) Dir(<--) H(S) ACK(0x4B) Pkt Len(8) Time Stamp(00001.3972 2887) 
_______|_______________________________________________________________________
Packet(42257) Dir(-->) H(S) OUT(0x87) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(10) 
_______| Time Stamp(00001.3972 2957) 
_______|_______________________________________________________________________
Packet(42258) Dir(-->) H(S) DATA0(0xC3) Data(1 byte) CRC16(0x01F1) Pkt Len(10) 
_______| Time Stamp(00001.3972 2981) 
_______|_______________________________________________________________________
Packet(42259) Dir(<--) H(S) NYET(0x69) Pkt Len(8) Time Stamp(00001.3972 3011) 
_______|_______________________________________________________________________
Packet(87527) Dir(-->) H(S) IN(0x96) ADDR(2) ENDP(0) CRC5(0x15) Pkt Len(8) 
_______| Time Stamp(00001.5097 1195) 
_______|_______________________________________________________________________

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

  Powered by Linux