iwlwifi: make LED support optional
authorJohannes Berg <johannes.berg@intel.com>
Thu, 24 Apr 2014 14:31:08 +0000 (16:31 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 6 May 2014 17:40:05 +0000 (20:40 +0300)
If there's no LED on the system, it doesn't make a lot of sense
to include close to 4k of LED-related code (mostly in mac80211),
so instead of forcing LED support into the kernel, don't build
iwlwifi/mac80211 LED support if there's no LED class support.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: EliadX Peller <eliad@wizery.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/Kconfig
drivers/net/wireless/iwlwifi/dvm/Makefile
drivers/net/wireless/iwlwifi/dvm/dev.h
drivers/net/wireless/iwlwifi/dvm/led.h
drivers/net/wireless/iwlwifi/mvm/Makefile
drivers/net/wireless/iwlwifi/mvm/mvm.h

index 74b3b4de7bb7de57ef42fabfe36866eef3b05287..b82d30c0f0c9735c6e996e7b7a31ed1909ef2ffb 100644 (file)
@@ -2,10 +2,6 @@ config IWLWIFI
        tristate "Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) "
        depends on PCI && MAC80211 && HAS_IOMEM
        select FW_LOADER
-       select NEW_LEDS
-       select LEDS_CLASS
-       select LEDS_TRIGGERS
-       select MAC80211_LEDS
        ---help---
          Select to build the driver supporting the:
 
@@ -43,6 +39,14 @@ config IWLWIFI
          say M here and read <file:Documentation/kbuild/modules.txt>.  The
          module will be called iwlwifi.
 
+config IWLWIFI_LEDS
+       bool
+       depends on IWLWIFI
+       depends on LEDS_CLASS
+       select LEDS_TRIGGERS
+       select MAC80211_LEDS
+       default y
+
 config IWLDVM
        tristate "Intel Wireless WiFi DVM Firmware support"
        depends on IWLWIFI
index dce7ab2e0c4bfdda46c7ed5f7b1429c7633e7ce8..4d19685f31c3ad97fc48ad4a88ffb6b491abdf2c 100644 (file)
@@ -4,9 +4,10 @@ iwldvm-objs            += main.o rs.o mac80211.o ucode.o tx.o
 iwldvm-objs            += lib.o calib.o tt.o sta.o rx.o
 
 iwldvm-objs            += power.o
-iwldvm-objs            += scan.o led.o
+iwldvm-objs            += scan.o
 iwldvm-objs            += rxon.o devices.o
 
+iwldvm-$(CONFIG_IWLWIFI_LEDS) += led.o
 iwldvm-$(CONFIG_IWLWIFI_DEBUGFS) += debugfs.o
 
 ccflags-y += -D__CHECK_ENDIAN__ -I$(src)/../
index 3441f70d0ff911594dfd4066e782f0ca042e02d6..a6f22c32a27994000f578c2baff08a2f62042aa0 100644 (file)
@@ -888,9 +888,11 @@ struct iwl_priv {
 
        struct iwl_event_log event_log;
 
+#ifdef CONFIG_IWLWIFI_LEDS
        struct led_classdev led;
        unsigned long blink_on, blink_off;
        bool led_registered;
+#endif
 
        /* WoWLAN GTK rekey data */
        u8 kck[NL80211_KCK_LEN], kek[NL80211_KEK_LEN];
index 6a0817d9c4fa05f15e1ceffd4272925451994f80..1c6b2252d0f24cb8ee2b94d0f62040361304b58e 100644 (file)
@@ -36,8 +36,20 @@ struct iwl_priv;
 #define IWL_LED_ACTIVITY       (0<<1)
 #define IWL_LED_LINK           (1<<1)
 
+#ifdef CONFIG_IWLWIFI_LEDS
 void iwlagn_led_enable(struct iwl_priv *priv);
 void iwl_leds_init(struct iwl_priv *priv);
 void iwl_leds_exit(struct iwl_priv *priv);
+#else
+static inline void iwlagn_led_enable(struct iwl_priv *priv)
+{
+}
+static inline void iwl_leds_init(struct iwl_priv *priv)
+{
+}
+static inline void iwl_leds_exit(struct iwl_priv *priv)
+{
+}
+#endif
 
 #endif /* __iwl_leds_h__ */
index ccdd3b7c4cce38fb10caf66326e7c439f0c079ee..c30d7f64ec1e4e1c47a635e091c4e503c2ceaa83 100644 (file)
@@ -3,8 +3,9 @@ iwlmvm-y += fw.o mac80211.o nvm.o ops.o phy-ctxt.o mac-ctxt.o
 iwlmvm-y += utils.o rx.o tx.o binding.o quota.o sta.o sf.o
 iwlmvm-y += scan.o time-event.o rs.o
 iwlmvm-y += power.o coex.o
-iwlmvm-y += led.o tt.o offloading.o
+iwlmvm-y += tt.o offloading.o
 iwlmvm-$(CONFIG_IWLWIFI_DEBUGFS) += debugfs.o debugfs-vif.o
+iwlmvm-$(CONFIG_IWLWIFI_LEDS) += led.o
 iwlmvm-$(CONFIG_PM_SLEEP) += d3.o
 
 ccflags-y += -D__CHECK_ENDIAN__ -I$(src)/../
index b52d1c97e2899920e062555e17cd0f0d973f8c20..1575ac7c5864954f8f55d55a3f18691c375ce086 100644 (file)
@@ -589,7 +589,9 @@ struct iwl_mvm {
        u32 *fw_error_rxf;
        u32 fw_error_rxf_len;
 
+#ifdef CONFIG_IWLWIFI_LEDS
        struct led_classdev led;
+#endif
 
        struct ieee80211_vif *p2p_device_vif;
 
@@ -896,8 +898,18 @@ int iwl_mvm_power_uapsd_misbehaving_ap_notif(struct iwl_mvm *mvm,
                                             struct iwl_rx_cmd_buffer *rxb,
                                             struct iwl_device_cmd *cmd);
 
+#ifdef CONFIG_IWLWIFI_LEDS
 int iwl_mvm_leds_init(struct iwl_mvm *mvm);
 void iwl_mvm_leds_exit(struct iwl_mvm *mvm);
+#else
+static inline int iwl_mvm_leds_init(struct iwl_mvm *mvm)
+{
+       return 0;
+}
+static inline void iwl_mvm_leds_exit(struct iwl_mvm *mvm)
+{
+}
+#endif
 
 /* D3 (WoWLAN, NetDetect) */
 int iwl_mvm_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan);