Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 1 | Notes on the the generic USB-OHCI driver |
| 2 | ======================================== |
| 3 | |
| 4 | This driver (drivers/usb_ohci.[ch]) is the result of the merge of |
| 5 | various existing OHCI drivers that were basically identical beside |
| 6 | cpu/board dependant initalization. This initalization has been moved |
| 7 | into cpu/board directories and are called via the hooks below. |
| 8 | |
| 9 | Configuration options |
| 10 | ---------------------- |
| 11 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 12 | CONFIG_USB_OHCI_NEW: enable the new OHCI driver |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 13 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 14 | CFG_USB_OHCI_BOARD_INIT: call the board dependant hooks: |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 15 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 16 | - extern int usb_board_init(void); |
| 17 | - extern int usb_board_stop(void); |
| 18 | - extern int usb_cpu_init_fail(void); |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 19 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 20 | CFG_USB_OHCI_CPU_INIT: call the cpu dependant hooks: |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 21 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 22 | - extern int usb_cpu_init(void); |
| 23 | - extern int usb_cpu_stop(void); |
| 24 | - extern int usb_cpu_init_fail(void); |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 25 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 26 | CFG_USB_OHCI_REGS_BASE: defines the base address of the OHCI |
| 27 | registers |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 28 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 29 | CFG_USB_OHCI_SLOT_NAME: slot name |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 30 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 31 | CFG_USB_OHCI_MAX_ROOT_PORTS: maximal number of ports of the |
| 32 | root hub. |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 33 | |
| 34 | |
| 35 | Endianness issues |
| 36 | ------------------ |
| 37 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 38 | The USB bus operates in little endian, but unfortunately there are |
| 39 | OHCI controllers that operate in big endian such as ppc4xx and |
| 40 | mpc5xxx. For these the config option |
| 41 | |
| 42 | CFG_OHCI_BE_CONTROLLER |
| 43 | |
| 44 | needs to be defined. |
| 45 | |
| 46 | |
| 47 | PCI Controllers |
| 48 | ---------------- |
| 49 | |
| 50 | You'll need to define |
| 51 | |
| 52 | CONFIG_PCI_OHCI |
| 53 | |
| 54 | PCI Controllers need to do byte swapping on register accesses, so they |
| 55 | should to define: |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 56 | |
Markus Klotzbuecher | 18f5ccb | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 57 | CFG_OHCI_SWAP_REG_ACCESS |
Markus Klotzbuecher | 1131021 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 58 | |
| 59 | |
| 60 | |