#
# 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.

config RFKILL_PM
	bool "Power off on suspend"
	depends on RFKILL && PM
	default y

# 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.
