blob: 31c1dd2bd6f47cb1e2db363074e14668d48dfae9 [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
Chandana Kishori Chiluveru50a21842017-11-06 14:54:24 +0530185config USB_F_QCRNDIS
186 tristate
187
Andrzej Pietrasiewicze5eaa0d2013-10-09 10:06:01 +0200188config USB_F_MASS_STORAGE
189 tristate
190
Andrzej Pietrasiewicz5920cda2013-12-03 15:15:33 +0100191config USB_F_FS
192 tristate
193
Andrzej Pietrasiewiczf3a34062014-07-22 19:58:38 +0200194config USB_F_UAC1
195 tristate
196
Andrzej Pietrasiewiczf8f93d22014-07-22 19:58:30 +0200197config USB_F_UAC2
198 tristate
199
Andrzej Pietrasiewicz6d11ed72014-09-09 02:02:10 +0300200config USB_F_UVC
201 tristate
202
Andrzej Pietrasiewiczb85e9de2014-10-16 13:33:27 +0200203config USB_F_MIDI
204 tristate
205
Andrzej Pietrasiewiczcb382532014-11-06 11:11:59 +0100206config USB_F_HID
207 tristate
208
Andrzej Pietrasiewiczb26394b2015-03-03 10:52:28 +0100209config USB_F_PRINTER
210 tristate
211
Andrzej Pietrasiewiczdc8c46a2015-12-11 16:06:21 +0100212config USB_F_TCM
213 tristate
214
Badhri Jagan Sridharan9a9e5dc2014-11-17 21:11:23 -0800215config USB_F_MTP
216 tristate
217
218config USB_F_PTP
Badhri Jagan Sridharan28700992014-11-23 13:51:28 -0800219 tristate
220
221config USB_F_AUDIO_SRC
Badhri Jagan Sridharan9a9e5dc2014-11-17 21:11:23 -0800222 tristate
223
Badhri Jagan Sridharan4c5a25f2014-11-23 17:21:22 -0800224config USB_F_ACC
225 tristate
226
Mayank Ranafc2036e2016-09-20 19:37:57 -0700227config USB_F_DIAG
228 tristate
229
Mayank Rana4e8ce432016-12-06 09:21:32 -0800230config USB_F_CDEV
231 tristate
232
Hemant Kumard5de1782017-01-12 18:00:44 -0800233config USB_F_CCID
234 tristate
235
Mayank Rana0663c432016-12-06 16:38:18 -0800236config USB_F_GSI
237 tristate
238
Mayank Rana20c78842017-02-14 17:34:45 -0800239config USB_F_QDSS
240 tristate
241
Linus Torvalds1da177e2005-04-16 15:20:36 -0700242# this first set of drivers all depend on bulk-capable hardware.
243
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200244config USB_CONFIGFS
245 tristate "USB functions configurable through configfs"
246 select USB_LIBCOMPOSITE
247 help
248 A Linux USB "gadget" can be set up through configfs.
249 If this is the case, the USB functions (which from the host's
250 perspective are seen as interfaces) and configurations are
251 specified simply by creating appropriate directories in configfs.
252 Associating functions with configurations is done by creating
253 appropriate symbolic links.
Philippe De Swert9c1d6962013-08-18 13:51:43 +0300254 For more information see Documentation/usb/gadget_configfs.txt.
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200255
256config USB_CONFIGFS_SERIAL
Christoph Jaeger6341e622014-12-20 15:41:11 -0500257 bool "Generic serial bulk in/out"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200258 depends on USB_CONFIGFS
259 depends on TTY
260 select USB_U_SERIAL
261 select USB_F_SERIAL
262 help
263 The function talks to the Linux-USB generic serial driver.
264
265config USB_CONFIGFS_ACM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500266 bool "Abstract Control Model (CDC ACM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200267 depends on USB_CONFIGFS
268 depends on TTY
269 select USB_U_SERIAL
270 select USB_F_ACM
271 help
272 ACM serial link. This function can be used to interoperate with
273 MS-Windows hosts or with the Linux-USB "cdc-acm" driver.
274
275config USB_CONFIGFS_OBEX
Christoph Jaeger6341e622014-12-20 15:41:11 -0500276 bool "Object Exchange Model (CDC OBEX)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200277 depends on USB_CONFIGFS
278 depends on TTY
279 select USB_U_SERIAL
280 select USB_F_OBEX
281 help
282 You will need a user space OBEX server talking to /dev/ttyGS*,
283 since the kernel itself doesn't implement the OBEX protocol.
284
285config USB_CONFIGFS_NCM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500286 bool "Network Control Model (CDC NCM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200287 depends on USB_CONFIGFS
288 depends on NET
289 select USB_U_ETHER
290 select USB_F_NCM
291 help
292 NCM is an advanced protocol for Ethernet encapsulation, allows
293 grouping of several ethernet frames into one USB transfer and
294 different alignment possibilities.
295
296config USB_CONFIGFS_ECM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500297 bool "Ethernet Control Model (CDC ECM)"
Andrzej Pietrasiewiczd1c02452013-06-13 10:37:24 +0200298 depends on USB_CONFIGFS
299 depends on NET
300 select USB_U_ETHER
301 select USB_F_ECM
302 help
303 The "Communication Device Class" (CDC) Ethernet Control Model.
304 That protocol is often avoided with pure Ethernet adapters, in
305 favor of simpler vendor-specific hardware, but is widely
306 supported by firmware for smart network devices.
307
Andrzej Pietrasiewicz02832e52013-05-28 09:15:56 +0200308config USB_CONFIGFS_ECM_SUBSET
Christoph Jaeger6341e622014-12-20 15:41:11 -0500309 bool "Ethernet Control Model (CDC ECM) subset"
Andrzej Pietrasiewicz02832e52013-05-28 09:15:56 +0200310 depends on USB_CONFIGFS
311 depends on NET
312 select USB_U_ETHER
313 select USB_F_SUBSET
314 help
315 On hardware that can't implement the full protocol,
316 a simple CDC subset is used, placing fewer demands on USB.
317
Chandana Kishori Chiluveru50a21842017-11-06 14:54:24 +0530318config USB_CONFIGFS_QCRNDIS
319 bool "QCRNDIS"
320 depends on USB_CONFIGFS
321 depends on RNDIS_IPA
322 depends on NET
323 select USB_U_ETHER
324 select USB_F_QCRNDIS
325
Andrzej Pietrasiewiczb3df2fa2013-05-28 09:16:01 +0200326config USB_CONFIGFS_RNDIS
327 bool "RNDIS"
328 depends on USB_CONFIGFS
329 depends on NET
330 select USB_U_ETHER
331 select USB_F_RNDIS
332 help
333 Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
334 and Microsoft provides redistributable binary RNDIS drivers for
335 older versions of Windows.
336
337 To make MS-Windows work with this, use Documentation/usb/linux.inf
338 as the "driver info file". For versions of MS-Windows older than
339 XP, you'll need to download drivers from Microsoft's website; a URL
340 is given in comments found in that info file.
341
Andrzej Pietrasiewicz17b80972013-05-28 09:15:51 +0200342config USB_CONFIGFS_EEM
343 bool "Ethernet Emulation Model (EEM)"
344 depends on USB_CONFIGFS
345 depends on NET
346 select USB_U_ETHER
347 select USB_F_EEM
348 help
349 CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
350 and therefore can be supported by more hardware. Technically ECM and
351 EEM are designed for different applications. The ECM model extends
352 the network interface to the target (e.g. a USB cable modem), and the
353 EEM model is for mobile devices to communicate with hosts using
354 ethernet over USB. For Linux gadgets, however, the interface with
355 the host is the same (a usbX device), so the differences are minimal.
356
Andrzej Pietrasiewicz83408742013-05-23 10:51:15 +0200357config USB_CONFIGFS_PHONET
Christoph Jaeger6341e622014-12-20 15:41:11 -0500358 bool "Phonet protocol"
Andrzej Pietrasiewicz83408742013-05-23 10:51:15 +0200359 depends on USB_CONFIGFS
360 depends on NET
361 depends on PHONET
362 select USB_U_ETHER
363 select USB_F_PHONET
364 help
365 The Phonet protocol implementation for USB device.
366
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200367config USB_CONFIGFS_MASS_STORAGE
Christoph Jaeger6341e622014-12-20 15:41:11 -0500368 bool "Mass storage"
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200369 depends on USB_CONFIGFS
Andrzej Pietrasiewiczbc912b02013-11-04 13:46:17 +0100370 depends on BLOCK
Andrzej Pietrasiewiczef0aa4b2013-10-09 10:06:05 +0200371 select USB_F_MASS_STORAGE
372 help
373 The Mass Storage Gadget acts as a USB Mass Storage disk drive.
374 As its storage repository it can use a regular file or a block
375 device (in much the same way as the "loop" device driver),
376 specified as a module parameter or sysfs option.
377
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +0100378config USB_CONFIGFS_F_LB_SS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500379 bool "Loopback and sourcesink function (for testing)"
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +0100380 depends on USB_CONFIGFS
381 select USB_F_SS_LB
382 help
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +0100383 Loopback function loops back a configurable number of transfers.
384 Sourcesink function either sinks and sources bulk data.
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +0100385 It also implements control requests, for "chapter 9" conformance.
386 Make this be the first driver you try using on top of any new
387 USB peripheral controller driver. Then you can use host-side
388 test software, like the "usbtest" driver, to put your hardware
389 and its driver through a basic set of functional tests.
390
Andrzej Pietrasiewiczb6584992013-12-03 15:15:36 +0100391config USB_CONFIGFS_F_FS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500392 bool "Function filesystem (FunctionFS)"
Andrzej Pietrasiewiczb6584992013-12-03 15:15:36 +0100393 depends on USB_CONFIGFS
394 select USB_F_FS
395 help
396 The Function Filesystem (FunctionFS) lets one create USB
397 composite functions in user space in the same way GadgetFS
398 lets one create USB gadgets in user space. This allows creation
399 of composite gadgets such that some of the functions are
400 implemented in kernel space (for instance Ethernet, serial or
401 mass storage) and other are implemented in user space.
402
Badhri Jagan Sridharan9a9e5dc2014-11-17 21:11:23 -0800403config USB_CONFIGFS_F_MTP
404 boolean "MTP gadget"
405 depends on USB_CONFIGFS
406 select USB_F_MTP
407 help
408 USB gadget MTP support
409
410config USB_CONFIGFS_F_PTP
411 boolean "PTP gadget"
412 depends on USB_CONFIGFS && USB_CONFIGFS_F_MTP
413 select USB_F_PTP
414 help
415 USB gadget PTP support
416
Badhri Jagan Sridharan4c5a25f2014-11-23 17:21:22 -0800417config USB_CONFIGFS_F_ACC
418 boolean "Accessory gadget"
419 depends on USB_CONFIGFS
420 select USB_F_ACC
421 help
422 USB gadget Accessory support
423
Badhri Jagan Sridharan28700992014-11-23 13:51:28 -0800424config USB_CONFIGFS_F_AUDIO_SRC
425 boolean "Audio Source gadget"
Badhri Jagan Sridharan4c5a25f2014-11-23 17:21:22 -0800426 depends on USB_CONFIGFS && USB_CONFIGFS_F_ACC
Amit Pundir2da3994c2015-10-30 03:00:20 +0530427 depends on SND
428 select SND_PCM
Badhri Jagan Sridharan28700992014-11-23 13:51:28 -0800429 select USB_F_AUDIO_SRC
430 help
431 USB gadget Audio Source support
432
Badhri Jagan Sridharan1c3865d2014-12-15 10:44:47 -0800433config USB_CONFIGFS_UEVENT
434 boolean "Uevent notification of Gadget state"
435 depends on USB_CONFIGFS
436 help
437 Enable uevent notifications to userspace when the gadget
438 state changes. The gadget can be in any of the following
439 three states: "CONNECTED/DISCONNECTED/CONFIGURED"
440
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200441config USB_CONFIGFS_F_UAC1
Christoph Jaeger6341e622014-12-20 15:41:11 -0500442 bool "Audio Class 1.0"
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200443 depends on USB_CONFIGFS
444 depends on SND
445 select USB_LIBCOMPOSITE
446 select SND_PCM
447 select USB_F_UAC1
448 help
449 This Audio function implements 1 AudioControl interface,
450 1 AudioStreaming Interface each for USB-OUT and USB-IN.
451 This driver requires a real Audio codec to be present
452 on the device.
453
454config USB_CONFIGFS_F_UAC2
Christoph Jaeger6341e622014-12-20 15:41:11 -0500455 bool "Audio Class 2.0"
Andrzej Pietrasiewiczcb0a59f2014-10-16 13:16:28 +0200456 depends on USB_CONFIGFS
457 depends on SND
458 select USB_LIBCOMPOSITE
459 select SND_PCM
460 select USB_F_UAC2
461 help
462 This Audio function is compatible with USB Audio Class
463 specification 2.0. It implements 1 AudioControl interface,
464 1 AudioStreaming Interface each for USB-OUT and USB-IN.
465 This driver doesn't expect any real Audio codec to be present
466 on the device - the audio streams are simply sinked to and
467 sourced from a virtual ALSA sound card created. The user-space
468 application may choose to do whatever it wants with the data
469 received from the USB Host and choose to provide whatever it
470 wants as audio data to the USB Host.
471
Andrzej Pietrasiewicz6f1de342014-10-16 13:33:31 +0200472config USB_CONFIGFS_F_MIDI
Christoph Jaeger6341e622014-12-20 15:41:11 -0500473 bool "MIDI function"
Andrzej Pietrasiewicz6f1de342014-10-16 13:33:31 +0200474 depends on USB_CONFIGFS
475 depends on SND
476 select USB_LIBCOMPOSITE
477 select SND_RAWMIDI
478 select USB_F_MIDI
479 help
480 The MIDI Function acts as a USB Audio device, with one MIDI
481 input and one MIDI output. These MIDI jacks appear as
482 a sound "card" in the ALSA sound system. Other MIDI
483 connections can then be made on the gadget system, using
484 ALSA's aconnect utility etc.
485
Andrzej Pietrasiewicz21a94762014-11-06 11:12:03 +0100486config USB_CONFIGFS_F_HID
Christoph Jaeger6341e622014-12-20 15:41:11 -0500487 bool "HID function"
Andrzej Pietrasiewicz21a94762014-11-06 11:12:03 +0100488 depends on USB_CONFIGFS
489 select USB_F_HID
490 help
491 The HID function driver provides generic emulation of USB
492 Human Interface Devices (HID).
493
494 For more information, see Documentation/usb/gadget_hid.txt.
495
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100496config USB_CONFIGFS_F_UVC
Christoph Jaeger8333d3c2015-02-02 10:00:03 -0500497 bool "USB Webcam function"
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100498 depends on USB_CONFIGFS
Arnd Bergmanne6be244a2016-09-12 17:34:57 +0200499 depends on VIDEO_V4L2
Andrzej Pietrasiewicz46919a22014-12-10 12:34:02 +0100500 depends on VIDEO_DEV
501 select VIDEOBUF2_VMALLOC
502 select USB_F_UVC
503 help
504 The Webcam function acts as a composite USB Audio and Video Class
505 device. It provides a userspace API to process UVC control requests
506 and stream video data to the host.
507
Andrzej Pietrasiewiczee1cd512015-03-03 10:52:32 +0100508config USB_CONFIGFS_F_PRINTER
509 bool "Printer function"
510 select USB_F_PRINTER
Andrzej Pietrasiewiczf4b49762015-03-24 10:58:16 +0100511 depends on USB_CONFIGFS
Andrzej Pietrasiewiczee1cd512015-03-03 10:52:32 +0100512 help
513 The Printer function channels data between the USB host and a
514 userspace program driving the print engine. The user space
515 program reads and writes the device file /dev/g_printer<X> to
516 receive or send printer data. It can use ioctl calls to
517 the device file to get or set printer status.
518
519 For more information, see Documentation/usb/gadget_printer.txt
520 which includes sample code for accessing the device file.
521
Andrzej Pietrasiewicz4bb85482015-12-11 16:06:26 +0100522config USB_CONFIGFS_F_TCM
523 bool "USB Gadget Target Fabric"
524 depends on TARGET_CORE
525 depends on USB_CONFIGFS
526 select USB_LIBCOMPOSITE
527 select USB_F_TCM
528 help
529 This fabric is a USB gadget component. Two USB protocols are
530 supported that is BBB or BOT (Bulk Only Transport) and UAS
531 (USB Attached SCSI). BOT is advertised on alternative
532 interface 0 (primary) and UAS is on alternative interface 1.
533 Both protocols can work on USB2.0 and USB3.0.
534 UAS utilizes the USB 3.0 feature called streams support.
535
Mayank Ranafc2036e2016-09-20 19:37:57 -0700536config USB_CONFIGFS_F_DIAG
537 bool "USB Diag function"
538 select USB_F_DIAG
539 depends on USB_CONFIGFS
540 help
541 Diag function driver enables support for Qualcomm diagnostics
542 port over USB.
543
Mayank Rana4e8ce432016-12-06 09:21:32 -0800544config USB_CONFIGFS_F_CDEV
545 bool "USB Serial Character function"
546 select USB_F_CDEV
547 depends on USB_CONFIGFS
548 help
549 Generic USB serial character function driver to support DUN/NMEA.
550
Hemant Kumard5de1782017-01-12 18:00:44 -0800551config USB_CONFIGFS_F_CCID
552 bool "USB CCID function"
553 select USB_F_CCID
554 depends on USB_CONFIGFS
555 help
556 USB CCID function driver creates transport layer between the
557 userspace CCID component and the Windows Host.
558
Mayank Rana0663c432016-12-06 16:38:18 -0800559config USB_CONFIGFS_F_GSI
560 bool "USB GSI function"
561 select USB_F_GSI
562 depends on USB_CONFIGFS
563 help
564 Generic function driver to support h/w acceleration to IPA over GSI.
565
Mayank Rana20c78842017-02-14 17:34:45 -0800566config USB_CONFIGFS_F_QDSS
567 bool "USB QDSS function"
568 select USB_F_QDSS
569 depends on USB_CONFIGFS
570 help
571 USB QDSS function driver to get hwtracing related data over USB.
572
Felipe Balbibc49d1d2016-08-26 12:21:34 +0300573choice
574 tristate "USB Gadget Drivers"
575 default USB_ETH
Romain Izard5c51e4b2017-03-10 14:11:41 +0100576 optional
Felipe Balbibc49d1d2016-08-26 12:21:34 +0300577 help
578 A Linux "Gadget Driver" talks to the USB Peripheral Controller
579 driver through the abstract "gadget" API. Some other operating
580 systems call these "client" drivers, of which "class drivers"
581 are a subset (implementing a USB device class specification).
582 A gadget driver implements one or more USB functions using
583 the peripheral hardware.
584
585 Gadget drivers are hardware-neutral, or "platform independent",
586 except that they sometimes must understand quirks or limitations
587 of the particular controllers they work with. For example, when
588 a controller doesn't support alternate configurations or provide
589 enough of the right types of endpoints, the gadget driver might
590 not be able work with that controller, or might need to implement
591 a less common variant of a device class protocol.
592
Andrzej Pietrasiewicz8443f2d2014-07-15 13:09:44 +0200593source "drivers/usb/gadget/legacy/Kconfig"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700594
595endchoice
596
Denis Chengb75be4a2008-01-24 16:36:31 +0800597endif # USB_GADGET