blob: f6cce5ac69c53c29988280e67a74a662de8372b9 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#
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 LaPlantecab00892006-10-03 22:36:44 +020010# - Some systems have both kinds of controllers.
Linus Torvalds1da177e2005-04-16 15:20:36 -070011#
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 Torvalds1da177e2005-04-16 15:20:36 -070015
Denis Chengb75be4a2008-01-24 16:36:31 +080016menuconfig USB_GADGET
17 tristate "USB Gadget Support"
Arnd Bergmannbadf6d42016-03-23 17:45:08 +010018 select USB_COMMON
Alan Stern86dc2432011-11-17 16:42:24 -050019 select NLS
Linus Torvalds1da177e2005-04-16 15:20:36 -070020 help
21 USB is a master/slave protocol, organized with one master
22 host (such as a PC) controlling up to 127 peripheral devices.
23 The USB hardware is asymmetric, which makes it easier to set up:
24 you can't connect a "to-the-host" connector to a peripheral.
25
26 Linux can run in the host, or in the peripheral. In both cases
27 you need a low level bus controller driver, and some software
28 talking to it. Peripheral controllers are often discrete silicon,
29 or are integrated with the CPU in a microcontroller. The more
Jules Villarde113f292006-08-22 22:40:15 +020030 familiar host side controllers have names like "EHCI", "OHCI",
Linus Torvalds1da177e2005-04-16 15:20:36 -070031 or "UHCI", and are usually integrated into southbridges on PC
32 motherboards.
33
34 Enable this configuration option if you want to run Linux inside
35 a USB peripheral device. Configure one hardware driver for your
36 peripheral/device side bus controller, and a "gadget driver" for
37 your peripheral protocol. (If you use modular gadget drivers,
38 you may configure more than one.)
39
40 If in doubt, say "N" and don't enable these drivers; most people
41 don't have this kind of hardware (except maybe inside Linux PDAs).
42
43 For more information, see <http://www.linux-usb.org/gadget> and
44 the kernel DocBook documentation for this API.
45
Denis Chengb75be4a2008-01-24 16:36:31 +080046if USB_GADGET
47
David Brownell70790f62007-07-01 17:35:28 -070048config USB_GADGET_DEBUG
Christoph Jaeger6341e622014-12-20 15:41:11 -050049 bool "Debugging messages (DEVELOPMENT)"
David Brownell36e893d2008-09-12 09:39:06 -070050 depends on DEBUG_KERNEL
David Brownell70790f62007-07-01 17:35:28 -070051 help
52 Many controller and gadget drivers will print some debugging
53 messages if you use this option to ask for those messages.
54
55 Avoid enabling these messages, even if you're actively
56 debugging such a driver. Many drivers will emit so many
57 messages that the driver timings are affected, which will
58 either create new failure modes or remove the one you're
59 trying to track down. Never enable these messages for a
60 production build.
61
Andreas Larssoncd108692013-10-11 08:07:00 +020062config USB_GADGET_VERBOSE
63 bool "Verbose debugging Messages (DEVELOPMENT)"
64 depends on USB_GADGET_DEBUG
65 help
66 Many controller and gadget drivers will print verbose debugging
67 messages if you use this option to ask for those messages.
68
69 Avoid enabling these messages, even if you're actively
70 debugging such a driver. Many drivers will emit so many
71 messages that the driver timings are affected, which will
72 either create new failure modes or remove the one you're
73 trying to track down. Never enable these messages for a
74 production build.
75
Linus Torvalds1da177e2005-04-16 15:20:36 -070076config USB_GADGET_DEBUG_FILES
Christoph Jaeger6341e622014-12-20 15:41:11 -050077 bool "Debugging information files (DEVELOPMENT)"
David Brownell36e893d2008-09-12 09:39:06 -070078 depends on PROC_FS
Linus Torvalds1da177e2005-04-16 15:20:36 -070079 help
80 Some of the drivers in the "gadget" framework can expose
81 debugging information in files such as /proc/driver/udc
82 (for a peripheral controller). The information in these
83 files may help when you're troubleshooting or bringing up a
84 driver on a new board. Enable these files by choosing "Y"
85 here. If in doubt, or to conserve kernel memory, say "N".
86
Haavard Skinnemoen914a3f32007-10-10 02:29:43 -070087config USB_GADGET_DEBUG_FS
Christoph Jaeger6341e622014-12-20 15:41:11 -050088 bool "Debugging information files in debugfs (DEVELOPMENT)"
David Brownell36e893d2008-09-12 09:39:06 -070089 depends on DEBUG_FS
Haavard Skinnemoen914a3f32007-10-10 02:29:43 -070090 help
91 Some of the drivers in the "gadget" framework can expose
92 debugging information in files under /sys/kernel/debug/.
93 The information in these files may help when you're
94 troubleshooting or bringing up a driver on a new board.
95 Enable these files by choosing "Y" here. If in doubt, or
96 to conserve kernel memory, say "N".
97
David Brownell36e893d2008-09-12 09:39:06 -070098config USB_GADGET_VBUS_DRAW
99 int "Maximum VBUS Power usage (2-500 mA)"
100 range 2 500
101 default 2
102 help
103 Some devices need to draw power from USB when they are
104 configured, perhaps to operate circuitry or to recharge
105 batteries. This is in addition to any local power supply,
106 such as an AC adapter or batteries.
107
108 Enter the maximum power your device draws through USB, in
109 milliAmperes. The permitted range of values is 2 - 500 mA;
110 0 mA would be legal, but can make some hosts misbehave.
111
112 This value will be used except for system-specific gadget
113 drivers that have more specific information.
114
Per Forlin6532c7f2011-08-19 21:21:27 +0200115config USB_GADGET_STORAGE_NUM_BUFFERS
116 int "Number of storage pipeline buffers"
Felipe Balbid8877fc2016-05-12 15:02:29 +0300117 range 2 256
Per Forlin6532c7f2011-08-19 21:21:27 +0200118 default 2
119 help
120 Usually 2 buffers are enough to establish a good buffering
121 pipeline. The number may be increased in order to compensate
122 for a bursty VFS behaviour. For instance there may be CPU wake up
123 latencies that makes the VFS to appear bursty in a system with
124 an CPU on-demand governor. Especially if DMA is doing IO to
125 offload the CPU. In this case the CPU will go into power
126 save often and spin up occasionally to move data within VFS.
127 If selecting USB_GADGET_DEBUG_FILES this value may be set by
128 a module parameter as well.
129 If unsure, say 2.
130
Baolin Wanga5beaaf2015-11-21 15:44:53 +0800131config U_SERIAL_CONSOLE
132 bool "Serial gadget console support"
133 depends on USB_G_SERIAL
134 help
135 It supports the serial gadget can be used as a console.
136
Andrzej Pietrasiewicz90fccb52014-07-15 13:09:45 +0200137source "drivers/usb/gadget/udc/Kconfig"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138
Linus Torvalds1da177e2005-04-16 15:20:36 -0700139#
140# USB Gadget Drivers
141#
Sebastian Andrzej Siewiora84d9e52012-09-06 20:11:09 +0200142
143# composite based drivers
144config USB_LIBCOMPOSITE
145 tristate
Sebastian Andrzej Siewior88af8bb2012-12-23 21:10:24 +0100146 select CONFIGFS_FS
Sebastian Andrzej Siewiora84d9e52012-09-06 20:11:09 +0200147 depends on USB_GADGET
148
Sebastian Andrzej Siewiorff47f592012-12-23 21:10:07 +0100149config USB_F_ACM
150 tristate
151
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +0100152config USB_F_SS_LB
153 tristate
154
Sebastian Andrzej Siewior3249ca22012-12-23 21:10:04 +0100155config USB_U_SERIAL
156 tristate
157
Andrzej Pietrasiewiczf1a18232013-05-23 09:22:03 +0200158config USB_U_ETHER
159 tristate
160
Andrzej Pietrasiewicz60540ea2013-03-18 09:52:57 +0100161config USB_F_SERIAL
162 tristate
163
Andrzej Pietrasiewicz1d8fc252013-03-21 15:33:42 +0100164config USB_F_OBEX
165 tristate
166
Andrzej Pietrasiewicz40d133d2013-05-23 09:22:06 +0200167config USB_F_NCM
168 tristate
169
Andrzej Pietrasiewiczfee562a2013-05-23 10:32:03 +0200170config USB_F_ECM
171 tristate
172
Andrzej Pietrasiewiczfcbdf122013-05-23 10:51:11 +0200173config USB_F_PHONET
174 tristate
175
Andrzej Pietrasiewiczb29002a2013-05-28 09:15:47 +0200176config USB_F_EEM
177 tristate
178
Andrzej Pietrasiewicz8cedba72013-05-28 09:15:53 +0200179config USB_F_SUBSET
180 tristate
181
Andrzej Pietrasiewiczf466c632013-05-28 09:15:57 +0200182config USB_F_RNDIS
183 tristate
184
Andrzej Pietrasiewicze5eaa0d2013-10-09 10:06:01 +0200185config USB_F_MASS_STORAGE
186 tristate
187
Andrzej Pietrasiewicz5920cda2013-12-03 15:15:33 +0100188config USB_F_FS
189 tristate
190
Andrzej Pietrasiewiczf3a34062014-07-22 19:58:38 +0200191config USB_F_UAC1
192 tristate
193
Andrzej Pietrasiewiczf8f93d22014-07-22 19:58:30 +0200194config USB_F_UAC2
195 tristate
196
Andrzej Pietrasiewicz6d11ed72014-09-09 02:02:10 +0300197config USB_F_UVC
198 tristate
199
Andrzej Pietrasiewiczb85e9de2014-10-16 13:33:27 +0200200config USB_F_MIDI
201 tristate
202
Andrzej Pietrasiewiczcb382532014-11-06 11:11:59 +0100203config USB_F_HID
204 tristate
205
Andrzej Pietrasiewiczb26394b2015-03-03 10:52:28 +0100206config USB_F_PRINTER
207 tristate
208
Andrzej Pietrasiewiczdc8c46a2015-12-11 16:06:21 +0100209config USB_F_TCM
210 tristate
211
Badhri Jagan Sridharaneab46c42014-11-17 21:11:23 -0800212config USB_F_MTP
213 tristate
214
215config USB_F_PTP
Badhri Jagan Sridharan743a13c2014-11-23 13:51:28 -0800216 tristate
217
218config USB_F_AUDIO_SRC
Badhri Jagan Sridharaneab46c42014-11-17 21:11:23 -0800219 tristate
220
Badhri Jagan Sridharanf9247ce2014-11-23 17:21:22 -0800221config USB_F_ACC
222 tristate
223
Linus Torvalds1da177e2005-04-16 15:20:36 -0700224# this first set of drivers all depend on bulk-capable hardware.
225
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200226config USB_CONFIGFS
227 tristate "USB functions configurable through configfs"
228 select USB_LIBCOMPOSITE
229 help
230 A Linux USB "gadget" can be set up through configfs.
231 If this is the case, the USB functions (which from the host's
232 perspective are seen as interfaces) and configurations are
233 specified simply by creating appropriate directories in configfs.
234 Associating functions with configurations is done by creating
235 appropriate symbolic links.
Philippe De Swert9c1d6962013-08-18 13:51:43 +0300236 For more information see Documentation/usb/gadget_configfs.txt.
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200237
238config USB_CONFIGFS_SERIAL
Christoph Jaeger6341e622014-12-20 15:41:11 -0500239 bool "Generic serial bulk in/out"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200240 depends on USB_CONFIGFS
241 depends on TTY
242 select USB_U_SERIAL
243 select USB_F_SERIAL
244 help
245 The function talks to the Linux-USB generic serial driver.
246
247config USB_CONFIGFS_ACM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500248 bool "Abstract Control Model (CDC ACM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200249 depends on USB_CONFIGFS
250 depends on TTY
251 select USB_U_SERIAL
252 select USB_F_ACM
253 help
254 ACM serial link. This function can be used to interoperate with
255 MS-Windows hosts or with the Linux-USB "cdc-acm" driver.
256
257config USB_CONFIGFS_OBEX
Christoph Jaeger6341e622014-12-20 15:41:11 -0500258 bool "Object Exchange Model (CDC OBEX)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200259 depends on USB_CONFIGFS
260 depends on TTY
261 select USB_U_SERIAL
262 select USB_F_OBEX
263 help
264 You will need a user space OBEX server talking to /dev/ttyGS*,
265 since the kernel itself doesn't implement the OBEX protocol.
266
267config USB_CONFIGFS_NCM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500268 bool "Network Control Model (CDC NCM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200269 depends on USB_CONFIGFS
270 depends on NET
271 select USB_U_ETHER
272 select USB_F_NCM
273 help
274 NCM is an advanced protocol for Ethernet encapsulation, allows
275 grouping of several ethernet frames into one USB transfer and
276 different alignment possibilities.
277
278config USB_CONFIGFS_ECM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500279 bool "Ethernet Control Model (CDC ECM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200280 depends on USB_CONFIGFS
281 depends on NET
282 select USB_U_ETHER
283 select USB_F_ECM
284 help
285 The "Communication Device Class" (CDC) Ethernet Control Model.
286 That protocol is often avoided with pure Ethernet adapters, in
287 favor of simpler vendor-specific hardware, but is widely
288 supported by firmware for smart network devices.
289
Andrzej Pietrasiewicz02832e52013-05-28 09:15:56 +0200290config USB_CONFIGFS_ECM_SUBSET
Christoph Jaeger6341e622014-12-20 15:41:11 -0500291 bool "Ethernet Control Model (CDC ECM) subset"
Andrzej Pietrasiewicz02832e52013-05-28 09:15:56 +0200292 depends on USB_CONFIGFS
293 depends on NET
294 select USB_U_ETHER
295 select USB_F_SUBSET
296 help
297 On hardware that can't implement the full protocol,
298 a simple CDC subset is used, placing fewer demands on USB.
299
Andrzej Pietrasiewiczb3df2fa2013-05-28 09:16:01 +0200300config USB_CONFIGFS_RNDIS
301 bool "RNDIS"
302 depends on USB_CONFIGFS
303 depends on NET
304 select USB_U_ETHER
305 select USB_F_RNDIS
306 help
307 Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
308 and Microsoft provides redistributable binary RNDIS drivers for
309 older versions of Windows.
310
311 To make MS-Windows work with this, use Documentation/usb/linux.inf
312 as the "driver info file". For versions of MS-Windows older than
313 XP, you'll need to download drivers from Microsoft's website; a URL
314 is given in comments found in that info file.
315
Andrzej Pietrasiewicz17b80972013-05-28 09:15:51 +0200316config USB_CONFIGFS_EEM
317 bool "Ethernet Emulation Model (EEM)"
318 depends on USB_CONFIGFS
319 depends on NET
320 select USB_U_ETHER
321 select USB_F_EEM
322 help
323 CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
324 and therefore can be supported by more hardware. Technically ECM and
325 EEM are designed for different applications. The ECM model extends
326 the network interface to the target (e.g. a USB cable modem), and the
327 EEM model is for mobile devices to communicate with hosts using
328 ethernet over USB. For Linux gadgets, however, the interface with
329 the host is the same (a usbX device), so the differences are minimal.
330
Andrzej Pietrasiewicz83408742013-05-23 10:51:15 +0200331config USB_CONFIGFS_PHONET
Christoph Jaeger6341e622014-12-20 15:41:11 -0500332 bool "Phonet protocol"
Andrzej Pietrasiewicz83408742013-05-23 10:51:15 +0200333 depends on USB_CONFIGFS
334 depends on NET
335 depends on PHONET
336 select USB_U_ETHER
337 select USB_F_PHONET
338 help
339 The Phonet protocol implementation for USB device.
340
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200341config USB_CONFIGFS_MASS_STORAGE
Christoph Jaeger6341e622014-12-20 15:41:11 -0500342 bool "Mass storage"
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200343 depends on USB_CONFIGFS
Andrzej Pietrasiewiczbc912b02013-11-04 13:46:17 +0100344 depends on BLOCK
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200345 select USB_F_MASS_STORAGE
346 help
347 The Mass Storage Gadget acts as a USB Mass Storage disk drive.
348 As its storage repository it can use a regular file or a block
349 device (in much the same way as the "loop" device driver),
350 specified as a module parameter or sysfs option.
351
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +0100352config USB_CONFIGFS_F_LB_SS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500353 bool "Loopback and sourcesink function (for testing)"
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +0100354 depends on USB_CONFIGFS
355 select USB_F_SS_LB
356 help
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +0100357 Loopback function loops back a configurable number of transfers.
358 Sourcesink function either sinks and sources bulk data.
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +0100359 It also implements control requests, for "chapter 9" conformance.
360 Make this be the first driver you try using on top of any new
361 USB peripheral controller driver. Then you can use host-side
362 test software, like the "usbtest" driver, to put your hardware
363 and its driver through a basic set of functional tests.
364
Andrzej Pietrasiewiczb6584992013-12-03 15:15:36 +0100365config USB_CONFIGFS_F_FS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500366 bool "Function filesystem (FunctionFS)"
Andrzej Pietrasiewiczb6584992013-12-03 15:15:36 +0100367 depends on USB_CONFIGFS
368 select USB_F_FS
369 help
370 The Function Filesystem (FunctionFS) lets one create USB
371 composite functions in user space in the same way GadgetFS
372 lets one create USB gadgets in user space. This allows creation
373 of composite gadgets such that some of the functions are
374 implemented in kernel space (for instance Ethernet, serial or
375 mass storage) and other are implemented in user space.
376
Badhri Jagan Sridharaneab46c42014-11-17 21:11:23 -0800377config USB_CONFIGFS_F_MTP
378 boolean "MTP gadget"
379 depends on USB_CONFIGFS
380 select USB_F_MTP
381 help
382 USB gadget MTP support
383
384config USB_CONFIGFS_F_PTP
385 boolean "PTP gadget"
386 depends on USB_CONFIGFS && USB_CONFIGFS_F_MTP
387 select USB_F_PTP
388 help
389 USB gadget PTP support
390
Badhri Jagan Sridharanf9247ce2014-11-23 17:21:22 -0800391config USB_CONFIGFS_F_ACC
392 boolean "Accessory gadget"
393 depends on USB_CONFIGFS
394 select USB_F_ACC
395 help
396 USB gadget Accessory support
397
Badhri Jagan Sridharan743a13c2014-11-23 13:51:28 -0800398config USB_CONFIGFS_F_AUDIO_SRC
399 boolean "Audio Source gadget"
Badhri Jagan Sridharanf9247ce2014-11-23 17:21:22 -0800400 depends on USB_CONFIGFS && USB_CONFIGFS_F_ACC
Amit Pundir95106e32015-10-30 03:00:20 +0530401 depends on SND
402 select SND_PCM
Badhri Jagan Sridharan743a13c2014-11-23 13:51:28 -0800403 select USB_F_AUDIO_SRC
404 help
405 USB gadget Audio Source support
406
Badhri Jagan Sridharan21877382014-12-15 10:44:47 -0800407config USB_CONFIGFS_UEVENT
408 boolean "Uevent notification of Gadget state"
409 depends on USB_CONFIGFS
410 help
411 Enable uevent notifications to userspace when the gadget
412 state changes. The gadget can be in any of the following
413 three states: "CONNECTED/DISCONNECTED/CONFIGURED"
414
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200415config USB_CONFIGFS_F_UAC1
Christoph Jaeger6341e622014-12-20 15:41:11 -0500416 bool "Audio Class 1.0"
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200417 depends on USB_CONFIGFS
418 depends on SND
419 select USB_LIBCOMPOSITE
420 select SND_PCM
421 select USB_F_UAC1
422 help
423 This Audio function implements 1 AudioControl interface,
424 1 AudioStreaming Interface each for USB-OUT and USB-IN.
425 This driver requires a real Audio codec to be present
426 on the device.
427
428config USB_CONFIGFS_F_UAC2
Christoph Jaeger6341e622014-12-20 15:41:11 -0500429 bool "Audio Class 2.0"
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200430 depends on USB_CONFIGFS
431 depends on SND
432 select USB_LIBCOMPOSITE
433 select SND_PCM
434 select USB_F_UAC2
435 help
436 This Audio function is compatible with USB Audio Class
437 specification 2.0. It implements 1 AudioControl interface,
438 1 AudioStreaming Interface each for USB-OUT and USB-IN.
439 This driver doesn't expect any real Audio codec to be present
440 on the device - the audio streams are simply sinked to and
441 sourced from a virtual ALSA sound card created. The user-space
442 application may choose to do whatever it wants with the data
443 received from the USB Host and choose to provide whatever it
444 wants as audio data to the USB Host.
445
Andrzej Pietrasiewicz6f1de342014-10-16 13:33:31 +0200446config USB_CONFIGFS_F_MIDI
Christoph Jaeger6341e622014-12-20 15:41:11 -0500447 bool "MIDI function"
Andrzej Pietrasiewicz6f1de342014-10-16 13:33:31 +0200448 depends on USB_CONFIGFS
449 depends on SND
450 select USB_LIBCOMPOSITE
451 select SND_RAWMIDI
452 select USB_F_MIDI
453 help
454 The MIDI Function acts as a USB Audio device, with one MIDI
455 input and one MIDI output. These MIDI jacks appear as
456 a sound "card" in the ALSA sound system. Other MIDI
457 connections can then be made on the gadget system, using
458 ALSA's aconnect utility etc.
459
Andrzej Pietrasiewicz21a94762014-11-06 11:12:03 +0100460config USB_CONFIGFS_F_HID
Christoph Jaeger6341e622014-12-20 15:41:11 -0500461 bool "HID function"
Andrzej Pietrasiewicz21a94762014-11-06 11:12:03 +0100462 depends on USB_CONFIGFS
463 select USB_F_HID
464 help
465 The HID function driver provides generic emulation of USB
466 Human Interface Devices (HID).
467
468 For more information, see Documentation/usb/gadget_hid.txt.
469
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100470config USB_CONFIGFS_F_UVC
Christoph Jaeger8333d3c2015-02-02 10:00:03 -0500471 bool "USB Webcam function"
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100472 depends on USB_CONFIGFS
Arnd Bergmanne6be244a2016-09-12 17:34:57 +0200473 depends on VIDEO_V4L2
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100474 depends on VIDEO_DEV
475 select VIDEOBUF2_VMALLOC
476 select USB_F_UVC
477 help
478 The Webcam function acts as a composite USB Audio and Video Class
479 device. It provides a userspace API to process UVC control requests
480 and stream video data to the host.
481
Andrzej Pietrasiewiczee1cd512015-03-03 10:52:32 +0100482config USB_CONFIGFS_F_PRINTER
483 bool "Printer function"
484 select USB_F_PRINTER
Andrzej Pietrasiewiczf4b49762015-03-24 10:58:16 +0100485 depends on USB_CONFIGFS
Andrzej Pietrasiewiczee1cd512015-03-03 10:52:32 +0100486 help
487 The Printer function channels data between the USB host and a
488 userspace program driving the print engine. The user space
489 program reads and writes the device file /dev/g_printer<X> to
490 receive or send printer data. It can use ioctl calls to
491 the device file to get or set printer status.
492
493 For more information, see Documentation/usb/gadget_printer.txt
494 which includes sample code for accessing the device file.
495
Andrzej Pietrasiewicz4bb85482015-12-11 16:06:26 +0100496config USB_CONFIGFS_F_TCM
497 bool "USB Gadget Target Fabric"
498 depends on TARGET_CORE
499 depends on USB_CONFIGFS
500 select USB_LIBCOMPOSITE
501 select USB_F_TCM
502 help
503 This fabric is a USB gadget component. Two USB protocols are
504 supported that is BBB or BOT (Bulk Only Transport) and UAS
505 (USB Attached SCSI). BOT is advertised on alternative
506 interface 0 (primary) and UAS is on alternative interface 1.
507 Both protocols can work on USB2.0 and USB3.0.
508 UAS utilizes the USB 3.0 feature called streams support.
509
Felipe Balbibc49d1d2016-08-26 12:21:34 +0300510choice
511 tristate "USB Gadget Drivers"
512 default USB_ETH
Romain Izard5c51e4b2017-03-10 14:11:41 +0100513 optional
Felipe Balbibc49d1d2016-08-26 12:21:34 +0300514 help
515 A Linux "Gadget Driver" talks to the USB Peripheral Controller
516 driver through the abstract "gadget" API. Some other operating
517 systems call these "client" drivers, of which "class drivers"
518 are a subset (implementing a USB device class specification).
519 A gadget driver implements one or more USB functions using
520 the peripheral hardware.
521
522 Gadget drivers are hardware-neutral, or "platform independent",
523 except that they sometimes must understand quirks or limitations
524 of the particular controllers they work with. For example, when
525 a controller doesn't support alternate configurations or provide
526 enough of the right types of endpoints, the gadget driver might
527 not be able work with that controller, or might need to implement
528 a less common variant of a device class protocol.
529
Andrzej Pietrasiewicz8443f2d2014-07-15 13:09:44 +0200530source "drivers/usb/gadget/legacy/Kconfig"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700531
532endchoice
533
Denis Chengb75be4a2008-01-24 16:36:31 +0800534endif # USB_GADGET