config IWLWIFI
	tristate

config IWLCORE
	tristate "Intel Wireless Wifi Core"
	depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
	select IWLWIFI
	select MAC80211_LEDS if IWLWIFI_LEDS
	select LEDS_CLASS if IWLWIFI_LEDS
	select RFKILL if IWLWIFI_RFKILL
	select RFKILL_INPUT if IWLWIFI_RFKILL

config IWLWIFI_LEDS
	bool
	default n

config IWLWIFI_RFKILL
	boolean "IWLWIFI RF kill support"
	depends on IWLCORE

config IWL4965
	tristate "Intel Wireless WiFi 4965AGN"
	depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
	select FW_LOADER
	select IWLCORE
	---help---
	  Select to build the driver supporting the:

	  Intel Wireless WiFi Link 4965AGN

	  This driver uses the kernel's mac80211 subsystem.

	  In order to use this driver, you will need a microcode (uCode)
	  image for it. You can obtain the microcode from:

	          <http://intellinuxwireless.org/>.

	  The microcode is typically installed in /lib/firmware. You can
	  look in the hotplug script /etc/hotplug/firmware.agent to
	  determine which directory FIRMWARE_DIR is set to when the script
	  runs.

	  If you want to compile the driver as a module ( = code which can be
	  inserted in and removed from the running kernel whenever you want),
	  say M here and read <file:Documentation/kbuild/modules.txt>.  The
	  module will be called iwl4965.ko.

config IWL4965_HT
	bool "Enable 802.11n HT features in iwl4965 driver"
	depends on EXPERIMENTAL
	depends on IWL4965
	---help---
	  This option enables IEEE 802.11n High Throughput features
	  for the iwl4965 driver.

config IWL4965_LEDS
	bool "Enable LEDS features in iwl4965 driver"
	depends on IWL4965
	select IWLWIFI_LEDS
	---help---
	  This option enables LEDS for the iwlwifi drivers


config IWL4965_SPECTRUM_MEASUREMENT
	bool "Enable Spectrum Measurement in iwl4965 driver"
	depends on IWL4965
	---help---
	  This option will enable spectrum measurement for the iwl4965 driver.

config IWL4965_SENSITIVITY
	bool "Enable Sensitivity Calibration in iwl4965 driver"
	depends on IWL4965
	---help---
	  This option will enable sensitivity calibration for the iwl4965
	  driver.

config IWLWIFI_DEBUG
	bool "Enable full debugging output in iwl4965 driver"
	depends on IWL4965
	---help---
	  This option will enable debug tracing output for the iwl4965
	  driver.

	  This will result in the kernel module being ~100k larger.  You can
	  control which debug output is sent to the kernel log by setting the
	  value in

	          /sys/bus/pci/drivers/${DRIVER}/debug_level

	  This entry will only exist if this option is enabled.

	  To set a value, simply echo an 8-byte hex value to the same file:

		  % echo 0x43fff > /sys/bus/pci/drivers/${DRIVER}/debug_level

	  You can find the list of debug mask values in:
		  drivers/net/wireless/iwlwifi/iwl-4965-debug.h

	  If this is your first time using this driver, you should say Y here
	  as the debug information can assist others in helping you resolve
	  any problems you may encounter.

config IWLWIFI_DEBUGFS
        bool "Iwlwifi debugfs support"
        depends on IWLCORE && IWLWIFI_DEBUG && MAC80211_DEBUGFS
        ---help---
	  Enable creation of debugfs files for the iwlwifi drivers.

config IWL3945
	tristate "Intel PRO/Wireless 3945ABG/BG Network Connection"
	depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
	select FW_LOADER
	select IWLWIFI
	select MAC80211_LEDS if IWL3945_LEDS
	select LEDS_CLASS if IWL3945_LEDS
	---help---
	  Select to build the driver supporting the:

	  Intel PRO/Wireless 3945ABG/BG Network Connection

	  This driver uses the kernel's mac80211 subsystem.

	  In order to use this driver, you will need a microcode (uCode)
	  image for it. You can obtain the microcode from:

	          <http://intellinuxwireless.org/>.

	  The microcode is typically installed in /lib/firmware. You can
	  look in the hotplug script /etc/hotplug/firmware.agent to
	  determine which directory FIRMWARE_DIR is set to when the script
	  runs.

	  If you want to compile the driver as a module ( = code which can be
	  inserted in and removed from the running kernel whenever you want),
	  say M here and read <file:Documentation/kbuild/modules.txt>.  The
	  module will be called iwl3945.ko.

config IWL3945_SPECTRUM_MEASUREMENT
	bool "Enable Spectrum Measurement in iwl3945 drivers"
	depends on IWL3945
	---help---
	  This option will enable spectrum measurement for the iwl3945 driver.

config IWL3945_LEDS
	bool "Enable LEDS features in iwl3945 driver"
	depends on IWL3945
	---help---
	  This option enables LEDS for the iwl3945 driver.

config IWL3945_DEBUG
	bool "Enable full debugging output in iwl3945 driver"
	depends on IWL3945
	---help---
	  This option will enable debug tracing output for the iwl3945
	  driver.

	  This will result in the kernel module being ~100k larger.  You can
	  control which debug output is sent to the kernel log by setting the
	  value in

	          /sys/bus/pci/drivers/${DRIVER}/debug_level

	  This entry will only exist if this option is enabled.

	  To set a value, simply echo an 8-byte hex value to the same file:

		  % echo 0x43fff > /sys/bus/pci/drivers/${DRIVER}/debug_level

	  You can find the list of debug mask values in:
		  drivers/net/wireless/iwlwifi/iwl-3945-debug.h

	  If this is your first time using this driver, you should say Y here
	  as the debug information can assist others in helping you resolve
	  any problems you may encounter.

