xref: /openbmc/u-boot/drivers/usb/gadget/Kconfig (revision 70552e37)
1f9d0fd8aSSam Protsenko#
2f9d0fd8aSSam Protsenko# USB Gadget support on a system involves
3f9d0fd8aSSam Protsenko#    (a) a peripheral controller, and
4f9d0fd8aSSam Protsenko#    (b) the gadget driver using it.
5f9d0fd8aSSam Protsenko#
6f9d0fd8aSSam Protsenko# NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
7f9d0fd8aSSam Protsenko#
8f9d0fd8aSSam Protsenko#  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
9f9d0fd8aSSam Protsenko#  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
10f9d0fd8aSSam Protsenko#  - Some systems have both kinds of controllers.
11f9d0fd8aSSam Protsenko#
12f9d0fd8aSSam Protsenko# With help from a special transceiver and a "Mini-AB" jack, systems with
13f9d0fd8aSSam Protsenko# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
14f9d0fd8aSSam Protsenko#
15f9d0fd8aSSam Protsenko
16f9d0fd8aSSam Protsenkomenuconfig USB_GADGET
17f9d0fd8aSSam Protsenko	bool "USB Gadget Support"
18f9d0fd8aSSam Protsenko	help
19f9d0fd8aSSam Protsenko	   USB is a master/slave protocol, organized with one master
20f9d0fd8aSSam Protsenko	   host (such as a PC) controlling up to 127 peripheral devices.
21f9d0fd8aSSam Protsenko	   The USB hardware is asymmetric, which makes it easier to set up:
22f9d0fd8aSSam Protsenko	   you can't connect a "to-the-host" connector to a peripheral.
23f9d0fd8aSSam Protsenko
24f9d0fd8aSSam Protsenko	   U-Boot can run in the host, or in the peripheral.  In both cases
25f9d0fd8aSSam Protsenko	   you need a low level bus controller driver, and some software
26f9d0fd8aSSam Protsenko	   talking to it.  Peripheral controllers are often discrete silicon,
27f9d0fd8aSSam Protsenko	   or are integrated with the CPU in a microcontroller.  The more
28f9d0fd8aSSam Protsenko	   familiar host side controllers have names like "EHCI", "OHCI",
29f9d0fd8aSSam Protsenko	   or "UHCI", and are usually integrated into southbridges on PC
30f9d0fd8aSSam Protsenko	   motherboards.
31f9d0fd8aSSam Protsenko
32f9d0fd8aSSam Protsenko	   Enable this configuration option if you want to run U-Boot inside
33f9d0fd8aSSam Protsenko	   a USB peripheral device.  Configure one hardware driver for your
34f9d0fd8aSSam Protsenko	   peripheral/device side bus controller, and a "gadget driver" for
35f9d0fd8aSSam Protsenko	   your peripheral protocol.
36a59a77f8SSam Protsenko
37a59a77f8SSam Protsenkoif USB_GADGET
38a59a77f8SSam Protsenko
39*70552e37SNeal Liuconfig ASPEED_UDC_USBTTY
40*70552e37SNeal Liu	bool "Aspeed USBTTY Device support"
4193265845Sneal_liu	help
4293265845Sneal_liu	  Support Aspeed USB device on port A. You can emulate USB device as
4393265845Sneal_liu	  CDC-ACM (usbtty) for example.
4493265845Sneal_liu
45*70552e37SNeal Liuconfig ASPEED_UDC_GENERIC
46*70552e37SNeal Liu	bool "Aspeed USB Device support on gadget"
47*70552e37SNeal Liu	depends on !ASPEED_UDC_USBTTY
48*70552e37SNeal Liu	select USB_GADGET_DUALSPEED
49*70552e37SNeal Liu	help
50*70552e37SNeal Liu	  Support Aspeed USB device gadget. It's a different architecture with
51*70552e37SNeal Liu	  usbtty.
52*70552e37SNeal Liu
53*70552e37SNeal Liu
54a95aee6aSMaxime Ripardconfig USB_GADGET_MANUFACTURER
55a95aee6aSMaxime Ripard	string "Vendor name of the USB device"
56e02687bdSMaxime Ripard	default "Allwinner Technology" if ARCH_SUNXI
57a95aee6aSMaxime Ripard	default "U-Boot"
58a95aee6aSMaxime Ripard	help
59a95aee6aSMaxime Ripard	  Vendor name of the USB device emulated, reported to the host device.
60a95aee6aSMaxime Ripard	  This is usually either the manufacturer of the device or the SoC.
61a95aee6aSMaxime Ripard
62a95aee6aSMaxime Ripardconfig USB_GADGET_VENDOR_NUM
63a95aee6aSMaxime Ripard	hex "Vendor ID of the USB device"
64e02687bdSMaxime Ripard	default 0x1f3a if ARCH_SUNXI
65a95aee6aSMaxime Ripard	default 0x0
66a95aee6aSMaxime Ripard	help
67a95aee6aSMaxime Ripard	  Vendor ID of the USB device emulated, reported to the host device.
68a95aee6aSMaxime Ripard	  This is usually the board or SoC vendor's, unless you've registered
69a95aee6aSMaxime Ripard	  for one.
70a95aee6aSMaxime Ripard
71a95aee6aSMaxime Ripardconfig USB_GADGET_PRODUCT_NUM
72a95aee6aSMaxime Ripard	hex "Product ID of the USB device"
73e02687bdSMaxime Ripard	default 0x1010 if ARCH_SUNXI
74a95aee6aSMaxime Ripard	default 0x0
75a95aee6aSMaxime Ripard	help
76a95aee6aSMaxime Ripard	  Product ID of the USB device emulated, reported to the host device.
77a95aee6aSMaxime Ripard
783457bbafSSam Protsenkoconfig USB_GADGET_ATMEL_USBA
793457bbafSSam Protsenko	bool "Atmel USBA"
803457bbafSSam Protsenko	select USB_GADGET_DUALSPEED
813457bbafSSam Protsenko	help
823457bbafSSam Protsenko	  USBA is the integrated high-speed USB Device controller on
833457bbafSSam Protsenko	  the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
843457bbafSSam Protsenko
85e016f0b2SSteve Raeconfig USB_GADGET_BCM_UDC_OTG_PHY
86e016f0b2SSteve Rae	bool "Broadcom UDC OTG PHY"
87e016f0b2SSteve Rae	help
88e016f0b2SSteve Rae	  Enable the Broadcom UDC OTG physical device interface.
89e016f0b2SSteve Rae
903457bbafSSam Protsenkoconfig USB_GADGET_DWC2_OTG
913457bbafSSam Protsenko	bool "DesignWare USB2.0 HS OTG controller (gadget mode)"
923457bbafSSam Protsenko	select USB_GADGET_DUALSPEED
933457bbafSSam Protsenko	help
943457bbafSSam Protsenko	  The Designware USB2.0 high-speed gadget controller
953457bbafSSam Protsenko	  integrated into many SoCs. Select this option if you want the
963457bbafSSam Protsenko	  driver to operate in Peripheral mode. This option requires
973457bbafSSam Protsenko	  USB_GADGET to be enabled.
983457bbafSSam Protsenko
99f221db0eSSteve Raeif USB_GADGET_DWC2_OTG
100f221db0eSSteve Rae
101f221db0eSSteve Raeconfig USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8
102f221db0eSSteve Rae	bool "DesignWare USB2.0 HS OTG controller 8-bit PHY bus width"
103f221db0eSSteve Rae	help
104f221db0eSSteve Rae	  Set the Designware USB2.0 high-speed OTG controller
105f221db0eSSteve Rae	  PHY interface width to 8 bits, rather than the default (16 bits).
106f221db0eSSteve Rae
107f221db0eSSteve Raeendif # USB_GADGET_DWC2_OTG
108f221db0eSSteve Rae
1093457bbafSSam Protsenkoconfig CI_UDC
1103457bbafSSam Protsenko	bool "ChipIdea device controller"
1113457bbafSSam Protsenko	select USB_GADGET_DUALSPEED
1123457bbafSSam Protsenko	help
1133457bbafSSam Protsenko	  Say Y here to enable device controller functionality of the
1143457bbafSSam Protsenko	  ChipIdea driver.
1153457bbafSSam Protsenko
116a59a77f8SSam Protsenkoconfig USB_GADGET_VBUS_DRAW
117a59a77f8SSam Protsenko	int "Maximum VBUS Power usage (2-500 mA)"
118a59a77f8SSam Protsenko	range 2 500
119a59a77f8SSam Protsenko	default 2
120a59a77f8SSam Protsenko	help
121a59a77f8SSam Protsenko	   Some devices need to draw power from USB when they are
122a59a77f8SSam Protsenko	   configured, perhaps to operate circuitry or to recharge
123a59a77f8SSam Protsenko	   batteries.  This is in addition to any local power supply,
124a59a77f8SSam Protsenko	   such as an AC adapter or batteries.
125a59a77f8SSam Protsenko
126a59a77f8SSam Protsenko	   Enter the maximum power your device draws through USB, in
127a59a77f8SSam Protsenko	   milliAmperes.  The permitted range of values is 2 - 500 mA;
128a59a77f8SSam Protsenko	   0 mA would be legal, but can make some hosts misbehave.
129a59a77f8SSam Protsenko
130a59a77f8SSam Protsenko	   This value will be used except for system-specific gadget
131a59a77f8SSam Protsenko	   drivers that have more specific information.
132a59a77f8SSam Protsenko
1333457bbafSSam Protsenko# Selected by UDC drivers that support high-speed operation.
1343457bbafSSam Protsenkoconfig USB_GADGET_DUALSPEED
1353457bbafSSam Protsenko	bool
1363457bbafSSam Protsenko
137aaa4a9e3SSam Protsenkoconfig USB_GADGET_DOWNLOAD
138aaa4a9e3SSam Protsenko	bool "Enable USB download gadget"
139aaa4a9e3SSam Protsenko	help
140aaa4a9e3SSam Protsenko	  Composite USB download gadget support (g_dnl) for download functions.
141aaa4a9e3SSam Protsenko	  This code works on top of composite gadget.
142aaa4a9e3SSam Protsenko
143e6c0bc06SSam Protsenkoif USB_GADGET_DOWNLOAD
144e6c0bc06SSam Protsenko
1454f60e5d3SLukasz Majewskiconfig USB_FUNCTION_MASS_STORAGE
1464f60e5d3SLukasz Majewski	bool "Enable USB mass storage gadget"
1474f60e5d3SLukasz Majewski	help
1484f60e5d3SLukasz Majewski	  Enable mass storage protocol support in U-Boot. It allows exporting
1494f60e5d3SLukasz Majewski	  the eMMC/SD card content to HOST PC so it can be mounted.
1504f60e5d3SLukasz Majewski
151bf2b72beSEddie Caiconfig USB_FUNCTION_ROCKUSB
152bf2b72beSEddie Cai        bool "Enable USB rockusb gadget"
153bf2b72beSEddie Cai        help
154bf2b72beSEddie Cai          Rockusb protocol is widely used by Rockchip SoC based devices. It can
155bf2b72beSEddie Cai          read/write info, image to/from devices. This enables the USB part of
156bf2b72beSEddie Cai          the rockusb gadget.for more detail about Rockusb protocol, please see
157bf2b72beSEddie Cai          doc/README.rockusb
158bf2b72beSEddie Cai
159b7696595SLukasz Majewskiconfig USB_FUNCTION_SDP
160b7696595SLukasz Majewski	bool "Enable USB SDP (Serial Download Protocol)"
161b7696595SLukasz Majewski	help
162b7696595SLukasz Majewski	  Enable Serial Download Protocol (SDP) device support in U-Boot. This
163b7696595SLukasz Majewski	  allows to download images into memory and execute (jump to) them
164b7696595SLukasz Majewski	  using the same protocol as implemented by the i.MX family's boot ROM.
165b7696595SLukasz Majewski
166c6c1ca10SLukasz Majewskiconfig USB_FUNCTION_THOR
167c6c1ca10SLukasz Majewski	bool "Enable USB THOR gadget"
168c6c1ca10SLukasz Majewski	help
169c6c1ca10SLukasz Majewski	  Enable Tizen's THOR download protocol support in U-Boot. It
170c6c1ca10SLukasz Majewski	  allows downloading images into memory and flash them to target device.
171c6c1ca10SLukasz Majewski
1725506ff14SMaxime Ripardendif # USB_GADGET_DOWNLOAD
1735506ff14SMaxime Ripard
1743f33d3c8SMaxime Ripardconfig USB_ETHER
1753f33d3c8SMaxime Ripard	bool "USB Ethernet Gadget"
176a18d1064SAlex Kiernan	depends on NET
1773c989f3aSMaxime Ripard	default y if ARCH_SUNXI && USB_MUSB_GADGET
1783f33d3c8SMaxime Ripard	help
1793f33d3c8SMaxime Ripard	  Creates an Ethernet network device through a USB peripheral
1803f33d3c8SMaxime Ripard	  controller. This will create a network interface on both the device
1813f33d3c8SMaxime Ripard	  (U-Boot) and the host (remote device) that can be used just like any
1823f33d3c8SMaxime Ripard	  other nework interface.
1833f33d3c8SMaxime Ripard	  It will bind on the peripheral USB controller, ignoring the USB hosts
1843f33d3c8SMaxime Ripard	  controllers in the system.
1853f33d3c8SMaxime Ripard
1863f33d3c8SMaxime Ripardif USB_ETHER
1873f33d3c8SMaxime Ripard
188d2f0f4afSMaxime Ripardchoice
189d2f0f4afSMaxime Ripard	prompt "USB Ethernet Gadget Model"
190d2f0f4afSMaxime Ripard	default USB_ETH_RNDIS
191d2f0f4afSMaxime Ripard	help
192d2f0f4afSMaxime Ripard	  There is several models (protocols) to implement Ethernet over USB
193d2f0f4afSMaxime Ripard	  devices. The main ones are Microsoft's RNDIS and USB's CDC-Ethernet
194d2f0f4afSMaxime Ripard	  (also called CDC-ECM). RNDIS is obviously compatible with Windows,
195d2f0f4afSMaxime Ripard	  while CDC-ECM is not. Most other operating systems support both, so
196d2f0f4afSMaxime Ripard	  if inter-operability is a concern, RNDIS is to be preferred.
197d2f0f4afSMaxime Ripard
198d2f0f4afSMaxime Ripardconfig USB_ETH_CDC
199d2f0f4afSMaxime Ripard	bool "CDC-ECM Protocol"
200d2f0f4afSMaxime Ripard	help
201d2f0f4afSMaxime Ripard	  CDC (Communications Device Class) is the standard for Ethernet over
202d2f0f4afSMaxime Ripard	  USB devices. While there's several alternatives, the most widely used
203d2f0f4afSMaxime Ripard	  protocol is ECM (Ethernet Control Model). However, compatibility with
204d2f0f4afSMaxime Ripard	  Windows is not that great.
205d2f0f4afSMaxime Ripard
206d2f0f4afSMaxime Ripardconfig USB_ETH_RNDIS
207d2f0f4afSMaxime Ripard	bool "RNDIS Protocol"
208d2f0f4afSMaxime Ripard	help
209d2f0f4afSMaxime Ripard	  The RNDIS (Remote Network Driver Interface Specification) is a
210d2f0f4afSMaxime Ripard	  Microsoft proprietary protocol to create an Ethernet device over USB.
211d2f0f4afSMaxime Ripard	  Windows obviously supports it, as well as all the major operating
212d2f0f4afSMaxime Ripard	  systems, so it's the best option for compatibility.
213d2f0f4afSMaxime Ripard
214d2f0f4afSMaxime Ripardendchoice
215d2f0f4afSMaxime Ripard
216d4a37553SMugunthan V Nconfig USBNET_DEVADDR
217d4a37553SMugunthan V N	string "USB Gadget Ethernet device mac address"
218d4a37553SMugunthan V N	default "de:ad:be:ef:00:01"
21974e7997cSMaxime Ripard	help
22074e7997cSMaxime Ripard	  Ethernet MAC address of the device-side (ie. local board's) MAC
22174e7997cSMaxime Ripard	  address of the usb_ether interface
222d4a37553SMugunthan V N
223c163668aSMaxime Ripardconfig USBNET_HOST_ADDR
224c163668aSMaxime Ripard	string "USB Gadget Ethernet host mac address"
225c163668aSMaxime Ripard	default "de:ad:be:ef:00:00"
226c163668aSMaxime Ripard	help
227c163668aSMaxime Ripard	  Ethernet MAC address of the host-side (ie. remote device's) MAC
228c163668aSMaxime Ripard	  address of the usb_ether interface
229c163668aSMaxime Ripard
2303f33d3c8SMaxime Ripardendif # USB_ETHER
2313f33d3c8SMaxime Ripard
232a59a77f8SSam Protsenkoendif # USB_GADGET
233