# SPDX-License-Identifier: GPL-2.0

config USB_COMMON
	tristate


config USB_LED_TRIG
	bool "USB LED Triggers"
	depends on LEDS_CLASS && LEDS_TRIGGERS
	select USB_COMMON
	help
	  This option adds LED triggers for USB host and/or gadget activity.

	  Say Y here if you are working on a system with led-class supported
	  LEDs and you want to use them as activity indicators for USB host or
	  gadget.

config USB_ULPI_BUS
	tristate "USB ULPI PHY interface support"
	select USB_COMMON
	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.

config USB_CONN_GPIO
	tristate "USB GPIO Based Connection Detection Driver"
	depends on GPIOLIB
	select USB_ROLE_SWITCH
	help
	  The driver supports USB role switch between host and device via GPIO
	  based USB cable detection, used typically if an input GPIO is used
	  to detect USB ID pin, and another input GPIO may be also used to detect
	  Vbus pin at the same time, it also can be used to enable/disable
	  device if an input GPIO is only used to detect Vbus pin.

	  To compile the driver as a module, choose M here: the module will
	  be called usb-conn-gpio.ko
