in the ehci driver, it uses:
Tdmaxpkt = 0x5000, /* max buffer for a Td */
a td has 5*4K pages giving the 20K above, but i think this only applies if the
first pointer is page aligned (page offset = 0) so all the pages can be filled
completely.
first pointer is page aligned (page offset = 0) so all the pages can be filled
completely.
The EHCI spec says this:
"The buffer pointer list in the qTD is long enough to support a maximum transfer size of 20K bytes. This case
occurs when all five buffer pointers are used and the first offset is zero. A qTD handles a 16Kbyte buffer
with any starting buffer alignment."
"The buffer pointer list in the qTD is long enough to support a maximum transfer size of 20K bytes. This case
occurs when all five buffer pointers are used and the first offset is zero. A qTD handles a 16Kbyte buffer
with any starting buffer alignment."
The buffer pointer isnt page aligned as far as i can see, so make Tdmaxpkt = 0x4000 instead?
--
cinap
cinap