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). 10# - Some systems have both kinds of controllers. 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# 15 16menuconfig USB_GADGET 17 tristate "USB Gadget Support" 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 28 familiar host side controllers have names like "EHCI", "OHCI", 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 44if USB_GADGET 45 46config USB_GADGET_DEBUG 47 boolean "Debugging messages (DEVELOPMENT)" 48 depends on DEBUG_KERNEL 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 60config USB_GADGET_DEBUG_FILES 61 boolean "Debugging information files (DEVELOPMENT)" 62 depends on PROC_FS 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 71config USB_GADGET_DEBUG_FS 72 boolean "Debugging information files in debugfs (DEVELOPMENT)" 73 depends on DEBUG_FS 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 82config 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 99config USB_GADGET_SELECTED 100 boolean 101 102# 103# USB Peripheral Controller Support 104# 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# 112choice 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 121# 122# Integrated controllers 123# 124 125config USB_GADGET_AT91 126 boolean "Atmel AT91 USB Device Port" 127 depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9 && !ARCH_AT91SAM9G45 128 select USB_GADGET_SELECTED 129 help 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). 133 134 Say "y" to link the driver statically, or "m" to build a 135 dynamically linked module called "at91_udc" and force all 136 gadget drivers to also be dynamically linked. 137 138config USB_AT91 139 tristate 140 depends on USB_GADGET_AT91 141 default USB_GADGET 142 143config USB_GADGET_ATMEL_USBA 144 boolean "Atmel USBA" 145 select USB_GADGET_DUALSPEED 146 depends on AVR32 || ARCH_AT91CAP9 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 147 help 148 USBA is the integrated high-speed USB Device controller on 149 the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. 150 151config USB_ATMEL_USBA 152 tristate 153 depends on USB_GADGET_ATMEL_USBA 154 default USB_GADGET 155 select USB_GADGET_SELECTED 156 157config USB_GADGET_FSL_USB2 158 boolean "Freescale Highspeed USB DR Peripheral Controller" 159 depends on FSL_SOC || ARCH_MXC 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 172config USB_FSL_USB2 173 tristate 174 depends on USB_GADGET_FSL_USB2 175 default USB_GADGET 176 select USB_GADGET_SELECTED 177 178config USB_GADGET_LH7A40X 179 boolean "LH7A40X" 180 depends on ARCH_LH7A40X 181 help 182 This driver provides USB Device Controller driver for LH7A40x 183 184config USB_LH7A40X 185 tristate 186 depends on USB_GADGET_LH7A40X 187 default USB_GADGET 188 select USB_GADGET_SELECTED 189 190config USB_GADGET_OMAP 191 boolean "OMAP USB Device Controller" 192 depends on ARCH_OMAP 193 select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_H4_OTG 194 select USB_OTG_UTILS if ARCH_OMAP 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 206config USB_OMAP 207 tristate 208 depends on USB_GADGET_OMAP 209 default USB_GADGET 210 select USB_GADGET_SELECTED 211 212config 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 223config USB_GADGET_PXA25X 224 boolean "PXA 25x or IXP 4xx" 225 depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX 226 select USB_OTG_UTILS 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 239config 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 247config 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 255config 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 267config USB_R8A66597 268 tristate 269 depends on USB_GADGET_R8A66597 270 default USB_GADGET 271 select USB_GADGET_SELECTED 272 273config USB_GADGET_PXA27X 274 boolean "PXA 27x" 275 depends on ARCH_PXA && (PXA27x || PXA3xx) 276 select USB_OTG_UTILS 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 288config USB_PXA27X 289 tristate 290 depends on USB_GADGET_PXA27X 291 default USB_GADGET 292 select USB_GADGET_SELECTED 293 294config 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 select USB_GADGET_DUALSPEED 299 help 300 The Samsung S3C64XX USB2.0 high-speed gadget controller 301 integrated into the S3C64XX series SoC. 302 303config USB_S3C_HSOTG 304 tristate 305 depends on USB_GADGET_S3C_HSOTG 306 default USB_GADGET 307 select USB_GADGET_SELECTED 308 309config USB_GADGET_IMX 310 boolean "Freescale IMX USB Peripheral Controller" 311 depends on ARCH_MX1 312 help 313 Freescale's IMX series include an integrated full speed 314 USB 1.1 device controller. The controller in the IMX series 315 is register-compatible. 316 317 It has Six fixed-function endpoints, as well as endpoint 318 zero (for control transfers). 319 320 Say "y" to link the driver statically, or "m" to build a 321 dynamically linked module called "imx_udc" and force all 322 gadget drivers to also be dynamically linked. 323 324config USB_IMX 325 tristate 326 depends on USB_GADGET_IMX 327 default USB_GADGET 328 select USB_GADGET_SELECTED 329 330config USB_GADGET_S3C2410 331 boolean "S3C2410 USB Device Controller" 332 depends on ARCH_S3C2410 333 help 334 Samsung's S3C2410 is an ARM-4 processor with an integrated 335 full speed USB 1.1 device controller. It has 4 configurable 336 endpoints, as well as endpoint zero (for control transfers). 337 338 This driver has been tested on the S3C2410, S3C2412, and 339 S3C2440 processors. 340 341config USB_S3C2410 342 tristate 343 depends on USB_GADGET_S3C2410 344 default USB_GADGET 345 select USB_GADGET_SELECTED 346 347config USB_S3C2410_DEBUG 348 boolean "S3C2410 udc debug messages" 349 depends on USB_GADGET_S3C2410 350 351# 352# Controllers available in both integrated and discrete versions 353# 354 355# musb builds in ../musb along with host support 356config USB_GADGET_MUSB_HDRC 357 boolean "Inventra HDRC USB Peripheral (TI, ADI, ...)" 358 depends on USB_MUSB_HDRC && (USB_MUSB_PERIPHERAL || USB_MUSB_OTG) 359 select USB_GADGET_DUALSPEED 360 select USB_GADGET_SELECTED 361 help 362 This OTG-capable silicon IP is used in dual designs including 363 the TI DaVinci, OMAP 243x, OMAP 343x, TUSB 6010, and ADI Blackfin 364 365config USB_GADGET_M66592 366 boolean "Renesas M66592 USB Peripheral Controller" 367 select USB_GADGET_DUALSPEED 368 help 369 M66592 is a discrete USB peripheral controller chip that 370 supports both full and high speed USB 2.0 data transfers. 371 It has seven configurable endpoints, and endpoint zero. 372 373 Say "y" to link the driver statically, or "m" to build a 374 dynamically linked module called "m66592_udc" and force all 375 gadget drivers to also be dynamically linked. 376 377config USB_M66592 378 tristate 379 depends on USB_GADGET_M66592 380 default USB_GADGET 381 select USB_GADGET_SELECTED 382 383# 384# Controllers available only in discrete form (and all PCI controllers) 385# 386 387config USB_GADGET_AMD5536UDC 388 boolean "AMD5536 UDC" 389 depends on PCI 390 select USB_GADGET_DUALSPEED 391 help 392 The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. 393 It is a USB Highspeed DMA capable USB device controller. Beside ep0 394 it provides 4 IN and 4 OUT endpoints (bulk or interrupt type). 395 The UDC port supports OTG operation, and may be used as a host port 396 if it's not being used to implement peripheral or OTG roles. 397 398 Say "y" to link the driver statically, or "m" to build a 399 dynamically linked module called "amd5536udc" and force all 400 gadget drivers to also be dynamically linked. 401 402config USB_AMD5536UDC 403 tristate 404 depends on USB_GADGET_AMD5536UDC 405 default USB_GADGET 406 select USB_GADGET_SELECTED 407 408config USB_GADGET_FSL_QE 409 boolean "Freescale QE/CPM USB Device Controller" 410 depends on FSL_SOC && (QUICC_ENGINE || CPM) 411 help 412 Some of Freescale PowerPC processors have a Full Speed 413 QE/CPM2 USB controller, which support device mode with 4 414 programmable endpoints. This driver supports the 415 controller in the MPC8360 and MPC8272, and should work with 416 controllers having QE or CPM2, given minor tweaks. 417 418 Set CONFIG_USB_GADGET to "m" to build this driver as a 419 dynamically linked module called "fsl_qe_udc". 420 421config USB_FSL_QE 422 tristate 423 depends on USB_GADGET_FSL_QE 424 default USB_GADGET 425 select USB_GADGET_SELECTED 426 427config USB_GADGET_CI13XXX 428 boolean "MIPS USB CI13xxx" 429 depends on PCI 430 select USB_GADGET_DUALSPEED 431 help 432 MIPS USB IP core family device controller 433 Currently it only supports IP part number CI13412 434 435 Say "y" to link the driver statically, or "m" to build a 436 dynamically linked module called "ci13xxx_udc" and force all 437 gadget drivers to also be dynamically linked. 438 439config USB_CI13XXX 440 tristate 441 depends on USB_GADGET_CI13XXX 442 default USB_GADGET 443 select USB_GADGET_SELECTED 444 445config USB_GADGET_NET2280 446 boolean "NetChip 228x" 447 depends on PCI 448 select USB_GADGET_DUALSPEED 449 help 450 NetChip 2280 / 2282 is a PCI based USB peripheral controller which 451 supports both full and high speed USB 2.0 data transfers. 452 453 It has six configurable endpoints, as well as endpoint zero 454 (for control transfers) and several endpoints with dedicated 455 functions. 456 457 Say "y" to link the driver statically, or "m" to build a 458 dynamically linked module called "net2280" and force all 459 gadget drivers to also be dynamically linked. 460 461config USB_NET2280 462 tristate 463 depends on USB_GADGET_NET2280 464 default USB_GADGET 465 select USB_GADGET_SELECTED 466 467config USB_GADGET_GOKU 468 boolean "Toshiba TC86C001 'Goku-S'" 469 depends on PCI 470 help 471 The Toshiba TC86C001 is a PCI device which includes controllers 472 for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). 473 474 The device controller has three configurable (bulk or interrupt) 475 endpoints, plus endpoint zero (for control transfers). 476 477 Say "y" to link the driver statically, or "m" to build a 478 dynamically linked module called "goku_udc" and to force all 479 gadget drivers to also be dynamically linked. 480 481config USB_GOKU 482 tristate 483 depends on USB_GADGET_GOKU 484 default USB_GADGET 485 select USB_GADGET_SELECTED 486 487config USB_GADGET_LANGWELL 488 boolean "Intel Langwell USB Device Controller" 489 depends on PCI 490 select USB_GADGET_DUALSPEED 491 help 492 Intel Langwell USB Device Controller is a High-Speed USB 493 On-The-Go device controller. 494 495 The number of programmable endpoints is different through 496 controller revision. 497 498 Say "y" to link the driver statically, or "m" to build a 499 dynamically linked module called "langwell_udc" and force all 500 gadget drivers to also be dynamically linked. 501 502config USB_LANGWELL 503 tristate 504 depends on USB_GADGET_LANGWELL 505 default USB_GADGET 506 select USB_GADGET_SELECTED 507 508 509# 510# LAST -- dummy/emulated controller 511# 512 513config USB_GADGET_DUMMY_HCD 514 boolean "Dummy HCD (DEVELOPMENT)" 515 depends on USB=y || (USB=m && USB_GADGET=m) 516 select USB_GADGET_DUALSPEED 517 help 518 This host controller driver emulates USB, looping all data transfer 519 requests back to a USB "gadget driver" in the same host. The host 520 side is the master; the gadget side is the slave. Gadget drivers 521 can be high, full, or low speed; and they have access to endpoints 522 like those from NET2280, PXA2xx, or SA1100 hardware. 523 524 This may help in some stages of creating a driver to embed in a 525 Linux device, since it lets you debug several parts of the gadget 526 driver without its hardware or drivers being involved. 527 528 Since such a gadget side driver needs to interoperate with a host 529 side Linux-USB device driver, this may help to debug both sides 530 of a USB protocol stack. 531 532 Say "y" to link the driver statically, or "m" to build a 533 dynamically linked module called "dummy_hcd" and force all 534 gadget drivers to also be dynamically linked. 535 536config USB_DUMMY_HCD 537 tristate 538 depends on USB_GADGET_DUMMY_HCD 539 default USB_GADGET 540 select USB_GADGET_SELECTED 541 542# NOTE: Please keep dummy_hcd LAST so that "real hardware" appears 543# first and will be selected by default. 544 545endchoice 546 547config USB_GADGET_DUALSPEED 548 bool 549 depends on USB_GADGET 550 default n 551 help 552 Means that gadget drivers should include extra descriptors 553 and code to handle dual-speed controllers. 554 555# 556# USB Gadget Drivers 557# 558choice 559 tristate "USB Gadget Drivers" 560 depends on USB_GADGET && USB_GADGET_SELECTED 561 default USB_ETH 562 help 563 A Linux "Gadget Driver" talks to the USB Peripheral Controller 564 driver through the abstract "gadget" API. Some other operating 565 systems call these "client" drivers, of which "class drivers" 566 are a subset (implementing a USB device class specification). 567 A gadget driver implements one or more USB functions using 568 the peripheral hardware. 569 570 Gadget drivers are hardware-neutral, or "platform independent", 571 except that they sometimes must understand quirks or limitations 572 of the particular controllers they work with. For example, when 573 a controller doesn't support alternate configurations or provide 574 enough of the right types of endpoints, the gadget driver might 575 not be able work with that controller, or might need to implement 576 a less common variant of a device class protocol. 577 578# this first set of drivers all depend on bulk-capable hardware. 579 580config USB_ZERO 581 tristate "Gadget Zero (DEVELOPMENT)" 582 help 583 Gadget Zero is a two-configuration device. It either sinks and 584 sources bulk data; or it loops back a configurable number of 585 transfers. It also implements control requests, for "chapter 9" 586 conformance. The driver needs only two bulk-capable endpoints, so 587 it can work on top of most device-side usb controllers. It's 588 useful for testing, and is also a working example showing how 589 USB "gadget drivers" can be written. 590 591 Make this be the first driver you try using on top of any new 592 USB peripheral controller driver. Then you can use host-side 593 test software, like the "usbtest" driver, to put your hardware 594 and its driver through a basic set of functional tests. 595 596 Gadget Zero also works with the host-side "usb-skeleton" driver, 597 and with many kinds of host-side test software. You may need 598 to tweak product and vendor IDs before host software knows about 599 this device, and arrange to select an appropriate configuration. 600 601 Say "y" to link the driver statically, or "m" to build a 602 dynamically linked module called "g_zero". 603 604config USB_ZERO_HNPTEST 605 boolean "HNP Test Device" 606 depends on USB_ZERO && USB_OTG 607 help 608 You can configure this device to enumerate using the device 609 identifiers of the USB-OTG test device. That means that when 610 this gadget connects to another OTG device, with this one using 611 the "B-Peripheral" role, that device will use HNP to let this 612 one serve as the USB host instead (in the "B-Host" role). 613 614config USB_AUDIO 615 tristate "Audio Gadget (EXPERIMENTAL)" 616 depends on SND 617 select SND_PCM 618 help 619 Gadget Audio is compatible with USB Audio Class specification 1.0. 620 It will include at least one AudioControl interface, zero or more 621 AudioStream interface and zero or more MIDIStream interface. 622 623 Gadget Audio will use on-board ALSA (CONFIG_SND) audio card to 624 playback or capture audio stream. 625 626 Say "y" to link the driver statically, or "m" to build a 627 dynamically linked module called "g_audio". 628 629config USB_ETH 630 tristate "Ethernet Gadget (with CDC Ethernet support)" 631 depends on NET 632 select CRC32 633 help 634 This driver implements Ethernet style communication, in one of 635 several ways: 636 637 - The "Communication Device Class" (CDC) Ethernet Control Model. 638 That protocol is often avoided with pure Ethernet adapters, in 639 favor of simpler vendor-specific hardware, but is widely 640 supported by firmware for smart network devices. 641 642 - On hardware can't implement that protocol, a simple CDC subset 643 is used, placing fewer demands on USB. 644 645 - CDC Ethernet Emulation Model (EEM) is a newer standard that has 646 a simpler interface that can be used by more USB hardware. 647 648 RNDIS support is an additional option, more demanding than than 649 subset. 650 651 Within the USB device, this gadget driver exposes a network device 652 "usbX", where X depends on what other networking devices you have. 653 Treat it like a two-node Ethernet link: host, and gadget. 654 655 The Linux-USB host-side "usbnet" driver interoperates with this 656 driver, so that deep I/O queues can be supported. On 2.4 kernels, 657 use "CDCEther" instead, if you're using the CDC option. That CDC 658 mode should also interoperate with standard CDC Ethernet class 659 drivers on other host operating systems. 660 661 Say "y" to link the driver statically, or "m" to build a 662 dynamically linked module called "g_ether". 663 664config USB_ETH_RNDIS 665 bool "RNDIS support" 666 depends on USB_ETH 667 default y 668 help 669 Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol, 670 and Microsoft provides redistributable binary RNDIS drivers for 671 older versions of Windows. 672 673 If you say "y" here, the Ethernet gadget driver will try to provide 674 a second device configuration, supporting RNDIS to talk to such 675 Microsoft USB hosts. 676 677 To make MS-Windows work with this, use Documentation/usb/linux.inf 678 as the "driver info file". For versions of MS-Windows older than 679 XP, you'll need to download drivers from Microsoft's website; a URL 680 is given in comments found in that info file. 681 682config USB_ETH_EEM 683 bool "Ethernet Emulation Model (EEM) support" 684 depends on USB_ETH 685 default n 686 help 687 CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM 688 and therefore can be supported by more hardware. Technically ECM and 689 EEM are designed for different applications. The ECM model extends 690 the network interface to the target (e.g. a USB cable modem), and the 691 EEM model is for mobile devices to communicate with hosts using 692 ethernet over USB. For Linux gadgets, however, the interface with 693 the host is the same (a usbX device), so the differences are minimal. 694 695 If you say "y" here, the Ethernet gadget driver will use the EEM 696 protocol rather than ECM. If unsure, say "n". 697 698config USB_GADGETFS 699 tristate "Gadget Filesystem (EXPERIMENTAL)" 700 depends on EXPERIMENTAL 701 help 702 This driver provides a filesystem based API that lets user mode 703 programs implement a single-configuration USB device, including 704 endpoint I/O and control requests that don't relate to enumeration. 705 All endpoints, transfer speeds, and transfer types supported by 706 the hardware are available, through read() and write() calls. 707 708 Currently, this option is still labelled as EXPERIMENTAL because 709 of existing race conditions in the underlying in-kernel AIO core. 710 711 Say "y" to link the driver statically, or "m" to build a 712 dynamically linked module called "gadgetfs". 713 714config USB_FUNCTIONFS 715 tristate "Function Filesystem (EXPERIMENTAL)" 716 depends on EXPERIMENTAL 717 select USB_FUNCTIONFS_GENERIC if !(USB_FUNCTIONFS_ETH || USB_FUNCTIONFS_RNDIS) 718 help 719 The Function Filesystem (FunctioFS) lets one create USB 720 composite functions in user space in the same way as GadgetFS 721 lets one create USB gadgets in user space. This allows creation 722 of composite gadgets such that some of the functions are 723 implemented in kernel space (for instance Ethernet, serial or 724 mass storage) and other are implemented in user space. 725 726 If you say "y" or "m" here you will be able what kind of 727 configurations the gadget will provide. 728 729 Say "y" to link the driver statically, or "m" to build 730 a dynamically linked module called "g_ffs". 731 732config USB_FUNCTIONFS_ETH 733 bool "Include configuration with CDC ECM (Ethernet)" 734 depends on USB_FUNCTIONFS && NET 735 help 736 Include a configuration with CDC ECM funcion (Ethernet) and the 737 Funcion Filesystem. 738 739config USB_FUNCTIONFS_RNDIS 740 bool "Include configuration with RNDIS (Ethernet)" 741 depends on USB_FUNCTIONFS && NET 742 help 743 Include a configuration with RNDIS funcion (Ethernet) and the Filesystem. 744 745config USB_FUNCTIONFS_GENERIC 746 bool "Include 'pure' configuration" 747 depends on USB_FUNCTIONFS 748 help 749 Include a configuration with the Function Filesystem alone with 750 no Ethernet interface. 751 752config USB_FILE_STORAGE 753 tristate "File-backed Storage Gadget" 754 depends on BLOCK 755 help 756 The File-backed Storage Gadget acts as a USB Mass Storage 757 disk drive. As its storage repository it can use a regular 758 file or a block device (in much the same way as the "loop" 759 device driver), specified as a module parameter. 760 761 Say "y" to link the driver statically, or "m" to build a 762 dynamically linked module called "g_file_storage". 763 764config USB_FILE_STORAGE_TEST 765 bool "File-backed Storage Gadget testing version" 766 depends on USB_FILE_STORAGE 767 default n 768 help 769 Say "y" to generate the larger testing version of the 770 File-backed Storage Gadget, useful for probing the 771 behavior of USB Mass Storage hosts. Not needed for 772 normal operation. 773 774config USB_MASS_STORAGE 775 tristate "Mass Storage Gadget" 776 depends on BLOCK 777 help 778 The Mass Storage Gadget acts as a USB Mass Storage disk drive. 779 As its storage repository it can use a regular file or a block 780 device (in much the same way as the "loop" device driver), 781 specified as a module parameter or sysfs option. 782 783 This is heavily based on File-backed Storage Gadget and in most 784 cases you will want to use FSG instead. This gadget is mostly 785 here to test the functionality of the Mass Storage Function 786 which may be used with composite framework. 787 788 Say "y" to link the driver statically, or "m" to build 789 a dynamically linked module called "g_mass_storage". If unsure, 790 consider File-backed Storage Gadget. 791 792config USB_G_SERIAL 793 tristate "Serial Gadget (with CDC ACM and CDC OBEX support)" 794 help 795 The Serial Gadget talks to the Linux-USB generic serial driver. 796 This driver supports a CDC-ACM module option, which can be used 797 to interoperate with MS-Windows hosts or with the Linux-USB 798 "cdc-acm" driver. 799 800 This driver also supports a CDC-OBEX option. You will need a 801 user space OBEX server talking to /dev/ttyGS*, since the kernel 802 itself doesn't implement the OBEX protocol. 803 804 Say "y" to link the driver statically, or "m" to build a 805 dynamically linked module called "g_serial". 806 807 For more information, see Documentation/usb/gadget_serial.txt 808 which includes instructions and a "driver info file" needed to 809 make MS-Windows work with CDC ACM. 810 811config USB_MIDI_GADGET 812 tristate "MIDI Gadget (EXPERIMENTAL)" 813 depends on SND && EXPERIMENTAL 814 select SND_RAWMIDI 815 help 816 The MIDI Gadget acts as a USB Audio device, with one MIDI 817 input and one MIDI output. These MIDI jacks appear as 818 a sound "card" in the ALSA sound system. Other MIDI 819 connections can then be made on the gadget system, using 820 ALSA's aconnect utility etc. 821 822 Say "y" to link the driver statically, or "m" to build a 823 dynamically linked module called "g_midi". 824 825config USB_G_PRINTER 826 tristate "Printer Gadget" 827 help 828 The Printer Gadget channels data between the USB host and a 829 userspace program driving the print engine. The user space 830 program reads and writes the device file /dev/g_printer to 831 receive or send printer data. It can use ioctl calls to 832 the device file to get or set printer status. 833 834 Say "y" to link the driver statically, or "m" to build a 835 dynamically linked module called "g_printer". 836 837 For more information, see Documentation/usb/gadget_printer.txt 838 which includes sample code for accessing the device file. 839 840config USB_CDC_COMPOSITE 841 tristate "CDC Composite Device (Ethernet and ACM)" 842 depends on NET 843 help 844 This driver provides two functions in one configuration: 845 a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link. 846 847 This driver requires four bulk and two interrupt endpoints, 848 plus the ability to handle altsettings. Not all peripheral 849 controllers are that capable. 850 851 Say "y" to link the driver statically, or "m" to build a 852 dynamically linked module. 853 854config USB_G_NOKIA 855 tristate "Nokia composite gadget" 856 depends on PHONET 857 help 858 The Nokia composite gadget provides support for acm, obex 859 and phonet in only one composite gadget driver. 860 861 It's only really useful for N900 hardware. If you're building 862 a kernel for N900, say Y or M here. If unsure, say N. 863 864config USB_G_MULTI 865 tristate "Multifunction Composite Gadget (EXPERIMENTAL)" 866 depends on BLOCK && NET 867 select USB_G_MULTI_CDC if !USB_G_MULTI_RNDIS 868 help 869 The Multifunction Composite Gadget provides Ethernet (RNDIS 870 and/or CDC Ethernet), mass storage and ACM serial link 871 interfaces. 872 873 You will be asked to choose which of the two configurations is 874 to be available in the gadget. At least one configuration must 875 be chosen to make the gadget usable. Selecting more than one 876 configuration will prevent Windows from automatically detecting 877 the gadget as a composite gadget, so an INF file will be needed to 878 use the gadget. 879 880 Say "y" to link the driver statically, or "m" to build a 881 dynamically linked module called "g_multi". 882 883config USB_G_MULTI_RNDIS 884 bool "RNDIS + CDC Serial + Storage configuration" 885 depends on USB_G_MULTI 886 default y 887 help 888 This option enables a configuration with RNDIS, CDC Serial and 889 Mass Storage functions available in the Multifunction Composite 890 Gadget. This is the configuration dedicated for Windows since RNDIS 891 is Microsoft's protocol. 892 893 If unsure, say "y". 894 895config USB_G_MULTI_CDC 896 bool "CDC Ethernet + CDC Serial + Storage configuration" 897 depends on USB_G_MULTI 898 default n 899 help 900 This option enables a configuration with CDC Ethernet (ECM), CDC 901 Serial and Mass Storage functions available in the Multifunction 902 Composite Gadget. 903 904 If unsure, say "y". 905 906config USB_G_HID 907 tristate "HID Gadget" 908 help 909 The HID gadget driver provides generic emulation of USB 910 Human Interface Devices (HID). 911 912 For more information, see Documentation/usb/gadget_hid.txt which 913 includes sample code for accessing the device files. 914 915 Say "y" to link the driver statically, or "m" to build a 916 dynamically linked module called "g_hid". 917 918config USB_G_DBGP 919 tristate "EHCI Debug Device Gadget" 920 help 921 This gadget emulates an EHCI Debug device. This is useful when you want 922 to interact with an EHCI Debug Port. 923 924 Say "y" to link the driver statically, or "m" to build a 925 dynamically linked module called "g_dbgp". 926 927if USB_G_DBGP 928choice 929 prompt "EHCI Debug Device mode" 930 default USB_G_DBGP_SERIAL 931 932config USB_G_DBGP_PRINTK 933 depends on USB_G_DBGP 934 bool "printk" 935 help 936 Directly printk() received data. No interaction. 937 938config USB_G_DBGP_SERIAL 939 depends on USB_G_DBGP 940 bool "serial" 941 help 942 Userland can interact using /dev/ttyGSxxx. 943endchoice 944endif 945 946# put drivers that need isochronous transfer support (for audio 947# or video class gadget drivers), or specific hardware, here. 948config USB_G_WEBCAM 949 tristate "USB Webcam Gadget" 950 depends on VIDEO_DEV 951 help 952 The Webcam Gadget acts as a composite USB Audio and Video Class 953 device. It provides a userspace API to process UVC control requests 954 and stream video data to the host. 955 956 Say "y" to link the driver statically, or "m" to build a 957 dynamically linked module called "g_webcam". 958 959endchoice 960 961endif # USB_GADGET 962