Markus Klotzbuecher | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 1 | Notes on the the generic USB-OHCI driver |
| 2 | ======================================== |
| 3 | |
Marcel Ziswiler | 7817cb2 | 2007-12-30 03:30:46 +0100 | [diff] [blame] | 4 | This driver (drivers/usb/usb_ohci.[ch]) is the result of the merge of |
Markus Klotzbuecher | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 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 | fc43be4 | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 12 | CONFIG_USB_OHCI_NEW: enable the new OHCI driver |
Markus Klotzbuecher | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 13 | |
Markus Klotzbuecher | fc43be4 | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 14 | CFG_USB_OHCI_BOARD_INIT: call the board dependant hooks: |
Markus Klotzbuecher | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 15 | |
Markus Klotzbuecher | fc43be4 | 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 | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 19 | |
Markus Klotzbuecher | fc43be4 | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 20 | CFG_USB_OHCI_CPU_INIT: call the cpu dependant hooks: |
Markus Klotzbuecher | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 21 | |
Markus Klotzbuecher | fc43be4 | 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 | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 25 | |
Markus Klotzbuecher | fc43be4 | 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 | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 28 | |
Markus Klotzbuecher | fc43be4 | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 29 | CFG_USB_OHCI_SLOT_NAME: slot name |
Markus Klotzbuecher | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 30 | |
Markus Klotzbuecher | fc43be4 | 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 | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 33 | |
| 34 | |
| 35 | Endianness issues |
| 36 | ------------------ |
| 37 | |
Markus Klotzbuecher | fc43be4 | 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 |
Markus Klotzbuecher | 58b4857 | 2006-11-27 11:51:21 +0100 | [diff] [blame] | 41 | |
Markus Klotzbuecher | fc43be4 | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 42 | CFG_OHCI_BE_CONTROLLER |
| 43 | |
Wolfgang Denk | be5d72d | 2007-08-13 21:57:53 +0200 | [diff] [blame] | 44 | needs to be defined. |
Markus Klotzbuecher | fc43be4 | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 45 | |
| 46 | |
| 47 | PCI Controllers |
| 48 | ---------------- |
| 49 | |
| 50 | You'll need to define |
| 51 | |
| 52 | CONFIG_PCI_OHCI |
| 53 | |
Sergei Poselenov | 5a904e5 | 2008-05-27 11:35:02 +0200 | [diff] [blame] | 54 | If you have several USB PCI controllers, define |
| 55 | |
| 56 | CONFIG_PCI_OHCI_DEVNO: number of the OHCI device in PCI list |
| 57 | |
| 58 | If undefined, the first instance found in PCI space will be used. |
| 59 | |
Markus Klotzbuecher | fc43be4 | 2007-06-06 11:49:35 +0200 | [diff] [blame] | 60 | PCI Controllers need to do byte swapping on register accesses, so they |
| 61 | should to define: |
| 62 | |
| 63 | CFG_OHCI_SWAP_REG_ACCESS |