iwlwifi: add WOWLAN uCode loading support by testmode
authorHsu, Kenny <kenny.hsu@intel.com>
Fri, 2 Dec 2011 16:48:35 +0000 (08:48 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 6 Dec 2011 21:07:06 +0000 (16:07 -0500)
Create new tm command for WOWLAN uCode loading to support
further debugging function in userspace.

- IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW

Signed-off-by: Kenny Hsu <kenny.hsu@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-sv-open.c
drivers/net/wireless/iwlwifi/iwl-testmode.h

index 21b2fbb4dc3be4bf6f6b90af8c368413a30798a7..3c9762628760b4d07fe9ee147216d30fe33ce9d0 100644 (file)
@@ -463,6 +463,21 @@ static int iwl_testmode_driver(struct ieee80211_hw *hw, struct nlattr **tb)
                                "Error starting the device: %d\n", status);
                break;
 
+       case IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW:
+               iwl_scan_cancel_timeout(priv, 200);
+               iwl_trans_stop_device(trans(priv));
+               status = iwlagn_load_ucode_wait_alive(priv, IWL_UCODE_WOWLAN);
+               if (status) {
+                       IWL_DEBUG_INFO(priv,
+                               "Error loading WOWLAN ucode: %d\n", status);
+                       break;
+               }
+               status = iwl_alive_start(priv);
+               if (status)
+                       IWL_DEBUG_INFO(priv,
+                               "Error starting the device: %d\n", status);
+               break;
+
        case IWL_TM_CMD_APP2DEV_GET_EEPROM:
                if (priv->eeprom) {
                        skb = cfg80211_testmode_alloc_reply_skb(hw->wiphy,
@@ -826,6 +841,7 @@ int iwlagn_mac_testmode_cmd(struct ieee80211_hw *hw, void *data, int len)
        case IWL_TM_CMD_APP2DEV_LOAD_RUNTIME_FW:
        case IWL_TM_CMD_APP2DEV_GET_EEPROM:
        case IWL_TM_CMD_APP2DEV_FIXRATE_REQ:
+       case IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW:
                IWL_DEBUG_INFO(priv, "testmode cmd to driver\n");
                result = iwl_testmode_driver(hw, tb);
                break;
index e20f3d390271e93708f4106c7cb979b06ef764ae..deedd27c5f3d7a0a418fa5624a97e762098df661 100644 (file)
  * @IWL_TM_CMD_APP2DEV_DUMP_SRAM:
  *     commands from user applicaiton to read data in sram
  *
+ * @IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW: load Weak On Wireless LAN uCode image
+ *
  */
 enum iwl_tm_cmd_t {
        IWL_TM_CMD_APP2DEV_UCODE                = 1,
@@ -140,7 +142,8 @@ enum iwl_tm_cmd_t {
        IWL_TM_CMD_APP2DEV_INDIRECT_REG_WRITE32 = 19,
        IWL_TM_CMD_APP2DEV_READ_SRAM            = 20,
        IWL_TM_CMD_APP2DEV_DUMP_SRAM            = 21,
-       IWL_TM_CMD_MAX                          = 22,
+       IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW       = 22,
+       IWL_TM_CMD_MAX                          = 23,
 };
 
 /*