# SPDX-License-Identifier: GPL-2.0
if GREYBUS

config GREYBUS_AUDIO
	tristate "Greybus Audio Class driver"
	depends on SOUND
	help
	  Select this option if you have a device that follows the
	  Greybus Audio Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-audio.ko

config GREYBUS_BOOTROM
	tristate "Greybus Bootrom Class driver"
	help
	  Select this option if you have a device that follows the
	  Greybus Bootrom Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-bootrom.ko

config GREYBUS_CAMERA
	tristate "Greybus Camera Class driver"
	depends on MEDIA_SUPPORT && LEDS_CLASS_FLASH && BROKEN
	help
	  Select this option if you have a device that follows the
	  Greybus Camera Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-camera.ko

config GREYBUS_FIRMWARE
	tristate "Greybus Firmware Download Class driver"
	depends on SPI
	help
	  Select this option if you have a device that follows the
	  Greybus Firmware Download Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-firmware.ko

config GREYBUS_HID
	tristate "Greybus HID Class driver"
	depends on HID && INPUT
	help
	  Select this option if you have a device that follows the
	  Greybus HID Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-hid.ko

config GREYBUS_LIGHT
	tristate "Greybus LED Class driver"
	depends on LEDS_CLASS
	help
	  Select this option if you have a device that follows the
	  Greybus LED Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-light.ko

config GREYBUS_LOG
	tristate "Greybus Debug Log Class driver"
	help
	  Select this option if you have a device that follows the
	  Greybus Debug Log Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-log.ko

config GREYBUS_LOOPBACK
	tristate "Greybus Loopback Class driver"
	help
	  Select this option if you have a device that follows the
	  Greybus Debug Log Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-log.ko

config GREYBUS_POWER
	tristate "Greybus Powersupply Class driver"
	depends on POWER_SUPPLY
	help
	  Select this option if you have a device that follows the
	  Greybus Powersupply Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-power-supply.ko

config GREYBUS_RAW
	tristate "Greybus Raw Class driver"
	help
	  Select this option if you have a device that follows the
	  Greybus Raw Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-raw.ko

config GREYBUS_VIBRATOR
	tristate "Greybus Vibrator Motor Class driver"
	help
	  Select this option if you have a device that follows the
	  Greybus Vibrator Motor Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-vibrator.ko

menuconfig GREYBUS_BRIDGED_PHY
	tristate "Greybus Bridged PHY Class drivers"
	help
	  Select this option to pick from a variety of Greybus Bridged
	  PHY class drivers.  These drivers emulate a number of
	  different "traditional" busses by tunneling them over Greybus.
	  Examples of this include serial, SPI, USB, and others.

	  To compile this code as a module, chose M here: the module
	  will be called gb-phy.ko

if GREYBUS_BRIDGED_PHY

config GREYBUS_GPIO
	tristate "Greybus GPIO Bridged PHY driver"
	depends on GPIOLIB
	select GPIOLIB_IRQCHIP
	help
	  Select this option if you have a device that follows the
	  Greybus GPIO Bridged PHY Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-gpio.ko

config GREYBUS_I2C
	tristate "Greybus I2C Bridged PHY driver"
	depends on I2C
	help
	  Select this option if you have a device that follows the
	  Greybus I2C Bridged PHY Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-i2c.ko

config GREYBUS_PWM
	tristate "Greybus PWM Bridged PHY driver"
	depends on PWM
	help
	  Select this option if you have a device that follows the
	  Greybus PWM Bridged PHY Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-pwm.ko

config GREYBUS_SDIO
	tristate "Greybus SDIO Bridged PHY driver"
	depends on MMC
	help
	  Select this option if you have a device that follows the
	  Greybus SDIO Bridged PHY Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-sdio.ko

config GREYBUS_SPI
	tristate "Greybus SPI Bridged PHY driver"
	depends on SPI
	help
	  Select this option if you have a device that follows the
	  Greybus SPI Bridged PHY Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-spi.ko

config GREYBUS_UART
	tristate "Greybus UART Bridged PHY driver"
	depends on TTY
	help
	  Select this option if you have a device that follows the
	  Greybus UART Bridged PHY Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-uart.ko

config GREYBUS_USB
	tristate "Greybus USB Host Bridged PHY driver"
	depends on USB
	help
	  Select this option if you have a device that follows the
	  Greybus USB Host Bridged PHY Class specification.

	  To compile this code as a module, chose M here: the module
	  will be called gb-usb.ko

endif	# GREYBUS_BRIDGED_PHY

config GREYBUS_ARCHE
	tristate "Greybus Arche Platform driver"
	depends on USB_HSIC_USB3613 || COMPILE_TEST
	help
	  Select this option if you have an Arche device.

	  To compile this code as a module, chose M here: the module
	  will be called gb-arche.ko

endif	# GREYBUS
