Kconfig 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429
  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. menu "USB Gadget Support"
  16. config USB_GADGET
  17. tristate "Support for USB Gadgets"
  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. Linux can run in the host, or in the peripheral. In both cases
  24. you need a low level bus controller driver, and some software
  25. talking to it. Peripheral controllers are often discrete silicon,
  26. or are integrated with the CPU in a microcontroller. The more
  27. familiar host side controllers have names like "EHCI", "OHCI",
  28. or "UHCI", and are usually integrated into southbridges on PC
  29. motherboards.
  30. Enable this configuration option if you want to run Linux inside
  31. a USB peripheral device. Configure one hardware driver for your
  32. peripheral/device side bus controller, and a "gadget driver" for
  33. your peripheral protocol. (If you use modular gadget drivers,
  34. you may configure more than one.)
  35. If in doubt, say "N" and don't enable these drivers; most people
  36. don't have this kind of hardware (except maybe inside Linux PDAs).
  37. For more information, see <http://www.linux-usb.org/gadget> and
  38. the kernel DocBook documentation for this API.
  39. config USB_GADGET_DEBUG_FILES
  40. boolean "Debugging information files"
  41. depends on USB_GADGET && PROC_FS
  42. help
  43. Some of the drivers in the "gadget" framework can expose
  44. debugging information in files such as /proc/driver/udc
  45. (for a peripheral controller). The information in these
  46. files may help when you're troubleshooting or bringing up a
  47. driver on a new board. Enable these files by choosing "Y"
  48. here. If in doubt, or to conserve kernel memory, say "N".
  49. config USB_GADGET_SELECTED
  50. boolean
  51. #
  52. # USB Peripheral Controller Support
  53. #
  54. choice
  55. prompt "USB Peripheral Controller"
  56. depends on USB_GADGET
  57. help
  58. A USB device uses a controller to talk to its host.
  59. Systems should have only one such upstream link.
  60. Many controller drivers are platform-specific; these
  61. often need board-specific hooks.
  62. config USB_GADGET_NET2280
  63. boolean "NetChip 228x"
  64. depends on PCI
  65. select USB_GADGET_DUALSPEED
  66. help
  67. NetChip 2280 / 2282 is a PCI based USB peripheral controller which
  68. supports both full and high speed USB 2.0 data transfers.
  69. It has six configurable endpoints, as well as endpoint zero
  70. (for control transfers) and several endpoints with dedicated
  71. functions.
  72. Say "y" to link the driver statically, or "m" to build a
  73. dynamically linked module called "net2280" and force all
  74. gadget drivers to also be dynamically linked.
  75. config USB_NET2280
  76. tristate
  77. depends on USB_GADGET_NET2280
  78. default USB_GADGET
  79. select USB_GADGET_SELECTED
  80. config USB_GADGET_PXA2XX
  81. boolean "PXA 25x or IXP 4xx"
  82. depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
  83. help
  84. Intel's PXA 25x series XScale ARM-5TE processors include
  85. an integrated full speed USB 1.1 device controller. The
  86. controller in the IXP 4xx series is register-compatible.
  87. It has fifteen fixed-function endpoints, as well as endpoint
  88. zero (for control transfers).
  89. Say "y" to link the driver statically, or "m" to build a
  90. dynamically linked module called "pxa2xx_udc" and force all
  91. gadget drivers to also be dynamically linked.
  92. config USB_PXA2XX
  93. tristate
  94. depends on USB_GADGET_PXA2XX
  95. default USB_GADGET
  96. select USB_GADGET_SELECTED
  97. # if there's only one gadget driver, using only two bulk endpoints,
  98. # don't waste memory for the other endpoints
  99. config USB_PXA2XX_SMALL
  100. depends on USB_GADGET_PXA2XX
  101. bool
  102. default n if USB_ETH_RNDIS
  103. default y if USB_ZERO
  104. default y if USB_ETH
  105. default y if USB_G_SERIAL
  106. config USB_GADGET_GOKU
  107. boolean "Toshiba TC86C001 'Goku-S'"
  108. depends on PCI
  109. help
  110. The Toshiba TC86C001 is a PCI device which includes controllers
  111. for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
  112. The device controller has three configurable (bulk or interrupt)
  113. endpoints, plus endpoint zero (for control transfers).
  114. Say "y" to link the driver statically, or "m" to build a
  115. dynamically linked module called "goku_udc" and to force all
  116. gadget drivers to also be dynamically linked.
  117. config USB_GOKU
  118. tristate
  119. depends on USB_GADGET_GOKU
  120. default USB_GADGET
  121. select USB_GADGET_SELECTED
  122. config USB_GADGET_LH7A40X
  123. boolean "LH7A40X"
  124. depends on ARCH_LH7A40X
  125. help
  126. This driver provides USB Device Controller driver for LH7A40x
  127. config USB_LH7A40X
  128. tristate
  129. depends on USB_GADGET_LH7A40X
  130. default USB_GADGET
  131. select USB_GADGET_SELECTED
  132. config USB_GADGET_OMAP
  133. boolean "OMAP USB Device Controller"
  134. depends on ARCH_OMAP
  135. select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3
  136. help
  137. Many Texas Instruments OMAP processors have flexible full
  138. speed USB device controllers, with support for up to 30
  139. endpoints (plus endpoint zero). This driver supports the
  140. controller in the OMAP 1611, and should work with controllers
  141. in other OMAP processors too, given minor tweaks.
  142. Say "y" to link the driver statically, or "m" to build a
  143. dynamically linked module called "omap_udc" and force all
  144. gadget drivers to also be dynamically linked.
  145. config USB_OMAP
  146. tristate
  147. depends on USB_GADGET_OMAP
  148. default USB_GADGET
  149. select USB_GADGET_SELECTED
  150. config USB_OTG
  151. boolean "OTG Support"
  152. depends on USB_GADGET_OMAP && ARCH_OMAP_OTG && USB_OHCI_HCD
  153. help
  154. The most notable feature of USB OTG is support for a
  155. "Dual-Role" device, which can act as either a device
  156. or a host. The initial role choice can be changed
  157. later, when two dual-role devices talk to each other.
  158. Select this only if your OMAP board has a Mini-AB connector.
  159. config USB_GADGET_AT91
  160. boolean "AT91 USB Device Port"
  161. depends on ARCH_AT91RM9200
  162. select USB_GADGET_SELECTED
  163. help
  164. Many Atmel AT91 processors (such as the AT91RM2000) have a
  165. full speed USB Device Port with support for five configurable
  166. endpoints (plus endpoint zero).
  167. Say "y" to link the driver statically, or "m" to build a
  168. dynamically linked module called "at91_udc" and force all
  169. gadget drivers to also be dynamically linked.
  170. config USB_AT91
  171. tristate
  172. depends on USB_GADGET_AT91
  173. default USB_GADGET
  174. config USB_GADGET_DUMMY_HCD
  175. boolean "Dummy HCD (DEVELOPMENT)"
  176. depends on (USB=y || (USB=m && USB_GADGET=m)) && EXPERIMENTAL
  177. select USB_GADGET_DUALSPEED
  178. help
  179. This host controller driver emulates USB, looping all data transfer
  180. requests back to a USB "gadget driver" in the same host. The host
  181. side is the master; the gadget side is the slave. Gadget drivers
  182. can be high, full, or low speed; and they have access to endpoints
  183. like those from NET2280, PXA2xx, or SA1100 hardware.
  184. This may help in some stages of creating a driver to embed in a
  185. Linux device, since it lets you debug several parts of the gadget
  186. driver without its hardware or drivers being involved.
  187. Since such a gadget side driver needs to interoperate with a host
  188. side Linux-USB device driver, this may help to debug both sides
  189. of a USB protocol stack.
  190. Say "y" to link the driver statically, or "m" to build a
  191. dynamically linked module called "dummy_hcd" and force all
  192. gadget drivers to also be dynamically linked.
  193. config USB_DUMMY_HCD
  194. tristate
  195. depends on USB_GADGET_DUMMY_HCD
  196. default USB_GADGET
  197. select USB_GADGET_SELECTED
  198. # NOTE: Please keep dummy_hcd LAST so that "real hardware" appears
  199. # first and will be selected by default.
  200. endchoice
  201. config USB_GADGET_DUALSPEED
  202. bool
  203. depends on USB_GADGET
  204. default n
  205. help
  206. Means that gadget drivers should include extra descriptors
  207. and code to handle dual-speed controllers.
  208. #
  209. # USB Gadget Drivers
  210. #
  211. choice
  212. tristate "USB Gadget Drivers"
  213. depends on USB_GADGET && USB_GADGET_SELECTED
  214. default USB_ETH
  215. help
  216. A Linux "Gadget Driver" talks to the USB Peripheral Controller
  217. driver through the abstract "gadget" API. Some other operating
  218. systems call these "client" drivers, of which "class drivers"
  219. are a subset (implementing a USB device class specification).
  220. A gadget driver implements one or more USB functions using
  221. the peripheral hardware.
  222. Gadget drivers are hardware-neutral, or "platform independent",
  223. except that they sometimes must understand quirks or limitations
  224. of the particular controllers they work with. For example, when
  225. a controller doesn't support alternate configurations or provide
  226. enough of the right types of endpoints, the gadget driver might
  227. not be able work with that controller, or might need to implement
  228. a less common variant of a device class protocol.
  229. # this first set of drivers all depend on bulk-capable hardware.
  230. config USB_ZERO
  231. tristate "Gadget Zero (DEVELOPMENT)"
  232. depends on EXPERIMENTAL
  233. help
  234. Gadget Zero is a two-configuration device. It either sinks and
  235. sources bulk data; or it loops back a configurable number of
  236. transfers. It also implements control requests, for "chapter 9"
  237. conformance. The driver needs only two bulk-capable endpoints, so
  238. it can work on top of most device-side usb controllers. It's
  239. useful for testing, and is also a working example showing how
  240. USB "gadget drivers" can be written.
  241. Make this be the first driver you try using on top of any new
  242. USB peripheral controller driver. Then you can use host-side
  243. test software, like the "usbtest" driver, to put your hardware
  244. and its driver through a basic set of functional tests.
  245. Gadget Zero also works with the host-side "usb-skeleton" driver,
  246. and with many kinds of host-side test software. You may need
  247. to tweak product and vendor IDs before host software knows about
  248. this device, and arrange to select an appropriate configuration.
  249. Say "y" to link the driver statically, or "m" to build a
  250. dynamically linked module called "g_zero".
  251. config USB_ZERO_HNPTEST
  252. boolean "HNP Test Device"
  253. depends on USB_ZERO && USB_OTG
  254. help
  255. You can configure this device to enumerate using the device
  256. identifiers of the USB-OTG test device. That means that when
  257. this gadget connects to another OTG device, with this one using
  258. the "B-Peripheral" role, that device will use HNP to let this
  259. one serve as the USB host instead (in the "B-Host" role).
  260. config USB_ETH
  261. tristate "Ethernet Gadget (with CDC Ethernet support)"
  262. depends on NET
  263. help
  264. This driver implements Ethernet style communication, in either
  265. of two ways:
  266. - The "Communication Device Class" (CDC) Ethernet Control Model.
  267. That protocol is often avoided with pure Ethernet adapters, in
  268. favor of simpler vendor-specific hardware, but is widely
  269. supported by firmware for smart network devices.
  270. - On hardware can't implement that protocol, a simple CDC subset
  271. is used, placing fewer demands on USB.
  272. RNDIS support is a third option, more demanding than that subset.
  273. Within the USB device, this gadget driver exposes a network device
  274. "usbX", where X depends on what other networking devices you have.
  275. Treat it like a two-node Ethernet link: host, and gadget.
  276. The Linux-USB host-side "usbnet" driver interoperates with this
  277. driver, so that deep I/O queues can be supported. On 2.4 kernels,
  278. use "CDCEther" instead, if you're using the CDC option. That CDC
  279. mode should also interoperate with standard CDC Ethernet class
  280. drivers on other host operating systems.
  281. Say "y" to link the driver statically, or "m" to build a
  282. dynamically linked module called "g_ether".
  283. config USB_ETH_RNDIS
  284. bool "RNDIS support (EXPERIMENTAL)"
  285. depends on USB_ETH && EXPERIMENTAL
  286. default y
  287. help
  288. Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
  289. and Microsoft provides redistributable binary RNDIS drivers for
  290. older versions of Windows.
  291. If you say "y" here, the Ethernet gadget driver will try to provide
  292. a second device configuration, supporting RNDIS to talk to such
  293. Microsoft USB hosts.
  294. To make MS-Windows work with this, use Documentation/usb/linux.inf
  295. as the "driver info file". For versions of MS-Windows older than
  296. XP, you'll need to download drivers from Microsoft's website; a URL
  297. is given in comments found in that info file.
  298. config USB_GADGETFS
  299. tristate "Gadget Filesystem (EXPERIMENTAL)"
  300. depends on EXPERIMENTAL
  301. help
  302. This driver provides a filesystem based API that lets user mode
  303. programs implement a single-configuration USB device, including
  304. endpoint I/O and control requests that don't relate to enumeration.
  305. All endpoints, transfer speeds, and transfer types supported by
  306. the hardware are available, through read() and write() calls.
  307. Say "y" to link the driver statically, or "m" to build a
  308. dynamically linked module called "gadgetfs".
  309. config USB_FILE_STORAGE
  310. tristate "File-backed Storage Gadget"
  311. help
  312. The File-backed Storage Gadget acts as a USB Mass Storage
  313. disk drive. As its storage repository it can use a regular
  314. file or a block device (in much the same way as the "loop"
  315. device driver), specified as a module parameter.
  316. Say "y" to link the driver statically, or "m" to build a
  317. dynamically linked module called "g_file_storage".
  318. config USB_FILE_STORAGE_TEST
  319. bool "File-backed Storage Gadget testing version"
  320. depends on USB_FILE_STORAGE
  321. default n
  322. help
  323. Say "y" to generate the larger testing version of the
  324. File-backed Storage Gadget, useful for probing the
  325. behavior of USB Mass Storage hosts. Not needed for
  326. normal operation.
  327. config USB_G_SERIAL
  328. tristate "Serial Gadget (with CDC ACM support)"
  329. help
  330. The Serial Gadget talks to the Linux-USB generic serial driver.
  331. This driver supports a CDC-ACM module option, which can be used
  332. to interoperate with MS-Windows hosts or with the Linux-USB
  333. "cdc-acm" driver.
  334. Say "y" to link the driver statically, or "m" to build a
  335. dynamically linked module called "g_serial".
  336. For more information, see Documentation/usb/gadget_serial.txt
  337. which includes instructions and a "driver info file" needed to
  338. make MS-Windows work with this driver.
  339. config USB_MIDI_GADGET
  340. tristate "MIDI Gadget (EXPERIMENTAL)"
  341. depends on SND && EXPERIMENTAL
  342. select SND_RAWMIDI
  343. help
  344. The MIDI Gadget acts as a USB Audio device, with one MIDI
  345. input and one MIDI output. These MIDI jacks appear as
  346. a sound "card" in the ALSA sound system. Other MIDI
  347. connections can then be made on the gadget system, using
  348. ALSA's aconnect utility etc.
  349. Say "y" to link the driver statically, or "m" to build a
  350. dynamically linked module called "g_midi".
  351. # put drivers that need isochronous transfer support (for audio
  352. # or video class gadget drivers), or specific hardware, here.
  353. # - none yet
  354. endchoice
  355. endmenu