Hi,
For USB 3.0, sys/dev/usb/controller/xhci.c, the interval is set by:
switch (type) {
case UE_INTERRUPT:
if (fps_shift > 3)
fps_shift--;
temp |= XHCI_EPCTX_0_IVAL_SET(fps_shift);
break;
case UE_ISOCHRONOUS:
Add some prints to the kernel and print "fps_shift" in the UE_INTERRUPT
case. The value has unit 125 * (2**fps_shift) us.
The call is:
usb_interrupt_read(devh, 0x00000083, buf, 0x000002a, 1000);
BTW:
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0003 <INTERRUPT>
wMaxPacketSize = 0x002a
bInterval = 0x000a
^^^^ 10ms I think for FULL speed (XHCI will use 16ms interval)
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0004 <OUT>
bmAttributes = 0x0003 <INTERRUPT>
wMaxPacketSize = 0x0040
bInterval = 0x000a
^^^^ 10ms I think for FULL speed
bRefresh = 0x0000
bSynchAddress = 0x0000
So a round trip of 20ms is like expected. Maybe the EHCI driver will
schedule a bit differently.
If in the kernel, it is possible to override this value.
--HPS
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"