| # | |
| # 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 | |
| imply CMD_BIND | |
| 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 0x110a if ROCKCHIP_RV1108 | |
| default 0x110b if ROCKCHIP_RV1126 | |
| default 0x300a if ROCKCHIP_RK3066 | |
| default 0x301a if ROCKCHIP_RK3036 | |
| default 0x310b if ROCKCHIP_RK3188 | |
| default 0x310c if ROCKCHIP_RK3128 | |
| default 0x320a if ROCKCHIP_RK3288 | |
| default 0x320b if ROCKCHIP_RK322X | |
| default 0x320c if ROCKCHIP_RK3328 | |
| default 0x330a if ROCKCHIP_RK3368 | |
| default 0x330c if ROCKCHIP_RK3399 | |
| default 0x330d if ROCKCHIP_PX30 | |
| default 0x330e if ROCKCHIP_RK3308 | |
| default 0x350a if ROCKCHIP_RK3568 | |
| default 0x350b if ROCKCHIP_RK3588 | |
| 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 |