blob: b040fddd7c6335941e1194058fc1c4e6cfe553c3 [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 Sridharan9a9e5dc2014-11-17 21:11:23 -0800212config USB_F_MTP
213 tristate
214
215config USB_F_PTP
Badhri Jagan Sridharan28700992014-11-23 13:51:28 -0800216 tristate
217
218config USB_F_AUDIO_SRC
Badhri Jagan Sridharan9a9e5dc2014-11-17 21:11:23 -0800219 tristate
220
Badhri Jagan Sridharan4c5a25f2014-11-23 17:21:22 -0800221config USB_F_ACC
222 tristate
223
Mayank Ranafc2036e2016-09-20 19:37:57 -0700224config USB_F_DIAG
225 tristate
226
Mayank Rana4e8ce432016-12-06 09:21:32 -0800227config USB_F_CDEV
228 tristate
229
Hemant Kumard5de1782017-01-12 18:00:44 -0800230config USB_F_CCID
231 tristate
232
Mayank Rana0663c432016-12-06 16:38:18 -0800233config USB_F_GSI
234 tristate
235
Mayank Rana20c78842017-02-14 17:34:45 -0800236config USB_F_QDSS
237 tristate
238
Linus Torvalds1da177e2005-04-16 15:20:36 -0700239# this first set of drivers all depend on bulk-capable hardware.
240
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200241config USB_CONFIGFS
242 tristate "USB functions configurable through configfs"
243 select USB_LIBCOMPOSITE
244 help
245 A Linux USB "gadget" can be set up through configfs.
246 If this is the case, the USB functions (which from the host's
247 perspective are seen as interfaces) and configurations are
248 specified simply by creating appropriate directories in configfs.
249 Associating functions with configurations is done by creating
250 appropriate symbolic links.
Philippe De Swert9c1d6962013-08-18 13:51:43 +0300251 For more information see Documentation/usb/gadget_configfs.txt.
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200252
253config USB_CONFIGFS_SERIAL
Christoph Jaeger6341e622014-12-20 15:41:11 -0500254 bool "Generic serial bulk in/out"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200255 depends on USB_CONFIGFS
256 depends on TTY
257 select USB_U_SERIAL
258 select USB_F_SERIAL
259 help
260 The function talks to the Linux-USB generic serial driver.
261
262config USB_CONFIGFS_ACM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500263 bool "Abstract Control Model (CDC ACM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200264 depends on USB_CONFIGFS
265 depends on TTY
266 select USB_U_SERIAL
267 select USB_F_ACM
268 help
269 ACM serial link. This function can be used to interoperate with
270 MS-Windows hosts or with the Linux-USB "cdc-acm" driver.
271
272config USB_CONFIGFS_OBEX
Christoph Jaeger6341e622014-12-20 15:41:11 -0500273 bool "Object Exchange Model (CDC OBEX)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200274 depends on USB_CONFIGFS
275 depends on TTY
276 select USB_U_SERIAL
277 select USB_F_OBEX
278 help
279 You will need a user space OBEX server talking to /dev/ttyGS*,
280 since the kernel itself doesn't implement the OBEX protocol.
281
282config USB_CONFIGFS_NCM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500283 bool "Network Control Model (CDC NCM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200284 depends on USB_CONFIGFS
285 depends on NET
286 select USB_U_ETHER
287 select USB_F_NCM
288 help
289 NCM is an advanced protocol for Ethernet encapsulation, allows
290 grouping of several ethernet frames into one USB transfer and
291 different alignment possibilities.
292
293config USB_CONFIGFS_ECM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500294 bool "Ethernet Control Model (CDC ECM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200295 depends on USB_CONFIGFS
296 depends on NET
297 select USB_U_ETHER
298 select USB_F_ECM
299 help
300 The "Communication Device Class" (CDC) Ethernet Control Model.
301 That protocol is often avoided with pure Ethernet adapters, in
302 favor of simpler vendor-specific hardware, but is widely
303 supported by firmware for smart network devices.
304
Andrzej Pietrasiewicz02832e52013-05-28 09:15:56 +0200305config USB_CONFIGFS_ECM_SUBSET
Christoph Jaeger6341e622014-12-20 15:41:11 -0500306 bool "Ethernet Control Model (CDC ECM) subset"
Andrzej Pietrasiewicz02832e52013-05-28 09:15:56 +0200307 depends on USB_CONFIGFS
308 depends on NET
309 select USB_U_ETHER
310 select USB_F_SUBSET
311 help
312 On hardware that can't implement the full protocol,
313 a simple CDC subset is used, placing fewer demands on USB.
314
Andrzej Pietrasiewiczb3df2fa2013-05-28 09:16:01 +0200315config USB_CONFIGFS_RNDIS
316 bool "RNDIS"
317 depends on USB_CONFIGFS
318 depends on NET
319 select USB_U_ETHER
320 select USB_F_RNDIS
321 help
322 Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
323 and Microsoft provides redistributable binary RNDIS drivers for
324 older versions of Windows.
325
326 To make MS-Windows work with this, use Documentation/usb/linux.inf
327 as the "driver info file". For versions of MS-Windows older than
328 XP, you'll need to download drivers from Microsoft's website; a URL
329 is given in comments found in that info file.
330
Andrzej Pietrasiewicz17b80972013-05-28 09:15:51 +0200331config USB_CONFIGFS_EEM
332 bool "Ethernet Emulation Model (EEM)"
333 depends on USB_CONFIGFS
334 depends on NET
335 select USB_U_ETHER
336 select USB_F_EEM
337 help
338 CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
339 and therefore can be supported by more hardware. Technically ECM and
340 EEM are designed for different applications. The ECM model extends
341 the network interface to the target (e.g. a USB cable modem), and the
342 EEM model is for mobile devices to communicate with hosts using
343 ethernet over USB. For Linux gadgets, however, the interface with
344 the host is the same (a usbX device), so the differences are minimal.
345
Andrzej Pietrasiewicz83408742013-05-23 10:51:15 +0200346config USB_CONFIGFS_PHONET
Christoph Jaeger6341e622014-12-20 15:41:11 -0500347 bool "Phonet protocol"
Andrzej Pietrasiewicz83408742013-05-23 10:51:15 +0200348 depends on USB_CONFIGFS
349 depends on NET
350 depends on PHONET
351 select USB_U_ETHER
352 select USB_F_PHONET
353 help
354 The Phonet protocol implementation for USB device.
355
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200356config USB_CONFIGFS_MASS_STORAGE
Christoph Jaeger6341e622014-12-20 15:41:11 -0500357 bool "Mass storage"
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200358 depends on USB_CONFIGFS
Andrzej Pietrasiewiczbc912b02013-11-04 13:46:17 +0100359 depends on BLOCK
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200360 select USB_F_MASS_STORAGE
361 help
362 The Mass Storage Gadget acts as a USB Mass Storage disk drive.
363 As its storage repository it can use a regular file or a block
364 device (in much the same way as the "loop" device driver),
365 specified as a module parameter or sysfs option.
366
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +0100367config USB_CONFIGFS_F_LB_SS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500368 bool "Loopback and sourcesink function (for testing)"
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +0100369 depends on USB_CONFIGFS
370 select USB_F_SS_LB
371 help
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +0100372 Loopback function loops back a configurable number of transfers.
373 Sourcesink function either sinks and sources bulk data.
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +0100374 It also implements control requests, for "chapter 9" conformance.
375 Make this be the first driver you try using on top of any new
376 USB peripheral controller driver. Then you can use host-side
377 test software, like the "usbtest" driver, to put your hardware
378 and its driver through a basic set of functional tests.
379
Andrzej Pietrasiewiczb6584992013-12-03 15:15:36 +0100380config USB_CONFIGFS_F_FS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500381 bool "Function filesystem (FunctionFS)"
Andrzej Pietrasiewiczb6584992013-12-03 15:15:36 +0100382 depends on USB_CONFIGFS
383 select USB_F_FS
384 help
385 The Function Filesystem (FunctionFS) lets one create USB
386 composite functions in user space in the same way GadgetFS
387 lets one create USB gadgets in user space. This allows creation
388 of composite gadgets such that some of the functions are
389 implemented in kernel space (for instance Ethernet, serial or
390 mass storage) and other are implemented in user space.
391
Badhri Jagan Sridharan9a9e5dc2014-11-17 21:11:23 -0800392config USB_CONFIGFS_F_MTP
393 boolean "MTP gadget"
394 depends on USB_CONFIGFS
395 select USB_F_MTP
396 help
397 USB gadget MTP support
398
399config USB_CONFIGFS_F_PTP
400 boolean "PTP gadget"
401 depends on USB_CONFIGFS && USB_CONFIGFS_F_MTP
402 select USB_F_PTP
403 help
404 USB gadget PTP support
405
Badhri Jagan Sridharan4c5a25f2014-11-23 17:21:22 -0800406config USB_CONFIGFS_F_ACC
407 boolean "Accessory gadget"
408 depends on USB_CONFIGFS
409 select USB_F_ACC
410 help
411 USB gadget Accessory support
412
Badhri Jagan Sridharan28700992014-11-23 13:51:28 -0800413config USB_CONFIGFS_F_AUDIO_SRC
414 boolean "Audio Source gadget"
Badhri Jagan Sridharan4c5a25f2014-11-23 17:21:22 -0800415 depends on USB_CONFIGFS && USB_CONFIGFS_F_ACC
Amit Pundir2da3994c2015-10-30 03:00:20 +0530416 depends on SND
417 select SND_PCM
Badhri Jagan Sridharan28700992014-11-23 13:51:28 -0800418 select USB_F_AUDIO_SRC
419 help
420 USB gadget Audio Source support
421
Badhri Jagan Sridharan1c3865d2014-12-15 10:44:47 -0800422config USB_CONFIGFS_UEVENT
423 boolean "Uevent notification of Gadget state"
424 depends on USB_CONFIGFS
425 help
426 Enable uevent notifications to userspace when the gadget
427 state changes. The gadget can be in any of the following
428 three states: "CONNECTED/DISCONNECTED/CONFIGURED"
429
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200430config USB_CONFIGFS_F_UAC1
Christoph Jaeger6341e622014-12-20 15:41:11 -0500431 bool "Audio Class 1.0"
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200432 depends on USB_CONFIGFS
433 depends on SND
434 select USB_LIBCOMPOSITE
435 select SND_PCM
436 select USB_F_UAC1
437 help
438 This Audio function implements 1 AudioControl interface,
439 1 AudioStreaming Interface each for USB-OUT and USB-IN.
440 This driver requires a real Audio codec to be present
441 on the device.
442
443config USB_CONFIGFS_F_UAC2
Christoph Jaeger6341e622014-12-20 15:41:11 -0500444 bool "Audio Class 2.0"
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200445 depends on USB_CONFIGFS
446 depends on SND
447 select USB_LIBCOMPOSITE
448 select SND_PCM
449 select USB_F_UAC2
450 help
451 This Audio function is compatible with USB Audio Class
452 specification 2.0. It implements 1 AudioControl interface,
453 1 AudioStreaming Interface each for USB-OUT and USB-IN.
454 This driver doesn't expect any real Audio codec to be present
455 on the device - the audio streams are simply sinked to and
456 sourced from a virtual ALSA sound card created. The user-space
457 application may choose to do whatever it wants with the data
458 received from the USB Host and choose to provide whatever it
459 wants as audio data to the USB Host.
460
Andrzej Pietrasiewicz6f1de342014-10-16 13:33:31 +0200461config USB_CONFIGFS_F_MIDI
Christoph Jaeger6341e622014-12-20 15:41:11 -0500462 bool "MIDI function"
Andrzej Pietrasiewicz6f1de342014-10-16 13:33:31 +0200463 depends on USB_CONFIGFS
464 depends on SND
465 select USB_LIBCOMPOSITE
466 select SND_RAWMIDI
467 select USB_F_MIDI
468 help
469 The MIDI Function acts as a USB Audio device, with one MIDI
470 input and one MIDI output. These MIDI jacks appear as
471 a sound "card" in the ALSA sound system. Other MIDI
472 connections can then be made on the gadget system, using
473 ALSA's aconnect utility etc.
474
Andrzej Pietrasiewicz21a94762014-11-06 11:12:03 +0100475config USB_CONFIGFS_F_HID
Christoph Jaeger6341e622014-12-20 15:41:11 -0500476 bool "HID function"
Andrzej Pietrasiewicz21a94762014-11-06 11:12:03 +0100477 depends on USB_CONFIGFS
478 select USB_F_HID
479 help
480 The HID function driver provides generic emulation of USB
481 Human Interface Devices (HID).
482
483 For more information, see Documentation/usb/gadget_hid.txt.
484
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100485config USB_CONFIGFS_F_UVC
Christoph Jaeger8333d3c2015-02-02 10:00:03 -0500486 bool "USB Webcam function"
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100487 depends on USB_CONFIGFS
Arnd Bergmanne6be244a2016-09-12 17:34:57 +0200488 depends on VIDEO_V4L2
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100489 depends on VIDEO_DEV
490 select VIDEOBUF2_VMALLOC
491 select USB_F_UVC
492 help
493 The Webcam function acts as a composite USB Audio and Video Class
494 device. It provides a userspace API to process UVC control requests
495 and stream video data to the host.
496
Andrzej Pietrasiewiczee1cd512015-03-03 10:52:32 +0100497config USB_CONFIGFS_F_PRINTER
498 bool "Printer function"
499 select USB_F_PRINTER
Andrzej Pietrasiewiczf4b49762015-03-24 10:58:16 +0100500 depends on USB_CONFIGFS
Andrzej Pietrasiewiczee1cd512015-03-03 10:52:32 +0100501 help
502 The Printer function channels data between the USB host and a
503 userspace program driving the print engine. The user space
504 program reads and writes the device file /dev/g_printer<X> to
505 receive or send printer data. It can use ioctl calls to
506 the device file to get or set printer status.
507
508 For more information, see Documentation/usb/gadget_printer.txt
509 which includes sample code for accessing the device file.
510
Andrzej Pietrasiewicz4bb85482015-12-11 16:06:26 +0100511config USB_CONFIGFS_F_TCM
512 bool "USB Gadget Target Fabric"
513 depends on TARGET_CORE
514 depends on USB_CONFIGFS
515 select USB_LIBCOMPOSITE
516 select USB_F_TCM
517 help
518 This fabric is a USB gadget component. Two USB protocols are
519 supported that is BBB or BOT (Bulk Only Transport) and UAS
520 (USB Attached SCSI). BOT is advertised on alternative
521 interface 0 (primary) and UAS is on alternative interface 1.
522 Both protocols can work on USB2.0 and USB3.0.
523 UAS utilizes the USB 3.0 feature called streams support.
524
Mayank Ranafc2036e2016-09-20 19:37:57 -0700525config USB_CONFIGFS_F_DIAG
526 bool "USB Diag function"
527 select USB_F_DIAG
528 depends on USB_CONFIGFS
529 help
530 Diag function driver enables support for Qualcomm diagnostics
531 port over USB.
532
Mayank Rana4e8ce432016-12-06 09:21:32 -0800533config USB_CONFIGFS_F_CDEV
534 bool "USB Serial Character function"
535 select USB_F_CDEV
536 depends on USB_CONFIGFS
537 help
538 Generic USB serial character function driver to support DUN/NMEA.
539
Hemant Kumard5de1782017-01-12 18:00:44 -0800540config USB_CONFIGFS_F_CCID
541 bool "USB CCID function"
542 select USB_F_CCID
543 depends on USB_CONFIGFS
544 help
545 USB CCID function driver creates transport layer between the
546 userspace CCID component and the Windows Host.
547
Mayank Rana0663c432016-12-06 16:38:18 -0800548config USB_CONFIGFS_F_GSI
549 bool "USB GSI function"
550 select USB_F_GSI
551 depends on USB_CONFIGFS
552 help
553 Generic function driver to support h/w acceleration to IPA over GSI.
554
Mayank Rana20c78842017-02-14 17:34:45 -0800555config USB_CONFIGFS_F_QDSS
556 bool "USB QDSS function"
557 select USB_F_QDSS
558 depends on USB_CONFIGFS
559 help
560 USB QDSS function driver to get hwtracing related data over USB.
561
Felipe Balbibc49d1d2016-08-26 12:21:34 +0300562choice
563 tristate "USB Gadget Drivers"
564 default USB_ETH
Romain Izard5c51e4b2017-03-10 14:11:41 +0100565 optional
Felipe Balbibc49d1d2016-08-26 12:21:34 +0300566 help
567 A Linux "Gadget Driver" talks to the USB Peripheral Controller
568 driver through the abstract "gadget" API. Some other operating
569 systems call these "client" drivers, of which "class drivers"
570 are a subset (implementing a USB device class specification).
571 A gadget driver implements one or more USB functions using
572 the peripheral hardware.
573
574 Gadget drivers are hardware-neutral, or "platform independent",
575 except that they sometimes must understand quirks or limitations
576 of the particular controllers they work with. For example, when
577 a controller doesn't support alternate configurations or provide
578 enough of the right types of endpoints, the gadget driver might
579 not be able work with that controller, or might need to implement
580 a less common variant of a device class protocol.
581
Andrzej Pietrasiewicz8443f2d2014-07-15 13:09:44 +0200582source "drivers/usb/gadget/legacy/Kconfig"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700583
584endchoice
585
Denis Chengb75be4a2008-01-24 16:36:31 +0800586endif # USB_GADGET