Commit | Line | Data |
---|---|---|
550a7375 FB |
1 | # |
2 | # USB Dual Role (OTG-ready) Controller Drivers | |
3 | # for silicon based on Mentor Graphics INVENTRA designs | |
4 | # | |
5 | ||
6 | comment "Enable Host or Gadget support to see Inventra options" | |
7 | depends on !USB && USB_GADGET=n | |
8 | ||
9 | # (M)HDRC = (Multipoint) Highspeed Dual-Role Controller | |
10 | config USB_MUSB_HDRC | |
11 | depends on (USB || USB_GADGET) && HAVE_CLK | |
09fa14aa | 12 | depends on !SUPERH |
84e250ff | 13 | select NOP_USB_XCEIV if ARCH_DAVINCI |
550a7375 | 14 | select TWL4030_USB if MACH_OMAP_3430SDP |
e8e2ff46 | 15 | select NOP_USB_XCEIV if MACH_OMAP3EVM |
37daa925 | 16 | select USB_OTG_UTILS |
085ad406 | 17 | tristate 'Inventra Highspeed Dual Role Controller (TI, ADI, ...)' |
550a7375 FB |
18 | help |
19 | Say Y here if your system has a dual role high speed USB | |
20 | controller based on the Mentor Graphics silicon IP. Then | |
21 | configure options to match your silicon and the board | |
22 | it's being used with, including the USB peripheral role, | |
23 | or the USB host role, or both. | |
24 | ||
a227fd7d DB |
25 | Texas Instruments familiies using this IP include DaVinci |
26 | (35x, 644x ...), OMAP 243x, OMAP 3, and TUSB 6010. | |
550a7375 | 27 | |
085ad406 BW |
28 | Analog Devices parts using this IP include Blackfin BF54x, |
29 | BF525 and BF527. | |
30 | ||
550a7375 FB |
31 | If you do not know what this is, please say N. |
32 | ||
33 | To compile this driver as a module, choose M here; the | |
34 | module will be called "musb_hdrc". | |
35 | ||
36 | config USB_MUSB_SOC | |
37 | boolean | |
38 | depends on USB_MUSB_HDRC | |
39 | default y if ARCH_DAVINCI | |
40 | default y if ARCH_OMAP2430 | |
41 | default y if ARCH_OMAP34XX | |
085ad406 BW |
42 | default y if (BF54x && !BF544) |
43 | default y if (BF52x && !BF522 && !BF523) | |
550a7375 | 44 | |
a227fd7d | 45 | comment "DaVinci 35x and 644x USB support" |
550a7375 FB |
46 | depends on USB_MUSB_HDRC && ARCH_DAVINCI |
47 | ||
48 | comment "OMAP 243x high speed USB support" | |
49 | depends on USB_MUSB_HDRC && ARCH_OMAP2430 | |
50 | ||
51 | comment "OMAP 343x high speed USB support" | |
52 | depends on USB_MUSB_HDRC && ARCH_OMAP34XX | |
53 | ||
085ad406 | 54 | comment "Blackfin high speed USB Support" |
cd67435e | 55 | depends on USB_MUSB_HDRC && ((BF54x && !BF544) || (BF52x && !BF522 && !BF523)) |
085ad406 | 56 | |
550a7375 FB |
57 | config USB_TUSB6010 |
58 | boolean "TUSB 6010 support" | |
59 | depends on USB_MUSB_HDRC && !USB_MUSB_SOC | |
84e250ff | 60 | select NOP_USB_XCEIV |
550a7375 FB |
61 | default y |
62 | help | |
63 | The TUSB 6010 chip, from Texas Instruments, connects a discrete | |
64 | HDRC core using a 16-bit parallel bus (NOR flash style) or VLYNQ | |
65 | (a high speed serial link). It can use system-specific external | |
66 | DMA controllers. | |
67 | ||
68 | choice | |
69 | prompt "Driver Mode" | |
70 | depends on USB_MUSB_HDRC | |
71 | help | |
72 | Dual-Role devices can support both host and peripheral roles, | |
73 | as well as a the special "OTG Device" role which can switch | |
74 | between both roles as needed. | |
75 | ||
76 | # use USB_MUSB_HDRC_HCD not USB_MUSB_HOST to #ifdef host side support; | |
77 | # OTG needs both roles, not just USB_MUSB_HOST. | |
78 | config USB_MUSB_HOST | |
79 | depends on USB | |
80 | bool "USB Host" | |
81 | help | |
82 | Say Y here if your system supports the USB host role. | |
83 | If it has a USB "A" (rectangular), "Mini-A" (uncommon), | |
84 | or "Mini-AB" connector, it supports the host role. | |
85 | (With a "Mini-AB" connector, you should enable USB OTG.) | |
86 | ||
87 | # use USB_GADGET_MUSB_HDRC not USB_MUSB_PERIPHERAL to #ifdef peripheral | |
88 | # side support ... OTG needs both roles | |
89 | config USB_MUSB_PERIPHERAL | |
90 | depends on USB_GADGET | |
91 | bool "USB Peripheral (gadget stack)" | |
92 | select USB_GADGET_MUSB_HDRC | |
93 | help | |
94 | Say Y here if your system supports the USB peripheral role. | |
95 | If it has a USB "B" (squarish), "Mini-B", or "Mini-AB" | |
96 | connector, it supports the peripheral role. | |
97 | (With a "Mini-AB" connector, you should enable USB OTG.) | |
98 | ||
99 | config USB_MUSB_OTG | |
100 | depends on USB && USB_GADGET && PM && EXPERIMENTAL | |
101 | bool "Both host and peripheral: USB OTG (On The Go) Device" | |
102 | select USB_GADGET_MUSB_HDRC | |
103 | select USB_OTG | |
104 | help | |
105 | The most notable feature of USB OTG is support for a | |
106 | "Dual-Role" device, which can act as either a device | |
107 | or a host. The initial role choice can be changed | |
108 | later, when two dual-role devices talk to each other. | |
109 | ||
110 | At this writing, the OTG support in this driver is incomplete, | |
111 | omitting the mandatory HNP or SRP protocols. However, some | |
112 | of the cable based role switching works. (That is, grounding | |
113 | the ID pin switches the controller to host mode, while leaving | |
114 | it floating leaves it in peripheral mode.) | |
115 | ||
116 | Select this if your system has a Mini-AB connector, or | |
117 | to simplify certain kinds of configuration. | |
118 | ||
119 | To implement your OTG Targeted Peripherals List (TPL), enable | |
120 | USB_OTG_WHITELIST and update "drivers/usb/core/otg_whitelist.h" | |
121 | to match your requirements. | |
122 | ||
123 | endchoice | |
124 | ||
125 | # enable peripheral support (including with OTG) | |
126 | config USB_GADGET_MUSB_HDRC | |
127 | bool | |
128 | depends on USB_MUSB_HDRC && (USB_MUSB_PERIPHERAL || USB_MUSB_OTG) | |
129 | # default y | |
130 | # select USB_GADGET_DUALSPEED | |
131 | # select USB_GADGET_SELECTED | |
132 | ||
133 | # enables host support (including with OTG) | |
134 | config USB_MUSB_HDRC_HCD | |
135 | bool | |
136 | depends on USB_MUSB_HDRC && (USB_MUSB_HOST || USB_MUSB_OTG) | |
137 | select USB_OTG if USB_GADGET_MUSB_HDRC | |
138 | default y | |
139 | ||
140 | ||
141 | config MUSB_PIO_ONLY | |
142 | bool 'Disable DMA (always use PIO)' | |
143 | depends on USB_MUSB_HDRC | |
144 | default y if USB_TUSB6010 | |
145 | help | |
146 | All data is copied between memory and FIFO by the CPU. | |
147 | DMA controllers are ignored. | |
148 | ||
149 | Do not select 'n' here unless DMA support for your SOC or board | |
150 | is unavailable (or unstable). When DMA is enabled at compile time, | |
151 | you can still disable it at run time using the "use_dma=n" module | |
152 | parameter. | |
153 | ||
154 | config USB_INVENTRA_DMA | |
155 | bool | |
156 | depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY | |
085ad406 | 157 | default ARCH_OMAP2430 || ARCH_OMAP34XX || BLACKFIN |
550a7375 FB |
158 | help |
159 | Enable DMA transfers using Mentor's engine. | |
160 | ||
161 | config USB_TI_CPPI_DMA | |
162 | bool | |
163 | depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY | |
164 | default ARCH_DAVINCI | |
165 | help | |
166 | Enable DMA transfers when TI CPPI DMA is available. | |
167 | ||
168 | config USB_TUSB_OMAP_DMA | |
169 | bool | |
170 | depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY | |
171 | depends on USB_TUSB6010 | |
172 | depends on ARCH_OMAP | |
173 | default y | |
174 | help | |
175 | Enable DMA transfers on TUSB 6010 when OMAP DMA is available. | |
176 | ||
e8164f64 | 177 | config USB_MUSB_DEBUG |
550a7375 | 178 | depends on USB_MUSB_HDRC |
e8164f64 FB |
179 | bool "Enable debugging messages" |
180 | default n | |
550a7375 | 181 | help |
e8164f64 FB |
182 | This enables musb debugging. To set the logging level use the debug |
183 | module parameter. Starting at level 3, per-transfer (urb, usb_request, | |
184 | packet, or dma transfer) tracing may kick in. |