# 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
