menuconfig EXTCON
	tristate "External Connector Class (extcon) support"
	help
	  Say Y here to enable external connector class (extcon) support.
	  This allows monitoring external connectors by userspace
	  via sysfs and uevent and supports external connectors with
	  multiple states; i.e., an extcon that may have multiple
	  cables attached. For example, an external connector of a device
	  may be used to connect an HDMI cable and a AC adaptor, and to
	  host USB ports. Many of 30-pin connectors including PDMI are
	  also good examples.

if EXTCON

comment "Extcon Device Drivers"

config EXTCON_ADC_JACK
	tristate "ADC Jack extcon support"
	depends on IIO
	help
	  Say Y here to enable extcon device driver based on ADC values.

config EXTCON_ARIZONA
	tristate "Wolfson Arizona EXTCON support"
	depends on MFD_ARIZONA && INPUT && SND_SOC
	help
	  Say Y here to enable support for external accessory detection
	  with Wolfson Arizona devices. These are audio CODECs with
	  advanced audio accessory detection support.

config EXTCON_AXP288
	tristate "X-Power AXP288 EXTCON support"
	depends on MFD_AXP20X && USB_PHY
	help
	  Say Y here to enable support for USB peripheral detection
	  and USB MUX switching by X-Power AXP288 PMIC.

config EXTCON_GPIO
	tristate "GPIO extcon support"
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here to enable GPIO based extcon support. Note that GPIO
	  extcon supports single state per extcon instance.

config EXTCON_MAX14577
	tristate "Maxim MAX14577/77836 EXTCON Support"
	depends on MFD_MAX14577
	select IRQ_DOMAIN
	select REGMAP_I2C
	help
	  If you say yes here you get support for the MUIC device of
	  Maxim MAX14577/77836. The MAX14577/77836 MUIC is a USB port accessory
	  detector and switch.

config EXTCON_MAX3355
	tristate "Maxim MAX3355 USB OTG EXTCON Support"
	depends on GPIOLIB || COMPILE_TEST
	help
	  If you say yes here you get support for the USB OTG role detection by
	  MAX3355. The MAX3355 chip integrates a charge pump and comparators to
	  enable a system with an integrated USB OTG dual-role transceiver to
	  function as an USB OTG dual-role device.

config EXTCON_MAX77693
	tristate "Maxim MAX77693 EXTCON Support"
	depends on MFD_MAX77693 && INPUT
	select IRQ_DOMAIN
	select REGMAP_I2C
	help
	  If you say yes here you get support for the MUIC device of
	  Maxim MAX77693 PMIC. The MAX77693 MUIC is a USB port accessory
	  detector and switch.

config EXTCON_MAX77843
	tristate "Maxim MAX77843 EXTCON Support"
	depends on MFD_MAX77843
	select IRQ_DOMAIN
	select REGMAP_I2C
	help
	  If you say yes here you get support for the MUIC device of
	  Maxim MAX77843. The MAX77843 MUIC is a USB port accessory
	  detector add switch.

config EXTCON_MAX8997
	tristate "Maxim MAX8997 EXTCON Support"
	depends on MFD_MAX8997 && IRQ_DOMAIN
	help
	  If you say yes here you get support for the MUIC device of
	  Maxim MAX8997 PMIC. The MAX8997 MUIC is a USB port accessory
	  detector and switch.

config EXTCON_PALMAS
	tristate "Palmas USB EXTCON support"
	depends on MFD_PALMAS
	help
	  Say Y here to enable support for USB peripheral and USB host
	  detection by palmas usb.

config EXTCON_QCOM_SPMI_MISC
	tristate "Qualcomm USB extcon support"
	help
	  Say Y here to enable SPMI PMIC based USB cable detection
	  support on Qualcomm PMICs such as PM8941.

config EXTCON_RT8973A
	tristate "Richtek RT8973A EXTCON support"
	depends on I2C
	select IRQ_DOMAIN
	select REGMAP_I2C
	select REGMAP_IRQ
	help
	  If you say yes here you get support for the MUIC device of
	  Richtek RT8973A. The RT8973A is a USB port accessory detector
	  and switch that is optimized to protect low voltage system
	  from abnormal high input voltage (up to 28V).

config EXTCON_SM5502
	tristate "Silicon Mitus SM5502 EXTCON support"
	depends on I2C
	select IRQ_DOMAIN
	select REGMAP_I2C
	select REGMAP_IRQ
	help
	  If you say yes here you get support for the MUIC device of
	  Silicon Mitus SM5502. The SM5502 is a USB port accessory
	  detector and switch.

config EXTCON_USB_GPIO
	tristate "USB GPIO extcon support"
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here to enable GPIO based USB cable detection extcon support.
	  Used typically if GPIO is used for USB ID pin detection.

endif
