| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | # | 
|  | 2 | # USB Gadget support on a system involves | 
|  | 3 | #    (a) a peripheral controller, and | 
|  | 4 | #    (b) the gadget driver using it. | 
|  | 5 | # | 
|  | 6 | # NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !! | 
|  | 7 | # | 
|  | 8 | #  - Host systems (like PCs) need CONFIG_USB (with "A" jacks). | 
|  | 9 | #  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks). | 
| Matt LaPlante | cab0089 | 2006-10-03 22:36:44 +0200 | [diff] [blame] | 10 | #  - Some systems have both kinds of controllers. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 11 | # | 
|  | 12 | # With help from a special transceiver and a "Mini-AB" jack, systems with | 
|  | 13 | # both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG). | 
|  | 14 | # | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 15 |  | 
| Denis Cheng | b75be4a | 2008-01-24 16:36:31 +0800 | [diff] [blame] | 16 | menuconfig USB_GADGET | 
|  | 17 | tristate "USB Gadget Support" | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 18 | help | 
|  | 19 | USB is a master/slave protocol, organized with one master | 
|  | 20 | host (such as a PC) controlling up to 127 peripheral devices. | 
|  | 21 | The USB hardware is asymmetric, which makes it easier to set up: | 
|  | 22 | you can't connect a "to-the-host" connector to a peripheral. | 
|  | 23 |  | 
|  | 24 | Linux can run in the host, or in the peripheral.  In both cases | 
|  | 25 | you need a low level bus controller driver, and some software | 
|  | 26 | talking to it.  Peripheral controllers are often discrete silicon, | 
|  | 27 | or are integrated with the CPU in a microcontroller.  The more | 
| Jules Villard | e113f29 | 2006-08-22 22:40:15 +0200 | [diff] [blame] | 28 | familiar host side controllers have names like "EHCI", "OHCI", | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 29 | or "UHCI", and are usually integrated into southbridges on PC | 
|  | 30 | motherboards. | 
|  | 31 |  | 
|  | 32 | Enable this configuration option if you want to run Linux inside | 
|  | 33 | a USB peripheral device.  Configure one hardware driver for your | 
|  | 34 | peripheral/device side bus controller, and a "gadget driver" for | 
|  | 35 | your peripheral protocol.  (If you use modular gadget drivers, | 
|  | 36 | you may configure more than one.) | 
|  | 37 |  | 
|  | 38 | If in doubt, say "N" and don't enable these drivers; most people | 
|  | 39 | don't have this kind of hardware (except maybe inside Linux PDAs). | 
|  | 40 |  | 
|  | 41 | For more information, see <http://www.linux-usb.org/gadget> and | 
|  | 42 | the kernel DocBook documentation for this API. | 
|  | 43 |  | 
| Denis Cheng | b75be4a | 2008-01-24 16:36:31 +0800 | [diff] [blame] | 44 | if USB_GADGET | 
|  | 45 |  | 
| David Brownell | 70790f6 | 2007-07-01 17:35:28 -0700 | [diff] [blame] | 46 | config USB_GADGET_DEBUG | 
| Robert P. J. Day | afd0e0f | 2008-03-10 15:09:51 -0400 | [diff] [blame] | 47 | boolean "Debugging messages (DEVELOPMENT)" | 
| David Brownell | 36e893d | 2008-09-12 09:39:06 -0700 | [diff] [blame] | 48 | depends on DEBUG_KERNEL | 
| David Brownell | 70790f6 | 2007-07-01 17:35:28 -0700 | [diff] [blame] | 49 | help | 
|  | 50 | Many controller and gadget drivers will print some debugging | 
|  | 51 | messages if you use this option to ask for those messages. | 
|  | 52 |  | 
|  | 53 | Avoid enabling these messages, even if you're actively | 
|  | 54 | debugging such a driver.  Many drivers will emit so many | 
|  | 55 | messages that the driver timings are affected, which will | 
|  | 56 | either create new failure modes or remove the one you're | 
|  | 57 | trying to track down.  Never enable these messages for a | 
|  | 58 | production build. | 
|  | 59 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 60 | config USB_GADGET_DEBUG_FILES | 
| Robert P. J. Day | afd0e0f | 2008-03-10 15:09:51 -0400 | [diff] [blame] | 61 | boolean "Debugging information files (DEVELOPMENT)" | 
| David Brownell | 36e893d | 2008-09-12 09:39:06 -0700 | [diff] [blame] | 62 | depends on PROC_FS | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 63 | help | 
|  | 64 | Some of the drivers in the "gadget" framework can expose | 
|  | 65 | debugging information in files such as /proc/driver/udc | 
|  | 66 | (for a peripheral controller).  The information in these | 
|  | 67 | files may help when you're troubleshooting or bringing up a | 
|  | 68 | driver on a new board.   Enable these files by choosing "Y" | 
|  | 69 | here.  If in doubt, or to conserve kernel memory, say "N". | 
|  | 70 |  | 
| Haavard Skinnemoen | 914a3f3 | 2007-10-10 02:29:43 -0700 | [diff] [blame] | 71 | config USB_GADGET_DEBUG_FS | 
| Robert P. J. Day | afd0e0f | 2008-03-10 15:09:51 -0400 | [diff] [blame] | 72 | boolean "Debugging information files in debugfs (DEVELOPMENT)" | 
| David Brownell | 36e893d | 2008-09-12 09:39:06 -0700 | [diff] [blame] | 73 | depends on DEBUG_FS | 
| Haavard Skinnemoen | 914a3f3 | 2007-10-10 02:29:43 -0700 | [diff] [blame] | 74 | help | 
|  | 75 | Some of the drivers in the "gadget" framework can expose | 
|  | 76 | debugging information in files under /sys/kernel/debug/. | 
|  | 77 | The information in these files may help when you're | 
|  | 78 | troubleshooting or bringing up a driver on a new board. | 
|  | 79 | Enable these files by choosing "Y" here.  If in doubt, or | 
|  | 80 | to conserve kernel memory, say "N". | 
|  | 81 |  | 
| David Brownell | 36e893d | 2008-09-12 09:39:06 -0700 | [diff] [blame] | 82 | config USB_GADGET_VBUS_DRAW | 
|  | 83 | int "Maximum VBUS Power usage (2-500 mA)" | 
|  | 84 | range 2 500 | 
|  | 85 | default 2 | 
|  | 86 | help | 
|  | 87 | Some devices need to draw power from USB when they are | 
|  | 88 | configured, perhaps to operate circuitry or to recharge | 
|  | 89 | batteries.  This is in addition to any local power supply, | 
|  | 90 | such as an AC adapter or batteries. | 
|  | 91 |  | 
|  | 92 | Enter the maximum power your device draws through USB, in | 
|  | 93 | milliAmperes.  The permitted range of values is 2 - 500 mA; | 
|  | 94 | 0 mA would be legal, but can make some hosts misbehave. | 
|  | 95 |  | 
|  | 96 | This value will be used except for system-specific gadget | 
|  | 97 | drivers that have more specific information. | 
|  | 98 |  | 
| David Brownell | 028b271 | 2005-05-06 07:02:01 -0700 | [diff] [blame] | 99 | config	USB_GADGET_SELECTED | 
|  | 100 | boolean | 
|  | 101 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 102 | # | 
|  | 103 | # USB Peripheral Controller Support | 
|  | 104 | # | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 105 | # The order here is alphabetical, except that integrated controllers go | 
|  | 106 | # before discrete ones so they will be the initial/default value: | 
|  | 107 | #   - integrated/SOC controllers first | 
|  | 108 | #   - licensed IP used in both SOC and discrete versions | 
|  | 109 | #   - discrete ones (including all PCI-only controllers) | 
|  | 110 | #   - debug/dummy gadget+hcd is last. | 
|  | 111 | # | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 112 | choice | 
|  | 113 | prompt "USB Peripheral Controller" | 
|  | 114 | depends on USB_GADGET | 
|  | 115 | help | 
|  | 116 | A USB device uses a controller to talk to its host. | 
|  | 117 | Systems should have only one such upstream link. | 
|  | 118 | Many controller drivers are platform-specific; these | 
|  | 119 | often need board-specific hooks. | 
|  | 120 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 121 | # | 
|  | 122 | # Integrated controllers | 
|  | 123 | # | 
|  | 124 |  | 
|  | 125 | config USB_GADGET_AT91 | 
|  | 126 | boolean "Atmel AT91 USB Device Port" | 
| Nicolas Ferre | aa781af | 2009-07-27 15:00:35 -0700 | [diff] [blame] | 127 | depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9 && !ARCH_AT91SAM9G45 | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 128 | select USB_GADGET_SELECTED | 
| Thomas Dahlmann | 55d402d | 2007-07-16 21:40:54 -0700 | [diff] [blame] | 129 | help | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 130 | Many Atmel AT91 processors (such as the AT91RM2000) have a | 
|  | 131 | full speed USB Device Port with support for five configurable | 
|  | 132 | endpoints (plus endpoint zero). | 
| Thomas Dahlmann | 55d402d | 2007-07-16 21:40:54 -0700 | [diff] [blame] | 133 |  | 
|  | 134 | Say "y" to link the driver statically, or "m" to build a | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 135 | dynamically linked module called "at91_udc" and force all | 
| Thomas Dahlmann | 55d402d | 2007-07-16 21:40:54 -0700 | [diff] [blame] | 136 | gadget drivers to also be dynamically linked. | 
|  | 137 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 138 | config USB_AT91 | 
| Thomas Dahlmann | 55d402d | 2007-07-16 21:40:54 -0700 | [diff] [blame] | 139 | tristate | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 140 | depends on USB_GADGET_AT91 | 
| Thomas Dahlmann | 55d402d | 2007-07-16 21:40:54 -0700 | [diff] [blame] | 141 | default USB_GADGET | 
| Thomas Dahlmann | 55d402d | 2007-07-16 21:40:54 -0700 | [diff] [blame] | 142 |  | 
| Haavard Skinnemoen | 914a3f3 | 2007-10-10 02:29:43 -0700 | [diff] [blame] | 143 | config USB_GADGET_ATMEL_USBA | 
|  | 144 | boolean "Atmel USBA" | 
|  | 145 | select USB_GADGET_DUALSPEED | 
| Nicolas Ferre | aa781af | 2009-07-27 15:00:35 -0700 | [diff] [blame] | 146 | depends on AVR32 || ARCH_AT91CAP9 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 | 
| Haavard Skinnemoen | 914a3f3 | 2007-10-10 02:29:43 -0700 | [diff] [blame] | 147 | help | 
|  | 148 | USBA is the integrated high-speed USB Device controller on | 
| Nicolas Ferre | ba45ca4 | 2008-04-08 13:59:18 +0100 | [diff] [blame] | 149 | the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. | 
| Haavard Skinnemoen | 914a3f3 | 2007-10-10 02:29:43 -0700 | [diff] [blame] | 150 |  | 
|  | 151 | config USB_ATMEL_USBA | 
|  | 152 | tristate | 
|  | 153 | depends on USB_GADGET_ATMEL_USBA | 
|  | 154 | default USB_GADGET | 
|  | 155 | select USB_GADGET_SELECTED | 
|  | 156 |  | 
| Li Yang | b504882 | 2007-04-23 10:54:25 -0700 | [diff] [blame] | 157 | config USB_GADGET_FSL_USB2 | 
|  | 158 | boolean "Freescale Highspeed USB DR Peripheral Controller" | 
| Guennadi Liakhovetski | 54e4026b | 2009-04-15 14:25:33 +0200 | [diff] [blame] | 159 | depends on FSL_SOC || ARCH_MXC | 
| Li Yang | b504882 | 2007-04-23 10:54:25 -0700 | [diff] [blame] | 160 | select USB_GADGET_DUALSPEED | 
|  | 161 | help | 
|  | 162 | Some of Freescale PowerPC processors have a High Speed | 
|  | 163 | Dual-Role(DR) USB controller, which supports device mode. | 
|  | 164 |  | 
|  | 165 | The number of programmable endpoints is different through | 
|  | 166 | SOC revisions. | 
|  | 167 |  | 
|  | 168 | Say "y" to link the driver statically, or "m" to build a | 
|  | 169 | dynamically linked module called "fsl_usb2_udc" and force | 
|  | 170 | all gadget drivers to also be dynamically linked. | 
|  | 171 |  | 
|  | 172 | config USB_FSL_USB2 | 
|  | 173 | tristate | 
|  | 174 | depends on USB_GADGET_FSL_USB2 | 
|  | 175 | default USB_GADGET | 
|  | 176 | select USB_GADGET_SELECTED | 
|  | 177 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 178 | config USB_GADGET_LH7A40X | 
|  | 179 | boolean "LH7A40X" | 
|  | 180 | depends on ARCH_LH7A40X | 
|  | 181 | help | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 182 | This driver provides USB Device Controller driver for LH7A40x | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 183 |  | 
|  | 184 | config USB_LH7A40X | 
|  | 185 | tristate | 
|  | 186 | depends on USB_GADGET_LH7A40X | 
|  | 187 | default USB_GADGET | 
| David Brownell | 028b271 | 2005-05-06 07:02:01 -0700 | [diff] [blame] | 188 | select USB_GADGET_SELECTED | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 189 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 190 | config USB_GADGET_OMAP | 
|  | 191 | boolean "OMAP USB Device Controller" | 
|  | 192 | depends on ARCH_OMAP | 
| Tony Lindgren | f1c9e15 | 2008-09-04 16:25:14 -0700 | [diff] [blame] | 193 | select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_H4_OTG | 
| David Brownell | 54b9ed3 | 2009-02-11 22:31:12 -0800 | [diff] [blame] | 194 | select USB_OTG_UTILS if ARCH_OMAP | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 195 | help | 
|  | 196 | Many Texas Instruments OMAP processors have flexible full | 
|  | 197 | speed USB device controllers, with support for up to 30 | 
|  | 198 | endpoints (plus endpoint zero).  This driver supports the | 
|  | 199 | controller in the OMAP 1611, and should work with controllers | 
|  | 200 | in other OMAP processors too, given minor tweaks. | 
|  | 201 |  | 
|  | 202 | Say "y" to link the driver statically, or "m" to build a | 
|  | 203 | dynamically linked module called "omap_udc" and force all | 
|  | 204 | gadget drivers to also be dynamically linked. | 
|  | 205 |  | 
|  | 206 | config USB_OMAP | 
|  | 207 | tristate | 
|  | 208 | depends on USB_GADGET_OMAP | 
|  | 209 | default USB_GADGET | 
| David Brownell | 028b271 | 2005-05-06 07:02:01 -0700 | [diff] [blame] | 210 | select USB_GADGET_SELECTED | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 211 |  | 
|  | 212 | config USB_OTG | 
|  | 213 | boolean "OTG Support" | 
|  | 214 | depends on USB_GADGET_OMAP && ARCH_OMAP_OTG && USB_OHCI_HCD | 
|  | 215 | help | 
|  | 216 | The most notable feature of USB OTG is support for a | 
|  | 217 | "Dual-Role" device, which can act as either a device | 
|  | 218 | or a host.  The initial role choice can be changed | 
|  | 219 | later, when two dual-role devices talk to each other. | 
|  | 220 |  | 
|  | 221 | Select this only if your OMAP board has a Mini-AB connector. | 
|  | 222 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 223 | config USB_GADGET_PXA25X | 
|  | 224 | boolean "PXA 25x or IXP 4xx" | 
|  | 225 | depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX | 
| Russell King | 0996391 | 2009-10-21 13:20:32 +0100 | [diff] [blame] | 226 | select USB_OTG_UTILS | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 227 | help | 
|  | 228 | Intel's PXA 25x series XScale ARM-5TE processors include | 
|  | 229 | an integrated full speed USB 1.1 device controller.  The | 
|  | 230 | controller in the IXP 4xx series is register-compatible. | 
|  | 231 |  | 
|  | 232 | It has fifteen fixed-function endpoints, as well as endpoint | 
|  | 233 | zero (for control transfers). | 
|  | 234 |  | 
|  | 235 | Say "y" to link the driver statically, or "m" to build a | 
|  | 236 | dynamically linked module called "pxa25x_udc" and force all | 
|  | 237 | gadget drivers to also be dynamically linked. | 
|  | 238 |  | 
|  | 239 | config USB_PXA25X | 
|  | 240 | tristate | 
|  | 241 | depends on USB_GADGET_PXA25X | 
|  | 242 | default USB_GADGET | 
|  | 243 | select USB_GADGET_SELECTED | 
|  | 244 |  | 
|  | 245 | # if there's only one gadget driver, using only two bulk endpoints, | 
|  | 246 | # don't waste memory for the other endpoints | 
|  | 247 | config USB_PXA25X_SMALL | 
|  | 248 | depends on USB_GADGET_PXA25X | 
|  | 249 | bool | 
|  | 250 | default n if USB_ETH_RNDIS | 
|  | 251 | default y if USB_ZERO | 
|  | 252 | default y if USB_ETH | 
|  | 253 | default y if USB_G_SERIAL | 
|  | 254 |  | 
| Yoshihiro Shimoda | c414424 | 2009-08-19 04:59:39 +0000 | [diff] [blame] | 255 | config USB_GADGET_R8A66597 | 
|  | 256 | boolean "Renesas R8A66597 USB Peripheral Controller" | 
|  | 257 | select USB_GADGET_DUALSPEED | 
|  | 258 | help | 
|  | 259 | R8A66597 is a discrete USB host and peripheral controller chip that | 
|  | 260 | supports both full and high speed USB 2.0 data transfers. | 
|  | 261 | It has nine configurable endpoints, and endpoint zero. | 
|  | 262 |  | 
|  | 263 | Say "y" to link the driver statically, or "m" to build a | 
|  | 264 | dynamically linked module called "r8a66597_udc" and force all | 
|  | 265 | gadget drivers to also be dynamically linked. | 
|  | 266 |  | 
|  | 267 | config USB_R8A66597 | 
|  | 268 | tristate | 
|  | 269 | depends on USB_GADGET_R8A66597 | 
|  | 270 | default USB_GADGET | 
|  | 271 | select USB_GADGET_SELECTED | 
|  | 272 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 273 | config USB_GADGET_PXA27X | 
|  | 274 | boolean "PXA 27x" | 
| Robert Jarzmik | 9f5351b | 2009-04-21 20:34:44 -0700 | [diff] [blame] | 275 | depends on ARCH_PXA && (PXA27x || PXA3xx) | 
| Robert Jarzmik | 7fec3c2 | 2009-01-24 23:57:30 -0800 | [diff] [blame] | 276 | select USB_OTG_UTILS | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 277 | help | 
|  | 278 | Intel's PXA 27x series XScale ARM v5TE processors include | 
|  | 279 | an integrated full speed USB 1.1 device controller. | 
|  | 280 |  | 
|  | 281 | It has up to 23 endpoints, as well as endpoint zero (for | 
|  | 282 | control transfers). | 
|  | 283 |  | 
|  | 284 | Say "y" to link the driver statically, or "m" to build a | 
|  | 285 | dynamically linked module called "pxa27x_udc" and force all | 
|  | 286 | gadget drivers to also be dynamically linked. | 
|  | 287 |  | 
|  | 288 | config USB_PXA27X | 
|  | 289 | tristate | 
|  | 290 | depends on USB_GADGET_PXA27X | 
|  | 291 | default USB_GADGET | 
|  | 292 | select USB_GADGET_SELECTED | 
|  | 293 |  | 
| Ben Dooks | 5b7d70c | 2009-06-02 14:58:06 +0100 | [diff] [blame] | 294 | config USB_GADGET_S3C_HSOTG | 
|  | 295 | boolean "S3C HS/OtG USB Device controller" | 
|  | 296 | depends on S3C_DEV_USB_HSOTG | 
|  | 297 | select USB_GADGET_S3C_HSOTG_PIO | 
|  | 298 | help | 
|  | 299 | The Samsung S3C64XX USB2.0 high-speed gadget controller | 
|  | 300 | integrated into the S3C64XX series SoC. | 
|  | 301 |  | 
|  | 302 | config USB_S3C_HSOTG | 
|  | 303 | tristate | 
|  | 304 | depends on USB_GADGET_S3C_HSOTG | 
|  | 305 | default USB_GADGET | 
|  | 306 | select USB_GADGET_SELECTED | 
|  | 307 |  | 
| Paulius Zaleckas | c03e7d4 | 2009-06-09 11:11:16 +0300 | [diff] [blame] | 308 | config USB_GADGET_IMX | 
|  | 309 | boolean "Freescale IMX USB Peripheral Controller" | 
|  | 310 | depends on ARCH_MX1 | 
|  | 311 | help | 
|  | 312 | Freescale's IMX series include an integrated full speed | 
|  | 313 | USB 1.1 device controller.  The controller in the IMX series | 
|  | 314 | is register-compatible. | 
|  | 315 |  | 
|  | 316 | It has Six fixed-function endpoints, as well as endpoint | 
|  | 317 | zero (for control transfers). | 
|  | 318 |  | 
|  | 319 | Say "y" to link the driver statically, or "m" to build a | 
|  | 320 | dynamically linked module called "imx_udc" and force all | 
|  | 321 | gadget drivers to also be dynamically linked. | 
|  | 322 |  | 
|  | 323 | config USB_IMX | 
|  | 324 | tristate | 
|  | 325 | depends on USB_GADGET_IMX | 
|  | 326 | default USB_GADGET | 
|  | 327 | select USB_GADGET_SELECTED | 
|  | 328 |  | 
| Arnaud Patard | 3fc154b | 2007-06-06 21:05:49 -0700 | [diff] [blame] | 329 | config USB_GADGET_S3C2410 | 
|  | 330 | boolean "S3C2410 USB Device Controller" | 
|  | 331 | depends on ARCH_S3C2410 | 
|  | 332 | help | 
|  | 333 | Samsung's S3C2410 is an ARM-4 processor with an integrated | 
|  | 334 | full speed USB 1.1 device controller.  It has 4 configurable | 
|  | 335 | endpoints, as well as endpoint zero (for control transfers). | 
|  | 336 |  | 
|  | 337 | This driver has been tested on the S3C2410, S3C2412, and | 
|  | 338 | S3C2440 processors. | 
|  | 339 |  | 
|  | 340 | config USB_S3C2410 | 
|  | 341 | tristate | 
|  | 342 | depends on USB_GADGET_S3C2410 | 
|  | 343 | default USB_GADGET | 
|  | 344 | select USB_GADGET_SELECTED | 
|  | 345 |  | 
|  | 346 | config USB_S3C2410_DEBUG | 
|  | 347 | boolean "S3C2410 udc debug messages" | 
|  | 348 | depends on USB_GADGET_S3C2410 | 
|  | 349 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 350 | # | 
|  | 351 | # Controllers available in both integrated and discrete versions | 
|  | 352 | # | 
|  | 353 |  | 
|  | 354 | # musb builds in ../musb along with host support | 
|  | 355 | config USB_GADGET_MUSB_HDRC | 
| Bryan Wu | 085ad40 | 2008-12-02 21:33:49 +0200 | [diff] [blame] | 356 | boolean "Inventra HDRC USB Peripheral (TI, ADI, ...)" | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 357 | depends on USB_MUSB_HDRC && (USB_MUSB_PERIPHERAL || USB_MUSB_OTG) | 
|  | 358 | select USB_GADGET_DUALSPEED | 
| David Brownell | bae4bd8 | 2006-01-22 10:32:37 -0800 | [diff] [blame] | 359 | select USB_GADGET_SELECTED | 
|  | 360 | help | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 361 | This OTG-capable silicon IP is used in dual designs including | 
| Bryan Wu | 085ad40 | 2008-12-02 21:33:49 +0200 | [diff] [blame] | 362 | the TI DaVinci, OMAP 243x, OMAP 343x, TUSB 6010, and ADI Blackfin | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 363 |  | 
|  | 364 | config USB_GADGET_M66592 | 
|  | 365 | boolean "Renesas M66592 USB Peripheral Controller" | 
|  | 366 | select USB_GADGET_DUALSPEED | 
|  | 367 | help | 
|  | 368 | M66592 is a discrete USB peripheral controller chip that | 
|  | 369 | supports both full and high speed USB 2.0 data transfers. | 
|  | 370 | It has seven configurable endpoints, and endpoint zero. | 
| David Brownell | bae4bd8 | 2006-01-22 10:32:37 -0800 | [diff] [blame] | 371 |  | 
|  | 372 | Say "y" to link the driver statically, or "m" to build a | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 373 | dynamically linked module called "m66592_udc" and force all | 
| David Brownell | bae4bd8 | 2006-01-22 10:32:37 -0800 | [diff] [blame] | 374 | gadget drivers to also be dynamically linked. | 
|  | 375 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 376 | config USB_M66592 | 
| David Brownell | bae4bd8 | 2006-01-22 10:32:37 -0800 | [diff] [blame] | 377 | tristate | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 378 | depends on USB_GADGET_M66592 | 
| David Brownell | bae4bd8 | 2006-01-22 10:32:37 -0800 | [diff] [blame] | 379 | default USB_GADGET | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 380 | select USB_GADGET_SELECTED | 
|  | 381 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 382 | # | 
|  | 383 | # Controllers available only in discrete form (and all PCI controllers) | 
|  | 384 | # | 
|  | 385 |  | 
|  | 386 | config USB_GADGET_AMD5536UDC | 
|  | 387 | boolean "AMD5536 UDC" | 
|  | 388 | depends on PCI | 
|  | 389 | select USB_GADGET_DUALSPEED | 
|  | 390 | help | 
|  | 391 | The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. | 
|  | 392 | It is a USB Highspeed DMA capable USB device controller. Beside ep0 | 
|  | 393 | it provides 4 IN and 4 OUT endpoints (bulk or interrupt type). | 
|  | 394 | The UDC port supports OTG operation, and may be used as a host port | 
|  | 395 | if it's not being used to implement peripheral or OTG roles. | 
|  | 396 |  | 
|  | 397 | Say "y" to link the driver statically, or "m" to build a | 
|  | 398 | dynamically linked module called "amd5536udc" and force all | 
|  | 399 | gadget drivers to also be dynamically linked. | 
|  | 400 |  | 
|  | 401 | config USB_AMD5536UDC | 
|  | 402 | tristate | 
|  | 403 | depends on USB_GADGET_AMD5536UDC | 
|  | 404 | default USB_GADGET | 
|  | 405 | select USB_GADGET_SELECTED | 
|  | 406 |  | 
| Li Yang | 3948f0e | 2008-09-02 19:58:10 +0800 | [diff] [blame] | 407 | config USB_GADGET_FSL_QE | 
|  | 408 | boolean "Freescale QE/CPM USB Device Controller" | 
|  | 409 | depends on FSL_SOC && (QUICC_ENGINE || CPM) | 
|  | 410 | help | 
|  | 411 | Some of Freescale PowerPC processors have a Full Speed | 
|  | 412 | QE/CPM2 USB controller, which support device mode with 4 | 
|  | 413 | programmable endpoints. This driver supports the | 
|  | 414 | controller in the MPC8360 and MPC8272, and should work with | 
|  | 415 | controllers having QE or CPM2, given minor tweaks. | 
|  | 416 |  | 
|  | 417 | Set CONFIG_USB_GADGET to "m" to build this driver as a | 
| Matt LaPlante | 692105b | 2009-01-26 11:12:25 +0100 | [diff] [blame] | 418 | dynamically linked module called "fsl_qe_udc". | 
| Li Yang | 3948f0e | 2008-09-02 19:58:10 +0800 | [diff] [blame] | 419 |  | 
|  | 420 | config USB_FSL_QE | 
|  | 421 | tristate | 
|  | 422 | depends on USB_GADGET_FSL_QE | 
|  | 423 | default USB_GADGET | 
|  | 424 | select USB_GADGET_SELECTED | 
|  | 425 |  | 
| David Lopo | aa69a80 | 2008-11-17 14:14:51 -0800 | [diff] [blame] | 426 | config USB_GADGET_CI13XXX | 
|  | 427 | boolean "MIPS USB CI13xxx" | 
|  | 428 | depends on PCI | 
|  | 429 | select USB_GADGET_DUALSPEED | 
|  | 430 | help | 
|  | 431 | MIPS USB IP core family device controller | 
|  | 432 | Currently it only supports IP part number CI13412 | 
|  | 433 |  | 
|  | 434 | Say "y" to link the driver statically, or "m" to build a | 
|  | 435 | dynamically linked module called "ci13xxx_udc" and force all | 
|  | 436 | gadget drivers to also be dynamically linked. | 
|  | 437 |  | 
|  | 438 | config USB_CI13XXX | 
|  | 439 | tristate | 
|  | 440 | depends on USB_GADGET_CI13XXX | 
|  | 441 | default USB_GADGET | 
|  | 442 | select USB_GADGET_SELECTED | 
|  | 443 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 444 | config USB_GADGET_NET2280 | 
|  | 445 | boolean "NetChip 228x" | 
|  | 446 | depends on PCI | 
|  | 447 | select USB_GADGET_DUALSPEED | 
|  | 448 | help | 
|  | 449 | NetChip 2280 / 2282 is a PCI based USB peripheral controller which | 
|  | 450 | supports both full and high speed USB 2.0 data transfers. | 
|  | 451 |  | 
|  | 452 | It has six configurable endpoints, as well as endpoint zero | 
|  | 453 | (for control transfers) and several endpoints with dedicated | 
|  | 454 | functions. | 
|  | 455 |  | 
|  | 456 | Say "y" to link the driver statically, or "m" to build a | 
|  | 457 | dynamically linked module called "net2280" and force all | 
|  | 458 | gadget drivers to also be dynamically linked. | 
|  | 459 |  | 
|  | 460 | config USB_NET2280 | 
|  | 461 | tristate | 
|  | 462 | depends on USB_GADGET_NET2280 | 
|  | 463 | default USB_GADGET | 
|  | 464 | select USB_GADGET_SELECTED | 
|  | 465 |  | 
|  | 466 | config USB_GADGET_GOKU | 
|  | 467 | boolean "Toshiba TC86C001 'Goku-S'" | 
|  | 468 | depends on PCI | 
|  | 469 | help | 
|  | 470 | The Toshiba TC86C001 is a PCI device which includes controllers | 
|  | 471 | for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). | 
|  | 472 |  | 
|  | 473 | The device controller has three configurable (bulk or interrupt) | 
|  | 474 | endpoints, plus endpoint zero (for control transfers). | 
|  | 475 |  | 
|  | 476 | Say "y" to link the driver statically, or "m" to build a | 
|  | 477 | dynamically linked module called "goku_udc" and to force all | 
|  | 478 | gadget drivers to also be dynamically linked. | 
|  | 479 |  | 
|  | 480 | config USB_GOKU | 
|  | 481 | tristate | 
|  | 482 | depends on USB_GADGET_GOKU | 
|  | 483 | default USB_GADGET | 
|  | 484 | select USB_GADGET_SELECTED | 
|  | 485 |  | 
| Xiaochen Shen | 5be19a9 | 2009-06-04 15:34:49 +0800 | [diff] [blame] | 486 | config USB_GADGET_LANGWELL | 
|  | 487 | boolean "Intel Langwell USB Device Controller" | 
|  | 488 | depends on PCI | 
|  | 489 | select USB_GADGET_DUALSPEED | 
|  | 490 | help | 
|  | 491 | Intel Langwell USB Device Controller is a High-Speed USB | 
|  | 492 | On-The-Go device controller. | 
|  | 493 |  | 
|  | 494 | The number of programmable endpoints is different through | 
|  | 495 | controller revision. | 
|  | 496 |  | 
|  | 497 | Say "y" to link the driver statically, or "m" to build a | 
|  | 498 | dynamically linked module called "langwell_udc" and force all | 
|  | 499 | gadget drivers to also be dynamically linked. | 
|  | 500 |  | 
|  | 501 | config USB_LANGWELL | 
|  | 502 | tristate | 
|  | 503 | depends on USB_GADGET_LANGWELL | 
|  | 504 | default USB_GADGET | 
|  | 505 | select USB_GADGET_SELECTED | 
|  | 506 |  | 
| David Brownell | a7a19fa | 2008-08-14 17:04:48 -0700 | [diff] [blame] | 507 |  | 
|  | 508 | # | 
|  | 509 | # LAST -- dummy/emulated controller | 
|  | 510 | # | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 511 |  | 
|  | 512 | config USB_GADGET_DUMMY_HCD | 
|  | 513 | boolean "Dummy HCD (DEVELOPMENT)" | 
| Robert P. J. Day | afd0e0f | 2008-03-10 15:09:51 -0400 | [diff] [blame] | 514 | depends on USB=y || (USB=m && USB_GADGET=m) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 515 | select USB_GADGET_DUALSPEED | 
|  | 516 | help | 
|  | 517 | This host controller driver emulates USB, looping all data transfer | 
|  | 518 | requests back to a USB "gadget driver" in the same host.  The host | 
|  | 519 | side is the master; the gadget side is the slave.  Gadget drivers | 
|  | 520 | can be high, full, or low speed; and they have access to endpoints | 
|  | 521 | like those from NET2280, PXA2xx, or SA1100 hardware. | 
|  | 522 |  | 
|  | 523 | This may help in some stages of creating a driver to embed in a | 
|  | 524 | Linux device, since it lets you debug several parts of the gadget | 
|  | 525 | driver without its hardware or drivers being involved. | 
|  | 526 |  | 
|  | 527 | Since such a gadget side driver needs to interoperate with a host | 
|  | 528 | side Linux-USB device driver, this may help to debug both sides | 
|  | 529 | of a USB protocol stack. | 
|  | 530 |  | 
|  | 531 | Say "y" to link the driver statically, or "m" to build a | 
|  | 532 | dynamically linked module called "dummy_hcd" and force all | 
|  | 533 | gadget drivers to also be dynamically linked. | 
|  | 534 |  | 
|  | 535 | config USB_DUMMY_HCD | 
|  | 536 | tristate | 
|  | 537 | depends on USB_GADGET_DUMMY_HCD | 
|  | 538 | default USB_GADGET | 
| David Brownell | 028b271 | 2005-05-06 07:02:01 -0700 | [diff] [blame] | 539 | select USB_GADGET_SELECTED | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 540 |  | 
|  | 541 | # NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears | 
|  | 542 | # first and will be selected by default. | 
|  | 543 |  | 
|  | 544 | endchoice | 
|  | 545 |  | 
|  | 546 | config USB_GADGET_DUALSPEED | 
|  | 547 | bool | 
|  | 548 | depends on USB_GADGET | 
|  | 549 | default n | 
|  | 550 | help | 
|  | 551 | Means that gadget drivers should include extra descriptors | 
|  | 552 | and code to handle dual-speed controllers. | 
|  | 553 |  | 
|  | 554 | # | 
|  | 555 | # USB Gadget Drivers | 
|  | 556 | # | 
|  | 557 | choice | 
|  | 558 | tristate "USB Gadget Drivers" | 
| David Brownell | 028b271 | 2005-05-06 07:02:01 -0700 | [diff] [blame] | 559 | depends on USB_GADGET && USB_GADGET_SELECTED | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 560 | default USB_ETH | 
|  | 561 | help | 
|  | 562 | A Linux "Gadget Driver" talks to the USB Peripheral Controller | 
|  | 563 | driver through the abstract "gadget" API.  Some other operating | 
|  | 564 | systems call these "client" drivers, of which "class drivers" | 
|  | 565 | are a subset (implementing a USB device class specification). | 
|  | 566 | A gadget driver implements one or more USB functions using | 
|  | 567 | the peripheral hardware. | 
|  | 568 |  | 
|  | 569 | Gadget drivers are hardware-neutral, or "platform independent", | 
|  | 570 | except that they sometimes must understand quirks or limitations | 
|  | 571 | of the particular controllers they work with.  For example, when | 
|  | 572 | a controller doesn't support alternate configurations or provide | 
|  | 573 | enough of the right types of endpoints, the gadget driver might | 
|  | 574 | not be able work with that controller, or might need to implement | 
|  | 575 | a less common variant of a device class protocol. | 
|  | 576 |  | 
|  | 577 | # this first set of drivers all depend on bulk-capable hardware. | 
|  | 578 |  | 
|  | 579 | config USB_ZERO | 
|  | 580 | tristate "Gadget Zero (DEVELOPMENT)" | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 581 | help | 
|  | 582 | Gadget Zero is a two-configuration device.  It either sinks and | 
|  | 583 | sources bulk data; or it loops back a configurable number of | 
|  | 584 | transfers.  It also implements control requests, for "chapter 9" | 
|  | 585 | conformance.  The driver needs only two bulk-capable endpoints, so | 
|  | 586 | it can work on top of most device-side usb controllers.  It's | 
|  | 587 | useful for testing, and is also a working example showing how | 
|  | 588 | USB "gadget drivers" can be written. | 
|  | 589 |  | 
|  | 590 | Make this be the first driver you try using on top of any new | 
|  | 591 | USB peripheral controller driver.  Then you can use host-side | 
|  | 592 | test software, like the "usbtest" driver, to put your hardware | 
|  | 593 | and its driver through a basic set of functional tests. | 
|  | 594 |  | 
|  | 595 | Gadget Zero also works with the host-side "usb-skeleton" driver, | 
|  | 596 | and with many kinds of host-side test software.  You may need | 
|  | 597 | to tweak product and vendor IDs before host software knows about | 
|  | 598 | this device, and arrange to select an appropriate configuration. | 
|  | 599 |  | 
|  | 600 | Say "y" to link the driver statically, or "m" to build a | 
|  | 601 | dynamically linked module called "g_zero". | 
|  | 602 |  | 
|  | 603 | config USB_ZERO_HNPTEST | 
|  | 604 | boolean "HNP Test Device" | 
|  | 605 | depends on USB_ZERO && USB_OTG | 
|  | 606 | help | 
|  | 607 | You can configure this device to enumerate using the device | 
|  | 608 | identifiers of the USB-OTG test device.  That means that when | 
|  | 609 | this gadget connects to another OTG device, with this one using | 
|  | 610 | the "B-Peripheral" role, that device will use HNP to let this | 
|  | 611 | one serve as the USB host instead (in the "B-Host" role). | 
|  | 612 |  | 
| Bryan Wu | c6994e6 | 2009-06-03 09:17:58 -0400 | [diff] [blame] | 613 | config USB_AUDIO | 
|  | 614 | tristate "Audio Gadget (EXPERIMENTAL)" | 
|  | 615 | depends on SND | 
| Randy Dunlap | 0495073 | 2009-07-03 13:26:57 -0700 | [diff] [blame] | 616 | select SND_PCM | 
| Bryan Wu | c6994e6 | 2009-06-03 09:17:58 -0400 | [diff] [blame] | 617 | help | 
|  | 618 | Gadget Audio is compatible with USB Audio Class specification 1.0. | 
|  | 619 | It will include at least one AudioControl interface, zero or more | 
|  | 620 | AudioStream interface and zero or more MIDIStream interface. | 
|  | 621 |  | 
|  | 622 | Gadget Audio will use on-board ALSA (CONFIG_SND) audio card to | 
|  | 623 | playback or capture audio stream. | 
|  | 624 |  | 
|  | 625 | Say "y" to link the driver statically, or "m" to build a | 
|  | 626 | dynamically linked module called "g_audio". | 
|  | 627 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 628 | config USB_ETH | 
|  | 629 | tristate "Ethernet Gadget (with CDC Ethernet support)" | 
|  | 630 | depends on NET | 
| Randy Dunlap | 9e221be | 2009-09-07 17:08:39 -0700 | [diff] [blame] | 631 | select CRC32 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 632 | help | 
| Brian Niebuhr | 9b39e9d | 2009-08-14 10:04:22 -0500 | [diff] [blame] | 633 | This driver implements Ethernet style communication, in one of | 
|  | 634 | several ways: | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 635 |  | 
|  | 636 | - The "Communication Device Class" (CDC) Ethernet Control Model. | 
|  | 637 | That protocol is often avoided with pure Ethernet adapters, in | 
|  | 638 | favor of simpler vendor-specific hardware, but is widely | 
|  | 639 | supported by firmware for smart network devices. | 
|  | 640 |  | 
|  | 641 | - On hardware can't implement that protocol, a simple CDC subset | 
|  | 642 | is used, placing fewer demands on USB. | 
|  | 643 |  | 
| Brian Niebuhr | 9b39e9d | 2009-08-14 10:04:22 -0500 | [diff] [blame] | 644 | - CDC Ethernet Emulation Model (EEM) is a newer standard that has | 
|  | 645 | a simpler interface that can be used by more USB hardware. | 
|  | 646 |  | 
|  | 647 | RNDIS support is an additional option, more demanding than than | 
|  | 648 | subset. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 649 |  | 
|  | 650 | Within the USB device, this gadget driver exposes a network device | 
|  | 651 | "usbX", where X depends on what other networking devices you have. | 
|  | 652 | Treat it like a two-node Ethernet link:  host, and gadget. | 
|  | 653 |  | 
|  | 654 | The Linux-USB host-side "usbnet" driver interoperates with this | 
|  | 655 | driver, so that deep I/O queues can be supported.  On 2.4 kernels, | 
|  | 656 | use "CDCEther" instead, if you're using the CDC option. That CDC | 
|  | 657 | mode should also interoperate with standard CDC Ethernet class | 
|  | 658 | drivers on other host operating systems. | 
|  | 659 |  | 
|  | 660 | Say "y" to link the driver statically, or "m" to build a | 
|  | 661 | dynamically linked module called "g_ether". | 
|  | 662 |  | 
|  | 663 | config USB_ETH_RNDIS | 
| Robert P. J. Day | afd0e0f | 2008-03-10 15:09:51 -0400 | [diff] [blame] | 664 | bool "RNDIS support" | 
|  | 665 | depends on USB_ETH | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 666 | default y | 
|  | 667 | help | 
|  | 668 | Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol, | 
|  | 669 | and Microsoft provides redistributable binary RNDIS drivers for | 
|  | 670 | older versions of Windows. | 
|  | 671 |  | 
|  | 672 | If you say "y" here, the Ethernet gadget driver will try to provide | 
|  | 673 | a second device configuration, supporting RNDIS to talk to such | 
|  | 674 | Microsoft USB hosts. | 
|  | 675 |  | 
|  | 676 | To make MS-Windows work with this, use Documentation/usb/linux.inf | 
|  | 677 | as the "driver info file".  For versions of MS-Windows older than | 
|  | 678 | XP, you'll need to download drivers from Microsoft's website; a URL | 
|  | 679 | is given in comments found in that info file. | 
|  | 680 |  | 
| Brian Niebuhr | 9b39e9d | 2009-08-14 10:04:22 -0500 | [diff] [blame] | 681 | config USB_ETH_EEM | 
|  | 682 | bool "Ethernet Emulation Model (EEM) support" | 
|  | 683 | depends on USB_ETH | 
|  | 684 | default n | 
|  | 685 | help | 
|  | 686 | CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM | 
|  | 687 | and therefore can be supported by more hardware.  Technically ECM and | 
|  | 688 | EEM are designed for different applications.  The ECM model extends | 
|  | 689 | the network interface to the target (e.g. a USB cable modem), and the | 
|  | 690 | EEM model is for mobile devices to communicate with hosts using | 
|  | 691 | ethernet over USB.  For Linux gadgets, however, the interface with | 
|  | 692 | the host is the same (a usbX device), so the differences are minimal. | 
|  | 693 |  | 
|  | 694 | If you say "y" here, the Ethernet gadget driver will use the EEM | 
|  | 695 | protocol rather than ECM.  If unsure, say "n". | 
|  | 696 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 697 | config USB_GADGETFS | 
|  | 698 | tristate "Gadget Filesystem (EXPERIMENTAL)" | 
|  | 699 | depends on EXPERIMENTAL | 
|  | 700 | help | 
|  | 701 | This driver provides a filesystem based API that lets user mode | 
|  | 702 | programs implement a single-configuration USB device, including | 
|  | 703 | endpoint I/O and control requests that don't relate to enumeration. | 
|  | 704 | All endpoints, transfer speeds, and transfer types supported by | 
|  | 705 | the hardware are available, through read() and write() calls. | 
|  | 706 |  | 
| Robert P. J. Day | afd0e0f | 2008-03-10 15:09:51 -0400 | [diff] [blame] | 707 | Currently, this option is still labelled as EXPERIMENTAL because | 
|  | 708 | of existing race conditions in the underlying in-kernel AIO core. | 
|  | 709 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 710 | Say "y" to link the driver statically, or "m" to build a | 
|  | 711 | dynamically linked module called "gadgetfs". | 
|  | 712 |  | 
|  | 713 | config USB_FILE_STORAGE | 
|  | 714 | tristate "File-backed Storage Gadget" | 
| Randy Dunlap | 8784028 | 2007-03-21 13:57:51 -0700 | [diff] [blame] | 715 | depends on BLOCK | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 716 | help | 
|  | 717 | The File-backed Storage Gadget acts as a USB Mass Storage | 
|  | 718 | disk drive.  As its storage repository it can use a regular | 
|  | 719 | file or a block device (in much the same way as the "loop" | 
|  | 720 | device driver), specified as a module parameter. | 
|  | 721 |  | 
|  | 722 | Say "y" to link the driver statically, or "m" to build a | 
|  | 723 | dynamically linked module called "g_file_storage". | 
|  | 724 |  | 
|  | 725 | config USB_FILE_STORAGE_TEST | 
|  | 726 | bool "File-backed Storage Gadget testing version" | 
|  | 727 | depends on USB_FILE_STORAGE | 
|  | 728 | default n | 
|  | 729 | help | 
|  | 730 | Say "y" to generate the larger testing version of the | 
|  | 731 | File-backed Storage Gadget, useful for probing the | 
|  | 732 | behavior of USB Mass Storage hosts.  Not needed for | 
|  | 733 | normal operation. | 
|  | 734 |  | 
|  | 735 | config USB_G_SERIAL | 
| Felipe Balbi | 3086775 | 2008-08-18 17:39:30 -0700 | [diff] [blame] | 736 | tristate "Serial Gadget (with CDC ACM and CDC OBEX support)" | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 737 | help | 
|  | 738 | The Serial Gadget talks to the Linux-USB generic serial driver. | 
|  | 739 | This driver supports a CDC-ACM module option, which can be used | 
|  | 740 | to interoperate with MS-Windows hosts or with the Linux-USB | 
|  | 741 | "cdc-acm" driver. | 
|  | 742 |  | 
| Felipe Balbi | 3086775 | 2008-08-18 17:39:30 -0700 | [diff] [blame] | 743 | This driver also supports a CDC-OBEX option.  You will need a | 
|  | 744 | user space OBEX server talking to /dev/ttyGS*, since the kernel | 
|  | 745 | itself doesn't implement the OBEX protocol. | 
|  | 746 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 747 | Say "y" to link the driver statically, or "m" to build a | 
|  | 748 | dynamically linked module called "g_serial". | 
|  | 749 |  | 
|  | 750 | For more information, see Documentation/usb/gadget_serial.txt | 
|  | 751 | which includes instructions and a "driver info file" needed to | 
| Felipe Balbi | 3086775 | 2008-08-18 17:39:30 -0700 | [diff] [blame] | 752 | make MS-Windows work with CDC ACM. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 753 |  | 
| Ben Williamson | f2ebf92c | 2006-08-01 11:28:16 +1000 | [diff] [blame] | 754 | config USB_MIDI_GADGET | 
|  | 755 | tristate "MIDI Gadget (EXPERIMENTAL)" | 
|  | 756 | depends on SND && EXPERIMENTAL | 
|  | 757 | select SND_RAWMIDI | 
|  | 758 | help | 
|  | 759 | The MIDI Gadget acts as a USB Audio device, with one MIDI | 
|  | 760 | input and one MIDI output. These MIDI jacks appear as | 
|  | 761 | a sound "card" in the ALSA sound system. Other MIDI | 
|  | 762 | connections can then be made on the gadget system, using | 
|  | 763 | ALSA's aconnect utility etc. | 
|  | 764 |  | 
|  | 765 | Say "y" to link the driver statically, or "m" to build a | 
|  | 766 | dynamically linked module called "g_midi". | 
|  | 767 |  | 
| Craig W. Nadler | 25a010c | 2007-11-11 15:00:15 -0800 | [diff] [blame] | 768 | config USB_G_PRINTER | 
|  | 769 | tristate "Printer Gadget" | 
|  | 770 | help | 
|  | 771 | The Printer Gadget channels data between the USB host and a | 
|  | 772 | userspace program driving the print engine. The user space | 
|  | 773 | program reads and writes the device file /dev/g_printer to | 
|  | 774 | receive or send printer data. It can use ioctl calls to | 
|  | 775 | the device file to get or set printer status. | 
|  | 776 |  | 
|  | 777 | Say "y" to link the driver statically, or "m" to build a | 
|  | 778 | dynamically linked module called "g_printer". | 
|  | 779 |  | 
|  | 780 | For more information, see Documentation/usb/gadget_printer.txt | 
|  | 781 | which includes sample code for accessing the device file. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 782 |  | 
| David Brownell | 19e2068 | 2008-06-19 18:20:26 -0700 | [diff] [blame] | 783 | config USB_CDC_COMPOSITE | 
|  | 784 | tristate "CDC Composite Device (Ethernet and ACM)" | 
| Randy Dunlap | 4ddd9ec | 2008-07-03 14:44:59 -0700 | [diff] [blame] | 785 | depends on NET | 
| David Brownell | 19e2068 | 2008-06-19 18:20:26 -0700 | [diff] [blame] | 786 | help | 
|  | 787 | This driver provides two functions in one configuration: | 
|  | 788 | a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link. | 
|  | 789 |  | 
|  | 790 | This driver requires four bulk and two interrupt endpoints, | 
|  | 791 | plus the ability to handle altsettings.  Not all peripheral | 
|  | 792 | controllers are that capable. | 
|  | 793 |  | 
|  | 794 | Say "y" to link the driver statically, or "m" to build a | 
|  | 795 | dynamically linked module. | 
|  | 796 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 797 | # put drivers that need isochronous transfer support (for audio | 
|  | 798 | # or video class gadget drivers), or specific hardware, here. | 
|  | 799 |  | 
|  | 800 | # - none yet | 
|  | 801 |  | 
|  | 802 | endchoice | 
|  | 803 |  | 
| Denis Cheng | b75be4a | 2008-01-24 16:36:31 +0800 | [diff] [blame] | 804 | endif # USB_GADGET |