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