#
# 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
	depends on GPIOLIB || COMPILE_TEST
	default n
	help
	  If you say yes here you get support of a generic gpio RFKILL
	  driver.
