xref: /openbmc/u-boot/drivers/usb/gadget/Kconfig (revision d2f0f4af)
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
393457bbafSSam Protsenkoconfig USB_GADGET_ATMEL_USBA
403457bbafSSam Protsenko	bool "Atmel USBA"
413457bbafSSam Protsenko	select USB_GADGET_DUALSPEED
423457bbafSSam Protsenko	help
433457bbafSSam Protsenko	  USBA is the integrated high-speed USB Device controller on
443457bbafSSam Protsenko	  the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
453457bbafSSam Protsenko
46e016f0b2SSteve Raeconfig USB_GADGET_BCM_UDC_OTG_PHY
47e016f0b2SSteve Rae	bool "Broadcom UDC OTG PHY"
48e016f0b2SSteve Rae	help
49e016f0b2SSteve Rae	  Enable the Broadcom UDC OTG physical device interface.
50e016f0b2SSteve Rae
513457bbafSSam Protsenkoconfig USB_GADGET_DWC2_OTG
523457bbafSSam Protsenko	bool "DesignWare USB2.0 HS OTG controller (gadget mode)"
533457bbafSSam Protsenko	select USB_GADGET_DUALSPEED
543457bbafSSam Protsenko	help
553457bbafSSam Protsenko	  The Designware USB2.0 high-speed gadget controller
563457bbafSSam Protsenko	  integrated into many SoCs. Select this option if you want the
573457bbafSSam Protsenko	  driver to operate in Peripheral mode. This option requires
583457bbafSSam Protsenko	  USB_GADGET to be enabled.
593457bbafSSam Protsenko
60f221db0eSSteve Raeif USB_GADGET_DWC2_OTG
61f221db0eSSteve Rae
62f221db0eSSteve Raeconfig USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8
63f221db0eSSteve Rae	bool "DesignWare USB2.0 HS OTG controller 8-bit PHY bus width"
64f221db0eSSteve Rae	help
65f221db0eSSteve Rae	  Set the Designware USB2.0 high-speed OTG controller
66f221db0eSSteve Rae	  PHY interface width to 8 bits, rather than the default (16 bits).
67f221db0eSSteve Rae
68f221db0eSSteve Raeendif # USB_GADGET_DWC2_OTG
69f221db0eSSteve Rae
703457bbafSSam Protsenkoconfig CI_UDC
713457bbafSSam Protsenko	bool "ChipIdea device controller"
723457bbafSSam Protsenko	select USB_GADGET_DUALSPEED
733457bbafSSam Protsenko	help
743457bbafSSam Protsenko	  Say Y here to enable device controller functionality of the
753457bbafSSam Protsenko	  ChipIdea driver.
763457bbafSSam Protsenko
77a59a77f8SSam Protsenkoconfig USB_GADGET_VBUS_DRAW
78a59a77f8SSam Protsenko	int "Maximum VBUS Power usage (2-500 mA)"
79a59a77f8SSam Protsenko	range 2 500
80a59a77f8SSam Protsenko	default 2
81a59a77f8SSam Protsenko	help
82a59a77f8SSam Protsenko	   Some devices need to draw power from USB when they are
83a59a77f8SSam Protsenko	   configured, perhaps to operate circuitry or to recharge
84a59a77f8SSam Protsenko	   batteries.  This is in addition to any local power supply,
85a59a77f8SSam Protsenko	   such as an AC adapter or batteries.
86a59a77f8SSam Protsenko
87a59a77f8SSam Protsenko	   Enter the maximum power your device draws through USB, in
88a59a77f8SSam Protsenko	   milliAmperes.  The permitted range of values is 2 - 500 mA;
89a59a77f8SSam Protsenko	   0 mA would be legal, but can make some hosts misbehave.
90a59a77f8SSam Protsenko
91a59a77f8SSam Protsenko	   This value will be used except for system-specific gadget
92a59a77f8SSam Protsenko	   drivers that have more specific information.
93a59a77f8SSam Protsenko
943457bbafSSam Protsenko# Selected by UDC drivers that support high-speed operation.
953457bbafSSam Protsenkoconfig USB_GADGET_DUALSPEED
963457bbafSSam Protsenko	bool
973457bbafSSam Protsenko
98aaa4a9e3SSam Protsenkoconfig USB_GADGET_DOWNLOAD
99aaa4a9e3SSam Protsenko	bool "Enable USB download gadget"
100aaa4a9e3SSam Protsenko	help
101aaa4a9e3SSam Protsenko	  Composite USB download gadget support (g_dnl) for download functions.
102aaa4a9e3SSam Protsenko	  This code works on top of composite gadget.
103aaa4a9e3SSam Protsenko
104e6c0bc06SSam Protsenkoif USB_GADGET_DOWNLOAD
105e6c0bc06SSam Protsenko
1065661f08aSStefan Agnerconfig USB_FUNCTION_SDP
1075661f08aSStefan Agner	bool "Enable USB SDP (Serial Download Protocol)"
1085661f08aSStefan Agner	help
1095661f08aSStefan Agner	  Enable Serial Download Protocol (SDP) device support in U-Boot. This
1105661f08aSStefan Agner	  allows to download images into memory and execute (jump to) them
1115661f08aSStefan Agner	  using the same protocol as implemented by the i.MX family's boot ROM.
1125661f08aSStefan Agner
113e6c0bc06SSam Protsenkoconfig G_DNL_MANUFACTURER
114e6c0bc06SSam Protsenko	string "Vendor name of USB device"
115e6c0bc06SSam Protsenko
116e6c0bc06SSam Protsenkoconfig G_DNL_VENDOR_NUM
117e6c0bc06SSam Protsenko	hex "Vendor ID of USB device"
118e6c0bc06SSam Protsenko
119e6c0bc06SSam Protsenkoconfig G_DNL_PRODUCT_NUM
120e6c0bc06SSam Protsenko	hex "Product ID of USB device"
121e6c0bc06SSam Protsenko
1225506ff14SMaxime Ripardendif # USB_GADGET_DOWNLOAD
1235506ff14SMaxime Ripard
1243f33d3c8SMaxime Ripardconfig USB_ETHER
1253f33d3c8SMaxime Ripard	bool "USB Ethernet Gadget"
1263f33d3c8SMaxime Ripard	help
1273f33d3c8SMaxime Ripard	  Creates an Ethernet network device through a USB peripheral
1283f33d3c8SMaxime Ripard	  controller. This will create a network interface on both the device
1293f33d3c8SMaxime Ripard	  (U-Boot) and the host (remote device) that can be used just like any
1303f33d3c8SMaxime Ripard	  other nework interface.
1313f33d3c8SMaxime Ripard	  It will bind on the peripheral USB controller, ignoring the USB hosts
1323f33d3c8SMaxime Ripard	  controllers in the system.
1333f33d3c8SMaxime Ripard
1343f33d3c8SMaxime Ripardif USB_ETHER
1353f33d3c8SMaxime Ripard
136*d2f0f4afSMaxime Ripardchoice
137*d2f0f4afSMaxime Ripard	prompt "USB Ethernet Gadget Model"
138*d2f0f4afSMaxime Ripard	default USB_ETH_RNDIS
139*d2f0f4afSMaxime Ripard	help
140*d2f0f4afSMaxime Ripard	  There is several models (protocols) to implement Ethernet over USB
141*d2f0f4afSMaxime Ripard	  devices. The main ones are Microsoft's RNDIS and USB's CDC-Ethernet
142*d2f0f4afSMaxime Ripard	  (also called CDC-ECM). RNDIS is obviously compatible with Windows,
143*d2f0f4afSMaxime Ripard	  while CDC-ECM is not. Most other operating systems support both, so
144*d2f0f4afSMaxime Ripard	  if inter-operability is a concern, RNDIS is to be preferred.
145*d2f0f4afSMaxime Ripard
146*d2f0f4afSMaxime Ripardconfig USB_ETH_CDC
147*d2f0f4afSMaxime Ripard	bool "CDC-ECM Protocol"
148*d2f0f4afSMaxime Ripard	help
149*d2f0f4afSMaxime Ripard	  CDC (Communications Device Class) is the standard for Ethernet over
150*d2f0f4afSMaxime Ripard	  USB devices. While there's several alternatives, the most widely used
151*d2f0f4afSMaxime Ripard	  protocol is ECM (Ethernet Control Model). However, compatibility with
152*d2f0f4afSMaxime Ripard	  Windows is not that great.
153*d2f0f4afSMaxime Ripard
154*d2f0f4afSMaxime Ripardconfig USB_ETH_RNDIS
155*d2f0f4afSMaxime Ripard	bool "RNDIS Protocol"
156*d2f0f4afSMaxime Ripard	help
157*d2f0f4afSMaxime Ripard	  The RNDIS (Remote Network Driver Interface Specification) is a
158*d2f0f4afSMaxime Ripard	  Microsoft proprietary protocol to create an Ethernet device over USB.
159*d2f0f4afSMaxime Ripard	  Windows obviously supports it, as well as all the major operating
160*d2f0f4afSMaxime Ripard	  systems, so it's the best option for compatibility.
161*d2f0f4afSMaxime Ripard
162*d2f0f4afSMaxime Ripardendchoice
163*d2f0f4afSMaxime Ripard
164d4a37553SMugunthan V Nconfig USBNET_DEVADDR
165d4a37553SMugunthan V N	string "USB Gadget Ethernet device mac address"
166d4a37553SMugunthan V N	default "de:ad:be:ef:00:01"
16774e7997cSMaxime Ripard	help
16874e7997cSMaxime Ripard	  Ethernet MAC address of the device-side (ie. local board's) MAC
16974e7997cSMaxime Ripard	  address of the usb_ether interface
170d4a37553SMugunthan V N
171c163668aSMaxime Ripardconfig USBNET_HOST_ADDR
172c163668aSMaxime Ripard	string "USB Gadget Ethernet host mac address"
173c163668aSMaxime Ripard	default "de:ad:be:ef:00:00"
174c163668aSMaxime Ripard	help
175c163668aSMaxime Ripard	  Ethernet MAC address of the host-side (ie. remote device's) MAC
176c163668aSMaxime Ripard	  address of the usb_ether interface
177c163668aSMaxime Ripard
1783f33d3c8SMaxime Ripardendif # USB_ETHER
1793f33d3c8SMaxime Ripard
180a59a77f8SSam Protsenkoendif # USB_GADGET
181