#
# 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_RUNTIME
	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.

