1bfcc09ddSBjoern A. Zeeb // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2bfcc09ddSBjoern A. Zeeb /* 3*a4128aadSBjoern A. Zeeb * Copyright (C) 2005-2014, 2018-2024 Intel Corporation 4bfcc09ddSBjoern A. Zeeb * Copyright (C) 2013-2015 Intel Mobile Communications GmbH 5bfcc09ddSBjoern A. Zeeb * Copyright (C) 2016-2017 Intel Deutschland GmbH 6bfcc09ddSBjoern A. Zeeb */ 70a22677bSBjoern A. Zeeb #if defined(__FreeBSD__) 80a22677bSBjoern A. Zeeb #define LINUXKPI_PARAM_PREFIX iwlwifi_ 90a22677bSBjoern A. Zeeb #endif 10bfcc09ddSBjoern A. Zeeb #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 11bfcc09ddSBjoern A. Zeeb 12bfcc09ddSBjoern A. Zeeb #include <linux/module.h> 13bfcc09ddSBjoern A. Zeeb #include <linux/pci.h> 14bfcc09ddSBjoern A. Zeeb #include <linux/acpi.h> 15bfcc09ddSBjoern A. Zeeb 16bfcc09ddSBjoern A. Zeeb #include "fw/acpi.h" 17bfcc09ddSBjoern A. Zeeb 18bfcc09ddSBjoern A. Zeeb #include "iwl-trans.h" 19bfcc09ddSBjoern A. Zeeb #include "iwl-drv.h" 20bfcc09ddSBjoern A. Zeeb #include "iwl-prph.h" 21bfcc09ddSBjoern A. Zeeb #include "internal.h" 22bfcc09ddSBjoern A. Zeeb 23bfcc09ddSBjoern A. Zeeb #define TRANS_CFG_MARKER BIT(0) 24bfcc09ddSBjoern A. Zeeb #define _IS_A(cfg, _struct) __builtin_types_compatible_p(typeof(cfg), \ 25bfcc09ddSBjoern A. Zeeb struct _struct) 26bfcc09ddSBjoern A. Zeeb extern int _invalid_type; 27bfcc09ddSBjoern A. Zeeb #define _TRANS_CFG_MARKER(cfg) \ 28bfcc09ddSBjoern A. Zeeb (__builtin_choose_expr(_IS_A(cfg, iwl_cfg_trans_params), \ 29bfcc09ddSBjoern A. Zeeb TRANS_CFG_MARKER, \ 30bfcc09ddSBjoern A. Zeeb __builtin_choose_expr(_IS_A(cfg, iwl_cfg), 0, _invalid_type))) 31bfcc09ddSBjoern A. Zeeb #define _ASSIGN_CFG(cfg) (_TRANS_CFG_MARKER(cfg) + (kernel_ulong_t)&(cfg)) 32bfcc09ddSBjoern A. Zeeb 33bfcc09ddSBjoern A. Zeeb #define IWL_PCI_DEVICE(dev, subdev, cfg) \ 34bfcc09ddSBjoern A. Zeeb .vendor = PCI_VENDOR_ID_INTEL, .device = (dev), \ 35bfcc09ddSBjoern A. Zeeb .subvendor = PCI_ANY_ID, .subdevice = (subdev), \ 36bfcc09ddSBjoern A. Zeeb .driver_data = _ASSIGN_CFG(cfg) 37bfcc09ddSBjoern A. Zeeb 38bfcc09ddSBjoern A. Zeeb /* Hardware specific file defines the PCI IDs table for that hardware module */ 39*a4128aadSBjoern A. Zeeb VISIBLE_IF_IWLWIFI_KUNIT const struct pci_device_id iwl_hw_card_ids[] = { 40bfcc09ddSBjoern A. Zeeb #if IS_ENABLED(CONFIG_IWLDVM) 41bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1201, iwl5100_agn_cfg)}, /* Mini Card */ 42bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1301, iwl5100_agn_cfg)}, /* Half Mini Card */ 43bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1204, iwl5100_agn_cfg)}, /* Mini Card */ 44bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1304, iwl5100_agn_cfg)}, /* Half Mini Card */ 45bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1205, iwl5100_bgn_cfg)}, /* Mini Card */ 46bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1305, iwl5100_bgn_cfg)}, /* Half Mini Card */ 47bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1206, iwl5100_abg_cfg)}, /* Mini Card */ 48bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1306, iwl5100_abg_cfg)}, /* Half Mini Card */ 49bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1221, iwl5100_agn_cfg)}, /* Mini Card */ 50bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1321, iwl5100_agn_cfg)}, /* Half Mini Card */ 51bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1224, iwl5100_agn_cfg)}, /* Mini Card */ 52bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1324, iwl5100_agn_cfg)}, /* Half Mini Card */ 53bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1225, iwl5100_bgn_cfg)}, /* Mini Card */ 54bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1325, iwl5100_bgn_cfg)}, /* Half Mini Card */ 55bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1226, iwl5100_abg_cfg)}, /* Mini Card */ 56bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4232, 0x1326, iwl5100_abg_cfg)}, /* Half Mini Card */ 57bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4237, 0x1211, iwl5100_agn_cfg)}, /* Mini Card */ 58bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4237, 0x1311, iwl5100_agn_cfg)}, /* Half Mini Card */ 59bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4237, 0x1214, iwl5100_agn_cfg)}, /* Mini Card */ 60bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4237, 0x1314, iwl5100_agn_cfg)}, /* Half Mini Card */ 61bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4237, 0x1215, iwl5100_bgn_cfg)}, /* Mini Card */ 62bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4237, 0x1315, iwl5100_bgn_cfg)}, /* Half Mini Card */ 63bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4237, 0x1216, iwl5100_abg_cfg)}, /* Mini Card */ 64bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4237, 0x1316, iwl5100_abg_cfg)}, /* Half Mini Card */ 65bfcc09ddSBjoern A. Zeeb 66bfcc09ddSBjoern A. Zeeb /* 5300 Series WiFi */ 67bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4235, 0x1021, iwl5300_agn_cfg)}, /* Mini Card */ 68bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4235, 0x1121, iwl5300_agn_cfg)}, /* Half Mini Card */ 69bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4235, 0x1024, iwl5300_agn_cfg)}, /* Mini Card */ 70bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4235, 0x1124, iwl5300_agn_cfg)}, /* Half Mini Card */ 71bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4235, 0x1001, iwl5300_agn_cfg)}, /* Mini Card */ 72bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4235, 0x1101, iwl5300_agn_cfg)}, /* Half Mini Card */ 73bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4235, 0x1004, iwl5300_agn_cfg)}, /* Mini Card */ 74bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4235, 0x1104, iwl5300_agn_cfg)}, /* Half Mini Card */ 75bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4236, 0x1011, iwl5300_agn_cfg)}, /* Mini Card */ 76bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4236, 0x1111, iwl5300_agn_cfg)}, /* Half Mini Card */ 77bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4236, 0x1014, iwl5300_agn_cfg)}, /* Mini Card */ 78bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4236, 0x1114, iwl5300_agn_cfg)}, /* Half Mini Card */ 79bfcc09ddSBjoern A. Zeeb 80bfcc09ddSBjoern A. Zeeb /* 5350 Series WiFi/WiMax */ 81bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423A, 0x1001, iwl5350_agn_cfg)}, /* Mini Card */ 82bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423A, 0x1021, iwl5350_agn_cfg)}, /* Mini Card */ 83bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423B, 0x1011, iwl5350_agn_cfg)}, /* Mini Card */ 84bfcc09ddSBjoern A. Zeeb 85bfcc09ddSBjoern A. Zeeb /* 5150 Series Wifi/WiMax */ 86bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423C, 0x1201, iwl5150_agn_cfg)}, /* Mini Card */ 87bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423C, 0x1301, iwl5150_agn_cfg)}, /* Half Mini Card */ 88bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423C, 0x1206, iwl5150_abg_cfg)}, /* Mini Card */ 89bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423C, 0x1306, iwl5150_abg_cfg)}, /* Half Mini Card */ 90bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423C, 0x1221, iwl5150_agn_cfg)}, /* Mini Card */ 91bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423C, 0x1321, iwl5150_agn_cfg)}, /* Half Mini Card */ 92bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423C, 0x1326, iwl5150_abg_cfg)}, /* Half Mini Card */ 93bfcc09ddSBjoern A. Zeeb 94bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423D, 0x1211, iwl5150_agn_cfg)}, /* Mini Card */ 95bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423D, 0x1311, iwl5150_agn_cfg)}, /* Half Mini Card */ 96bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423D, 0x1216, iwl5150_abg_cfg)}, /* Mini Card */ 97bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x423D, 0x1316, iwl5150_abg_cfg)}, /* Half Mini Card */ 98bfcc09ddSBjoern A. Zeeb 99bfcc09ddSBjoern A. Zeeb /* 6x00 Series */ 100bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422B, 0x1101, iwl6000_3agn_cfg)}, 101bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422B, 0x1108, iwl6000_3agn_cfg)}, 102bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422B, 0x1121, iwl6000_3agn_cfg)}, 103bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422B, 0x1128, iwl6000_3agn_cfg)}, 104bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422C, 0x1301, iwl6000i_2agn_cfg)}, 105bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422C, 0x1306, iwl6000i_2abg_cfg)}, 106bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422C, 0x1307, iwl6000i_2bg_cfg)}, 107bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422C, 0x1321, iwl6000i_2agn_cfg)}, 108bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x422C, 0x1326, iwl6000i_2abg_cfg)}, 109bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4238, 0x1111, iwl6000_3agn_cfg)}, 110bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4238, 0x1118, iwl6000_3agn_cfg)}, 111bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4239, 0x1311, iwl6000i_2agn_cfg)}, 112bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_2abg_cfg)}, 113bfcc09ddSBjoern A. Zeeb 114bfcc09ddSBjoern A. Zeeb /* 6x05 Series */ 115bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6005_2agn_cfg)}, 116bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6005_2abg_cfg)}, 117bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6005_2bg_cfg)}, 118bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1308, iwl6005_2agn_cfg)}, 119bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6005_2agn_cfg)}, 120bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6005_2abg_cfg)}, 121bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1328, iwl6005_2agn_cfg)}, 122bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6005_2agn_cfg)}, 123bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0085, 0x1318, iwl6005_2agn_cfg)}, 124bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6005_2abg_cfg)}, 125bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0xC020, iwl6005_2agn_sff_cfg)}, 126bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0085, 0xC220, iwl6005_2agn_sff_cfg)}, 127bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0085, 0xC228, iwl6005_2agn_sff_cfg)}, 128bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x4820, iwl6005_2agn_d_cfg)}, 129bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1304, iwl6005_2agn_mow1_cfg)},/* low 5GHz active */ 130bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0082, 0x1305, iwl6005_2agn_mow2_cfg)},/* high 5GHz active */ 131bfcc09ddSBjoern A. Zeeb 132bfcc09ddSBjoern A. Zeeb /* 6x30 Series */ 133bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x008A, 0x5305, iwl1030_bgn_cfg)}, 134bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x008A, 0x5307, iwl1030_bg_cfg)}, 135bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x008A, 0x5325, iwl1030_bgn_cfg)}, 136bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x008A, 0x5327, iwl1030_bg_cfg)}, 137bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x008B, 0x5315, iwl1030_bgn_cfg)}, 138bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x008B, 0x5317, iwl1030_bg_cfg)}, 139bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6030_2agn_cfg)}, 140bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6030_2bgn_cfg)}, 141bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6030_2abg_cfg)}, 142bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6030_2agn_cfg)}, 143bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6030_2bgn_cfg)}, 144bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6030_2abg_cfg)}, 145bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6030_2bg_cfg)}, 146bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6030_2agn_cfg)}, 147bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6030_2bgn_cfg)}, 148bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6030_2abg_cfg)}, 149bfcc09ddSBjoern A. Zeeb 150bfcc09ddSBjoern A. Zeeb /* 6x50 WiFi/WiMax Series */ 151bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)}, 152bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0087, 0x1306, iwl6050_2abg_cfg)}, 153bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0087, 0x1321, iwl6050_2agn_cfg)}, 154bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0087, 0x1326, iwl6050_2abg_cfg)}, 155bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_2agn_cfg)}, 156bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)}, 157bfcc09ddSBjoern A. Zeeb 158bfcc09ddSBjoern A. Zeeb /* 6150 WiFi/WiMax Series */ 159bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6150_bgn_cfg)}, 160bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0885, 0x1307, iwl6150_bg_cfg)}, 161bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6150_bgn_cfg)}, 162bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0885, 0x1327, iwl6150_bg_cfg)}, 163bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6150_bgn_cfg)}, 164bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0886, 0x1317, iwl6150_bg_cfg)}, 165bfcc09ddSBjoern A. Zeeb 166bfcc09ddSBjoern A. Zeeb /* 1000 Series WiFi */ 167bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)}, 168bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_bgn_cfg)}, 169bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0083, 0x1225, iwl1000_bgn_cfg)}, 170bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0083, 0x1325, iwl1000_bgn_cfg)}, 171bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0084, 0x1215, iwl1000_bgn_cfg)}, 172bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0084, 0x1315, iwl1000_bgn_cfg)}, 173bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0083, 0x1206, iwl1000_bg_cfg)}, 174bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0083, 0x1306, iwl1000_bg_cfg)}, 175bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0083, 0x1226, iwl1000_bg_cfg)}, 176bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0083, 0x1326, iwl1000_bg_cfg)}, 177bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0084, 0x1216, iwl1000_bg_cfg)}, 178bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0084, 0x1316, iwl1000_bg_cfg)}, 179bfcc09ddSBjoern A. Zeeb 180bfcc09ddSBjoern A. Zeeb /* 100 Series WiFi */ 181bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08AE, 0x1005, iwl100_bgn_cfg)}, 182bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08AE, 0x1007, iwl100_bg_cfg)}, 183bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08AF, 0x1015, iwl100_bgn_cfg)}, 184bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08AF, 0x1017, iwl100_bg_cfg)}, 185bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08AE, 0x1025, iwl100_bgn_cfg)}, 186bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08AE, 0x1027, iwl100_bg_cfg)}, 187bfcc09ddSBjoern A. Zeeb 188bfcc09ddSBjoern A. Zeeb /* 130 Series WiFi */ 189bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0896, 0x5005, iwl130_bgn_cfg)}, 190bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0896, 0x5007, iwl130_bg_cfg)}, 191bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0897, 0x5015, iwl130_bgn_cfg)}, 192bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0897, 0x5017, iwl130_bg_cfg)}, 193bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0896, 0x5025, iwl130_bgn_cfg)}, 194bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0896, 0x5027, iwl130_bg_cfg)}, 195bfcc09ddSBjoern A. Zeeb 196bfcc09ddSBjoern A. Zeeb /* 2x00 Series */ 197bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0890, 0x4022, iwl2000_2bgn_cfg)}, 198bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0891, 0x4222, iwl2000_2bgn_cfg)}, 199bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0890, 0x4422, iwl2000_2bgn_cfg)}, 200bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0890, 0x4822, iwl2000_2bgn_d_cfg)}, 201bfcc09ddSBjoern A. Zeeb 202bfcc09ddSBjoern A. Zeeb /* 2x30 Series */ 203bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0887, 0x4062, iwl2030_2bgn_cfg)}, 204bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0888, 0x4262, iwl2030_2bgn_cfg)}, 205bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0887, 0x4462, iwl2030_2bgn_cfg)}, 206bfcc09ddSBjoern A. Zeeb 207bfcc09ddSBjoern A. Zeeb /* 6x35 Series */ 208bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x088E, 0x4060, iwl6035_2agn_cfg)}, 209bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x088E, 0x406A, iwl6035_2agn_sff_cfg)}, 210bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x088F, 0x4260, iwl6035_2agn_cfg)}, 211bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x088F, 0x426A, iwl6035_2agn_sff_cfg)}, 212bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x088E, 0x4460, iwl6035_2agn_cfg)}, 213bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x088E, 0x446A, iwl6035_2agn_sff_cfg)}, 214bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)}, 215bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)}, 216bfcc09ddSBjoern A. Zeeb 217bfcc09ddSBjoern A. Zeeb /* 105 Series */ 218bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)}, 219bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0895, 0x0222, iwl105_bgn_cfg)}, 220bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0894, 0x0422, iwl105_bgn_cfg)}, 221bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0894, 0x0822, iwl105_bgn_d_cfg)}, 222bfcc09ddSBjoern A. Zeeb 223bfcc09ddSBjoern A. Zeeb /* 135 Series */ 224bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0892, 0x0062, iwl135_bgn_cfg)}, 225bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0893, 0x0262, iwl135_bgn_cfg)}, 226bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x0892, 0x0462, iwl135_bgn_cfg)}, 227bfcc09ddSBjoern A. Zeeb #endif /* CONFIG_IWLDVM */ 228bfcc09ddSBjoern A. Zeeb 229bfcc09ddSBjoern A. Zeeb #if IS_ENABLED(CONFIG_IWLMVM) 230bfcc09ddSBjoern A. Zeeb /* 7260 Series */ 231bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)}, 232bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4072, iwl7260_2ac_cfg)}, 233bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4170, iwl7260_2ac_cfg)}, 234bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4C60, iwl7260_2ac_cfg)}, 235bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4C70, iwl7260_2ac_cfg)}, 236bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4060, iwl7260_2n_cfg)}, 237bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x406A, iwl7260_2n_cfg)}, 238bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4160, iwl7260_2n_cfg)}, 239bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4062, iwl7260_n_cfg)}, 240bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4162, iwl7260_n_cfg)}, 241bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0x4270, iwl7260_2ac_cfg)}, 242bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0x4272, iwl7260_2ac_cfg)}, 243bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0x4260, iwl7260_2n_cfg)}, 244bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0x426A, iwl7260_2n_cfg)}, 245bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0x4262, iwl7260_n_cfg)}, 246bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4470, iwl7260_2ac_cfg)}, 247bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4472, iwl7260_2ac_cfg)}, 248bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4460, iwl7260_2n_cfg)}, 249bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x446A, iwl7260_2n_cfg)}, 250bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4462, iwl7260_n_cfg)}, 251bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4870, iwl7260_2ac_cfg)}, 252bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x486E, iwl7260_2ac_cfg)}, 253bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4A70, iwl7260_2ac_cfg_high_temp)}, 254bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4A6E, iwl7260_2ac_cfg_high_temp)}, 255bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4A6C, iwl7260_2ac_cfg_high_temp)}, 256bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4570, iwl7260_2ac_cfg)}, 257bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4560, iwl7260_2n_cfg)}, 258bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0x4370, iwl7260_2ac_cfg)}, 259bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0x4360, iwl7260_2n_cfg)}, 260bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x5070, iwl7260_2ac_cfg)}, 261bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x5072, iwl7260_2ac_cfg)}, 262bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x5170, iwl7260_2ac_cfg)}, 263bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x5770, iwl7260_2ac_cfg)}, 264bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4020, iwl7260_2n_cfg)}, 265bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x402A, iwl7260_2n_cfg)}, 266bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0x4220, iwl7260_2n_cfg)}, 267bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0x4420, iwl7260_2n_cfg)}, 268bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)}, 269bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC072, iwl7260_2ac_cfg)}, 270bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC170, iwl7260_2ac_cfg)}, 271bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC060, iwl7260_2n_cfg)}, 272bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC06A, iwl7260_2n_cfg)}, 273bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC160, iwl7260_2n_cfg)}, 274bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC062, iwl7260_n_cfg)}, 275bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC162, iwl7260_n_cfg)}, 276bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC770, iwl7260_2ac_cfg)}, 277bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC760, iwl7260_2n_cfg)}, 278bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0xC270, iwl7260_2ac_cfg)}, 279bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xCC70, iwl7260_2ac_cfg)}, 280bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xCC60, iwl7260_2ac_cfg)}, 281bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0xC272, iwl7260_2ac_cfg)}, 282bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0xC260, iwl7260_2n_cfg)}, 283bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0xC26A, iwl7260_n_cfg)}, 284bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0xC262, iwl7260_n_cfg)}, 285bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC470, iwl7260_2ac_cfg)}, 286bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC472, iwl7260_2ac_cfg)}, 287bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC460, iwl7260_2n_cfg)}, 288bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC462, iwl7260_n_cfg)}, 289bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC570, iwl7260_2ac_cfg)}, 290bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC560, iwl7260_2n_cfg)}, 291bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0xC370, iwl7260_2ac_cfg)}, 292bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC360, iwl7260_2n_cfg)}, 293bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC020, iwl7260_2n_cfg)}, 294bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC02A, iwl7260_2n_cfg)}, 295bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B2, 0xC220, iwl7260_2n_cfg)}, 296bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B1, 0xC420, iwl7260_2n_cfg)}, 297bfcc09ddSBjoern A. Zeeb 298bfcc09ddSBjoern A. Zeeb /* 3160 Series */ 299bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_2ac_cfg)}, 300bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x0072, iwl3160_2ac_cfg)}, 301bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x0170, iwl3160_2ac_cfg)}, 302bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x0172, iwl3160_2ac_cfg)}, 303bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x0060, iwl3160_2n_cfg)}, 304bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x0062, iwl3160_n_cfg)}, 305bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B4, 0x0270, iwl3160_2ac_cfg)}, 306bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B4, 0x0272, iwl3160_2ac_cfg)}, 307bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x0470, iwl3160_2ac_cfg)}, 308bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x0472, iwl3160_2ac_cfg)}, 309bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B4, 0x0370, iwl3160_2ac_cfg)}, 310bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_2ac_cfg)}, 311bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x8072, iwl3160_2ac_cfg)}, 312bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x8170, iwl3160_2ac_cfg)}, 313bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x8172, iwl3160_2ac_cfg)}, 314bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x8060, iwl3160_2n_cfg)}, 315bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x8062, iwl3160_n_cfg)}, 316bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B4, 0x8270, iwl3160_2ac_cfg)}, 317bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B4, 0x8370, iwl3160_2ac_cfg)}, 318bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B4, 0x8272, iwl3160_2ac_cfg)}, 319bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x8470, iwl3160_2ac_cfg)}, 320bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x8570, iwl3160_2ac_cfg)}, 321bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x1070, iwl3160_2ac_cfg)}, 322bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x08B3, 0x1170, iwl3160_2ac_cfg)}, 323bfcc09ddSBjoern A. Zeeb 324bfcc09ddSBjoern A. Zeeb /* 3165 Series */ 325bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3165, 0x4010, iwl3165_2ac_cfg)}, 326bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3165, 0x4012, iwl3165_2ac_cfg)}, 327bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3166, 0x4212, iwl3165_2ac_cfg)}, 328bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3165, 0x4410, iwl3165_2ac_cfg)}, 329bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3165, 0x4510, iwl3165_2ac_cfg)}, 330bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3165, 0x4110, iwl3165_2ac_cfg)}, 331bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3166, 0x4310, iwl3165_2ac_cfg)}, 332bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3166, 0x4210, iwl3165_2ac_cfg)}, 333bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3165, 0x8010, iwl3165_2ac_cfg)}, 334bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3165, 0x8110, iwl3165_2ac_cfg)}, 335bfcc09ddSBjoern A. Zeeb 336bfcc09ddSBjoern A. Zeeb /* 3168 Series */ 337bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FB, 0x2010, iwl3168_2ac_cfg)}, 338bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FB, 0x2110, iwl3168_2ac_cfg)}, 339bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FB, 0x2050, iwl3168_2ac_cfg)}, 340bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FB, 0x2150, iwl3168_2ac_cfg)}, 341bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FB, 0x0000, iwl3168_2ac_cfg)}, 342bfcc09ddSBjoern A. Zeeb 343bfcc09ddSBjoern A. Zeeb /* 7265 Series */ 344bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7265_2ac_cfg)}, 345bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5110, iwl7265_2ac_cfg)}, 346bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5100, iwl7265_2ac_cfg)}, 347bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7265_2ac_cfg)}, 348bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x5302, iwl7265_n_cfg)}, 349bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x5210, iwl7265_2ac_cfg)}, 350bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5C10, iwl7265_2ac_cfg)}, 351bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5012, iwl7265_2ac_cfg)}, 352bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7265_2ac_cfg)}, 353bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7265_2ac_cfg)}, 354bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5510, iwl7265_2ac_cfg)}, 355bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5400, iwl7265_2ac_cfg)}, 356bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x1010, iwl7265_2ac_cfg)}, 357bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5000, iwl7265_2n_cfg)}, 358bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x500A, iwl7265_2n_cfg)}, 359bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x5200, iwl7265_2n_cfg)}, 360bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5002, iwl7265_n_cfg)}, 361bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5102, iwl7265_n_cfg)}, 362bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x5202, iwl7265_n_cfg)}, 363bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9010, iwl7265_2ac_cfg)}, 364bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9012, iwl7265_2ac_cfg)}, 365bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x900A, iwl7265_2ac_cfg)}, 366bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7265_2ac_cfg)}, 367bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9112, iwl7265_2ac_cfg)}, 368bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x9210, iwl7265_2ac_cfg)}, 369bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)}, 370bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9510, iwl7265_2ac_cfg)}, 371bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x9310, iwl7265_2ac_cfg)}, 372bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9410, iwl7265_2ac_cfg)}, 373bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5020, iwl7265_2n_cfg)}, 374bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x502A, iwl7265_2n_cfg)}, 375bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5420, iwl7265_2n_cfg)}, 376bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5090, iwl7265_2ac_cfg)}, 377bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5190, iwl7265_2ac_cfg)}, 378bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5590, iwl7265_2ac_cfg)}, 379bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x5290, iwl7265_2ac_cfg)}, 380bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5490, iwl7265_2ac_cfg)}, 381bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7265_2ac_cfg)}, 382bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)}, 383bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095B, 0x520A, iwl7265_2ac_cfg)}, 384bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9000, iwl7265_2ac_cfg)}, 385bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9400, iwl7265_2ac_cfg)}, 386bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x095A, 0x9E10, iwl7265_2ac_cfg)}, 387bfcc09ddSBjoern A. Zeeb 388bfcc09ddSBjoern A. Zeeb /* 8000 Series */ 389bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)}, 390bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)}, 391bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8260_2ac_cfg)}, 392bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8260_2ac_cfg)}, 393bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8260_2ac_cfg)}, 394bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8260_2ac_cfg)}, 395bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x1132, iwl8260_2ac_cfg)}, 396bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0110, iwl8260_2ac_cfg)}, 397bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x01F0, iwl8260_2ac_cfg)}, 398bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0012, iwl8260_2ac_cfg)}, 399bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x1012, iwl8260_2ac_cfg)}, 400bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x1110, iwl8260_2ac_cfg)}, 401bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0050, iwl8260_2ac_cfg)}, 402bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0250, iwl8260_2ac_cfg)}, 403bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x1050, iwl8260_2ac_cfg)}, 404bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0150, iwl8260_2ac_cfg)}, 405bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x1150, iwl8260_2ac_cfg)}, 406bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F4, 0x0030, iwl8260_2ac_cfg)}, 407bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8260_2ac_cfg)}, 408bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8260_2ac_cfg)}, 409bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8260_2ac_cfg)}, 410bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8260_2ac_cfg)}, 411bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)}, 412bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)}, 413bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0xD0B0, iwl8260_2ac_cfg)}, 414bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0xB0B0, iwl8260_2ac_cfg)}, 415bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)}, 416bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8260_2ac_cfg)}, 417bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8260_2ac_cfg)}, 418bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8260_2ac_cfg)}, 419bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8260_2ac_cfg)}, 420bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8260_2ac_cfg)}, 421bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8260_2ac_cfg)}, 422bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8260_2ac_cfg)}, 423bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8260_2ac_cfg)}, 424bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8260_2ac_cfg)}, 425bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8260_2ac_cfg)}, 426bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x9132, iwl8260_2ac_cfg)}, 427bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x8050, iwl8260_2ac_cfg)}, 428bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x8150, iwl8260_2ac_cfg)}, 429bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x9050, iwl8260_2ac_cfg)}, 430bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x9150, iwl8260_2ac_cfg)}, 431bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0004, iwl8260_2n_cfg)}, 432bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0044, iwl8260_2n_cfg)}, 433bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F5, 0x0010, iwl4165_2ac_cfg)}, 434bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F6, 0x0030, iwl4165_2ac_cfg)}, 435bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0810, iwl8260_2ac_cfg)}, 436bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0910, iwl8260_2ac_cfg)}, 437bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0850, iwl8260_2ac_cfg)}, 438bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8260_2ac_cfg)}, 439bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)}, 440bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8265_2ac_cfg)}, 441bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24F3, 0x4010, iwl8260_2ac_cfg)}, 442bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)}, 443bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)}, 444bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)}, 445bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x1130, iwl8265_2ac_cfg)}, 446bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0130, iwl8265_2ac_cfg)}, 447bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8265_2ac_cfg)}, 448bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x10D0, iwl8265_2ac_cfg)}, 449bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8265_2ac_cfg)}, 450bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8265_2ac_cfg)}, 451bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x9010, iwl8265_2ac_cfg)}, 452bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x8110, iwl8265_2ac_cfg)}, 453bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x8050, iwl8265_2ac_cfg)}, 454bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x8010, iwl8265_2ac_cfg)}, 455bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8265_2ac_cfg)}, 456bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8265_2ac_cfg)}, 457bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8265_2ac_cfg)}, 458bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0910, iwl8265_2ac_cfg)}, 459bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0930, iwl8265_2ac_cfg)}, 460bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0950, iwl8265_2ac_cfg)}, 461bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0850, iwl8265_2ac_cfg)}, 462bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x1014, iwl8265_2ac_cfg)}, 463bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x3E02, iwl8275_2ac_cfg)}, 464bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x3E01, iwl8275_2ac_cfg)}, 465bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x1012, iwl8275_2ac_cfg)}, 466bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8275_2ac_cfg)}, 467bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x0014, iwl8265_2ac_cfg)}, 468bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8265_2ac_cfg)}, 469bfcc09ddSBjoern A. Zeeb 470bfcc09ddSBjoern A. Zeeb /* 9000 Series */ 471bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x2526, PCI_ANY_ID, iwl9000_trans_cfg)}, 472bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x271B, PCI_ANY_ID, iwl9000_trans_cfg)}, 473bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x271C, PCI_ANY_ID, iwl9000_trans_cfg)}, 474bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x30DC, PCI_ANY_ID, iwl9560_long_latency_trans_cfg)}, 475bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x31DC, PCI_ANY_ID, iwl9560_shared_clk_trans_cfg)}, 476bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x9DF0, PCI_ANY_ID, iwl9560_trans_cfg)}, 477bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA370, PCI_ANY_ID, iwl9560_trans_cfg)}, 478bfcc09ddSBjoern A. Zeeb 479bfcc09ddSBjoern A. Zeeb /* Qu devices */ 480bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x02F0, PCI_ANY_ID, iwl_qu_trans_cfg)}, 481bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x06F0, PCI_ANY_ID, iwl_qu_trans_cfg)}, 482bfcc09ddSBjoern A. Zeeb 483bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x34F0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 484bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x3DF0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 485bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4DF0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 486bfcc09ddSBjoern A. Zeeb 487bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x43F0, PCI_ANY_ID, iwl_qu_long_latency_trans_cfg)}, 488bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA0F0, PCI_ANY_ID, iwl_qu_long_latency_trans_cfg)}, 489bfcc09ddSBjoern A. Zeeb 490bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x2723, PCI_ANY_ID, iwl_ax200_trans_cfg)}, 491bfcc09ddSBjoern A. Zeeb 492bfcc09ddSBjoern A. Zeeb /* So devices */ 493bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x2725, PCI_ANY_ID, iwl_so_trans_cfg)}, 494fac1f593SBjoern A. Zeeb {IWL_PCI_DEVICE(0x7A70, PCI_ANY_ID, iwl_so_long_latency_imr_trans_cfg)}, 495bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x7AF0, PCI_ANY_ID, iwl_so_trans_cfg)}, 496bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x51F0, PCI_ANY_ID, iwl_so_long_latency_trans_cfg)}, 497fac1f593SBjoern A. Zeeb {IWL_PCI_DEVICE(0x51F1, PCI_ANY_ID, iwl_so_long_latency_imr_trans_cfg)}, 498bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x54F0, PCI_ANY_ID, iwl_so_long_latency_trans_cfg)}, 499d9836fb4SBjoern A. Zeeb {IWL_PCI_DEVICE(0x7F70, PCI_ANY_ID, iwl_so_trans_cfg)}, 500bfcc09ddSBjoern A. Zeeb 501bfcc09ddSBjoern A. Zeeb /* Ma devices */ 502bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x2729, PCI_ANY_ID, iwl_ma_trans_cfg)}, 503bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x7E40, PCI_ANY_ID, iwl_ma_trans_cfg)}, 504bfcc09ddSBjoern A. Zeeb 505bfcc09ddSBjoern A. Zeeb /* Bz devices */ 506bfcc09ddSBjoern A. Zeeb {IWL_PCI_DEVICE(0x2727, PCI_ANY_ID, iwl_bz_trans_cfg)}, 507*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0x272D, PCI_ANY_ID, iwl_bz_trans_cfg)}, 5089af1bba4SBjoern A. Zeeb {IWL_PCI_DEVICE(0x272b, PCI_ANY_ID, iwl_bz_trans_cfg)}, 509*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0000, iwl_bz_trans_cfg)}, 510*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0090, iwl_bz_trans_cfg)}, 511*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0094, iwl_bz_trans_cfg)}, 512*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0098, iwl_bz_trans_cfg)}, 513*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x009C, iwl_bz_trans_cfg)}, 514*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x00C0, iwl_bz_trans_cfg)}, 515*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x00C4, iwl_bz_trans_cfg)}, 516*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x00E0, iwl_bz_trans_cfg)}, 517*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x00E4, iwl_bz_trans_cfg)}, 518*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x00E8, iwl_bz_trans_cfg)}, 519*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x00EC, iwl_bz_trans_cfg)}, 520*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0100, iwl_bz_trans_cfg)}, 521*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0110, iwl_bz_trans_cfg)}, 522*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0114, iwl_bz_trans_cfg)}, 523*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0118, iwl_bz_trans_cfg)}, 524*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x011C, iwl_bz_trans_cfg)}, 525*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0310, iwl_bz_trans_cfg)}, 526*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0314, iwl_bz_trans_cfg)}, 527*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0510, iwl_bz_trans_cfg)}, 528*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x0A10, iwl_bz_trans_cfg)}, 529*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x1671, iwl_bz_trans_cfg)}, 530*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x1672, iwl_bz_trans_cfg)}, 531*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x1771, iwl_bz_trans_cfg)}, 532*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x1772, iwl_bz_trans_cfg)}, 533*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x1791, iwl_bz_trans_cfg)}, 534*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x1792, iwl_bz_trans_cfg)}, 535*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x4090, iwl_bz_trans_cfg)}, 536*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x40C4, iwl_bz_trans_cfg)}, 537*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x40E0, iwl_bz_trans_cfg)}, 538*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x4110, iwl_bz_trans_cfg)}, 539*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xA840, 0x4314, iwl_bz_trans_cfg)}, 540d9836fb4SBjoern A. Zeeb {IWL_PCI_DEVICE(0x7740, PCI_ANY_ID, iwl_bz_trans_cfg)}, 541*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0x4D40, PCI_ANY_ID, iwl_bz_trans_cfg)}, 5429af1bba4SBjoern A. Zeeb 5439af1bba4SBjoern A. Zeeb /* Sc devices */ 5449af1bba4SBjoern A. Zeeb {IWL_PCI_DEVICE(0xE440, PCI_ANY_ID, iwl_sc_trans_cfg)}, 545*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xE340, PCI_ANY_ID, iwl_sc_trans_cfg)}, 546*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0xD340, PCI_ANY_ID, iwl_sc_trans_cfg)}, 547*a4128aadSBjoern A. Zeeb {IWL_PCI_DEVICE(0x6E70, PCI_ANY_ID, iwl_sc_trans_cfg)}, 548bfcc09ddSBjoern A. Zeeb #endif /* CONFIG_IWLMVM */ 549bfcc09ddSBjoern A. Zeeb 550bfcc09ddSBjoern A. Zeeb {0} 551bfcc09ddSBjoern A. Zeeb }; 552bfcc09ddSBjoern A. Zeeb MODULE_DEVICE_TABLE(pci, iwl_hw_card_ids); 553*a4128aadSBjoern A. Zeeb EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); 554bfcc09ddSBjoern A. Zeeb 555bfcc09ddSBjoern A. Zeeb #define _IWL_DEV_INFO(_device, _subdevice, _mac_type, _mac_step, _rf_type, \ 5569af1bba4SBjoern A. Zeeb _rf_id, _rf_step, _no_160, _cores, _cdb, _cfg, _name) \ 557bfcc09ddSBjoern A. Zeeb { .device = (_device), .subdevice = (_subdevice), .cfg = &(_cfg), \ 5589af1bba4SBjoern A. Zeeb .name = _name, .mac_type = _mac_type, .rf_type = _rf_type, .rf_step = _rf_step, \ 559bfcc09ddSBjoern A. Zeeb .no_160 = _no_160, .cores = _cores, .rf_id = _rf_id, \ 5609af1bba4SBjoern A. Zeeb .mac_step = _mac_step, .cdb = _cdb, .jacket = IWL_CFG_ANY } 561bfcc09ddSBjoern A. Zeeb 562bfcc09ddSBjoern A. Zeeb #define IWL_DEV_INFO(_device, _subdevice, _cfg, _name) \ 563bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(_device, _subdevice, IWL_CFG_ANY, IWL_CFG_ANY, \ 5649af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, \ 5659af1bba4SBjoern A. Zeeb IWL_CFG_ANY, _cfg, _name) 566bfcc09ddSBjoern A. Zeeb 567*a4128aadSBjoern A. Zeeb VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { 568bfcc09ddSBjoern A. Zeeb #if IS_ENABLED(CONFIG_IWLMVM) 569bfcc09ddSBjoern A. Zeeb /* 9000 */ 570bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2526, 0x1550, iwl9260_2ac_cfg, iwl9260_killer_1550_name), 571bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2526, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 572bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2526, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 573bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x30DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 574bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x30DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 575bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x31DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 576bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x31DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 577bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA370, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 578bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA370, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 579bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x54F0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), 580bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x54F0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 581bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x51F0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), 582bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x51F0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), 583bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x51F0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), 584bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x51F0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 5859af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x51F1, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 586bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x54F0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), 587bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x54F0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 588bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), 589bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 5909af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), 5919af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 592bfcc09ddSBjoern A. Zeeb 593bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x271C, 0x0214, iwl9260_2ac_cfg, iwl9260_1_name), 5949af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x7E40, 0x1691, iwl_cfg_ma, iwl_ax411_killer_1690s_name), 5959af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x7E40, 0x1692, iwl_cfg_ma, iwl_ax411_killer_1690i_name), 596bfcc09ddSBjoern A. Zeeb 597bfcc09ddSBjoern A. Zeeb /* AX200 */ 598bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2723, IWL_CFG_ANY, iwl_ax200_cfg_cc, iwl_ax200_name), 599bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2723, 0x1653, iwl_ax200_cfg_cc, iwl_ax200_killer_1650w_name), 600bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2723, 0x1654, iwl_ax200_cfg_cc, iwl_ax200_killer_1650x_name), 601bfcc09ddSBjoern A. Zeeb 602bfcc09ddSBjoern A. Zeeb /* Qu with Hr */ 603bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x43F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 604bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x43F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 605bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x43F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 606bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x43F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 607bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650s_name), 608bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650i_name), 609bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 610bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x43F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 611bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 612bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 613bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 614bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 615bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x0A10, iwl_ax201_cfg_qu_hr, NULL), 616bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 617bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 618bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 619bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 620bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0xA0F0, 0x6074, iwl_ax201_cfg_qu_hr, NULL), 621bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL), 622bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL), 623bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x6074, iwl_ax201_cfg_quz_hr, NULL), 624bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL), 625bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL), 626bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL), 627bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL), 628bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL), 629bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL), 630bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL), 631bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL), 632bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL), 633bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL), 634bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL), 635bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL), 636bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL), 637bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL), 638bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL), 639bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x06F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL), 640bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 641bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 642bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 643bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 644bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 645bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 646bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 647bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 648bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x34F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 649bfcc09ddSBjoern A. Zeeb 650bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 651bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 652bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 653bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 654bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 655bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 656bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 657bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 658bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x3DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 659bfcc09ddSBjoern A. Zeeb 660bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 661bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 662bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 663bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 664bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 665bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 666bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 667bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 668bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 669bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x4DF0, 0x6074, iwl_ax201_cfg_qu_hr, NULL), 670bfcc09ddSBjoern A. Zeeb 671bfcc09ddSBjoern A. Zeeb /* So with HR */ 672bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x0090, iwlax211_2ax_cfg_so_gf_a0, NULL), 673bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x0020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 674bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x2020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 675bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x0024, iwlax210_2ax_cfg_ty_gf_a0, NULL), 676bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x0310, iwlax210_2ax_cfg_ty_gf_a0, NULL), 677bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x0510, iwlax210_2ax_cfg_ty_gf_a0, NULL), 678bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x0A10, iwlax210_2ax_cfg_ty_gf_a0, NULL), 679bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0xE020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 680bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0xE024, iwlax210_2ax_cfg_ty_gf_a0, NULL), 681bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x4020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 682bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x6020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 683bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x6024, iwlax210_2ax_cfg_ty_gf_a0, NULL), 684bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x1673, iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675w_name), 685bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x2725, 0x1674, iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675x_name), 686bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x0090, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 687bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x0098, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 688bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0_long, NULL), 689bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 690bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 691bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 692bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x0090, iwlax211_2ax_cfg_so_gf_a0, NULL), 693bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x0098, iwlax211_2ax_cfg_so_gf_a0, NULL), 694bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0, NULL), 695bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0, NULL), 696bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0, NULL), 697bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0, NULL), 698bfcc09ddSBjoern A. Zeeb 699bfcc09ddSBjoern A. Zeeb /* So with JF */ 700bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), 701bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), 702bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), 703bfcc09ddSBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), 704bfcc09ddSBjoern A. Zeeb 705d9836fb4SBjoern A. Zeeb /* SO with GF2 */ 706d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x2726, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 707d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x2726, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 708d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x51F0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 709d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x51F0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 7109af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x51F1, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 7119af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x51F1, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 712d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x54F0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 713d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x54F0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 714d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 715d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x7A70, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 716d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 717d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x7AF0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 718d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x7F70, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 719d9836fb4SBjoern A. Zeeb IWL_DEV_INFO(0x7F70, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 720d9836fb4SBjoern A. Zeeb 721d9836fb4SBjoern A. Zeeb /* MA with GF2 */ 7229af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x7E40, 0x1671, iwl_cfg_ma, iwl_ax211_killer_1675s_name), 7239af1bba4SBjoern A. Zeeb IWL_DEV_INFO(0x7E40, 0x1672, iwl_cfg_ma, iwl_ax211_killer_1675i_name), 724bfcc09ddSBjoern A. Zeeb 725bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 726bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7279af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 7289af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 729bfcc09ddSBjoern A. Zeeb iwl9560_2ac_cfg_soc, iwl9461_160_name), 730bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 731bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7329af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 7339af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 734bfcc09ddSBjoern A. Zeeb iwl9560_2ac_cfg_soc, iwl9461_name), 735bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 736bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7379af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 7389af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 739bfcc09ddSBjoern A. Zeeb iwl9560_2ac_cfg_soc, iwl9462_160_name), 740bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 741bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7429af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 7439af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 744bfcc09ddSBjoern A. Zeeb iwl9560_2ac_cfg_soc, iwl9462_name), 745bfcc09ddSBjoern A. Zeeb 746bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 747bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7489af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 7499af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 750bfcc09ddSBjoern A. Zeeb iwl9560_2ac_cfg_soc, iwl9560_160_name), 751bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 752bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7539af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 7549af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 755bfcc09ddSBjoern A. Zeeb iwl9560_2ac_cfg_soc, iwl9560_name), 756bfcc09ddSBjoern A. Zeeb 757bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 758bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7599af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, 7609af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT_GNSS, IWL_CFG_NO_CDB, 761bfcc09ddSBjoern A. Zeeb iwl9260_2ac_cfg, iwl9270_160_name), 762bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 763bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7649af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, 7659af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT_GNSS, IWL_CFG_NO_CDB, 766bfcc09ddSBjoern A. Zeeb iwl9260_2ac_cfg, iwl9270_name), 767bfcc09ddSBjoern A. Zeeb 768bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(0x271B, IWL_CFG_ANY, 769bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7709af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY, IWL_CFG_ANY, 7719af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 772bfcc09ddSBjoern A. Zeeb iwl9260_2ac_cfg, iwl9162_160_name), 773bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(0x271B, IWL_CFG_ANY, 774bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7759af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY, IWL_CFG_ANY, 7769af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 777bfcc09ddSBjoern A. Zeeb iwl9260_2ac_cfg, iwl9162_name), 778bfcc09ddSBjoern A. Zeeb 779bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 780bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7819af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, 7829af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 783bfcc09ddSBjoern A. Zeeb iwl9260_2ac_cfg, iwl9260_160_name), 784bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 785bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7869af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, 7879af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 788bfcc09ddSBjoern A. Zeeb iwl9260_2ac_cfg, iwl9260_name), 789bfcc09ddSBjoern A. Zeeb 790bfcc09ddSBjoern A. Zeeb /* Qu with Jf */ 791bfcc09ddSBjoern A. Zeeb /* Qu B step */ 792bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 793bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 7949af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 7959af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 796bfcc09ddSBjoern A. Zeeb iwl9560_qu_b0_jf_b0_cfg, iwl9461_160_name), 797bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 798bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 7999af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 8009af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 801bfcc09ddSBjoern A. Zeeb iwl9560_qu_b0_jf_b0_cfg, iwl9461_name), 802bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 803bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8049af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 8059af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 806bfcc09ddSBjoern A. Zeeb iwl9560_qu_b0_jf_b0_cfg, iwl9462_160_name), 807bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 808bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8099af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 8109af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 811bfcc09ddSBjoern A. Zeeb iwl9560_qu_b0_jf_b0_cfg, iwl9462_name), 812bfcc09ddSBjoern A. Zeeb 813bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 814bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8159af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 8169af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 817bfcc09ddSBjoern A. Zeeb iwl9560_qu_b0_jf_b0_cfg, iwl9560_160_name), 818bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 819bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8209af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 8219af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 822bfcc09ddSBjoern A. Zeeb iwl9560_qu_b0_jf_b0_cfg, iwl9560_name), 823bfcc09ddSBjoern A. Zeeb 824bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 825bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8269af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 8279af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 828bfcc09ddSBjoern A. Zeeb iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550s_name), 829bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 830bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8319af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 8329af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 833bfcc09ddSBjoern A. Zeeb iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550i_name), 834bfcc09ddSBjoern A. Zeeb 835bfcc09ddSBjoern A. Zeeb /* Qu C step */ 836bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 837bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8389af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 8399af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 840bfcc09ddSBjoern A. Zeeb iwl9560_qu_c0_jf_b0_cfg, iwl9461_160_name), 841bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 842bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8439af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 8449af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 845bfcc09ddSBjoern A. Zeeb iwl9560_qu_c0_jf_b0_cfg, iwl9461_name), 846bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 847bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8489af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 8499af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 850bfcc09ddSBjoern A. Zeeb iwl9560_qu_c0_jf_b0_cfg, iwl9462_160_name), 851bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 852bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8539af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 8549af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 855bfcc09ddSBjoern A. Zeeb iwl9560_qu_c0_jf_b0_cfg, iwl9462_name), 856bfcc09ddSBjoern A. Zeeb 857bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 858bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8599af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 8609af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 861bfcc09ddSBjoern A. Zeeb iwl9560_qu_c0_jf_b0_cfg, iwl9560_160_name), 862bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 863bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8649af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 8659af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 866bfcc09ddSBjoern A. Zeeb iwl9560_qu_c0_jf_b0_cfg, iwl9560_name), 867bfcc09ddSBjoern A. Zeeb 868bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 869bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8709af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 8719af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 872bfcc09ddSBjoern A. Zeeb iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550s_name), 873bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 874bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8759af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 8769af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 877bfcc09ddSBjoern A. Zeeb iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550i_name), 878bfcc09ddSBjoern A. Zeeb 879bfcc09ddSBjoern A. Zeeb /* QuZ */ 880bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 881bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 8829af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 8839af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 884bfcc09ddSBjoern A. Zeeb iwl9560_quz_a0_jf_b0_cfg, iwl9461_160_name), 885bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 886bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 8879af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 8889af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 889bfcc09ddSBjoern A. Zeeb iwl9560_quz_a0_jf_b0_cfg, iwl9461_name), 890bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 891bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 8929af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 8939af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 894bfcc09ddSBjoern A. Zeeb iwl9560_quz_a0_jf_b0_cfg, iwl9462_160_name), 895bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 896bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 8979af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 8989af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 899bfcc09ddSBjoern A. Zeeb iwl9560_quz_a0_jf_b0_cfg, iwl9462_name), 900bfcc09ddSBjoern A. Zeeb 901bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 902bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9039af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 9049af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 905bfcc09ddSBjoern A. Zeeb iwl9560_quz_a0_jf_b0_cfg, iwl9560_160_name), 906bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 907bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9089af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 9099af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 910bfcc09ddSBjoern A. Zeeb iwl9560_quz_a0_jf_b0_cfg, iwl9560_name), 911bfcc09ddSBjoern A. Zeeb 912bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 913bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9149af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 9159af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 916bfcc09ddSBjoern A. Zeeb iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550s_name), 917bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 918bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9199af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 9209af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 921bfcc09ddSBjoern A. Zeeb iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550i_name), 922bfcc09ddSBjoern A. Zeeb 923bfcc09ddSBjoern A. Zeeb /* Qu with Hr */ 924bfcc09ddSBjoern A. Zeeb /* Qu B step */ 925bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 926bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 9279af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 9289af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 929bfcc09ddSBjoern A. Zeeb iwl_qu_b0_hr1_b0, iwl_ax101_name), 930bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 931bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 9329af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 9339af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 934bfcc09ddSBjoern A. Zeeb iwl_qu_b0_hr_b0, iwl_ax203_name), 935bfcc09ddSBjoern A. Zeeb 936bfcc09ddSBjoern A. Zeeb /* Qu C step */ 937bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 938bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 9399af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 9409af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 941bfcc09ddSBjoern A. Zeeb iwl_qu_c0_hr1_b0, iwl_ax101_name), 942bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 943bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 9449af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 9459af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 946bfcc09ddSBjoern A. Zeeb iwl_qu_c0_hr_b0, iwl_ax203_name), 947d9836fb4SBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 948d9836fb4SBjoern A. Zeeb IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 9499af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 9509af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 951d9836fb4SBjoern A. Zeeb iwl_qu_c0_hr_b0, iwl_ax201_name), 952bfcc09ddSBjoern A. Zeeb 953bfcc09ddSBjoern A. Zeeb /* QuZ */ 954bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 955bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9569af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 9579af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 958bfcc09ddSBjoern A. Zeeb iwl_quz_a0_hr1_b0, iwl_ax101_name), 959bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 960bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, SILICON_B_STEP, 9619af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 9629af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 963bfcc09ddSBjoern A. Zeeb iwl_cfg_quz_a0_hr_b0, iwl_ax203_name), 964bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9659af1bba4SBjoern A. Zeeb IWL_CFG_MAC_TYPE_QUZ, SILICON_B_STEP, 9669af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 9679af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 9689af1bba4SBjoern A. Zeeb iwl_cfg_quz_a0_hr_b0, iwl_ax201_name), 969bfcc09ddSBjoern A. Zeeb 970bfcc09ddSBjoern A. Zeeb /* Ma */ 971bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 972bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 9739af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 9749af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 9759af1bba4SBjoern A. Zeeb iwl_cfg_ma, iwl_ax201_name), 976bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 977bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 9789af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 9799af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 9809af1bba4SBjoern A. Zeeb iwl_cfg_ma, iwl_ax211_name), 981bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 982bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 9839af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, 9849af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 9859af1bba4SBjoern A. Zeeb iwl_cfg_ma, iwl_ax231_name), 986bfcc09ddSBjoern A. Zeeb 987bfcc09ddSBjoern A. Zeeb /* So with Hr */ 988bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 989bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 9909af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 9919af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 992bfcc09ddSBjoern A. Zeeb iwl_cfg_so_a0_hr_a0, iwl_ax203_name), 993bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 994bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 9959af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 9969af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 997bfcc09ddSBjoern A. Zeeb iwl_cfg_so_a0_hr_a0, iwl_ax101_name), 998bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 999bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 10009af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 10019af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 1002bfcc09ddSBjoern A. Zeeb iwl_cfg_so_a0_hr_a0, iwl_ax201_name), 1003bfcc09ddSBjoern A. Zeeb 1004bfcc09ddSBjoern A. Zeeb /* So-F with Hr */ 1005bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1006bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10079af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 10089af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 1009bfcc09ddSBjoern A. Zeeb iwl_cfg_so_a0_hr_a0, iwl_ax203_name), 1010bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1011bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10129af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 10139af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 1014bfcc09ddSBjoern A. Zeeb iwl_cfg_so_a0_hr_a0, iwl_ax101_name), 1015bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1016bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10179af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 10189af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 1019bfcc09ddSBjoern A. Zeeb iwl_cfg_so_a0_hr_a0, iwl_ax201_name), 1020bfcc09ddSBjoern A. Zeeb 1021bfcc09ddSBjoern A. Zeeb /* So-F with Gf */ 1022bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1023bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10249af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 10259af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 1026bfcc09ddSBjoern A. Zeeb iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name), 1027d9836fb4SBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1028d9836fb4SBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10299af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 10309af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_CDB, 1031d9836fb4SBjoern A. Zeeb iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name), 1032bfcc09ddSBjoern A. Zeeb 1033bfcc09ddSBjoern A. Zeeb /* SoF with JF2 */ 1034bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1035bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10369af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 10379af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1038bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name), 1039bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1040bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10419af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 10429af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1043bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9560_name), 1044bfcc09ddSBjoern A. Zeeb 1045bfcc09ddSBjoern A. Zeeb /* SoF with JF */ 1046bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1047bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10489af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 10499af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1050bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name), 1051bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1052bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10539af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 10549af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1055bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name), 1056bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1057bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10589af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 10599af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1060bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9461_name), 1061bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1062bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 10639af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 10649af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1065bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9462_name), 1066bfcc09ddSBjoern A. Zeeb 1067bfcc09ddSBjoern A. Zeeb /* So with GF */ 1068bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1069bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 10709af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 10719af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 1072bfcc09ddSBjoern A. Zeeb iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name), 1073d9836fb4SBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1074d9836fb4SBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 10759af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 10769af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_CDB, 1077d9836fb4SBjoern A. Zeeb iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name), 1078bfcc09ddSBjoern A. Zeeb 1079bfcc09ddSBjoern A. Zeeb /* So with JF2 */ 1080bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1081bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 10829af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 10839af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1084bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name), 1085bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1086bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 10879af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 10889af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1089bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9560_name), 1090bfcc09ddSBjoern A. Zeeb 1091bfcc09ddSBjoern A. Zeeb /* So with JF */ 1092bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1093bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 10949af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 10959af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1096bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name), 1097bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1098bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 10999af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 11009af1bba4SBjoern A. Zeeb IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1101bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name), 1102bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1103bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 11049af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 11059af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1106bfcc09ddSBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9461_name), 1107bfcc09ddSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1108bfcc09ddSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 11099af1bba4SBjoern A. Zeeb IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 11109af1bba4SBjoern A. Zeeb IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 1111d9836fb4SBjoern A. Zeeb iwlax210_2ax_cfg_so_jf_b0, iwl9462_name), 1112d9836fb4SBjoern A. Zeeb 1113*a4128aadSBjoern A. Zeeb /* Bz */ 1114*a4128aadSBjoern A. Zeeb /* FIXME: need to change the naming according to the actual CRF */ 1115d9836fb4SBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1116*a4128aadSBjoern A. Zeeb IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY, 1117*a4128aadSBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 1118*a4128aadSBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 1119*a4128aadSBjoern A. Zeeb iwl_cfg_bz, iwl_fm_name), 1120*a4128aadSBjoern A. Zeeb 1121d9836fb4SBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1122*a4128aadSBjoern A. Zeeb IWL_CFG_MAC_TYPE_BZ_W, IWL_CFG_ANY, 1123*a4128aadSBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 1124*a4128aadSBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 1125*a4128aadSBjoern A. Zeeb iwl_cfg_bz, iwl_fm_name), 1126*a4128aadSBjoern A. Zeeb 1127*a4128aadSBjoern A. Zeeb /* Ga (Gl) */ 1128d9836fb4SBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1129*a4128aadSBjoern A. Zeeb IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY, 1130*a4128aadSBjoern A. Zeeb IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, 1131*a4128aadSBjoern A. Zeeb IWL_CFG_320, IWL_CFG_ANY, IWL_CFG_NO_CDB, 1132*a4128aadSBjoern A. Zeeb iwl_cfg_gl, iwl_gl_name), 1133*a4128aadSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1134*a4128aadSBjoern A. Zeeb IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY, 1135*a4128aadSBjoern A. Zeeb IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, 1136*a4128aadSBjoern A. Zeeb IWL_CFG_NO_320, IWL_CFG_ANY, IWL_CFG_NO_CDB, 1137*a4128aadSBjoern A. Zeeb iwl_cfg_gl, iwl_mtp_name), 1138bfcc09ddSBjoern A. Zeeb 11399af1bba4SBjoern A. Zeeb /* Sc */ 11409af1bba4SBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 11419af1bba4SBjoern A. Zeeb IWL_CFG_MAC_TYPE_SC, IWL_CFG_ANY, 11429af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 11439af1bba4SBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 11449af1bba4SBjoern A. Zeeb iwl_cfg_sc, iwl_sc_name), 1145*a4128aadSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1146*a4128aadSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SC2, IWL_CFG_ANY, 1147*a4128aadSBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 1148*a4128aadSBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 1149*a4128aadSBjoern A. Zeeb iwl_cfg_sc2, iwl_sc2_name), 1150*a4128aadSBjoern A. Zeeb _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 1151*a4128aadSBjoern A. Zeeb IWL_CFG_MAC_TYPE_SC2F, IWL_CFG_ANY, 1152*a4128aadSBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 1153*a4128aadSBjoern A. Zeeb IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 1154*a4128aadSBjoern A. Zeeb iwl_cfg_sc2f, iwl_sc2f_name), 1155bfcc09ddSBjoern A. Zeeb #endif /* CONFIG_IWLMVM */ 1156bfcc09ddSBjoern A. Zeeb }; 1157*a4128aadSBjoern A. Zeeb EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_dev_info_table); 1158*a4128aadSBjoern A. Zeeb 1159*a4128aadSBjoern A. Zeeb #if IS_ENABLED(CONFIG_IWLWIFI_KUNIT_TESTS) 1160*a4128aadSBjoern A. Zeeb const unsigned int iwl_dev_info_table_size = ARRAY_SIZE(iwl_dev_info_table); 1161*a4128aadSBjoern A. Zeeb EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_dev_info_table_size); 1162*a4128aadSBjoern A. Zeeb #endif 1163bfcc09ddSBjoern A. Zeeb 1164bfcc09ddSBjoern A. Zeeb /* 11659af1bba4SBjoern A. Zeeb * Read rf id and cdb info from prph register and store it 1166bfcc09ddSBjoern A. Zeeb */ 1167*a4128aadSBjoern A. Zeeb static void get_crf_id(struct iwl_trans *iwl_trans) 1168bfcc09ddSBjoern A. Zeeb { 1169bfcc09ddSBjoern A. Zeeb u32 sd_reg_ver_addr; 11709af1bba4SBjoern A. Zeeb u32 val = 0; 1171*a4128aadSBjoern A. Zeeb u8 step; 1172bfcc09ddSBjoern A. Zeeb 1173d9836fb4SBjoern A. Zeeb if (iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) 1174bfcc09ddSBjoern A. Zeeb sd_reg_ver_addr = SD_REG_VER_GEN2; 1175d9836fb4SBjoern A. Zeeb else 1176bfcc09ddSBjoern A. Zeeb sd_reg_ver_addr = SD_REG_VER; 1177bfcc09ddSBjoern A. Zeeb 1178bfcc09ddSBjoern A. Zeeb /* Enable access to peripheral registers */ 1179d9836fb4SBjoern A. Zeeb val = iwl_read_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG); 1180*a4128aadSBjoern A. Zeeb val |= WFPM_AUX_CTL_AUX_IF_MAC_OWNER_MSK; 1181d9836fb4SBjoern A. Zeeb iwl_write_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG, val); 1182bfcc09ddSBjoern A. Zeeb 1183bfcc09ddSBjoern A. Zeeb /* Read crf info */ 11849af1bba4SBjoern A. Zeeb iwl_trans->hw_crf_id = iwl_read_prph_no_grab(iwl_trans, sd_reg_ver_addr); 11859af1bba4SBjoern A. Zeeb 11869af1bba4SBjoern A. Zeeb /* Read cnv info */ 11879af1bba4SBjoern A. Zeeb iwl_trans->hw_cnv_id = 11889af1bba4SBjoern A. Zeeb iwl_read_prph_no_grab(iwl_trans, CNVI_AUX_MISC_CHIP); 1189bfcc09ddSBjoern A. Zeeb 1190*a4128aadSBjoern A. Zeeb /* For BZ-W, take B step also when A step is indicated */ 1191*a4128aadSBjoern A. Zeeb if (CSR_HW_REV_TYPE(iwl_trans->hw_rev) == IWL_CFG_MAC_TYPE_BZ_W) 1192*a4128aadSBjoern A. Zeeb step = SILICON_B_STEP; 1193*a4128aadSBjoern A. Zeeb 1194*a4128aadSBjoern A. Zeeb /* In BZ, the MAC step must be read from the CNVI aux register */ 1195*a4128aadSBjoern A. Zeeb if (CSR_HW_REV_TYPE(iwl_trans->hw_rev) == IWL_CFG_MAC_TYPE_BZ) { 1196*a4128aadSBjoern A. Zeeb step = CNVI_AUX_MISC_CHIP_MAC_STEP(iwl_trans->hw_cnv_id); 1197*a4128aadSBjoern A. Zeeb 1198*a4128aadSBjoern A. Zeeb /* For BZ-U, take B step also when A step is indicated */ 1199*a4128aadSBjoern A. Zeeb if ((CNVI_AUX_MISC_CHIP_PROD_TYPE(iwl_trans->hw_cnv_id) == 1200*a4128aadSBjoern A. Zeeb CNVI_AUX_MISC_CHIP_PROD_TYPE_BZ_U) && 1201*a4128aadSBjoern A. Zeeb step == SILICON_A_STEP) 1202*a4128aadSBjoern A. Zeeb step = SILICON_B_STEP; 1203*a4128aadSBjoern A. Zeeb } 1204*a4128aadSBjoern A. Zeeb 1205*a4128aadSBjoern A. Zeeb if (CSR_HW_REV_TYPE(iwl_trans->hw_rev) == IWL_CFG_MAC_TYPE_BZ || 1206*a4128aadSBjoern A. Zeeb CSR_HW_REV_TYPE(iwl_trans->hw_rev) == IWL_CFG_MAC_TYPE_BZ_W) { 1207*a4128aadSBjoern A. Zeeb iwl_trans->hw_rev_step = step; 1208*a4128aadSBjoern A. Zeeb iwl_trans->hw_rev |= step; 1209*a4128aadSBjoern A. Zeeb } 1210*a4128aadSBjoern A. Zeeb 1211bfcc09ddSBjoern A. Zeeb /* Read cdb info (also contains the jacket info if needed in the future */ 12129af1bba4SBjoern A. Zeeb iwl_trans->hw_wfpm_id = 12139af1bba4SBjoern A. Zeeb iwl_read_umac_prph_no_grab(iwl_trans, WFPM_OTP_CFG1_ADDR); 12149af1bba4SBjoern A. Zeeb IWL_INFO(iwl_trans, "Detected crf-id 0x%x, cnv-id 0x%x wfpm id 0x%x\n", 12159af1bba4SBjoern A. Zeeb iwl_trans->hw_crf_id, iwl_trans->hw_cnv_id, 12169af1bba4SBjoern A. Zeeb iwl_trans->hw_wfpm_id); 12179af1bba4SBjoern A. Zeeb } 12189af1bba4SBjoern A. Zeeb 12199af1bba4SBjoern A. Zeeb /* 12209af1bba4SBjoern A. Zeeb * In case that there is no OTP on the NIC, map the rf id and cdb info 12219af1bba4SBjoern A. Zeeb * from the prph registers. 12229af1bba4SBjoern A. Zeeb */ 12239af1bba4SBjoern A. Zeeb static int map_crf_id(struct iwl_trans *iwl_trans) 12249af1bba4SBjoern A. Zeeb { 12259af1bba4SBjoern A. Zeeb int ret = 0; 12269af1bba4SBjoern A. Zeeb u32 val = iwl_trans->hw_crf_id; 12279af1bba4SBjoern A. Zeeb u32 step_id = REG_CRF_ID_STEP(val); 12289af1bba4SBjoern A. Zeeb u32 slave_id = REG_CRF_ID_SLAVE(val); 12299af1bba4SBjoern A. Zeeb u32 jacket_id_cnv = REG_CRF_ID_SLAVE(iwl_trans->hw_cnv_id); 12309af1bba4SBjoern A. Zeeb u32 jacket_id_wfpm = WFPM_OTP_CFG1_IS_JACKET(iwl_trans->hw_wfpm_id); 12319af1bba4SBjoern A. Zeeb u32 cdb_id_wfpm = WFPM_OTP_CFG1_IS_CDB(iwl_trans->hw_wfpm_id); 1232bfcc09ddSBjoern A. Zeeb 1233bfcc09ddSBjoern A. Zeeb /* Map between crf id to rf id */ 1234bfcc09ddSBjoern A. Zeeb switch (REG_CRF_ID_TYPE(val)) { 1235bfcc09ddSBjoern A. Zeeb case REG_CRF_ID_TYPE_JF_1: 1236bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_JF1 << 12); 1237bfcc09ddSBjoern A. Zeeb break; 1238bfcc09ddSBjoern A. Zeeb case REG_CRF_ID_TYPE_JF_2: 1239bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_JF2 << 12); 1240bfcc09ddSBjoern A. Zeeb break; 12419af1bba4SBjoern A. Zeeb case REG_CRF_ID_TYPE_HR_NONE_CDB_1X1: 1242bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_HR1 << 12); 1243bfcc09ddSBjoern A. Zeeb break; 12449af1bba4SBjoern A. Zeeb case REG_CRF_ID_TYPE_HR_NONE_CDB: 12459af1bba4SBjoern A. Zeeb iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_HR2 << 12); 12469af1bba4SBjoern A. Zeeb break; 1247bfcc09ddSBjoern A. Zeeb case REG_CRF_ID_TYPE_HR_CDB: 1248bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_HR2 << 12); 1249bfcc09ddSBjoern A. Zeeb break; 1250bfcc09ddSBjoern A. Zeeb case REG_CRF_ID_TYPE_GF: 1251bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_GF << 12); 1252bfcc09ddSBjoern A. Zeeb break; 1253bfcc09ddSBjoern A. Zeeb case REG_CRF_ID_TYPE_FM: 1254bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_FM << 12); 1255bfcc09ddSBjoern A. Zeeb break; 1256*a4128aadSBjoern A. Zeeb case REG_CRF_ID_TYPE_WHP: 1257*a4128aadSBjoern A. Zeeb iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_WH << 12); 1258*a4128aadSBjoern A. Zeeb break; 1259bfcc09ddSBjoern A. Zeeb default: 1260bfcc09ddSBjoern A. Zeeb ret = -EIO; 1261bfcc09ddSBjoern A. Zeeb IWL_ERR(iwl_trans, 12629af1bba4SBjoern A. Zeeb "Can't find a correct rfid for crf id 0x%x\n", 1263bfcc09ddSBjoern A. Zeeb REG_CRF_ID_TYPE(val)); 12649af1bba4SBjoern A. Zeeb goto out; 1265bfcc09ddSBjoern A. Zeeb 1266bfcc09ddSBjoern A. Zeeb } 1267bfcc09ddSBjoern A. Zeeb 12689af1bba4SBjoern A. Zeeb /* Set Step-id */ 12699af1bba4SBjoern A. Zeeb iwl_trans->hw_rf_id |= (step_id << 8); 12709af1bba4SBjoern A. Zeeb 1271bfcc09ddSBjoern A. Zeeb /* Set CDB capabilities */ 12729af1bba4SBjoern A. Zeeb if (cdb_id_wfpm || slave_id) { 1273bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rf_id += BIT(28); 1274bfcc09ddSBjoern A. Zeeb IWL_INFO(iwl_trans, "Adding cdb to rf id\n"); 1275bfcc09ddSBjoern A. Zeeb } 1276bfcc09ddSBjoern A. Zeeb 12779af1bba4SBjoern A. Zeeb /* Set Jacket capabilities */ 12789af1bba4SBjoern A. Zeeb if (jacket_id_wfpm || jacket_id_cnv) { 12799af1bba4SBjoern A. Zeeb iwl_trans->hw_rf_id += BIT(29); 12809af1bba4SBjoern A. Zeeb IWL_INFO(iwl_trans, "Adding jacket to rf id\n"); 12819af1bba4SBjoern A. Zeeb } 1282bfcc09ddSBjoern A. Zeeb 12839af1bba4SBjoern A. Zeeb IWL_INFO(iwl_trans, 12849af1bba4SBjoern A. Zeeb "Detected rf-type 0x%x step-id 0x%x slave-id 0x%x from crf id 0x%x\n", 12859af1bba4SBjoern A. Zeeb REG_CRF_ID_TYPE(val), step_id, slave_id, iwl_trans->hw_rf_id); 12869af1bba4SBjoern A. Zeeb IWL_INFO(iwl_trans, 12879af1bba4SBjoern A. Zeeb "Detected cdb-id 0x%x jacket-id 0x%x from wfpm id 0x%x\n", 12889af1bba4SBjoern A. Zeeb cdb_id_wfpm, jacket_id_wfpm, iwl_trans->hw_wfpm_id); 12899af1bba4SBjoern A. Zeeb IWL_INFO(iwl_trans, "Detected jacket-id 0x%x from cnvi id 0x%x\n", 12909af1bba4SBjoern A. Zeeb jacket_id_cnv, iwl_trans->hw_cnv_id); 1291bfcc09ddSBjoern A. Zeeb 1292bfcc09ddSBjoern A. Zeeb out: 1293bfcc09ddSBjoern A. Zeeb return ret; 1294bfcc09ddSBjoern A. Zeeb } 1295bfcc09ddSBjoern A. Zeeb 1296bfcc09ddSBjoern A. Zeeb /* PCI registers */ 1297bfcc09ddSBjoern A. Zeeb #define PCI_CFG_RETRY_TIMEOUT 0x041 1298bfcc09ddSBjoern A. Zeeb 1299*a4128aadSBjoern A. Zeeb VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info * 1300bfcc09ddSBjoern A. Zeeb iwl_pci_find_dev_info(u16 device, u16 subsystem_device, 13019af1bba4SBjoern A. Zeeb u16 mac_type, u8 mac_step, u16 rf_type, u8 cdb, 13029af1bba4SBjoern A. Zeeb u8 jacket, u8 rf_id, u8 no_160, u8 cores, u8 rf_step) 1303bfcc09ddSBjoern A. Zeeb { 1304d9836fb4SBjoern A. Zeeb int num_devices = ARRAY_SIZE(iwl_dev_info_table); 1305bfcc09ddSBjoern A. Zeeb int i; 1306bfcc09ddSBjoern A. Zeeb 1307d9836fb4SBjoern A. Zeeb if (!num_devices) 1308d9836fb4SBjoern A. Zeeb return NULL; 1309d9836fb4SBjoern A. Zeeb 1310d9836fb4SBjoern A. Zeeb for (i = num_devices - 1; i >= 0; i--) { 1311bfcc09ddSBjoern A. Zeeb const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i]; 1312bfcc09ddSBjoern A. Zeeb 1313bfcc09ddSBjoern A. Zeeb if (dev_info->device != (u16)IWL_CFG_ANY && 1314bfcc09ddSBjoern A. Zeeb dev_info->device != device) 1315bfcc09ddSBjoern A. Zeeb continue; 1316bfcc09ddSBjoern A. Zeeb 1317bfcc09ddSBjoern A. Zeeb if (dev_info->subdevice != (u16)IWL_CFG_ANY && 1318bfcc09ddSBjoern A. Zeeb dev_info->subdevice != subsystem_device) 1319bfcc09ddSBjoern A. Zeeb continue; 1320bfcc09ddSBjoern A. Zeeb 1321bfcc09ddSBjoern A. Zeeb if (dev_info->mac_type != (u16)IWL_CFG_ANY && 1322bfcc09ddSBjoern A. Zeeb dev_info->mac_type != mac_type) 1323bfcc09ddSBjoern A. Zeeb continue; 1324bfcc09ddSBjoern A. Zeeb 1325bfcc09ddSBjoern A. Zeeb if (dev_info->mac_step != (u8)IWL_CFG_ANY && 1326bfcc09ddSBjoern A. Zeeb dev_info->mac_step != mac_step) 1327bfcc09ddSBjoern A. Zeeb continue; 1328bfcc09ddSBjoern A. Zeeb 1329bfcc09ddSBjoern A. Zeeb if (dev_info->rf_type != (u16)IWL_CFG_ANY && 1330bfcc09ddSBjoern A. Zeeb dev_info->rf_type != rf_type) 1331bfcc09ddSBjoern A. Zeeb continue; 1332bfcc09ddSBjoern A. Zeeb 1333bfcc09ddSBjoern A. Zeeb if (dev_info->cdb != (u8)IWL_CFG_ANY && 1334bfcc09ddSBjoern A. Zeeb dev_info->cdb != cdb) 1335bfcc09ddSBjoern A. Zeeb continue; 1336bfcc09ddSBjoern A. Zeeb 1337d9836fb4SBjoern A. Zeeb if (dev_info->jacket != (u8)IWL_CFG_ANY && 1338d9836fb4SBjoern A. Zeeb dev_info->jacket != jacket) 1339d9836fb4SBjoern A. Zeeb continue; 1340d9836fb4SBjoern A. Zeeb 1341bfcc09ddSBjoern A. Zeeb if (dev_info->rf_id != (u8)IWL_CFG_ANY && 1342bfcc09ddSBjoern A. Zeeb dev_info->rf_id != rf_id) 1343bfcc09ddSBjoern A. Zeeb continue; 1344bfcc09ddSBjoern A. Zeeb 1345bfcc09ddSBjoern A. Zeeb if (dev_info->no_160 != (u8)IWL_CFG_ANY && 1346bfcc09ddSBjoern A. Zeeb dev_info->no_160 != no_160) 1347bfcc09ddSBjoern A. Zeeb continue; 1348bfcc09ddSBjoern A. Zeeb 1349bfcc09ddSBjoern A. Zeeb if (dev_info->cores != (u8)IWL_CFG_ANY && 1350bfcc09ddSBjoern A. Zeeb dev_info->cores != cores) 1351bfcc09ddSBjoern A. Zeeb continue; 1352bfcc09ddSBjoern A. Zeeb 13539af1bba4SBjoern A. Zeeb if (dev_info->rf_step != (u8)IWL_CFG_ANY && 13549af1bba4SBjoern A. Zeeb dev_info->rf_step != rf_step) 13559af1bba4SBjoern A. Zeeb continue; 13569af1bba4SBjoern A. Zeeb 1357bfcc09ddSBjoern A. Zeeb return dev_info; 1358bfcc09ddSBjoern A. Zeeb } 1359bfcc09ddSBjoern A. Zeeb 1360bfcc09ddSBjoern A. Zeeb return NULL; 1361bfcc09ddSBjoern A. Zeeb } 1362*a4128aadSBjoern A. Zeeb EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_pci_find_dev_info); 1363bfcc09ddSBjoern A. Zeeb 1364bfcc09ddSBjoern A. Zeeb static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 1365bfcc09ddSBjoern A. Zeeb { 1366bfcc09ddSBjoern A. Zeeb const struct iwl_cfg_trans_params *trans; 1367bfcc09ddSBjoern A. Zeeb const struct iwl_cfg *cfg_7265d __maybe_unused = NULL; 1368bfcc09ddSBjoern A. Zeeb const struct iwl_dev_info *dev_info; 1369bfcc09ddSBjoern A. Zeeb struct iwl_trans *iwl_trans; 1370bfcc09ddSBjoern A. Zeeb struct iwl_trans_pcie *trans_pcie; 1371bfcc09ddSBjoern A. Zeeb int ret; 1372bfcc09ddSBjoern A. Zeeb const struct iwl_cfg *cfg; 1373bfcc09ddSBjoern A. Zeeb 1374bfcc09ddSBjoern A. Zeeb trans = (void *)(ent->driver_data & ~TRANS_CFG_MARKER); 1375bfcc09ddSBjoern A. Zeeb 1376bfcc09ddSBjoern A. Zeeb /* 1377bfcc09ddSBjoern A. Zeeb * This is needed for backwards compatibility with the old 1378bfcc09ddSBjoern A. Zeeb * tables, so we don't need to change all the config structs 1379bfcc09ddSBjoern A. Zeeb * at the same time. The cfg is used to compare with the old 1380bfcc09ddSBjoern A. Zeeb * full cfg structs. 1381bfcc09ddSBjoern A. Zeeb */ 1382bfcc09ddSBjoern A. Zeeb cfg = (void *)(ent->driver_data & ~TRANS_CFG_MARKER); 1383bfcc09ddSBjoern A. Zeeb 1384bfcc09ddSBjoern A. Zeeb /* make sure trans is the first element in iwl_cfg */ 1385bfcc09ddSBjoern A. Zeeb BUILD_BUG_ON(offsetof(struct iwl_cfg, trans)); 1386bfcc09ddSBjoern A. Zeeb 1387bfcc09ddSBjoern A. Zeeb iwl_trans = iwl_trans_pcie_alloc(pdev, ent, trans); 1388bfcc09ddSBjoern A. Zeeb if (IS_ERR(iwl_trans)) 1389bfcc09ddSBjoern A. Zeeb return PTR_ERR(iwl_trans); 1390bfcc09ddSBjoern A. Zeeb 1391bfcc09ddSBjoern A. Zeeb trans_pcie = IWL_TRANS_GET_PCIE_TRANS(iwl_trans); 1392bfcc09ddSBjoern A. Zeeb 1393bfcc09ddSBjoern A. Zeeb /* 1394bfcc09ddSBjoern A. Zeeb * Let's try to grab NIC access early here. Sometimes, NICs may 1395bfcc09ddSBjoern A. Zeeb * fail to initialize, and if that happens it's better if we see 1396bfcc09ddSBjoern A. Zeeb * issues early on (and can reprobe, per the logic inside), than 1397bfcc09ddSBjoern A. Zeeb * first trying to load the firmware etc. and potentially only 1398bfcc09ddSBjoern A. Zeeb * detecting any problems when the first interface is brought up. 1399bfcc09ddSBjoern A. Zeeb */ 1400d9836fb4SBjoern A. Zeeb ret = iwl_pcie_prepare_card_hw(iwl_trans); 1401d9836fb4SBjoern A. Zeeb if (!ret) { 1402bfcc09ddSBjoern A. Zeeb ret = iwl_finish_nic_init(iwl_trans); 1403bfcc09ddSBjoern A. Zeeb if (ret) 1404bfcc09ddSBjoern A. Zeeb goto out_free_trans; 1405bfcc09ddSBjoern A. Zeeb if (iwl_trans_grab_nic_access(iwl_trans)) { 1406*a4128aadSBjoern A. Zeeb get_crf_id(iwl_trans); 1407bfcc09ddSBjoern A. Zeeb /* all good */ 1408bfcc09ddSBjoern A. Zeeb iwl_trans_release_nic_access(iwl_trans); 1409bfcc09ddSBjoern A. Zeeb } else { 1410bfcc09ddSBjoern A. Zeeb ret = -EIO; 1411bfcc09ddSBjoern A. Zeeb goto out_free_trans; 1412bfcc09ddSBjoern A. Zeeb } 1413d9836fb4SBjoern A. Zeeb } 1414bfcc09ddSBjoern A. Zeeb 1415bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rf_id = iwl_read32(iwl_trans, CSR_HW_RF_ID); 1416bfcc09ddSBjoern A. Zeeb 1417bfcc09ddSBjoern A. Zeeb /* 1418bfcc09ddSBjoern A. Zeeb * The RF_ID is set to zero in blank OTP so read version to 1419bfcc09ddSBjoern A. Zeeb * extract the RF_ID. 1420bfcc09ddSBjoern A. Zeeb * This is relevant only for family 9000 and up. 1421bfcc09ddSBjoern A. Zeeb */ 1422bfcc09ddSBjoern A. Zeeb if (iwl_trans->trans_cfg->rf_id && 1423bfcc09ddSBjoern A. Zeeb iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_9000 && 14249af1bba4SBjoern A. Zeeb !CSR_HW_RFID_TYPE(iwl_trans->hw_rf_id) && map_crf_id(iwl_trans)) { 1425d9836fb4SBjoern A. Zeeb ret = -EINVAL; 1426bfcc09ddSBjoern A. Zeeb goto out_free_trans; 1427d9836fb4SBjoern A. Zeeb } 1428bfcc09ddSBjoern A. Zeeb 14299af1bba4SBjoern A. Zeeb IWL_INFO(iwl_trans, "PCI dev %04x/%04x, rev=0x%x, rfid=0x%x\n", 14309af1bba4SBjoern A. Zeeb pdev->device, pdev->subsystem_device, 14319af1bba4SBjoern A. Zeeb iwl_trans->hw_rev, iwl_trans->hw_rf_id); 14329af1bba4SBjoern A. Zeeb 1433bfcc09ddSBjoern A. Zeeb dev_info = iwl_pci_find_dev_info(pdev->device, pdev->subsystem_device, 1434bfcc09ddSBjoern A. Zeeb CSR_HW_REV_TYPE(iwl_trans->hw_rev), 1435d9836fb4SBjoern A. Zeeb iwl_trans->hw_rev_step, 1436bfcc09ddSBjoern A. Zeeb CSR_HW_RFID_TYPE(iwl_trans->hw_rf_id), 1437bfcc09ddSBjoern A. Zeeb CSR_HW_RFID_IS_CDB(iwl_trans->hw_rf_id), 1438d9836fb4SBjoern A. Zeeb CSR_HW_RFID_IS_JACKET(iwl_trans->hw_rf_id), 1439bfcc09ddSBjoern A. Zeeb IWL_SUBDEVICE_RF_ID(pdev->subsystem_device), 1440bfcc09ddSBjoern A. Zeeb IWL_SUBDEVICE_NO_160(pdev->subsystem_device), 14419af1bba4SBjoern A. Zeeb IWL_SUBDEVICE_CORES(pdev->subsystem_device), 14429af1bba4SBjoern A. Zeeb CSR_HW_RFID_STEP(iwl_trans->hw_rf_id)); 1443bfcc09ddSBjoern A. Zeeb if (dev_info) { 1444bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = dev_info->cfg; 1445bfcc09ddSBjoern A. Zeeb iwl_trans->name = dev_info->name; 1446*a4128aadSBjoern A. Zeeb iwl_trans->no_160 = dev_info->no_160 == IWL_CFG_NO_160; 1447bfcc09ddSBjoern A. Zeeb } 1448bfcc09ddSBjoern A. Zeeb 1449bfcc09ddSBjoern A. Zeeb #if IS_ENABLED(CONFIG_IWLMVM) 1450bfcc09ddSBjoern A. Zeeb /* 1451bfcc09ddSBjoern A. Zeeb * special-case 7265D, it has the same PCI IDs. 1452bfcc09ddSBjoern A. Zeeb * 1453bfcc09ddSBjoern A. Zeeb * Note that because we already pass the cfg to the transport above, 1454bfcc09ddSBjoern A. Zeeb * all the parameters that the transport uses must, until that is 1455bfcc09ddSBjoern A. Zeeb * changed, be identical to the ones in the 7265D configuration. 1456bfcc09ddSBjoern A. Zeeb */ 1457bfcc09ddSBjoern A. Zeeb if (cfg == &iwl7265_2ac_cfg) 1458bfcc09ddSBjoern A. Zeeb cfg_7265d = &iwl7265d_2ac_cfg; 1459bfcc09ddSBjoern A. Zeeb else if (cfg == &iwl7265_2n_cfg) 1460bfcc09ddSBjoern A. Zeeb cfg_7265d = &iwl7265d_2n_cfg; 1461bfcc09ddSBjoern A. Zeeb else if (cfg == &iwl7265_n_cfg) 1462bfcc09ddSBjoern A. Zeeb cfg_7265d = &iwl7265d_n_cfg; 1463bfcc09ddSBjoern A. Zeeb if (cfg_7265d && 1464bfcc09ddSBjoern A. Zeeb (iwl_trans->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_7265D) 1465bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = cfg_7265d; 1466bfcc09ddSBjoern A. Zeeb 1467bfcc09ddSBjoern A. Zeeb /* 1468bfcc09ddSBjoern A. Zeeb * This is a hack to switch from Qu B0 to Qu C0. We need to 1469bfcc09ddSBjoern A. Zeeb * do this for all cfgs that use Qu B0, except for those using 1470bfcc09ddSBjoern A. Zeeb * Jf, which have already been moved to the new table. The 1471bfcc09ddSBjoern A. Zeeb * rest must be removed once we convert Qu with Hr as well. 1472bfcc09ddSBjoern A. Zeeb */ 1473bfcc09ddSBjoern A. Zeeb if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QU_C0) { 1474bfcc09ddSBjoern A. Zeeb if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr) 1475bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = &iwl_ax201_cfg_qu_c0_hr_b0; 1476bfcc09ddSBjoern A. Zeeb else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0) 1477bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = &killer1650s_2ax_cfg_qu_c0_hr_b0; 1478bfcc09ddSBjoern A. Zeeb else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0) 1479bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = &killer1650i_2ax_cfg_qu_c0_hr_b0; 1480bfcc09ddSBjoern A. Zeeb } 1481bfcc09ddSBjoern A. Zeeb 1482bfcc09ddSBjoern A. Zeeb /* same thing for QuZ... */ 1483bfcc09ddSBjoern A. Zeeb if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QUZ) { 1484bfcc09ddSBjoern A. Zeeb if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr) 1485bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = &iwl_ax201_cfg_quz_hr; 1486bfcc09ddSBjoern A. Zeeb else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0) 1487bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = &iwl_ax1650s_cfg_quz_hr; 1488bfcc09ddSBjoern A. Zeeb else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0) 1489bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = &iwl_ax1650i_cfg_quz_hr; 1490bfcc09ddSBjoern A. Zeeb } 1491bfcc09ddSBjoern A. Zeeb 1492bfcc09ddSBjoern A. Zeeb #endif 1493bfcc09ddSBjoern A. Zeeb /* 1494bfcc09ddSBjoern A. Zeeb * If we didn't set the cfg yet, the PCI ID table entry should have 1495bfcc09ddSBjoern A. Zeeb * been a full config - if yes, use it, otherwise fail. 1496bfcc09ddSBjoern A. Zeeb */ 1497bfcc09ddSBjoern A. Zeeb if (!iwl_trans->cfg) { 1498bfcc09ddSBjoern A. Zeeb if (ent->driver_data & TRANS_CFG_MARKER) { 1499bfcc09ddSBjoern A. Zeeb pr_err("No config found for PCI dev %04x/%04x, rev=0x%x, rfid=0x%x\n", 1500bfcc09ddSBjoern A. Zeeb pdev->device, pdev->subsystem_device, 1501bfcc09ddSBjoern A. Zeeb iwl_trans->hw_rev, iwl_trans->hw_rf_id); 1502bfcc09ddSBjoern A. Zeeb ret = -EINVAL; 1503bfcc09ddSBjoern A. Zeeb goto out_free_trans; 1504bfcc09ddSBjoern A. Zeeb } 1505bfcc09ddSBjoern A. Zeeb iwl_trans->cfg = cfg; 1506bfcc09ddSBjoern A. Zeeb } 1507bfcc09ddSBjoern A. Zeeb 1508bfcc09ddSBjoern A. Zeeb /* if we don't have a name yet, copy name from the old cfg */ 1509bfcc09ddSBjoern A. Zeeb if (!iwl_trans->name) 1510bfcc09ddSBjoern A. Zeeb iwl_trans->name = iwl_trans->cfg->name; 1511bfcc09ddSBjoern A. Zeeb 1512*a4128aadSBjoern A. Zeeb IWL_INFO(iwl_trans, "Detected %s\n", iwl_trans->name); 1513*a4128aadSBjoern A. Zeeb 1514bfcc09ddSBjoern A. Zeeb if (iwl_trans->trans_cfg->mq_rx_supported) { 1515bfcc09ddSBjoern A. Zeeb if (WARN_ON(!iwl_trans->cfg->num_rbds)) { 1516bfcc09ddSBjoern A. Zeeb ret = -EINVAL; 1517bfcc09ddSBjoern A. Zeeb goto out_free_trans; 1518bfcc09ddSBjoern A. Zeeb } 1519bfcc09ddSBjoern A. Zeeb trans_pcie->num_rx_bufs = iwl_trans->cfg->num_rbds; 1520bfcc09ddSBjoern A. Zeeb } else { 1521bfcc09ddSBjoern A. Zeeb trans_pcie->num_rx_bufs = RX_QUEUE_SIZE; 1522bfcc09ddSBjoern A. Zeeb } 1523bfcc09ddSBjoern A. Zeeb 15249af1bba4SBjoern A. Zeeb if (!iwl_trans->trans_cfg->integrated) { 15259af1bba4SBjoern A. Zeeb u16 link_status; 15269af1bba4SBjoern A. Zeeb 15279af1bba4SBjoern A. Zeeb pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &link_status); 15289af1bba4SBjoern A. Zeeb 15299af1bba4SBjoern A. Zeeb iwl_trans->pcie_link_speed = 15309af1bba4SBjoern A. Zeeb u16_get_bits(link_status, PCI_EXP_LNKSTA_CLS); 15319af1bba4SBjoern A. Zeeb } 15329af1bba4SBjoern A. Zeeb 1533bfcc09ddSBjoern A. Zeeb ret = iwl_trans_init(iwl_trans); 1534bfcc09ddSBjoern A. Zeeb if (ret) 1535bfcc09ddSBjoern A. Zeeb goto out_free_trans; 1536bfcc09ddSBjoern A. Zeeb 1537bfcc09ddSBjoern A. Zeeb pci_set_drvdata(pdev, iwl_trans); 1538d9836fb4SBjoern A. Zeeb 1539d9836fb4SBjoern A. Zeeb /* try to get ownership so that we'll know if we don't own it */ 1540d9836fb4SBjoern A. Zeeb iwl_pcie_prepare_card_hw(iwl_trans); 1541d9836fb4SBjoern A. Zeeb 1542bfcc09ddSBjoern A. Zeeb iwl_trans->drv = iwl_drv_start(iwl_trans); 1543bfcc09ddSBjoern A. Zeeb 1544bfcc09ddSBjoern A. Zeeb if (IS_ERR(iwl_trans->drv)) { 1545bfcc09ddSBjoern A. Zeeb ret = PTR_ERR(iwl_trans->drv); 1546bfcc09ddSBjoern A. Zeeb goto out_free_trans; 1547bfcc09ddSBjoern A. Zeeb } 1548bfcc09ddSBjoern A. Zeeb 1549bfcc09ddSBjoern A. Zeeb /* register transport layer debugfs here */ 1550bfcc09ddSBjoern A. Zeeb iwl_trans_pcie_dbgfs_register(iwl_trans); 1551bfcc09ddSBjoern A. Zeeb 1552bfcc09ddSBjoern A. Zeeb return 0; 1553bfcc09ddSBjoern A. Zeeb 1554bfcc09ddSBjoern A. Zeeb out_free_trans: 1555bfcc09ddSBjoern A. Zeeb iwl_trans_pcie_free(iwl_trans); 1556bfcc09ddSBjoern A. Zeeb return ret; 1557bfcc09ddSBjoern A. Zeeb } 1558bfcc09ddSBjoern A. Zeeb 1559bfcc09ddSBjoern A. Zeeb static void iwl_pci_remove(struct pci_dev *pdev) 1560bfcc09ddSBjoern A. Zeeb { 1561bfcc09ddSBjoern A. Zeeb struct iwl_trans *trans = pci_get_drvdata(pdev); 1562bfcc09ddSBjoern A. Zeeb 15639af1bba4SBjoern A. Zeeb if (!trans) 15649af1bba4SBjoern A. Zeeb return; 15659af1bba4SBjoern A. Zeeb 1566bfcc09ddSBjoern A. Zeeb iwl_drv_stop(trans->drv); 1567bfcc09ddSBjoern A. Zeeb 1568bfcc09ddSBjoern A. Zeeb iwl_trans_pcie_free(trans); 1569bfcc09ddSBjoern A. Zeeb } 1570bfcc09ddSBjoern A. Zeeb 1571bfcc09ddSBjoern A. Zeeb #ifdef CONFIG_PM_SLEEP 1572bfcc09ddSBjoern A. Zeeb 1573bfcc09ddSBjoern A. Zeeb static int iwl_pci_suspend(struct device *device) 1574bfcc09ddSBjoern A. Zeeb { 1575bfcc09ddSBjoern A. Zeeb /* Before you put code here, think about WoWLAN. You cannot check here 1576bfcc09ddSBjoern A. Zeeb * whether WoWLAN is enabled or not, and your code will run even if 1577bfcc09ddSBjoern A. Zeeb * WoWLAN is enabled - don't kill the NIC, someone may need it in Sx. 1578bfcc09ddSBjoern A. Zeeb */ 1579bfcc09ddSBjoern A. Zeeb 1580bfcc09ddSBjoern A. Zeeb return 0; 1581bfcc09ddSBjoern A. Zeeb } 1582bfcc09ddSBjoern A. Zeeb 1583*a4128aadSBjoern A. Zeeb static int _iwl_pci_resume(struct device *device, bool restore) 1584bfcc09ddSBjoern A. Zeeb { 1585bfcc09ddSBjoern A. Zeeb struct pci_dev *pdev = to_pci_dev(device); 1586bfcc09ddSBjoern A. Zeeb struct iwl_trans *trans = pci_get_drvdata(pdev); 1587bfcc09ddSBjoern A. Zeeb struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); 1588*a4128aadSBjoern A. Zeeb bool device_was_powered_off = false; 1589bfcc09ddSBjoern A. Zeeb 1590bfcc09ddSBjoern A. Zeeb /* Before you put code here, think about WoWLAN. You cannot check here 1591bfcc09ddSBjoern A. Zeeb * whether WoWLAN is enabled or not, and your code will run even if 1592bfcc09ddSBjoern A. Zeeb * WoWLAN is enabled - the NIC may be alive. 1593bfcc09ddSBjoern A. Zeeb */ 1594bfcc09ddSBjoern A. Zeeb 1595bfcc09ddSBjoern A. Zeeb /* 1596bfcc09ddSBjoern A. Zeeb * We disable the RETRY_TIMEOUT register (0x41) to keep 1597bfcc09ddSBjoern A. Zeeb * PCI Tx retries from interfering with C3 CPU state. 1598bfcc09ddSBjoern A. Zeeb */ 1599bfcc09ddSBjoern A. Zeeb pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00); 1600bfcc09ddSBjoern A. Zeeb 1601bfcc09ddSBjoern A. Zeeb if (!trans->op_mode) 1602bfcc09ddSBjoern A. Zeeb return 0; 1603bfcc09ddSBjoern A. Zeeb 1604*a4128aadSBjoern A. Zeeb /* 1605*a4128aadSBjoern A. Zeeb * Scratch value was altered, this means the device was powered off, we 1606*a4128aadSBjoern A. Zeeb * need to reset it completely. 1607*a4128aadSBjoern A. Zeeb * Note: MAC (bits 0:7) will be cleared upon suspend even with wowlan, 1608*a4128aadSBjoern A. Zeeb * so assume that any bits there mean that the device is usable. 1609*a4128aadSBjoern A. Zeeb */ 1610*a4128aadSBjoern A. Zeeb if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_BZ && 1611*a4128aadSBjoern A. Zeeb !iwl_read32(trans, CSR_FUNC_SCRATCH)) 1612*a4128aadSBjoern A. Zeeb device_was_powered_off = true; 1613*a4128aadSBjoern A. Zeeb 1614*a4128aadSBjoern A. Zeeb if (restore || device_was_powered_off) { 1615*a4128aadSBjoern A. Zeeb trans->state = IWL_TRANS_NO_FW; 1616*a4128aadSBjoern A. Zeeb /* Hope for the best here ... If one of those steps fails we 1617*a4128aadSBjoern A. Zeeb * won't really know how to recover. 1618*a4128aadSBjoern A. Zeeb */ 1619*a4128aadSBjoern A. Zeeb iwl_pcie_prepare_card_hw(trans); 1620*a4128aadSBjoern A. Zeeb iwl_finish_nic_init(trans); 1621*a4128aadSBjoern A. Zeeb iwl_op_mode_device_powered_off(trans->op_mode); 1622*a4128aadSBjoern A. Zeeb } 1623*a4128aadSBjoern A. Zeeb 1624bfcc09ddSBjoern A. Zeeb /* In WOWLAN, let iwl_trans_pcie_d3_resume do the rest of the work */ 1625bfcc09ddSBjoern A. Zeeb if (test_bit(STATUS_DEVICE_ENABLED, &trans->status)) 1626bfcc09ddSBjoern A. Zeeb return 0; 1627bfcc09ddSBjoern A. Zeeb 1628bfcc09ddSBjoern A. Zeeb /* reconfigure the MSI-X mapping to get the correct IRQ for rfkill */ 1629bfcc09ddSBjoern A. Zeeb iwl_pcie_conf_msix_hw(trans_pcie); 1630bfcc09ddSBjoern A. Zeeb 1631bfcc09ddSBjoern A. Zeeb /* 1632bfcc09ddSBjoern A. Zeeb * Enable rfkill interrupt (in order to keep track of the rfkill 1633bfcc09ddSBjoern A. Zeeb * status). Must be locked to avoid processing a possible rfkill 1634bfcc09ddSBjoern A. Zeeb * interrupt while in iwl_pcie_check_hw_rf_kill(). 1635bfcc09ddSBjoern A. Zeeb */ 1636bfcc09ddSBjoern A. Zeeb mutex_lock(&trans_pcie->mutex); 1637bfcc09ddSBjoern A. Zeeb iwl_enable_rfkill_int(trans); 1638bfcc09ddSBjoern A. Zeeb iwl_pcie_check_hw_rf_kill(trans); 1639bfcc09ddSBjoern A. Zeeb mutex_unlock(&trans_pcie->mutex); 1640bfcc09ddSBjoern A. Zeeb 1641bfcc09ddSBjoern A. Zeeb return 0; 1642bfcc09ddSBjoern A. Zeeb } 1643bfcc09ddSBjoern A. Zeeb 1644*a4128aadSBjoern A. Zeeb static int iwl_pci_restore(struct device *device) 1645*a4128aadSBjoern A. Zeeb { 1646*a4128aadSBjoern A. Zeeb return _iwl_pci_resume(device, true); 1647*a4128aadSBjoern A. Zeeb } 1648*a4128aadSBjoern A. Zeeb 1649*a4128aadSBjoern A. Zeeb static int iwl_pci_resume(struct device *device) 1650*a4128aadSBjoern A. Zeeb { 1651*a4128aadSBjoern A. Zeeb return _iwl_pci_resume(device, false); 1652*a4128aadSBjoern A. Zeeb } 1653*a4128aadSBjoern A. Zeeb 1654bfcc09ddSBjoern A. Zeeb static const struct dev_pm_ops iwl_dev_pm_ops = { 1655*a4128aadSBjoern A. Zeeb .suspend = pm_sleep_ptr(iwl_pci_suspend), 1656*a4128aadSBjoern A. Zeeb .resume = pm_sleep_ptr(iwl_pci_resume), 1657*a4128aadSBjoern A. Zeeb .freeze = pm_sleep_ptr(iwl_pci_suspend), 1658*a4128aadSBjoern A. Zeeb .thaw = pm_sleep_ptr(iwl_pci_resume), 1659*a4128aadSBjoern A. Zeeb .poweroff = pm_sleep_ptr(iwl_pci_suspend), 1660*a4128aadSBjoern A. Zeeb .restore = pm_sleep_ptr(iwl_pci_restore), 1661bfcc09ddSBjoern A. Zeeb }; 1662bfcc09ddSBjoern A. Zeeb 1663bfcc09ddSBjoern A. Zeeb #define IWL_PM_OPS (&iwl_dev_pm_ops) 1664bfcc09ddSBjoern A. Zeeb 1665bfcc09ddSBjoern A. Zeeb #else /* CONFIG_PM_SLEEP */ 1666bfcc09ddSBjoern A. Zeeb 1667bfcc09ddSBjoern A. Zeeb #define IWL_PM_OPS NULL 1668bfcc09ddSBjoern A. Zeeb 1669bfcc09ddSBjoern A. Zeeb #endif /* CONFIG_PM_SLEEP */ 1670bfcc09ddSBjoern A. Zeeb 1671bfcc09ddSBjoern A. Zeeb static struct pci_driver iwl_pci_driver = { 1672bfcc09ddSBjoern A. Zeeb .name = DRV_NAME, 1673bfcc09ddSBjoern A. Zeeb .id_table = iwl_hw_card_ids, 1674bfcc09ddSBjoern A. Zeeb .probe = iwl_pci_probe, 1675bfcc09ddSBjoern A. Zeeb .remove = iwl_pci_remove, 1676bfcc09ddSBjoern A. Zeeb .driver.pm = IWL_PM_OPS, 16773d248a91SBjoern A. Zeeb #if defined(__FreeBSD__) 16783d248a91SBjoern A. Zeeb /* Allow iwm(4) to attach for conflicting IDs for now. */ 16793d248a91SBjoern A. Zeeb .bsd_probe_return = (BUS_PROBE_DEFAULT - 1), 16803d248a91SBjoern A. Zeeb #endif 1681bfcc09ddSBjoern A. Zeeb }; 1682bfcc09ddSBjoern A. Zeeb 1683bfcc09ddSBjoern A. Zeeb int __must_check iwl_pci_register_driver(void) 1684bfcc09ddSBjoern A. Zeeb { 1685bfcc09ddSBjoern A. Zeeb int ret; 1686bfcc09ddSBjoern A. Zeeb ret = pci_register_driver(&iwl_pci_driver); 1687bfcc09ddSBjoern A. Zeeb if (ret) 1688bfcc09ddSBjoern A. Zeeb pr_err("Unable to initialize PCI module\n"); 1689bfcc09ddSBjoern A. Zeeb 1690bfcc09ddSBjoern A. Zeeb return ret; 1691bfcc09ddSBjoern A. Zeeb } 1692bfcc09ddSBjoern A. Zeeb 1693bfcc09ddSBjoern A. Zeeb void iwl_pci_unregister_driver(void) 1694bfcc09ddSBjoern A. Zeeb { 1695bfcc09ddSBjoern A. Zeeb pci_unregister_driver(&iwl_pci_driver); 1696bfcc09ddSBjoern A. Zeeb } 1697645886d0SBjoern A. Zeeb 1698645886d0SBjoern A. Zeeb #if defined(__FreeBSD__) 1699645886d0SBjoern A. Zeeb static int 1700645886d0SBjoern A. Zeeb sysctl_iwlwifi_pci_ids_name(SYSCTL_HANDLER_ARGS) 1701645886d0SBjoern A. Zeeb { 1702645886d0SBjoern A. Zeeb const struct pci_device_id *id; 1703645886d0SBjoern A. Zeeb struct sbuf *sb; 1704645886d0SBjoern A. Zeeb int error, i; 1705645886d0SBjoern A. Zeeb 1706645886d0SBjoern A. Zeeb error = sysctl_wire_old_buffer(req, 0); 1707645886d0SBjoern A. Zeeb if (error != 0) 1708645886d0SBjoern A. Zeeb return (error); 1709645886d0SBjoern A. Zeeb sb = sbuf_new_for_sysctl(NULL, NULL, 512, req); 1710645886d0SBjoern A. Zeeb if (sb == NULL) 1711645886d0SBjoern A. Zeeb return (ENOMEM); 1712645886d0SBjoern A. Zeeb 1713645886d0SBjoern A. Zeeb id = iwl_hw_card_ids; 1714645886d0SBjoern A. Zeeb while (id != NULL && id->vendor != 0) { 1715645886d0SBjoern A. Zeeb 1716645886d0SBjoern A. Zeeb if ((id->driver_data & TRANS_CFG_MARKER) != 0) { 1717645886d0SBjoern A. Zeeb /* Skip and print them below. */ 1718b4c8f251SBjoern A. Zeeb struct iwl_cfg_trans_params *trans; 1719b4c8f251SBjoern A. Zeeb 1720b4c8f251SBjoern A. Zeeb trans = (void *)(id->driver_data & ~TRANS_CFG_MARKER); 1721b4c8f251SBjoern A. Zeeb sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\t%d\t%s\n", 1722b4c8f251SBjoern A. Zeeb id->vendor, id->device, id->subvendor, id->subdevice, 1723b4c8f251SBjoern A. Zeeb "", "", trans->device_family, 1724b4c8f251SBjoern A. Zeeb iwl_device_family_name(trans->device_family)); 1725645886d0SBjoern A. Zeeb 1726645886d0SBjoern A. Zeeb } else if (id->driver_data != 0) { 1727645886d0SBjoern A. Zeeb const struct iwl_cfg *cfg; 1728645886d0SBjoern A. Zeeb 1729645886d0SBjoern A. Zeeb cfg = (void *)(id->driver_data & ~TRANS_CFG_MARKER); 1730b4c8f251SBjoern A. Zeeb sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\t%d\t%s\n", 1731645886d0SBjoern A. Zeeb id->vendor, id->device, id->subvendor, id->subdevice, 1732b4c8f251SBjoern A. Zeeb cfg->name, cfg->fw_name_pre, cfg->trans.device_family, 1733b4c8f251SBjoern A. Zeeb iwl_device_family_name(cfg->trans.device_family)); 1734645886d0SBjoern A. Zeeb } else { 1735b4c8f251SBjoern A. Zeeb sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\t%d\t%s\n", 1736645886d0SBjoern A. Zeeb id->vendor, id->device, id->subvendor, id->subdevice, 1737b4c8f251SBjoern A. Zeeb "","", IWL_DEVICE_FAMILY_UNDEFINED, 1738b4c8f251SBjoern A. Zeeb iwl_device_family_name(IWL_DEVICE_FAMILY_UNDEFINED)); 1739645886d0SBjoern A. Zeeb } 1740645886d0SBjoern A. Zeeb id++; 1741645886d0SBjoern A. Zeeb } 1742645886d0SBjoern A. Zeeb 1743645886d0SBjoern A. Zeeb for (i = 0; i < ARRAY_SIZE(iwl_dev_info_table); i++) { 1744645886d0SBjoern A. Zeeb const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i]; 1745645886d0SBjoern A. Zeeb const char *name; 1746645886d0SBjoern A. Zeeb 1747645886d0SBjoern A. Zeeb if (dev_info->name) 1748645886d0SBjoern A. Zeeb name = dev_info->name; 1749645886d0SBjoern A. Zeeb else if (dev_info->cfg && dev_info->cfg->name) 1750645886d0SBjoern A. Zeeb name = dev_info->cfg->name; 1751645886d0SBjoern A. Zeeb else 1752645886d0SBjoern A. Zeeb name = ""; 1753645886d0SBjoern A. Zeeb 1754b4c8f251SBjoern A. Zeeb sbuf_printf(sb, "%#06x/%#06x/%#06x/%#06x\t%s\t%s\t%d\t%s\n", 1755645886d0SBjoern A. Zeeb PCI_VENDOR_ID_INTEL, dev_info->device, PCI_ANY_ID, dev_info->subdevice, 1756b4c8f251SBjoern A. Zeeb name, dev_info->cfg->fw_name_pre, dev_info->cfg->trans.device_family, 1757b4c8f251SBjoern A. Zeeb iwl_device_family_name(dev_info->cfg->trans.device_family)); 1758645886d0SBjoern A. Zeeb } 1759645886d0SBjoern A. Zeeb 1760645886d0SBjoern A. Zeeb error = sbuf_finish(sb); 1761645886d0SBjoern A. Zeeb sbuf_delete(sb); 1762645886d0SBjoern A. Zeeb 1763645886d0SBjoern A. Zeeb return (error); 1764645886d0SBjoern A. Zeeb } 1765645886d0SBjoern A. Zeeb SYSCTL_PROC(LINUXKPI_PARAM_PARENT, OID_AUTO, LINUXKPI_PARAM_NAME(pci_ids_name), 1766645886d0SBjoern A. Zeeb CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_SKIP | CTLFLAG_MPSAFE, NULL, 0, 1767645886d0SBjoern A. Zeeb sysctl_iwlwifi_pci_ids_name, "", "iwlwifi PCI IDs and names"); 1768645886d0SBjoern A. Zeeb #endif 1769