#
# RF switch subsystem configuration
#
menuconfig RFKILL
	tristate "RF switch subsystem support"
	help
	  Say Y here if you want to have control over RF switches
	  found on many WiFi and Bluetooth cards.

	  To compile this driver as a module, choose M here: the
	  module will be called rfkill.

# LED trigger support
config RFKILL_LEDS
	bool
	depends on RFKILL
	depends on LEDS_TRIGGERS = y || RFKILL = LEDS_TRIGGERS
	default y

config RFKILL_INPUT
	bool "RF switch input support" if EXPERT
	depends on RFKILL
	depends on INPUT = y || RFKILL = INPUT
	default y if !EXPERT

config RFKILL_REGULATOR
	tristate "Generic rfkill regulator driver"
	depends on RFKILL || !RFKILL
	depends on REGULATOR
	help
          This options enable controlling radio transmitters connected to
          voltage regulator using the regulator framework.

          To compile this driver as a module, choose M here: the module will
          be called rfkill-regulator.

config RFKILL_GPIO
	tristate "GPIO RFKILL driver"
	depends on RFKILL && GPIOLIB
	default n
	help
	  If you say yes here you get support of a generic gpio RFKILL
	  driver. The platform should fill in the appropriate fields in the
	  rfkill_gpio_platform_data structure and pass that to the driver.
