summaryrefslogtreecommitdiffstats
path: root/doc/README.generic_usb_ohci
blob: 017c69ab07904086cd0ab7268423dc9ddb1e5198 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Notes on the the generic USB-OHCI driver
========================================

This driver (drivers/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 LITTLEENDIAN #define determines if the 'swap_16' and 'swap_32'
macros do byte swapping or not. But some cpus OHCI-controllers such as
ppc4xx and mpc5xxx operate in little endian mode, so some extra ifdefs
were necessary to make this work.