Home | History | Annotate | Download | only in gadget
      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.
     36 
     37 if USB_GADGET
     38 
     39 config USB_GADGET_MANUFACTURER
     40 	string "Vendor name of the USB device"
     41 	default "Allwinner Technology" if ARCH_SUNXI
     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"
     49 	default 0x1f3a if ARCH_SUNXI
     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"
     58 	default 0x1010 if ARCH_SUNXI
     59 	default 0x0
     60 	help
     61 	  Product ID of the USB device emulated, reported to the host device.
     62 
     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 
     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 
     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 
     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 
     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 
    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 
    118 # Selected by UDC drivers that support high-speed operation.
    119 config USB_GADGET_DUALSPEED
    120 	bool
    121 
    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 
    128 if USB_GADGET_DOWNLOAD
    129 
    130 config USB_FUNCTION_MASS_STORAGE
    131 	bool "Enable USB mass storage gadget"
    132 	help
    133 	  Enable mass storage protocol support in U-Boot. It allows exporting
    134 	  the eMMC/SD card content to HOST PC so it can be mounted.
    135 
    136 config USB_FUNCTION_ROCKUSB
    137         bool "Enable USB rockusb gadget"
    138         help
    139           Rockusb protocol is widely used by Rockchip SoC based devices. It can
    140           read/write info, image to/from devices. This enables the USB part of
    141           the rockusb gadget.for more detail about Rockusb protocol, please see
    142           doc/README.rockusb
    143 
    144 config USB_FUNCTION_SDP
    145 	bool "Enable USB SDP (Serial Download Protocol)"
    146 	help
    147 	  Enable Serial Download Protocol (SDP) device support in U-Boot. This
    148 	  allows to download images into memory and execute (jump to) them
    149 	  using the same protocol as implemented by the i.MX family's boot ROM.
    150 
    151 config USB_FUNCTION_THOR
    152 	bool "Enable USB THOR gadget"
    153 	help
    154 	  Enable Tizen's THOR download protocol support in U-Boot. It
    155 	  allows downloading images into memory and flash them to target device.
    156 
    157 endif # USB_GADGET_DOWNLOAD
    158 
    159 config USB_ETHER
    160 	bool "USB Ethernet Gadget"
    161 	depends on NET
    162 	default y if ARCH_SUNXI && USB_MUSB_GADGET
    163 	help
    164 	  Creates an Ethernet network device through a USB peripheral
    165 	  controller. This will create a network interface on both the device
    166 	  (U-Boot) and the host (remote device) that can be used just like any
    167 	  other nework interface.
    168 	  It will bind on the peripheral USB controller, ignoring the USB hosts
    169 	  controllers in the system.
    170 
    171 if USB_ETHER
    172 
    173 choice
    174 	prompt "USB Ethernet Gadget Model"
    175 	default USB_ETH_RNDIS
    176 	help
    177 	  There is several models (protocols) to implement Ethernet over USB
    178 	  devices. The main ones are Microsoft's RNDIS and USB's CDC-Ethernet
    179 	  (also called CDC-ECM). RNDIS is obviously compatible with Windows,
    180 	  while CDC-ECM is not. Most other operating systems support both, so
    181 	  if inter-operability is a concern, RNDIS is to be preferred.
    182 
    183 config USB_ETH_CDC
    184 	bool "CDC-ECM Protocol"
    185 	help
    186 	  CDC (Communications Device Class) is the standard for Ethernet over
    187 	  USB devices. While there's several alternatives, the most widely used
    188 	  protocol is ECM (Ethernet Control Model). However, compatibility with
    189 	  Windows is not that great.
    190 
    191 config USB_ETH_RNDIS
    192 	bool "RNDIS Protocol"
    193 	help
    194 	  The RNDIS (Remote Network Driver Interface Specification) is a
    195 	  Microsoft proprietary protocol to create an Ethernet device over USB.
    196 	  Windows obviously supports it, as well as all the major operating
    197 	  systems, so it's the best option for compatibility.
    198 
    199 endchoice
    200 
    201 config USBNET_DEVADDR
    202 	string "USB Gadget Ethernet device mac address"
    203 	default "de:ad:be:ef:00:01"
    204 	help
    205 	  Ethernet MAC address of the device-side (ie. local board's) MAC
    206 	  address of the usb_ether interface
    207 
    208 config USBNET_HOST_ADDR
    209 	string "USB Gadget Ethernet host mac address"
    210 	default "de:ad:be:ef:00:00"
    211 	help
    212 	  Ethernet MAC address of the host-side (ie. remote device's) MAC
    213 	  address of the usb_ether interface
    214 
    215 endif # USB_ETHER
    216 
    217 endif # USB_GADGET
    218