#
# 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 && 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_LEDS_TRIGGER_USBPORT
	tristate "USB port LED trigger"
	depends on USB && LEDS_TRIGGERS
	help
	  This driver allows LEDs to be controlled by USB events. Enabling this
	  trigger allows specifying list of USB ports that should turn on LED
	  when some USB device gets connected.
