[PATCH] ehci: add tt_usecs
This adds the field tt_usecs to ehci_qh and ehci_iso_stream, and sets it appropriately when setting them up as periodic endpoints. It records the transation translator's think_time (added in last patch) plus the downstream (i.e. low or full speed) bustime of the transfer associated with each interrupt or iso frame, as calculated by usb_calc_bus_time. Signed-off-by: Dan Streetman <ddstreet@ieee.org> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
e09711aef4
commit
d0384200f6
|
@ -677,6 +677,9 @@ qh_make (
|
|||
goto done;
|
||||
}
|
||||
} else {
|
||||
struct usb_tt *tt = urb->dev->tt;
|
||||
int think_time;
|
||||
|
||||
/* gap is f(FS/LS transfer times) */
|
||||
qh->gap_uf = 1 + usb_calc_bus_time (urb->dev->speed,
|
||||
is_input, 0, maxp) / (125 * 1000);
|
||||
|
@ -690,6 +693,10 @@ qh_make (
|
|||
qh->c_usecs = HS_USECS (0);
|
||||
}
|
||||
|
||||
think_time = tt ? tt->think_time : 0;
|
||||
qh->tt_usecs = NS_TO_US (think_time +
|
||||
usb_calc_bus_time (urb->dev->speed,
|
||||
is_input, 0, max_packet (maxp)));
|
||||
qh->period = urb->interval;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -700,6 +700,7 @@ iso_stream_init (
|
|||
|
||||
} else {
|
||||
u32 addr;
|
||||
int think_time;
|
||||
|
||||
addr = dev->ttport << 24;
|
||||
if (!ehci_is_TDI(ehci)
|
||||
|
@ -709,6 +710,9 @@ iso_stream_init (
|
|||
addr |= epnum << 8;
|
||||
addr |= dev->devnum;
|
||||
stream->usecs = HS_USECS_ISO (maxp);
|
||||
think_time = dev->tt ? dev->tt->think_time : 0;
|
||||
stream->tt_usecs = NS_TO_US (think_time + usb_calc_bus_time (
|
||||
dev->speed, is_input, 1, maxp));
|
||||
if (is_input) {
|
||||
u32 tmp;
|
||||
|
||||
|
|
|
@ -421,6 +421,7 @@ struct ehci_qh {
|
|||
u8 usecs; /* intr bandwidth */
|
||||
u8 gap_uf; /* uframes split/csplit gap */
|
||||
u8 c_usecs; /* ... split completion bw */
|
||||
u16 tt_usecs; /* tt downstream bandwidth */
|
||||
unsigned short period; /* polling interval */
|
||||
unsigned short start; /* where polling starts */
|
||||
#define NO_FRAME ((unsigned short)~0) /* pick new start */
|
||||
|
@ -479,6 +480,7 @@ struct ehci_iso_stream {
|
|||
*/
|
||||
u8 interval;
|
||||
u8 usecs, c_usecs;
|
||||
u16 tt_usecs;
|
||||
u16 maxp;
|
||||
u16 raw_mask;
|
||||
unsigned bandwidth;
|
||||
|
|
Loading…
Reference in New Issue