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 select USB_FSL_MPH_DR_OF if OF 162 help 163 Some of Freescale PowerPC processors have a High Speed 164 Dual-Role(DR) USB controller, which supports device mode. 165 166 The number of programmable endpoints is different through 167 SOC revisions. 168 169 Say "y" to link the driver statically, or "m" to build a 170 dynamically linked module called "fsl_usb2_udc" and force 171 all gadget drivers to also be dynamically linked. 172 173config USB_FSL_USB2 174 tristate 175 depends on USB_GADGET_FSL_USB2 176 default USB_GADGET 177 select USB_GADGET_SELECTED 178 179config USB_GADGET_FUSB300 180 boolean "Faraday FUSB300 USB Peripheral Controller" 181 select USB_GADGET_DUALSPEED 182 help 183 Faraday usb device controller FUSB300 driver 184 185config USB_FUSB300 186 tristate 187 depends on USB_GADGET_FUSB300 188 default USB_GADGET 189 select USB_GADGET_SELECTED 190 191config USB_GADGET_OMAP 192 boolean "OMAP USB Device Controller" 193 depends on ARCH_OMAP 194 select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_H4_OTG 195 select USB_OTG_UTILS if ARCH_OMAP 196 help 197 Many Texas Instruments OMAP processors have flexible full 198 speed USB device controllers, with support for up to 30 199 endpoints (plus endpoint zero). This driver supports the 200 controller in the OMAP 1611, and should work with controllers 201 in other OMAP processors too, given minor tweaks. 202 203 Say "y" to link the driver statically, or "m" to build a 204 dynamically linked module called "omap_udc" and force all 205 gadget drivers to also be dynamically linked. 206 207config USB_OMAP 208 tristate 209 depends on USB_GADGET_OMAP 210 default USB_GADGET 211 select USB_GADGET_SELECTED 212 213config USB_GADGET_PXA25X 214 boolean "PXA 25x or IXP 4xx" 215 depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX 216 select USB_OTG_UTILS 217 help 218 Intel's PXA 25x series XScale ARM-5TE processors include 219 an integrated full speed USB 1.1 device controller. The 220 controller in the IXP 4xx series is register-compatible. 221 222 It has fifteen fixed-function endpoints, as well as endpoint 223 zero (for control transfers). 224 225 Say "y" to link the driver statically, or "m" to build a 226 dynamically linked module called "pxa25x_udc" and force all 227 gadget drivers to also be dynamically linked. 228 229config USB_PXA25X 230 tristate 231 depends on USB_GADGET_PXA25X 232 default USB_GADGET 233 select USB_GADGET_SELECTED 234 235# if there's only one gadget driver, using only two bulk endpoints, 236# don't waste memory for the other endpoints 237config USB_PXA25X_SMALL 238 depends on USB_GADGET_PXA25X 239 bool 240 default n if USB_ETH_RNDIS 241 default y if USB_ZERO 242 default y if USB_ETH 243 default y if USB_G_SERIAL 244 245config USB_GADGET_R8A66597 246 boolean "Renesas R8A66597 USB Peripheral Controller" 247 select USB_GADGET_DUALSPEED 248 help 249 R8A66597 is a discrete USB host and peripheral controller chip that 250 supports both full and high speed USB 2.0 data transfers. 251 It has nine configurable endpoints, and endpoint zero. 252 253 Say "y" to link the driver statically, or "m" to build a 254 dynamically linked module called "r8a66597_udc" and force all 255 gadget drivers to also be dynamically linked. 256 257config USB_R8A66597 258 tristate 259 depends on USB_GADGET_R8A66597 260 default USB_GADGET 261 select USB_GADGET_SELECTED 262 263config USB_GADGET_RENESAS_USBHS 264 boolean "Renesas USBHS" 265 depends on USB_RENESAS_USBHS 266 select USB_GADGET_DUALSPEED 267 help 268 Renesas USBHS is a discrete USB host and peripheral controller 269 chip that supports both full and high speed USB 2.0 data transfers. 270 platform is able to configure endpoint (pipe) style 271 272 Say "y" to enable the gadget specific portion of the USBHS driver. 273 274 275config USB_RENESAS_USBHS_UDC 276 tristate 277 depends on USB_GADGET_RENESAS_USBHS 278 default USB_GADGET 279 select USB_GADGET_SELECTED 280 281config USB_GADGET_PXA27X 282 boolean "PXA 27x" 283 depends on ARCH_PXA && (PXA27x || PXA3xx) 284 select USB_OTG_UTILS 285 help 286 Intel's PXA 27x series XScale ARM v5TE processors include 287 an integrated full speed USB 1.1 device controller. 288 289 It has up to 23 endpoints, as well as endpoint zero (for 290 control transfers). 291 292 Say "y" to link the driver statically, or "m" to build a 293 dynamically linked module called "pxa27x_udc" and force all 294 gadget drivers to also be dynamically linked. 295 296config USB_PXA27X 297 tristate 298 depends on USB_GADGET_PXA27X 299 default USB_GADGET 300 select USB_GADGET_SELECTED 301 302config USB_GADGET_S3C_HSOTG 303 boolean "S3C HS/OtG USB Device controller" 304 depends on S3C_DEV_USB_HSOTG 305 select USB_GADGET_S3C_HSOTG_PIO 306 select USB_GADGET_DUALSPEED 307 help 308 The Samsung S3C64XX USB2.0 high-speed gadget controller 309 integrated into the S3C64XX series SoC. 310 311config USB_S3C_HSOTG 312 tristate 313 depends on USB_GADGET_S3C_HSOTG 314 default USB_GADGET 315 select USB_GADGET_SELECTED 316 317config USB_GADGET_IMX 318 boolean "Freescale IMX USB Peripheral Controller" 319 depends on ARCH_MX1 320 help 321 Freescale's IMX series include an integrated full speed 322 USB 1.1 device controller. The controller in the IMX series 323 is register-compatible. 324 325 It has Six fixed-function endpoints, as well as endpoint 326 zero (for control transfers). 327 328 Say "y" to link the driver statically, or "m" to build a 329 dynamically linked module called "imx_udc" and force all 330 gadget drivers to also be dynamically linked. 331 332config USB_IMX 333 tristate 334 depends on USB_GADGET_IMX 335 default USB_GADGET 336 select USB_GADGET_SELECTED 337 338config USB_GADGET_S3C2410 339 boolean "S3C2410 USB Device Controller" 340 depends on ARCH_S3C2410 341 help 342 Samsung's S3C2410 is an ARM-4 processor with an integrated 343 full speed USB 1.1 device controller. It has 4 configurable 344 endpoints, as well as endpoint zero (for control transfers). 345 346 This driver has been tested on the S3C2410, S3C2412, and 347 S3C2440 processors. 348 349config USB_S3C2410 350 tristate 351 depends on USB_GADGET_S3C2410 352 default USB_GADGET 353 select USB_GADGET_SELECTED 354 355config USB_S3C2410_DEBUG 356 boolean "S3C2410 udc debug messages" 357 depends on USB_GADGET_S3C2410 358 359config USB_GADGET_S3C_HSUDC 360 boolean "S3C2416, S3C2443 and S3C2450 USB Device Controller" 361 depends on ARCH_S3C2410 362 select USB_GADGET_DUALSPEED 363 help 364 Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC 365 integrated with dual speed USB 2.0 device controller. It has 366 8 endpoints, as well as endpoint zero. 367 368 This driver has been tested on S3C2416 and S3C2450 processors. 369 370config USB_S3C_HSUDC 371 tristate 372 depends on USB_GADGET_S3C_HSUDC 373 default USB_GADGET 374 select USB_GADGET_SELECTED 375 376config USB_GADGET_PXA_U2O 377 boolean "PXA9xx Processor USB2.0 controller" 378 select USB_GADGET_DUALSPEED 379 help 380 PXA9xx Processor series include a high speed USB2.0 device 381 controller, which support high speed and full speed USB peripheral. 382 383config USB_PXA_U2O 384 tristate 385 depends on USB_GADGET_PXA_U2O 386 default USB_GADGET 387 select USB_GADGET_SELECTED 388 389# 390# Controllers available in both integrated and discrete versions 391# 392 393# musb builds in ../musb along with host support 394config USB_GADGET_MUSB_HDRC 395 boolean "Inventra HDRC USB Peripheral (TI, ADI, ...)" 396 depends on USB_MUSB_HDRC && (USB_MUSB_PERIPHERAL || USB_MUSB_OTG) 397 select USB_GADGET_DUALSPEED 398 select USB_GADGET_SELECTED 399 help 400 This OTG-capable silicon IP is used in dual designs including 401 the TI DaVinci, OMAP 243x, OMAP 343x, TUSB 6010, and ADI Blackfin 402 403config USB_GADGET_M66592 404 boolean "Renesas M66592 USB Peripheral Controller" 405 select USB_GADGET_DUALSPEED 406 help 407 M66592 is a discrete USB peripheral controller chip that 408 supports both full and high speed USB 2.0 data transfers. 409 It has seven configurable endpoints, and endpoint zero. 410 411 Say "y" to link the driver statically, or "m" to build a 412 dynamically linked module called "m66592_udc" and force all 413 gadget drivers to also be dynamically linked. 414 415config USB_M66592 416 tristate 417 depends on USB_GADGET_M66592 418 default USB_GADGET 419 select USB_GADGET_SELECTED 420 421# 422# Controllers available only in discrete form (and all PCI controllers) 423# 424 425config USB_GADGET_AMD5536UDC 426 boolean "AMD5536 UDC" 427 depends on PCI 428 select USB_GADGET_DUALSPEED 429 help 430 The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. 431 It is a USB Highspeed DMA capable USB device controller. Beside ep0 432 it provides 4 IN and 4 OUT endpoints (bulk or interrupt type). 433 The UDC port supports OTG operation, and may be used as a host port 434 if it's not being used to implement peripheral or OTG roles. 435 436 Say "y" to link the driver statically, or "m" to build a 437 dynamically linked module called "amd5536udc" and force all 438 gadget drivers to also be dynamically linked. 439 440config USB_AMD5536UDC 441 tristate 442 depends on USB_GADGET_AMD5536UDC 443 default USB_GADGET 444 select USB_GADGET_SELECTED 445 446config USB_GADGET_FSL_QE 447 boolean "Freescale QE/CPM USB Device Controller" 448 depends on FSL_SOC && (QUICC_ENGINE || CPM) 449 help 450 Some of Freescale PowerPC processors have a Full Speed 451 QE/CPM2 USB controller, which support device mode with 4 452 programmable endpoints. This driver supports the 453 controller in the MPC8360 and MPC8272, and should work with 454 controllers having QE or CPM2, given minor tweaks. 455 456 Set CONFIG_USB_GADGET to "m" to build this driver as a 457 dynamically linked module called "fsl_qe_udc". 458 459config USB_FSL_QE 460 tristate 461 depends on USB_GADGET_FSL_QE 462 default USB_GADGET 463 select USB_GADGET_SELECTED 464 465config USB_GADGET_CI13XXX_PCI 466 boolean "MIPS USB CI13xxx PCI UDC" 467 depends on PCI 468 select USB_GADGET_DUALSPEED 469 help 470 MIPS USB IP core family device controller 471 Currently it only supports IP part number CI13412 472 473 Say "y" to link the driver statically, or "m" to build a 474 dynamically linked module called "ci13xxx_udc" and force all 475 gadget drivers to also be dynamically linked. 476 477config USB_CI13XXX_PCI 478 tristate 479 depends on USB_GADGET_CI13XXX_PCI 480 default USB_GADGET 481 select USB_GADGET_SELECTED 482 483config USB_GADGET_NET2280 484 boolean "NetChip 228x" 485 depends on PCI 486 select USB_GADGET_DUALSPEED 487 help 488 NetChip 2280 / 2282 is a PCI based USB peripheral controller which 489 supports both full and high speed USB 2.0 data transfers. 490 491 It has six configurable endpoints, as well as endpoint zero 492 (for control transfers) and several endpoints with dedicated 493 functions. 494 495 Say "y" to link the driver statically, or "m" to build a 496 dynamically linked module called "net2280" and force all 497 gadget drivers to also be dynamically linked. 498 499config USB_NET2280 500 tristate 501 depends on USB_GADGET_NET2280 502 default USB_GADGET 503 select USB_GADGET_SELECTED 504 505config USB_GADGET_GOKU 506 boolean "Toshiba TC86C001 'Goku-S'" 507 depends on PCI 508 help 509 The Toshiba TC86C001 is a PCI device which includes controllers 510 for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). 511 512 The device controller has three configurable (bulk or interrupt) 513 endpoints, plus endpoint zero (for control transfers). 514 515 Say "y" to link the driver statically, or "m" to build a 516 dynamically linked module called "goku_udc" and to force all 517 gadget drivers to also be dynamically linked. 518 519config USB_GOKU 520 tristate 521 depends on USB_GADGET_GOKU 522 default USB_GADGET 523 select USB_GADGET_SELECTED 524 525config USB_GADGET_LANGWELL 526 boolean "Intel Langwell USB Device Controller" 527 depends on PCI 528 select USB_GADGET_DUALSPEED 529 help 530 Intel Langwell USB Device Controller is a High-Speed USB 531 On-The-Go device controller. 532 533 The number of programmable endpoints is different through 534 controller revision. 535 536 Say "y" to link the driver statically, or "m" to build a 537 dynamically linked module called "langwell_udc" and force all 538 gadget drivers to also be dynamically linked. 539 540config USB_LANGWELL 541 tristate 542 depends on USB_GADGET_LANGWELL 543 default USB_GADGET 544 select USB_GADGET_SELECTED 545 546config USB_GADGET_EG20T 547 boolean "Intel EG20T PCH/OKI SEMICONDUCTOR ML7213 IOH UDC" 548 depends on PCI 549 select USB_GADGET_DUALSPEED 550 help 551 This is a USB device driver for EG20T PCH. 552 EG20T PCH is the platform controller hub that is used in Intel's 553 general embedded platform. EG20T PCH has USB device interface. 554 Using this interface, it is able to access system devices connected 555 to USB device. 556 This driver enables USB device function. 557 USB device is a USB peripheral controller which 558 supports both full and high speed USB 2.0 data transfers. 559 This driver supports both control transfer and bulk transfer modes. 560 This driver dose not support interrupt transfer or isochronous 561 transfer modes. 562 563 This driver also can be used for OKI SEMICONDUCTOR's ML7213 which is 564 for IVI(In-Vehicle Infotainment) use. 565 ML7213 is companion chip for Intel Atom E6xx series. 566 ML7213 is completely compatible for Intel EG20T PCH. 567 568config USB_EG20T 569 tristate 570 depends on USB_GADGET_EG20T 571 default USB_GADGET 572 select USB_GADGET_SELECTED 573 574config USB_GADGET_CI13XXX_MSM 575 boolean "MIPS USB CI13xxx for MSM" 576 depends on ARCH_MSM 577 select USB_GADGET_DUALSPEED 578 select USB_MSM_OTG 579 help 580 MSM SoC has chipidea USB controller. This driver uses 581 ci13xxx_udc core. 582 This driver depends on OTG driver for PHY initialization, 583 clock management, powering up VBUS, and power management. 584 This driver is not supported on boards like trout which 585 has an external PHY. 586 587 Say "y" to link the driver statically, or "m" to build a 588 dynamically linked module called "ci13xxx_msm" and force all 589 gadget drivers to also be dynamically linked. 590 591config USB_CI13XXX_MSM 592 tristate 593 depends on USB_GADGET_CI13XXX_MSM 594 default USB_GADGET 595 select USB_GADGET_SELECTED 596 597# 598# LAST -- dummy/emulated controller 599# 600 601config USB_GADGET_DUMMY_HCD 602 boolean "Dummy HCD (DEVELOPMENT)" 603 depends on USB=y || (USB=m && USB_GADGET=m) 604 select USB_GADGET_DUALSPEED 605 help 606 This host controller driver emulates USB, looping all data transfer 607 requests back to a USB "gadget driver" in the same host. The host 608 side is the master; the gadget side is the slave. Gadget drivers 609 can be high, full, or low speed; and they have access to endpoints 610 like those from NET2280, PXA2xx, or SA1100 hardware. 611 612 This may help in some stages of creating a driver to embed in a 613 Linux device, since it lets you debug several parts of the gadget 614 driver without its hardware or drivers being involved. 615 616 Since such a gadget side driver needs to interoperate with a host 617 side Linux-USB device driver, this may help to debug both sides 618 of a USB protocol stack. 619 620 Say "y" to link the driver statically, or "m" to build a 621 dynamically linked module called "dummy_hcd" and force all 622 gadget drivers to also be dynamically linked. 623 624config USB_DUMMY_HCD 625 tristate 626 depends on USB_GADGET_DUMMY_HCD 627 default USB_GADGET 628 select USB_GADGET_SELECTED 629 630# NOTE: Please keep dummy_hcd LAST so that "real hardware" appears 631# first and will be selected by default. 632 633endchoice 634 635# Selected by UDC drivers that support high-speed operation. 636config USB_GADGET_DUALSPEED 637 bool 638 depends on USB_GADGET 639 640# 641# USB Gadget Drivers 642# 643choice 644 tristate "USB Gadget Drivers" 645 depends on USB_GADGET && USB_GADGET_SELECTED 646 default USB_ETH 647 help 648 A Linux "Gadget Driver" talks to the USB Peripheral Controller 649 driver through the abstract "gadget" API. Some other operating 650 systems call these "client" drivers, of which "class drivers" 651 are a subset (implementing a USB device class specification). 652 A gadget driver implements one or more USB functions using 653 the peripheral hardware. 654 655 Gadget drivers are hardware-neutral, or "platform independent", 656 except that they sometimes must understand quirks or limitations 657 of the particular controllers they work with. For example, when 658 a controller doesn't support alternate configurations or provide 659 enough of the right types of endpoints, the gadget driver might 660 not be able work with that controller, or might need to implement 661 a less common variant of a device class protocol. 662 663# this first set of drivers all depend on bulk-capable hardware. 664 665config USB_ZERO 666 tristate "Gadget Zero (DEVELOPMENT)" 667 help 668 Gadget Zero is a two-configuration device. It either sinks and 669 sources bulk data; or it loops back a configurable number of 670 transfers. It also implements control requests, for "chapter 9" 671 conformance. The driver needs only two bulk-capable endpoints, so 672 it can work on top of most device-side usb controllers. It's 673 useful for testing, and is also a working example showing how 674 USB "gadget drivers" can be written. 675 676 Make this be the first driver you try using on top of any new 677 USB peripheral controller driver. Then you can use host-side 678 test software, like the "usbtest" driver, to put your hardware 679 and its driver through a basic set of functional tests. 680 681 Gadget Zero also works with the host-side "usb-skeleton" driver, 682 and with many kinds of host-side test software. You may need 683 to tweak product and vendor IDs before host software knows about 684 this device, and arrange to select an appropriate configuration. 685 686 Say "y" to link the driver statically, or "m" to build a 687 dynamically linked module called "g_zero". 688 689config USB_ZERO_HNPTEST 690 boolean "HNP Test Device" 691 depends on USB_ZERO && USB_OTG 692 help 693 You can configure this device to enumerate using the device 694 identifiers of the USB-OTG test device. That means that when 695 this gadget connects to another OTG device, with this one using 696 the "B-Peripheral" role, that device will use HNP to let this 697 one serve as the USB host instead (in the "B-Host" role). 698 699config USB_AUDIO 700 tristate "Audio Gadget (EXPERIMENTAL)" 701 depends on SND 702 select SND_PCM 703 help 704 Gadget Audio is compatible with USB Audio Class specification 1.0. 705 It will include at least one AudioControl interface, zero or more 706 AudioStream interface and zero or more MIDIStream interface. 707 708 Gadget Audio will use on-board ALSA (CONFIG_SND) audio card to 709 playback or capture audio stream. 710 711 Say "y" to link the driver statically, or "m" to build a 712 dynamically linked module called "g_audio". 713 714config USB_ETH 715 tristate "Ethernet Gadget (with CDC Ethernet support)" 716 depends on NET 717 select CRC32 718 help 719 This driver implements Ethernet style communication, in one of 720 several ways: 721 722 - The "Communication Device Class" (CDC) Ethernet Control Model. 723 That protocol is often avoided with pure Ethernet adapters, in 724 favor of simpler vendor-specific hardware, but is widely 725 supported by firmware for smart network devices. 726 727 - On hardware can't implement that protocol, a simple CDC subset 728 is used, placing fewer demands on USB. 729 730 - CDC Ethernet Emulation Model (EEM) is a newer standard that has 731 a simpler interface that can be used by more USB hardware. 732 733 RNDIS support is an additional option, more demanding than than 734 subset. 735 736 Within the USB device, this gadget driver exposes a network device 737 "usbX", where X depends on what other networking devices you have. 738 Treat it like a two-node Ethernet link: host, and gadget. 739 740 The Linux-USB host-side "usbnet" driver interoperates with this 741 driver, so that deep I/O queues can be supported. On 2.4 kernels, 742 use "CDCEther" instead, if you're using the CDC option. That CDC 743 mode should also interoperate with standard CDC Ethernet class 744 drivers on other host operating systems. 745 746 Say "y" to link the driver statically, or "m" to build a 747 dynamically linked module called "g_ether". 748 749config USB_ETH_RNDIS 750 bool "RNDIS support" 751 depends on USB_ETH 752 default y 753 help 754 Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol, 755 and Microsoft provides redistributable binary RNDIS drivers for 756 older versions of Windows. 757 758 If you say "y" here, the Ethernet gadget driver will try to provide 759 a second device configuration, supporting RNDIS to talk to such 760 Microsoft USB hosts. 761 762 To make MS-Windows work with this, use Documentation/usb/linux.inf 763 as the "driver info file". For versions of MS-Windows older than 764 XP, you'll need to download drivers from Microsoft's website; a URL 765 is given in comments found in that info file. 766 767config USB_ETH_EEM 768 bool "Ethernet Emulation Model (EEM) support" 769 depends on USB_ETH 770 default n 771 help 772 CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM 773 and therefore can be supported by more hardware. Technically ECM and 774 EEM are designed for different applications. The ECM model extends 775 the network interface to the target (e.g. a USB cable modem), and the 776 EEM model is for mobile devices to communicate with hosts using 777 ethernet over USB. For Linux gadgets, however, the interface with 778 the host is the same (a usbX device), so the differences are minimal. 779 780 If you say "y" here, the Ethernet gadget driver will use the EEM 781 protocol rather than ECM. If unsure, say "n". 782 783config USB_G_NCM 784 tristate "Network Control Model (NCM) support" 785 depends on NET 786 select CRC32 787 help 788 This driver implements USB CDC NCM subclass standard. NCM is 789 an advanced protocol for Ethernet encapsulation, allows grouping 790 of several ethernet frames into one USB transfer and diffferent 791 alignment possibilities. 792 793 Say "y" to link the driver statically, or "m" to build a 794 dynamically linked module called "g_ncm". 795 796config USB_GADGETFS 797 tristate "Gadget Filesystem (EXPERIMENTAL)" 798 depends on EXPERIMENTAL 799 help 800 This driver provides a filesystem based API that lets user mode 801 programs implement a single-configuration USB device, including 802 endpoint I/O and control requests that don't relate to enumeration. 803 All endpoints, transfer speeds, and transfer types supported by 804 the hardware are available, through read() and write() calls. 805 806 Currently, this option is still labelled as EXPERIMENTAL because 807 of existing race conditions in the underlying in-kernel AIO core. 808 809 Say "y" to link the driver statically, or "m" to build a 810 dynamically linked module called "gadgetfs". 811 812config USB_FUNCTIONFS 813 tristate "Function Filesystem (EXPERIMENTAL)" 814 depends on EXPERIMENTAL 815 select USB_FUNCTIONFS_GENERIC if !(USB_FUNCTIONFS_ETH || USB_FUNCTIONFS_RNDIS) 816 help 817 The Function Filesystem (FunctionFS) lets one create USB 818 composite functions in user space in the same way GadgetFS 819 lets one create USB gadgets in user space. This allows creation 820 of composite gadgets such that some of the functions are 821 implemented in kernel space (for instance Ethernet, serial or 822 mass storage) and other are implemented in user space. 823 824 If you say "y" or "m" here you will be able what kind of 825 configurations the gadget will provide. 826 827 Say "y" to link the driver statically, or "m" to build 828 a dynamically linked module called "g_ffs". 829 830config USB_FUNCTIONFS_ETH 831 bool "Include configuration with CDC ECM (Ethernet)" 832 depends on USB_FUNCTIONFS && NET 833 help 834 Include a configuration with CDC ECM function (Ethernet) and the 835 Function Filesystem. 836 837config USB_FUNCTIONFS_RNDIS 838 bool "Include configuration with RNDIS (Ethernet)" 839 depends on USB_FUNCTIONFS && NET 840 help 841 Include a configuration with RNDIS function (Ethernet) and the Filesystem. 842 843config USB_FUNCTIONFS_GENERIC 844 bool "Include 'pure' configuration" 845 depends on USB_FUNCTIONFS 846 help 847 Include a configuration with the Function Filesystem alone with 848 no Ethernet interface. 849 850config USB_FILE_STORAGE 851 tristate "File-backed Storage Gadget" 852 depends on BLOCK 853 help 854 The File-backed Storage Gadget acts as a USB Mass Storage 855 disk drive. As its storage repository it can use a regular 856 file or a block device (in much the same way as the "loop" 857 device driver), specified as a module parameter. 858 859 Say "y" to link the driver statically, or "m" to build a 860 dynamically linked module called "g_file_storage". 861 862config USB_FILE_STORAGE_TEST 863 bool "File-backed Storage Gadget testing version" 864 depends on USB_FILE_STORAGE 865 default n 866 help 867 Say "y" to generate the larger testing version of the 868 File-backed Storage Gadget, useful for probing the 869 behavior of USB Mass Storage hosts. Not needed for 870 normal operation. 871 872config USB_MASS_STORAGE 873 tristate "Mass Storage Gadget" 874 depends on BLOCK 875 help 876 The Mass Storage Gadget acts as a USB Mass Storage disk drive. 877 As its storage repository it can use a regular file or a block 878 device (in much the same way as the "loop" device driver), 879 specified as a module parameter or sysfs option. 880 881 This is heavily based on File-backed Storage Gadget and in most 882 cases you will want to use FSG instead. This gadget is mostly 883 here to test the functionality of the Mass Storage Function 884 which may be used with composite framework. 885 886 Say "y" to link the driver statically, or "m" to build 887 a dynamically linked module called "g_mass_storage". If unsure, 888 consider File-backed Storage Gadget. 889 890config USB_G_SERIAL 891 tristate "Serial Gadget (with CDC ACM and CDC OBEX support)" 892 help 893 The Serial Gadget talks to the Linux-USB generic serial driver. 894 This driver supports a CDC-ACM module option, which can be used 895 to interoperate with MS-Windows hosts or with the Linux-USB 896 "cdc-acm" driver. 897 898 This driver also supports a CDC-OBEX option. You will need a 899 user space OBEX server talking to /dev/ttyGS*, since the kernel 900 itself doesn't implement the OBEX protocol. 901 902 Say "y" to link the driver statically, or "m" to build a 903 dynamically linked module called "g_serial". 904 905 For more information, see Documentation/usb/gadget_serial.txt 906 which includes instructions and a "driver info file" needed to 907 make MS-Windows work with CDC ACM. 908 909config USB_MIDI_GADGET 910 tristate "MIDI Gadget (EXPERIMENTAL)" 911 depends on SND && EXPERIMENTAL 912 select SND_RAWMIDI 913 help 914 The MIDI Gadget acts as a USB Audio device, with one MIDI 915 input and one MIDI output. These MIDI jacks appear as 916 a sound "card" in the ALSA sound system. Other MIDI 917 connections can then be made on the gadget system, using 918 ALSA's aconnect utility etc. 919 920 Say "y" to link the driver statically, or "m" to build a 921 dynamically linked module called "g_midi". 922 923config USB_G_PRINTER 924 tristate "Printer Gadget" 925 help 926 The Printer Gadget channels data between the USB host and a 927 userspace program driving the print engine. The user space 928 program reads and writes the device file /dev/g_printer to 929 receive or send printer data. It can use ioctl calls to 930 the device file to get or set printer status. 931 932 Say "y" to link the driver statically, or "m" to build a 933 dynamically linked module called "g_printer". 934 935 For more information, see Documentation/usb/gadget_printer.txt 936 which includes sample code for accessing the device file. 937 938config USB_CDC_COMPOSITE 939 tristate "CDC Composite Device (Ethernet and ACM)" 940 depends on NET 941 help 942 This driver provides two functions in one configuration: 943 a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link. 944 945 This driver requires four bulk and two interrupt endpoints, 946 plus the ability to handle altsettings. Not all peripheral 947 controllers are that capable. 948 949 Say "y" to link the driver statically, or "m" to build a 950 dynamically linked module. 951 952config USB_G_NOKIA 953 tristate "Nokia composite gadget" 954 depends on PHONET 955 help 956 The Nokia composite gadget provides support for acm, obex 957 and phonet in only one composite gadget driver. 958 959 It's only really useful for N900 hardware. If you're building 960 a kernel for N900, say Y or M here. If unsure, say N. 961 962config USB_G_MULTI 963 tristate "Multifunction Composite Gadget (EXPERIMENTAL)" 964 depends on BLOCK && NET 965 select USB_G_MULTI_CDC if !USB_G_MULTI_RNDIS 966 help 967 The Multifunction Composite Gadget provides Ethernet (RNDIS 968 and/or CDC Ethernet), mass storage and ACM serial link 969 interfaces. 970 971 You will be asked to choose which of the two configurations is 972 to be available in the gadget. At least one configuration must 973 be chosen to make the gadget usable. Selecting more than one 974 configuration will prevent Windows from automatically detecting 975 the gadget as a composite gadget, so an INF file will be needed to 976 use the gadget. 977 978 Say "y" to link the driver statically, or "m" to build a 979 dynamically linked module called "g_multi". 980 981config USB_G_MULTI_RNDIS 982 bool "RNDIS + CDC Serial + Storage configuration" 983 depends on USB_G_MULTI 984 default y 985 help 986 This option enables a configuration with RNDIS, CDC Serial and 987 Mass Storage functions available in the Multifunction Composite 988 Gadget. This is the configuration dedicated for Windows since RNDIS 989 is Microsoft's protocol. 990 991 If unsure, say "y". 992 993config USB_G_MULTI_CDC 994 bool "CDC Ethernet + CDC Serial + Storage configuration" 995 depends on USB_G_MULTI 996 default n 997 help 998 This option enables a configuration with CDC Ethernet (ECM), CDC 999 Serial and Mass Storage functions available in the Multifunction 1000 Composite Gadget. 1001 1002 If unsure, say "y". 1003 1004config USB_G_HID 1005 tristate "HID Gadget" 1006 help 1007 The HID gadget driver provides generic emulation of USB 1008 Human Interface Devices (HID). 1009 1010 For more information, see Documentation/usb/gadget_hid.txt which 1011 includes sample code for accessing the device files. 1012 1013 Say "y" to link the driver statically, or "m" to build a 1014 dynamically linked module called "g_hid". 1015 1016config USB_G_DBGP 1017 tristate "EHCI Debug Device Gadget" 1018 help 1019 This gadget emulates an EHCI Debug device. This is useful when you want 1020 to interact with an EHCI Debug Port. 1021 1022 Say "y" to link the driver statically, or "m" to build a 1023 dynamically linked module called "g_dbgp". 1024 1025if USB_G_DBGP 1026choice 1027 prompt "EHCI Debug Device mode" 1028 default USB_G_DBGP_SERIAL 1029 1030config USB_G_DBGP_PRINTK 1031 depends on USB_G_DBGP 1032 bool "printk" 1033 help 1034 Directly printk() received data. No interaction. 1035 1036config USB_G_DBGP_SERIAL 1037 depends on USB_G_DBGP 1038 bool "serial" 1039 help 1040 Userland can interact using /dev/ttyGSxxx. 1041endchoice 1042endif 1043 1044# put drivers that need isochronous transfer support (for audio 1045# or video class gadget drivers), or specific hardware, here. 1046config USB_G_WEBCAM 1047 tristate "USB Webcam Gadget" 1048 depends on VIDEO_DEV 1049 help 1050 The Webcam Gadget acts as a composite USB Audio and Video Class 1051 device. It provides a userspace API to process UVC control requests 1052 and stream video data to the host. 1053 1054 Say "y" to link the driver statically, or "m" to build a 1055 dynamically linked module called "g_webcam". 1056 1057endchoice 1058 1059endif # USB_GADGET 1060