USB Host Controller
- HCI(Host Controller Interface)
- OHCI(Open Host Controller Interface)
- UHCI(Universal Host Controller Interface)
- EHCI(Enhanced Host Controller Interface)
- OHCI FireWire drivers
- supports USB 1.1 (full and low speeds) only
- If a computer provides non-x86 USB 1.1, or x86 USB 1.1 without an Intel or VIA chipset, it probably uses OHCI (Compaq, Microsoft and National Semiconductor)
- USB Core/HCD(Host Controller Driver)/URB(USB Request Block)
- <kernel src>/include/linux/usb.h
- struct usb_device(kernel's representation of a USB device)
- struct device dev;
- struct usb_interface(what usb device drivers talk to)
- struct device dev; /* interface specific device info */
- struct usb_class_driver(a USB driver that wants to use the USB major number)
- const struct file_operations *fops;
- struct urb
- int status;
- unsigned int transfer_flags;
- URB_NO_TRANSFER_DMA_MAP: urb->transfer_dma are valid on submit
- URB_NO_SETUP_DMA_MAP: urb->setup_dma are valid on submit
- int interval; (isochronous and interrupt urbs)
- Urb polling interval
- For lowSpeed and fullSpeed devices, the interval unit is frames(ms)
- For hiSpeed devices, the interval unit is microframes(1/8 ms)
- usb_complete_t complete
- Completion handler called when the transfer is complete
- usb_fill_int_urb
- usb_fill_bulk_urb
- usb_fill_control_urb
- usb_set_intfdata
- save data private to the driver to struct usb_interface.device.driver_data
- usb_get_intfdata
- interface_to_usbdev
- container_of(intf->dev.parent, struct usb_device, dev)
- struct usb_device(kernel's representation of a USB device)
- OHCI HCD
- <kernel src>/drivers/usb/host/ohci.h
- hcd_to_ohci
- ohci_to_hcd
- struct ohci_hcd
- the hcd_priv of usb_hcd
page_revision: 58, last_edited: 1237800602|%e %b %Y, %H:%M %Z (%O ago)





