The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/dev/iwlwifi/pcie/drv.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
    2 /*
    3  * Copyright (C) 2005-2014, 2018-2021 Intel Corporation
    4  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
    5  * Copyright (C) 2016-2017 Intel Deutschland GmbH
    6  */
    7 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
    8 
    9 #include <linux/module.h>
   10 #include <linux/pci.h>
   11 #include <linux/acpi.h>
   12 
   13 #include "fw/acpi.h"
   14 
   15 #include "iwl-trans.h"
   16 #include "iwl-drv.h"
   17 #include "iwl-prph.h"
   18 #include "internal.h"
   19 
   20 #define TRANS_CFG_MARKER BIT(0)
   21 #define _IS_A(cfg, _struct) __builtin_types_compatible_p(typeof(cfg),   \
   22                                                          struct _struct)
   23 extern int _invalid_type;
   24 #define _TRANS_CFG_MARKER(cfg)                                          \
   25         (__builtin_choose_expr(_IS_A(cfg, iwl_cfg_trans_params),        \
   26                                TRANS_CFG_MARKER,                        \
   27          __builtin_choose_expr(_IS_A(cfg, iwl_cfg), 0, _invalid_type)))
   28 #define _ASSIGN_CFG(cfg) (_TRANS_CFG_MARKER(cfg) + (kernel_ulong_t)&(cfg))
   29 
   30 #define IWL_PCI_DEVICE(dev, subdev, cfg) \
   31         .vendor = PCI_VENDOR_ID_INTEL,  .device = (dev), \
   32         .subvendor = PCI_ANY_ID, .subdevice = (subdev), \
   33         .driver_data = _ASSIGN_CFG(cfg)
   34 
   35 /* Hardware specific file defines the PCI IDs table for that hardware module */
   36 static const struct pci_device_id iwl_hw_card_ids[] = {
   37 #if IS_ENABLED(CONFIG_IWLDVM)
   38         {IWL_PCI_DEVICE(0x4232, 0x1201, iwl5100_agn_cfg)}, /* Mini Card */
   39         {IWL_PCI_DEVICE(0x4232, 0x1301, iwl5100_agn_cfg)}, /* Half Mini Card */
   40         {IWL_PCI_DEVICE(0x4232, 0x1204, iwl5100_agn_cfg)}, /* Mini Card */
   41         {IWL_PCI_DEVICE(0x4232, 0x1304, iwl5100_agn_cfg)}, /* Half Mini Card */
   42         {IWL_PCI_DEVICE(0x4232, 0x1205, iwl5100_bgn_cfg)}, /* Mini Card */
   43         {IWL_PCI_DEVICE(0x4232, 0x1305, iwl5100_bgn_cfg)}, /* Half Mini Card */
   44         {IWL_PCI_DEVICE(0x4232, 0x1206, iwl5100_abg_cfg)}, /* Mini Card */
   45         {IWL_PCI_DEVICE(0x4232, 0x1306, iwl5100_abg_cfg)}, /* Half Mini Card */
   46         {IWL_PCI_DEVICE(0x4232, 0x1221, iwl5100_agn_cfg)}, /* Mini Card */
   47         {IWL_PCI_DEVICE(0x4232, 0x1321, iwl5100_agn_cfg)}, /* Half Mini Card */
   48         {IWL_PCI_DEVICE(0x4232, 0x1224, iwl5100_agn_cfg)}, /* Mini Card */
   49         {IWL_PCI_DEVICE(0x4232, 0x1324, iwl5100_agn_cfg)}, /* Half Mini Card */
   50         {IWL_PCI_DEVICE(0x4232, 0x1225, iwl5100_bgn_cfg)}, /* Mini Card */
   51         {IWL_PCI_DEVICE(0x4232, 0x1325, iwl5100_bgn_cfg)}, /* Half Mini Card */
   52         {IWL_PCI_DEVICE(0x4232, 0x1226, iwl5100_abg_cfg)}, /* Mini Card */
   53         {IWL_PCI_DEVICE(0x4232, 0x1326, iwl5100_abg_cfg)}, /* Half Mini Card */
   54         {IWL_PCI_DEVICE(0x4237, 0x1211, iwl5100_agn_cfg)}, /* Mini Card */
   55         {IWL_PCI_DEVICE(0x4237, 0x1311, iwl5100_agn_cfg)}, /* Half Mini Card */
   56         {IWL_PCI_DEVICE(0x4237, 0x1214, iwl5100_agn_cfg)}, /* Mini Card */
   57         {IWL_PCI_DEVICE(0x4237, 0x1314, iwl5100_agn_cfg)}, /* Half Mini Card */
   58         {IWL_PCI_DEVICE(0x4237, 0x1215, iwl5100_bgn_cfg)}, /* Mini Card */
   59         {IWL_PCI_DEVICE(0x4237, 0x1315, iwl5100_bgn_cfg)}, /* Half Mini Card */
   60         {IWL_PCI_DEVICE(0x4237, 0x1216, iwl5100_abg_cfg)}, /* Mini Card */
   61         {IWL_PCI_DEVICE(0x4237, 0x1316, iwl5100_abg_cfg)}, /* Half Mini Card */
   62 
   63 /* 5300 Series WiFi */
   64         {IWL_PCI_DEVICE(0x4235, 0x1021, iwl5300_agn_cfg)}, /* Mini Card */
   65         {IWL_PCI_DEVICE(0x4235, 0x1121, iwl5300_agn_cfg)}, /* Half Mini Card */
   66         {IWL_PCI_DEVICE(0x4235, 0x1024, iwl5300_agn_cfg)}, /* Mini Card */
   67         {IWL_PCI_DEVICE(0x4235, 0x1124, iwl5300_agn_cfg)}, /* Half Mini Card */
   68         {IWL_PCI_DEVICE(0x4235, 0x1001, iwl5300_agn_cfg)}, /* Mini Card */
   69         {IWL_PCI_DEVICE(0x4235, 0x1101, iwl5300_agn_cfg)}, /* Half Mini Card */
   70         {IWL_PCI_DEVICE(0x4235, 0x1004, iwl5300_agn_cfg)}, /* Mini Card */
   71         {IWL_PCI_DEVICE(0x4235, 0x1104, iwl5300_agn_cfg)}, /* Half Mini Card */
   72         {IWL_PCI_DEVICE(0x4236, 0x1011, iwl5300_agn_cfg)}, /* Mini Card */
   73         {IWL_PCI_DEVICE(0x4236, 0x1111, iwl5300_agn_cfg)}, /* Half Mini Card */
   74         {IWL_PCI_DEVICE(0x4236, 0x1014, iwl5300_agn_cfg)}, /* Mini Card */
   75         {IWL_PCI_DEVICE(0x4236, 0x1114, iwl5300_agn_cfg)}, /* Half Mini Card */
   76 
   77 /* 5350 Series WiFi/WiMax */
   78         {IWL_PCI_DEVICE(0x423A, 0x1001, iwl5350_agn_cfg)}, /* Mini Card */
   79         {IWL_PCI_DEVICE(0x423A, 0x1021, iwl5350_agn_cfg)}, /* Mini Card */
   80         {IWL_PCI_DEVICE(0x423B, 0x1011, iwl5350_agn_cfg)}, /* Mini Card */
   81 
   82 /* 5150 Series Wifi/WiMax */
   83         {IWL_PCI_DEVICE(0x423C, 0x1201, iwl5150_agn_cfg)}, /* Mini Card */
   84         {IWL_PCI_DEVICE(0x423C, 0x1301, iwl5150_agn_cfg)}, /* Half Mini Card */
   85         {IWL_PCI_DEVICE(0x423C, 0x1206, iwl5150_abg_cfg)}, /* Mini Card */
   86         {IWL_PCI_DEVICE(0x423C, 0x1306, iwl5150_abg_cfg)}, /* Half Mini Card */
   87         {IWL_PCI_DEVICE(0x423C, 0x1221, iwl5150_agn_cfg)}, /* Mini Card */
   88         {IWL_PCI_DEVICE(0x423C, 0x1321, iwl5150_agn_cfg)}, /* Half Mini Card */
   89         {IWL_PCI_DEVICE(0x423C, 0x1326, iwl5150_abg_cfg)}, /* Half Mini Card */
   90 
   91         {IWL_PCI_DEVICE(0x423D, 0x1211, iwl5150_agn_cfg)}, /* Mini Card */
   92         {IWL_PCI_DEVICE(0x423D, 0x1311, iwl5150_agn_cfg)}, /* Half Mini Card */
   93         {IWL_PCI_DEVICE(0x423D, 0x1216, iwl5150_abg_cfg)}, /* Mini Card */
   94         {IWL_PCI_DEVICE(0x423D, 0x1316, iwl5150_abg_cfg)}, /* Half Mini Card */
   95 
   96 /* 6x00 Series */
   97         {IWL_PCI_DEVICE(0x422B, 0x1101, iwl6000_3agn_cfg)},
   98         {IWL_PCI_DEVICE(0x422B, 0x1108, iwl6000_3agn_cfg)},
   99         {IWL_PCI_DEVICE(0x422B, 0x1121, iwl6000_3agn_cfg)},
  100         {IWL_PCI_DEVICE(0x422B, 0x1128, iwl6000_3agn_cfg)},
  101         {IWL_PCI_DEVICE(0x422C, 0x1301, iwl6000i_2agn_cfg)},
  102         {IWL_PCI_DEVICE(0x422C, 0x1306, iwl6000i_2abg_cfg)},
  103         {IWL_PCI_DEVICE(0x422C, 0x1307, iwl6000i_2bg_cfg)},
  104         {IWL_PCI_DEVICE(0x422C, 0x1321, iwl6000i_2agn_cfg)},
  105         {IWL_PCI_DEVICE(0x422C, 0x1326, iwl6000i_2abg_cfg)},
  106         {IWL_PCI_DEVICE(0x4238, 0x1111, iwl6000_3agn_cfg)},
  107         {IWL_PCI_DEVICE(0x4238, 0x1118, iwl6000_3agn_cfg)},
  108         {IWL_PCI_DEVICE(0x4239, 0x1311, iwl6000i_2agn_cfg)},
  109         {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_2abg_cfg)},
  110 
  111 /* 6x05 Series */
  112         {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6005_2agn_cfg)},
  113         {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6005_2abg_cfg)},
  114         {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6005_2bg_cfg)},
  115         {IWL_PCI_DEVICE(0x0082, 0x1308, iwl6005_2agn_cfg)},
  116         {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6005_2agn_cfg)},
  117         {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6005_2abg_cfg)},
  118         {IWL_PCI_DEVICE(0x0082, 0x1328, iwl6005_2agn_cfg)},
  119         {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6005_2agn_cfg)},
  120         {IWL_PCI_DEVICE(0x0085, 0x1318, iwl6005_2agn_cfg)},
  121         {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6005_2abg_cfg)},
  122         {IWL_PCI_DEVICE(0x0082, 0xC020, iwl6005_2agn_sff_cfg)},
  123         {IWL_PCI_DEVICE(0x0085, 0xC220, iwl6005_2agn_sff_cfg)},
  124         {IWL_PCI_DEVICE(0x0085, 0xC228, iwl6005_2agn_sff_cfg)},
  125         {IWL_PCI_DEVICE(0x0082, 0x4820, iwl6005_2agn_d_cfg)},
  126         {IWL_PCI_DEVICE(0x0082, 0x1304, iwl6005_2agn_mow1_cfg)},/* low 5GHz active */
  127         {IWL_PCI_DEVICE(0x0082, 0x1305, iwl6005_2agn_mow2_cfg)},/* high 5GHz active */
  128 
  129 /* 6x30 Series */
  130         {IWL_PCI_DEVICE(0x008A, 0x5305, iwl1030_bgn_cfg)},
  131         {IWL_PCI_DEVICE(0x008A, 0x5307, iwl1030_bg_cfg)},
  132         {IWL_PCI_DEVICE(0x008A, 0x5325, iwl1030_bgn_cfg)},
  133         {IWL_PCI_DEVICE(0x008A, 0x5327, iwl1030_bg_cfg)},
  134         {IWL_PCI_DEVICE(0x008B, 0x5315, iwl1030_bgn_cfg)},
  135         {IWL_PCI_DEVICE(0x008B, 0x5317, iwl1030_bg_cfg)},
  136         {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6030_2agn_cfg)},
  137         {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6030_2bgn_cfg)},
  138         {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6030_2abg_cfg)},
  139         {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6030_2agn_cfg)},
  140         {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6030_2bgn_cfg)},
  141         {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6030_2abg_cfg)},
  142         {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6030_2bg_cfg)},
  143         {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6030_2agn_cfg)},
  144         {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6030_2bgn_cfg)},
  145         {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6030_2abg_cfg)},
  146 
  147 /* 6x50 WiFi/WiMax Series */
  148         {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)},
  149         {IWL_PCI_DEVICE(0x0087, 0x1306, iwl6050_2abg_cfg)},
  150         {IWL_PCI_DEVICE(0x0087, 0x1321, iwl6050_2agn_cfg)},
  151         {IWL_PCI_DEVICE(0x0087, 0x1326, iwl6050_2abg_cfg)},
  152         {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_2agn_cfg)},
  153         {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)},
  154 
  155 /* 6150 WiFi/WiMax Series */
  156         {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6150_bgn_cfg)},
  157         {IWL_PCI_DEVICE(0x0885, 0x1307, iwl6150_bg_cfg)},
  158         {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6150_bgn_cfg)},
  159         {IWL_PCI_DEVICE(0x0885, 0x1327, iwl6150_bg_cfg)},
  160         {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6150_bgn_cfg)},
  161         {IWL_PCI_DEVICE(0x0886, 0x1317, iwl6150_bg_cfg)},
  162 
  163 /* 1000 Series WiFi */
  164         {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)},
  165         {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_bgn_cfg)},
  166         {IWL_PCI_DEVICE(0x0083, 0x1225, iwl1000_bgn_cfg)},
  167         {IWL_PCI_DEVICE(0x0083, 0x1325, iwl1000_bgn_cfg)},
  168         {IWL_PCI_DEVICE(0x0084, 0x1215, iwl1000_bgn_cfg)},
  169         {IWL_PCI_DEVICE(0x0084, 0x1315, iwl1000_bgn_cfg)},
  170         {IWL_PCI_DEVICE(0x0083, 0x1206, iwl1000_bg_cfg)},
  171         {IWL_PCI_DEVICE(0x0083, 0x1306, iwl1000_bg_cfg)},
  172         {IWL_PCI_DEVICE(0x0083, 0x1226, iwl1000_bg_cfg)},
  173         {IWL_PCI_DEVICE(0x0083, 0x1326, iwl1000_bg_cfg)},
  174         {IWL_PCI_DEVICE(0x0084, 0x1216, iwl1000_bg_cfg)},
  175         {IWL_PCI_DEVICE(0x0084, 0x1316, iwl1000_bg_cfg)},
  176 
  177 /* 100 Series WiFi */
  178         {IWL_PCI_DEVICE(0x08AE, 0x1005, iwl100_bgn_cfg)},
  179         {IWL_PCI_DEVICE(0x08AE, 0x1007, iwl100_bg_cfg)},
  180         {IWL_PCI_DEVICE(0x08AF, 0x1015, iwl100_bgn_cfg)},
  181         {IWL_PCI_DEVICE(0x08AF, 0x1017, iwl100_bg_cfg)},
  182         {IWL_PCI_DEVICE(0x08AE, 0x1025, iwl100_bgn_cfg)},
  183         {IWL_PCI_DEVICE(0x08AE, 0x1027, iwl100_bg_cfg)},
  184 
  185 /* 130 Series WiFi */
  186         {IWL_PCI_DEVICE(0x0896, 0x5005, iwl130_bgn_cfg)},
  187         {IWL_PCI_DEVICE(0x0896, 0x5007, iwl130_bg_cfg)},
  188         {IWL_PCI_DEVICE(0x0897, 0x5015, iwl130_bgn_cfg)},
  189         {IWL_PCI_DEVICE(0x0897, 0x5017, iwl130_bg_cfg)},
  190         {IWL_PCI_DEVICE(0x0896, 0x5025, iwl130_bgn_cfg)},
  191         {IWL_PCI_DEVICE(0x0896, 0x5027, iwl130_bg_cfg)},
  192 
  193 /* 2x00 Series */
  194         {IWL_PCI_DEVICE(0x0890, 0x4022, iwl2000_2bgn_cfg)},
  195         {IWL_PCI_DEVICE(0x0891, 0x4222, iwl2000_2bgn_cfg)},
  196         {IWL_PCI_DEVICE(0x0890, 0x4422, iwl2000_2bgn_cfg)},
  197         {IWL_PCI_DEVICE(0x0890, 0x4822, iwl2000_2bgn_d_cfg)},
  198 
  199 /* 2x30 Series */
  200         {IWL_PCI_DEVICE(0x0887, 0x4062, iwl2030_2bgn_cfg)},
  201         {IWL_PCI_DEVICE(0x0888, 0x4262, iwl2030_2bgn_cfg)},
  202         {IWL_PCI_DEVICE(0x0887, 0x4462, iwl2030_2bgn_cfg)},
  203 
  204 /* 6x35 Series */
  205         {IWL_PCI_DEVICE(0x088E, 0x4060, iwl6035_2agn_cfg)},
  206         {IWL_PCI_DEVICE(0x088E, 0x406A, iwl6035_2agn_sff_cfg)},
  207         {IWL_PCI_DEVICE(0x088F, 0x4260, iwl6035_2agn_cfg)},
  208         {IWL_PCI_DEVICE(0x088F, 0x426A, iwl6035_2agn_sff_cfg)},
  209         {IWL_PCI_DEVICE(0x088E, 0x4460, iwl6035_2agn_cfg)},
  210         {IWL_PCI_DEVICE(0x088E, 0x446A, iwl6035_2agn_sff_cfg)},
  211         {IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)},
  212         {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)},
  213 
  214 /* 105 Series */
  215         {IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)},
  216         {IWL_PCI_DEVICE(0x0895, 0x0222, iwl105_bgn_cfg)},
  217         {IWL_PCI_DEVICE(0x0894, 0x0422, iwl105_bgn_cfg)},
  218         {IWL_PCI_DEVICE(0x0894, 0x0822, iwl105_bgn_d_cfg)},
  219 
  220 /* 135 Series */
  221         {IWL_PCI_DEVICE(0x0892, 0x0062, iwl135_bgn_cfg)},
  222         {IWL_PCI_DEVICE(0x0893, 0x0262, iwl135_bgn_cfg)},
  223         {IWL_PCI_DEVICE(0x0892, 0x0462, iwl135_bgn_cfg)},
  224 #endif /* CONFIG_IWLDVM */
  225 
  226 #if IS_ENABLED(CONFIG_IWLMVM)
  227 /* 7260 Series */
  228         {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)},
  229         {IWL_PCI_DEVICE(0x08B1, 0x4072, iwl7260_2ac_cfg)},
  230         {IWL_PCI_DEVICE(0x08B1, 0x4170, iwl7260_2ac_cfg)},
  231         {IWL_PCI_DEVICE(0x08B1, 0x4C60, iwl7260_2ac_cfg)},
  232         {IWL_PCI_DEVICE(0x08B1, 0x4C70, iwl7260_2ac_cfg)},
  233         {IWL_PCI_DEVICE(0x08B1, 0x4060, iwl7260_2n_cfg)},
  234         {IWL_PCI_DEVICE(0x08B1, 0x406A, iwl7260_2n_cfg)},
  235         {IWL_PCI_DEVICE(0x08B1, 0x4160, iwl7260_2n_cfg)},
  236         {IWL_PCI_DEVICE(0x08B1, 0x4062, iwl7260_n_cfg)},
  237         {IWL_PCI_DEVICE(0x08B1, 0x4162, iwl7260_n_cfg)},
  238         {IWL_PCI_DEVICE(0x08B2, 0x4270, iwl7260_2ac_cfg)},
  239         {IWL_PCI_DEVICE(0x08B2, 0x4272, iwl7260_2ac_cfg)},
  240         {IWL_PCI_DEVICE(0x08B2, 0x4260, iwl7260_2n_cfg)},
  241         {IWL_PCI_DEVICE(0x08B2, 0x426A, iwl7260_2n_cfg)},
  242         {IWL_PCI_DEVICE(0x08B2, 0x4262, iwl7260_n_cfg)},
  243         {IWL_PCI_DEVICE(0x08B1, 0x4470, iwl7260_2ac_cfg)},
  244         {IWL_PCI_DEVICE(0x08B1, 0x4472, iwl7260_2ac_cfg)},
  245         {IWL_PCI_DEVICE(0x08B1, 0x4460, iwl7260_2n_cfg)},
  246         {IWL_PCI_DEVICE(0x08B1, 0x446A, iwl7260_2n_cfg)},
  247         {IWL_PCI_DEVICE(0x08B1, 0x4462, iwl7260_n_cfg)},
  248         {IWL_PCI_DEVICE(0x08B1, 0x4870, iwl7260_2ac_cfg)},
  249         {IWL_PCI_DEVICE(0x08B1, 0x486E, iwl7260_2ac_cfg)},
  250         {IWL_PCI_DEVICE(0x08B1, 0x4A70, iwl7260_2ac_cfg_high_temp)},
  251         {IWL_PCI_DEVICE(0x08B1, 0x4A6E, iwl7260_2ac_cfg_high_temp)},
  252         {IWL_PCI_DEVICE(0x08B1, 0x4A6C, iwl7260_2ac_cfg_high_temp)},
  253         {IWL_PCI_DEVICE(0x08B1, 0x4570, iwl7260_2ac_cfg)},
  254         {IWL_PCI_DEVICE(0x08B1, 0x4560, iwl7260_2n_cfg)},
  255         {IWL_PCI_DEVICE(0x08B2, 0x4370, iwl7260_2ac_cfg)},
  256         {IWL_PCI_DEVICE(0x08B2, 0x4360, iwl7260_2n_cfg)},
  257         {IWL_PCI_DEVICE(0x08B1, 0x5070, iwl7260_2ac_cfg)},
  258         {IWL_PCI_DEVICE(0x08B1, 0x5072, iwl7260_2ac_cfg)},
  259         {IWL_PCI_DEVICE(0x08B1, 0x5170, iwl7260_2ac_cfg)},
  260         {IWL_PCI_DEVICE(0x08B1, 0x5770, iwl7260_2ac_cfg)},
  261         {IWL_PCI_DEVICE(0x08B1, 0x4020, iwl7260_2n_cfg)},
  262         {IWL_PCI_DEVICE(0x08B1, 0x402A, iwl7260_2n_cfg)},
  263         {IWL_PCI_DEVICE(0x08B2, 0x4220, iwl7260_2n_cfg)},
  264         {IWL_PCI_DEVICE(0x08B1, 0x4420, iwl7260_2n_cfg)},
  265         {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)},
  266         {IWL_PCI_DEVICE(0x08B1, 0xC072, iwl7260_2ac_cfg)},
  267         {IWL_PCI_DEVICE(0x08B1, 0xC170, iwl7260_2ac_cfg)},
  268         {IWL_PCI_DEVICE(0x08B1, 0xC060, iwl7260_2n_cfg)},
  269         {IWL_PCI_DEVICE(0x08B1, 0xC06A, iwl7260_2n_cfg)},
  270         {IWL_PCI_DEVICE(0x08B1, 0xC160, iwl7260_2n_cfg)},
  271         {IWL_PCI_DEVICE(0x08B1, 0xC062, iwl7260_n_cfg)},
  272         {IWL_PCI_DEVICE(0x08B1, 0xC162, iwl7260_n_cfg)},
  273         {IWL_PCI_DEVICE(0x08B1, 0xC770, iwl7260_2ac_cfg)},
  274         {IWL_PCI_DEVICE(0x08B1, 0xC760, iwl7260_2n_cfg)},
  275         {IWL_PCI_DEVICE(0x08B2, 0xC270, iwl7260_2ac_cfg)},
  276         {IWL_PCI_DEVICE(0x08B1, 0xCC70, iwl7260_2ac_cfg)},
  277         {IWL_PCI_DEVICE(0x08B1, 0xCC60, iwl7260_2ac_cfg)},
  278         {IWL_PCI_DEVICE(0x08B2, 0xC272, iwl7260_2ac_cfg)},
  279         {IWL_PCI_DEVICE(0x08B2, 0xC260, iwl7260_2n_cfg)},
  280         {IWL_PCI_DEVICE(0x08B2, 0xC26A, iwl7260_n_cfg)},
  281         {IWL_PCI_DEVICE(0x08B2, 0xC262, iwl7260_n_cfg)},
  282         {IWL_PCI_DEVICE(0x08B1, 0xC470, iwl7260_2ac_cfg)},
  283         {IWL_PCI_DEVICE(0x08B1, 0xC472, iwl7260_2ac_cfg)},
  284         {IWL_PCI_DEVICE(0x08B1, 0xC460, iwl7260_2n_cfg)},
  285         {IWL_PCI_DEVICE(0x08B1, 0xC462, iwl7260_n_cfg)},
  286         {IWL_PCI_DEVICE(0x08B1, 0xC570, iwl7260_2ac_cfg)},
  287         {IWL_PCI_DEVICE(0x08B1, 0xC560, iwl7260_2n_cfg)},
  288         {IWL_PCI_DEVICE(0x08B2, 0xC370, iwl7260_2ac_cfg)},
  289         {IWL_PCI_DEVICE(0x08B1, 0xC360, iwl7260_2n_cfg)},
  290         {IWL_PCI_DEVICE(0x08B1, 0xC020, iwl7260_2n_cfg)},
  291         {IWL_PCI_DEVICE(0x08B1, 0xC02A, iwl7260_2n_cfg)},
  292         {IWL_PCI_DEVICE(0x08B2, 0xC220, iwl7260_2n_cfg)},
  293         {IWL_PCI_DEVICE(0x08B1, 0xC420, iwl7260_2n_cfg)},
  294 
  295 /* 3160 Series */
  296         {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_2ac_cfg)},
  297         {IWL_PCI_DEVICE(0x08B3, 0x0072, iwl3160_2ac_cfg)},
  298         {IWL_PCI_DEVICE(0x08B3, 0x0170, iwl3160_2ac_cfg)},
  299         {IWL_PCI_DEVICE(0x08B3, 0x0172, iwl3160_2ac_cfg)},
  300         {IWL_PCI_DEVICE(0x08B3, 0x0060, iwl3160_2n_cfg)},
  301         {IWL_PCI_DEVICE(0x08B3, 0x0062, iwl3160_n_cfg)},
  302         {IWL_PCI_DEVICE(0x08B4, 0x0270, iwl3160_2ac_cfg)},
  303         {IWL_PCI_DEVICE(0x08B4, 0x0272, iwl3160_2ac_cfg)},
  304         {IWL_PCI_DEVICE(0x08B3, 0x0470, iwl3160_2ac_cfg)},
  305         {IWL_PCI_DEVICE(0x08B3, 0x0472, iwl3160_2ac_cfg)},
  306         {IWL_PCI_DEVICE(0x08B4, 0x0370, iwl3160_2ac_cfg)},
  307         {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_2ac_cfg)},
  308         {IWL_PCI_DEVICE(0x08B3, 0x8072, iwl3160_2ac_cfg)},
  309         {IWL_PCI_DEVICE(0x08B3, 0x8170, iwl3160_2ac_cfg)},
  310         {IWL_PCI_DEVICE(0x08B3, 0x8172, iwl3160_2ac_cfg)},
  311         {IWL_PCI_DEVICE(0x08B3, 0x8060, iwl3160_2n_cfg)},
  312         {IWL_PCI_DEVICE(0x08B3, 0x8062, iwl3160_n_cfg)},
  313         {IWL_PCI_DEVICE(0x08B4, 0x8270, iwl3160_2ac_cfg)},
  314         {IWL_PCI_DEVICE(0x08B4, 0x8370, iwl3160_2ac_cfg)},
  315         {IWL_PCI_DEVICE(0x08B4, 0x8272, iwl3160_2ac_cfg)},
  316         {IWL_PCI_DEVICE(0x08B3, 0x8470, iwl3160_2ac_cfg)},
  317         {IWL_PCI_DEVICE(0x08B3, 0x8570, iwl3160_2ac_cfg)},
  318         {IWL_PCI_DEVICE(0x08B3, 0x1070, iwl3160_2ac_cfg)},
  319         {IWL_PCI_DEVICE(0x08B3, 0x1170, iwl3160_2ac_cfg)},
  320 
  321 /* 3165 Series */
  322         {IWL_PCI_DEVICE(0x3165, 0x4010, iwl3165_2ac_cfg)},
  323         {IWL_PCI_DEVICE(0x3165, 0x4012, iwl3165_2ac_cfg)},
  324         {IWL_PCI_DEVICE(0x3166, 0x4212, iwl3165_2ac_cfg)},
  325         {IWL_PCI_DEVICE(0x3165, 0x4410, iwl3165_2ac_cfg)},
  326         {IWL_PCI_DEVICE(0x3165, 0x4510, iwl3165_2ac_cfg)},
  327         {IWL_PCI_DEVICE(0x3165, 0x4110, iwl3165_2ac_cfg)},
  328         {IWL_PCI_DEVICE(0x3166, 0x4310, iwl3165_2ac_cfg)},
  329         {IWL_PCI_DEVICE(0x3166, 0x4210, iwl3165_2ac_cfg)},
  330         {IWL_PCI_DEVICE(0x3165, 0x8010, iwl3165_2ac_cfg)},
  331         {IWL_PCI_DEVICE(0x3165, 0x8110, iwl3165_2ac_cfg)},
  332 
  333 /* 3168 Series */
  334         {IWL_PCI_DEVICE(0x24FB, 0x2010, iwl3168_2ac_cfg)},
  335         {IWL_PCI_DEVICE(0x24FB, 0x2110, iwl3168_2ac_cfg)},
  336         {IWL_PCI_DEVICE(0x24FB, 0x2050, iwl3168_2ac_cfg)},
  337         {IWL_PCI_DEVICE(0x24FB, 0x2150, iwl3168_2ac_cfg)},
  338         {IWL_PCI_DEVICE(0x24FB, 0x0000, iwl3168_2ac_cfg)},
  339 
  340 /* 7265 Series */
  341         {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7265_2ac_cfg)},
  342         {IWL_PCI_DEVICE(0x095A, 0x5110, iwl7265_2ac_cfg)},
  343         {IWL_PCI_DEVICE(0x095A, 0x5100, iwl7265_2ac_cfg)},
  344         {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7265_2ac_cfg)},
  345         {IWL_PCI_DEVICE(0x095B, 0x5302, iwl7265_n_cfg)},
  346         {IWL_PCI_DEVICE(0x095B, 0x5210, iwl7265_2ac_cfg)},
  347         {IWL_PCI_DEVICE(0x095A, 0x5C10, iwl7265_2ac_cfg)},
  348         {IWL_PCI_DEVICE(0x095A, 0x5012, iwl7265_2ac_cfg)},
  349         {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7265_2ac_cfg)},
  350         {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7265_2ac_cfg)},
  351         {IWL_PCI_DEVICE(0x095A, 0x5510, iwl7265_2ac_cfg)},
  352         {IWL_PCI_DEVICE(0x095A, 0x5400, iwl7265_2ac_cfg)},
  353         {IWL_PCI_DEVICE(0x095A, 0x1010, iwl7265_2ac_cfg)},
  354         {IWL_PCI_DEVICE(0x095A, 0x5000, iwl7265_2n_cfg)},
  355         {IWL_PCI_DEVICE(0x095A, 0x500A, iwl7265_2n_cfg)},
  356         {IWL_PCI_DEVICE(0x095B, 0x5200, iwl7265_2n_cfg)},
  357         {IWL_PCI_DEVICE(0x095A, 0x5002, iwl7265_n_cfg)},
  358         {IWL_PCI_DEVICE(0x095A, 0x5102, iwl7265_n_cfg)},
  359         {IWL_PCI_DEVICE(0x095B, 0x5202, iwl7265_n_cfg)},
  360         {IWL_PCI_DEVICE(0x095A, 0x9010, iwl7265_2ac_cfg)},
  361         {IWL_PCI_DEVICE(0x095A, 0x9012, iwl7265_2ac_cfg)},
  362         {IWL_PCI_DEVICE(0x095A, 0x900A, iwl7265_2ac_cfg)},
  363         {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7265_2ac_cfg)},
  364         {IWL_PCI_DEVICE(0x095A, 0x9112, iwl7265_2ac_cfg)},
  365         {IWL_PCI_DEVICE(0x095B, 0x9210, iwl7265_2ac_cfg)},
  366         {IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)},
  367         {IWL_PCI_DEVICE(0x095A, 0x9510, iwl7265_2ac_cfg)},
  368         {IWL_PCI_DEVICE(0x095B, 0x9310, iwl7265_2ac_cfg)},
  369         {IWL_PCI_DEVICE(0x095A, 0x9410, iwl7265_2ac_cfg)},
  370         {IWL_PCI_DEVICE(0x095A, 0x5020, iwl7265_2n_cfg)},
  371         {IWL_PCI_DEVICE(0x095A, 0x502A, iwl7265_2n_cfg)},
  372         {IWL_PCI_DEVICE(0x095A, 0x5420, iwl7265_2n_cfg)},
  373         {IWL_PCI_DEVICE(0x095A, 0x5090, iwl7265_2ac_cfg)},
  374         {IWL_PCI_DEVICE(0x095A, 0x5190, iwl7265_2ac_cfg)},
  375         {IWL_PCI_DEVICE(0x095A, 0x5590, iwl7265_2ac_cfg)},
  376         {IWL_PCI_DEVICE(0x095B, 0x5290, iwl7265_2ac_cfg)},
  377         {IWL_PCI_DEVICE(0x095A, 0x5490, iwl7265_2ac_cfg)},
  378         {IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7265_2ac_cfg)},
  379         {IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)},
  380         {IWL_PCI_DEVICE(0x095B, 0x520A, iwl7265_2ac_cfg)},
  381         {IWL_PCI_DEVICE(0x095A, 0x9000, iwl7265_2ac_cfg)},
  382         {IWL_PCI_DEVICE(0x095A, 0x9400, iwl7265_2ac_cfg)},
  383         {IWL_PCI_DEVICE(0x095A, 0x9E10, iwl7265_2ac_cfg)},
  384 
  385 /* 8000 Series */
  386         {IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)},
  387         {IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)},
  388         {IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8260_2ac_cfg)},
  389         {IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8260_2ac_cfg)},
  390         {IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8260_2ac_cfg)},
  391         {IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8260_2ac_cfg)},
  392         {IWL_PCI_DEVICE(0x24F3, 0x1132, iwl8260_2ac_cfg)},
  393         {IWL_PCI_DEVICE(0x24F3, 0x0110, iwl8260_2ac_cfg)},
  394         {IWL_PCI_DEVICE(0x24F3, 0x01F0, iwl8260_2ac_cfg)},
  395         {IWL_PCI_DEVICE(0x24F3, 0x0012, iwl8260_2ac_cfg)},
  396         {IWL_PCI_DEVICE(0x24F3, 0x1012, iwl8260_2ac_cfg)},
  397         {IWL_PCI_DEVICE(0x24F3, 0x1110, iwl8260_2ac_cfg)},
  398         {IWL_PCI_DEVICE(0x24F3, 0x0050, iwl8260_2ac_cfg)},
  399         {IWL_PCI_DEVICE(0x24F3, 0x0250, iwl8260_2ac_cfg)},
  400         {IWL_PCI_DEVICE(0x24F3, 0x1050, iwl8260_2ac_cfg)},
  401         {IWL_PCI_DEVICE(0x24F3, 0x0150, iwl8260_2ac_cfg)},
  402         {IWL_PCI_DEVICE(0x24F3, 0x1150, iwl8260_2ac_cfg)},
  403         {IWL_PCI_DEVICE(0x24F4, 0x0030, iwl8260_2ac_cfg)},
  404         {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8260_2ac_cfg)},
  405         {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8260_2ac_cfg)},
  406         {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8260_2ac_cfg)},
  407         {IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8260_2ac_cfg)},
  408         {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)},
  409         {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)},
  410         {IWL_PCI_DEVICE(0x24F3, 0xD0B0, iwl8260_2ac_cfg)},
  411         {IWL_PCI_DEVICE(0x24F3, 0xB0B0, iwl8260_2ac_cfg)},
  412         {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)},
  413         {IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8260_2ac_cfg)},
  414         {IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8260_2ac_cfg)},
  415         {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8260_2ac_cfg)},
  416         {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8260_2ac_cfg)},
  417         {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8260_2ac_cfg)},
  418         {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8260_2ac_cfg)},
  419         {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8260_2ac_cfg)},
  420         {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8260_2ac_cfg)},
  421         {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8260_2ac_cfg)},
  422         {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8260_2ac_cfg)},
  423         {IWL_PCI_DEVICE(0x24F3, 0x9132, iwl8260_2ac_cfg)},
  424         {IWL_PCI_DEVICE(0x24F3, 0x8050, iwl8260_2ac_cfg)},
  425         {IWL_PCI_DEVICE(0x24F3, 0x8150, iwl8260_2ac_cfg)},
  426         {IWL_PCI_DEVICE(0x24F3, 0x9050, iwl8260_2ac_cfg)},
  427         {IWL_PCI_DEVICE(0x24F3, 0x9150, iwl8260_2ac_cfg)},
  428         {IWL_PCI_DEVICE(0x24F3, 0x0004, iwl8260_2n_cfg)},
  429         {IWL_PCI_DEVICE(0x24F3, 0x0044, iwl8260_2n_cfg)},
  430         {IWL_PCI_DEVICE(0x24F5, 0x0010, iwl4165_2ac_cfg)},
  431         {IWL_PCI_DEVICE(0x24F6, 0x0030, iwl4165_2ac_cfg)},
  432         {IWL_PCI_DEVICE(0x24F3, 0x0810, iwl8260_2ac_cfg)},
  433         {IWL_PCI_DEVICE(0x24F3, 0x0910, iwl8260_2ac_cfg)},
  434         {IWL_PCI_DEVICE(0x24F3, 0x0850, iwl8260_2ac_cfg)},
  435         {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8260_2ac_cfg)},
  436         {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)},
  437         {IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8265_2ac_cfg)},
  438         {IWL_PCI_DEVICE(0x24F3, 0x4010, iwl8260_2ac_cfg)},
  439         {IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)},
  440         {IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)},
  441         {IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)},
  442         {IWL_PCI_DEVICE(0x24FD, 0x1130, iwl8265_2ac_cfg)},
  443         {IWL_PCI_DEVICE(0x24FD, 0x0130, iwl8265_2ac_cfg)},
  444         {IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8265_2ac_cfg)},
  445         {IWL_PCI_DEVICE(0x24FD, 0x10D0, iwl8265_2ac_cfg)},
  446         {IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8265_2ac_cfg)},
  447         {IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8265_2ac_cfg)},
  448         {IWL_PCI_DEVICE(0x24FD, 0x9010, iwl8265_2ac_cfg)},
  449         {IWL_PCI_DEVICE(0x24FD, 0x8110, iwl8265_2ac_cfg)},
  450         {IWL_PCI_DEVICE(0x24FD, 0x8050, iwl8265_2ac_cfg)},
  451         {IWL_PCI_DEVICE(0x24FD, 0x8010, iwl8265_2ac_cfg)},
  452         {IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8265_2ac_cfg)},
  453         {IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8265_2ac_cfg)},
  454         {IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8265_2ac_cfg)},
  455         {IWL_PCI_DEVICE(0x24FD, 0x0910, iwl8265_2ac_cfg)},
  456         {IWL_PCI_DEVICE(0x24FD, 0x0930, iwl8265_2ac_cfg)},
  457         {IWL_PCI_DEVICE(0x24FD, 0x0950, iwl8265_2ac_cfg)},
  458         {IWL_PCI_DEVICE(0x24FD, 0x0850, iwl8265_2ac_cfg)},
  459         {IWL_PCI_DEVICE(0x24FD, 0x1014, iwl8265_2ac_cfg)},
  460         {IWL_PCI_DEVICE(0x24FD, 0x3E02, iwl8275_2ac_cfg)},
  461         {IWL_PCI_DEVICE(0x24FD, 0x3E01, iwl8275_2ac_cfg)},
  462         {IWL_PCI_DEVICE(0x24FD, 0x1012, iwl8275_2ac_cfg)},
  463         {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8275_2ac_cfg)},
  464         {IWL_PCI_DEVICE(0x24FD, 0x0014, iwl8265_2ac_cfg)},
  465         {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8265_2ac_cfg)},
  466 
  467 /* 9000 Series */
  468         {IWL_PCI_DEVICE(0x2526, PCI_ANY_ID, iwl9000_trans_cfg)},
  469         {IWL_PCI_DEVICE(0x271B, PCI_ANY_ID, iwl9000_trans_cfg)},
  470         {IWL_PCI_DEVICE(0x271C, PCI_ANY_ID, iwl9000_trans_cfg)},
  471         {IWL_PCI_DEVICE(0x30DC, PCI_ANY_ID, iwl9560_long_latency_trans_cfg)},
  472         {IWL_PCI_DEVICE(0x31DC, PCI_ANY_ID, iwl9560_shared_clk_trans_cfg)},
  473         {IWL_PCI_DEVICE(0x9DF0, PCI_ANY_ID, iwl9560_trans_cfg)},
  474         {IWL_PCI_DEVICE(0xA370, PCI_ANY_ID, iwl9560_trans_cfg)},
  475 
  476 /* Qu devices */
  477         {IWL_PCI_DEVICE(0x02F0, PCI_ANY_ID, iwl_qu_trans_cfg)},
  478         {IWL_PCI_DEVICE(0x06F0, PCI_ANY_ID, iwl_qu_trans_cfg)},
  479 
  480         {IWL_PCI_DEVICE(0x34F0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)},
  481         {IWL_PCI_DEVICE(0x3DF0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)},
  482         {IWL_PCI_DEVICE(0x4DF0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)},
  483 
  484         {IWL_PCI_DEVICE(0x43F0, PCI_ANY_ID, iwl_qu_long_latency_trans_cfg)},
  485         {IWL_PCI_DEVICE(0xA0F0, PCI_ANY_ID, iwl_qu_long_latency_trans_cfg)},
  486 
  487         {IWL_PCI_DEVICE(0x2720, PCI_ANY_ID, iwl_qnj_trans_cfg)},
  488 
  489         {IWL_PCI_DEVICE(0x2723, PCI_ANY_ID, iwl_ax200_trans_cfg)},
  490 
  491 /* So devices */
  492         {IWL_PCI_DEVICE(0x2725, PCI_ANY_ID, iwl_so_trans_cfg)},
  493         {IWL_PCI_DEVICE(0x2726, PCI_ANY_ID, iwl_snj_trans_cfg)},
  494         {IWL_PCI_DEVICE(0x7A70, PCI_ANY_ID, iwl_so_long_latency_imr_trans_cfg)},
  495         {IWL_PCI_DEVICE(0x7AF0, PCI_ANY_ID, iwl_so_trans_cfg)},
  496         {IWL_PCI_DEVICE(0x51F0, PCI_ANY_ID, iwl_so_long_latency_trans_cfg)},
  497         {IWL_PCI_DEVICE(0x51F1, PCI_ANY_ID, iwl_so_long_latency_imr_trans_cfg)},
  498         {IWL_PCI_DEVICE(0x54F0, PCI_ANY_ID, iwl_so_long_latency_trans_cfg)},
  499         {IWL_PCI_DEVICE(0x7F70, PCI_ANY_ID, iwl_so_trans_cfg)},
  500 
  501 /* Ma devices */
  502         {IWL_PCI_DEVICE(0x2729, PCI_ANY_ID, iwl_ma_trans_cfg)},
  503         {IWL_PCI_DEVICE(0x7E40, PCI_ANY_ID, iwl_ma_trans_cfg)},
  504 
  505 /* Bz devices */
  506         {IWL_PCI_DEVICE(0x2727, PCI_ANY_ID, iwl_bz_trans_cfg)},
  507         {IWL_PCI_DEVICE(0xA840, PCI_ANY_ID, iwl_bz_trans_cfg)},
  508         {IWL_PCI_DEVICE(0x7740, PCI_ANY_ID, iwl_bz_trans_cfg)},
  509 #endif /* CONFIG_IWLMVM */
  510 
  511         {0}
  512 };
  513 MODULE_DEVICE_TABLE(pci, iwl_hw_card_ids);
  514 
  515 #define _IWL_DEV_INFO(_device, _subdevice, _mac_type, _mac_step, _rf_type, \
  516                       _rf_id, _no_160, _cores, _cdb, _jacket, _cfg, _name) \
  517         { .device = (_device), .subdevice = (_subdevice), .cfg = &(_cfg),  \
  518           .name = _name, .mac_type = _mac_type, .rf_type = _rf_type,       \
  519           .no_160 = _no_160, .cores = _cores, .rf_id = _rf_id,             \
  520           .mac_step = _mac_step, .cdb = _cdb, .jacket = _jacket }
  521 
  522 #define IWL_DEV_INFO(_device, _subdevice, _cfg, _name) \
  523         _IWL_DEV_INFO(_device, _subdevice, IWL_CFG_ANY, IWL_CFG_ANY,       \
  524                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY,  \
  525                       IWL_CFG_ANY, IWL_CFG_ANY, _cfg, _name)
  526 
  527 static const struct iwl_dev_info iwl_dev_info_table[] = {
  528 #if IS_ENABLED(CONFIG_IWLMVM)
  529 /* 9000 */
  530         IWL_DEV_INFO(0x2526, 0x1550, iwl9260_2ac_cfg, iwl9260_killer_1550_name),
  531         IWL_DEV_INFO(0x2526, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name),
  532         IWL_DEV_INFO(0x2526, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name),
  533         IWL_DEV_INFO(0x30DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name),
  534         IWL_DEV_INFO(0x30DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name),
  535         IWL_DEV_INFO(0x31DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name),
  536         IWL_DEV_INFO(0x31DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name),
  537         IWL_DEV_INFO(0xA370, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name),
  538         IWL_DEV_INFO(0xA370, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name),
  539         IWL_DEV_INFO(0x54F0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name),
  540         IWL_DEV_INFO(0x54F0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name),
  541         IWL_DEV_INFO(0x51F0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name),
  542         IWL_DEV_INFO(0x51F0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name),
  543         IWL_DEV_INFO(0x51F0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name),
  544         IWL_DEV_INFO(0x51F0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name),
  545         IWL_DEV_INFO(0x54F0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name),
  546         IWL_DEV_INFO(0x54F0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name),
  547         IWL_DEV_INFO(0x7A70, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name),
  548         IWL_DEV_INFO(0x7A70, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name),
  549 
  550         IWL_DEV_INFO(0x271C, 0x0214, iwl9260_2ac_cfg, iwl9260_1_name),
  551         IWL_DEV_INFO(0x7E40, 0x1691, iwl_cfg_ma_a0_gf4_a0, iwl_ax411_killer_1690s_name),
  552         IWL_DEV_INFO(0x7E40, 0x1692, iwl_cfg_ma_a0_gf4_a0, iwl_ax411_killer_1690i_name),
  553 
  554 /* AX200 */
  555         IWL_DEV_INFO(0x2723, IWL_CFG_ANY, iwl_ax200_cfg_cc, iwl_ax200_name),
  556         IWL_DEV_INFO(0x2723, 0x1653, iwl_ax200_cfg_cc, iwl_ax200_killer_1650w_name),
  557         IWL_DEV_INFO(0x2723, 0x1654, iwl_ax200_cfg_cc, iwl_ax200_killer_1650x_name),
  558 
  559         /* Qu with Hr */
  560         IWL_DEV_INFO(0x43F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL),
  561         IWL_DEV_INFO(0x43F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL),
  562         IWL_DEV_INFO(0x43F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL),
  563         IWL_DEV_INFO(0x43F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL),
  564         IWL_DEV_INFO(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650s_name),
  565         IWL_DEV_INFO(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650i_name),
  566         IWL_DEV_INFO(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL),
  567         IWL_DEV_INFO(0x43F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL),
  568         IWL_DEV_INFO(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650s_name),
  569         IWL_DEV_INFO(0xA0F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL),
  570         IWL_DEV_INFO(0xA0F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL),
  571         IWL_DEV_INFO(0xA0F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL),
  572         IWL_DEV_INFO(0xA0F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL),
  573         IWL_DEV_INFO(0xA0F0, 0x0A10, iwl_ax201_cfg_qu_hr, NULL),
  574         IWL_DEV_INFO(0xA0F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL),
  575         IWL_DEV_INFO(0xA0F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL),
  576         IWL_DEV_INFO(0xA0F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL),
  577         IWL_DEV_INFO(0xA0F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL),
  578         IWL_DEV_INFO(0xA0F0, 0x6074, iwl_ax201_cfg_qu_hr, NULL),
  579         IWL_DEV_INFO(0x02F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL),
  580         IWL_DEV_INFO(0x02F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL),
  581         IWL_DEV_INFO(0x02F0, 0x6074, iwl_ax201_cfg_quz_hr, NULL),
  582         IWL_DEV_INFO(0x02F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL),
  583         IWL_DEV_INFO(0x02F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL),
  584         IWL_DEV_INFO(0x02F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL),
  585         IWL_DEV_INFO(0x02F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL),
  586         IWL_DEV_INFO(0x02F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL),
  587         IWL_DEV_INFO(0x02F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL),
  588         IWL_DEV_INFO(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL),
  589         IWL_DEV_INFO(0x06F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL),
  590         IWL_DEV_INFO(0x06F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL),
  591         IWL_DEV_INFO(0x06F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL),
  592         IWL_DEV_INFO(0x06F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL),
  593         IWL_DEV_INFO(0x06F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL),
  594         IWL_DEV_INFO(0x06F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL),
  595         IWL_DEV_INFO(0x06F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL),
  596         IWL_DEV_INFO(0x06F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL),
  597         IWL_DEV_INFO(0x06F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL),
  598         IWL_DEV_INFO(0x34F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL),
  599         IWL_DEV_INFO(0x34F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL),
  600         IWL_DEV_INFO(0x34F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL),
  601         IWL_DEV_INFO(0x34F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL),
  602         IWL_DEV_INFO(0x34F0, 0x0310, iwl_ax201_cfg_qu_hr, NULL),
  603         IWL_DEV_INFO(0x34F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL),
  604         IWL_DEV_INFO(0x34F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL),
  605         IWL_DEV_INFO(0x34F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL),
  606         IWL_DEV_INFO(0x34F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL),
  607 
  608         IWL_DEV_INFO(0x3DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL),
  609         IWL_DEV_INFO(0x3DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL),
  610         IWL_DEV_INFO(0x3DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL),
  611         IWL_DEV_INFO(0x3DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL),
  612         IWL_DEV_INFO(0x3DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL),
  613         IWL_DEV_INFO(0x3DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL),
  614         IWL_DEV_INFO(0x3DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL),
  615         IWL_DEV_INFO(0x3DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL),
  616         IWL_DEV_INFO(0x3DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL),
  617 
  618         IWL_DEV_INFO(0x4DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL),
  619         IWL_DEV_INFO(0x4DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL),
  620         IWL_DEV_INFO(0x4DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL),
  621         IWL_DEV_INFO(0x4DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL),
  622         IWL_DEV_INFO(0x4DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL),
  623         IWL_DEV_INFO(0x4DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL),
  624         IWL_DEV_INFO(0x4DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL),
  625         IWL_DEV_INFO(0x4DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL),
  626         IWL_DEV_INFO(0x4DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL),
  627         IWL_DEV_INFO(0x4DF0, 0x6074, iwl_ax201_cfg_qu_hr, NULL),
  628 
  629         /* So with HR */
  630         IWL_DEV_INFO(0x2725, 0x0090, iwlax211_2ax_cfg_so_gf_a0, NULL),
  631         IWL_DEV_INFO(0x2725, 0x0020, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  632         IWL_DEV_INFO(0x2725, 0x2020, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  633         IWL_DEV_INFO(0x2725, 0x0024, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  634         IWL_DEV_INFO(0x2725, 0x0310, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  635         IWL_DEV_INFO(0x2725, 0x0510, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  636         IWL_DEV_INFO(0x2725, 0x0A10, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  637         IWL_DEV_INFO(0x2725, 0xE020, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  638         IWL_DEV_INFO(0x2725, 0xE024, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  639         IWL_DEV_INFO(0x2725, 0x4020, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  640         IWL_DEV_INFO(0x2725, 0x6020, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  641         IWL_DEV_INFO(0x2725, 0x6024, iwlax210_2ax_cfg_ty_gf_a0, NULL),
  642         IWL_DEV_INFO(0x2725, 0x1673, iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675w_name),
  643         IWL_DEV_INFO(0x2725, 0x1674, iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675x_name),
  644         IWL_DEV_INFO(0x7A70, 0x0090, iwlax211_2ax_cfg_so_gf_a0_long, NULL),
  645         IWL_DEV_INFO(0x7A70, 0x0098, iwlax211_2ax_cfg_so_gf_a0_long, NULL),
  646         IWL_DEV_INFO(0x7A70, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0_long, NULL),
  647         IWL_DEV_INFO(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0_long, NULL),
  648         IWL_DEV_INFO(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0_long, NULL),
  649         IWL_DEV_INFO(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0_long, NULL),
  650         IWL_DEV_INFO(0x7AF0, 0x0090, iwlax211_2ax_cfg_so_gf_a0, NULL),
  651         IWL_DEV_INFO(0x7AF0, 0x0098, iwlax211_2ax_cfg_so_gf_a0, NULL),
  652         IWL_DEV_INFO(0x7AF0, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0, NULL),
  653         IWL_DEV_INFO(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0, NULL),
  654         IWL_DEV_INFO(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0, NULL),
  655         IWL_DEV_INFO(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0, NULL),
  656 
  657         /* So with JF */
  658         IWL_DEV_INFO(0x7A70, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name),
  659         IWL_DEV_INFO(0x7A70, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name),
  660         IWL_DEV_INFO(0x7AF0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name),
  661         IWL_DEV_INFO(0x7AF0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name),
  662 
  663         /* SnJ with HR */
  664         IWL_DEV_INFO(0x2725, 0x00B0, iwlax411_2ax_cfg_sosnj_gf4_a0, NULL),
  665         IWL_DEV_INFO(0x2726, 0x0090, iwlax211_cfg_snj_gf_a0, NULL),
  666         IWL_DEV_INFO(0x2726, 0x0098, iwlax211_cfg_snj_gf_a0, NULL),
  667         IWL_DEV_INFO(0x2726, 0x00B0, iwlax411_2ax_cfg_sosnj_gf4_a0, NULL),
  668         IWL_DEV_INFO(0x2726, 0x00B4, iwlax411_2ax_cfg_sosnj_gf4_a0, NULL),
  669         IWL_DEV_INFO(0x2726, 0x0510, iwlax211_cfg_snj_gf_a0, NULL),
  670         IWL_DEV_INFO(0x2726, 0x1651, iwl_cfg_snj_hr_b0, iwl_ax201_killer_1650s_name),
  671         IWL_DEV_INFO(0x2726, 0x1652, iwl_cfg_snj_hr_b0, iwl_ax201_killer_1650i_name),
  672         IWL_DEV_INFO(0x2726, 0x1691, iwlax411_2ax_cfg_sosnj_gf4_a0, iwl_ax411_killer_1690s_name),
  673         IWL_DEV_INFO(0x2726, 0x1692, iwlax411_2ax_cfg_sosnj_gf4_a0, iwl_ax411_killer_1690i_name),
  674         IWL_DEV_INFO(0x7F70, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name),
  675         IWL_DEV_INFO(0x7F70, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name),
  676 
  677         /* SO with GF2 */
  678         IWL_DEV_INFO(0x2726, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name),
  679         IWL_DEV_INFO(0x2726, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name),
  680         IWL_DEV_INFO(0x51F0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name),
  681         IWL_DEV_INFO(0x51F0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name),
  682         IWL_DEV_INFO(0x54F0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name),
  683         IWL_DEV_INFO(0x54F0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name),
  684         IWL_DEV_INFO(0x7A70, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name),
  685         IWL_DEV_INFO(0x7A70, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name),
  686         IWL_DEV_INFO(0x7AF0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name),
  687         IWL_DEV_INFO(0x7AF0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name),
  688         IWL_DEV_INFO(0x7F70, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name),
  689         IWL_DEV_INFO(0x7F70, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name),
  690 
  691         /* MA with GF2 */
  692         IWL_DEV_INFO(0x7E40, 0x1671, iwl_cfg_ma_a0_gf_a0, iwl_ax211_killer_1675s_name),
  693         IWL_DEV_INFO(0x7E40, 0x1672, iwl_cfg_ma_a0_gf_a0, iwl_ax211_killer_1675i_name),
  694 
  695         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  696                       IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY,
  697                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  698                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  699                       iwl9560_2ac_cfg_soc, iwl9461_160_name),
  700         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  701                       IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY,
  702                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  703                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  704                       iwl9560_2ac_cfg_soc, iwl9461_name),
  705         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  706                       IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY,
  707                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  708                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  709                       iwl9560_2ac_cfg_soc, iwl9462_160_name),
  710         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  711                       IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY,
  712                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  713                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  714                       iwl9560_2ac_cfg_soc, iwl9462_name),
  715 
  716         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  717                       IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY,
  718                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  719                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  720                       iwl9560_2ac_cfg_soc, iwl9560_160_name),
  721         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  722                       IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY,
  723                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  724                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  725                       iwl9560_2ac_cfg_soc, iwl9560_name),
  726 
  727         _IWL_DEV_INFO(0x2526, IWL_CFG_ANY,
  728                       IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY,
  729                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  730                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  731                       iwl9260_2ac_cfg, iwl9461_160_name),
  732         _IWL_DEV_INFO(0x2526, IWL_CFG_ANY,
  733                       IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY,
  734                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  735                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  736                       iwl9260_2ac_cfg, iwl9461_name),
  737         _IWL_DEV_INFO(0x2526, IWL_CFG_ANY,
  738                       IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY,
  739                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  740                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  741                       iwl9260_2ac_cfg, iwl9462_160_name),
  742         _IWL_DEV_INFO(0x2526, IWL_CFG_ANY,
  743                       IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY,
  744                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  745                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  746                       iwl9260_2ac_cfg, iwl9462_name),
  747 
  748         _IWL_DEV_INFO(0x2526, IWL_CFG_ANY,
  749                       IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY,
  750                       IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY,
  751                       IWL_CFG_160, IWL_CFG_CORES_BT_GNSS, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  752                       iwl9260_2ac_cfg, iwl9270_160_name),
  753         _IWL_DEV_INFO(0x2526, IWL_CFG_ANY,
  754                       IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY,
  755                       IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY,
  756                       IWL_CFG_NO_160, IWL_CFG_CORES_BT_GNSS, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  757                       iwl9260_2ac_cfg, iwl9270_name),
  758 
  759         _IWL_DEV_INFO(0x271B, IWL_CFG_ANY,
  760                       IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY,
  761                       IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY,
  762                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  763                       iwl9260_2ac_cfg, iwl9162_160_name),
  764         _IWL_DEV_INFO(0x271B, IWL_CFG_ANY,
  765                       IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY,
  766                       IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY,
  767                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  768                       iwl9260_2ac_cfg, iwl9162_name),
  769 
  770         _IWL_DEV_INFO(0x2526, IWL_CFG_ANY,
  771                       IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY,
  772                       IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY,
  773                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  774                       iwl9260_2ac_cfg, iwl9260_160_name),
  775         _IWL_DEV_INFO(0x2526, IWL_CFG_ANY,
  776                       IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY,
  777                       IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY,
  778                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  779                       iwl9260_2ac_cfg, iwl9260_name),
  780 
  781 /* Qu with Jf */
  782         /* Qu B step */
  783         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  784                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  785                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  786                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  787                       iwl9560_qu_b0_jf_b0_cfg, iwl9461_160_name),
  788         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  789                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  790                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  791                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  792                       iwl9560_qu_b0_jf_b0_cfg, iwl9461_name),
  793         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  794                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  795                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  796                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  797                       iwl9560_qu_b0_jf_b0_cfg, iwl9462_160_name),
  798         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  799                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  800                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  801                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  802                       iwl9560_qu_b0_jf_b0_cfg, iwl9462_name),
  803 
  804         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  805                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  806                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  807                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  808                       iwl9560_qu_b0_jf_b0_cfg, iwl9560_160_name),
  809         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  810                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  811                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  812                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  813                       iwl9560_qu_b0_jf_b0_cfg, iwl9560_name),
  814 
  815         _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551,
  816                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  817                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  818                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  819                       iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550s_name),
  820         _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552,
  821                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  822                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  823                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  824                       iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550i_name),
  825 
  826         /* Qu C step */
  827         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  828                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  829                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  830                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  831                       iwl9560_qu_c0_jf_b0_cfg, iwl9461_160_name),
  832         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  833                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  834                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  835                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  836                       iwl9560_qu_c0_jf_b0_cfg, iwl9461_name),
  837         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  838                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  839                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  840                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  841                       iwl9560_qu_c0_jf_b0_cfg, iwl9462_160_name),
  842         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  843                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  844                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  845                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  846                       iwl9560_qu_c0_jf_b0_cfg, iwl9462_name),
  847 
  848         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  849                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  850                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  851                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  852                       iwl9560_qu_c0_jf_b0_cfg, iwl9560_160_name),
  853         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  854                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  855                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  856                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  857                       iwl9560_qu_c0_jf_b0_cfg, iwl9560_name),
  858 
  859         _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551,
  860                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  861                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  862                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  863                       iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550s_name),
  864         _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552,
  865                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  866                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  867                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  868                       iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550i_name),
  869 
  870         /* QuZ */
  871         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  872                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  873                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  874                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  875                       iwl9560_quz_a0_jf_b0_cfg, iwl9461_160_name),
  876         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  877                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  878                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  879                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  880                       iwl9560_quz_a0_jf_b0_cfg, iwl9461_name),
  881         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  882                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  883                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  884                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  885                       iwl9560_quz_a0_jf_b0_cfg, iwl9462_160_name),
  886         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  887                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  888                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  889                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  890                       iwl9560_quz_a0_jf_b0_cfg, iwl9462_name),
  891 
  892         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  893                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  894                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  895                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  896                       iwl9560_quz_a0_jf_b0_cfg, iwl9560_160_name),
  897         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  898                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  899                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  900                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  901                       iwl9560_quz_a0_jf_b0_cfg, iwl9560_name),
  902 
  903         _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551,
  904                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  905                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  906                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  907                       iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550s_name),
  908         _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552,
  909                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  910                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  911                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  912                       iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550i_name),
  913 
  914         /* QnJ */
  915         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  916                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
  917                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  918                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  919                       iwl9560_qnj_b0_jf_b0_cfg, iwl9461_160_name),
  920         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  921                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
  922                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
  923                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  924                       iwl9560_qnj_b0_jf_b0_cfg, iwl9461_name),
  925         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  926                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
  927                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  928                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  929                       iwl9560_qnj_b0_jf_b0_cfg, iwl9462_160_name),
  930         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  931                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
  932                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
  933                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  934                       iwl9560_qnj_b0_jf_b0_cfg, iwl9462_name),
  935 
  936         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  937                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
  938                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  939                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  940                       iwl9560_qnj_b0_jf_b0_cfg, iwl9560_160_name),
  941         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  942                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
  943                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  944                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  945                       iwl9560_qnj_b0_jf_b0_cfg, iwl9560_name),
  946 
  947         _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551,
  948                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
  949                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  950                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  951                       iwl9560_qnj_b0_jf_b0_cfg, iwl9560_killer_1550s_name),
  952         _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552,
  953                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
  954                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
  955                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  956                       iwl9560_qnj_b0_jf_b0_cfg, iwl9560_killer_1550i_name),
  957 
  958 /* Qu with Hr */
  959         /* Qu B step */
  960         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  961                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  962                       IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY,
  963                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  964                       iwl_qu_b0_hr1_b0, iwl_ax101_name),
  965         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  966                       IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP,
  967                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
  968                       IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  969                       iwl_qu_b0_hr_b0, iwl_ax203_name),
  970 
  971         /* Qu C step */
  972         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  973                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  974                       IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY,
  975                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  976                       iwl_qu_c0_hr1_b0, iwl_ax101_name),
  977         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  978                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  979                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
  980                       IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  981                       iwl_qu_c0_hr_b0, iwl_ax203_name),
  982         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  983                       IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP,
  984                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
  985                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  986                       iwl_qu_c0_hr_b0, iwl_ax201_name),
  987 
  988         /* QuZ */
  989         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  990                       IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY,
  991                       IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY,
  992                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  993                       iwl_quz_a0_hr1_b0, iwl_ax101_name),
  994         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
  995                       IWL_CFG_MAC_TYPE_QUZ, SILICON_B_STEP,
  996                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
  997                       IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
  998                       iwl_cfg_quz_a0_hr_b0, iwl_ax203_name),
  999 
 1000 /* QnJ with Hr */
 1001         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1002                       IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY,
 1003                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
 1004                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1005                       iwl_qnj_b0_hr_b0_cfg, iwl_ax201_name),
 1006 
 1007 /* SnJ with Jf */
 1008         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1009                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1010                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
 1011                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1012                       iwl_cfg_snj_a0_jf_b0, iwl9461_160_name),
 1013         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1014                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1015                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
 1016                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1017                       iwl_cfg_snj_a0_jf_b0, iwl9461_name),
 1018         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1019                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1020                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
 1021                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1022                       iwl_cfg_snj_a0_jf_b0, iwl9462_160_name),
 1023         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1024                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1025                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
 1026                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1027                       iwl_cfg_snj_a0_jf_b0, iwl9462_name),
 1028 
 1029         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1030                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1031                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
 1032                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1033                       iwl_cfg_snj_a0_jf_b0, iwl9560_160_name),
 1034         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1035                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1036                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
 1037                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1038                       iwl_cfg_snj_a0_jf_b0, iwl9560_name),
 1039 
 1040 /* SnJ with Hr */
 1041         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1042                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1043                       IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY,
 1044                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1045                       iwl_cfg_snj_hr_b0, iwl_ax101_name),
 1046 
 1047         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1048                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1049                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
 1050                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1051                       iwl_cfg_snj_hr_b0, iwl_ax201_name),
 1052 
 1053 /* Ma */
 1054         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1055                       IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY,
 1056                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
 1057                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1058                       iwl_cfg_ma_a0_hr_b0, iwl_ax201_name),
 1059         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1060                       IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY,
 1061                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1062                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1063                       iwl_cfg_ma_a0_gf_a0, iwl_ax211_name),
 1064         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1065                       IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY,
 1066                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1067                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_CDB, IWL_CFG_ANY,
 1068                       iwl_cfg_ma_a0_gf4_a0, iwl_ax211_name),
 1069         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1070                       IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY,
 1071                       IWL_CFG_RF_TYPE_MR, IWL_CFG_ANY,
 1072                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1073                       iwl_cfg_ma_a0_mr_a0, iwl_ax221_name),
 1074         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1075                       IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY,
 1076                       IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY,
 1077                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1078                       iwl_cfg_ma_a0_fm_a0, iwl_ax231_name),
 1079         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1080                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1081                       IWL_CFG_RF_TYPE_MR, IWL_CFG_ANY,
 1082                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1083                       iwl_cfg_snj_a0_mr_a0, iwl_ax221_name),
 1084 
 1085 /* So with Hr */
 1086         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1087                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1088                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
 1089                       IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1090                       iwl_cfg_so_a0_hr_a0, iwl_ax203_name),
 1091         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1092                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1093                       IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY,
 1094                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1095                       iwl_cfg_so_a0_hr_a0, iwl_ax101_name),
 1096         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1097                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1098                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
 1099                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1100                       iwl_cfg_so_a0_hr_a0, iwl_ax201_name),
 1101 
 1102 /* So-F with Hr */
 1103         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1104                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1105                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
 1106                       IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1107                       iwl_cfg_so_a0_hr_a0, iwl_ax203_name),
 1108         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1109                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1110                       IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY,
 1111                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1112                       iwl_cfg_so_a0_hr_a0, iwl_ax101_name),
 1113         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1114                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1115                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
 1116                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1117                       iwl_cfg_so_a0_hr_a0, iwl_ax201_name),
 1118 
 1119 /* So-F with Gf */
 1120         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1121                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1122                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1123                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1124                       iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name),
 1125         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1126                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1127                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1128                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_CDB, IWL_CFG_ANY,
 1129                       iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name),
 1130 
 1131 /* Bz */
 1132         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1133                       IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY,
 1134                       IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY,
 1135                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1136                       iwl_cfg_bz_a0_hr_b0, iwl_bz_name),
 1137         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1138                       IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY,
 1139                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1140                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1141                       iwl_cfg_bz_a0_gf_a0, iwl_bz_name),
 1142         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1143                       IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY,
 1144                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1145                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_CDB, IWL_CFG_ANY,
 1146                       iwl_cfg_bz_a0_gf4_a0, iwl_bz_name),
 1147         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1148                       IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY,
 1149                       IWL_CFG_RF_TYPE_MR, IWL_CFG_ANY,
 1150                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1151                       iwl_cfg_bz_a0_mr_a0, iwl_bz_name),
 1152         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1153                       IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY,
 1154                       IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY,
 1155                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1156                       iwl_cfg_bz_a0_fm_a0, iwl_bz_name),
 1157         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1158                       IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY,
 1159                       IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY,
 1160                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_NO_JACKET,
 1161                       iwl_cfg_gl_a0_fm_a0, iwl_bz_name),
 1162 
 1163 /* BZ Z step */
 1164         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1165                       IWL_CFG_MAC_TYPE_BZ, SILICON_Z_STEP,
 1166                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1167                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1168                       iwl_cfg_bz_z0_gf_a0, iwl_bz_name),
 1169 
 1170 /* BNJ */
 1171         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1172                       IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY,
 1173                       IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY,
 1174                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_IS_JACKET,
 1175                       iwl_cfg_bnj_a0_fm_a0, iwl_bz_name),
 1176         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1177                       IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY,
 1178                       IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY,
 1179                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_CDB, IWL_CFG_IS_JACKET,
 1180                       iwl_cfg_bnj_a0_fm4_a0, iwl_bz_name),
 1181         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1182                       IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY,
 1183                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1184                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_IS_JACKET,
 1185                       iwl_cfg_bnj_a0_gf_a0, iwl_bz_name),
 1186         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1187                       IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY,
 1188                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1189                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_CDB, IWL_CFG_IS_JACKET,
 1190                       iwl_cfg_bnj_a0_gf4_a0, iwl_bz_name),
 1191         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1192                       IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY,
 1193                       IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY,
 1194                       IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_IS_JACKET,
 1195                       iwl_cfg_bnj_a0_hr_b0, iwl_bz_name),
 1196 
 1197 /* SoF with JF2 */
 1198         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1199                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1200                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
 1201                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1202                       iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name),
 1203         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1204                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1205                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
 1206                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1207                       iwlax210_2ax_cfg_so_jf_b0, iwl9560_name),
 1208 
 1209 /* SoF with JF */
 1210         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1211                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1212                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
 1213                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1214                       iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name),
 1215         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1216                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1217                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
 1218                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1219                       iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name),
 1220         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1221                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1222                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
 1223                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1224                       iwlax210_2ax_cfg_so_jf_b0, iwl9461_name),
 1225         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1226                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1227                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
 1228                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1229                       iwlax210_2ax_cfg_so_jf_b0, iwl9462_name),
 1230 
 1231 /* SoF with JF2 */
 1232         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1233                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1234                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
 1235                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1236                       iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name),
 1237         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1238                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1239                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
 1240                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1241                       iwlax210_2ax_cfg_so_jf_b0, iwl9560_name),
 1242 
 1243 /* SoF with JF */
 1244         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1245                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1246                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
 1247                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1248                       iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name),
 1249         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1250                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1251                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
 1252                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1253                       iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name),
 1254         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1255                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1256                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
 1257                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1258                       iwlax210_2ax_cfg_so_jf_b0, iwl9461_name),
 1259         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1260                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1261                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
 1262                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1263                       iwlax210_2ax_cfg_so_jf_b0, iwl9462_name),
 1264 
 1265 /* So with GF */
 1266         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1267                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1268                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1269                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1270                       iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name),
 1271         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1272                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1273                       IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY,
 1274                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_CDB, IWL_CFG_ANY,
 1275                       iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name),
 1276 
 1277 /* So with JF2 */
 1278         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1279                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1280                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
 1281                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1282                       iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name),
 1283         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1284                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1285                       IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF,
 1286                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1287                       iwlax210_2ax_cfg_so_jf_b0, iwl9560_name),
 1288 
 1289 /* So with JF */
 1290         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1291                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1292                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
 1293                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1294                       iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name),
 1295         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1296                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1297                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
 1298                       IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1299                       iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name),
 1300         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1301                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1302                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1,
 1303                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1304                       iwlax210_2ax_cfg_so_jf_b0, iwl9461_name),
 1305         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1306                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1307                       IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV,
 1308                       IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1309                       iwlax210_2ax_cfg_so_jf_b0, iwl9462_name),
 1310 
 1311 /* MsP */
 1312 /* For now we use the same FW as MR, but this will change in the future. */
 1313         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1314                       IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY,
 1315                       IWL_CFG_RF_TYPE_MS, IWL_CFG_ANY,
 1316                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1317                       iwl_cfg_so_a0_ms_a0, iwl_ax204_name),
 1318         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1319                       IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY,
 1320                       IWL_CFG_RF_TYPE_MS, IWL_CFG_ANY,
 1321                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1322                       iwl_cfg_so_a0_ms_a0, iwl_ax204_name),
 1323         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1324                       IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY,
 1325                       IWL_CFG_RF_TYPE_MS, IWL_CFG_ANY,
 1326                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1327                       iwl_cfg_ma_a0_ms_a0, iwl_ax204_name),
 1328         _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
 1329                       IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY,
 1330                       IWL_CFG_RF_TYPE_MS, IWL_CFG_ANY,
 1331                       IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, IWL_CFG_ANY,
 1332                       iwl_cfg_snj_a0_ms_a0, iwl_ax204_name)
 1333 
 1334 #endif /* CONFIG_IWLMVM */
 1335 };
 1336 
 1337 /*
 1338  * In case that there is no OTP on the NIC, get the rf id and cdb info
 1339  * from the prph registers.
 1340  */
 1341 static int get_crf_id(struct iwl_trans *iwl_trans)
 1342 {
 1343         int ret = 0;
 1344         u32 sd_reg_ver_addr;
 1345         u32 cdb = 0;
 1346         u32 val;
 1347 
 1348         if (iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210)
 1349                 sd_reg_ver_addr = SD_REG_VER_GEN2;
 1350         else
 1351                 sd_reg_ver_addr = SD_REG_VER;
 1352 
 1353         if (!iwl_trans_grab_nic_access(iwl_trans)) {
 1354                 IWL_ERR(iwl_trans, "Failed to grab nic access before reading crf id\n");
 1355                 ret = -EIO;
 1356                 goto out;
 1357         }
 1358 
 1359         /* Enable access to peripheral registers */
 1360         val = iwl_read_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG);
 1361         val |= ENABLE_WFPM;
 1362         iwl_write_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG, val);
 1363 
 1364         /* Read crf info */
 1365         val = iwl_read_prph_no_grab(iwl_trans, sd_reg_ver_addr);
 1366 
 1367         /* Read cdb info (also contains the jacket info if needed in the future */
 1368         cdb = iwl_read_umac_prph_no_grab(iwl_trans, WFPM_OTP_CFG1_ADDR);
 1369 
 1370         /* Map between crf id to rf id */
 1371         switch (REG_CRF_ID_TYPE(val)) {
 1372         case REG_CRF_ID_TYPE_JF_1:
 1373                 iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_JF1 << 12);
 1374                 break;
 1375         case REG_CRF_ID_TYPE_JF_2:
 1376                 iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_JF2 << 12);
 1377                 break;
 1378         case REG_CRF_ID_TYPE_HR_NONE_CDB:
 1379                 iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_HR1 << 12);
 1380                 break;
 1381         case REG_CRF_ID_TYPE_HR_CDB:
 1382                 iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_HR2 << 12);
 1383                 break;
 1384         case REG_CRF_ID_TYPE_GF:
 1385                 iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_GF << 12);
 1386                 break;
 1387         case REG_CRF_ID_TYPE_MR:
 1388                 iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_MR << 12);
 1389                 break;
 1390                 case REG_CRF_ID_TYPE_FM:
 1391                         iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_FM << 12);
 1392                         break;
 1393         default:
 1394                 ret = -EIO;
 1395                 IWL_ERR(iwl_trans,
 1396                         "Can find a correct rfid for crf id 0x%x\n",
 1397                         REG_CRF_ID_TYPE(val));
 1398                 goto out_release;
 1399 
 1400         }
 1401 
 1402         /* Set CDB capabilities */
 1403         if (cdb & BIT(4)) {
 1404                 iwl_trans->hw_rf_id += BIT(28);
 1405                 IWL_INFO(iwl_trans, "Adding cdb to rf id\n");
 1406         }
 1407 
 1408         IWL_INFO(iwl_trans, "Detected RF 0x%x from crf id 0x%x\n",
 1409                  iwl_trans->hw_rf_id, REG_CRF_ID_TYPE(val));
 1410 
 1411 out_release:
 1412         iwl_trans_release_nic_access(iwl_trans);
 1413 
 1414 out:
 1415         return ret;
 1416 }
 1417 
 1418 /* PCI registers */
 1419 #define PCI_CFG_RETRY_TIMEOUT   0x041
 1420 
 1421 static const struct iwl_dev_info *
 1422 iwl_pci_find_dev_info(u16 device, u16 subsystem_device,
 1423                       u16 mac_type, u8 mac_step,
 1424                       u16 rf_type, u8 cdb, u8 jacket, u8 rf_id, u8 no_160, u8 cores)
 1425 {
 1426         int num_devices = ARRAY_SIZE(iwl_dev_info_table);
 1427         int i;
 1428 
 1429         if (!num_devices)
 1430                 return NULL;
 1431 
 1432         for (i = num_devices - 1; i >= 0; i--) {
 1433                 const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i];
 1434 
 1435                 if (dev_info->device != (u16)IWL_CFG_ANY &&
 1436                     dev_info->device != device)
 1437                         continue;
 1438 
 1439                 if (dev_info->subdevice != (u16)IWL_CFG_ANY &&
 1440                     dev_info->subdevice != subsystem_device)
 1441                         continue;
 1442 
 1443                 if (dev_info->mac_type != (u16)IWL_CFG_ANY &&
 1444                     dev_info->mac_type != mac_type)
 1445                         continue;
 1446 
 1447                 if (dev_info->mac_step != (u8)IWL_CFG_ANY &&
 1448                     dev_info->mac_step != mac_step)
 1449                         continue;
 1450 
 1451                 if (dev_info->rf_type != (u16)IWL_CFG_ANY &&
 1452                     dev_info->rf_type != rf_type)
 1453                         continue;
 1454 
 1455                 if (dev_info->cdb != (u8)IWL_CFG_ANY &&
 1456                     dev_info->cdb != cdb)
 1457                         continue;
 1458 
 1459                 if (dev_info->jacket != (u8)IWL_CFG_ANY &&
 1460                     dev_info->jacket != jacket)
 1461                         continue;
 1462 
 1463                 if (dev_info->rf_id != (u8)IWL_CFG_ANY &&
 1464                     dev_info->rf_id != rf_id)
 1465                         continue;
 1466 
 1467                 if (dev_info->no_160 != (u8)IWL_CFG_ANY &&
 1468                     dev_info->no_160 != no_160)
 1469                         continue;
 1470 
 1471                 if (dev_info->cores != (u8)IWL_CFG_ANY &&
 1472                     dev_info->cores != cores)
 1473                         continue;
 1474 
 1475                 return dev_info;
 1476         }
 1477 
 1478         return NULL;
 1479 }
 1480 
 1481 static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 1482 {
 1483         const struct iwl_cfg_trans_params *trans;
 1484         const struct iwl_cfg *cfg_7265d __maybe_unused = NULL;
 1485         const struct iwl_dev_info *dev_info;
 1486         struct iwl_trans *iwl_trans;
 1487         struct iwl_trans_pcie *trans_pcie;
 1488         int ret;
 1489         const struct iwl_cfg *cfg;
 1490 
 1491         trans = (void *)(ent->driver_data & ~TRANS_CFG_MARKER);
 1492 
 1493         /*
 1494          * This is needed for backwards compatibility with the old
 1495          * tables, so we don't need to change all the config structs
 1496          * at the same time.  The cfg is used to compare with the old
 1497          * full cfg structs.
 1498          */
 1499         cfg = (void *)(ent->driver_data & ~TRANS_CFG_MARKER);
 1500 
 1501         /* make sure trans is the first element in iwl_cfg */
 1502         BUILD_BUG_ON(offsetof(struct iwl_cfg, trans));
 1503 
 1504         iwl_trans = iwl_trans_pcie_alloc(pdev, ent, trans);
 1505         if (IS_ERR(iwl_trans))
 1506                 return PTR_ERR(iwl_trans);
 1507 
 1508         trans_pcie = IWL_TRANS_GET_PCIE_TRANS(iwl_trans);
 1509 
 1510         /*
 1511          * Let's try to grab NIC access early here. Sometimes, NICs may
 1512          * fail to initialize, and if that happens it's better if we see
 1513          * issues early on (and can reprobe, per the logic inside), than
 1514          * first trying to load the firmware etc. and potentially only
 1515          * detecting any problems when the first interface is brought up.
 1516          */
 1517         ret = iwl_pcie_prepare_card_hw(iwl_trans);
 1518         if (!ret) {
 1519                 ret = iwl_finish_nic_init(iwl_trans);
 1520                 if (ret)
 1521                         goto out_free_trans;
 1522                 if (iwl_trans_grab_nic_access(iwl_trans)) {
 1523                         /* all good */
 1524                         iwl_trans_release_nic_access(iwl_trans);
 1525                 } else {
 1526                         ret = -EIO;
 1527                         goto out_free_trans;
 1528                 }
 1529         }
 1530 
 1531         iwl_trans->hw_rf_id = iwl_read32(iwl_trans, CSR_HW_RF_ID);
 1532 
 1533         /*
 1534          * The RF_ID is set to zero in blank OTP so read version to
 1535          * extract the RF_ID.
 1536          * This is relevant only for family 9000 and up.
 1537          */
 1538         if (iwl_trans->trans_cfg->rf_id &&
 1539             iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_9000 &&
 1540             !CSR_HW_RFID_TYPE(iwl_trans->hw_rf_id) && get_crf_id(iwl_trans)) {
 1541                 ret = -EINVAL;
 1542                 goto out_free_trans;
 1543         }
 1544 
 1545         dev_info = iwl_pci_find_dev_info(pdev->device, pdev->subsystem_device,
 1546                                          CSR_HW_REV_TYPE(iwl_trans->hw_rev),
 1547                                          iwl_trans->hw_rev_step,
 1548                                          CSR_HW_RFID_TYPE(iwl_trans->hw_rf_id),
 1549                                          CSR_HW_RFID_IS_CDB(iwl_trans->hw_rf_id),
 1550                                          CSR_HW_RFID_IS_JACKET(iwl_trans->hw_rf_id),
 1551                                          IWL_SUBDEVICE_RF_ID(pdev->subsystem_device),
 1552                                          IWL_SUBDEVICE_NO_160(pdev->subsystem_device),
 1553                                          IWL_SUBDEVICE_CORES(pdev->subsystem_device));
 1554 
 1555         if (dev_info) {
 1556                 iwl_trans->cfg = dev_info->cfg;
 1557                 iwl_trans->name = dev_info->name;
 1558         }
 1559 
 1560 #if IS_ENABLED(CONFIG_IWLMVM)
 1561 
 1562         /*
 1563          * Workaround for problematic SnJ device: sometimes when
 1564          * certain RF modules are connected to SnJ, the device ID
 1565          * changes to QnJ's ID.  So we are using QnJ's trans_cfg until
 1566          * here.  But if we detect that the MAC type is actually SnJ,
 1567          * we should switch to it here to avoid problems later.
 1568          */
 1569         if (CSR_HW_REV_TYPE(iwl_trans->hw_rev) == IWL_CFG_MAC_TYPE_SNJ)
 1570                 iwl_trans->trans_cfg = &iwl_so_trans_cfg;
 1571 
 1572         /*
 1573          * special-case 7265D, it has the same PCI IDs.
 1574          *
 1575          * Note that because we already pass the cfg to the transport above,
 1576          * all the parameters that the transport uses must, until that is
 1577          * changed, be identical to the ones in the 7265D configuration.
 1578          */
 1579         if (cfg == &iwl7265_2ac_cfg)
 1580                 cfg_7265d = &iwl7265d_2ac_cfg;
 1581         else if (cfg == &iwl7265_2n_cfg)
 1582                 cfg_7265d = &iwl7265d_2n_cfg;
 1583         else if (cfg == &iwl7265_n_cfg)
 1584                 cfg_7265d = &iwl7265d_n_cfg;
 1585         if (cfg_7265d &&
 1586             (iwl_trans->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_7265D)
 1587                 iwl_trans->cfg = cfg_7265d;
 1588 
 1589         /*
 1590          * This is a hack to switch from Qu B0 to Qu C0.  We need to
 1591          * do this for all cfgs that use Qu B0, except for those using
 1592          * Jf, which have already been moved to the new table.  The
 1593          * rest must be removed once we convert Qu with Hr as well.
 1594          */
 1595         if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QU_C0) {
 1596                 if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr)
 1597                         iwl_trans->cfg = &iwl_ax201_cfg_qu_c0_hr_b0;
 1598                 else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0)
 1599                         iwl_trans->cfg = &killer1650s_2ax_cfg_qu_c0_hr_b0;
 1600                 else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0)
 1601                         iwl_trans->cfg = &killer1650i_2ax_cfg_qu_c0_hr_b0;
 1602         }
 1603 
 1604         /* same thing for QuZ... */
 1605         if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QUZ) {
 1606                 if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr)
 1607                         iwl_trans->cfg = &iwl_ax201_cfg_quz_hr;
 1608                 else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0)
 1609                         iwl_trans->cfg = &iwl_ax1650s_cfg_quz_hr;
 1610                 else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0)
 1611                         iwl_trans->cfg = &iwl_ax1650i_cfg_quz_hr;
 1612         }
 1613 
 1614 #endif
 1615         /*
 1616          * If we didn't set the cfg yet, the PCI ID table entry should have
 1617          * been a full config - if yes, use it, otherwise fail.
 1618          */
 1619         if (!iwl_trans->cfg) {
 1620                 if (ent->driver_data & TRANS_CFG_MARKER) {
 1621                         pr_err("No config found for PCI dev %04x/%04x, rev=0x%x, rfid=0x%x\n",
 1622                                pdev->device, pdev->subsystem_device,
 1623                                iwl_trans->hw_rev, iwl_trans->hw_rf_id);
 1624                         ret = -EINVAL;
 1625                         goto out_free_trans;
 1626                 }
 1627                 iwl_trans->cfg = cfg;
 1628         }
 1629 
 1630         /* if we don't have a name yet, copy name from the old cfg */
 1631         if (!iwl_trans->name)
 1632                 iwl_trans->name = iwl_trans->cfg->name;
 1633 
 1634         if (iwl_trans->trans_cfg->mq_rx_supported) {
 1635                 if (WARN_ON(!iwl_trans->cfg->num_rbds)) {
 1636                         ret = -EINVAL;
 1637                         goto out_free_trans;
 1638                 }
 1639                 trans_pcie->num_rx_bufs = iwl_trans->cfg->num_rbds;
 1640         } else {
 1641                 trans_pcie->num_rx_bufs = RX_QUEUE_SIZE;
 1642         }
 1643 
 1644         ret = iwl_trans_init(iwl_trans);
 1645         if (ret)
 1646                 goto out_free_trans;
 1647 
 1648         pci_set_drvdata(pdev, iwl_trans);
 1649 
 1650         /* try to get ownership so that we'll know if we don't own it */
 1651         iwl_pcie_prepare_card_hw(iwl_trans);
 1652 
 1653         iwl_trans->drv = iwl_drv_start(iwl_trans);
 1654 
 1655         if (IS_ERR(iwl_trans->drv)) {
 1656                 ret = PTR_ERR(iwl_trans->drv);
 1657                 goto out_free_trans;
 1658         }
 1659 
 1660         /* register transport layer debugfs here */
 1661         iwl_trans_pcie_dbgfs_register(iwl_trans);
 1662 
 1663         return 0;
 1664 
 1665 out_free_trans:
 1666         iwl_trans_pcie_free(iwl_trans);
 1667         return ret;
 1668 }
 1669 
 1670 static void iwl_pci_remove(struct pci_dev *pdev)
 1671 {
 1672         struct iwl_trans *trans = pci_get_drvdata(pdev);
 1673 
 1674         iwl_drv_stop(trans->drv);
 1675 
 1676         iwl_trans_pcie_free(trans);
 1677 }
 1678 
 1679 #ifdef CONFIG_PM_SLEEP
 1680 
 1681 static int iwl_pci_suspend(struct device *device)
 1682 {
 1683         /* Before you put code here, think about WoWLAN. You cannot check here
 1684          * whether WoWLAN is enabled or not, and your code will run even if
 1685          * WoWLAN is enabled - don't kill the NIC, someone may need it in Sx.
 1686          */
 1687 
 1688         return 0;
 1689 }
 1690 
 1691 static int iwl_pci_resume(struct device *device)
 1692 {
 1693         struct pci_dev *pdev = to_pci_dev(device);
 1694         struct iwl_trans *trans = pci_get_drvdata(pdev);
 1695         struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 1696 
 1697         /* Before you put code here, think about WoWLAN. You cannot check here
 1698          * whether WoWLAN is enabled or not, and your code will run even if
 1699          * WoWLAN is enabled - the NIC may be alive.
 1700          */
 1701 
 1702         /*
 1703          * We disable the RETRY_TIMEOUT register (0x41) to keep
 1704          * PCI Tx retries from interfering with C3 CPU state.
 1705          */
 1706         pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00);
 1707 
 1708         if (!trans->op_mode)
 1709                 return 0;
 1710 
 1711         /* In WOWLAN, let iwl_trans_pcie_d3_resume do the rest of the work */
 1712         if (test_bit(STATUS_DEVICE_ENABLED, &trans->status))
 1713                 return 0;
 1714 
 1715         /* reconfigure the MSI-X mapping to get the correct IRQ for rfkill */
 1716         iwl_pcie_conf_msix_hw(trans_pcie);
 1717 
 1718         /*
 1719          * Enable rfkill interrupt (in order to keep track of the rfkill
 1720          * status). Must be locked to avoid processing a possible rfkill
 1721          * interrupt while in iwl_pcie_check_hw_rf_kill().
 1722          */
 1723         mutex_lock(&trans_pcie->mutex);
 1724         iwl_enable_rfkill_int(trans);
 1725         iwl_pcie_check_hw_rf_kill(trans);
 1726         mutex_unlock(&trans_pcie->mutex);
 1727 
 1728         return 0;
 1729 }
 1730 
 1731 static const struct dev_pm_ops iwl_dev_pm_ops = {
 1732         SET_SYSTEM_SLEEP_PM_OPS(iwl_pci_suspend,
 1733                                 iwl_pci_resume)
 1734 };
 1735 
 1736 #define IWL_PM_OPS      (&iwl_dev_pm_ops)
 1737 
 1738 #else /* CONFIG_PM_SLEEP */
 1739 
 1740 #define IWL_PM_OPS      NULL
 1741 
 1742 #endif /* CONFIG_PM_SLEEP */
 1743 
 1744 static struct pci_driver iwl_pci_driver = {
 1745         .name = DRV_NAME,
 1746         .id_table = iwl_hw_card_ids,
 1747         .probe = iwl_pci_probe,
 1748         .remove = iwl_pci_remove,
 1749         .driver.pm = IWL_PM_OPS,
 1750 #if defined(__FreeBSD__)
 1751         /* Allow iwm(4) to attach for conflicting IDs for now. */
 1752         .bsd_probe_return = (BUS_PROBE_DEFAULT - 1),
 1753 #endif
 1754 };
 1755 
 1756 int __must_check iwl_pci_register_driver(void)
 1757 {
 1758         int ret;
 1759         ret = pci_register_driver(&iwl_pci_driver);
 1760         if (ret)
 1761                 pr_err("Unable to initialize PCI module\n");
 1762 
 1763         return ret;
 1764 }
 1765 
 1766 void iwl_pci_unregister_driver(void)
 1767 {
 1768         pci_unregister_driver(&iwl_pci_driver);
 1769 }
 1770 
 1771 #if defined(__FreeBSD__)
 1772 static int
 1773 sysctl_iwlwifi_pci_ids_name(SYSCTL_HANDLER_ARGS)
 1774 {
 1775         const struct pci_device_id *id;
 1776         struct sbuf *sb;
 1777         int error, i;
 1778 
 1779         error = sysctl_wire_old_buffer(req, 0);
 1780         if (error != 0)
 1781                 return (error);
 1782         sb = sbuf_new_for_sysctl(NULL, NULL, 512, req);
 1783         if (sb == NULL)
 1784                 return (ENOMEM);
 1785 
 1786         id = iwl_hw_card_ids;
 1787         while (id != NULL && id->vendor != 0) {
 1788 
 1789                 if ((id->driver_data & TRANS_CFG_MARKER) != 0) {
 1790                         /* Skip and print them below. */
 1791 
 1792                 } else if (id->driver_data != 0) {
 1793                         const struct iwl_cfg *cfg;
 1794 
 1795                         cfg = (void *)(id->driver_data & ~TRANS_CFG_MARKER);
 1796                         sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\n",
 1797                             id->vendor, id->device, id->subvendor, id->subdevice,
 1798                             cfg->name, cfg->fw_name_pre);
 1799                 } else {
 1800                         sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\n",
 1801                             id->vendor, id->device, id->subvendor, id->subdevice,
 1802                             "","");
 1803                 }
 1804                 id++;
 1805         }
 1806 
 1807         for (i = 0; i < ARRAY_SIZE(iwl_dev_info_table); i++) {
 1808                 const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i];
 1809                 const char *name;
 1810 
 1811                 if (dev_info->name)
 1812                         name = dev_info->name;
 1813                 else if (dev_info->cfg && dev_info->cfg->name)
 1814                         name = dev_info->cfg->name;
 1815                 else
 1816                         name = "";
 1817 
 1818                 sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\n",
 1819                     PCI_VENDOR_ID_INTEL, dev_info->device, PCI_ANY_ID, dev_info->subdevice,
 1820                     name, dev_info->cfg->fw_name_pre);
 1821         }
 1822 
 1823         error = sbuf_finish(sb);
 1824         sbuf_delete(sb);
 1825 
 1826         return (error);
 1827 }
 1828 SYSCTL_PROC(LINUXKPI_PARAM_PARENT, OID_AUTO, LINUXKPI_PARAM_NAME(pci_ids_name),
 1829     CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_SKIP | CTLFLAG_MPSAFE, NULL, 0,
 1830     sysctl_iwlwifi_pci_ids_name, "", "iwlwifi PCI IDs and names");
 1831 #endif

Cache object: 88892703bc5432a858bc5c02469729f5


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.