# SPDX-License-Identifier: GPL-2.0
#
# 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/driver-api/usb/persist.rst 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
	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.

config USB_AUTOSUSPEND_DELAY
	int "Default autosuspend delay"
	depends on USB
	default 2
	help
	  The default autosuspend delay in seconds.  Can be overridden
	  with the usbcore.autosuspend command line or module parameter.

	  The default value Linux has always had is 2 seconds.  Change
	  this value if you want a different delay and cannot modify
	  the command line or module parameter.
