Sam Protsenko | f9d0fd8 | 2016-03-25 16:39:47 +0200 | [diff] [blame] | 1 | # |
| 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). |
| 10 | # - Some systems have both kinds of controllers. |
| 11 | # |
| 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 | # |
| 15 | |
| 16 | menuconfig USB_GADGET |
| 17 | bool "USB Gadget Support" |
| 18 | help |
| 19 | USB is a master/slave protocol, organized with one master |
| 20 | host (such as a PC) controlling up to 127 peripheral devices. |
| 21 | The USB hardware is asymmetric, which makes it easier to set up: |
| 22 | you can't connect a "to-the-host" connector to a peripheral. |
| 23 | |
| 24 | U-Boot can run in the host, or in the peripheral. In both cases |
| 25 | you need a low level bus controller driver, and some software |
| 26 | talking to it. Peripheral controllers are often discrete silicon, |
| 27 | or are integrated with the CPU in a microcontroller. The more |
| 28 | familiar host side controllers have names like "EHCI", "OHCI", |
| 29 | or "UHCI", and are usually integrated into southbridges on PC |
| 30 | motherboards. |
| 31 | |
| 32 | Enable this configuration option if you want to run U-Boot inside |
| 33 | a USB peripheral device. Configure one hardware driver for your |
| 34 | peripheral/device side bus controller, and a "gadget driver" for |
| 35 | your peripheral protocol. |
Sam Protsenko | a59a77f | 2016-04-13 14:20:24 +0300 | [diff] [blame] | 36 | |
| 37 | if USB_GADGET |
| 38 | |
Maxime Ripard | a95aee6 | 2017-09-07 08:58:08 +0200 | [diff] [blame] | 39 | config USB_GADGET_MANUFACTURER |
| 40 | string "Vendor name of the USB device" |
Maxime Ripard | e02687b | 2017-09-12 19:41:15 +0200 | [diff] [blame] | 41 | default "Allwinner Technology" if ARCH_SUNXI |
Maxime Ripard | a95aee6 | 2017-09-07 08:58:08 +0200 | [diff] [blame] | 42 | default "U-Boot" |
| 43 | help |
| 44 | Vendor name of the USB device emulated, reported to the host device. |
| 45 | This is usually either the manufacturer of the device or the SoC. |
| 46 | |
| 47 | config USB_GADGET_VENDOR_NUM |
| 48 | hex "Vendor ID of the USB device" |
Maxime Ripard | e02687b | 2017-09-12 19:41:15 +0200 | [diff] [blame] | 49 | default 0x1f3a if ARCH_SUNXI |
Maxime Ripard | a95aee6 | 2017-09-07 08:58:08 +0200 | [diff] [blame] | 50 | default 0x0 |
| 51 | help |
| 52 | Vendor ID of the USB device emulated, reported to the host device. |
| 53 | This is usually the board or SoC vendor's, unless you've registered |
| 54 | for one. |
| 55 | |
| 56 | config USB_GADGET_PRODUCT_NUM |
| 57 | hex "Product ID of the USB device" |
Maxime Ripard | e02687b | 2017-09-12 19:41:15 +0200 | [diff] [blame] | 58 | default 0x1010 if ARCH_SUNXI |
Maxime Ripard | a95aee6 | 2017-09-07 08:58:08 +0200 | [diff] [blame] | 59 | default 0x0 |
| 60 | help |
| 61 | Product ID of the USB device emulated, reported to the host device. |
| 62 | |
Sam Protsenko | 3457bba | 2016-04-13 14:20:25 +0300 | [diff] [blame] | 63 | config USB_GADGET_ATMEL_USBA |
| 64 | bool "Atmel USBA" |
| 65 | select USB_GADGET_DUALSPEED |
| 66 | help |
| 67 | USBA is the integrated high-speed USB Device controller on |
| 68 | the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. |
| 69 | |
Steve Rae | e016f0b | 2016-08-15 17:26:26 -0700 | [diff] [blame] | 70 | config USB_GADGET_BCM_UDC_OTG_PHY |
| 71 | bool "Broadcom UDC OTG PHY" |
| 72 | help |
| 73 | Enable the Broadcom UDC OTG physical device interface. |
| 74 | |
Sam Protsenko | 3457bba | 2016-04-13 14:20:25 +0300 | [diff] [blame] | 75 | config USB_GADGET_DWC2_OTG |
| 76 | bool "DesignWare USB2.0 HS OTG controller (gadget mode)" |
| 77 | select USB_GADGET_DUALSPEED |
| 78 | help |
| 79 | The Designware USB2.0 high-speed gadget controller |
| 80 | integrated into many SoCs. Select this option if you want the |
| 81 | driver to operate in Peripheral mode. This option requires |
| 82 | USB_GADGET to be enabled. |
| 83 | |
Steve Rae | f221db0 | 2016-06-07 15:35:21 -0700 | [diff] [blame] | 84 | if USB_GADGET_DWC2_OTG |
| 85 | |
| 86 | config USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8 |
| 87 | bool "DesignWare USB2.0 HS OTG controller 8-bit PHY bus width" |
| 88 | help |
| 89 | Set the Designware USB2.0 high-speed OTG controller |
| 90 | PHY interface width to 8 bits, rather than the default (16 bits). |
| 91 | |
| 92 | endif # USB_GADGET_DWC2_OTG |
| 93 | |
Sam Protsenko | 3457bba | 2016-04-13 14:20:25 +0300 | [diff] [blame] | 94 | config CI_UDC |
| 95 | bool "ChipIdea device controller" |
| 96 | select USB_GADGET_DUALSPEED |
| 97 | help |
| 98 | Say Y here to enable device controller functionality of the |
| 99 | ChipIdea driver. |
| 100 | |
Sam Protsenko | a59a77f | 2016-04-13 14:20:24 +0300 | [diff] [blame] | 101 | config USB_GADGET_VBUS_DRAW |
| 102 | int "Maximum VBUS Power usage (2-500 mA)" |
| 103 | range 2 500 |
| 104 | default 2 |
| 105 | help |
| 106 | Some devices need to draw power from USB when they are |
| 107 | configured, perhaps to operate circuitry or to recharge |
| 108 | batteries. This is in addition to any local power supply, |
| 109 | such as an AC adapter or batteries. |
| 110 | |
| 111 | Enter the maximum power your device draws through USB, in |
| 112 | milliAmperes. The permitted range of values is 2 - 500 mA; |
| 113 | 0 mA would be legal, but can make some hosts misbehave. |
| 114 | |
| 115 | This value will be used except for system-specific gadget |
| 116 | drivers that have more specific information. |
| 117 | |
Sam Protsenko | 3457bba | 2016-04-13 14:20:25 +0300 | [diff] [blame] | 118 | # Selected by UDC drivers that support high-speed operation. |
| 119 | config USB_GADGET_DUALSPEED |
| 120 | bool |
| 121 | |
Sam Protsenko | aaa4a9e | 2016-04-13 14:20:26 +0300 | [diff] [blame] | 122 | config USB_GADGET_DOWNLOAD |
| 123 | bool "Enable USB download gadget" |
| 124 | help |
| 125 | Composite USB download gadget support (g_dnl) for download functions. |
| 126 | This code works on top of composite gadget. |
| 127 | |
Sam Protsenko | e6c0bc0 | 2016-04-13 14:20:30 +0300 | [diff] [blame] | 128 | if USB_GADGET_DOWNLOAD |
| 129 | |
Stefan Agner | 5661f08 | 2017-08-16 11:00:51 -0700 | [diff] [blame] | 130 | config USB_FUNCTION_SDP |
| 131 | bool "Enable USB SDP (Serial Download Protocol)" |
| 132 | help |
| 133 | Enable Serial Download Protocol (SDP) device support in U-Boot. This |
| 134 | allows to download images into memory and execute (jump to) them |
| 135 | using the same protocol as implemented by the i.MX family's boot ROM. |
| 136 | |
Maxime Ripard | 5506ff1 | 2017-09-06 22:54:52 +0200 | [diff] [blame] | 137 | endif # USB_GADGET_DOWNLOAD |
| 138 | |
Maxime Ripard | 3f33d3c | 2017-09-06 23:23:21 +0200 | [diff] [blame] | 139 | config USB_ETHER |
| 140 | bool "USB Ethernet Gadget" |
Maxime Ripard | 3c989f3 | 2017-09-22 09:51:37 +0200 | [diff] [blame] | 141 | default y if ARCH_SUNXI && USB_MUSB_GADGET |
Maxime Ripard | 3f33d3c | 2017-09-06 23:23:21 +0200 | [diff] [blame] | 142 | help |
| 143 | Creates an Ethernet network device through a USB peripheral |
| 144 | controller. This will create a network interface on both the device |
| 145 | (U-Boot) and the host (remote device) that can be used just like any |
| 146 | other nework interface. |
| 147 | It will bind on the peripheral USB controller, ignoring the USB hosts |
| 148 | controllers in the system. |
| 149 | |
| 150 | if USB_ETHER |
| 151 | |
Maxime Ripard | d2f0f4a | 2017-09-07 08:46:14 +0200 | [diff] [blame] | 152 | choice |
| 153 | prompt "USB Ethernet Gadget Model" |
| 154 | default USB_ETH_RNDIS |
| 155 | help |
| 156 | There is several models (protocols) to implement Ethernet over USB |
| 157 | devices. The main ones are Microsoft's RNDIS and USB's CDC-Ethernet |
| 158 | (also called CDC-ECM). RNDIS is obviously compatible with Windows, |
| 159 | while CDC-ECM is not. Most other operating systems support both, so |
| 160 | if inter-operability is a concern, RNDIS is to be preferred. |
| 161 | |
| 162 | config USB_ETH_CDC |
| 163 | bool "CDC-ECM Protocol" |
| 164 | help |
| 165 | CDC (Communications Device Class) is the standard for Ethernet over |
| 166 | USB devices. While there's several alternatives, the most widely used |
| 167 | protocol is ECM (Ethernet Control Model). However, compatibility with |
| 168 | Windows is not that great. |
| 169 | |
| 170 | config USB_ETH_RNDIS |
| 171 | bool "RNDIS Protocol" |
| 172 | help |
| 173 | The RNDIS (Remote Network Driver Interface Specification) is a |
| 174 | Microsoft proprietary protocol to create an Ethernet device over USB. |
| 175 | Windows obviously supports it, as well as all the major operating |
| 176 | systems, so it's the best option for compatibility. |
| 177 | |
| 178 | endchoice |
| 179 | |
Mugunthan V N | d4a3755 | 2016-11-18 11:09:15 +0530 | [diff] [blame] | 180 | config USBNET_DEVADDR |
| 181 | string "USB Gadget Ethernet device mac address" |
| 182 | default "de:ad:be:ef:00:01" |
Maxime Ripard | 74e7997 | 2017-09-12 18:32:45 +0200 | [diff] [blame] | 183 | help |
| 184 | Ethernet MAC address of the device-side (ie. local board's) MAC |
| 185 | address of the usb_ether interface |
Mugunthan V N | d4a3755 | 2016-11-18 11:09:15 +0530 | [diff] [blame] | 186 | |
Maxime Ripard | c163668 | 2017-09-06 22:53:43 +0200 | [diff] [blame] | 187 | config USBNET_HOST_ADDR |
| 188 | string "USB Gadget Ethernet host mac address" |
| 189 | default "de:ad:be:ef:00:00" |
| 190 | help |
| 191 | Ethernet MAC address of the host-side (ie. remote device's) MAC |
| 192 | address of the usb_ether interface |
| 193 | |
Maxime Ripard | 3f33d3c | 2017-09-06 23:23:21 +0200 | [diff] [blame] | 194 | endif # USB_ETHER |
| 195 | |
Sam Protsenko | a59a77f | 2016-04-13 14:20:24 +0300 | [diff] [blame] | 196 | endif # USB_GADGET |