root/drivers/net/wireless/intel/iwlwifi/pcie/drv.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. iwl_pci_probe
  2. iwl_pci_remove
  3. iwl_pci_suspend
  4. iwl_pci_resume
  5. iwl_pci_register_driver
  6. iwl_pci_unregister_driver

   1 /******************************************************************************
   2  *
   3  * This file is provided under a dual BSD/GPLv2 license.  When using or
   4  * redistributing this file, you may do so under either license.
   5  *
   6  * GPL LICENSE SUMMARY
   7  *
   8  * Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved.
   9  * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
  10  * Copyright(c) 2016-2017 Intel Deutschland GmbH
  11  * Copyright(c) 2018 - 2019 Intel Corporation
  12  *
  13  * This program is free software; you can redistribute it and/or modify
  14  * it under the terms of version 2 of the GNU General Public License as
  15  * published by the Free Software Foundation.
  16  *
  17  * This program is distributed in the hope that it will be useful, but
  18  * WITHOUT ANY WARRANTY; without even the implied warranty of
  19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  20  * General Public License for more details.
  21  *
  22  * The full GNU General Public License is included in this distribution
  23  * in the file called COPYING.
  24  *
  25  * Contact Information:
  26  *  Intel Linux Wireless <linuxwifi@intel.com>
  27  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
  28  *
  29  * BSD LICENSE
  30  *
  31  * Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
  32  * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
  33  * All rights reserved.
  34  * Copyright(c) 2017 Intel Deutschland GmbH
  35  * Copyright(c) 2018 - 2019 Intel Corporation
  36  *
  37  * Redistribution and use in source and binary forms, with or without
  38  * modification, are permitted provided that the following conditions
  39  * are met:
  40  *
  41  *  * Redistributions of source code must retain the above copyright
  42  *    notice, this list of conditions and the following disclaimer.
  43  *  * Redistributions in binary form must reproduce the above copyright
  44  *    notice, this list of conditions and the following disclaimer in
  45  *    the documentation and/or other materials provided with the
  46  *    distribution.
  47  *  * Neither the name Intel Corporation nor the names of its
  48  *    contributors may be used to endorse or promote products derived
  49  *    from this software without specific prior written permission.
  50  *
  51  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  52  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  53  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  54  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  55  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  56  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  57  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  58  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  59  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  60  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  61  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  62  *
  63  *****************************************************************************/
  64 
  65 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
  66 
  67 #include <linux/module.h>
  68 #include <linux/pci.h>
  69 #include <linux/acpi.h>
  70 
  71 #include "fw/acpi.h"
  72 
  73 #include "iwl-trans.h"
  74 #include "iwl-drv.h"
  75 #include "iwl-prph.h"
  76 #include "internal.h"
  77 
  78 #define IWL_PCI_DEVICE(dev, subdev, cfg) \
  79         .vendor = PCI_VENDOR_ID_INTEL,  .device = (dev), \
  80         .subvendor = PCI_ANY_ID, .subdevice = (subdev), \
  81         .driver_data = (kernel_ulong_t)&(cfg)
  82 
  83 /* Hardware specific file defines the PCI IDs table for that hardware module */
  84 static const struct pci_device_id iwl_hw_card_ids[] = {
  85 #if IS_ENABLED(CONFIG_IWLDVM)
  86         {IWL_PCI_DEVICE(0x4232, 0x1201, iwl5100_agn_cfg)}, /* Mini Card */
  87         {IWL_PCI_DEVICE(0x4232, 0x1301, iwl5100_agn_cfg)}, /* Half Mini Card */
  88         {IWL_PCI_DEVICE(0x4232, 0x1204, iwl5100_agn_cfg)}, /* Mini Card */
  89         {IWL_PCI_DEVICE(0x4232, 0x1304, iwl5100_agn_cfg)}, /* Half Mini Card */
  90         {IWL_PCI_DEVICE(0x4232, 0x1205, iwl5100_bgn_cfg)}, /* Mini Card */
  91         {IWL_PCI_DEVICE(0x4232, 0x1305, iwl5100_bgn_cfg)}, /* Half Mini Card */
  92         {IWL_PCI_DEVICE(0x4232, 0x1206, iwl5100_abg_cfg)}, /* Mini Card */
  93         {IWL_PCI_DEVICE(0x4232, 0x1306, iwl5100_abg_cfg)}, /* Half Mini Card */
  94         {IWL_PCI_DEVICE(0x4232, 0x1221, iwl5100_agn_cfg)}, /* Mini Card */
  95         {IWL_PCI_DEVICE(0x4232, 0x1321, iwl5100_agn_cfg)}, /* Half Mini Card */
  96         {IWL_PCI_DEVICE(0x4232, 0x1224, iwl5100_agn_cfg)}, /* Mini Card */
  97         {IWL_PCI_DEVICE(0x4232, 0x1324, iwl5100_agn_cfg)}, /* Half Mini Card */
  98         {IWL_PCI_DEVICE(0x4232, 0x1225, iwl5100_bgn_cfg)}, /* Mini Card */
  99         {IWL_PCI_DEVICE(0x4232, 0x1325, iwl5100_bgn_cfg)}, /* Half Mini Card */
 100         {IWL_PCI_DEVICE(0x4232, 0x1226, iwl5100_abg_cfg)}, /* Mini Card */
 101         {IWL_PCI_DEVICE(0x4232, 0x1326, iwl5100_abg_cfg)}, /* Half Mini Card */
 102         {IWL_PCI_DEVICE(0x4237, 0x1211, iwl5100_agn_cfg)}, /* Mini Card */
 103         {IWL_PCI_DEVICE(0x4237, 0x1311, iwl5100_agn_cfg)}, /* Half Mini Card */
 104         {IWL_PCI_DEVICE(0x4237, 0x1214, iwl5100_agn_cfg)}, /* Mini Card */
 105         {IWL_PCI_DEVICE(0x4237, 0x1314, iwl5100_agn_cfg)}, /* Half Mini Card */
 106         {IWL_PCI_DEVICE(0x4237, 0x1215, iwl5100_bgn_cfg)}, /* Mini Card */
 107         {IWL_PCI_DEVICE(0x4237, 0x1315, iwl5100_bgn_cfg)}, /* Half Mini Card */
 108         {IWL_PCI_DEVICE(0x4237, 0x1216, iwl5100_abg_cfg)}, /* Mini Card */
 109         {IWL_PCI_DEVICE(0x4237, 0x1316, iwl5100_abg_cfg)}, /* Half Mini Card */
 110 
 111 /* 5300 Series WiFi */
 112         {IWL_PCI_DEVICE(0x4235, 0x1021, iwl5300_agn_cfg)}, /* Mini Card */
 113         {IWL_PCI_DEVICE(0x4235, 0x1121, iwl5300_agn_cfg)}, /* Half Mini Card */
 114         {IWL_PCI_DEVICE(0x4235, 0x1024, iwl5300_agn_cfg)}, /* Mini Card */
 115         {IWL_PCI_DEVICE(0x4235, 0x1124, iwl5300_agn_cfg)}, /* Half Mini Card */
 116         {IWL_PCI_DEVICE(0x4235, 0x1001, iwl5300_agn_cfg)}, /* Mini Card */
 117         {IWL_PCI_DEVICE(0x4235, 0x1101, iwl5300_agn_cfg)}, /* Half Mini Card */
 118         {IWL_PCI_DEVICE(0x4235, 0x1004, iwl5300_agn_cfg)}, /* Mini Card */
 119         {IWL_PCI_DEVICE(0x4235, 0x1104, iwl5300_agn_cfg)}, /* Half Mini Card */
 120         {IWL_PCI_DEVICE(0x4236, 0x1011, iwl5300_agn_cfg)}, /* Mini Card */
 121         {IWL_PCI_DEVICE(0x4236, 0x1111, iwl5300_agn_cfg)}, /* Half Mini Card */
 122         {IWL_PCI_DEVICE(0x4236, 0x1014, iwl5300_agn_cfg)}, /* Mini Card */
 123         {IWL_PCI_DEVICE(0x4236, 0x1114, iwl5300_agn_cfg)}, /* Half Mini Card */
 124 
 125 /* 5350 Series WiFi/WiMax */
 126         {IWL_PCI_DEVICE(0x423A, 0x1001, iwl5350_agn_cfg)}, /* Mini Card */
 127         {IWL_PCI_DEVICE(0x423A, 0x1021, iwl5350_agn_cfg)}, /* Mini Card */
 128         {IWL_PCI_DEVICE(0x423B, 0x1011, iwl5350_agn_cfg)}, /* Mini Card */
 129 
 130 /* 5150 Series Wifi/WiMax */
 131         {IWL_PCI_DEVICE(0x423C, 0x1201, iwl5150_agn_cfg)}, /* Mini Card */
 132         {IWL_PCI_DEVICE(0x423C, 0x1301, iwl5150_agn_cfg)}, /* Half Mini Card */
 133         {IWL_PCI_DEVICE(0x423C, 0x1206, iwl5150_abg_cfg)}, /* Mini Card */
 134         {IWL_PCI_DEVICE(0x423C, 0x1306, iwl5150_abg_cfg)}, /* Half Mini Card */
 135         {IWL_PCI_DEVICE(0x423C, 0x1221, iwl5150_agn_cfg)}, /* Mini Card */
 136         {IWL_PCI_DEVICE(0x423C, 0x1321, iwl5150_agn_cfg)}, /* Half Mini Card */
 137         {IWL_PCI_DEVICE(0x423C, 0x1326, iwl5150_abg_cfg)}, /* Half Mini Card */
 138 
 139         {IWL_PCI_DEVICE(0x423D, 0x1211, iwl5150_agn_cfg)}, /* Mini Card */
 140         {IWL_PCI_DEVICE(0x423D, 0x1311, iwl5150_agn_cfg)}, /* Half Mini Card */
 141         {IWL_PCI_DEVICE(0x423D, 0x1216, iwl5150_abg_cfg)}, /* Mini Card */
 142         {IWL_PCI_DEVICE(0x423D, 0x1316, iwl5150_abg_cfg)}, /* Half Mini Card */
 143 
 144 /* 6x00 Series */
 145         {IWL_PCI_DEVICE(0x422B, 0x1101, iwl6000_3agn_cfg)},
 146         {IWL_PCI_DEVICE(0x422B, 0x1108, iwl6000_3agn_cfg)},
 147         {IWL_PCI_DEVICE(0x422B, 0x1121, iwl6000_3agn_cfg)},
 148         {IWL_PCI_DEVICE(0x422B, 0x1128, iwl6000_3agn_cfg)},
 149         {IWL_PCI_DEVICE(0x422C, 0x1301, iwl6000i_2agn_cfg)},
 150         {IWL_PCI_DEVICE(0x422C, 0x1306, iwl6000i_2abg_cfg)},
 151         {IWL_PCI_DEVICE(0x422C, 0x1307, iwl6000i_2bg_cfg)},
 152         {IWL_PCI_DEVICE(0x422C, 0x1321, iwl6000i_2agn_cfg)},
 153         {IWL_PCI_DEVICE(0x422C, 0x1326, iwl6000i_2abg_cfg)},
 154         {IWL_PCI_DEVICE(0x4238, 0x1111, iwl6000_3agn_cfg)},
 155         {IWL_PCI_DEVICE(0x4238, 0x1118, iwl6000_3agn_cfg)},
 156         {IWL_PCI_DEVICE(0x4239, 0x1311, iwl6000i_2agn_cfg)},
 157         {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_2abg_cfg)},
 158 
 159 /* 6x05 Series */
 160         {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6005_2agn_cfg)},
 161         {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6005_2abg_cfg)},
 162         {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6005_2bg_cfg)},
 163         {IWL_PCI_DEVICE(0x0082, 0x1308, iwl6005_2agn_cfg)},
 164         {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6005_2agn_cfg)},
 165         {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6005_2abg_cfg)},
 166         {IWL_PCI_DEVICE(0x0082, 0x1328, iwl6005_2agn_cfg)},
 167         {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6005_2agn_cfg)},
 168         {IWL_PCI_DEVICE(0x0085, 0x1318, iwl6005_2agn_cfg)},
 169         {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6005_2abg_cfg)},
 170         {IWL_PCI_DEVICE(0x0082, 0xC020, iwl6005_2agn_sff_cfg)},
 171         {IWL_PCI_DEVICE(0x0085, 0xC220, iwl6005_2agn_sff_cfg)},
 172         {IWL_PCI_DEVICE(0x0085, 0xC228, iwl6005_2agn_sff_cfg)},
 173         {IWL_PCI_DEVICE(0x0082, 0x4820, iwl6005_2agn_d_cfg)},
 174         {IWL_PCI_DEVICE(0x0082, 0x1304, iwl6005_2agn_mow1_cfg)},/* low 5GHz active */
 175         {IWL_PCI_DEVICE(0x0082, 0x1305, iwl6005_2agn_mow2_cfg)},/* high 5GHz active */
 176 
 177 /* 6x30 Series */
 178         {IWL_PCI_DEVICE(0x008A, 0x5305, iwl1030_bgn_cfg)},
 179         {IWL_PCI_DEVICE(0x008A, 0x5307, iwl1030_bg_cfg)},
 180         {IWL_PCI_DEVICE(0x008A, 0x5325, iwl1030_bgn_cfg)},
 181         {IWL_PCI_DEVICE(0x008A, 0x5327, iwl1030_bg_cfg)},
 182         {IWL_PCI_DEVICE(0x008B, 0x5315, iwl1030_bgn_cfg)},
 183         {IWL_PCI_DEVICE(0x008B, 0x5317, iwl1030_bg_cfg)},
 184         {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6030_2agn_cfg)},
 185         {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6030_2bgn_cfg)},
 186         {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6030_2abg_cfg)},
 187         {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6030_2agn_cfg)},
 188         {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6030_2bgn_cfg)},
 189         {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6030_2abg_cfg)},
 190         {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6030_2bg_cfg)},
 191         {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6030_2agn_cfg)},
 192         {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6030_2bgn_cfg)},
 193         {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6030_2abg_cfg)},
 194 
 195 /* 6x50 WiFi/WiMax Series */
 196         {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)},
 197         {IWL_PCI_DEVICE(0x0087, 0x1306, iwl6050_2abg_cfg)},
 198         {IWL_PCI_DEVICE(0x0087, 0x1321, iwl6050_2agn_cfg)},
 199         {IWL_PCI_DEVICE(0x0087, 0x1326, iwl6050_2abg_cfg)},
 200         {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_2agn_cfg)},
 201         {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)},
 202 
 203 /* 6150 WiFi/WiMax Series */
 204         {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6150_bgn_cfg)},
 205         {IWL_PCI_DEVICE(0x0885, 0x1307, iwl6150_bg_cfg)},
 206         {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6150_bgn_cfg)},
 207         {IWL_PCI_DEVICE(0x0885, 0x1327, iwl6150_bg_cfg)},
 208         {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6150_bgn_cfg)},
 209         {IWL_PCI_DEVICE(0x0886, 0x1317, iwl6150_bg_cfg)},
 210 
 211 /* 1000 Series WiFi */
 212         {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)},
 213         {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_bgn_cfg)},
 214         {IWL_PCI_DEVICE(0x0083, 0x1225, iwl1000_bgn_cfg)},
 215         {IWL_PCI_DEVICE(0x0083, 0x1325, iwl1000_bgn_cfg)},
 216         {IWL_PCI_DEVICE(0x0084, 0x1215, iwl1000_bgn_cfg)},
 217         {IWL_PCI_DEVICE(0x0084, 0x1315, iwl1000_bgn_cfg)},
 218         {IWL_PCI_DEVICE(0x0083, 0x1206, iwl1000_bg_cfg)},
 219         {IWL_PCI_DEVICE(0x0083, 0x1306, iwl1000_bg_cfg)},
 220         {IWL_PCI_DEVICE(0x0083, 0x1226, iwl1000_bg_cfg)},
 221         {IWL_PCI_DEVICE(0x0083, 0x1326, iwl1000_bg_cfg)},
 222         {IWL_PCI_DEVICE(0x0084, 0x1216, iwl1000_bg_cfg)},
 223         {IWL_PCI_DEVICE(0x0084, 0x1316, iwl1000_bg_cfg)},
 224 
 225 /* 100 Series WiFi */
 226         {IWL_PCI_DEVICE(0x08AE, 0x1005, iwl100_bgn_cfg)},
 227         {IWL_PCI_DEVICE(0x08AE, 0x1007, iwl100_bg_cfg)},
 228         {IWL_PCI_DEVICE(0x08AF, 0x1015, iwl100_bgn_cfg)},
 229         {IWL_PCI_DEVICE(0x08AF, 0x1017, iwl100_bg_cfg)},
 230         {IWL_PCI_DEVICE(0x08AE, 0x1025, iwl100_bgn_cfg)},
 231         {IWL_PCI_DEVICE(0x08AE, 0x1027, iwl100_bg_cfg)},
 232 
 233 /* 130 Series WiFi */
 234         {IWL_PCI_DEVICE(0x0896, 0x5005, iwl130_bgn_cfg)},
 235         {IWL_PCI_DEVICE(0x0896, 0x5007, iwl130_bg_cfg)},
 236         {IWL_PCI_DEVICE(0x0897, 0x5015, iwl130_bgn_cfg)},
 237         {IWL_PCI_DEVICE(0x0897, 0x5017, iwl130_bg_cfg)},
 238         {IWL_PCI_DEVICE(0x0896, 0x5025, iwl130_bgn_cfg)},
 239         {IWL_PCI_DEVICE(0x0896, 0x5027, iwl130_bg_cfg)},
 240 
 241 /* 2x00 Series */
 242         {IWL_PCI_DEVICE(0x0890, 0x4022, iwl2000_2bgn_cfg)},
 243         {IWL_PCI_DEVICE(0x0891, 0x4222, iwl2000_2bgn_cfg)},
 244         {IWL_PCI_DEVICE(0x0890, 0x4422, iwl2000_2bgn_cfg)},
 245         {IWL_PCI_DEVICE(0x0890, 0x4822, iwl2000_2bgn_d_cfg)},
 246 
 247 /* 2x30 Series */
 248         {IWL_PCI_DEVICE(0x0887, 0x4062, iwl2030_2bgn_cfg)},
 249         {IWL_PCI_DEVICE(0x0888, 0x4262, iwl2030_2bgn_cfg)},
 250         {IWL_PCI_DEVICE(0x0887, 0x4462, iwl2030_2bgn_cfg)},
 251 
 252 /* 6x35 Series */
 253         {IWL_PCI_DEVICE(0x088E, 0x4060, iwl6035_2agn_cfg)},
 254         {IWL_PCI_DEVICE(0x088E, 0x406A, iwl6035_2agn_sff_cfg)},
 255         {IWL_PCI_DEVICE(0x088F, 0x4260, iwl6035_2agn_cfg)},
 256         {IWL_PCI_DEVICE(0x088F, 0x426A, iwl6035_2agn_sff_cfg)},
 257         {IWL_PCI_DEVICE(0x088E, 0x4460, iwl6035_2agn_cfg)},
 258         {IWL_PCI_DEVICE(0x088E, 0x446A, iwl6035_2agn_sff_cfg)},
 259         {IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)},
 260         {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)},
 261 
 262 /* 105 Series */
 263         {IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)},
 264         {IWL_PCI_DEVICE(0x0895, 0x0222, iwl105_bgn_cfg)},
 265         {IWL_PCI_DEVICE(0x0894, 0x0422, iwl105_bgn_cfg)},
 266         {IWL_PCI_DEVICE(0x0894, 0x0822, iwl105_bgn_d_cfg)},
 267 
 268 /* 135 Series */
 269         {IWL_PCI_DEVICE(0x0892, 0x0062, iwl135_bgn_cfg)},
 270         {IWL_PCI_DEVICE(0x0893, 0x0262, iwl135_bgn_cfg)},
 271         {IWL_PCI_DEVICE(0x0892, 0x0462, iwl135_bgn_cfg)},
 272 #endif /* CONFIG_IWLDVM */
 273 
 274 #if IS_ENABLED(CONFIG_IWLMVM)
 275 /* 7260 Series */
 276         {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)},
 277         {IWL_PCI_DEVICE(0x08B1, 0x4072, iwl7260_2ac_cfg)},
 278         {IWL_PCI_DEVICE(0x08B1, 0x4170, iwl7260_2ac_cfg)},
 279         {IWL_PCI_DEVICE(0x08B1, 0x4C60, iwl7260_2ac_cfg)},
 280         {IWL_PCI_DEVICE(0x08B1, 0x4C70, iwl7260_2ac_cfg)},
 281         {IWL_PCI_DEVICE(0x08B1, 0x4060, iwl7260_2n_cfg)},
 282         {IWL_PCI_DEVICE(0x08B1, 0x406A, iwl7260_2n_cfg)},
 283         {IWL_PCI_DEVICE(0x08B1, 0x4160, iwl7260_2n_cfg)},
 284         {IWL_PCI_DEVICE(0x08B1, 0x4062, iwl7260_n_cfg)},
 285         {IWL_PCI_DEVICE(0x08B1, 0x4162, iwl7260_n_cfg)},
 286         {IWL_PCI_DEVICE(0x08B2, 0x4270, iwl7260_2ac_cfg)},
 287         {IWL_PCI_DEVICE(0x08B2, 0x4272, iwl7260_2ac_cfg)},
 288         {IWL_PCI_DEVICE(0x08B2, 0x4260, iwl7260_2n_cfg)},
 289         {IWL_PCI_DEVICE(0x08B2, 0x426A, iwl7260_2n_cfg)},
 290         {IWL_PCI_DEVICE(0x08B2, 0x4262, iwl7260_n_cfg)},
 291         {IWL_PCI_DEVICE(0x08B1, 0x4470, iwl7260_2ac_cfg)},
 292         {IWL_PCI_DEVICE(0x08B1, 0x4472, iwl7260_2ac_cfg)},
 293         {IWL_PCI_DEVICE(0x08B1, 0x4460, iwl7260_2n_cfg)},
 294         {IWL_PCI_DEVICE(0x08B1, 0x446A, iwl7260_2n_cfg)},
 295         {IWL_PCI_DEVICE(0x08B1, 0x4462, iwl7260_n_cfg)},
 296         {IWL_PCI_DEVICE(0x08B1, 0x4870, iwl7260_2ac_cfg)},
 297         {IWL_PCI_DEVICE(0x08B1, 0x486E, iwl7260_2ac_cfg)},
 298         {IWL_PCI_DEVICE(0x08B1, 0x4A70, iwl7260_2ac_cfg_high_temp)},
 299         {IWL_PCI_DEVICE(0x08B1, 0x4A6E, iwl7260_2ac_cfg_high_temp)},
 300         {IWL_PCI_DEVICE(0x08B1, 0x4A6C, iwl7260_2ac_cfg_high_temp)},
 301         {IWL_PCI_DEVICE(0x08B1, 0x4570, iwl7260_2ac_cfg)},
 302         {IWL_PCI_DEVICE(0x08B1, 0x4560, iwl7260_2n_cfg)},
 303         {IWL_PCI_DEVICE(0x08B2, 0x4370, iwl7260_2ac_cfg)},
 304         {IWL_PCI_DEVICE(0x08B2, 0x4360, iwl7260_2n_cfg)},
 305         {IWL_PCI_DEVICE(0x08B1, 0x5070, iwl7260_2ac_cfg)},
 306         {IWL_PCI_DEVICE(0x08B1, 0x5072, iwl7260_2ac_cfg)},
 307         {IWL_PCI_DEVICE(0x08B1, 0x5170, iwl7260_2ac_cfg)},
 308         {IWL_PCI_DEVICE(0x08B1, 0x5770, iwl7260_2ac_cfg)},
 309         {IWL_PCI_DEVICE(0x08B1, 0x4020, iwl7260_2n_cfg)},
 310         {IWL_PCI_DEVICE(0x08B1, 0x402A, iwl7260_2n_cfg)},
 311         {IWL_PCI_DEVICE(0x08B2, 0x4220, iwl7260_2n_cfg)},
 312         {IWL_PCI_DEVICE(0x08B1, 0x4420, iwl7260_2n_cfg)},
 313         {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)},
 314         {IWL_PCI_DEVICE(0x08B1, 0xC072, iwl7260_2ac_cfg)},
 315         {IWL_PCI_DEVICE(0x08B1, 0xC170, iwl7260_2ac_cfg)},
 316         {IWL_PCI_DEVICE(0x08B1, 0xC060, iwl7260_2n_cfg)},
 317         {IWL_PCI_DEVICE(0x08B1, 0xC06A, iwl7260_2n_cfg)},
 318         {IWL_PCI_DEVICE(0x08B1, 0xC160, iwl7260_2n_cfg)},
 319         {IWL_PCI_DEVICE(0x08B1, 0xC062, iwl7260_n_cfg)},
 320         {IWL_PCI_DEVICE(0x08B1, 0xC162, iwl7260_n_cfg)},
 321         {IWL_PCI_DEVICE(0x08B1, 0xC770, iwl7260_2ac_cfg)},
 322         {IWL_PCI_DEVICE(0x08B1, 0xC760, iwl7260_2n_cfg)},
 323         {IWL_PCI_DEVICE(0x08B2, 0xC270, iwl7260_2ac_cfg)},
 324         {IWL_PCI_DEVICE(0x08B1, 0xCC70, iwl7260_2ac_cfg)},
 325         {IWL_PCI_DEVICE(0x08B1, 0xCC60, iwl7260_2ac_cfg)},
 326         {IWL_PCI_DEVICE(0x08B2, 0xC272, iwl7260_2ac_cfg)},
 327         {IWL_PCI_DEVICE(0x08B2, 0xC260, iwl7260_2n_cfg)},
 328         {IWL_PCI_DEVICE(0x08B2, 0xC26A, iwl7260_n_cfg)},
 329         {IWL_PCI_DEVICE(0x08B2, 0xC262, iwl7260_n_cfg)},
 330         {IWL_PCI_DEVICE(0x08B1, 0xC470, iwl7260_2ac_cfg)},
 331         {IWL_PCI_DEVICE(0x08B1, 0xC472, iwl7260_2ac_cfg)},
 332         {IWL_PCI_DEVICE(0x08B1, 0xC460, iwl7260_2n_cfg)},
 333         {IWL_PCI_DEVICE(0x08B1, 0xC462, iwl7260_n_cfg)},
 334         {IWL_PCI_DEVICE(0x08B1, 0xC570, iwl7260_2ac_cfg)},
 335         {IWL_PCI_DEVICE(0x08B1, 0xC560, iwl7260_2n_cfg)},
 336         {IWL_PCI_DEVICE(0x08B2, 0xC370, iwl7260_2ac_cfg)},
 337         {IWL_PCI_DEVICE(0x08B1, 0xC360, iwl7260_2n_cfg)},
 338         {IWL_PCI_DEVICE(0x08B1, 0xC020, iwl7260_2n_cfg)},
 339         {IWL_PCI_DEVICE(0x08B1, 0xC02A, iwl7260_2n_cfg)},
 340         {IWL_PCI_DEVICE(0x08B2, 0xC220, iwl7260_2n_cfg)},
 341         {IWL_PCI_DEVICE(0x08B1, 0xC420, iwl7260_2n_cfg)},
 342 
 343 /* 3160 Series */
 344         {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_2ac_cfg)},
 345         {IWL_PCI_DEVICE(0x08B3, 0x0072, iwl3160_2ac_cfg)},
 346         {IWL_PCI_DEVICE(0x08B3, 0x0170, iwl3160_2ac_cfg)},
 347         {IWL_PCI_DEVICE(0x08B3, 0x0172, iwl3160_2ac_cfg)},
 348         {IWL_PCI_DEVICE(0x08B3, 0x0060, iwl3160_2n_cfg)},
 349         {IWL_PCI_DEVICE(0x08B3, 0x0062, iwl3160_n_cfg)},
 350         {IWL_PCI_DEVICE(0x08B4, 0x0270, iwl3160_2ac_cfg)},
 351         {IWL_PCI_DEVICE(0x08B4, 0x0272, iwl3160_2ac_cfg)},
 352         {IWL_PCI_DEVICE(0x08B3, 0x0470, iwl3160_2ac_cfg)},
 353         {IWL_PCI_DEVICE(0x08B3, 0x0472, iwl3160_2ac_cfg)},
 354         {IWL_PCI_DEVICE(0x08B4, 0x0370, iwl3160_2ac_cfg)},
 355         {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_2ac_cfg)},
 356         {IWL_PCI_DEVICE(0x08B3, 0x8072, iwl3160_2ac_cfg)},
 357         {IWL_PCI_DEVICE(0x08B3, 0x8170, iwl3160_2ac_cfg)},
 358         {IWL_PCI_DEVICE(0x08B3, 0x8172, iwl3160_2ac_cfg)},
 359         {IWL_PCI_DEVICE(0x08B3, 0x8060, iwl3160_2n_cfg)},
 360         {IWL_PCI_DEVICE(0x08B3, 0x8062, iwl3160_n_cfg)},
 361         {IWL_PCI_DEVICE(0x08B4, 0x8270, iwl3160_2ac_cfg)},
 362         {IWL_PCI_DEVICE(0x08B4, 0x8370, iwl3160_2ac_cfg)},
 363         {IWL_PCI_DEVICE(0x08B4, 0x8272, iwl3160_2ac_cfg)},
 364         {IWL_PCI_DEVICE(0x08B3, 0x8470, iwl3160_2ac_cfg)},
 365         {IWL_PCI_DEVICE(0x08B3, 0x8570, iwl3160_2ac_cfg)},
 366         {IWL_PCI_DEVICE(0x08B3, 0x1070, iwl3160_2ac_cfg)},
 367         {IWL_PCI_DEVICE(0x08B3, 0x1170, iwl3160_2ac_cfg)},
 368 
 369 /* 3165 Series */
 370         {IWL_PCI_DEVICE(0x3165, 0x4010, iwl3165_2ac_cfg)},
 371         {IWL_PCI_DEVICE(0x3165, 0x4012, iwl3165_2ac_cfg)},
 372         {IWL_PCI_DEVICE(0x3166, 0x4212, iwl3165_2ac_cfg)},
 373         {IWL_PCI_DEVICE(0x3165, 0x4410, iwl3165_2ac_cfg)},
 374         {IWL_PCI_DEVICE(0x3165, 0x4510, iwl3165_2ac_cfg)},
 375         {IWL_PCI_DEVICE(0x3165, 0x4110, iwl3165_2ac_cfg)},
 376         {IWL_PCI_DEVICE(0x3166, 0x4310, iwl3165_2ac_cfg)},
 377         {IWL_PCI_DEVICE(0x3166, 0x4210, iwl3165_2ac_cfg)},
 378         {IWL_PCI_DEVICE(0x3165, 0x8010, iwl3165_2ac_cfg)},
 379         {IWL_PCI_DEVICE(0x3165, 0x8110, iwl3165_2ac_cfg)},
 380 
 381 /* 3168 Series */
 382         {IWL_PCI_DEVICE(0x24FB, 0x2010, iwl3168_2ac_cfg)},
 383         {IWL_PCI_DEVICE(0x24FB, 0x2110, iwl3168_2ac_cfg)},
 384         {IWL_PCI_DEVICE(0x24FB, 0x2050, iwl3168_2ac_cfg)},
 385         {IWL_PCI_DEVICE(0x24FB, 0x2150, iwl3168_2ac_cfg)},
 386         {IWL_PCI_DEVICE(0x24FB, 0x0000, iwl3168_2ac_cfg)},
 387 
 388 /* 7265 Series */
 389         {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7265_2ac_cfg)},
 390         {IWL_PCI_DEVICE(0x095A, 0x5110, iwl7265_2ac_cfg)},
 391         {IWL_PCI_DEVICE(0x095A, 0x5100, iwl7265_2ac_cfg)},
 392         {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7265_2ac_cfg)},
 393         {IWL_PCI_DEVICE(0x095B, 0x5302, iwl7265_n_cfg)},
 394         {IWL_PCI_DEVICE(0x095B, 0x5210, iwl7265_2ac_cfg)},
 395         {IWL_PCI_DEVICE(0x095A, 0x5C10, iwl7265_2ac_cfg)},
 396         {IWL_PCI_DEVICE(0x095A, 0x5012, iwl7265_2ac_cfg)},
 397         {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7265_2ac_cfg)},
 398         {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7265_2ac_cfg)},
 399         {IWL_PCI_DEVICE(0x095A, 0x5510, iwl7265_2ac_cfg)},
 400         {IWL_PCI_DEVICE(0x095A, 0x5400, iwl7265_2ac_cfg)},
 401         {IWL_PCI_DEVICE(0x095A, 0x1010, iwl7265_2ac_cfg)},
 402         {IWL_PCI_DEVICE(0x095A, 0x5000, iwl7265_2n_cfg)},
 403         {IWL_PCI_DEVICE(0x095A, 0x500A, iwl7265_2n_cfg)},
 404         {IWL_PCI_DEVICE(0x095B, 0x5200, iwl7265_2n_cfg)},
 405         {IWL_PCI_DEVICE(0x095A, 0x5002, iwl7265_n_cfg)},
 406         {IWL_PCI_DEVICE(0x095A, 0x5102, iwl7265_n_cfg)},
 407         {IWL_PCI_DEVICE(0x095B, 0x5202, iwl7265_n_cfg)},
 408         {IWL_PCI_DEVICE(0x095A, 0x9010, iwl7265_2ac_cfg)},
 409         {IWL_PCI_DEVICE(0x095A, 0x9012, iwl7265_2ac_cfg)},
 410         {IWL_PCI_DEVICE(0x095A, 0x900A, iwl7265_2ac_cfg)},
 411         {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7265_2ac_cfg)},
 412         {IWL_PCI_DEVICE(0x095A, 0x9112, iwl7265_2ac_cfg)},
 413         {IWL_PCI_DEVICE(0x095B, 0x9210, iwl7265_2ac_cfg)},
 414         {IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)},
 415         {IWL_PCI_DEVICE(0x095A, 0x9510, iwl7265_2ac_cfg)},
 416         {IWL_PCI_DEVICE(0x095B, 0x9310, iwl7265_2ac_cfg)},
 417         {IWL_PCI_DEVICE(0x095A, 0x9410, iwl7265_2ac_cfg)},
 418         {IWL_PCI_DEVICE(0x095A, 0x5020, iwl7265_2n_cfg)},
 419         {IWL_PCI_DEVICE(0x095A, 0x502A, iwl7265_2n_cfg)},
 420         {IWL_PCI_DEVICE(0x095A, 0x5420, iwl7265_2n_cfg)},
 421         {IWL_PCI_DEVICE(0x095A, 0x5090, iwl7265_2ac_cfg)},
 422         {IWL_PCI_DEVICE(0x095A, 0x5190, iwl7265_2ac_cfg)},
 423         {IWL_PCI_DEVICE(0x095A, 0x5590, iwl7265_2ac_cfg)},
 424         {IWL_PCI_DEVICE(0x095B, 0x5290, iwl7265_2ac_cfg)},
 425         {IWL_PCI_DEVICE(0x095A, 0x5490, iwl7265_2ac_cfg)},
 426         {IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7265_2ac_cfg)},
 427         {IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)},
 428         {IWL_PCI_DEVICE(0x095B, 0x520A, iwl7265_2ac_cfg)},
 429         {IWL_PCI_DEVICE(0x095A, 0x9000, iwl7265_2ac_cfg)},
 430         {IWL_PCI_DEVICE(0x095A, 0x9400, iwl7265_2ac_cfg)},
 431         {IWL_PCI_DEVICE(0x095A, 0x9E10, iwl7265_2ac_cfg)},
 432 
 433 /* 8000 Series */
 434         {IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)},
 435         {IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)},
 436         {IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8260_2ac_cfg)},
 437         {IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8260_2ac_cfg)},
 438         {IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8260_2ac_cfg)},
 439         {IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8260_2ac_cfg)},
 440         {IWL_PCI_DEVICE(0x24F3, 0x1132, iwl8260_2ac_cfg)},
 441         {IWL_PCI_DEVICE(0x24F3, 0x0110, iwl8260_2ac_cfg)},
 442         {IWL_PCI_DEVICE(0x24F3, 0x01F0, iwl8260_2ac_cfg)},
 443         {IWL_PCI_DEVICE(0x24F3, 0x0012, iwl8260_2ac_cfg)},
 444         {IWL_PCI_DEVICE(0x24F3, 0x1012, iwl8260_2ac_cfg)},
 445         {IWL_PCI_DEVICE(0x24F3, 0x1110, iwl8260_2ac_cfg)},
 446         {IWL_PCI_DEVICE(0x24F3, 0x0050, iwl8260_2ac_cfg)},
 447         {IWL_PCI_DEVICE(0x24F3, 0x0250, iwl8260_2ac_cfg)},
 448         {IWL_PCI_DEVICE(0x24F3, 0x1050, iwl8260_2ac_cfg)},
 449         {IWL_PCI_DEVICE(0x24F3, 0x0150, iwl8260_2ac_cfg)},
 450         {IWL_PCI_DEVICE(0x24F3, 0x1150, iwl8260_2ac_cfg)},
 451         {IWL_PCI_DEVICE(0x24F4, 0x0030, iwl8260_2ac_cfg)},
 452         {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8260_2ac_cfg)},
 453         {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8260_2ac_cfg)},
 454         {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8260_2ac_cfg)},
 455         {IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8260_2ac_cfg)},
 456         {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)},
 457         {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)},
 458         {IWL_PCI_DEVICE(0x24F3, 0xD0B0, iwl8260_2ac_cfg)},
 459         {IWL_PCI_DEVICE(0x24F3, 0xB0B0, iwl8260_2ac_cfg)},
 460         {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)},
 461         {IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8260_2ac_cfg)},
 462         {IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8260_2ac_cfg)},
 463         {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8260_2ac_cfg)},
 464         {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8260_2ac_cfg)},
 465         {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8260_2ac_cfg)},
 466         {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8260_2ac_cfg)},
 467         {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8260_2ac_cfg)},
 468         {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8260_2ac_cfg)},
 469         {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8260_2ac_cfg)},
 470         {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8260_2ac_cfg)},
 471         {IWL_PCI_DEVICE(0x24F3, 0x9132, iwl8260_2ac_cfg)},
 472         {IWL_PCI_DEVICE(0x24F3, 0x8050, iwl8260_2ac_cfg)},
 473         {IWL_PCI_DEVICE(0x24F3, 0x8150, iwl8260_2ac_cfg)},
 474         {IWL_PCI_DEVICE(0x24F3, 0x9050, iwl8260_2ac_cfg)},
 475         {IWL_PCI_DEVICE(0x24F3, 0x9150, iwl8260_2ac_cfg)},
 476         {IWL_PCI_DEVICE(0x24F3, 0x0004, iwl8260_2n_cfg)},
 477         {IWL_PCI_DEVICE(0x24F3, 0x0044, iwl8260_2n_cfg)},
 478         {IWL_PCI_DEVICE(0x24F5, 0x0010, iwl4165_2ac_cfg)},
 479         {IWL_PCI_DEVICE(0x24F6, 0x0030, iwl4165_2ac_cfg)},
 480         {IWL_PCI_DEVICE(0x24F3, 0x0810, iwl8260_2ac_cfg)},
 481         {IWL_PCI_DEVICE(0x24F3, 0x0910, iwl8260_2ac_cfg)},
 482         {IWL_PCI_DEVICE(0x24F3, 0x0850, iwl8260_2ac_cfg)},
 483         {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8260_2ac_cfg)},
 484         {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)},
 485         {IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8265_2ac_cfg)},
 486         {IWL_PCI_DEVICE(0x24F3, 0x4010, iwl8260_2ac_cfg)},
 487         {IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)},
 488         {IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)},
 489         {IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)},
 490         {IWL_PCI_DEVICE(0x24FD, 0x1130, iwl8265_2ac_cfg)},
 491         {IWL_PCI_DEVICE(0x24FD, 0x0130, iwl8265_2ac_cfg)},
 492         {IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8265_2ac_cfg)},
 493         {IWL_PCI_DEVICE(0x24FD, 0x10D0, iwl8265_2ac_cfg)},
 494         {IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8265_2ac_cfg)},
 495         {IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8265_2ac_cfg)},
 496         {IWL_PCI_DEVICE(0x24FD, 0x9010, iwl8265_2ac_cfg)},
 497         {IWL_PCI_DEVICE(0x24FD, 0x8110, iwl8265_2ac_cfg)},
 498         {IWL_PCI_DEVICE(0x24FD, 0x8050, iwl8265_2ac_cfg)},
 499         {IWL_PCI_DEVICE(0x24FD, 0x8010, iwl8265_2ac_cfg)},
 500         {IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8265_2ac_cfg)},
 501         {IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8265_2ac_cfg)},
 502         {IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8265_2ac_cfg)},
 503         {IWL_PCI_DEVICE(0x24FD, 0x0910, iwl8265_2ac_cfg)},
 504         {IWL_PCI_DEVICE(0x24FD, 0x0930, iwl8265_2ac_cfg)},
 505         {IWL_PCI_DEVICE(0x24FD, 0x0950, iwl8265_2ac_cfg)},
 506         {IWL_PCI_DEVICE(0x24FD, 0x0850, iwl8265_2ac_cfg)},
 507         {IWL_PCI_DEVICE(0x24FD, 0x1014, iwl8265_2ac_cfg)},
 508         {IWL_PCI_DEVICE(0x24FD, 0x3E02, iwl8275_2ac_cfg)},
 509         {IWL_PCI_DEVICE(0x24FD, 0x3E01, iwl8275_2ac_cfg)},
 510         {IWL_PCI_DEVICE(0x24FD, 0x1012, iwl8275_2ac_cfg)},
 511         {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8275_2ac_cfg)},
 512         {IWL_PCI_DEVICE(0x24FD, 0x0014, iwl8265_2ac_cfg)},
 513         {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8265_2ac_cfg)},
 514 
 515 /* 9000 Series */
 516         {IWL_PCI_DEVICE(0x02F0, 0x0030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 517         {IWL_PCI_DEVICE(0x02F0, 0x0034, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 518         {IWL_PCI_DEVICE(0x02F0, 0x0038, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 519         {IWL_PCI_DEVICE(0x02F0, 0x003C, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 520         {IWL_PCI_DEVICE(0x02F0, 0x0060, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 521         {IWL_PCI_DEVICE(0x02F0, 0x0064, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 522         {IWL_PCI_DEVICE(0x02F0, 0x00A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 523         {IWL_PCI_DEVICE(0x02F0, 0x00A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 524         {IWL_PCI_DEVICE(0x02F0, 0x0230, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 525         {IWL_PCI_DEVICE(0x02F0, 0x0234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 526         {IWL_PCI_DEVICE(0x02F0, 0x0238, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 527         {IWL_PCI_DEVICE(0x02F0, 0x023C, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 528         {IWL_PCI_DEVICE(0x02F0, 0x0260, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 529         {IWL_PCI_DEVICE(0x02F0, 0x0264, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 530         {IWL_PCI_DEVICE(0x02F0, 0x02A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 531         {IWL_PCI_DEVICE(0x02F0, 0x02A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 532         {IWL_PCI_DEVICE(0x02F0, 0x1030, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 533         {IWL_PCI_DEVICE(0x02F0, 0x1551, killer1550s_2ac_cfg_qu_b0_jf_b0)},
 534         {IWL_PCI_DEVICE(0x02F0, 0x1552, killer1550i_2ac_cfg_qu_b0_jf_b0)},
 535         {IWL_PCI_DEVICE(0x02F0, 0x2030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 536         {IWL_PCI_DEVICE(0x02F0, 0x2034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 537         {IWL_PCI_DEVICE(0x02F0, 0x4030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 538         {IWL_PCI_DEVICE(0x02F0, 0x4034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 539         {IWL_PCI_DEVICE(0x02F0, 0x40A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 540         {IWL_PCI_DEVICE(0x02F0, 0x4234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 541         {IWL_PCI_DEVICE(0x02F0, 0x42A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 542 
 543         {IWL_PCI_DEVICE(0x06F0, 0x0030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)},
 544         {IWL_PCI_DEVICE(0x06F0, 0x0034, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)},
 545         {IWL_PCI_DEVICE(0x06F0, 0x0038, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)},
 546         {IWL_PCI_DEVICE(0x06F0, 0x003C, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)},
 547         {IWL_PCI_DEVICE(0x06F0, 0x0060, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)},
 548         {IWL_PCI_DEVICE(0x06F0, 0x0064, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)},
 549         {IWL_PCI_DEVICE(0x06F0, 0x00A0, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)},
 550         {IWL_PCI_DEVICE(0x06F0, 0x00A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)},
 551         {IWL_PCI_DEVICE(0x06F0, 0x0230, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)},
 552         {IWL_PCI_DEVICE(0x06F0, 0x0234, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)},
 553         {IWL_PCI_DEVICE(0x06F0, 0x0238, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)},
 554         {IWL_PCI_DEVICE(0x06F0, 0x023C, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)},
 555         {IWL_PCI_DEVICE(0x06F0, 0x0260, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)},
 556         {IWL_PCI_DEVICE(0x06F0, 0x0264, iwl9461_2ac_cfg_quz_a0_jf_b0_soc)},
 557         {IWL_PCI_DEVICE(0x06F0, 0x02A0, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)},
 558         {IWL_PCI_DEVICE(0x06F0, 0x02A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)},
 559         {IWL_PCI_DEVICE(0x06F0, 0x1551, iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc)},
 560         {IWL_PCI_DEVICE(0x06F0, 0x1552, iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc)},
 561         {IWL_PCI_DEVICE(0x06F0, 0x2030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)},
 562         {IWL_PCI_DEVICE(0x06F0, 0x2034, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)},
 563         {IWL_PCI_DEVICE(0x06F0, 0x4030, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)},
 564         {IWL_PCI_DEVICE(0x06F0, 0x4034, iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc)},
 565         {IWL_PCI_DEVICE(0x06F0, 0x40A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)},
 566         {IWL_PCI_DEVICE(0x06F0, 0x4234, iwl9560_2ac_cfg_quz_a0_jf_b0_soc)},
 567         {IWL_PCI_DEVICE(0x06F0, 0x42A4, iwl9462_2ac_cfg_quz_a0_jf_b0_soc)},
 568         {IWL_PCI_DEVICE(0x2526, 0x0010, iwl9260_2ac_160_cfg)},
 569         {IWL_PCI_DEVICE(0x2526, 0x0014, iwl9260_2ac_160_cfg)},
 570         {IWL_PCI_DEVICE(0x2526, 0x0018, iwl9260_2ac_160_cfg)},
 571         {IWL_PCI_DEVICE(0x2526, 0x001C, iwl9260_2ac_160_cfg)},
 572         {IWL_PCI_DEVICE(0x2526, 0x0030, iwl9560_2ac_160_cfg)},
 573         {IWL_PCI_DEVICE(0x2526, 0x0034, iwl9560_2ac_cfg)},
 574         {IWL_PCI_DEVICE(0x2526, 0x0038, iwl9560_2ac_160_cfg)},
 575         {IWL_PCI_DEVICE(0x2526, 0x003C, iwl9560_2ac_160_cfg)},
 576         {IWL_PCI_DEVICE(0x2526, 0x0060, iwl9461_2ac_cfg_soc)},
 577         {IWL_PCI_DEVICE(0x2526, 0x0064, iwl9461_2ac_cfg_soc)},
 578         {IWL_PCI_DEVICE(0x2526, 0x00A0, iwl9462_2ac_cfg_soc)},
 579         {IWL_PCI_DEVICE(0x2526, 0x00A4, iwl9462_2ac_cfg_soc)},
 580         {IWL_PCI_DEVICE(0x2526, 0x0210, iwl9260_2ac_cfg)},
 581         {IWL_PCI_DEVICE(0x2526, 0x0214, iwl9260_2ac_cfg)},
 582         {IWL_PCI_DEVICE(0x2526, 0x0230, iwl9560_2ac_cfg)},
 583         {IWL_PCI_DEVICE(0x2526, 0x0234, iwl9560_2ac_cfg)},
 584         {IWL_PCI_DEVICE(0x2526, 0x0238, iwl9560_2ac_cfg)},
 585         {IWL_PCI_DEVICE(0x2526, 0x023C, iwl9560_2ac_cfg)},
 586         {IWL_PCI_DEVICE(0x2526, 0x0260, iwl9461_2ac_cfg_soc)},
 587         {IWL_PCI_DEVICE(0x2526, 0x0264, iwl9461_2ac_cfg_soc)},
 588         {IWL_PCI_DEVICE(0x2526, 0x02A0, iwl9462_2ac_cfg_soc)},
 589         {IWL_PCI_DEVICE(0x2526, 0x02A4, iwl9462_2ac_cfg_soc)},
 590         {IWL_PCI_DEVICE(0x2526, 0x1010, iwl9260_2ac_cfg)},
 591         {IWL_PCI_DEVICE(0x2526, 0x1030, iwl9560_2ac_cfg)},
 592         {IWL_PCI_DEVICE(0x2526, 0x1210, iwl9260_2ac_cfg)},
 593         {IWL_PCI_DEVICE(0x2526, 0x1410, iwl9270_2ac_cfg)},
 594         {IWL_PCI_DEVICE(0x2526, 0x1420, iwl9460_2ac_cfg_soc)},
 595         {IWL_PCI_DEVICE(0x2526, 0x1550, iwl9260_killer_2ac_cfg)},
 596         {IWL_PCI_DEVICE(0x2526, 0x1551, iwl9560_killer_s_2ac_cfg_soc)},
 597         {IWL_PCI_DEVICE(0x2526, 0x1552, iwl9560_killer_2ac_cfg_soc)},
 598         {IWL_PCI_DEVICE(0x2526, 0x1610, iwl9270_2ac_cfg)},
 599         {IWL_PCI_DEVICE(0x2526, 0x2030, iwl9560_2ac_160_cfg_soc)},
 600         {IWL_PCI_DEVICE(0x2526, 0x2034, iwl9560_2ac_160_cfg_soc)},
 601         {IWL_PCI_DEVICE(0x2526, 0x4010, iwl9260_2ac_160_cfg)},
 602         {IWL_PCI_DEVICE(0x2526, 0x4018, iwl9260_2ac_160_cfg)},
 603         {IWL_PCI_DEVICE(0x2526, 0x401C, iwl9260_2ac_160_cfg)},
 604         {IWL_PCI_DEVICE(0x2526, 0x4030, iwl9560_2ac_160_cfg)},
 605         {IWL_PCI_DEVICE(0x2526, 0x4034, iwl9560_2ac_160_cfg_soc)},
 606         {IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9462_2ac_cfg_soc)},
 607         {IWL_PCI_DEVICE(0x2526, 0x4234, iwl9560_2ac_cfg_soc)},
 608         {IWL_PCI_DEVICE(0x2526, 0x42A4, iwl9462_2ac_cfg_soc)},
 609         {IWL_PCI_DEVICE(0x2526, 0x6010, iwl9260_2ac_160_cfg)},
 610         {IWL_PCI_DEVICE(0x2526, 0x6014, iwl9260_2ac_160_cfg)},
 611         {IWL_PCI_DEVICE(0x2526, 0x8014, iwl9260_2ac_160_cfg)},
 612         {IWL_PCI_DEVICE(0x2526, 0x8010, iwl9260_2ac_160_cfg)},
 613         {IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_160_cfg)},
 614         {IWL_PCI_DEVICE(0x2526, 0xE010, iwl9260_2ac_160_cfg)},
 615         {IWL_PCI_DEVICE(0x2526, 0xE014, iwl9260_2ac_160_cfg)},
 616         {IWL_PCI_DEVICE(0x271B, 0x0010, iwl9160_2ac_cfg)},
 617         {IWL_PCI_DEVICE(0x271B, 0x0014, iwl9160_2ac_cfg)},
 618         {IWL_PCI_DEVICE(0x271B, 0x0210, iwl9160_2ac_cfg)},
 619         {IWL_PCI_DEVICE(0x271B, 0x0214, iwl9260_2ac_cfg)},
 620         {IWL_PCI_DEVICE(0x271C, 0x0214, iwl9260_2ac_cfg)},
 621 
 622         {IWL_PCI_DEVICE(0x2720, 0x0034, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 623         {IWL_PCI_DEVICE(0x2720, 0x0038, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 624         {IWL_PCI_DEVICE(0x2720, 0x003C, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 625         {IWL_PCI_DEVICE(0x2720, 0x0060, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 626         {IWL_PCI_DEVICE(0x2720, 0x0064, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 627         {IWL_PCI_DEVICE(0x2720, 0x00A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 628         {IWL_PCI_DEVICE(0x2720, 0x00A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 629         {IWL_PCI_DEVICE(0x2720, 0x0230, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 630         {IWL_PCI_DEVICE(0x2720, 0x0234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 631         {IWL_PCI_DEVICE(0x2720, 0x0238, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 632         {IWL_PCI_DEVICE(0x2720, 0x023C, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 633         {IWL_PCI_DEVICE(0x2720, 0x0260, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 634         {IWL_PCI_DEVICE(0x2720, 0x0264, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 635         {IWL_PCI_DEVICE(0x2720, 0x02A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 636         {IWL_PCI_DEVICE(0x2720, 0x02A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 637         {IWL_PCI_DEVICE(0x2720, 0x1030, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 638         {IWL_PCI_DEVICE(0x2720, 0x1551, killer1550s_2ac_cfg_qu_b0_jf_b0)},
 639         {IWL_PCI_DEVICE(0x2720, 0x1552, killer1550i_2ac_cfg_qu_b0_jf_b0)},
 640         {IWL_PCI_DEVICE(0x2720, 0x2030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 641         {IWL_PCI_DEVICE(0x2720, 0x2034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 642         {IWL_PCI_DEVICE(0x2720, 0x4030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 643         {IWL_PCI_DEVICE(0x2720, 0x4034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 644         {IWL_PCI_DEVICE(0x2720, 0x40A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 645         {IWL_PCI_DEVICE(0x2720, 0x4234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 646         {IWL_PCI_DEVICE(0x2720, 0x42A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 647 
 648         {IWL_PCI_DEVICE(0x30DC, 0x0030, iwl9560_2ac_160_cfg_soc)},
 649         {IWL_PCI_DEVICE(0x30DC, 0x0034, iwl9560_2ac_cfg_soc)},
 650         {IWL_PCI_DEVICE(0x30DC, 0x0038, iwl9560_2ac_160_cfg_soc)},
 651         {IWL_PCI_DEVICE(0x30DC, 0x003C, iwl9560_2ac_160_cfg_soc)},
 652         {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg_soc)},
 653         {IWL_PCI_DEVICE(0x30DC, 0x0064, iwl9461_2ac_cfg_soc)},
 654         {IWL_PCI_DEVICE(0x30DC, 0x00A0, iwl9462_2ac_cfg_soc)},
 655         {IWL_PCI_DEVICE(0x30DC, 0x00A4, iwl9462_2ac_cfg_soc)},
 656         {IWL_PCI_DEVICE(0x30DC, 0x0230, iwl9560_2ac_cfg_soc)},
 657         {IWL_PCI_DEVICE(0x30DC, 0x0234, iwl9560_2ac_cfg_soc)},
 658         {IWL_PCI_DEVICE(0x30DC, 0x0238, iwl9560_2ac_cfg_soc)},
 659         {IWL_PCI_DEVICE(0x30DC, 0x023C, iwl9560_2ac_cfg_soc)},
 660         {IWL_PCI_DEVICE(0x30DC, 0x0260, iwl9461_2ac_cfg_soc)},
 661         {IWL_PCI_DEVICE(0x30DC, 0x0264, iwl9461_2ac_cfg_soc)},
 662         {IWL_PCI_DEVICE(0x30DC, 0x02A0, iwl9462_2ac_cfg_soc)},
 663         {IWL_PCI_DEVICE(0x30DC, 0x02A4, iwl9462_2ac_cfg_soc)},
 664         {IWL_PCI_DEVICE(0x30DC, 0x1010, iwl9260_2ac_cfg)},
 665         {IWL_PCI_DEVICE(0x30DC, 0x1030, iwl9560_2ac_cfg_soc)},
 666         {IWL_PCI_DEVICE(0x30DC, 0x1210, iwl9260_2ac_cfg)},
 667         {IWL_PCI_DEVICE(0x30DC, 0x1551, iwl9560_killer_s_2ac_cfg_soc)},
 668         {IWL_PCI_DEVICE(0x30DC, 0x1552, iwl9560_killer_2ac_cfg_soc)},
 669         {IWL_PCI_DEVICE(0x30DC, 0x2030, iwl9560_2ac_160_cfg_soc)},
 670         {IWL_PCI_DEVICE(0x30DC, 0x2034, iwl9560_2ac_160_cfg_soc)},
 671         {IWL_PCI_DEVICE(0x30DC, 0x4030, iwl9560_2ac_160_cfg_soc)},
 672         {IWL_PCI_DEVICE(0x30DC, 0x4034, iwl9560_2ac_160_cfg_soc)},
 673         {IWL_PCI_DEVICE(0x30DC, 0x40A4, iwl9462_2ac_cfg_soc)},
 674         {IWL_PCI_DEVICE(0x30DC, 0x4234, iwl9560_2ac_cfg_soc)},
 675         {IWL_PCI_DEVICE(0x30DC, 0x42A4, iwl9462_2ac_cfg_soc)},
 676 
 677         {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_160_cfg_shared_clk)},
 678         {IWL_PCI_DEVICE(0x31DC, 0x0034, iwl9560_2ac_cfg_shared_clk)},
 679         {IWL_PCI_DEVICE(0x31DC, 0x0038, iwl9560_2ac_160_cfg_shared_clk)},
 680         {IWL_PCI_DEVICE(0x31DC, 0x003C, iwl9560_2ac_160_cfg_shared_clk)},
 681         {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg_shared_clk)},
 682         {IWL_PCI_DEVICE(0x31DC, 0x0064, iwl9461_2ac_cfg_shared_clk)},
 683         {IWL_PCI_DEVICE(0x31DC, 0x00A0, iwl9462_2ac_cfg_shared_clk)},
 684         {IWL_PCI_DEVICE(0x31DC, 0x00A4, iwl9462_2ac_cfg_shared_clk)},
 685         {IWL_PCI_DEVICE(0x31DC, 0x0230, iwl9560_2ac_cfg_shared_clk)},
 686         {IWL_PCI_DEVICE(0x31DC, 0x0234, iwl9560_2ac_cfg_shared_clk)},
 687         {IWL_PCI_DEVICE(0x31DC, 0x0238, iwl9560_2ac_cfg_shared_clk)},
 688         {IWL_PCI_DEVICE(0x31DC, 0x023C, iwl9560_2ac_cfg_shared_clk)},
 689         {IWL_PCI_DEVICE(0x31DC, 0x0260, iwl9461_2ac_cfg_shared_clk)},
 690         {IWL_PCI_DEVICE(0x31DC, 0x0264, iwl9461_2ac_cfg_shared_clk)},
 691         {IWL_PCI_DEVICE(0x31DC, 0x02A0, iwl9462_2ac_cfg_shared_clk)},
 692         {IWL_PCI_DEVICE(0x31DC, 0x02A4, iwl9462_2ac_cfg_shared_clk)},
 693         {IWL_PCI_DEVICE(0x31DC, 0x1010, iwl9260_2ac_cfg)},
 694         {IWL_PCI_DEVICE(0x31DC, 0x1030, iwl9560_2ac_cfg_shared_clk)},
 695         {IWL_PCI_DEVICE(0x31DC, 0x1210, iwl9260_2ac_cfg)},
 696         {IWL_PCI_DEVICE(0x31DC, 0x1551, iwl9560_killer_s_2ac_cfg_shared_clk)},
 697         {IWL_PCI_DEVICE(0x31DC, 0x1552, iwl9560_killer_2ac_cfg_shared_clk)},
 698         {IWL_PCI_DEVICE(0x31DC, 0x2030, iwl9560_2ac_160_cfg_shared_clk)},
 699         {IWL_PCI_DEVICE(0x31DC, 0x2034, iwl9560_2ac_160_cfg_shared_clk)},
 700         {IWL_PCI_DEVICE(0x31DC, 0x4030, iwl9560_2ac_160_cfg_shared_clk)},
 701         {IWL_PCI_DEVICE(0x31DC, 0x4034, iwl9560_2ac_160_cfg_shared_clk)},
 702         {IWL_PCI_DEVICE(0x31DC, 0x40A4, iwl9462_2ac_cfg_shared_clk)},
 703         {IWL_PCI_DEVICE(0x31DC, 0x4234, iwl9560_2ac_cfg_shared_clk)},
 704         {IWL_PCI_DEVICE(0x31DC, 0x42A4, iwl9462_2ac_cfg_shared_clk)},
 705 
 706         {IWL_PCI_DEVICE(0x34F0, 0x0030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 707         {IWL_PCI_DEVICE(0x34F0, 0x0034, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 708         {IWL_PCI_DEVICE(0x34F0, 0x0038, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 709         {IWL_PCI_DEVICE(0x34F0, 0x003C, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 710         {IWL_PCI_DEVICE(0x34F0, 0x0060, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 711         {IWL_PCI_DEVICE(0x34F0, 0x0064, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 712         {IWL_PCI_DEVICE(0x34F0, 0x00A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 713         {IWL_PCI_DEVICE(0x34F0, 0x00A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 714         {IWL_PCI_DEVICE(0x34F0, 0x0230, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 715         {IWL_PCI_DEVICE(0x34F0, 0x0234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 716         {IWL_PCI_DEVICE(0x34F0, 0x0238, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 717         {IWL_PCI_DEVICE(0x34F0, 0x023C, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 718         {IWL_PCI_DEVICE(0x34F0, 0x0260, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 719         {IWL_PCI_DEVICE(0x34F0, 0x0264, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 720         {IWL_PCI_DEVICE(0x34F0, 0x02A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 721         {IWL_PCI_DEVICE(0x34F0, 0x02A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 722         {IWL_PCI_DEVICE(0x34F0, 0x1551, killer1550s_2ac_cfg_qu_b0_jf_b0)},
 723         {IWL_PCI_DEVICE(0x34F0, 0x1552, killer1550i_2ac_cfg_qu_b0_jf_b0)},
 724         {IWL_PCI_DEVICE(0x34F0, 0x2030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 725         {IWL_PCI_DEVICE(0x34F0, 0x2034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 726         {IWL_PCI_DEVICE(0x34F0, 0x4030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 727         {IWL_PCI_DEVICE(0x34F0, 0x4034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 728         {IWL_PCI_DEVICE(0x34F0, 0x40A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 729         {IWL_PCI_DEVICE(0x34F0, 0x4234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 730         {IWL_PCI_DEVICE(0x34F0, 0x42A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 731 
 732         {IWL_PCI_DEVICE(0x3DF0, 0x0030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 733         {IWL_PCI_DEVICE(0x3DF0, 0x0034, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 734         {IWL_PCI_DEVICE(0x3DF0, 0x0038, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 735         {IWL_PCI_DEVICE(0x3DF0, 0x003C, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 736         {IWL_PCI_DEVICE(0x3DF0, 0x0060, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 737         {IWL_PCI_DEVICE(0x3DF0, 0x0064, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 738         {IWL_PCI_DEVICE(0x3DF0, 0x00A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 739         {IWL_PCI_DEVICE(0x3DF0, 0x00A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 740         {IWL_PCI_DEVICE(0x3DF0, 0x0230, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 741         {IWL_PCI_DEVICE(0x3DF0, 0x0234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 742         {IWL_PCI_DEVICE(0x3DF0, 0x0238, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 743         {IWL_PCI_DEVICE(0x3DF0, 0x023C, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 744         {IWL_PCI_DEVICE(0x3DF0, 0x0260, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 745         {IWL_PCI_DEVICE(0x3DF0, 0x0264, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 746         {IWL_PCI_DEVICE(0x3DF0, 0x02A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 747         {IWL_PCI_DEVICE(0x3DF0, 0x02A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 748         {IWL_PCI_DEVICE(0x3DF0, 0x1030, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 749         {IWL_PCI_DEVICE(0x3DF0, 0x1551, killer1550s_2ac_cfg_qu_b0_jf_b0)},
 750         {IWL_PCI_DEVICE(0x3DF0, 0x1552, killer1550i_2ac_cfg_qu_b0_jf_b0)},
 751         {IWL_PCI_DEVICE(0x3DF0, 0x2030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 752         {IWL_PCI_DEVICE(0x3DF0, 0x2034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 753         {IWL_PCI_DEVICE(0x3DF0, 0x4030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 754         {IWL_PCI_DEVICE(0x3DF0, 0x4034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 755         {IWL_PCI_DEVICE(0x3DF0, 0x40A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 756         {IWL_PCI_DEVICE(0x3DF0, 0x4234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 757         {IWL_PCI_DEVICE(0x3DF0, 0x42A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 758 
 759         {IWL_PCI_DEVICE(0x43F0, 0x0030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 760         {IWL_PCI_DEVICE(0x43F0, 0x0034, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 761         {IWL_PCI_DEVICE(0x43F0, 0x0038, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 762         {IWL_PCI_DEVICE(0x43F0, 0x003C, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 763         {IWL_PCI_DEVICE(0x43F0, 0x0060, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 764         {IWL_PCI_DEVICE(0x43F0, 0x0064, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 765         {IWL_PCI_DEVICE(0x43F0, 0x00A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 766         {IWL_PCI_DEVICE(0x43F0, 0x00A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 767         {IWL_PCI_DEVICE(0x43F0, 0x0230, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 768         {IWL_PCI_DEVICE(0x43F0, 0x0234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 769         {IWL_PCI_DEVICE(0x43F0, 0x0238, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 770         {IWL_PCI_DEVICE(0x43F0, 0x023C, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 771         {IWL_PCI_DEVICE(0x43F0, 0x0260, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 772         {IWL_PCI_DEVICE(0x43F0, 0x0264, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 773         {IWL_PCI_DEVICE(0x43F0, 0x02A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 774         {IWL_PCI_DEVICE(0x43F0, 0x02A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 775         {IWL_PCI_DEVICE(0x43F0, 0x1030, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 776         {IWL_PCI_DEVICE(0x43F0, 0x1551, killer1550s_2ac_cfg_qu_b0_jf_b0)},
 777         {IWL_PCI_DEVICE(0x43F0, 0x1552, killer1550i_2ac_cfg_qu_b0_jf_b0)},
 778         {IWL_PCI_DEVICE(0x43F0, 0x2030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 779         {IWL_PCI_DEVICE(0x43F0, 0x2034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 780         {IWL_PCI_DEVICE(0x43F0, 0x4030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 781         {IWL_PCI_DEVICE(0x43F0, 0x4034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 782         {IWL_PCI_DEVICE(0x43F0, 0x40A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 783         {IWL_PCI_DEVICE(0x43F0, 0x4234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 784         {IWL_PCI_DEVICE(0x43F0, 0x42A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 785 
 786         {IWL_PCI_DEVICE(0x9DF0, 0x0000, iwl9460_2ac_cfg_soc)},
 787         {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg_soc)},
 788         {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_160_cfg_soc)},
 789         {IWL_PCI_DEVICE(0x9DF0, 0x0034, iwl9560_2ac_cfg_soc)},
 790         {IWL_PCI_DEVICE(0x9DF0, 0x0038, iwl9560_2ac_160_cfg_soc)},
 791         {IWL_PCI_DEVICE(0x9DF0, 0x003C, iwl9560_2ac_160_cfg_soc)},
 792         {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg_soc)},
 793         {IWL_PCI_DEVICE(0x9DF0, 0x0064, iwl9461_2ac_cfg_soc)},
 794         {IWL_PCI_DEVICE(0x9DF0, 0x00A0, iwl9462_2ac_cfg_soc)},
 795         {IWL_PCI_DEVICE(0x9DF0, 0x00A4, iwl9462_2ac_cfg_soc)},
 796         {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg_soc)},
 797         {IWL_PCI_DEVICE(0x9DF0, 0x0230, iwl9560_2ac_cfg_soc)},
 798         {IWL_PCI_DEVICE(0x9DF0, 0x0234, iwl9560_2ac_cfg_soc)},
 799         {IWL_PCI_DEVICE(0x9DF0, 0x0238, iwl9560_2ac_cfg_soc)},
 800         {IWL_PCI_DEVICE(0x9DF0, 0x023C, iwl9560_2ac_cfg_soc)},
 801         {IWL_PCI_DEVICE(0x9DF0, 0x0260, iwl9461_2ac_cfg_soc)},
 802         {IWL_PCI_DEVICE(0x9DF0, 0x0264, iwl9461_2ac_cfg_soc)},
 803         {IWL_PCI_DEVICE(0x9DF0, 0x02A0, iwl9462_2ac_cfg_soc)},
 804         {IWL_PCI_DEVICE(0x9DF0, 0x02A4, iwl9462_2ac_cfg_soc)},
 805         {IWL_PCI_DEVICE(0x9DF0, 0x0310, iwl9460_2ac_cfg_soc)},
 806         {IWL_PCI_DEVICE(0x9DF0, 0x0410, iwl9460_2ac_cfg_soc)},
 807         {IWL_PCI_DEVICE(0x9DF0, 0x0510, iwl9460_2ac_cfg_soc)},
 808         {IWL_PCI_DEVICE(0x9DF0, 0x0610, iwl9460_2ac_cfg_soc)},
 809         {IWL_PCI_DEVICE(0x9DF0, 0x0710, iwl9460_2ac_cfg_soc)},
 810         {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg_soc)},
 811         {IWL_PCI_DEVICE(0x9DF0, 0x1010, iwl9260_2ac_cfg)},
 812         {IWL_PCI_DEVICE(0x9DF0, 0x1030, iwl9560_2ac_cfg_soc)},
 813         {IWL_PCI_DEVICE(0x9DF0, 0x1210, iwl9260_2ac_cfg)},
 814         {IWL_PCI_DEVICE(0x9DF0, 0x1551, iwl9560_killer_s_2ac_cfg_soc)},
 815         {IWL_PCI_DEVICE(0x9DF0, 0x1552, iwl9560_killer_2ac_cfg_soc)},
 816         {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg_soc)},
 817         {IWL_PCI_DEVICE(0x9DF0, 0x2030, iwl9560_2ac_160_cfg_soc)},
 818         {IWL_PCI_DEVICE(0x9DF0, 0x2034, iwl9560_2ac_160_cfg_soc)},
 819         {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg_soc)},
 820         {IWL_PCI_DEVICE(0x9DF0, 0x4030, iwl9560_2ac_160_cfg_soc)},
 821         {IWL_PCI_DEVICE(0x9DF0, 0x4034, iwl9560_2ac_160_cfg_soc)},
 822         {IWL_PCI_DEVICE(0x9DF0, 0x40A4, iwl9462_2ac_cfg_soc)},
 823         {IWL_PCI_DEVICE(0x9DF0, 0x4234, iwl9560_2ac_cfg_soc)},
 824         {IWL_PCI_DEVICE(0x9DF0, 0x42A4, iwl9462_2ac_cfg_soc)},
 825 
 826         {IWL_PCI_DEVICE(0xA0F0, 0x0030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 827         {IWL_PCI_DEVICE(0xA0F0, 0x0034, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 828         {IWL_PCI_DEVICE(0xA0F0, 0x0038, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 829         {IWL_PCI_DEVICE(0xA0F0, 0x003C, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 830         {IWL_PCI_DEVICE(0xA0F0, 0x0060, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 831         {IWL_PCI_DEVICE(0xA0F0, 0x0064, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 832         {IWL_PCI_DEVICE(0xA0F0, 0x00A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 833         {IWL_PCI_DEVICE(0xA0F0, 0x00A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 834         {IWL_PCI_DEVICE(0xA0F0, 0x0230, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 835         {IWL_PCI_DEVICE(0xA0F0, 0x0234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 836         {IWL_PCI_DEVICE(0xA0F0, 0x0238, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 837         {IWL_PCI_DEVICE(0xA0F0, 0x023C, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 838         {IWL_PCI_DEVICE(0xA0F0, 0x0260, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 839         {IWL_PCI_DEVICE(0xA0F0, 0x0264, iwl9461_2ac_cfg_qu_b0_jf_b0)},
 840         {IWL_PCI_DEVICE(0xA0F0, 0x02A0, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 841         {IWL_PCI_DEVICE(0xA0F0, 0x02A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 842         {IWL_PCI_DEVICE(0xA0F0, 0x1030, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 843         {IWL_PCI_DEVICE(0xA0F0, 0x1551, killer1550s_2ac_cfg_qu_b0_jf_b0)},
 844         {IWL_PCI_DEVICE(0xA0F0, 0x1552, killer1550i_2ac_cfg_qu_b0_jf_b0)},
 845         {IWL_PCI_DEVICE(0xA0F0, 0x2030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 846         {IWL_PCI_DEVICE(0xA0F0, 0x2034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 847         {IWL_PCI_DEVICE(0xA0F0, 0x4030, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 848         {IWL_PCI_DEVICE(0xA0F0, 0x4034, iwl9560_2ac_160_cfg_qu_b0_jf_b0)},
 849         {IWL_PCI_DEVICE(0xA0F0, 0x40A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 850         {IWL_PCI_DEVICE(0xA0F0, 0x4234, iwl9560_2ac_cfg_qu_b0_jf_b0)},
 851         {IWL_PCI_DEVICE(0xA0F0, 0x42A4, iwl9462_2ac_cfg_qu_b0_jf_b0)},
 852 
 853         {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_160_cfg_soc)},
 854         {IWL_PCI_DEVICE(0xA370, 0x0034, iwl9560_2ac_cfg_soc)},
 855         {IWL_PCI_DEVICE(0xA370, 0x0038, iwl9560_2ac_160_cfg_soc)},
 856         {IWL_PCI_DEVICE(0xA370, 0x003C, iwl9560_2ac_160_cfg_soc)},
 857         {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg_soc)},
 858         {IWL_PCI_DEVICE(0xA370, 0x0064, iwl9461_2ac_cfg_soc)},
 859         {IWL_PCI_DEVICE(0xA370, 0x00A0, iwl9462_2ac_cfg_soc)},
 860         {IWL_PCI_DEVICE(0xA370, 0x00A4, iwl9462_2ac_cfg_soc)},
 861         {IWL_PCI_DEVICE(0xA370, 0x0230, iwl9560_2ac_cfg_soc)},
 862         {IWL_PCI_DEVICE(0xA370, 0x0234, iwl9560_2ac_cfg_soc)},
 863         {IWL_PCI_DEVICE(0xA370, 0x0238, iwl9560_2ac_cfg_soc)},
 864         {IWL_PCI_DEVICE(0xA370, 0x023C, iwl9560_2ac_cfg_soc)},
 865         {IWL_PCI_DEVICE(0xA370, 0x0260, iwl9461_2ac_cfg_soc)},
 866         {IWL_PCI_DEVICE(0xA370, 0x0264, iwl9461_2ac_cfg_soc)},
 867         {IWL_PCI_DEVICE(0xA370, 0x02A0, iwl9462_2ac_cfg_soc)},
 868         {IWL_PCI_DEVICE(0xA370, 0x02A4, iwl9462_2ac_cfg_soc)},
 869         {IWL_PCI_DEVICE(0xA370, 0x1010, iwl9260_2ac_cfg)},
 870         {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg_soc)},
 871         {IWL_PCI_DEVICE(0xA370, 0x1210, iwl9260_2ac_cfg)},
 872         {IWL_PCI_DEVICE(0xA370, 0x1551, iwl9560_killer_s_2ac_cfg_soc)},
 873         {IWL_PCI_DEVICE(0xA370, 0x1552, iwl9560_killer_2ac_cfg_soc)},
 874         {IWL_PCI_DEVICE(0xA370, 0x2030, iwl9560_2ac_160_cfg_soc)},
 875         {IWL_PCI_DEVICE(0xA370, 0x2034, iwl9560_2ac_160_cfg_soc)},
 876         {IWL_PCI_DEVICE(0xA370, 0x4030, iwl9560_2ac_160_cfg_soc)},
 877         {IWL_PCI_DEVICE(0xA370, 0x4034, iwl9560_2ac_160_cfg_soc)},
 878         {IWL_PCI_DEVICE(0xA370, 0x40A4, iwl9462_2ac_cfg_soc)},
 879         {IWL_PCI_DEVICE(0xA370, 0x4234, iwl9560_2ac_cfg_soc)},
 880         {IWL_PCI_DEVICE(0xA370, 0x42A4, iwl9462_2ac_cfg_soc)},
 881         {IWL_PCI_DEVICE(0x2720, 0x0030, iwl9560_2ac_cfg_qnj_jf_b0)},
 882 
 883 /* 22000 Series */
 884         {IWL_PCI_DEVICE(0x02F0, 0x0070, iwl_ax201_cfg_quz_hr)},
 885         {IWL_PCI_DEVICE(0x02F0, 0x0074, iwl_ax201_cfg_quz_hr)},
 886         {IWL_PCI_DEVICE(0x02F0, 0x0078, iwl_ax201_cfg_quz_hr)},
 887         {IWL_PCI_DEVICE(0x02F0, 0x007C, iwl_ax201_cfg_quz_hr)},
 888         {IWL_PCI_DEVICE(0x02F0, 0x0244, iwl_ax101_cfg_quz_hr)},
 889         {IWL_PCI_DEVICE(0x02F0, 0x0310, iwl_ax201_cfg_quz_hr)},
 890         {IWL_PCI_DEVICE(0x02F0, 0x1651, iwl_ax1650s_cfg_quz_hr)},
 891         {IWL_PCI_DEVICE(0x02F0, 0x1652, iwl_ax1650i_cfg_quz_hr)},
 892         {IWL_PCI_DEVICE(0x02F0, 0x2074, iwl_ax201_cfg_quz_hr)},
 893         {IWL_PCI_DEVICE(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr)},
 894         {IWL_PCI_DEVICE(0x02F0, 0x4244, iwl_ax101_cfg_quz_hr)},
 895         {IWL_PCI_DEVICE(0x06F0, 0x0070, iwl_ax201_cfg_quz_hr)},
 896         {IWL_PCI_DEVICE(0x06F0, 0x0074, iwl_ax201_cfg_quz_hr)},
 897         {IWL_PCI_DEVICE(0x06F0, 0x0078, iwl_ax201_cfg_quz_hr)},
 898         {IWL_PCI_DEVICE(0x06F0, 0x007C, iwl_ax201_cfg_quz_hr)},
 899         {IWL_PCI_DEVICE(0x06F0, 0x0244, iwl_ax101_cfg_quz_hr)},
 900         {IWL_PCI_DEVICE(0x06F0, 0x0310, iwl_ax201_cfg_quz_hr)},
 901         {IWL_PCI_DEVICE(0x06F0, 0x1651, iwl_ax1650s_cfg_quz_hr)},
 902         {IWL_PCI_DEVICE(0x06F0, 0x1652, iwl_ax1650i_cfg_quz_hr)},
 903         {IWL_PCI_DEVICE(0x06F0, 0x2074, iwl_ax201_cfg_quz_hr)},
 904         {IWL_PCI_DEVICE(0x06F0, 0x4070, iwl_ax201_cfg_quz_hr)},
 905         {IWL_PCI_DEVICE(0x06F0, 0x4244, iwl_ax101_cfg_quz_hr)},
 906         {IWL_PCI_DEVICE(0x2720, 0x0000, iwl_ax101_cfg_qu_hr)},
 907         {IWL_PCI_DEVICE(0x2720, 0x0040, iwl_ax101_cfg_qu_hr)},
 908         {IWL_PCI_DEVICE(0x2720, 0x0044, iwl_ax101_cfg_qu_hr)},
 909         {IWL_PCI_DEVICE(0x2720, 0x0070, iwl_ax201_cfg_qu_hr)},
 910         {IWL_PCI_DEVICE(0x2720, 0x0074, iwl_ax201_cfg_qu_hr)},
 911         {IWL_PCI_DEVICE(0x2720, 0x0078, iwl_ax201_cfg_qu_hr)},
 912         {IWL_PCI_DEVICE(0x2720, 0x007C, iwl_ax201_cfg_qu_hr)},
 913         {IWL_PCI_DEVICE(0x2720, 0x0090, iwl22000_2ac_cfg_hr_cdb)},
 914         {IWL_PCI_DEVICE(0x2720, 0x0244, iwl_ax101_cfg_qu_hr)},
 915         {IWL_PCI_DEVICE(0x2720, 0x0310, iwl_ax201_cfg_qu_hr)},
 916         {IWL_PCI_DEVICE(0x2720, 0x0A10, iwl_ax201_cfg_qu_hr)},
 917         {IWL_PCI_DEVICE(0x2720, 0x1080, iwl_ax101_cfg_qu_hr)},
 918         {IWL_PCI_DEVICE(0x2720, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)},
 919         {IWL_PCI_DEVICE(0x2720, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)},
 920         {IWL_PCI_DEVICE(0x2720, 0x2074, iwl_ax201_cfg_qu_hr)},
 921         {IWL_PCI_DEVICE(0x2720, 0x4070, iwl_ax201_cfg_qu_hr)},
 922         {IWL_PCI_DEVICE(0x2720, 0x4244, iwl_ax101_cfg_qu_hr)},
 923         {IWL_PCI_DEVICE(0x34F0, 0x0044, iwl_ax101_cfg_qu_hr)},
 924         {IWL_PCI_DEVICE(0x34F0, 0x0070, iwl_ax201_cfg_qu_hr)},
 925         {IWL_PCI_DEVICE(0x34F0, 0x0074, iwl_ax201_cfg_qu_hr)},
 926         {IWL_PCI_DEVICE(0x34F0, 0x0078, iwl_ax201_cfg_qu_hr)},
 927         {IWL_PCI_DEVICE(0x34F0, 0x007C, iwl_ax201_cfg_qu_hr)},
 928         {IWL_PCI_DEVICE(0x34F0, 0x0244, iwl_ax101_cfg_qu_hr)},
 929         {IWL_PCI_DEVICE(0x34F0, 0x0310, iwl_ax201_cfg_qu_hr)},
 930         {IWL_PCI_DEVICE(0x34F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)},
 931         {IWL_PCI_DEVICE(0x34F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)},
 932         {IWL_PCI_DEVICE(0x34F0, 0x2074, iwl_ax201_cfg_qu_hr)},
 933         {IWL_PCI_DEVICE(0x34F0, 0x4070, iwl_ax201_cfg_qu_hr)},
 934         {IWL_PCI_DEVICE(0x34F0, 0x4244, iwl_ax101_cfg_qu_hr)},
 935         {IWL_PCI_DEVICE(0x43F0, 0x0044, iwl_ax101_cfg_qu_hr)},
 936         {IWL_PCI_DEVICE(0x43F0, 0x0070, iwl_ax201_cfg_qu_hr)},
 937         {IWL_PCI_DEVICE(0x43F0, 0x0074, iwl_ax201_cfg_qu_hr)},
 938         {IWL_PCI_DEVICE(0x43F0, 0x0078, iwl_ax201_cfg_qu_hr)},
 939         {IWL_PCI_DEVICE(0x43F0, 0x007C, iwl_ax201_cfg_qu_hr)},
 940         {IWL_PCI_DEVICE(0x43F0, 0x0244, iwl_ax101_cfg_qu_hr)},
 941         {IWL_PCI_DEVICE(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)},
 942         {IWL_PCI_DEVICE(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)},
 943         {IWL_PCI_DEVICE(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr)},
 944         {IWL_PCI_DEVICE(0x43F0, 0x4070, iwl_ax201_cfg_qu_hr)},
 945         {IWL_PCI_DEVICE(0x43F0, 0x4244, iwl_ax101_cfg_qu_hr)},
 946         {IWL_PCI_DEVICE(0xA0F0, 0x0044, iwl_ax101_cfg_qu_hr)},
 947         {IWL_PCI_DEVICE(0xA0F0, 0x0070, iwl_ax201_cfg_qu_hr)},
 948         {IWL_PCI_DEVICE(0xA0F0, 0x0074, iwl_ax201_cfg_qu_hr)},
 949         {IWL_PCI_DEVICE(0xA0F0, 0x0078, iwl_ax201_cfg_qu_hr)},
 950         {IWL_PCI_DEVICE(0xA0F0, 0x007C, iwl_ax201_cfg_qu_hr)},
 951         {IWL_PCI_DEVICE(0xA0F0, 0x0244, iwl_ax101_cfg_qu_hr)},
 952         {IWL_PCI_DEVICE(0xA0F0, 0x0A10, iwl_ax201_cfg_qu_hr)},
 953         {IWL_PCI_DEVICE(0xA0F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0)},
 954         {IWL_PCI_DEVICE(0xA0F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0)},
 955         {IWL_PCI_DEVICE(0xA0F0, 0x2074, iwl_ax201_cfg_qu_hr)},
 956         {IWL_PCI_DEVICE(0xA0F0, 0x4070, iwl_ax201_cfg_qu_hr)},
 957         {IWL_PCI_DEVICE(0xA0F0, 0x4244, iwl_ax101_cfg_qu_hr)},
 958 
 959         {IWL_PCI_DEVICE(0x2723, 0x0080, iwl_ax200_cfg_cc)},
 960         {IWL_PCI_DEVICE(0x2723, 0x0084, iwl_ax200_cfg_cc)},
 961         {IWL_PCI_DEVICE(0x2723, 0x0088, iwl_ax200_cfg_cc)},
 962         {IWL_PCI_DEVICE(0x2723, 0x008C, iwl_ax200_cfg_cc)},
 963         {IWL_PCI_DEVICE(0x2723, 0x1653, killer1650w_2ax_cfg)},
 964         {IWL_PCI_DEVICE(0x2723, 0x1654, killer1650x_2ax_cfg)},
 965         {IWL_PCI_DEVICE(0x2723, 0x2080, iwl_ax200_cfg_cc)},
 966         {IWL_PCI_DEVICE(0x2723, 0x4080, iwl_ax200_cfg_cc)},
 967         {IWL_PCI_DEVICE(0x2723, 0x4088, iwl_ax200_cfg_cc)},
 968 
 969         {IWL_PCI_DEVICE(0x2725, 0x0090, iwlax211_2ax_cfg_so_gf_a0)},
 970         {IWL_PCI_DEVICE(0x2725, 0x0020, iwlax210_2ax_cfg_ty_gf_a0)},
 971         {IWL_PCI_DEVICE(0x2725, 0x0310, iwlax210_2ax_cfg_ty_gf_a0)},
 972         {IWL_PCI_DEVICE(0x2725, 0x0510, iwlax210_2ax_cfg_ty_gf_a0)},
 973         {IWL_PCI_DEVICE(0x2725, 0x0A10, iwlax210_2ax_cfg_ty_gf_a0)},
 974         {IWL_PCI_DEVICE(0x2725, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0)},
 975         {IWL_PCI_DEVICE(0x7A70, 0x0090, iwlax211_2ax_cfg_so_gf_a0)},
 976         {IWL_PCI_DEVICE(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0)},
 977         {IWL_PCI_DEVICE(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0)},
 978         {IWL_PCI_DEVICE(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)},
 979         {IWL_PCI_DEVICE(0x7AF0, 0x0090, iwlax211_2ax_cfg_so_gf_a0)},
 980         {IWL_PCI_DEVICE(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0)},
 981         {IWL_PCI_DEVICE(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0)},
 982         {IWL_PCI_DEVICE(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)},
 983 
 984 #endif /* CONFIG_IWLMVM */
 985 
 986         {0}
 987 };
 988 MODULE_DEVICE_TABLE(pci, iwl_hw_card_ids);
 989 
 990 /* PCI registers */
 991 #define PCI_CFG_RETRY_TIMEOUT   0x041
 992 
 993 static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 994 {
 995         const struct iwl_cfg *cfg = (struct iwl_cfg *)(ent->driver_data);
 996         const struct iwl_cfg *cfg_7265d __maybe_unused = NULL;
 997         struct iwl_trans *iwl_trans;
 998         unsigned long flags;
 999         int ret;
1000 
1001         iwl_trans = iwl_trans_pcie_alloc(pdev, ent, &cfg->trans);
1002         if (IS_ERR(iwl_trans))
1003                 return PTR_ERR(iwl_trans);
1004 
1005         /* the trans_cfg should never change, so set it now */
1006         iwl_trans->trans_cfg = &cfg->trans;
1007 
1008         if (WARN_ONCE(!iwl_trans->trans_cfg->csr,
1009                       "CSR addresses aren't configured\n")) {
1010                 ret = -EINVAL;
1011                 goto out_free_trans;
1012         }
1013 
1014 #if IS_ENABLED(CONFIG_IWLMVM)
1015         /*
1016          * special-case 7265D, it has the same PCI IDs.
1017          *
1018          * Note that because we already pass the cfg to the transport above,
1019          * all the parameters that the transport uses must, until that is
1020          * changed, be identical to the ones in the 7265D configuration.
1021          */
1022         if (cfg == &iwl7265_2ac_cfg)
1023                 cfg_7265d = &iwl7265d_2ac_cfg;
1024         else if (cfg == &iwl7265_2n_cfg)
1025                 cfg_7265d = &iwl7265d_2n_cfg;
1026         else if (cfg == &iwl7265_n_cfg)
1027                 cfg_7265d = &iwl7265d_n_cfg;
1028         if (cfg_7265d &&
1029             (iwl_trans->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_7265D)
1030                 cfg = cfg_7265d;
1031 
1032         iwl_trans->hw_rf_id = iwl_read32(iwl_trans, CSR_HW_RF_ID);
1033 
1034         if (cfg == &iwlax210_2ax_cfg_so_hr_a0) {
1035                 if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_TY) {
1036                         cfg = &iwlax210_2ax_cfg_ty_gf_a0;
1037                 } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1038                            CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_JF)) {
1039                         cfg = &iwlax210_2ax_cfg_so_jf_a0;
1040                 } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1041                            CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_GF)) {
1042                         cfg = &iwlax211_2ax_cfg_so_gf_a0;
1043                 } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1044                            CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_GF4)) {
1045                         cfg = &iwlax411_2ax_cfg_so_gf4_a0;
1046                 }
1047         } else if (cfg == &iwl_ax101_cfg_qu_hr) {
1048                 if ((CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1049                      CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR) &&
1050                      iwl_trans->hw_rev == CSR_HW_REV_TYPE_QNJ_B0) ||
1051                     (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1052                      CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR1))) {
1053                         cfg = &iwl22000_2ax_cfg_qnj_hr_b0;
1054                 } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1055                            CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR)) {
1056                         cfg = &iwl_ax101_cfg_qu_hr;
1057                 } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1058                            CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_JF)) {
1059                         cfg = &iwl22000_2ax_cfg_jf;
1060                 } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1061                            CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HRCDB)) {
1062                         IWL_ERR(iwl_trans, "RF ID HRCDB is not supported\n");
1063                         return -EINVAL;
1064                 } else {
1065                         IWL_ERR(iwl_trans, "Unrecognized RF ID 0x%08x\n",
1066                                 CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id));
1067                         return -EINVAL;
1068                 }
1069         } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) ==
1070                    CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR) &&
1071                    iwl_trans->hw_rev == CSR_HW_REV_TYPE_QNJ_B0) {
1072                 u32 hw_status;
1073 
1074                 hw_status = iwl_read_prph(iwl_trans, UMAG_GEN_HW_STATUS);
1075                 if (CSR_HW_RF_STEP(iwl_trans->hw_rf_id) == SILICON_B_STEP)
1076                         /*
1077                          * b step fw is the same for physical card and fpga
1078                          */
1079                         cfg = &iwl22000_2ax_cfg_qnj_hr_b0;
1080                 else if ((hw_status & UMAG_GEN_HW_IS_FPGA) &&
1081                          CSR_HW_RF_STEP(iwl_trans->hw_rf_id) == SILICON_A_STEP) {
1082                         cfg = &iwl22000_2ax_cfg_qnj_hr_a0_f0;
1083                 } else {
1084                         /*
1085                          * a step no FPGA
1086                          */
1087                         cfg = &iwl22000_2ac_cfg_hr;
1088                 }
1089         }
1090 
1091         /*
1092          * This is a hack to switch from Qu B0 to Qu C0.  We need to
1093          * do this for all cfgs that use Qu B0.  All this code is in
1094          * urgent need for a refactor, but for now this is the easiest
1095          * thing to do to support Qu C-step.
1096          */
1097         if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QU_C0) {
1098                 if (cfg == &iwl_ax101_cfg_qu_hr)
1099                         cfg = &iwl_ax101_cfg_qu_c0_hr_b0;
1100                 else if (cfg == &iwl_ax201_cfg_qu_hr)
1101                         cfg = &iwl_ax201_cfg_qu_c0_hr_b0;
1102                 else if (cfg == &iwl9461_2ac_cfg_qu_b0_jf_b0)
1103                         cfg = &iwl9461_2ac_cfg_qu_c0_jf_b0;
1104                 else if (cfg == &iwl9462_2ac_cfg_qu_b0_jf_b0)
1105                         cfg = &iwl9462_2ac_cfg_qu_c0_jf_b0;
1106                 else if (cfg == &iwl9560_2ac_cfg_qu_b0_jf_b0)
1107                         cfg = &iwl9560_2ac_cfg_qu_c0_jf_b0;
1108                 else if (cfg == &iwl9560_2ac_160_cfg_qu_b0_jf_b0)
1109                         cfg = &iwl9560_2ac_160_cfg_qu_c0_jf_b0;
1110         }
1111 
1112         /* same thing for QuZ... */
1113         if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QUZ) {
1114                 if (cfg == &iwl_ax101_cfg_qu_hr)
1115                         cfg = &iwl_ax101_cfg_quz_hr;
1116                 else if (cfg == &iwl_ax201_cfg_qu_hr)
1117                         cfg = &iwl_ax201_cfg_quz_hr;
1118                 else if (cfg == &iwl9461_2ac_cfg_qu_b0_jf_b0)
1119                         cfg = &iwl9461_2ac_cfg_quz_a0_jf_b0_soc;
1120                 else if (cfg == &iwl9462_2ac_cfg_qu_b0_jf_b0)
1121                         cfg = &iwl9462_2ac_cfg_quz_a0_jf_b0_soc;
1122                 else if (cfg == &iwl9560_2ac_cfg_qu_b0_jf_b0)
1123                         cfg = &iwl9560_2ac_cfg_quz_a0_jf_b0_soc;
1124                 else if (cfg == &iwl9560_2ac_160_cfg_qu_b0_jf_b0)
1125                         cfg = &iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc;
1126         }
1127 
1128 #endif
1129         /* now set the real cfg we decided to use */
1130         iwl_trans->cfg = cfg;
1131 
1132         if (iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_8000 &&
1133             iwl_trans_grab_nic_access(iwl_trans, &flags)) {
1134                 u32 hw_step;
1135 
1136                 hw_step = iwl_read_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG);
1137                 hw_step |= ENABLE_WFPM;
1138                 iwl_write_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG, hw_step);
1139                 hw_step = iwl_read_prph_no_grab(iwl_trans, CNVI_AUX_MISC_CHIP);
1140                 hw_step = (hw_step >> HW_STEP_LOCATION_BITS) & 0xF;
1141                 if (hw_step == 0x3)
1142                         iwl_trans->hw_rev = (iwl_trans->hw_rev & 0xFFFFFFF3) |
1143                                 (SILICON_C_STEP << 2);
1144                 iwl_trans_release_nic_access(iwl_trans, &flags);
1145         }
1146 
1147         pci_set_drvdata(pdev, iwl_trans);
1148         iwl_trans->drv = iwl_drv_start(iwl_trans);
1149 
1150         if (IS_ERR(iwl_trans->drv)) {
1151                 ret = PTR_ERR(iwl_trans->drv);
1152                 goto out_free_trans;
1153         }
1154 
1155         /* register transport layer debugfs here */
1156         iwl_trans_pcie_dbgfs_register(iwl_trans);
1157 
1158         /* The PCI device starts with a reference taken and we are
1159          * supposed to release it here.  But to simplify the
1160          * interaction with the opmode, we don't do it now, but let
1161          * the opmode release it when it's ready.
1162          */
1163 
1164         return 0;
1165 
1166 out_free_trans:
1167         iwl_trans_pcie_free(iwl_trans);
1168         return ret;
1169 }
1170 
1171 static void iwl_pci_remove(struct pci_dev *pdev)
1172 {
1173         struct iwl_trans *trans = pci_get_drvdata(pdev);
1174 
1175         iwl_drv_stop(trans->drv);
1176 
1177         iwl_trans_pcie_free(trans);
1178 }
1179 
1180 #ifdef CONFIG_PM_SLEEP
1181 
1182 static int iwl_pci_suspend(struct device *device)
1183 {
1184         /* Before you put code here, think about WoWLAN. You cannot check here
1185          * whether WoWLAN is enabled or not, and your code will run even if
1186          * WoWLAN is enabled - don't kill the NIC, someone may need it in Sx.
1187          */
1188 
1189         return 0;
1190 }
1191 
1192 static int iwl_pci_resume(struct device *device)
1193 {
1194         struct pci_dev *pdev = to_pci_dev(device);
1195         struct iwl_trans *trans = pci_get_drvdata(pdev);
1196         struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
1197 
1198         /* Before you put code here, think about WoWLAN. You cannot check here
1199          * whether WoWLAN is enabled or not, and your code will run even if
1200          * WoWLAN is enabled - the NIC may be alive.
1201          */
1202 
1203         /*
1204          * We disable the RETRY_TIMEOUT register (0x41) to keep
1205          * PCI Tx retries from interfering with C3 CPU state.
1206          */
1207         pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00);
1208 
1209         if (!trans->op_mode)
1210                 return 0;
1211 
1212         /* In WOWLAN, let iwl_trans_pcie_d3_resume do the rest of the work */
1213         if (test_bit(STATUS_DEVICE_ENABLED, &trans->status))
1214                 return 0;
1215 
1216         /* reconfigure the MSI-X mapping to get the correct IRQ for rfkill */
1217         iwl_pcie_conf_msix_hw(trans_pcie);
1218 
1219         /*
1220          * Enable rfkill interrupt (in order to keep track of the rfkill
1221          * status). Must be locked to avoid processing a possible rfkill
1222          * interrupt while in iwl_pcie_check_hw_rf_kill().
1223          */
1224         mutex_lock(&trans_pcie->mutex);
1225         iwl_enable_rfkill_int(trans);
1226         iwl_pcie_check_hw_rf_kill(trans);
1227         mutex_unlock(&trans_pcie->mutex);
1228 
1229         return 0;
1230 }
1231 
1232 static const struct dev_pm_ops iwl_dev_pm_ops = {
1233         SET_SYSTEM_SLEEP_PM_OPS(iwl_pci_suspend,
1234                                 iwl_pci_resume)
1235 };
1236 
1237 #define IWL_PM_OPS      (&iwl_dev_pm_ops)
1238 
1239 #else /* CONFIG_PM_SLEEP */
1240 
1241 #define IWL_PM_OPS      NULL
1242 
1243 #endif /* CONFIG_PM_SLEEP */
1244 
1245 static struct pci_driver iwl_pci_driver = {
1246         .name = DRV_NAME,
1247         .id_table = iwl_hw_card_ids,
1248         .probe = iwl_pci_probe,
1249         .remove = iwl_pci_remove,
1250         .driver.pm = IWL_PM_OPS,
1251 };
1252 
1253 int __must_check iwl_pci_register_driver(void)
1254 {
1255         int ret;
1256         ret = pci_register_driver(&iwl_pci_driver);
1257         if (ret)
1258                 pr_err("Unable to initialize PCI module\n");
1259 
1260         return ret;
1261 }
1262 
1263 void iwl_pci_unregister_driver(void)
1264 {
1265         pci_unregister_driver(&iwl_pci_driver);
1266 }

/* [<][>][^][v][top][bottom][index][help] */