Contributed by pitrh on from the superspeed me, puffy! dept.
USB 3.0 support is coming to OpenBSD-current. In a series of commits commit dated March 8 2014 ending with this one, Martin Pieuchot (mpi@) added the beginnings of USB 3.0 support:
Module name: src Changes by: firstname.lastname@example.org 2014/03/08 07:34:12 Modified files: sys/conf : files sys/dev/pci : files.pci Added files: sys/dev/usb : xhci.c xhcireg.h xhcivar.h sys/dev/pci : xhci_pci.c Log message: 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 :)
You can help this effort by checking out USB 3.0 gear listed on the Hardware wanted page and see if you can't assist in getting some of those items into developers' hands. Of course, donations also help.
(Comments are closed)