USB improvements under FreeBSD
Concerning the realisation of this project for USB function development I will need a board with USB Function support. I have access to an at91sam9261ek so my development will be based on this board. For the gsoc I will also need a starting project to allow me to become more familliar with the new usb stack internals, So as a part of the project I will also add support for the libusb v1.0 API through the already existing /usr/src/lib/libusb.
With all these elements I think we can cut this project into 5 different parts:
* Low-level driver that is just the driver that has access to the USB Function controller.
* The USB Function generic request that is the code that uses the low level code to handle the requests that are generic to all USB Function Class drivers.
* USB Class request. This code is dependent of each USB class and will handle USB specific requests.
The USB framework used in FreeBSD follows that scheme but suffers from a lack of documentation and could be optimised in some way:
* For the moment, all the generic requests are handled into the USB Function controller. This code could be moved into the USB stack. If we do this, all this code (about 500 600 lines) could be removed from each function controller to move on the usb stack.
* All the code corresponding to the PIO or to the clocks for a USB Function controller is present in the driver controller, but this code is not dependant of the specific controller but of a specific board. So this code should move in the board code.
* There is a lack for section 9 man pages on USB Function development. There is also a lack of man pages in section 4 on the different USB function driver.
TODO and Milestones
Concerning the realisation of this project for USB function development I will need a board with USB Function support. I have access to an at91sam9261ek so my development will be based on this board. For the gsoc I will also need a starting project to allow me to become more familliar with the new usb stack internals, So as a part of the project I will also add support for the libusb v1.0 API through the already existing /usr/src/lib/libusb.
With all these elements I think we can cut this project into 5 different parts:
* May 23 - June 15 : Finishing the port of at91sam9261ek board to FreeBSD.
* June 16 - June 30 : Adding support for the libusb v1.0 API through the already existing /usr/src/lib/libusb.
* July 1 - July 20 : Improving the USB Function subsystem.
* July 20 - August 10 : Writing some USB Function Class driver (like cdc ACM).
* August 10 - end of soc : Writing man pages in section 9 about USB Function framework and in section 4 for Atmel board and new class function driver.