Hi Constantine, On 11/2/06, Constantine Kousoulos <wuwei@xxxxxxxxxxx> wrote:
First of all, in order for a usb device to work, we need a host controller. Linux has 3 host controller drivers (ohci, uhci, ehci). Does it use only one of them or all three depending the speed of the data transfer?
OHCI/UHCI are for full-speed host controllers. EHCI is for high-speed host controllers. The drivers are ohci_hcd, uhci_hcd, and ehci_hcd respectively.
Second, can the host controller talk directly to a usb device (eg flash memory) or it has to cooperate with an appropriate driver (eg mass-storage driver)?
Host controller driver only talks to the host controller hardware. It doesn't know or need to know on what device(s) is connected downstream. Yes, it is handled by USB mass-storage driver, usb-storage.
The point of all these is the following. In order to port linux's usb support for, let's say, mass storage devices to another system, what are the least needed parts for usb to work?
Have usbcore, a host controller driver, a mass storage driver (usb-storage). Since USB device disks are handled with SCSI emulation, you will require scsi_mod and sd_mod drivers. HTH, SK -- Shakthi Kannan http://www.shakthimaan.com -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/