| # |
| # USB Gadget support on a system involves |
| # (a) a peripheral controller, and |
| # (b) the gadget driver using it. |
| # |
| # NOTE: Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !! |
| # |
| # - Host systems (like PCs) need CONFIG_USB (with "A" jacks). |
| # - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks). |
| # - Some systems have both kinds of controllers. |
| # |
| # With help from a special transceiver and a "Mini-AB" jack, systems with |
| # both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG). |
| # |
| |
| menuconfig USB_GADGET |
| bool "USB Gadget Support" |
| depends on DM |
| select DM_USB |
| help |
| USB is a master/slave protocol, organized with one master |
| host (such as a PC) controlling up to 127 peripheral devices. |
| The USB hardware is asymmetric, which makes it easier to set up: |
| you can't connect a "to-the-host" connector to a peripheral. |
| |
| U-Boot can run in the host, or in the peripheral. In both cases |
| you need a low level bus controller driver, and some software |
| talking to it. Peripheral controllers are often discrete silicon, |
| or are integrated with the CPU in a microcontroller. The more |
| familiar host side controllers have names like "EHCI", "OHCI", |
| or "UHCI", and are usually integrated into southbridges on PC |
| motherboards. |
| |
| Enable this configuration option if you want to run U-Boot inside |
| a USB peripheral device. Configure one hardware driver for your |
| peripheral/device side bus controller, and a "gadget driver" for |
| your peripheral protocol. |
| |
| config SPL_USB_GADGET |
| bool "USB Gadget Support in SPL" |
| help |
| Enable USB Gadget API which allows to enable USB device functions |
| in SPL. |
| |
| if USB_GADGET |
| |
| config USB_GADGET_MANUFACTURER |
| string "Vendor name of the USB device" |
| default "NVIDIA" if ARCH_TEGRA |
| default "Allwinner Technology" if ARCH_SUNXI |
| default "Rockchip" if ARCH_ROCKCHIP |
| default "U-Boot" |
| help |
| Vendor name of the USB device emulated, reported to the host device. |
| This is usually either the manufacturer of the device or the SoC. |
| |
| config USB_GADGET_VENDOR_NUM |
| hex "Vendor ID of the USB device" |
| default 0x0955 if ARCH_TEGRA |
| default 0x1f3a if ARCH_SUNXI |
| default 0x2207 if ARCH_ROCKCHIP |
| default 0x0 |
| help |
| Vendor ID of the USB device emulated, reported to the host device. |
| This is usually the board or SoC vendor's, unless you've registered |
| for one. |
| |
| config USB_GADGET_PRODUCT_NUM |
| hex "Product ID of the USB device" |
| default 0x701a if ARCH_TEGRA |
| default 0x1010 if ARCH_SUNXI |
| default 0x310a if ROCKCHIP_RK3036 |
| default 0x300a if ROCKCHIP_RK3066 |
| default 0x310c if ROCKCHIP_RK3128 |
| default 0x320a if ROCKCHIP_RK3229 || ROCKCHIP_RK3288 |
| default 0x330a if ROCKCHIP_RK3328 |
| default 0x330c if ROCKCHIP_RK3399 |
| default 0x0 |
| help |
| Product ID of the USB device emulated, reported to the host device. |
| |
| config USB_GADGET_ATMEL_USBA |
| bool "Atmel USBA" |
| select USB_GADGET_DUALSPEED |
| help |
| USBA is the integrated high-speed USB Device controller on |
| the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. |
| |
| config USB_GADGET_BCM_UDC_OTG_PHY |
| bool "Broadcom UDC OTG PHY" |
| help |
| Enable the Broadcom UDC OTG physical device interface. |
| |
| config USB_GADGET_AT91 |
| bool "Atmel AT91 USB Gadget Controller" |
| depends on ARCH_AT91 |
| |
| config USB_GADGET_DWC2_OTG |
| bool "DesignWare USB2.0 HS OTG controller (gadget mode)" |
| select USB_GADGET_DUALSPEED |
| help |
| The Designware USB2.0 high-speed gadget controller |
| integrated into many SoCs. Select this option if you want the |
| driver to operate in Peripheral mode. This option requires |
| USB_GADGET to be enabled. |
| |
| if USB_GADGET_DWC2_OTG |
| |
| config USB_GADGET_DWC2_OTG_PHY |
| bool "DesignWare USB2.0 HS OTG PHY" |
| help |
| Enable the DesignWare USB2.0 HS OTG physical device interface. |
| |
| config USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8 |
| bool "DesignWare USB2.0 HS OTG controller 8-bit PHY bus width" |
| help |
| Set the Designware USB2.0 high-speed OTG controller |
| PHY interface width to 8 bits, rather than the default (16 bits). |
| |
| endif # USB_GADGET_DWC2_OTG |
| |
| config USB_GADGET_OS_DESCRIPTORS |
| bool "USB OS Feature Descriptors support" |
| help |
| This is a porting patch from linux kernel: 37a3a533429e |
| ("usb: gadget: OS Feature Descriptors support"), the original commit |
| log see below: |
| There is a custom (non-USB IF) extension to the USB standard: |
| http://msdn.microsoft.com/library/windows/hardware/gg463182 |
| |
| config CI_UDC |
| bool "ChipIdea device controller" |
| select USB_GADGET_DUALSPEED |
| help |
| Say Y here to enable device controller functionality of the |
| ChipIdea driver. |
| |
| config USB_GADGET_MAX3420 |
| bool "MAX3420 USB Over SPI" |
| depends on DM_SPI |
| help |
| MAX3420, from MAXIM, implements USB-over-SPI Full-Speed device controller. |
| |
| config USB_GADGET_VBUS_DRAW |
| int "Maximum VBUS Power usage (2-500 mA)" |
| range 2 500 |
| default 2 |
| help |
| Some devices need to draw power from USB when they are |
| configured, perhaps to operate circuitry or to recharge |
| batteries. This is in addition to any local power supply, |
| such as an AC adapter or batteries. |
| |
| Enter the maximum power your device draws through USB, in |
| milliAmperes. The permitted range of values is 2 - 500 mA; |
| 0 mA would be legal, but can make some hosts misbehave. |
| |
| This value will be used except for system-specific gadget |
| drivers that have more specific information. |
| |
| config SDP_LOADADDR |
| hex "Default load address at SDP_WRITE and SDP_JUMP" |
| default 0x0 |
| |
| # Selected by UDC drivers that support high-speed operation. |
| config USB_GADGET_DUALSPEED |
| bool |
| |
| config USB_GADGET_DOWNLOAD |
| bool "Enable USB download gadget" |
| help |
| Composite USB download gadget support (g_dnl) for download functions. |
| This code works on top of composite gadget. |
| |
| if USB_GADGET_DOWNLOAD |
| |
| config USB_FUNCTION_MASS_STORAGE |
| bool "Enable USB mass storage gadget" |
| help |
| Enable mass storage protocol support in U-Boot. It allows exporting |
| the eMMC/SD card content to HOST PC so it can be mounted. |
| |
| config USB_FUNCTION_ROCKUSB |
| bool "Enable USB rockusb gadget" |
| help |
| Rockusb protocol is widely used by Rockchip SoC based devices. It can |
| read/write info, image to/from devices. This enables the USB part of |
| the rockusb gadget.for more detail about Rockusb protocol, please see |
| doc/README.rockusb |
| |
| config USB_FUNCTION_SDP |
| bool "Enable USB SDP (Serial Download Protocol)" |
| help |
| Enable Serial Download Protocol (SDP) device support in U-Boot. This |
| allows to download images into memory and execute (jump to) them |
| using the same protocol as implemented by the i.MX family's boot ROM. |
| |
| config USB_FUNCTION_THOR |
| bool "Enable USB THOR gadget" |
| help |
| Enable Tizen's THOR download protocol support in U-Boot. It |
| allows downloading images into memory and flash them to target device. |
| |
| config USB_FUNCTION_ACM |
| bool "Enable CDC ACM gadget" |
| select SYS_STDIO_DEREGISTER |
| select CIRCBUF |
| help |
| ACM serial link. This function can be used to create a stdio device to |
| interoperate with MS-Windows hosts or with the Linux-USB "cdc-acm" |
| driver. |
| |
| endif # USB_GADGET_DOWNLOAD |
| |
| config USB_ETHER |
| bool "USB Ethernet Gadget" |
| depends on NET |
| default y if ARCH_SUNXI && USB_MUSB_GADGET |
| help |
| Creates an Ethernet network device through a USB peripheral |
| controller. This will create a network interface on both the device |
| (U-Boot) and the host (remote device) that can be used just like any |
| other nework interface. |
| It will bind on the peripheral USB controller, ignoring the USB hosts |
| controllers in the system. |
| |
| if USB_ETHER |
| |
| choice |
| prompt "USB Ethernet Gadget Model" |
| default USB_ETH_RNDIS |
| help |
| There is several models (protocols) to implement Ethernet over USB |
| devices. The main ones are Microsoft's RNDIS and USB's CDC-Ethernet |
| (also called CDC-ECM). RNDIS is obviously compatible with Windows, |
| while CDC-ECM is not. Most other operating systems support both, so |
| if inter-operability is a concern, RNDIS is to be preferred. |
| |
| config USB_ETH_CDC |
| bool "CDC-ECM Protocol" |
| help |
| CDC (Communications Device Class) is the standard for Ethernet over |
| USB devices. While there's several alternatives, the most widely used |
| protocol is ECM (Ethernet Control Model). However, compatibility with |
| Windows is not that great. |
| |
| config USB_ETH_RNDIS |
| bool "RNDIS Protocol" |
| help |
| The RNDIS (Remote Network Driver Interface Specification) is a |
| Microsoft proprietary protocol to create an Ethernet device over USB. |
| Windows obviously supports it, as well as all the major operating |
| systems, so it's the best option for compatibility. |
| |
| endchoice |
| |
| config USBNET_DEV_ADDR |
| string "USB Gadget Ethernet device mac address" |
| default "de:ad:be:ef:00:01" |
| help |
| Ethernet MAC address of the device-side (ie. local board's) MAC |
| address of the usb_ether interface |
| |
| config USBNET_HOST_ADDR |
| string "USB Gadget Ethernet host mac address" |
| default "de:ad:be:ef:00:00" |
| help |
| Ethernet MAC address of the host-side (ie. remote device's) MAC |
| address of the usb_ether interface |
| |
| endif # USB_ETHER |
| |
| endif # USB_GADGET |
| |
| if SPL_USB_GADGET |
| |
| config SPL_USB_ETHER |
| bool "Support USB Ethernet drivers in SPL" |
| depends on SPL_NET |
| help |
| Enable access to the USB network subsystem and associated |
| drivers in SPL. This permits SPL to load U-Boot over a |
| USB-connected Ethernet link (such as a USB Ethernet dongle) rather |
| than from an onboard peripheral. Environment support is required |
| since the network stack uses a number of environment variables. |
| See also SPL_NET and SPL_ETH. |
| |
| if SPL_USB_ETHER |
| |
| choice |
| prompt "USB Ethernet Gadget Model in SPL" |
| default SPL_USB_ETH_RNDIS |
| help |
| There is several models (protocols) to implement Ethernet over USB |
| devices. The main ones are Microsoft's RNDIS and USB's CDC-Ethernet |
| (also called CDC-ECM). RNDIS is obviously compatible with Windows, |
| while CDC-ECM is not. Most other operating systems support both, so |
| if inter-operability is a concern, RNDIS is to be preferred. |
| |
| config SPL_USB_ETH_RNDIS |
| bool "RNDIS Protocol" |
| help |
| The RNDIS (Remote Network Driver Interface Specification) is a |
| Microsoft proprietary protocol to create an Ethernet device over USB. |
| Windows obviously supports it, as well as all the major operating |
| systems, so it's the best option for compatibility. |
| |
| endchoice |
| |
| endif # SPL_USB_ETHER |
| |
| config SPL_DFU |
| bool "Support DFU (Device Firmware Upgrade) in SPL" |
| select SPL_HASH |
| select SPL_DFU_NO_RESET |
| depends on SPL_RAM_SUPPORT |
| help |
| This feature enables the DFU (Device Firmware Upgrade) in SPL with |
| RAM memory device support. The ROM code will load and execute |
| the SPL built with dfu. The user can load binaries (u-boot/kernel) to |
| selected device partition from host-pc using dfu-utils. |
| This feature is useful to flash the binaries to factory or bare-metal |
| boards using USB interface. |
| |
| choice |
| bool "DFU device selection in SPL" |
| depends on SPL_DFU |
| |
| config SPL_DFU_RAM |
| bool "RAM device" |
| depends on SPL_DFU && SPL_RAM_SUPPORT |
| help |
| select RAM/DDR memory device for loading binary images |
| (u-boot/kernel) to the selected device partition using |
| DFU and execute the u-boot/kernel from RAM. |
| |
| endchoice |
| |
| config SPL_USB_SDP_SUPPORT |
| bool "Support SDP (Serial Download Protocol) in SPL" |
| depends on SPL_SERIAL |
| help |
| Enable Serial Download Protocol (SDP) device support in SPL. This |
| allows to download images into memory and execute (jump to) them |
| using the same protocol as implemented by the i.MX family's boot ROM. |
| |
| config SPL_SDP_USB_DEV |
| int "SDP USB controller index in SPL" |
| default 0 |
| depends on SPL_USB_SDP_SUPPORT |
| help |
| Some boards have USB controller other than 0. Define this option |
| so it can be used in compiled environment. |
| |
| endif # SPL_USB_GADGET |