xref: /openbmc/linux/drivers/usb/gadget/Kconfig (revision 21a9476a)
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"
1886dc243cSAlan Stern	select NLS
191da177e4SLinus Torvalds	help
201da177e4SLinus Torvalds	   USB is a master/slave protocol, organized with one master
211da177e4SLinus Torvalds	   host (such as a PC) controlling up to 127 peripheral devices.
221da177e4SLinus Torvalds	   The USB hardware is asymmetric, which makes it easier to set up:
231da177e4SLinus Torvalds	   you can't connect a "to-the-host" connector to a peripheral.
241da177e4SLinus Torvalds
251da177e4SLinus Torvalds	   Linux can run in the host, or in the peripheral.  In both cases
261da177e4SLinus Torvalds	   you need a low level bus controller driver, and some software
271da177e4SLinus Torvalds	   talking to it.  Peripheral controllers are often discrete silicon,
281da177e4SLinus Torvalds	   or are integrated with the CPU in a microcontroller.  The more
29e113f29cSJules Villard	   familiar host side controllers have names like "EHCI", "OHCI",
301da177e4SLinus Torvalds	   or "UHCI", and are usually integrated into southbridges on PC
311da177e4SLinus Torvalds	   motherboards.
321da177e4SLinus Torvalds
331da177e4SLinus Torvalds	   Enable this configuration option if you want to run Linux inside
341da177e4SLinus Torvalds	   a USB peripheral device.  Configure one hardware driver for your
351da177e4SLinus Torvalds	   peripheral/device side bus controller, and a "gadget driver" for
361da177e4SLinus Torvalds	   your peripheral protocol.  (If you use modular gadget drivers,
371da177e4SLinus Torvalds	   you may configure more than one.)
381da177e4SLinus Torvalds
391da177e4SLinus Torvalds	   If in doubt, say "N" and don't enable these drivers; most people
401da177e4SLinus Torvalds	   don't have this kind of hardware (except maybe inside Linux PDAs).
411da177e4SLinus Torvalds
421da177e4SLinus Torvalds	   For more information, see <http://www.linux-usb.org/gadget> and
431da177e4SLinus Torvalds	   the kernel DocBook documentation for this API.
441da177e4SLinus Torvalds
45b75be4abSDenis Chengif USB_GADGET
46b75be4abSDenis Cheng
4770790f63SDavid Brownellconfig USB_GADGET_DEBUG
48afd0e0f2SRobert P. J. Day	boolean "Debugging messages (DEVELOPMENT)"
4936e893d2SDavid Brownell	depends on DEBUG_KERNEL
5070790f63SDavid Brownell	help
5170790f63SDavid Brownell	   Many controller and gadget drivers will print some debugging
5270790f63SDavid Brownell	   messages if you use this option to ask for those messages.
5370790f63SDavid Brownell
5470790f63SDavid Brownell	   Avoid enabling these messages, even if you're actively
5570790f63SDavid Brownell	   debugging such a driver.  Many drivers will emit so many
5670790f63SDavid Brownell	   messages that the driver timings are affected, which will
5770790f63SDavid Brownell	   either create new failure modes or remove the one you're
5870790f63SDavid Brownell	   trying to track down.  Never enable these messages for a
5970790f63SDavid Brownell	   production build.
6070790f63SDavid Brownell
61cd108691SAndreas Larssonconfig USB_GADGET_VERBOSE
62cd108691SAndreas Larsson	bool "Verbose debugging Messages (DEVELOPMENT)"
63cd108691SAndreas Larsson	depends on USB_GADGET_DEBUG
64cd108691SAndreas Larsson	help
65cd108691SAndreas Larsson	   Many controller and gadget drivers will print verbose debugging
66cd108691SAndreas Larsson	   messages if you use this option to ask for those messages.
67cd108691SAndreas Larsson
68cd108691SAndreas Larsson	   Avoid enabling these messages, even if you're actively
69cd108691SAndreas Larsson	   debugging such a driver.  Many drivers will emit so many
70cd108691SAndreas Larsson	   messages that the driver timings are affected, which will
71cd108691SAndreas Larsson	   either create new failure modes or remove the one you're
72cd108691SAndreas Larsson	   trying to track down.  Never enable these messages for a
73cd108691SAndreas Larsson	   production build.
74cd108691SAndreas Larsson
751da177e4SLinus Torvaldsconfig USB_GADGET_DEBUG_FILES
76afd0e0f2SRobert P. J. Day	boolean "Debugging information files (DEVELOPMENT)"
7736e893d2SDavid Brownell	depends on PROC_FS
781da177e4SLinus Torvalds	help
791da177e4SLinus Torvalds	   Some of the drivers in the "gadget" framework can expose
801da177e4SLinus Torvalds	   debugging information in files such as /proc/driver/udc
811da177e4SLinus Torvalds	   (for a peripheral controller).  The information in these
821da177e4SLinus Torvalds	   files may help when you're troubleshooting or bringing up a
831da177e4SLinus Torvalds	   driver on a new board.   Enable these files by choosing "Y"
841da177e4SLinus Torvalds	   here.  If in doubt, or to conserve kernel memory, say "N".
851da177e4SLinus Torvalds
86914a3f3bSHaavard Skinnemoenconfig USB_GADGET_DEBUG_FS
87afd0e0f2SRobert P. J. Day	boolean "Debugging information files in debugfs (DEVELOPMENT)"
8836e893d2SDavid Brownell	depends on DEBUG_FS
89914a3f3bSHaavard Skinnemoen	help
90914a3f3bSHaavard Skinnemoen	   Some of the drivers in the "gadget" framework can expose
91914a3f3bSHaavard Skinnemoen	   debugging information in files under /sys/kernel/debug/.
92914a3f3bSHaavard Skinnemoen	   The information in these files may help when you're
93914a3f3bSHaavard Skinnemoen	   troubleshooting or bringing up a driver on a new board.
94914a3f3bSHaavard Skinnemoen	   Enable these files by choosing "Y" here.  If in doubt, or
95914a3f3bSHaavard Skinnemoen	   to conserve kernel memory, say "N".
96914a3f3bSHaavard Skinnemoen
9736e893d2SDavid Brownellconfig USB_GADGET_VBUS_DRAW
9836e893d2SDavid Brownell	int "Maximum VBUS Power usage (2-500 mA)"
9936e893d2SDavid Brownell	range 2 500
10036e893d2SDavid Brownell	default 2
10136e893d2SDavid Brownell	help
10236e893d2SDavid Brownell	   Some devices need to draw power from USB when they are
10336e893d2SDavid Brownell	   configured, perhaps to operate circuitry or to recharge
10436e893d2SDavid Brownell	   batteries.  This is in addition to any local power supply,
10536e893d2SDavid Brownell	   such as an AC adapter or batteries.
10636e893d2SDavid Brownell
10736e893d2SDavid Brownell	   Enter the maximum power your device draws through USB, in
10836e893d2SDavid Brownell	   milliAmperes.  The permitted range of values is 2 - 500 mA;
10936e893d2SDavid Brownell	   0 mA would be legal, but can make some hosts misbehave.
11036e893d2SDavid Brownell
11136e893d2SDavid Brownell	   This value will be used except for system-specific gadget
11236e893d2SDavid Brownell	   drivers that have more specific information.
11336e893d2SDavid Brownell
1146532c7fdSPer Forlinconfig USB_GADGET_STORAGE_NUM_BUFFERS
1156532c7fdSPer Forlin	int "Number of storage pipeline buffers"
1166532c7fdSPer Forlin	range 2 4
1176532c7fdSPer Forlin	default 2
1186532c7fdSPer Forlin	help
1196532c7fdSPer Forlin	   Usually 2 buffers are enough to establish a good buffering
1206532c7fdSPer Forlin	   pipeline. The number may be increased in order to compensate
1216532c7fdSPer Forlin	   for a bursty VFS behaviour. For instance there may be CPU wake up
1226532c7fdSPer Forlin	   latencies that makes the VFS to appear bursty in a system with
1236532c7fdSPer Forlin	   an CPU on-demand governor. Especially if DMA is doing IO to
1246532c7fdSPer Forlin	   offload the CPU. In this case the CPU will go into power
1256532c7fdSPer Forlin	   save often and spin up occasionally to move data within VFS.
1266532c7fdSPer Forlin	   If selecting USB_GADGET_DEBUG_FILES this value may be set by
1276532c7fdSPer Forlin	   a module parameter as well.
1286532c7fdSPer Forlin	   If unsure, say 2.
1296532c7fdSPer Forlin
13090fccb52SAndrzej Pietrasiewiczsource "drivers/usb/gadget/udc/Kconfig"
1311da177e4SLinus Torvalds
1321da177e4SLinus Torvalds#
1331da177e4SLinus Torvalds# USB Gadget Drivers
1341da177e4SLinus Torvalds#
135a84d9e53SSebastian Andrzej Siewior
136a84d9e53SSebastian Andrzej Siewior# composite based drivers
137a84d9e53SSebastian Andrzej Siewiorconfig USB_LIBCOMPOSITE
138a84d9e53SSebastian Andrzej Siewior	tristate
13988af8bbeSSebastian Andrzej Siewior	select CONFIGFS_FS
140a84d9e53SSebastian Andrzej Siewior	depends on USB_GADGET
141a84d9e53SSebastian Andrzej Siewior
142ff47f594SSebastian Andrzej Siewiorconfig USB_F_ACM
143ff47f594SSebastian Andrzej Siewior	tristate
144ff47f594SSebastian Andrzej Siewior
145cf9a08aeSSebastian Andrzej Siewiorconfig USB_F_SS_LB
146cf9a08aeSSebastian Andrzej Siewior	tristate
147cf9a08aeSSebastian Andrzej Siewior
1483249ca22SSebastian Andrzej Siewiorconfig USB_U_SERIAL
1493249ca22SSebastian Andrzej Siewior	tristate
1503249ca22SSebastian Andrzej Siewior
151f1a1823fSAndrzej Pietrasiewiczconfig USB_U_ETHER
152f1a1823fSAndrzej Pietrasiewicz	tristate
153f1a1823fSAndrzej Pietrasiewicz
15460540ea2SAndrzej Pietrasiewiczconfig USB_F_SERIAL
15560540ea2SAndrzej Pietrasiewicz	tristate
15660540ea2SAndrzej Pietrasiewicz
1571d8fc251SAndrzej Pietrasiewiczconfig USB_F_OBEX
1581d8fc251SAndrzej Pietrasiewicz	tristate
1591d8fc251SAndrzej Pietrasiewicz
16040d133d7SAndrzej Pietrasiewiczconfig USB_F_NCM
16140d133d7SAndrzej Pietrasiewicz	tristate
16240d133d7SAndrzej Pietrasiewicz
163fee562a6SAndrzej Pietrasiewiczconfig USB_F_ECM
164fee562a6SAndrzej Pietrasiewicz	tristate
165fee562a6SAndrzej Pietrasiewicz
166fcbdf12eSAndrzej Pietrasiewiczconfig USB_F_PHONET
167fcbdf12eSAndrzej Pietrasiewicz	tristate
168fcbdf12eSAndrzej Pietrasiewicz
169b29002a1SAndrzej Pietrasiewiczconfig USB_F_EEM
170b29002a1SAndrzej Pietrasiewicz	tristate
171b29002a1SAndrzej Pietrasiewicz
1728cedba7cSAndrzej Pietrasiewiczconfig USB_F_SUBSET
1738cedba7cSAndrzej Pietrasiewicz	tristate
1748cedba7cSAndrzej Pietrasiewicz
175f466c635SAndrzej Pietrasiewiczconfig USB_F_RNDIS
176f466c635SAndrzej Pietrasiewicz	tristate
177f466c635SAndrzej Pietrasiewicz
178e5eaa0dcSAndrzej Pietrasiewiczconfig USB_F_MASS_STORAGE
179e5eaa0dcSAndrzej Pietrasiewicz	tristate
180e5eaa0dcSAndrzej Pietrasiewicz
1815920cda6SAndrzej Pietrasiewiczconfig USB_F_FS
1825920cda6SAndrzej Pietrasiewicz	tristate
1835920cda6SAndrzej Pietrasiewicz
184f3a3406bSAndrzej Pietrasiewiczconfig USB_F_UAC1
185f3a3406bSAndrzej Pietrasiewicz	tristate
186f3a3406bSAndrzej Pietrasiewicz
187f8f93d24SAndrzej Pietrasiewiczconfig USB_F_UAC2
188f8f93d24SAndrzej Pietrasiewicz	tristate
189f8f93d24SAndrzej Pietrasiewicz
1906d11ed76SAndrzej Pietrasiewiczconfig USB_F_UVC
1916d11ed76SAndrzej Pietrasiewicz	tristate
1926d11ed76SAndrzej Pietrasiewicz
193b85e9de9SAndrzej Pietrasiewiczconfig USB_F_MIDI
194b85e9de9SAndrzej Pietrasiewicz	tristate
195b85e9de9SAndrzej Pietrasiewicz
196cb382536SAndrzej Pietrasiewiczconfig USB_F_HID
197cb382536SAndrzej Pietrasiewicz	tristate
198cb382536SAndrzej Pietrasiewicz
1991da177e4SLinus Torvaldschoice
2001da177e4SLinus Torvalds	tristate "USB Gadget Drivers"
2011da177e4SLinus Torvalds	default USB_ETH
2021da177e4SLinus Torvalds	help
2031da177e4SLinus Torvalds	  A Linux "Gadget Driver" talks to the USB Peripheral Controller
2041da177e4SLinus Torvalds	  driver through the abstract "gadget" API.  Some other operating
2051da177e4SLinus Torvalds	  systems call these "client" drivers, of which "class drivers"
2061da177e4SLinus Torvalds	  are a subset (implementing a USB device class specification).
2071da177e4SLinus Torvalds	  A gadget driver implements one or more USB functions using
2081da177e4SLinus Torvalds	  the peripheral hardware.
2091da177e4SLinus Torvalds
2101da177e4SLinus Torvalds	  Gadget drivers are hardware-neutral, or "platform independent",
2111da177e4SLinus Torvalds	  except that they sometimes must understand quirks or limitations
2121da177e4SLinus Torvalds	  of the particular controllers they work with.  For example, when
2131da177e4SLinus Torvalds	  a controller doesn't support alternate configurations or provide
2141da177e4SLinus Torvalds	  enough of the right types of endpoints, the gadget driver might
2151da177e4SLinus Torvalds	  not be able work with that controller, or might need to implement
2161da177e4SLinus Torvalds	  a less common variant of a device class protocol.
2171da177e4SLinus Torvalds
2181da177e4SLinus Torvalds# this first set of drivers all depend on bulk-capable hardware.
2191da177e4SLinus Torvalds
220d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS
221d1c02452SAndrzej Pietrasiewicz	tristate "USB functions configurable through configfs"
222d1c02452SAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
223d1c02452SAndrzej Pietrasiewicz	help
224d1c02452SAndrzej Pietrasiewicz	  A Linux USB "gadget" can be set up through configfs.
225d1c02452SAndrzej Pietrasiewicz	  If this is the case, the USB functions (which from the host's
226d1c02452SAndrzej Pietrasiewicz	  perspective are seen as interfaces) and configurations are
227d1c02452SAndrzej Pietrasiewicz	  specified simply by creating appropriate directories in configfs.
228d1c02452SAndrzej Pietrasiewicz	  Associating functions with configurations is done by creating
229d1c02452SAndrzej Pietrasiewicz	  appropriate symbolic links.
2309c1d6962SPhilippe De Swert	  For more information see Documentation/usb/gadget_configfs.txt.
231d1c02452SAndrzej Pietrasiewicz
232d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_SERIAL
233d1c02452SAndrzej Pietrasiewicz	boolean "Generic serial bulk in/out"
234d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
235d1c02452SAndrzej Pietrasiewicz	depends on TTY
236d1c02452SAndrzej Pietrasiewicz	select USB_U_SERIAL
237d1c02452SAndrzej Pietrasiewicz	select USB_F_SERIAL
238d1c02452SAndrzej Pietrasiewicz	help
239d1c02452SAndrzej Pietrasiewicz	  The function talks to the Linux-USB generic serial driver.
240d1c02452SAndrzej Pietrasiewicz
241d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_ACM
242d1c02452SAndrzej Pietrasiewicz	boolean "Abstract Control Model (CDC ACM)"
243d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
244d1c02452SAndrzej Pietrasiewicz	depends on TTY
245d1c02452SAndrzej Pietrasiewicz	select USB_U_SERIAL
246d1c02452SAndrzej Pietrasiewicz	select USB_F_ACM
247d1c02452SAndrzej Pietrasiewicz	help
248d1c02452SAndrzej Pietrasiewicz	  ACM serial link.  This function can be used to interoperate with
249d1c02452SAndrzej Pietrasiewicz	  MS-Windows hosts or with the Linux-USB "cdc-acm" driver.
250d1c02452SAndrzej Pietrasiewicz
251d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_OBEX
252d1c02452SAndrzej Pietrasiewicz	boolean "Object Exchange Model (CDC OBEX)"
253d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
254d1c02452SAndrzej Pietrasiewicz	depends on TTY
255d1c02452SAndrzej Pietrasiewicz	select USB_U_SERIAL
256d1c02452SAndrzej Pietrasiewicz	select USB_F_OBEX
257d1c02452SAndrzej Pietrasiewicz	help
258d1c02452SAndrzej Pietrasiewicz	  You will need a user space OBEX server talking to /dev/ttyGS*,
259d1c02452SAndrzej Pietrasiewicz	  since the kernel itself doesn't implement the OBEX protocol.
260d1c02452SAndrzej Pietrasiewicz
261d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_NCM
262d1c02452SAndrzej Pietrasiewicz	boolean "Network Control Model (CDC NCM)"
263d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
264d1c02452SAndrzej Pietrasiewicz	depends on NET
265d1c02452SAndrzej Pietrasiewicz	select USB_U_ETHER
266d1c02452SAndrzej Pietrasiewicz	select USB_F_NCM
267d1c02452SAndrzej Pietrasiewicz	help
268d1c02452SAndrzej Pietrasiewicz	  NCM is an advanced protocol for Ethernet encapsulation, allows
269d1c02452SAndrzej Pietrasiewicz	  grouping of several ethernet frames into one USB transfer and
270d1c02452SAndrzej Pietrasiewicz	  different alignment possibilities.
271d1c02452SAndrzej Pietrasiewicz
272d1c02452SAndrzej Pietrasiewiczconfig USB_CONFIGFS_ECM
273d1c02452SAndrzej Pietrasiewicz	boolean "Ethernet Control Model (CDC ECM)"
274d1c02452SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
275d1c02452SAndrzej Pietrasiewicz	depends on NET
276d1c02452SAndrzej Pietrasiewicz	select USB_U_ETHER
277d1c02452SAndrzej Pietrasiewicz	select USB_F_ECM
278d1c02452SAndrzej Pietrasiewicz	help
279d1c02452SAndrzej Pietrasiewicz	  The "Communication Device Class" (CDC) Ethernet Control Model.
280d1c02452SAndrzej Pietrasiewicz	  That protocol is often avoided with pure Ethernet adapters, in
281d1c02452SAndrzej Pietrasiewicz	  favor of simpler vendor-specific hardware, but is widely
282d1c02452SAndrzej Pietrasiewicz	  supported by firmware for smart network devices.
283d1c02452SAndrzej Pietrasiewicz
28402832e56SAndrzej Pietrasiewiczconfig USB_CONFIGFS_ECM_SUBSET
28502832e56SAndrzej Pietrasiewicz	boolean "Ethernet Control Model (CDC ECM) subset"
28602832e56SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
28702832e56SAndrzej Pietrasiewicz	depends on NET
28802832e56SAndrzej Pietrasiewicz	select USB_U_ETHER
28902832e56SAndrzej Pietrasiewicz	select USB_F_SUBSET
29002832e56SAndrzej Pietrasiewicz	help
29102832e56SAndrzej Pietrasiewicz	  On hardware that can't implement the full protocol,
29202832e56SAndrzej Pietrasiewicz	  a simple CDC subset is used, placing fewer demands on USB.
29302832e56SAndrzej Pietrasiewicz
294b3df2faaSAndrzej Pietrasiewiczconfig USB_CONFIGFS_RNDIS
295b3df2faaSAndrzej Pietrasiewicz	bool "RNDIS"
296b3df2faaSAndrzej Pietrasiewicz	depends on USB_CONFIGFS
297b3df2faaSAndrzej Pietrasiewicz	depends on NET
298b3df2faaSAndrzej Pietrasiewicz	select USB_U_ETHER
299b3df2faaSAndrzej Pietrasiewicz	select USB_F_RNDIS
300b3df2faaSAndrzej Pietrasiewicz	help
301b3df2faaSAndrzej Pietrasiewicz	   Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
302b3df2faaSAndrzej Pietrasiewicz	   and Microsoft provides redistributable binary RNDIS drivers for
303b3df2faaSAndrzej Pietrasiewicz	   older versions of Windows.
304b3df2faaSAndrzej Pietrasiewicz
305b3df2faaSAndrzej Pietrasiewicz	   To make MS-Windows work with this, use Documentation/usb/linux.inf
306b3df2faaSAndrzej Pietrasiewicz	   as the "driver info file".  For versions of MS-Windows older than
307b3df2faaSAndrzej Pietrasiewicz	   XP, you'll need to download drivers from Microsoft's website; a URL
308b3df2faaSAndrzej Pietrasiewicz	   is given in comments found in that info file.
309b3df2faaSAndrzej Pietrasiewicz
31017b80976SAndrzej Pietrasiewiczconfig USB_CONFIGFS_EEM
31117b80976SAndrzej Pietrasiewicz	bool "Ethernet Emulation Model (EEM)"
31217b80976SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
31317b80976SAndrzej Pietrasiewicz	depends on NET
31417b80976SAndrzej Pietrasiewicz	select USB_U_ETHER
31517b80976SAndrzej Pietrasiewicz	select USB_F_EEM
31617b80976SAndrzej Pietrasiewicz	help
31717b80976SAndrzej Pietrasiewicz	  CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
31817b80976SAndrzej Pietrasiewicz	  and therefore can be supported by more hardware.  Technically ECM and
31917b80976SAndrzej Pietrasiewicz	  EEM are designed for different applications.  The ECM model extends
32017b80976SAndrzej Pietrasiewicz	  the network interface to the target (e.g. a USB cable modem), and the
32117b80976SAndrzej Pietrasiewicz	  EEM model is for mobile devices to communicate with hosts using
32217b80976SAndrzej Pietrasiewicz	  ethernet over USB.  For Linux gadgets, however, the interface with
32317b80976SAndrzej Pietrasiewicz	  the host is the same (a usbX device), so the differences are minimal.
32417b80976SAndrzej Pietrasiewicz
32583408745SAndrzej Pietrasiewiczconfig USB_CONFIGFS_PHONET
32683408745SAndrzej Pietrasiewicz	boolean "Phonet protocol"
32783408745SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
32883408745SAndrzej Pietrasiewicz	depends on NET
32983408745SAndrzej Pietrasiewicz	depends on PHONET
33083408745SAndrzej Pietrasiewicz	select USB_U_ETHER
33183408745SAndrzej Pietrasiewicz	select USB_F_PHONET
33283408745SAndrzej Pietrasiewicz	help
33383408745SAndrzej Pietrasiewicz	  The Phonet protocol implementation for USB device.
33483408745SAndrzej Pietrasiewicz
335ef0aa4b9SAndrzej Pietrasiewiczconfig USB_CONFIGFS_MASS_STORAGE
336ef0aa4b9SAndrzej Pietrasiewicz	boolean "Mass storage"
337ef0aa4b9SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
338bc912b0dSAndrzej Pietrasiewicz	depends on BLOCK
339ef0aa4b9SAndrzej Pietrasiewicz	select USB_F_MASS_STORAGE
340ef0aa4b9SAndrzej Pietrasiewicz	help
341ef0aa4b9SAndrzej Pietrasiewicz	  The Mass Storage Gadget acts as a USB Mass Storage disk drive.
342ef0aa4b9SAndrzej Pietrasiewicz	  As its storage repository it can use a regular file or a block
343ef0aa4b9SAndrzej Pietrasiewicz	  device (in much the same way as the "loop" device driver),
344ef0aa4b9SAndrzej Pietrasiewicz	  specified as a module parameter or sysfs option.
345ef0aa4b9SAndrzej Pietrasiewicz
34625d80151SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_LB_SS
34725d80151SAndrzej Pietrasiewicz	boolean "Loopback and sourcesink function (for testing)"
348c0501f47SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
349c0501f47SAndrzej Pietrasiewicz	select USB_F_SS_LB
350c0501f47SAndrzej Pietrasiewicz	help
35125d80151SAndrzej Pietrasiewicz	  Loopback function loops back a configurable number of transfers.
35225d80151SAndrzej Pietrasiewicz	  Sourcesink function either sinks and sources bulk data.
353c0501f47SAndrzej Pietrasiewicz	  It also implements control requests, for "chapter 9" conformance.
354c0501f47SAndrzej Pietrasiewicz	  Make this be the first driver you try using on top of any new
355c0501f47SAndrzej Pietrasiewicz	  USB peripheral controller driver.  Then you can use host-side
356c0501f47SAndrzej Pietrasiewicz	  test software, like the "usbtest" driver, to put your hardware
357c0501f47SAndrzej Pietrasiewicz	  and its driver through a basic set of functional tests.
358c0501f47SAndrzej Pietrasiewicz
359b658499fSAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_FS
360b658499fSAndrzej Pietrasiewicz	boolean "Function filesystem (FunctionFS)"
361b658499fSAndrzej Pietrasiewicz	depends on USB_CONFIGFS
362b658499fSAndrzej Pietrasiewicz	select USB_F_FS
363b658499fSAndrzej Pietrasiewicz	help
364b658499fSAndrzej Pietrasiewicz	  The Function Filesystem (FunctionFS) lets one create USB
365b658499fSAndrzej Pietrasiewicz	  composite functions in user space in the same way GadgetFS
366b658499fSAndrzej Pietrasiewicz	  lets one create USB gadgets in user space.  This allows creation
367b658499fSAndrzej Pietrasiewicz	  of composite gadgets such that some of the functions are
368b658499fSAndrzej Pietrasiewicz	  implemented in kernel space (for instance Ethernet, serial or
369b658499fSAndrzej Pietrasiewicz	  mass storage) and other are implemented in user space.
370b658499fSAndrzej Pietrasiewicz
371cb0a59f5SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_UAC1
372cb0a59f5SAndrzej Pietrasiewicz	boolean "Audio Class 1.0"
373cb0a59f5SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
374cb0a59f5SAndrzej Pietrasiewicz	depends on SND
375cb0a59f5SAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
376cb0a59f5SAndrzej Pietrasiewicz	select SND_PCM
377cb0a59f5SAndrzej Pietrasiewicz	select USB_F_UAC1
378cb0a59f5SAndrzej Pietrasiewicz	help
379cb0a59f5SAndrzej Pietrasiewicz	  This Audio function implements 1 AudioControl interface,
380cb0a59f5SAndrzej Pietrasiewicz	  1 AudioStreaming Interface each for USB-OUT and USB-IN.
381cb0a59f5SAndrzej Pietrasiewicz	  This driver requires a real Audio codec to be present
382cb0a59f5SAndrzej Pietrasiewicz	  on the device.
383cb0a59f5SAndrzej Pietrasiewicz
384cb0a59f5SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_UAC2
385cb0a59f5SAndrzej Pietrasiewicz	boolean "Audio Class 2.0"
386cb0a59f5SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
387cb0a59f5SAndrzej Pietrasiewicz	depends on SND
388cb0a59f5SAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
389cb0a59f5SAndrzej Pietrasiewicz	select SND_PCM
390cb0a59f5SAndrzej Pietrasiewicz	select USB_F_UAC2
391cb0a59f5SAndrzej Pietrasiewicz	help
392cb0a59f5SAndrzej Pietrasiewicz	  This Audio function is compatible with USB Audio Class
393cb0a59f5SAndrzej Pietrasiewicz	  specification 2.0. It implements 1 AudioControl interface,
394cb0a59f5SAndrzej Pietrasiewicz	  1 AudioStreaming Interface each for USB-OUT and USB-IN.
395cb0a59f5SAndrzej Pietrasiewicz	  This driver doesn't expect any real Audio codec to be present
396cb0a59f5SAndrzej Pietrasiewicz	  on the device - the audio streams are simply sinked to and
397cb0a59f5SAndrzej Pietrasiewicz	  sourced from a virtual ALSA sound card created. The user-space
398cb0a59f5SAndrzej Pietrasiewicz	  application may choose to do whatever it wants with the data
399cb0a59f5SAndrzej Pietrasiewicz	  received from the USB Host and choose to provide whatever it
400cb0a59f5SAndrzej Pietrasiewicz	  wants as audio data to the USB Host.
401cb0a59f5SAndrzej Pietrasiewicz
4026f1de344SAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_MIDI
4036f1de344SAndrzej Pietrasiewicz	boolean "MIDI function"
4046f1de344SAndrzej Pietrasiewicz	depends on USB_CONFIGFS
4056f1de344SAndrzej Pietrasiewicz	depends on SND
4066f1de344SAndrzej Pietrasiewicz	select USB_LIBCOMPOSITE
4076f1de344SAndrzej Pietrasiewicz	select SND_RAWMIDI
4086f1de344SAndrzej Pietrasiewicz	select USB_F_MIDI
4096f1de344SAndrzej Pietrasiewicz	help
4106f1de344SAndrzej Pietrasiewicz	  The MIDI Function acts as a USB Audio device, with one MIDI
4116f1de344SAndrzej Pietrasiewicz	  input and one MIDI output. These MIDI jacks appear as
4126f1de344SAndrzej Pietrasiewicz	  a sound "card" in the ALSA sound system. Other MIDI
4136f1de344SAndrzej Pietrasiewicz	  connections can then be made on the gadget system, using
4146f1de344SAndrzej Pietrasiewicz	  ALSA's aconnect utility etc.
4156f1de344SAndrzej Pietrasiewicz
41621a9476aSAndrzej Pietrasiewiczconfig USB_CONFIGFS_F_HID
41721a9476aSAndrzej Pietrasiewicz	boolean "HID function"
41821a9476aSAndrzej Pietrasiewicz	depends on USB_CONFIGFS
41921a9476aSAndrzej Pietrasiewicz	select USB_F_HID
42021a9476aSAndrzej Pietrasiewicz	help
42121a9476aSAndrzej Pietrasiewicz	  The HID function driver provides generic emulation of USB
42221a9476aSAndrzej Pietrasiewicz	  Human Interface Devices (HID).
42321a9476aSAndrzej Pietrasiewicz
42421a9476aSAndrzej Pietrasiewicz	  For more information, see Documentation/usb/gadget_hid.txt.
42521a9476aSAndrzej Pietrasiewicz
4268443f2d2SAndrzej Pietrasiewiczsource "drivers/usb/gadget/legacy/Kconfig"
4271da177e4SLinus Torvalds
4281da177e4SLinus Torvaldsendchoice
4291da177e4SLinus Torvalds
430b75be4abSDenis Chengendif # USB_GADGET
431