| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
ok mpi@
|
|
|
|
| |
ok mpi@
|
| |
|
|
|
|
|
|
|
|
|
| |
Use this helper to calculate the Transfer Burst Count (TBC) and Transfer
Last Burst Packet Count (TLBPC) required for isochronous support.
Note that SS companion descriptors are still not read.
While here print the ETE and IST values in debug mode.
|
|
|
|
|
|
|
|
|
| |
This is just a step forward which allows further progress to happen in-tree.
The isochronous code path remains disabled for now. Playing audio over
xhci(4) does not work properly yet, and I haven't even tested video input.
Based on a work-in-progress diff by mpi@ from 2015.
ok mpi@
|
|
|
|
| |
maintain a list of possibly submitted commands.
|
|
|
|
|
|
|
|
|
|
| |
Because our USB stack wants the aborted xfer to be removed from the
pipe during abort(), we have to sleep in the abort function.
Regarding the xHCI process, when a TD is being aborted, we simply stop
the endpoint and then move the dequeue pointer past its last TRB. This
is fairly simple for the moment since only one xfer can be pending on a
given pipe.
|
|
|
|
|
|
|
|
|
|
| |
4.11.2.4 instead of using one TRB per packet. Also make sure that
it is not greater than 31.
While here be paranoid about xfer buffer crossing a 64k boundary
and use a supplementary TRB in such case.
Fix a problem with uplcom(4) on Intel xHCI reported by jasper@.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since xhci(4) does not allocate memory for its rings in interrupt
context, it has no use for the free lists offered by the USB memory
allocator.
Using bus_dmamem_alloc(9) and friends also allows us to respect the
boundary requirement for the various structures specified in Table 54.
While here make use of defines for every alignment and boundary
requirements which are different than a page size.
|
|
|
|
|
| |
dequeue pointer past the last enqueued TRB and let xhci_xfer_done()
properly accounts free TRBs.
|
|
|
|
|
| |
This code is violating various layers of abstraction, just like ehci(4)
does. Transaction translators need a bit more love.
|
|
|
|
|
| |
error. Makes Intel Series 7 controllers happy and no longer report an
illegal context state transition when detaching devices.
|
|
|
|
|
| |
time payload. Super speed companion descriptor are still not used but
at least we can properly initialize super speed interrupt pipes.
|
|
|
|
|
|
| |
instead of connected to ehci.
ok mpi@
|
|
This driver does not handle isochronous endpoint (yet) and has no logical
TD representation. Each transfer is linked to the raw TRB of its related
endpoint.
Most of the transfer error completion codes are not handled, even with all
the cheese provided by miod@ I couldn't find a proper way to reset an
endpoint asynchronously when a device babbles. Or maybe it was the wine?
Anyway this will come soon.
In general the endpoint configuration and reset code is really crude and
requires some love, but our stack should be fixed to properly open only
once the default pipe of every new USB device first.
This means this driver wont work as it is, our stack needs other changes
first.
Suspend/resume works but ports are not suspended for the moment.
But even with these problems, interrupt devices: ukbd(4), ums(4) and
sensors like ugold(4) work properly and USB 3.0 umass(4) devices give
me a reasonnable read/write speed.
Timeouts to cancel USB transfers are not enabled *on purpose*, to be able
to track down potential timing issues.
I'm committing now so that others can help fixing my bugs (8
All this work has been done on an ExpressCard with a NEC xHCI 0.96, other
implementations/versions might trigger more bugs :)
|