README.generic_usb_ohci 1.41 KB
Notes on the the generic USB-OHCI driver
========================================

This driver (drivers/usb/usb_ohci.[ch]) is the result of the merge of
various existing OHCI drivers that were basically identical beside
cpu/board dependant initalization. This initalization has been moved
into cpu/board directories and are called via the hooks below.

Configuration options
----------------------

	CONFIG_USB_OHCI_NEW: enable the new OHCI driver

	CFG_USB_OHCI_BOARD_INIT: call the board dependant hooks:

		  - extern int usb_board_init(void);
		  - extern int usb_board_stop(void);
		  - extern int usb_cpu_init_fail(void);

	CFG_USB_OHCI_CPU_INIT: call the cpu dependant hooks:

		  - extern int usb_cpu_init(void);
		  - extern int usb_cpu_stop(void);
		  - extern int usb_cpu_init_fail(void);

	CFG_USB_OHCI_REGS_BASE: defines the base address of the OHCI
				registers

	CFG_USB_OHCI_SLOT_NAME: slot name

	CFG_USB_OHCI_MAX_ROOT_PORTS: maximal number of ports of the
				     root hub.


Endianness issues
------------------

The USB bus operates in little endian, but unfortunately there are
OHCI controllers that operate in big endian such as ppc4xx and
mpc5xxx. For these the config option

	CFG_OHCI_BE_CONTROLLER

needs to be defined.


PCI Controllers
----------------

You'll need to define

	CONFIG_PCI_OHCI

PCI Controllers need to do byte swapping on register accesses, so they
should to define:

	CFG_OHCI_SWAP_REG_ACCESS