# SPDX-License-Identifier: GPL-2.0

config USB_COMMON
	tristate


config USB_LED_TRIG
	bool "USB LED Triggers"
	depends on LEDS_CLASS && USB_COMMON && LEDS_TRIGGERS
	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
	select POWER_SUPPLY
	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
