#
# USB Core configuration
#
config USB_ANNOUNCE_NEW_DEVICES
	bool "USB announce new devices"
	help
	  Say Y here if you want the USB core to always announce the
	  idVendor, idProduct, Manufacturer, Product, and SerialNumber
	  strings for every new USB device to the syslog.  This option is
	  usually used by distro vendors to help with debugging and to
	  let users know what specific device was added to the machine
	  in what location.

	  If you do not want this kind of information sent to the system
	  log, or have any doubts about this, say N here.

comment "Miscellaneous USB options"

config USB_DEFAULT_PERSIST
	bool "Enable USB persist by default"
	default y
	help
	  Say N here if you don't want USB power session persistence
	  enabled by default.  If you say N it will make suspended USB
	  devices that lose power get reenumerated as if they had been
	  unplugged, causing any mounted filesystems to be lost.  The
	  persist feature can still be enabled for individual devices
	  through the power/persist sysfs node. See
	  Documentation/usb/persist.txt for more info.

	  If you have any questions about this, say Y here, only say N
	  if you know exactly what you are doing.

config USB_DYNAMIC_MINORS
	bool "Dynamic USB minor allocation"
	help
	  If you say Y here, the USB subsystem will use dynamic minor
	  allocation for any device that uses the USB major number.
	  This means that you can have more than 16 of a single type
	  of device (like USB printers).

	  If you are unsure about this, say N here.

config USB_OTG
	bool "OTG support"
	depends on PM
	default n
	help
	  The most notable feature of USB OTG is support for a
	  "Dual-Role" device, which can act as either a device
	  or a host. The initial role is decided by the type of
	  plug inserted and can be changed later when two dual
	  role devices talk to each other.

	  Select this only if your board has Mini-AB/Micro-AB
	  connector.

config USB_OTG_WHITELIST
	bool "Rely on OTG and EH Targeted Peripherals List"
	depends on USB
	help
	  If you say Y here, the "otg_whitelist.h" file will be used as a
	  product whitelist, so USB peripherals not listed there will be
	  rejected during enumeration.  This behavior is required by the
	  USB OTG and EH specification for all devices not on your product's
	  "Targeted Peripherals List".  "Embedded Hosts" are likewise
	  allowed to support only a limited number of peripherals.

config USB_OTG_BLACKLIST_HUB
	bool "Disable external hubs"
	depends on USB_OTG || EXPERT
	help
	  If you say Y here, then Linux will refuse to enumerate
	  external hubs.  OTG hosts are allowed to reduce hardware
	  and software costs by not supporting external hubs.  So
	  are "Embedded Hosts" that don't offer OTG support.

config USB_OTG_FSM
	tristate "USB 2.0 OTG FSM implementation"
	depends on USB
	select USB_OTG
	select USB_PHY
	help
	  Implements OTG Finite State Machine as specified in On-The-Go
	  and Embedded Host Supplement to the USB Revision 2.0 Specification.

config USB_ULPI_BUS
	tristate "USB ULPI PHY interface support"
	depends on USB_SUPPORT
	help
	  UTMI+ Low Pin Interface (ULPI) is specification for a commonly used
	  USB 2.0 PHY interface. The ULPI specification defines a standard set
	  of registers that can be used to detect the vendor and product which
	  allows ULPI to be handled as a bus. This module is the driver for that
	  bus.

	  The ULPI interfaces (the buses) are registered by the drivers for USB
	  controllers which support ULPI register access and have ULPI PHY
	  attached to them. The ULPI PHY drivers themselves are normal PHY
	  drivers.

	  ULPI PHYs provide often functions such as ADP sensing/probing (OTG
	  protocol) and USB charger detection.

	  To compile this driver as a module, choose M here: the module will
	  be called ulpi.
