xref: /openbmc/linux/drivers/usb/gadget/Kconfig (revision eb9fecb9)
11da177e4SLinus Torvalds#
21da177e4SLinus Torvalds# USB Gadget support on a system involves
31da177e4SLinus Torvalds#    (a) a peripheral controller, and
41da177e4SLinus Torvalds#    (b) the gadget driver using it.
51da177e4SLinus Torvalds#
61da177e4SLinus Torvalds# NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
71da177e4SLinus Torvalds#
81da177e4SLinus Torvalds#  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
91da177e4SLinus Torvalds#  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
10cab00891SMatt LaPlante#  - Some systems have both kinds of controllers.
111da177e4SLinus Torvalds#
121da177e4SLinus Torvalds# With help from a special transceiver and a "Mini-AB" jack, systems with
131da177e4SLinus Torvalds# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
141da177e4SLinus Torvalds#
151da177e4SLinus Torvalds
16b75be4abSDenis Chengmenuconfig USB_GADGET
17b75be4abSDenis Cheng	tristate "USB Gadget Support"
18badf6d47SArnd Bergmann	select USB_COMMON
1986dc243cSAlan Stern	select NLS
201da177e4SLinus Torvalds	help
211da177e4SLinus Torvalds	   USB is a master/slave protocol, organized with one master
221da177e4SLinus Torvalds	   host (such as a PC) controlling up to 127 peripheral devices.
231da177e4SLinus Torvalds	   The USB hardware is asymmetric, which makes it easier to set up:
241da177e4SLinus Torvalds	   you can't connect a "to-the-host" connector to a peripheral.
251da177e4SLinus Torvalds
261da177e4SLinus Torvalds	   Linux can run in the host, or in the peripheral.  In both cases
271da177e4SLinus Torvalds	   you need a low level bus controller driver, and some software
281da177e4SLinus Torvalds	   talking to it.  Peripheral controllers are often discrete silicon,
291da177e4SLinus Torvalds	   or are integrated with the CPU in a microcontroller.  The more
30e113f29cSJules Villard	   familiar host side controllers have names like "EHCI", "OHCI",
311da177e4SLinus Torvalds	   or "UHCI", and are usually integrated into southbridges on PC
321da177e4SLinus Torvalds	   motherboards.
331da177e4SLinus Torvalds
341da177e4SLinus Torvalds	   Enable this configuration option if you want to run Linux inside
351da177e4SLinus Torvalds	   a USB peripheral device.  Configure one hardware driver for your
361da177e4SLinus Torvalds	   peripheral/device side bus controller, and a "gadget driver" for
371da177e4SLinus Torvalds	   your peripheral protocol.  (If you use modular gadget drivers,
381da177e4SLinus Torvalds	   you may configure more than one.)
391da177e4SLinus Torvalds
401da177e4SLinus Torvalds	   If in doubt, say "N" and don't enable these drivers; most people
411da177e4SLinus Torvalds	   don't have this kind of hardware (except maybe inside Linux PDAs).
421da177e4SLinus Torvalds
431da177e4SLinus Torvalds	   For more information, see <http://www.linux-usb.org/gadget> and
4405853ad6SMauro Carvalho Chehab	   the kernel documentation for this API.
451da177e4SLinus Torvalds
46b75be4abSDenis Chengif USB_GADGET
47b75be4abSDenis Cheng
4870790f63SDavid Brownellconfig USB_GADGET_DEBUG
496341e62bSChristoph Jaeger	bool "Debugging messages (DEVELOPMENT)"
5036e893d2SDavid Brownell	depends on DEBUG_KERNEL
5170790f63SDavid Brownell	help
5270790f63SDavid Brownell	   Many controller and gadget drivers will print some debugging
5370790f63SDavid Brownell	   messages if you use this option to ask for those messages.
5470790f63SDavid Brownell
5570790f63SDavid Brownell	   Avoid enabling these messages, even if you're actively
5670790f63SDavid Brownell	   debugging such a driver.  Many drivers will emit so many
5770790f63SDavid Brownell	   messages that the driver timings are affected, which will
5870790f63SDavid Brownell	   either create new failure modes or remove the one you're
5970790f63SDavid Brownell	   trying to track down.  Never enable these messages for a
6070790f63SDavid Brownell	   production build.
6170790f63SDavid Brownell
62cd108691SAndreas Larssonconfig USB_GADGET_VERBOSE
63cd108691SAndreas Larsson	bool "Verbose debugging Messages (DEVELOPMENT)"
64cd108691SAndreas Larsson	depends on USB_GADGET_DEBUG
65cd108691SAndreas Larsson	help
66cd108691SAndreas Larsson	   Many controller and gadget drivers will print verbose debugging
67cd108691SAndreas Larsson	   messages if you use this option to ask for those messages.
68cd108691SAndreas Larsson
69cd108691SAndreas Larsson	   Avoid enabling these messages, even if you're actively
70cd108691SAndreas Larsson	   debugging such a driver.  Many drivers will emit so many
71cd108691SAndreas Larsson	   messages that the driver timings are affected, which will
72cd108691SAndreas Larsson	   either create new failure modes or remove the one you're
73cd108691SAndreas Larsson	   trying to track down.  Never enable these messages for a
74cd108691SAndreas Larsson	   production build.
75cd108691SAndreas Larsson
761da177e4SLinus Torvaldsconfig USB_GADGET_DEBUG_FILES
776341e62bSChristoph Jaeger	bool "Debugging information files (DEVELOPMENT)"
7836e893d2SDavid Brownell	depends on PROC_FS
791da177e4SLinus Torvalds	help
801da177e4SLinus Torvalds	   Some of the drivers in the "gadget" framework can expose
811da177e4SLinus Torvalds	   debugging information in files such as /proc/driver/udc
821da177e4SLinus Torvalds	   (for a peripheral controller).  The information in these
831da177e4SLinus Torvalds	   files may help when you're troubleshooting or bringing up a
841da177e4SLinus Torvalds	   driver on a new board.   Enable these files by choosing "Y"
851da177e4SLinus Torvalds	   here.  If in doubt, or to conserve kernel memory, say "N".
861da177e4SLinus Torvalds
87914a3f3bSHaavard Skinnemoenconfig USB_GADGET_DEBUG_FS
886341e62bSChristoph Jaeger	bool "Debugging information files in debugfs (DEVELOPMENT)"
8936e893d2SDavid Brownell	depends on DEBUG_FS
90914a3f3bSHaavard Skinnemoen	help
91914a3f3bSHaavard Skinnemoen	   Some of the drivers in the "gadget" framework can expose
92914a3f3bSHaavard Skinnemoen	   debugging information in files under /sys/kernel/debug/.
93914a3f3bSHaavard Skinnemoen	   The information in these files may help when you're
94914a3f3bSHaavard Skinnemoen	   troubleshooting or bringing up a driver on a new board.
95914a3f3bSHaavard Skinnemoen	   Enable these files by choosing "Y" here.  If in doubt, or
96914a3f3bSHaavard Skinnemoen	   to conserve kernel memory, say "N".
97914a3f3bSHaavard Skinnemoen
9836e893d2SDavid Brownellconfig USB_GADGET_VBUS_DRAW
9936e893d2SDavid Brownell	int "Maximum VBUS Power usage (2-500 mA)"
10036e893d2SDavid Brownell	range 2 500
10136e893d2SDavid Brownell	default 2
10236e893d2SDavid Brownell	help
10336e893d2SDavid Brownell	   Some devices need to draw power from USB when they are
10436e893d2SDavid Brownell	   configured, perhaps to operate circuitry or to recharge
10536e893d2SDavid Brownell	   batteries.  This is in addition to any local power supply,
10636e893d2SDavid Brownell	   such as an AC adapter or batteries.
10736e893d2SDavid Brownell
10836e893d2SDavid Brownell	   Enter the maximum power your device draws through USB, in
10936e893d2SDavid Brownell	   milliAmperes.  The permitted range of values is 2 - 500 mA;
11036e893d2SDavid Brownell	   0 mA would be legal, but can make some hosts misbehave.
11136e893d2SDavid Brownell
11236e893d2SDavid Brownell	   This value will be used except for system-specific gadget
11336e893d2SDavid Brownell	   drivers that have more specific information.
11436e893d2SDavid Brownell
1156532c7fdSPer Forlinconfig USB_GADGET_STORAGE_NUM_BUFFERS
1166532c7fdSPer Forlin	int "Number of storage pipeline buffers"
117d8877fc7SFelipe Balbi	range 2 256
1186532c7fdSPer Forlin	default 2
1196532c7fdSPer Forlin	help
1206532c7fdSPer Forlin	   Usually 2 buffers are enough to establish a good buffering
1216532c7fdSPer Forlin	   pipeline. The number may be increased in order to compensate
1226532c7fdSPer Forlin	   for a bursty VFS behaviour. For instance there may be CPU wake up
1236532c7fdSPer Forlin	   latencies that makes the VFS to appear bursty in a system with
1246532c7fdSPer Forlin	   an CPU on-demand governor. Especially if DMA is doing IO to
1256532c7fdSPer Forlin	   offload the CPU. In this case the CPU will go into power
1266532c7fdSPer Forlin	   save often and spin up occasionally to move data within VFS.
1276532c7fdSPer Forlin	   If selecting USB_GADGET_DEBUG_FILES this value may be set by
1286532c7fdSPer Forlin	   a module parameter as well.
1296532c7fdSPer Forlin	   If unsure, say 2.
1306532c7fdSPer Forlin
131a5beaaf3SBaolin Wangconfig U_SERIAL_CONSOLE
132a5beaaf3SBaolin Wang	bool "Serial gadget console support"
133a5beaaf3SBaolin Wang	depends on USB_G_SERIAL
134a5beaaf3SBaolin Wang	help
135a5beaaf3SBaolin Wang	   It supports the serial gadget can be used as a console.
136a5beaaf3SBaolin Wang
13790fccb52SAndrzej Pietrasiewiczsource "drivers/usb/gadget/udc/Kconfig"
1381da177e4SLinus Torvalds
1391da177e4SLinus Torvalds#
1401da177e4SLinus Torvalds# USB Gadget Drivers
1411da177e4SLinus Torvalds#
142a84d9e53SSebastian Andrzej Siewior
143a84d9e53SSebastian Andrzej Siewior# composite based drivers
144a84d9e53SSebastian Andrzej Siewiorconfig USB_LIBCOMPOSITE
145a84d9e53SSebastian Andrzej Siewior	tristate
14688af8bbeSSebastian Andrzej Siewior	select CONFIGFS_FS
147a84d9e53SSebastian Andrzej Siewior	depends on USB_GADGET
148a84d9e53SSebastian Andrzej Siewior
149ff47f594SSebastian Andrzej Siewiorconfig USB_F_ACM
150ff47f594SSebastian Andrzej Siewior	tristate
151ff47f594SSebastian Andrzej Siewior
152cf9a08aeSSebastian Andrzej Siewiorconfig USB_F_SS_LB
153cf9a08aeSSebastian Andrzej Siewior	tristate
154cf9a08aeSSebastian Andrzej Siewior
1553249ca22SSebastian Andrzej Siewiorconfig USB_U_SERIAL
1563249ca22SSebastian Andrzej Siewior	tristate
1573249ca22SSebastian Andrzej Siewior
158f1a1823fSAndrzej Pietrasiewiczconfig USB_U_ETHER
159f1a1823fSAndrzej Pietrasiewicz	tristate
160f1a1823fSAndrzej Pietrasiewicz
161eb9fecb9SRuslan Bilovolconfig USB_U_AUDIO
162eb9fecb9SRuslan Bilovol	tristate
163eb9fecb9SRuslan Bilovol
16460540ea2SAndrzej Pietrasiewiczconfig USB_F_SERIAL
16560540ea2SAndrzej Pietrasiewicz	tristate
16660540ea2SAndrzej Pietrasiewicz
1671d8fc251SAndrzej Pietrasiewiczconfig USB_F_OBEX
1681d8fc251SAndrzej Pietrasiewicz	tristate
1691d8fc251SAndrzej Pietrasiewicz
17040d133d7SAndrzej Pietrasiewiczconfig USB_F_NCM
17140d133d7SAndrzej Pietrasiewicz	tristate
17240d133d7SAndrzej Pietrasiewicz
173fee562a6SAndrzej Pietrasiewiczconfig USB_F_ECM
174fee562a6SAndrzej Pietrasiewicz	tristate
175fee562a6SAndrzej Pietrasiewicz
176fcbdf12eSAndrzej Pietrasiewiczconfig USB_F_PHONET
177fcbdf12eSAndrzej Pietrasiewicz	tristate
178fcbdf12eSAndrzej Pietrasiewicz
179b29002a1SAndrzej Pietrasiewiczconfig USB_F_EEM
180b29002a1SAndrzej Pietrasiewicz	tristate
181b29002a1SAndrzej Pietrasiewicz
1828cedba7cSAndrzej Pietrasiewiczconfig USB_F_SUBSET
1838cedba7cSAndrzej Pietrasiewicz	tristate
1848cedba7cSAndrzej Pietrasiewicz
185f466c635SAndrzej Pietrasiewiczconfig USB_F_RNDIS
186f466c635SAndrzej Pietrasiewicz	tristate
187f466c635SAndrzej Pietrasiewicz
188e5eaa0dcSAndrzej Pietrasiewiczconfig USB_F_MASS_STORAGE
189e5eaa0dcSAndrzej Pietrasiewicz	tristate
190e5eaa0dcSAndrzej Pietrasiewicz
1915920cda6SAndrzej Pietrasiewiczconfig USB_F_FS
1925920cda6SAndrzej Pietrasiewicz	tristate
1935920cda6SAndrzej Pietrasiewicz
194f3a3406bSAndrzej Pietrasiewiczconfig USB_F_UAC1
195f3a3406bSAndrzej Pietrasiewicz	tristate
196f3a3406bSAndrzej Pietrasiewicz
197f8f93d24SAndrzej Pietrasiewiczconfig USB_F_UAC2
198f8f93d24SAndrzej Pietrasiewicz	tristate
199f8f93d24SAndrzej Pietrasiewicz
2006d11ed76SAndrzej Pietrasiewiczconfig USB_F_UVC
2016d11ed76SAndrzej Pietrasiewicz	tristate
2026d11ed76SAndrzej Pietrasiewicz
203b85e9de9SAndrzej Pietrasiewiczconfig USB_F_MIDI
204b85e9de9SAndrzej Pietrasiewicz	tristate
205b85e9de9SAndrzej Pietrasiewicz
206cb382536SAndrzej Pietrasiewiczconfig USB_F_HID
207cb382536SAndrzej Pietrasiewicz	tristate
208cb382536SAndrzej Pietrasiewicz
209b26394bdSAndrzej Pietrasiewiczconfig USB_F_PRINTER
210b26394bdSAndrzej Pietrasiewicz	tristate
211b26394bdSAndrzej Pietrasiewicz
212dc8c46a5SAndrzej Pietrasiewiczconfig USB_F_TCM
213dc8c46a5SAndrzej Pietrasiewicz	tristate
214dc8c46a5SAndrzej Pietrasiewicz
2151da177e4SLinus Torvalds# this first set of drivers all depend on bulk-capable hardware.
2161da177e4SLinus Torvalds
217d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS
218bc27f66eSRomain Izard	tristate "USB Gadget functions configurable through configfs"
219d1c02452SAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
220d1c02452SAndrzej Pietrasiewicz	help
221d1c02452SAndrzej Pietrasiewicz	  A Linux USB "gadget" can be set up through configfs.
222d1c02452SAndrzej Pietrasiewicz	  If this is the case, the USB functions (which from the host's
223d1c02452SAndrzej Pietrasiewicz	  perspective are seen as interfaces) and configurations are
224d1c02452SAndrzej Pietrasiewicz	  specified simply by creating appropriate directories in configfs.
225d1c02452SAndrzej Pietrasiewicz	  Associating functions with configurations is done by creating
226d1c02452SAndrzej Pietrasiewicz	  appropriate symbolic links.
2279c1d6962SPhilippe De Swert	  For more information see Documentation/usb/gadget_configfs.txt.
228d1c02452SAndrzej Pietrasiewicz
229d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_SERIAL
2306341e62bSChristoph Jaeger	bool "Generic serial bulk in/out"
231d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
232d1c02452SAndrzej Pietrasiewicz	depends on TTY
233d1c02452SAndrzej Pietrasiewicz	select USB_U_SERIAL
234d1c02452SAndrzej Pietrasiewicz	select USB_F_SERIAL
235d1c02452SAndrzej Pietrasiewicz	help
236d1c02452SAndrzej Pietrasiewicz	  The function talks to the Linux-USB generic serial driver.
237d1c02452SAndrzej Pietrasiewicz
238d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_ACM
2396341e62bSChristoph Jaeger	bool "Abstract Control Model (CDC ACM)"
240d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
241d1c02452SAndrzej Pietrasiewicz	depends on TTY
242d1c02452SAndrzej Pietrasiewicz	select USB_U_SERIAL
243d1c02452SAndrzej Pietrasiewicz	select USB_F_ACM
244d1c02452SAndrzej Pietrasiewicz	help
245d1c02452SAndrzej Pietrasiewicz	  ACM serial link.  This function can be used to interoperate with
246d1c02452SAndrzej Pietrasiewicz	  MS-Windows hosts or with the Linux-USB "cdc-acm" driver.
247d1c02452SAndrzej Pietrasiewicz
248d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_OBEX
2496341e62bSChristoph Jaeger	bool "Object Exchange Model (CDC OBEX)"
250d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
251d1c02452SAndrzej Pietrasiewicz	depends on TTY
252d1c02452SAndrzej Pietrasiewicz	select USB_U_SERIAL
253d1c02452SAndrzej Pietrasiewicz	select USB_F_OBEX
254d1c02452SAndrzej Pietrasiewicz	help
255d1c02452SAndrzej Pietrasiewicz	  You will need a user space OBEX server talking to /dev/ttyGS*,
256d1c02452SAndrzej Pietrasiewicz	  since the kernel itself doesn't implement the OBEX protocol.
257d1c02452SAndrzej Pietrasiewicz
258d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_NCM
2596341e62bSChristoph Jaeger	bool "Network Control Model (CDC NCM)"
260d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
261d1c02452SAndrzej Pietrasiewicz	depends on NET
262d1c02452SAndrzej Pietrasiewicz	select USB_U_ETHER
263d1c02452SAndrzej Pietrasiewicz	select USB_F_NCM
264d1c02452SAndrzej Pietrasiewicz	help
265d1c02452SAndrzej Pietrasiewicz	  NCM is an advanced protocol for Ethernet encapsulation, allows
266d1c02452SAndrzej Pietrasiewicz	  grouping of several ethernet frames into one USB transfer and
267d1c02452SAndrzej Pietrasiewicz	  different alignment possibilities.
268d1c02452SAndrzej Pietrasiewicz
269d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_ECM
2706341e62bSChristoph Jaeger	bool "Ethernet Control Model (CDC ECM)"
271d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
272d1c02452SAndrzej Pietrasiewicz	depends on NET
273d1c02452SAndrzej Pietrasiewicz	select USB_U_ETHER
274d1c02452SAndrzej Pietrasiewicz	select USB_F_ECM
275d1c02452SAndrzej Pietrasiewicz	help
276d1c02452SAndrzej Pietrasiewicz	  The "Communication Device Class" (CDC) Ethernet Control Model.
277d1c02452SAndrzej Pietrasiewicz	  That protocol is often avoided with pure Ethernet adapters, in
278d1c02452SAndrzej Pietrasiewicz	  favor of simpler vendor-specific hardware, but is widely
279d1c02452SAndrzej Pietrasiewicz	  supported by firmware for smart network devices.
280d1c02452SAndrzej Pietrasiewicz
28102832e56SAndrzej Pietrasiewiczconfig USB_CONFIGFS_ECM_SUBSET
2826341e62bSChristoph Jaeger	bool "Ethernet Control Model (CDC ECM) subset"
28302832e56SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
28402832e56SAndrzej Pietrasiewicz	depends on NET
28502832e56SAndrzej Pietrasiewicz	select USB_U_ETHER
28602832e56SAndrzej Pietrasiewicz	select USB_F_SUBSET
28702832e56SAndrzej Pietrasiewicz	help
28802832e56SAndrzej Pietrasiewicz	  On hardware that can't implement the full protocol,
28902832e56SAndrzej Pietrasiewicz	  a simple CDC subset is used, placing fewer demands on USB.
29002832e56SAndrzej Pietrasiewicz
291b3df2faaSAndrzej Pietrasiewiczconfig USB_CONFIGFS_RNDIS
292b3df2faaSAndrzej Pietrasiewicz	bool "RNDIS"
293b3df2faaSAndrzej Pietrasiewicz	depends on USB_CONFIGFS
294b3df2faaSAndrzej Pietrasiewicz	depends on NET
295b3df2faaSAndrzej Pietrasiewicz	select USB_U_ETHER
296b3df2faaSAndrzej Pietrasiewicz	select USB_F_RNDIS
297b3df2faaSAndrzej Pietrasiewicz	help
298b3df2faaSAndrzej Pietrasiewicz	   Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
299b3df2faaSAndrzej Pietrasiewicz	   and Microsoft provides redistributable binary RNDIS drivers for
300b3df2faaSAndrzej Pietrasiewicz	   older versions of Windows.
301b3df2faaSAndrzej Pietrasiewicz
302b3df2faaSAndrzej Pietrasiewicz	   To make MS-Windows work with this, use Documentation/usb/linux.inf
303b3df2faaSAndrzej Pietrasiewicz	   as the "driver info file".  For versions of MS-Windows older than
304b3df2faaSAndrzej Pietrasiewicz	   XP, you'll need to download drivers from Microsoft's website; a URL
305b3df2faaSAndrzej Pietrasiewicz	   is given in comments found in that info file.
306b3df2faaSAndrzej Pietrasiewicz
30717b80976SAndrzej Pietrasiewiczconfig USB_CONFIGFS_EEM
30817b80976SAndrzej Pietrasiewicz	bool "Ethernet Emulation Model (EEM)"
30917b80976SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
31017b80976SAndrzej Pietrasiewicz	depends on NET
31117b80976SAndrzej Pietrasiewicz	select USB_U_ETHER
31217b80976SAndrzej Pietrasiewicz	select USB_F_EEM
31317b80976SAndrzej Pietrasiewicz	help
31417b80976SAndrzej Pietrasiewicz	  CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
31517b80976SAndrzej Pietrasiewicz	  and therefore can be supported by more hardware.  Technically ECM and
31617b80976SAndrzej Pietrasiewicz	  EEM are designed for different applications.  The ECM model extends
31717b80976SAndrzej Pietrasiewicz	  the network interface to the target (e.g. a USB cable modem), and the
31817b80976SAndrzej Pietrasiewicz	  EEM model is for mobile devices to communicate with hosts using
31917b80976SAndrzej Pietrasiewicz	  ethernet over USB.  For Linux gadgets, however, the interface with
32017b80976SAndrzej Pietrasiewicz	  the host is the same (a usbX device), so the differences are minimal.
32117b80976SAndrzej Pietrasiewicz
32283408745SAndrzej Pietrasiewiczconfig USB_CONFIGFS_PHONET
3236341e62bSChristoph Jaeger	bool "Phonet protocol"
32483408745SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
32583408745SAndrzej Pietrasiewicz	depends on NET
32683408745SAndrzej Pietrasiewicz	depends on PHONET
32783408745SAndrzej Pietrasiewicz	select USB_U_ETHER
32883408745SAndrzej Pietrasiewicz	select USB_F_PHONET
32983408745SAndrzej Pietrasiewicz	help
33083408745SAndrzej Pietrasiewicz	  The Phonet protocol implementation for USB device.
33183408745SAndrzej Pietrasiewicz
332ef0aa4b9SAndrzej Pietrasiewiczconfig USB_CONFIGFS_MASS_STORAGE
3336341e62bSChristoph Jaeger	bool "Mass storage"
334ef0aa4b9SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
335bc912b0dSAndrzej Pietrasiewicz	depends on BLOCK
336ef0aa4b9SAndrzej Pietrasiewicz	select USB_F_MASS_STORAGE
337ef0aa4b9SAndrzej Pietrasiewicz	help
338ef0aa4b9SAndrzej Pietrasiewicz	  The Mass Storage Gadget acts as a USB Mass Storage disk drive.
339ef0aa4b9SAndrzej Pietrasiewicz	  As its storage repository it can use a regular file or a block
340ef0aa4b9SAndrzej Pietrasiewicz	  device (in much the same way as the "loop" device driver),
341ef0aa4b9SAndrzej Pietrasiewicz	  specified as a module parameter or sysfs option.
342ef0aa4b9SAndrzej Pietrasiewicz
34325d80151SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_LB_SS
3446341e62bSChristoph Jaeger	bool "Loopback and sourcesink function (for testing)"
345c0501f47SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
346c0501f47SAndrzej Pietrasiewicz	select USB_F_SS_LB
347c0501f47SAndrzej Pietrasiewicz	help
34825d80151SAndrzej Pietrasiewicz	  Loopback function loops back a configurable number of transfers.
34925d80151SAndrzej Pietrasiewicz	  Sourcesink function either sinks and sources bulk data.
350c0501f47SAndrzej Pietrasiewicz	  It also implements control requests, for "chapter 9" conformance.
351c0501f47SAndrzej Pietrasiewicz	  Make this be the first driver you try using on top of any new
352c0501f47SAndrzej Pietrasiewicz	  USB peripheral controller driver.  Then you can use host-side
353c0501f47SAndrzej Pietrasiewicz	  test software, like the "usbtest" driver, to put your hardware
354c0501f47SAndrzej Pietrasiewicz	  and its driver through a basic set of functional tests.
355c0501f47SAndrzej Pietrasiewicz
356b658499fSAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_FS
3576341e62bSChristoph Jaeger	bool "Function filesystem (FunctionFS)"
358b658499fSAndrzej Pietrasiewicz	depends on USB_CONFIGFS
359b658499fSAndrzej Pietrasiewicz	select USB_F_FS
360b658499fSAndrzej Pietrasiewicz	help
361b658499fSAndrzej Pietrasiewicz	  The Function Filesystem (FunctionFS) lets one create USB
362b658499fSAndrzej Pietrasiewicz	  composite functions in user space in the same way GadgetFS
363b658499fSAndrzej Pietrasiewicz	  lets one create USB gadgets in user space.  This allows creation
364b658499fSAndrzej Pietrasiewicz	  of composite gadgets such that some of the functions are
365b658499fSAndrzej Pietrasiewicz	  implemented in kernel space (for instance Ethernet, serial or
366b658499fSAndrzej Pietrasiewicz	  mass storage) and other are implemented in user space.
367b658499fSAndrzej Pietrasiewicz
368cb0a59f5SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_UAC1
3696341e62bSChristoph Jaeger	bool "Audio Class 1.0"
370cb0a59f5SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
371cb0a59f5SAndrzej Pietrasiewicz	depends on SND
372cb0a59f5SAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
373cb0a59f5SAndrzej Pietrasiewicz	select SND_PCM
374cb0a59f5SAndrzej Pietrasiewicz	select USB_F_UAC1
375cb0a59f5SAndrzej Pietrasiewicz	help
376cb0a59f5SAndrzej Pietrasiewicz	  This Audio function implements 1 AudioControl interface,
377cb0a59f5SAndrzej Pietrasiewicz	  1 AudioStreaming Interface each for USB-OUT and USB-IN.
378cb0a59f5SAndrzej Pietrasiewicz	  This driver requires a real Audio codec to be present
379cb0a59f5SAndrzej Pietrasiewicz	  on the device.
380cb0a59f5SAndrzej Pietrasiewicz
381cb0a59f5SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_UAC2
3826341e62bSChristoph Jaeger	bool "Audio Class 2.0"
383cb0a59f5SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
384cb0a59f5SAndrzej Pietrasiewicz	depends on SND
385cb0a59f5SAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
386cb0a59f5SAndrzej Pietrasiewicz	select SND_PCM
387eb9fecb9SRuslan Bilovol	select USB_U_AUDIO
388cb0a59f5SAndrzej Pietrasiewicz	select USB_F_UAC2
389cb0a59f5SAndrzej Pietrasiewicz	help
390cb0a59f5SAndrzej Pietrasiewicz	  This Audio function is compatible with USB Audio Class
391cb0a59f5SAndrzej Pietrasiewicz	  specification 2.0. It implements 1 AudioControl interface,
392cb0a59f5SAndrzej Pietrasiewicz	  1 AudioStreaming Interface each for USB-OUT and USB-IN.
393cb0a59f5SAndrzej Pietrasiewicz	  This driver doesn't expect any real Audio codec to be present
394cb0a59f5SAndrzej Pietrasiewicz	  on the device - the audio streams are simply sinked to and
395cb0a59f5SAndrzej Pietrasiewicz	  sourced from a virtual ALSA sound card created. The user-space
396cb0a59f5SAndrzej Pietrasiewicz	  application may choose to do whatever it wants with the data
397cb0a59f5SAndrzej Pietrasiewicz	  received from the USB Host and choose to provide whatever it
398cb0a59f5SAndrzej Pietrasiewicz	  wants as audio data to the USB Host.
399cb0a59f5SAndrzej Pietrasiewicz
4006f1de344SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_MIDI
4016341e62bSChristoph Jaeger	bool "MIDI function"
4026f1de344SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
4036f1de344SAndrzej Pietrasiewicz	depends on SND
4046f1de344SAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
4056f1de344SAndrzej Pietrasiewicz	select SND_RAWMIDI
4066f1de344SAndrzej Pietrasiewicz	select USB_F_MIDI
4076f1de344SAndrzej Pietrasiewicz	help
4086f1de344SAndrzej Pietrasiewicz	  The MIDI Function acts as a USB Audio device, with one MIDI
4096f1de344SAndrzej Pietrasiewicz	  input and one MIDI output. These MIDI jacks appear as
4106f1de344SAndrzej Pietrasiewicz	  a sound "card" in the ALSA sound system. Other MIDI
4116f1de344SAndrzej Pietrasiewicz	  connections can then be made on the gadget system, using
4126f1de344SAndrzej Pietrasiewicz	  ALSA's aconnect utility etc.
4136f1de344SAndrzej Pietrasiewicz
41421a9476aSAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_HID
4156341e62bSChristoph Jaeger	bool "HID function"
41621a9476aSAndrzej Pietrasiewicz	depends on USB_CONFIGFS
41721a9476aSAndrzej Pietrasiewicz	select USB_F_HID
41821a9476aSAndrzej Pietrasiewicz	help
41921a9476aSAndrzej Pietrasiewicz	  The HID function driver provides generic emulation of USB
42021a9476aSAndrzej Pietrasiewicz	  Human Interface Devices (HID).
42121a9476aSAndrzej Pietrasiewicz
42221a9476aSAndrzej Pietrasiewicz	  For more information, see Documentation/usb/gadget_hid.txt.
42321a9476aSAndrzej Pietrasiewicz
42446919a23SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_UVC
4258333d3cdSChristoph Jaeger	bool "USB Webcam function"
42646919a23SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
427e6be244aSArnd Bergmann	depends on VIDEO_V4L2
42846919a23SAndrzej Pietrasiewicz	depends on VIDEO_DEV
42946919a23SAndrzej Pietrasiewicz	select VIDEOBUF2_VMALLOC
43046919a23SAndrzej Pietrasiewicz	select USB_F_UVC
43146919a23SAndrzej Pietrasiewicz	help
43246919a23SAndrzej Pietrasiewicz	  The Webcam function acts as a composite USB Audio and Video Class
43346919a23SAndrzej Pietrasiewicz	  device. It provides a userspace API to process UVC control requests
43446919a23SAndrzej Pietrasiewicz	  and stream video data to the host.
43546919a23SAndrzej Pietrasiewicz
436ee1cd515SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_PRINTER
437ee1cd515SAndrzej Pietrasiewicz	bool "Printer function"
438ee1cd515SAndrzej Pietrasiewicz	select USB_F_PRINTER
439f4b4976bSAndrzej Pietrasiewicz	depends on USB_CONFIGFS
440ee1cd515SAndrzej Pietrasiewicz	help
441ee1cd515SAndrzej Pietrasiewicz	  The Printer function channels data between the USB host and a
442ee1cd515SAndrzej Pietrasiewicz	  userspace program driving the print engine. The user space
443ee1cd515SAndrzej Pietrasiewicz	  program reads and writes the device file /dev/g_printer<X> to
444ee1cd515SAndrzej Pietrasiewicz	  receive or send printer data. It can use ioctl calls to
445ee1cd515SAndrzej Pietrasiewicz	  the device file to get or set printer status.
446ee1cd515SAndrzej Pietrasiewicz
447ee1cd515SAndrzej Pietrasiewicz	  For more information, see Documentation/usb/gadget_printer.txt
448ee1cd515SAndrzej Pietrasiewicz	  which includes sample code for accessing the device file.
449ee1cd515SAndrzej Pietrasiewicz
4504bb8548dSAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_TCM
4514bb8548dSAndrzej Pietrasiewicz	bool "USB Gadget Target Fabric"
4524bb8548dSAndrzej Pietrasiewicz	depends on TARGET_CORE
4534bb8548dSAndrzej Pietrasiewicz	depends on USB_CONFIGFS
4544bb8548dSAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
4554bb8548dSAndrzej Pietrasiewicz	select USB_F_TCM
4564bb8548dSAndrzej Pietrasiewicz	help
4574bb8548dSAndrzej Pietrasiewicz	  This fabric is a USB gadget component. Two USB protocols are
4584bb8548dSAndrzej Pietrasiewicz	  supported that is BBB or BOT (Bulk Only Transport) and UAS
4594bb8548dSAndrzej Pietrasiewicz	  (USB Attached SCSI). BOT is advertised on alternative
4604bb8548dSAndrzej Pietrasiewicz	  interface 0 (primary) and UAS is on alternative interface 1.
4614bb8548dSAndrzej Pietrasiewicz	  Both protocols can work on USB2.0 and USB3.0.
4624bb8548dSAndrzej Pietrasiewicz	  UAS utilizes the USB 3.0 feature called streams support.
4634bb8548dSAndrzej Pietrasiewicz
464bc49d1d1SFelipe Balbichoice
465bc27f66eSRomain Izard	tristate "USB Gadget precomposed configurations"
466bc49d1d1SFelipe Balbi	default USB_ETH
4676e253d0fSRomain Izard	optional
468bc49d1d1SFelipe Balbi	help
469bc49d1d1SFelipe Balbi	  A Linux "Gadget Driver" talks to the USB Peripheral Controller
470bc49d1d1SFelipe Balbi	  driver through the abstract "gadget" API.  Some other operating
471bc49d1d1SFelipe Balbi	  systems call these "client" drivers, of which "class drivers"
472bc49d1d1SFelipe Balbi	  are a subset (implementing a USB device class specification).
473bc49d1d1SFelipe Balbi	  A gadget driver implements one or more USB functions using
474bc49d1d1SFelipe Balbi	  the peripheral hardware.
475bc49d1d1SFelipe Balbi
476bc49d1d1SFelipe Balbi	  Gadget drivers are hardware-neutral, or "platform independent",
477bc49d1d1SFelipe Balbi	  except that they sometimes must understand quirks or limitations
478bc49d1d1SFelipe Balbi	  of the particular controllers they work with.  For example, when
479bc49d1d1SFelipe Balbi	  a controller doesn't support alternate configurations or provide
480bc49d1d1SFelipe Balbi	  enough of the right types of endpoints, the gadget driver might
481bc49d1d1SFelipe Balbi	  not be able work with that controller, or might need to implement
482bc49d1d1SFelipe Balbi	  a less common variant of a device class protocol.
483bc49d1d1SFelipe Balbi
484bc27f66eSRomain Izard	  The available choices each represent a single precomposed USB
485bc27f66eSRomain Izard	  gadget configuration. In the device model, each option contains
486bc27f66eSRomain Izard	  both the device instantiation as a child for a USB gadget
487bc27f66eSRomain Izard	  controller, and the relevant drivers for each function declared
488bc27f66eSRomain Izard	  by the device.
489bc27f66eSRomain Izard
4908443f2d2SAndrzej Pietrasiewiczsource "drivers/usb/gadget/legacy/Kconfig"
4911da177e4SLinus Torvalds
4921da177e4SLinus Torvaldsendchoice
4931da177e4SLinus Torvalds
494b75be4abSDenis Chengendif # USB_GADGET
495