#
feb20a89 |
| 29-Apr-2014 |
mpi <mpi@openbsd.org> |
Get rid of the per-softc freelist of transfer descriptors and use a per-driver pool(9) instead.
With inputs from mikeb@
|
#
e89fd846 |
| 07-Apr-2014 |
mpi <mpi@openbsd.org> |
Use the `use_polling' hack to make sure usb_delay_ms() will not call tsleep(9) on resume. deraadt@ pointed that this not needed for powerdown since `cold' is set.
Another approach would be to call
Use the `use_polling' hack to make sure usb_delay_ms() will not call tsleep(9) on resume. deraadt@ pointed that this not needed for powerdown since `cold' is set.
Another approach would be to call delay() directly in the reset functions, but let stay coherent with the other HC drivers.
show more ...
|
#
f501d196 |
| 03-Apr-2014 |
mpi <mpi@openbsd.org> |
XHCI -> xHCI to be consistent with device names.
|
#
c07fdf00 |
| 28-Mar-2014 |
mpi <mpi@openbsd.org> |
Do not declare a struct as const if we write to it, fix build on sparc64 reported by brad@.
|
#
d2068140 |
| 28-Mar-2014 |
mpi <mpi@openbsd.org> |
If a command is submitted when the hardware is already gone, it will obviously time out. That is what happen when pipes are closed after unplugging an xhci(4) express card for example. In such case
If a command is submitted when the hardware is already gone, it will obviously time out. That is what happen when pipes are closed after unplugging an xhci(4) express card for example. In such case, make sure the command TRB is reset.
show more ...
|
#
7eb220a6 |
| 25-Mar-2014 |
mpi <mpi@openbsd.org> |
Instead of matching root hubs with a custom address, that only works because USB_START_ADDR is defined to 0 and the softc is M_ZERO'd, assume that root hubs are the only devices with a depth of 0.
R
Instead of matching root hubs with a custom address, that only works because USB_START_ADDR is defined to 0 and the softc is M_ZERO'd, assume that root hubs are the only devices with a depth of 0.
Root hubs can now happily be detached and reattached.
show more ...
|
#
8b235456 |
| 25-Mar-2014 |
mpi <mpi@openbsd.org> |
Upon resume do a full reset of the HC, including the command and event rings, and rewrite all the addresses in the registers.
While here don't keep a copy of our usb(4) child device, autoconf(9) kno
Upon resume do a full reset of the HC, including the command and event rings, and rewrite all the addresses in the registers.
While here don't keep a copy of our usb(4) child device, autoconf(9) knows how to reach our children.
show more ...
|
#
e5bba15c |
| 18-Mar-2014 |
mpi <mpi@openbsd.org> |
Properly clear and free the endpoint associated to a pipe. Do not forget to update the Endpoint Context with the last valid endpoint and free the device resources, including its slot, when the defau
Properly clear and free the endpoint associated to a pipe. Do not forget to update the Endpoint Context with the last valid endpoint and free the device resources, including its slot, when the default pipe is closed.
Device addresses can now be reused and I should be done with descriptor leaks.
show more ...
|
#
4d2cc942 |
| 12-Mar-2014 |
mpi <mpi@openbsd.org> |
If a device is babbling do a full reset of the associated endpoint before telling the stack/driver that the responsible transfer is done.
Since the request sequence requires, in the present form, to
If a device is babbling do a full reset of the associated endpoint before telling the stack/driver that the responsible transfer is done.
Since the request sequence requires, in the present form, to submit two commands from the interrupt handler, modify the command routine to be able to submit asynchronous commands.
I can now use my crappy urtwn(4) over xhci(4).
While here convert some #if -> #ifdef, pointed out by brad@.
show more ...
|
#
6cb98821 |
| 08-Mar-2014 |
mpi <mpi@openbsd.org> |
Dumb xhci(4) implementation.
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 th
Dumb xhci(4) implementation.
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 :)
show more ...
|