====== Differences ====== This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
soc:2008:balajirrao:project_plan:start [2008/05/23 10:35] balajirrao |
soc:2008:balajirrao:project_plan:start [2008/06/13 03:30] (current) balajirrao |
||
---|---|---|---|
Line 19: | Line 19: | ||
=== USB Host controller support === | === USB Host controller support === | ||
- | An USB host controller is a device, mostly available as a PCI card which talks to USB devices connected to it using instructions from the USB protocol layer. Two commonly used variants of USB Host Controllers exist. They are UHCI (Universal Host Controller Interface) supporting Full Speed (12Mbps) and Low Speed (1.5 Mbps) devices and EHCI (Enhanced Host Controller Interface) in addition to Full Speed and Low Speed devices, supports devices operating at 480 Mbps called High Speed devices. | + | An USB host controller is a device, mostly available as a PCI card which talks to USB devices connected to it using instructions from the USB protocol layer. Two commonly used variants of USB Host Controllers exist. They are UHCI (Universal Host Controller Interface) supporting Full Speed (12Mbps) and Low Speed (1.5 Mbps) devices and EHCI (Enhanced Host Controller Interface) in addition to Full Speed and Low Speed devices, supports devices operating at 480 Mbps, called High Speed devices. |
=== Device Driver for a USB NIC === | === Device Driver for a USB NIC === | ||
I propose to follow the Linux Kernel model here - to split the device driver into a generic driver and a device specific mini driver. | I propose to follow the Linux Kernel model here - to split the device driver into a generic driver and a device specific mini driver. | ||
- | UCHI controller support will be done first. EHCI support is seen as a stretch goal. | + | UCHI controller support will be done first. EHCI support is seen as a later (stretch ?) goal. |
==== Milestones ==== | ==== Milestones ==== | ||
Line 36: | Line 36: | ||
Here's a rough timeline. | Here's a rough timeline. | ||
- | === Week 1, 2 & 3 === | + | === Week 1, 2 === |
- | * Complete the USB protocol implementation. Software interface between layers of the USB stack is now well defined. | + | * Write a PCI driver fpr UHCI controller. Write support for control and bulk urbs. |
- | === Week 4 & 5 === | + | === Week 3, 4=== |
- | * Add support for UHCI host controller. | + | * Write a driver for dm9601 usb ethernet adapter. Factor out generic USB networking code out of dm9601 and write a pegasus usbnet driver. |
- | === Week 6 & 7 === | + | === Week 5 & 6 === |
- | * Implement the generic USB NIC driver. Write a minidriver for dm9601 (Davicom USB Ethernet Adapter 9601). | + | * Clean up and sanitize the uhci source. This includes proper lifecycle management of urbs and correct error handling across all control paths. |
+ | === Week 7, 8 & 9 === | ||
+ | * Write a PCI driver for EHCI controller along with schedule management code. | ||
+ | |||
+ | === Week 10 and hence === | ||
+ | * Debugging, optimization etc. |