mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
9b63fcaec6
Today CMD_BIND defaults to 'y' when USB_ETHER is enabled. In practice, CMD_BIND should default to 'y' when any USB gadget is enabled not only USB_ETHER. Let's invert the logic of the dependency and use the weak 'imply' keyword to enforce this. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # on vim3 Link: https://lore.kernel.org/r/20231010090304.49335-2-miquel.raynal@bootlin.com Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
356 lines
12 KiB
Text
356 lines
12 KiB
Text
#
|
|
# 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 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
|