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