Merge tag 'iwlwifi-next-for-kalle-2017-11-29' of git://git.kernel.org/pub/scm/linux...
authorKalle Valo <kvalo@codeaurora.org>
Sat, 2 Dec 2017 13:20:21 +0000 (15:20 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 2 Dec 2017 13:22:54 +0000 (15:22 +0200)
First batch of iwlwifi updates for v4.16

* Rename the temporary name A000 to 22000;
* Change in the way we print the firmware version;
* Remove some unused code;
* Other small improvements;

kvalo:

There were conflicts, I fixed them with taking into account commit c2c48ddfc8b0
("iwlwifi: fix firmware names for 9000 and A000 series hw"):

CONFLICT (content): Merge conflict in drivers/net/wireless/intel/iwlwifi/iwl-config.h
CONFLICT (modify/delete): drivers/net/wireless/intel/iwlwifi/cfg/a000.c deleted in ca495785063c428641cc6df8888afd2587ca6677 and modified in HEAD. Version HEAD of drivers/net/wireless/intel/iwlwifi/cfg/a000.c left in tree.

1  2 
drivers/net/wireless/intel/iwlwifi/cfg/22000.c
drivers/net/wireless/intel/iwlwifi/fw/file.h
drivers/net/wireless/intel/iwlwifi/iwl-config.h
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
drivers/net/wireless/intel/iwlwifi/mvm/tx.c
drivers/net/wireless/intel/iwlwifi/pcie/drv.c
drivers/net/wireless/intel/iwlwifi/pcie/trans.c

index 0000000,7c08711..28f6e63
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,216 +1,216 @@@
 -      IWL_22000_HR_FW_PRE "-" __stringify(api) ".ucode"
+ /******************************************************************************
+  *
+  * This file is provided under a dual BSD/GPLv2 license.  When using or
+  * redistributing this file, you may do so under either license.
+  *
+  * GPL LICENSE SUMMARY
+  *
+  * Copyright(c) 2015-2017 Intel Deutschland GmbH
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of version 2 of the GNU General Public License as
+  * published by the Free Software Foundation.
+  *
+  * This program is distributed in the hope that it will be useful, but
+  * WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * General Public License for more details.
+  *
+  * BSD LICENSE
+  *
+  * Copyright(c) 2015-2017 Intel Deutschland GmbH
+  * All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  *
+  *  * Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  *  * Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in
+  *    the documentation and/or other materials provided with the
+  *    distribution.
+  *  * Neither the name Intel Corporation nor the names of its
+  *    contributors may be used to endorse or promote products derived
+  *    from this software without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  *****************************************************************************/
+ #include <linux/module.h>
+ #include <linux/stringify.h>
+ #include "iwl-config.h"
+ #include "iwl-agn-hw.h"
+ /* Highest firmware API version supported */
+ #define IWL_22000_UCODE_API_MAX       34
+ /* Lowest firmware API version supported */
+ #define IWL_22000_UCODE_API_MIN       24
+ /* NVM versions */
+ #define IWL_22000_NVM_VERSION         0x0a1d
+ #define IWL_22000_TX_POWER_VERSION    0xffff /* meaningless */
+ /* Memory offsets and lengths */
+ #define IWL_22000_DCCM_OFFSET         0x800000 /* LMAC1 */
+ #define IWL_22000_DCCM_LEN            0x10000 /* LMAC1 */
+ #define IWL_22000_DCCM2_OFFSET                0x880000
+ #define IWL_22000_DCCM2_LEN           0x8000
+ #define IWL_22000_SMEM_OFFSET         0x400000
+ #define IWL_22000_SMEM_LEN            0xD0000
+ #define IWL_22000_JF_FW_PRE   "iwlwifi-Qu-a0-jf-b0-"
+ #define IWL_22000_HR_FW_PRE   "iwlwifi-Qu-a0-hr-a0-"
+ #define IWL_22000_HR_CDB_FW_PRE       "iwlwifi-QuIcp-z0-hrcdb-a0-"
+ #define IWL_22000_HR_F0_FW_PRE        "iwlwifi-QuQnj-f0-hr-a0-"
+ #define IWL_22000_JF_B0_FW_PRE        "iwlwifi-QuQnj-a0-jf-b0-"
+ #define IWL_22000_HR_A0_FW_PRE        "iwlwifi-QuQnj-a0-hr-a0-"
+ #define IWL_22000_HR_MODULE_FIRMWARE(api) \
 -      IWL_22000_JF_FW_PRE "-" __stringify(api) ".ucode"
++      IWL_22000_HR_FW_PRE __stringify(api) ".ucode"
+ #define IWL_22000_JF_MODULE_FIRMWARE(api) \
 -      IWL_22000_HR_F0_FW_PRE "-" __stringify(api) ".ucode"
++      IWL_22000_JF_FW_PRE __stringify(api) ".ucode"
+ #define IWL_22000_HR_F0_QNJ_MODULE_FIRMWARE(api) \
 -      IWL_22000_JF_B0_FW_PRE "-" __stringify(api) ".ucode"
++      IWL_22000_HR_F0_FW_PRE __stringify(api) ".ucode"
+ #define IWL_22000_JF_B0_QNJ_MODULE_FIRMWARE(api) \
 -      IWL_22000_HR_A0_FW_PRE "-" __stringify(api) ".ucode"
++      IWL_22000_JF_B0_FW_PRE __stringify(api) ".ucode"
+ #define IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(api) \
++      IWL_22000_HR_A0_FW_PRE __stringify(api) ".ucode"
+ #define NVM_HW_SECTION_NUM_FAMILY_22000               10
+ static const struct iwl_base_params iwl_22000_base_params = {
+       .eeprom_size = OTP_LOW_IMAGE_SIZE_FAMILY_22000,
+       .num_of_queues = 512,
+       .shadow_ram_support = true,
+       .led_compensation = 57,
+       .wd_timeout = IWL_LONG_WD_TIMEOUT,
+       .max_event_log_size = 512,
+       .shadow_reg_enable = true,
+       .pcie_l1_allowed = true,
+ };
+ static const struct iwl_ht_params iwl_22000_ht_params = {
+       .stbc = true,
+       .ldpc = true,
+       .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ),
+ };
+ #define IWL_DEVICE_22000                                              \
+       .ucode_api_max = IWL_22000_UCODE_API_MAX,                       \
+       .ucode_api_min = IWL_22000_UCODE_API_MIN,                       \
+       .device_family = IWL_DEVICE_FAMILY_22000,                       \
+       .max_inst_size = IWL60_RTC_INST_SIZE,                           \
+       .max_data_size = IWL60_RTC_DATA_SIZE,                           \
+       .base_params = &iwl_22000_base_params,                          \
+       .led_mode = IWL_LED_RF_STATE,                                   \
+       .nvm_hw_section_num = NVM_HW_SECTION_NUM_FAMILY_22000,          \
+       .non_shared_ant = ANT_A,                                        \
+       .dccm_offset = IWL_22000_DCCM_OFFSET,                           \
+       .dccm_len = IWL_22000_DCCM_LEN,                                 \
+       .dccm2_offset = IWL_22000_DCCM2_OFFSET,                         \
+       .dccm2_len = IWL_22000_DCCM2_LEN,                               \
+       .smem_offset = IWL_22000_SMEM_OFFSET,                           \
+       .smem_len = IWL_22000_SMEM_LEN,                                 \
+       .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,           \
+       .apmg_not_supported = true,                                     \
+       .mq_rx_supported = true,                                        \
+       .vht_mu_mimo_supported = true,                                  \
+       .mac_addr_from_csr = true,                                      \
+       .use_tfh = true,                                                \
+       .rf_id = true,                                                  \
+       .gen2 = true,                                                   \
+       .nvm_type = IWL_NVM_EXT,                                        \
+       .dbgc_supported = true,                                         \
+       .tx_cmd_queue_size = 32,                                        \
+       .min_umac_error_event_table = 0x400000
+ const struct iwl_cfg iwl22000_2ac_cfg_hr = {
+       .name = "Intel(R) Dual Band Wireless AC 22000",
+       .fw_name_pre = IWL_22000_HR_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb = {
+       .name = "Intel(R) Dual Band Wireless AC 22000",
+       .fw_name_pre = IWL_22000_HR_CDB_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+       .cdb = true,
+ };
+ const struct iwl_cfg iwl22000_2ac_cfg_jf = {
+       .name = "Intel(R) Dual Band Wireless AC 22000",
+       .fw_name_pre = IWL_22000_JF_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ax_cfg_hr = {
+       .name = "Intel(R) Dual Band Wireless AX 22000",
+       .fw_name_pre = IWL_22000_HR_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_f0 = {
+       .name = "Intel(R) Dual Band Wireless AX 22000",
+       .fw_name_pre = IWL_22000_HR_F0_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ax_cfg_qnj_jf_b0 = {
+       .name = "Intel(R) Dual Band Wireless AX 22000",
+       .fw_name_pre = IWL_22000_JF_B0_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0 = {
+       .name = "Intel(R) Dual Band Wireless AX 22000",
+       .fw_name_pre = IWL_22000_HR_A0_FW_PRE,
+       IWL_DEVICE_22000,
+       .ht_params = &iwl_22000_ht_params,
+       .nvm_ver = IWL_22000_NVM_VERSION,
+       .nvm_calib_ver = IWL_22000_TX_POWER_VERSION,
+       .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
+ };
+ MODULE_FIRMWARE(IWL_22000_HR_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL_22000_JF_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL_22000_HR_F0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL_22000_JF_B0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
+ MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
@@@ -264,10 -262,8 +262,9 @@@ enum iwl_ucode_tlv_api 
        IWL_UCODE_TLV_API_STA_TYPE              = (__force iwl_ucode_tlv_api_t)30,
        IWL_UCODE_TLV_API_NAN2_VER2             = (__force iwl_ucode_tlv_api_t)31,
        /* API Set 1 */
 +      IWL_UCODE_TLV_API_ADAPTIVE_DWELL        = (__force iwl_ucode_tlv_api_t)32,
        IWL_UCODE_TLV_API_NEW_BEACON_TEMPLATE   = (__force iwl_ucode_tlv_api_t)34,
        IWL_UCODE_TLV_API_NEW_RX_STATS          = (__force iwl_ucode_tlv_api_t)35,
-       IWL_UCODE_TLV_API_COEX_ATS_EXTERNAL     = (__force iwl_ucode_tlv_api_t)37,
        IWL_UCODE_TLV_API_QUOTA_LOW_LATENCY     = (__force iwl_ucode_tlv_api_t)38,
  
        NUM_IWL_UCODE_TLV_API
@@@ -473,17 -472,13 +473,17 @@@ extern const struct iwl_cfg iwl9260_2ac
  extern const struct iwl_cfg iwl9270_2ac_cfg;
  extern const struct iwl_cfg iwl9460_2ac_cfg;
  extern const struct iwl_cfg iwl9560_2ac_cfg;
- extern const struct iwl_cfg iwla000_2ac_cfg_hr;
- extern const struct iwl_cfg iwla000_2ac_cfg_hr_cdb;
- extern const struct iwl_cfg iwla000_2ac_cfg_jf;
- extern const struct iwl_cfg iwla000_2ax_cfg_hr;
- extern const struct iwl_cfg iwla000_2ax_cfg_qnj_hr_f0;
- extern const struct iwl_cfg iwla000_2ax_cfg_qnj_jf_b0;
- extern const struct iwl_cfg iwla000_2ax_cfg_qnj_hr_a0;
 +extern const struct iwl_cfg iwl9460_2ac_cfg_soc;
 +extern const struct iwl_cfg iwl9461_2ac_cfg_soc;
 +extern const struct iwl_cfg iwl9462_2ac_cfg_soc;
 +extern const struct iwl_cfg iwl9560_2ac_cfg_soc;
+ extern const struct iwl_cfg iwl22000_2ac_cfg_hr;
+ extern const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb;
+ extern const struct iwl_cfg iwl22000_2ac_cfg_jf;
+ extern const struct iwl_cfg iwl22000_2ax_cfg_hr;
+ extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_f0;
+ extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_jf_b0;
+ extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0;
  #endif /* CONFIG_IWLMVM */
  
  #endif /* __IWL_CONFIG_H__ */
@@@ -552,118 -548,48 +552,118 @@@ static const struct pci_device_id iwl_h
        {IWL_PCI_DEVICE(0x271B, 0x0010, iwl9160_2ac_cfg)},
        {IWL_PCI_DEVICE(0x271B, 0x0014, iwl9160_2ac_cfg)},
        {IWL_PCI_DEVICE(0x271B, 0x0210, iwl9160_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x0034, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x0038, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x003C, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0000, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0034, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0038, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x003C, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0310, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0410, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0510, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0610, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0710, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x0034, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x0038, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x003C, iwl9560_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg)},
 -      {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x271B, 0x0214, iwl9260_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0034, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0038, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x003C, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0060, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0230, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0234, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0238, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x023C, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x2720, 0x4030, iwl9560_2ac_cfg)},
 +      {IWL_PCI_DEVICE(0x2720, 0x40A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x30DC, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0038, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x003C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0230, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0234, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0238, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x023C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x4030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x4034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x31DC, 0x40A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x34F0, 0x0030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x34F0, 0x0034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x34F0, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0000, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0038, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x003C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0230, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0234, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0238, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x023C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0310, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0410, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0510, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0610, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0710, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x4030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x4034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0x9DF0, 0x40A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0038, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x003C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0064, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x00A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x00A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0230, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0234, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0238, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x023C, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0260, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x0264, iwl9461_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x02A0, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x02A4, iwl9462_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x4030, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x4034, iwl9560_2ac_cfg_soc)},
 +      {IWL_PCI_DEVICE(0xA370, 0x40A4, iwl9462_2ac_cfg_soc)},
  
- /* a000 Series */
-       {IWL_PCI_DEVICE(0x2720, 0x0A10, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x34F0, 0x0310, iwla000_2ac_cfg_jf)},
-       {IWL_PCI_DEVICE(0x2720, 0x0000, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x34F0, 0x0070, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x2720, 0x0078, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x2720, 0x0070, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x2720, 0x0030, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x2720, 0x1080, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x2720, 0x0090, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x2720, 0x0310, iwla000_2ac_cfg_hr_cdb)},
-       {IWL_PCI_DEVICE(0x40C0, 0x0000, iwla000_2ax_cfg_hr)},
-       {IWL_PCI_DEVICE(0x40C0, 0x0A10, iwla000_2ax_cfg_hr)},
+ /* 22000 Series */
+       {IWL_PCI_DEVICE(0x2720, 0x0A10, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x34F0, 0x0310, iwl22000_2ac_cfg_jf)},
+       {IWL_PCI_DEVICE(0x2720, 0x0000, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x34F0, 0x0070, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x2720, 0x0078, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x2720, 0x0070, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x2720, 0x0030, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x2720, 0x1080, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x2720, 0x0090, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x2720, 0x0310, iwl22000_2ac_cfg_hr_cdb)},
+       {IWL_PCI_DEVICE(0x40C0, 0x0000, iwl22000_2ax_cfg_hr)},
+       {IWL_PCI_DEVICE(0x40C0, 0x0A10, iwl22000_2ax_cfg_hr)},
  
  #endif /* CONFIG_IWLMVM */