18c2ecf20Sopenharmony_ci/****************************************************************************** 28c2ecf20Sopenharmony_ci * 38c2ecf20Sopenharmony_ci * This file is provided under a dual BSD/GPLv2 license. When using or 48c2ecf20Sopenharmony_ci * redistributing this file, you may do so under either license. 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * GPL LICENSE SUMMARY 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH 98c2ecf20Sopenharmony_ci * Copyright(c) 2016-2017 Intel Deutschland GmbH 108c2ecf20Sopenharmony_ci * Copyright(c) 2007 - 2014, 2018 - 2020 Intel Corporation 118c2ecf20Sopenharmony_ci * 128c2ecf20Sopenharmony_ci * This program is free software; you can redistribute it and/or modify 138c2ecf20Sopenharmony_ci * it under the terms of version 2 of the GNU General Public License as 148c2ecf20Sopenharmony_ci * published by the Free Software Foundation. 158c2ecf20Sopenharmony_ci * 168c2ecf20Sopenharmony_ci * This program is distributed in the hope that it will be useful, but 178c2ecf20Sopenharmony_ci * WITHOUT ANY WARRANTY; without even the implied warranty of 188c2ecf20Sopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 198c2ecf20Sopenharmony_ci * General Public License for more details. 208c2ecf20Sopenharmony_ci * 218c2ecf20Sopenharmony_ci * The full GNU General Public License is included in this distribution 228c2ecf20Sopenharmony_ci * in the file called COPYING. 238c2ecf20Sopenharmony_ci * 248c2ecf20Sopenharmony_ci * Contact Information: 258c2ecf20Sopenharmony_ci * Intel Linux Wireless <linuxwifi@intel.com> 268c2ecf20Sopenharmony_ci * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 278c2ecf20Sopenharmony_ci * 288c2ecf20Sopenharmony_ci * BSD LICENSE 298c2ecf20Sopenharmony_ci * 308c2ecf20Sopenharmony_ci * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH 318c2ecf20Sopenharmony_ci * All rights reserved. 328c2ecf20Sopenharmony_ci * Copyright(c) 2017 Intel Deutschland GmbH 338c2ecf20Sopenharmony_ci * Copyright(c) 2005 - 2014, 2018 - 2020 Intel Corporation 348c2ecf20Sopenharmony_ci * 358c2ecf20Sopenharmony_ci * Redistribution and use in source and binary forms, with or without 368c2ecf20Sopenharmony_ci * modification, are permitted provided that the following conditions 378c2ecf20Sopenharmony_ci * are met: 388c2ecf20Sopenharmony_ci * 398c2ecf20Sopenharmony_ci * * Redistributions of source code must retain the above copyright 408c2ecf20Sopenharmony_ci * notice, this list of conditions and the following disclaimer. 418c2ecf20Sopenharmony_ci * * Redistributions in binary form must reproduce the above copyright 428c2ecf20Sopenharmony_ci * notice, this list of conditions and the following disclaimer in 438c2ecf20Sopenharmony_ci * the documentation and/or other materials provided with the 448c2ecf20Sopenharmony_ci * distribution. 458c2ecf20Sopenharmony_ci * * Neither the name Intel Corporation nor the names of its 468c2ecf20Sopenharmony_ci * contributors may be used to endorse or promote products derived 478c2ecf20Sopenharmony_ci * from this software without specific prior written permission. 488c2ecf20Sopenharmony_ci * 498c2ecf20Sopenharmony_ci * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 508c2ecf20Sopenharmony_ci * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 518c2ecf20Sopenharmony_ci * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 528c2ecf20Sopenharmony_ci * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 538c2ecf20Sopenharmony_ci * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 548c2ecf20Sopenharmony_ci * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 558c2ecf20Sopenharmony_ci * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 568c2ecf20Sopenharmony_ci * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 578c2ecf20Sopenharmony_ci * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 588c2ecf20Sopenharmony_ci * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 598c2ecf20Sopenharmony_ci * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 608c2ecf20Sopenharmony_ci * 618c2ecf20Sopenharmony_ci *****************************************************************************/ 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci#include <linux/module.h> 668c2ecf20Sopenharmony_ci#include <linux/pci.h> 678c2ecf20Sopenharmony_ci#include <linux/acpi.h> 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#include "fw/acpi.h" 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci#include "iwl-trans.h" 728c2ecf20Sopenharmony_ci#include "iwl-drv.h" 738c2ecf20Sopenharmony_ci#include "iwl-prph.h" 748c2ecf20Sopenharmony_ci#include "internal.h" 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci#define TRANS_CFG_MARKER BIT(0) 778c2ecf20Sopenharmony_ci#define _IS_A(cfg, _struct) __builtin_types_compatible_p(typeof(cfg), \ 788c2ecf20Sopenharmony_ci struct _struct) 798c2ecf20Sopenharmony_ciextern int _invalid_type; 808c2ecf20Sopenharmony_ci#define _TRANS_CFG_MARKER(cfg) \ 818c2ecf20Sopenharmony_ci (__builtin_choose_expr(_IS_A(cfg, iwl_cfg_trans_params), \ 828c2ecf20Sopenharmony_ci TRANS_CFG_MARKER, \ 838c2ecf20Sopenharmony_ci __builtin_choose_expr(_IS_A(cfg, iwl_cfg), 0, _invalid_type))) 848c2ecf20Sopenharmony_ci#define _ASSIGN_CFG(cfg) (_TRANS_CFG_MARKER(cfg) + (kernel_ulong_t)&(cfg)) 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci#define IWL_PCI_DEVICE(dev, subdev, cfg) \ 878c2ecf20Sopenharmony_ci .vendor = PCI_VENDOR_ID_INTEL, .device = (dev), \ 888c2ecf20Sopenharmony_ci .subvendor = PCI_ANY_ID, .subdevice = (subdev), \ 898c2ecf20Sopenharmony_ci .driver_data = _ASSIGN_CFG(cfg) 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci/* Hardware specific file defines the PCI IDs table for that hardware module */ 928c2ecf20Sopenharmony_cistatic const struct pci_device_id iwl_hw_card_ids[] = { 938c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_IWLDVM) 948c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1201, iwl5100_agn_cfg)}, /* Mini Card */ 958c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1301, iwl5100_agn_cfg)}, /* Half Mini Card */ 968c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1204, iwl5100_agn_cfg)}, /* Mini Card */ 978c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1304, iwl5100_agn_cfg)}, /* Half Mini Card */ 988c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1205, iwl5100_bgn_cfg)}, /* Mini Card */ 998c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1305, iwl5100_bgn_cfg)}, /* Half Mini Card */ 1008c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1206, iwl5100_abg_cfg)}, /* Mini Card */ 1018c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1306, iwl5100_abg_cfg)}, /* Half Mini Card */ 1028c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1221, iwl5100_agn_cfg)}, /* Mini Card */ 1038c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1321, iwl5100_agn_cfg)}, /* Half Mini Card */ 1048c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1224, iwl5100_agn_cfg)}, /* Mini Card */ 1058c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1324, iwl5100_agn_cfg)}, /* Half Mini Card */ 1068c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1225, iwl5100_bgn_cfg)}, /* Mini Card */ 1078c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1325, iwl5100_bgn_cfg)}, /* Half Mini Card */ 1088c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1226, iwl5100_abg_cfg)}, /* Mini Card */ 1098c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1326, iwl5100_abg_cfg)}, /* Half Mini Card */ 1108c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1211, iwl5100_agn_cfg)}, /* Mini Card */ 1118c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1311, iwl5100_agn_cfg)}, /* Half Mini Card */ 1128c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1214, iwl5100_agn_cfg)}, /* Mini Card */ 1138c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1314, iwl5100_agn_cfg)}, /* Half Mini Card */ 1148c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1215, iwl5100_bgn_cfg)}, /* Mini Card */ 1158c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1315, iwl5100_bgn_cfg)}, /* Half Mini Card */ 1168c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1216, iwl5100_abg_cfg)}, /* Mini Card */ 1178c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1316, iwl5100_abg_cfg)}, /* Half Mini Card */ 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci/* 5300 Series WiFi */ 1208c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1021, iwl5300_agn_cfg)}, /* Mini Card */ 1218c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1121, iwl5300_agn_cfg)}, /* Half Mini Card */ 1228c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1024, iwl5300_agn_cfg)}, /* Mini Card */ 1238c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1124, iwl5300_agn_cfg)}, /* Half Mini Card */ 1248c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1001, iwl5300_agn_cfg)}, /* Mini Card */ 1258c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1101, iwl5300_agn_cfg)}, /* Half Mini Card */ 1268c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1004, iwl5300_agn_cfg)}, /* Mini Card */ 1278c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1104, iwl5300_agn_cfg)}, /* Half Mini Card */ 1288c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4236, 0x1011, iwl5300_agn_cfg)}, /* Mini Card */ 1298c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4236, 0x1111, iwl5300_agn_cfg)}, /* Half Mini Card */ 1308c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4236, 0x1014, iwl5300_agn_cfg)}, /* Mini Card */ 1318c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4236, 0x1114, iwl5300_agn_cfg)}, /* Half Mini Card */ 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ci/* 5350 Series WiFi/WiMax */ 1348c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423A, 0x1001, iwl5350_agn_cfg)}, /* Mini Card */ 1358c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423A, 0x1021, iwl5350_agn_cfg)}, /* Mini Card */ 1368c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423B, 0x1011, iwl5350_agn_cfg)}, /* Mini Card */ 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci/* 5150 Series Wifi/WiMax */ 1398c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1201, iwl5150_agn_cfg)}, /* Mini Card */ 1408c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1301, iwl5150_agn_cfg)}, /* Half Mini Card */ 1418c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1206, iwl5150_abg_cfg)}, /* Mini Card */ 1428c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1306, iwl5150_abg_cfg)}, /* Half Mini Card */ 1438c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1221, iwl5150_agn_cfg)}, /* Mini Card */ 1448c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1321, iwl5150_agn_cfg)}, /* Half Mini Card */ 1458c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1326, iwl5150_abg_cfg)}, /* Half Mini Card */ 1468c2ecf20Sopenharmony_ci 1478c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423D, 0x1211, iwl5150_agn_cfg)}, /* Mini Card */ 1488c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423D, 0x1311, iwl5150_agn_cfg)}, /* Half Mini Card */ 1498c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423D, 0x1216, iwl5150_abg_cfg)}, /* Mini Card */ 1508c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x423D, 0x1316, iwl5150_abg_cfg)}, /* Half Mini Card */ 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_ci/* 6x00 Series */ 1538c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422B, 0x1101, iwl6000_3agn_cfg)}, 1548c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422B, 0x1108, iwl6000_3agn_cfg)}, 1558c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422B, 0x1121, iwl6000_3agn_cfg)}, 1568c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422B, 0x1128, iwl6000_3agn_cfg)}, 1578c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1301, iwl6000i_2agn_cfg)}, 1588c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1306, iwl6000i_2abg_cfg)}, 1598c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1307, iwl6000i_2bg_cfg)}, 1608c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1321, iwl6000i_2agn_cfg)}, 1618c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1326, iwl6000i_2abg_cfg)}, 1628c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4238, 0x1111, iwl6000_3agn_cfg)}, 1638c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4238, 0x1118, iwl6000_3agn_cfg)}, 1648c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4239, 0x1311, iwl6000i_2agn_cfg)}, 1658c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_2abg_cfg)}, 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ci/* 6x05 Series */ 1688c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6005_2agn_cfg)}, 1698c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6005_2abg_cfg)}, 1708c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6005_2bg_cfg)}, 1718c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1308, iwl6005_2agn_cfg)}, 1728c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6005_2agn_cfg)}, 1738c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6005_2abg_cfg)}, 1748c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1328, iwl6005_2agn_cfg)}, 1758c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6005_2agn_cfg)}, 1768c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0x1318, iwl6005_2agn_cfg)}, 1778c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6005_2abg_cfg)}, 1788c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0xC020, iwl6005_2agn_sff_cfg)}, 1798c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0xC220, iwl6005_2agn_sff_cfg)}, 1808c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0xC228, iwl6005_2agn_sff_cfg)}, 1818c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x4820, iwl6005_2agn_d_cfg)}, 1828c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1304, iwl6005_2agn_mow1_cfg)},/* low 5GHz active */ 1838c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1305, iwl6005_2agn_mow2_cfg)},/* high 5GHz active */ 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_ci/* 6x30 Series */ 1868c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x008A, 0x5305, iwl1030_bgn_cfg)}, 1878c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x008A, 0x5307, iwl1030_bg_cfg)}, 1888c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x008A, 0x5325, iwl1030_bgn_cfg)}, 1898c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x008A, 0x5327, iwl1030_bg_cfg)}, 1908c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x008B, 0x5315, iwl1030_bgn_cfg)}, 1918c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x008B, 0x5317, iwl1030_bg_cfg)}, 1928c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6030_2agn_cfg)}, 1938c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6030_2bgn_cfg)}, 1948c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6030_2abg_cfg)}, 1958c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6030_2agn_cfg)}, 1968c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6030_2bgn_cfg)}, 1978c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6030_2abg_cfg)}, 1988c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6030_2bg_cfg)}, 1998c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6030_2agn_cfg)}, 2008c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6030_2bgn_cfg)}, 2018c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6030_2abg_cfg)}, 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci/* 6x50 WiFi/WiMax Series */ 2048c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)}, 2058c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0087, 0x1306, iwl6050_2abg_cfg)}, 2068c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0087, 0x1321, iwl6050_2agn_cfg)}, 2078c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0087, 0x1326, iwl6050_2abg_cfg)}, 2088c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_2agn_cfg)}, 2098c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)}, 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ci/* 6150 WiFi/WiMax Series */ 2128c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6150_bgn_cfg)}, 2138c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0885, 0x1307, iwl6150_bg_cfg)}, 2148c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6150_bgn_cfg)}, 2158c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0885, 0x1327, iwl6150_bg_cfg)}, 2168c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6150_bgn_cfg)}, 2178c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0886, 0x1317, iwl6150_bg_cfg)}, 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_ci/* 1000 Series WiFi */ 2208c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)}, 2218c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_bgn_cfg)}, 2228c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1225, iwl1000_bgn_cfg)}, 2238c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1325, iwl1000_bgn_cfg)}, 2248c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0084, 0x1215, iwl1000_bgn_cfg)}, 2258c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0084, 0x1315, iwl1000_bgn_cfg)}, 2268c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1206, iwl1000_bg_cfg)}, 2278c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1306, iwl1000_bg_cfg)}, 2288c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1226, iwl1000_bg_cfg)}, 2298c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1326, iwl1000_bg_cfg)}, 2308c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0084, 0x1216, iwl1000_bg_cfg)}, 2318c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0084, 0x1316, iwl1000_bg_cfg)}, 2328c2ecf20Sopenharmony_ci 2338c2ecf20Sopenharmony_ci/* 100 Series WiFi */ 2348c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08AE, 0x1005, iwl100_bgn_cfg)}, 2358c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08AE, 0x1007, iwl100_bg_cfg)}, 2368c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08AF, 0x1015, iwl100_bgn_cfg)}, 2378c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08AF, 0x1017, iwl100_bg_cfg)}, 2388c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08AE, 0x1025, iwl100_bgn_cfg)}, 2398c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08AE, 0x1027, iwl100_bg_cfg)}, 2408c2ecf20Sopenharmony_ci 2418c2ecf20Sopenharmony_ci/* 130 Series WiFi */ 2428c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0896, 0x5005, iwl130_bgn_cfg)}, 2438c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0896, 0x5007, iwl130_bg_cfg)}, 2448c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0897, 0x5015, iwl130_bgn_cfg)}, 2458c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0897, 0x5017, iwl130_bg_cfg)}, 2468c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0896, 0x5025, iwl130_bgn_cfg)}, 2478c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0896, 0x5027, iwl130_bg_cfg)}, 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ci/* 2x00 Series */ 2508c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0890, 0x4022, iwl2000_2bgn_cfg)}, 2518c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0891, 0x4222, iwl2000_2bgn_cfg)}, 2528c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0890, 0x4422, iwl2000_2bgn_cfg)}, 2538c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0890, 0x4822, iwl2000_2bgn_d_cfg)}, 2548c2ecf20Sopenharmony_ci 2558c2ecf20Sopenharmony_ci/* 2x30 Series */ 2568c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0887, 0x4062, iwl2030_2bgn_cfg)}, 2578c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0888, 0x4262, iwl2030_2bgn_cfg)}, 2588c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0887, 0x4462, iwl2030_2bgn_cfg)}, 2598c2ecf20Sopenharmony_ci 2608c2ecf20Sopenharmony_ci/* 6x35 Series */ 2618c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x4060, iwl6035_2agn_cfg)}, 2628c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x406A, iwl6035_2agn_sff_cfg)}, 2638c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x088F, 0x4260, iwl6035_2agn_cfg)}, 2648c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x088F, 0x426A, iwl6035_2agn_sff_cfg)}, 2658c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x4460, iwl6035_2agn_cfg)}, 2668c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x446A, iwl6035_2agn_sff_cfg)}, 2678c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)}, 2688c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)}, 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_ci/* 105 Series */ 2718c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)}, 2728c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0895, 0x0222, iwl105_bgn_cfg)}, 2738c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0894, 0x0422, iwl105_bgn_cfg)}, 2748c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0894, 0x0822, iwl105_bgn_d_cfg)}, 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_ci/* 135 Series */ 2778c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0892, 0x0062, iwl135_bgn_cfg)}, 2788c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0893, 0x0262, iwl135_bgn_cfg)}, 2798c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x0892, 0x0462, iwl135_bgn_cfg)}, 2808c2ecf20Sopenharmony_ci#endif /* CONFIG_IWLDVM */ 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_IWLMVM) 2838c2ecf20Sopenharmony_ci/* 7260 Series */ 2848c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)}, 2858c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4072, iwl7260_2ac_cfg)}, 2868c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4170, iwl7260_2ac_cfg)}, 2878c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4C60, iwl7260_2ac_cfg)}, 2888c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4C70, iwl7260_2ac_cfg)}, 2898c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4060, iwl7260_2n_cfg)}, 2908c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x406A, iwl7260_2n_cfg)}, 2918c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4160, iwl7260_2n_cfg)}, 2928c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4062, iwl7260_n_cfg)}, 2938c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4162, iwl7260_n_cfg)}, 2948c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4270, iwl7260_2ac_cfg)}, 2958c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4272, iwl7260_2ac_cfg)}, 2968c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4260, iwl7260_2n_cfg)}, 2978c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x426A, iwl7260_2n_cfg)}, 2988c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4262, iwl7260_n_cfg)}, 2998c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4470, iwl7260_2ac_cfg)}, 3008c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4472, iwl7260_2ac_cfg)}, 3018c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4460, iwl7260_2n_cfg)}, 3028c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x446A, iwl7260_2n_cfg)}, 3038c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4462, iwl7260_n_cfg)}, 3048c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4870, iwl7260_2ac_cfg)}, 3058c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x486E, iwl7260_2ac_cfg)}, 3068c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4A70, iwl7260_2ac_cfg_high_temp)}, 3078c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4A6E, iwl7260_2ac_cfg_high_temp)}, 3088c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4A6C, iwl7260_2ac_cfg_high_temp)}, 3098c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4570, iwl7260_2ac_cfg)}, 3108c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4560, iwl7260_2n_cfg)}, 3118c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4370, iwl7260_2ac_cfg)}, 3128c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4360, iwl7260_2n_cfg)}, 3138c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x5070, iwl7260_2ac_cfg)}, 3148c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x5072, iwl7260_2ac_cfg)}, 3158c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x5170, iwl7260_2ac_cfg)}, 3168c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x5770, iwl7260_2ac_cfg)}, 3178c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4020, iwl7260_2n_cfg)}, 3188c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x402A, iwl7260_2n_cfg)}, 3198c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4220, iwl7260_2n_cfg)}, 3208c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4420, iwl7260_2n_cfg)}, 3218c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)}, 3228c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC072, iwl7260_2ac_cfg)}, 3238c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC170, iwl7260_2ac_cfg)}, 3248c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC060, iwl7260_2n_cfg)}, 3258c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC06A, iwl7260_2n_cfg)}, 3268c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC160, iwl7260_2n_cfg)}, 3278c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC062, iwl7260_n_cfg)}, 3288c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC162, iwl7260_n_cfg)}, 3298c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC770, iwl7260_2ac_cfg)}, 3308c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC760, iwl7260_2n_cfg)}, 3318c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC270, iwl7260_2ac_cfg)}, 3328c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xCC70, iwl7260_2ac_cfg)}, 3338c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xCC60, iwl7260_2ac_cfg)}, 3348c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC272, iwl7260_2ac_cfg)}, 3358c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC260, iwl7260_2n_cfg)}, 3368c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC26A, iwl7260_n_cfg)}, 3378c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC262, iwl7260_n_cfg)}, 3388c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC470, iwl7260_2ac_cfg)}, 3398c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC472, iwl7260_2ac_cfg)}, 3408c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC460, iwl7260_2n_cfg)}, 3418c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC462, iwl7260_n_cfg)}, 3428c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC570, iwl7260_2ac_cfg)}, 3438c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC560, iwl7260_2n_cfg)}, 3448c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC370, iwl7260_2ac_cfg)}, 3458c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC360, iwl7260_2n_cfg)}, 3468c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC020, iwl7260_2n_cfg)}, 3478c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC02A, iwl7260_2n_cfg)}, 3488c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC220, iwl7260_2n_cfg)}, 3498c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC420, iwl7260_2n_cfg)}, 3508c2ecf20Sopenharmony_ci 3518c2ecf20Sopenharmony_ci/* 3160 Series */ 3528c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_2ac_cfg)}, 3538c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0072, iwl3160_2ac_cfg)}, 3548c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0170, iwl3160_2ac_cfg)}, 3558c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0172, iwl3160_2ac_cfg)}, 3568c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0060, iwl3160_2n_cfg)}, 3578c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0062, iwl3160_n_cfg)}, 3588c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x0270, iwl3160_2ac_cfg)}, 3598c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x0272, iwl3160_2ac_cfg)}, 3608c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0470, iwl3160_2ac_cfg)}, 3618c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0472, iwl3160_2ac_cfg)}, 3628c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x0370, iwl3160_2ac_cfg)}, 3638c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_2ac_cfg)}, 3648c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8072, iwl3160_2ac_cfg)}, 3658c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8170, iwl3160_2ac_cfg)}, 3668c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8172, iwl3160_2ac_cfg)}, 3678c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8060, iwl3160_2n_cfg)}, 3688c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8062, iwl3160_n_cfg)}, 3698c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x8270, iwl3160_2ac_cfg)}, 3708c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x8370, iwl3160_2ac_cfg)}, 3718c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x8272, iwl3160_2ac_cfg)}, 3728c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8470, iwl3160_2ac_cfg)}, 3738c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8570, iwl3160_2ac_cfg)}, 3748c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x1070, iwl3160_2ac_cfg)}, 3758c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x1170, iwl3160_2ac_cfg)}, 3768c2ecf20Sopenharmony_ci 3778c2ecf20Sopenharmony_ci/* 3165 Series */ 3788c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4010, iwl3165_2ac_cfg)}, 3798c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4012, iwl3165_2ac_cfg)}, 3808c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3166, 0x4212, iwl3165_2ac_cfg)}, 3818c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4410, iwl3165_2ac_cfg)}, 3828c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4510, iwl3165_2ac_cfg)}, 3838c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4110, iwl3165_2ac_cfg)}, 3848c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3166, 0x4310, iwl3165_2ac_cfg)}, 3858c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3166, 0x4210, iwl3165_2ac_cfg)}, 3868c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x8010, iwl3165_2ac_cfg)}, 3878c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x8110, iwl3165_2ac_cfg)}, 3888c2ecf20Sopenharmony_ci 3898c2ecf20Sopenharmony_ci/* 3168 Series */ 3908c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x2010, iwl3168_2ac_cfg)}, 3918c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x2110, iwl3168_2ac_cfg)}, 3928c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x2050, iwl3168_2ac_cfg)}, 3938c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x2150, iwl3168_2ac_cfg)}, 3948c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x0000, iwl3168_2ac_cfg)}, 3958c2ecf20Sopenharmony_ci 3968c2ecf20Sopenharmony_ci/* 7265 Series */ 3978c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7265_2ac_cfg)}, 3988c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5110, iwl7265_2ac_cfg)}, 3998c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5100, iwl7265_2ac_cfg)}, 4008c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7265_2ac_cfg)}, 4018c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5302, iwl7265_n_cfg)}, 4028c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5210, iwl7265_2ac_cfg)}, 4038c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5C10, iwl7265_2ac_cfg)}, 4048c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5012, iwl7265_2ac_cfg)}, 4058c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7265_2ac_cfg)}, 4068c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7265_2ac_cfg)}, 4078c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5510, iwl7265_2ac_cfg)}, 4088c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5400, iwl7265_2ac_cfg)}, 4098c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x1010, iwl7265_2ac_cfg)}, 4108c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5000, iwl7265_2n_cfg)}, 4118c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x500A, iwl7265_2n_cfg)}, 4128c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5200, iwl7265_2n_cfg)}, 4138c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5002, iwl7265_n_cfg)}, 4148c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5102, iwl7265_n_cfg)}, 4158c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5202, iwl7265_n_cfg)}, 4168c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9010, iwl7265_2ac_cfg)}, 4178c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9012, iwl7265_2ac_cfg)}, 4188c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x900A, iwl7265_2ac_cfg)}, 4198c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7265_2ac_cfg)}, 4208c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9112, iwl7265_2ac_cfg)}, 4218c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x9210, iwl7265_2ac_cfg)}, 4228c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)}, 4238c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9510, iwl7265_2ac_cfg)}, 4248c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x9310, iwl7265_2ac_cfg)}, 4258c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9410, iwl7265_2ac_cfg)}, 4268c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5020, iwl7265_2n_cfg)}, 4278c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x502A, iwl7265_2n_cfg)}, 4288c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5420, iwl7265_2n_cfg)}, 4298c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5090, iwl7265_2ac_cfg)}, 4308c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5190, iwl7265_2ac_cfg)}, 4318c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5590, iwl7265_2ac_cfg)}, 4328c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5290, iwl7265_2ac_cfg)}, 4338c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5490, iwl7265_2ac_cfg)}, 4348c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7265_2ac_cfg)}, 4358c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)}, 4368c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x520A, iwl7265_2ac_cfg)}, 4378c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9000, iwl7265_2ac_cfg)}, 4388c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9400, iwl7265_2ac_cfg)}, 4398c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9E10, iwl7265_2ac_cfg)}, 4408c2ecf20Sopenharmony_ci 4418c2ecf20Sopenharmony_ci/* 8000 Series */ 4428c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)}, 4438c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)}, 4448c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8260_2ac_cfg)}, 4458c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8260_2ac_cfg)}, 4468c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8260_2ac_cfg)}, 4478c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8260_2ac_cfg)}, 4488c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1132, iwl8260_2ac_cfg)}, 4498c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0110, iwl8260_2ac_cfg)}, 4508c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x01F0, iwl8260_2ac_cfg)}, 4518c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0012, iwl8260_2ac_cfg)}, 4528c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1012, iwl8260_2ac_cfg)}, 4538c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1110, iwl8260_2ac_cfg)}, 4548c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0050, iwl8260_2ac_cfg)}, 4558c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0250, iwl8260_2ac_cfg)}, 4568c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1050, iwl8260_2ac_cfg)}, 4578c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0150, iwl8260_2ac_cfg)}, 4588c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1150, iwl8260_2ac_cfg)}, 4598c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0x0030, iwl8260_2ac_cfg)}, 4608c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8260_2ac_cfg)}, 4618c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8260_2ac_cfg)}, 4628c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8260_2ac_cfg)}, 4638c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8260_2ac_cfg)}, 4648c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)}, 4658c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)}, 4668c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xD0B0, iwl8260_2ac_cfg)}, 4678c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xB0B0, iwl8260_2ac_cfg)}, 4688c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)}, 4698c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8260_2ac_cfg)}, 4708c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8260_2ac_cfg)}, 4718c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8260_2ac_cfg)}, 4728c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8260_2ac_cfg)}, 4738c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8260_2ac_cfg)}, 4748c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8260_2ac_cfg)}, 4758c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8260_2ac_cfg)}, 4768c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8260_2ac_cfg)}, 4778c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8260_2ac_cfg)}, 4788c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8260_2ac_cfg)}, 4798c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9132, iwl8260_2ac_cfg)}, 4808c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8050, iwl8260_2ac_cfg)}, 4818c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8150, iwl8260_2ac_cfg)}, 4828c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9050, iwl8260_2ac_cfg)}, 4838c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9150, iwl8260_2ac_cfg)}, 4848c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0004, iwl8260_2n_cfg)}, 4858c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0044, iwl8260_2n_cfg)}, 4868c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F5, 0x0010, iwl4165_2ac_cfg)}, 4878c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F6, 0x0030, iwl4165_2ac_cfg)}, 4888c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0810, iwl8260_2ac_cfg)}, 4898c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0910, iwl8260_2ac_cfg)}, 4908c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0850, iwl8260_2ac_cfg)}, 4918c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8260_2ac_cfg)}, 4928c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)}, 4938c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8265_2ac_cfg)}, 4948c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x4010, iwl8260_2ac_cfg)}, 4958c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)}, 4968c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)}, 4978c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)}, 4988c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1130, iwl8265_2ac_cfg)}, 4998c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0130, iwl8265_2ac_cfg)}, 5008c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8265_2ac_cfg)}, 5018c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x10D0, iwl8265_2ac_cfg)}, 5028c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8265_2ac_cfg)}, 5038c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8265_2ac_cfg)}, 5048c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x9010, iwl8265_2ac_cfg)}, 5058c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x8110, iwl8265_2ac_cfg)}, 5068c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x8050, iwl8265_2ac_cfg)}, 5078c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x8010, iwl8265_2ac_cfg)}, 5088c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8265_2ac_cfg)}, 5098c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8265_2ac_cfg)}, 5108c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8265_2ac_cfg)}, 5118c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0910, iwl8265_2ac_cfg)}, 5128c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0930, iwl8265_2ac_cfg)}, 5138c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0950, iwl8265_2ac_cfg)}, 5148c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0850, iwl8265_2ac_cfg)}, 5158c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1014, iwl8265_2ac_cfg)}, 5168c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x3E02, iwl8275_2ac_cfg)}, 5178c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x3E01, iwl8275_2ac_cfg)}, 5188c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1012, iwl8275_2ac_cfg)}, 5198c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8275_2ac_cfg)}, 5208c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0014, iwl8265_2ac_cfg)}, 5218c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8265_2ac_cfg)}, 5228c2ecf20Sopenharmony_ci 5238c2ecf20Sopenharmony_ci/* 9000 Series */ 5248c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2526, PCI_ANY_ID, iwl9000_trans_cfg)}, 5258c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x271B, PCI_ANY_ID, iwl9000_trans_cfg)}, 5268c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x271C, PCI_ANY_ID, iwl9000_trans_cfg)}, 5278c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x30DC, PCI_ANY_ID, iwl9560_long_latency_trans_cfg)}, 5288c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x31DC, PCI_ANY_ID, iwl9560_shared_clk_trans_cfg)}, 5298c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x9DF0, PCI_ANY_ID, iwl9560_trans_cfg)}, 5308c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0xA370, PCI_ANY_ID, iwl9560_trans_cfg)}, 5318c2ecf20Sopenharmony_ci 5328c2ecf20Sopenharmony_ci/* Qu devices */ 5338c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x02F0, PCI_ANY_ID, iwl_qu_trans_cfg)}, 5348c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x06F0, PCI_ANY_ID, iwl_qu_trans_cfg)}, 5358c2ecf20Sopenharmony_ci 5368c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x34F0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 5378c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x3DF0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 5388c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x4DF0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 5398c2ecf20Sopenharmony_ci 5408c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x43F0, PCI_ANY_ID, iwl_qu_long_latency_trans_cfg)}, 5418c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0xA0F0, PCI_ANY_ID, iwl_qu_long_latency_trans_cfg)}, 5428c2ecf20Sopenharmony_ci 5438c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2720, PCI_ANY_ID, iwl_qnj_trans_cfg)}, 5448c2ecf20Sopenharmony_ci 5458c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2723, PCI_ANY_ID, iwl_ax200_trans_cfg)}, 5468c2ecf20Sopenharmony_ci 5478c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x0090, iwlax211_2ax_cfg_so_gf_a0)}, 5488c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x0020, iwlax210_2ax_cfg_ty_gf_a0)}, 5498c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x0024, iwlax210_2ax_cfg_ty_gf_a0)}, 5508c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x0310, iwlax210_2ax_cfg_ty_gf_a0)}, 5518c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x0510, iwlax210_2ax_cfg_ty_gf_a0)}, 5528c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x0A10, iwlax210_2ax_cfg_ty_gf_a0)}, 5538c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0xE020, iwlax210_2ax_cfg_ty_gf_a0)}, 5548c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0xE024, iwlax210_2ax_cfg_ty_gf_a0)}, 5558c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x4020, iwlax210_2ax_cfg_ty_gf_a0)}, 5568c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x6020, iwlax210_2ax_cfg_ty_gf_a0)}, 5578c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x6024, iwlax210_2ax_cfg_ty_gf_a0)}, 5588c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, 0x00B0, iwlax411_2ax_cfg_sosnj_gf4_a0)}, 5598c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x0070, iwlax201_cfg_snj_hr_b0)}, 5608c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x0074, iwlax201_cfg_snj_hr_b0)}, 5618c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x0078, iwlax201_cfg_snj_hr_b0)}, 5628c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x007C, iwlax201_cfg_snj_hr_b0)}, 5638c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x0090, iwlax211_cfg_snj_gf_a0)}, 5648c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x0098, iwlax211_cfg_snj_gf_a0)}, 5658c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x00B0, iwlax411_2ax_cfg_sosnj_gf4_a0)}, 5668c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x0510, iwlax211_cfg_snj_gf_a0)}, 5678c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x2074, iwlax201_cfg_snj_hr_b0)}, 5688c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2726, 0x4070, iwlax201_cfg_snj_hr_b0)}, 5698c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7A70, 0x0090, iwlax211_2ax_cfg_so_gf_a0_long)}, 5708c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7A70, 0x0098, iwlax211_2ax_cfg_so_gf_a0_long)}, 5718c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7A70, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0_long)}, 5728c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0_long)}, 5738c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0_long)}, 5748c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0_long)}, 5758c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7AF0, 0x0090, iwlax211_2ax_cfg_so_gf_a0)}, 5768c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7AF0, 0x0098, iwlax211_2ax_cfg_so_gf_a0)}, 5778c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7AF0, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0)}, 5788c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0)}, 5798c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0)}, 5808c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)}, 5818c2ecf20Sopenharmony_ci 5828c2ecf20Sopenharmony_ci/* Ma devices */ 5838c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x2729, PCI_ANY_ID, iwl_ma_trans_cfg)}, 5848c2ecf20Sopenharmony_ci {IWL_PCI_DEVICE(0x7E80, PCI_ANY_ID, iwl_ma_trans_cfg)}, 5858c2ecf20Sopenharmony_ci 5868c2ecf20Sopenharmony_ci#endif /* CONFIG_IWLMVM */ 5878c2ecf20Sopenharmony_ci 5888c2ecf20Sopenharmony_ci {0} 5898c2ecf20Sopenharmony_ci}; 5908c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(pci, iwl_hw_card_ids); 5918c2ecf20Sopenharmony_ci 5928c2ecf20Sopenharmony_ci#define _IWL_DEV_INFO(_device, _subdevice, _mac_type, _mac_step, _rf_type, \ 5938c2ecf20Sopenharmony_ci _rf_id, _no_160, _cores, _cfg, _name) \ 5948c2ecf20Sopenharmony_ci { .device = (_device), .subdevice = (_subdevice), .cfg = &(_cfg), \ 5958c2ecf20Sopenharmony_ci .name = _name, .mac_type = _mac_type, .rf_type = _rf_type, \ 5968c2ecf20Sopenharmony_ci .no_160 = _no_160, .cores = _cores, .rf_id = _rf_id, \ 5978c2ecf20Sopenharmony_ci .mac_step = _mac_step } 5988c2ecf20Sopenharmony_ci 5998c2ecf20Sopenharmony_ci#define IWL_DEV_INFO(_device, _subdevice, _cfg, _name) \ 6008c2ecf20Sopenharmony_ci _IWL_DEV_INFO(_device, _subdevice, IWL_CFG_ANY, IWL_CFG_ANY, \ 6018c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, \ 6028c2ecf20Sopenharmony_ci _cfg, _name) 6038c2ecf20Sopenharmony_ci 6048c2ecf20Sopenharmony_cistatic const struct iwl_dev_info iwl_dev_info_table[] = { 6058c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_IWLMVM) 6068c2ecf20Sopenharmony_ci/* 9000 */ 6078c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2526, 0x1550, iwl9260_2ac_cfg, iwl9260_killer_1550_name), 6088c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2526, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 6098c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2526, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 6108c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x30DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 6118c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x30DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 6128c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x31DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 6138c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x31DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 6148c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA370, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 6158c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA370, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 6168c2ecf20Sopenharmony_ci 6178c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x271C, 0x0214, iwl9260_2ac_cfg, iwl9260_1_name), 6188c2ecf20Sopenharmony_ci 6198c2ecf20Sopenharmony_ci/* AX200 */ 6208c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2723, 0x1653, iwl_ax200_cfg_cc, iwl_ax200_killer_1650w_name), 6218c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2723, 0x1654, iwl_ax200_cfg_cc, iwl_ax200_killer_1650x_name), 6228c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2723, IWL_CFG_ANY, iwl_ax200_cfg_cc, iwl_ax200_name), 6238c2ecf20Sopenharmony_ci 6248c2ecf20Sopenharmony_ci /* QnJ with Hr */ 6258c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2720, IWL_CFG_ANY, iwl_qnj_b0_hr_b0_cfg, iwl_ax201_name), 6268c2ecf20Sopenharmony_ci 6278c2ecf20Sopenharmony_ci /* SnJ with HR*/ 6288c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2726, 0x0244, iwlax201_cfg_snj_hr_b0, iwl_ax101_name), 6298c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2726, 0x1651, iwlax201_cfg_snj_hr_b0, iwl_ax201_killer_1650s_name), 6308c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2726, 0x1652, iwlax201_cfg_snj_hr_b0, iwl_ax201_killer_1650i_name), 6318c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x2726, 0x4244, iwlax201_cfg_snj_hr_b0, iwl_ax101_name), 6328c2ecf20Sopenharmony_ci 6338c2ecf20Sopenharmony_ci /* Qu with Hr */ 6348c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 6358c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 6368c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 6378c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 6388c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650s_name), 6398c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650i_name), 6408c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 6418c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 6428c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 6438c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 6448c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 6458c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 6468c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x0A10, iwl_ax201_cfg_qu_hr, NULL), 6478c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 6488c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 6498c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 6508c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 6518c2ecf20Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x6074, iwl_ax201_cfg_qu_hr, NULL), 6528c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL), 6538c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL), 6548c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x6074, iwl_ax201_cfg_quz_hr, NULL), 6558c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL), 6568c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL), 6578c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL), 6588c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL), 6598c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL), 6608c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL), 6618c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL), 6628c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL), 6638c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL), 6648c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL), 6658c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL), 6668c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL), 6678c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL), 6688c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL), 6698c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL), 6708c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL), 6718c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 6728c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 6738c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 6748c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 6758c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 6768c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 6778c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 6788c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 6798c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 6808c2ecf20Sopenharmony_ci 6818c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 6828c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 6838c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 6848c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 6858c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 6868c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 6878c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 6888c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 6898c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 6908c2ecf20Sopenharmony_ci 6918c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 6928c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 6938c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 6948c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 6958c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 6968c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 6978c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 6988c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 6998c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 7008c2ecf20Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x6074, iwl_ax201_cfg_qu_hr, NULL), 7018c2ecf20Sopenharmony_ci 7028c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 7038c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7048c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 7058c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 7068c2ecf20Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9461_160_name), 7078c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 7088c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7098c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 7108c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 7118c2ecf20Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9461_name), 7128c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 7138c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7148c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 7158c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 7168c2ecf20Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9462_160_name), 7178c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 7188c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7198c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 7208c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 7218c2ecf20Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9462_name), 7228c2ecf20Sopenharmony_ci 7238c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 7248c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7258c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 7268c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 7278c2ecf20Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9560_160_name), 7288c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 7298c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 7308c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 7318c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 7328c2ecf20Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9560_name), 7338c2ecf20Sopenharmony_ci 7348c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7358c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY, 7368c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 7378c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 7388c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9461_160_name), 7398c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7408c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY, 7418c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 7428c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 7438c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9461_name), 7448c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7458c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY, 7468c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 7478c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 7488c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9462_160_name), 7498c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7508c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY, 7518c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 7528c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 7538c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9462_name), 7548c2ecf20Sopenharmony_ci 7558c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7568c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY, 7578c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 7588c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 7598c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9560_160_name), 7608c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7618c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_PNJ, IWL_CFG_ANY, 7628c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 7638c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 7648c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9560_name), 7658c2ecf20Sopenharmony_ci 7668c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7678c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7688c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, 7698c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT_GNSS, 7708c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9270_160_name), 7718c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7728c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7738c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, 7748c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT_GNSS, 7758c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9270_name), 7768c2ecf20Sopenharmony_ci 7778c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x271B, IWL_CFG_ANY, 7788c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7798c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY, 7808c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 7818c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9162_160_name), 7828c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x271B, IWL_CFG_ANY, 7838c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7848c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY, 7858c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 7868c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9162_name), 7878c2ecf20Sopenharmony_ci 7888c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7898c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7908c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, 7918c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 7928c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9260_160_name), 7938c2ecf20Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 7948c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 7958c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, 7968c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 7978c2ecf20Sopenharmony_ci iwl9260_2ac_cfg, iwl9260_name), 7988c2ecf20Sopenharmony_ci 7998c2ecf20Sopenharmony_ci/* Qu with Jf */ 8008c2ecf20Sopenharmony_ci /* Qu B step */ 8018c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8028c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8038c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 8048c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 8058c2ecf20Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9461_160_name), 8068c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8078c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8088c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 8098c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8108c2ecf20Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9461_name), 8118c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8128c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8138c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 8148c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 8158c2ecf20Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9462_160_name), 8168c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8178c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8188c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 8198c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8208c2ecf20Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9462_name), 8218c2ecf20Sopenharmony_ci 8228c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8238c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8248c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 8258c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 8268c2ecf20Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9560_160_name), 8278c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8288c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8298c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 8308c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8318c2ecf20Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9560_name), 8328c2ecf20Sopenharmony_ci 8338c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 8348c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8358c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 8368c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8378c2ecf20Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550s_name), 8388c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 8398c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 8408c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 8418c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8428c2ecf20Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550i_name), 8438c2ecf20Sopenharmony_ci 8448c2ecf20Sopenharmony_ci /* Qu C step */ 8458c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8468c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8478c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 8488c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 8498c2ecf20Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9461_160_name), 8508c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8518c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8528c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 8538c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8548c2ecf20Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9461_name), 8558c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8568c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8578c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 8588c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 8598c2ecf20Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9462_160_name), 8608c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8618c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8628c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 8638c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8648c2ecf20Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9462_name), 8658c2ecf20Sopenharmony_ci 8668c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8678c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8688c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 8698c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 8708c2ecf20Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9560_160_name), 8718c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8728c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8738c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 8748c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8758c2ecf20Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9560_name), 8768c2ecf20Sopenharmony_ci 8778c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 8788c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8798c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 8808c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 8818c2ecf20Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550s_name), 8828c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 8838c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 8848c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 8858c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8868c2ecf20Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550i_name), 8878c2ecf20Sopenharmony_ci 8888c2ecf20Sopenharmony_ci /* QuZ */ 8898c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8908c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 8918c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 8928c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 8938c2ecf20Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9461_160_name), 8948c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 8958c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 8968c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 8978c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 8988c2ecf20Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9461_name), 8998c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9008c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9018c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 9028c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 9038c2ecf20Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9462_160_name), 9048c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9058c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9068c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 9078c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 9088c2ecf20Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9462_name), 9098c2ecf20Sopenharmony_ci 9108c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9118c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9128c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 9138c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 9148c2ecf20Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9560_160_name), 9158c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9168c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9178c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 9188c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 9198c2ecf20Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9560_name), 9208c2ecf20Sopenharmony_ci 9218c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 9228c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9238c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 9248c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 9258c2ecf20Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550s_name), 9268c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 9278c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 9288c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 9298c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 9308c2ecf20Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550i_name), 9318c2ecf20Sopenharmony_ci 9328c2ecf20Sopenharmony_ci /* QnJ */ 9338c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9348c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY, 9358c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 9368c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 9378c2ecf20Sopenharmony_ci iwl9560_qnj_b0_jf_b0_cfg, iwl9461_160_name), 9388c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9398c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY, 9408c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, 9418c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 9428c2ecf20Sopenharmony_ci iwl9560_qnj_b0_jf_b0_cfg, iwl9461_name), 9438c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9448c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY, 9458c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 9468c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 9478c2ecf20Sopenharmony_ci iwl9560_qnj_b0_jf_b0_cfg, iwl9462_160_name), 9488c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9498c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY, 9508c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, 9518c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 9528c2ecf20Sopenharmony_ci iwl9560_qnj_b0_jf_b0_cfg, iwl9462_name), 9538c2ecf20Sopenharmony_ci 9548c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9558c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY, 9568c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 9578c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 9588c2ecf20Sopenharmony_ci iwl9560_qnj_b0_jf_b0_cfg, iwl9560_160_name), 9598c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9608c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY, 9618c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 9628c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 9638c2ecf20Sopenharmony_ci iwl9560_qnj_b0_jf_b0_cfg, iwl9560_name), 9648c2ecf20Sopenharmony_ci 9658c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 9668c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY, 9678c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 9688c2ecf20Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, 9698c2ecf20Sopenharmony_ci iwl9560_qnj_b0_jf_b0_cfg, iwl9560_killer_1550s_name), 9708c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 9718c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QNJ, IWL_CFG_ANY, 9728c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, 9738c2ecf20Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, 9748c2ecf20Sopenharmony_ci iwl9560_qnj_b0_jf_b0_cfg, iwl9560_killer_1550i_name), 9758c2ecf20Sopenharmony_ci 9768c2ecf20Sopenharmony_ci/* Qu with Hr */ 9778c2ecf20Sopenharmony_ci /* Qu B step */ 9788c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9798c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 9808c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, 9818c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, 9828c2ecf20Sopenharmony_ci iwl_qu_b0_hr1_b0, iwl_ax101_name), 9838c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9848c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 9858c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, 9868c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, 9878c2ecf20Sopenharmony_ci iwl_qu_b0_hr_b0, iwl_ax203_name), 9888c2ecf20Sopenharmony_ci 9898c2ecf20Sopenharmony_ci /* Qu C step */ 9908c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9918c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 9928c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, 9938c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, 9948c2ecf20Sopenharmony_ci iwl_qu_c0_hr1_b0, iwl_ax101_name), 9958c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 9968c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 9978c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, 9988c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, 9998c2ecf20Sopenharmony_ci iwl_qu_c0_hr_b0, iwl_ax203_name), 10008c2ecf20Sopenharmony_ci 10018c2ecf20Sopenharmony_ci /* QuZ */ 10028c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 10038c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 10048c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, 10058c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, 10068c2ecf20Sopenharmony_ci iwl_quz_a0_hr1_b0, iwl_ax101_name), 10078c2ecf20Sopenharmony_ci 10088c2ecf20Sopenharmony_ci/* Ma */ 10098c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 10108c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 10118c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, 10128c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, 10138c2ecf20Sopenharmony_ci iwl_cfg_ma_a0_gf_a0, iwl_ax211_name), 10148c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 10158c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 10168c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_MR, IWL_CFG_ANY, 10178c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, 10188c2ecf20Sopenharmony_ci iwl_cfg_ma_a0_mr_a0, iwl_ma_name), 10198c2ecf20Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 10208c2ecf20Sopenharmony_ci IWL_CFG_MAC_TYPE_SNJ, IWL_CFG_ANY, 10218c2ecf20Sopenharmony_ci IWL_CFG_RF_TYPE_MR, IWL_CFG_ANY, 10228c2ecf20Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, 10238c2ecf20Sopenharmony_ci iwl_cfg_snj_a0_mr_a0, iwl_ma_name), 10248c2ecf20Sopenharmony_ci 10258c2ecf20Sopenharmony_ci 10268c2ecf20Sopenharmony_ci#endif /* CONFIG_IWLMVM */ 10278c2ecf20Sopenharmony_ci}; 10288c2ecf20Sopenharmony_ci 10298c2ecf20Sopenharmony_ci/* PCI registers */ 10308c2ecf20Sopenharmony_ci#define PCI_CFG_RETRY_TIMEOUT 0x041 10318c2ecf20Sopenharmony_ci 10328c2ecf20Sopenharmony_cistatic int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 10338c2ecf20Sopenharmony_ci{ 10348c2ecf20Sopenharmony_ci const struct iwl_cfg_trans_params *trans; 10358c2ecf20Sopenharmony_ci const struct iwl_cfg *cfg_7265d __maybe_unused = NULL; 10368c2ecf20Sopenharmony_ci struct iwl_trans *iwl_trans; 10378c2ecf20Sopenharmony_ci struct iwl_trans_pcie *trans_pcie; 10388c2ecf20Sopenharmony_ci unsigned long flags; 10398c2ecf20Sopenharmony_ci int i, ret; 10408c2ecf20Sopenharmony_ci const struct iwl_cfg *cfg; 10418c2ecf20Sopenharmony_ci 10428c2ecf20Sopenharmony_ci trans = (void *)(ent->driver_data & ~TRANS_CFG_MARKER); 10438c2ecf20Sopenharmony_ci 10448c2ecf20Sopenharmony_ci /* 10458c2ecf20Sopenharmony_ci * This is needed for backwards compatibility with the old 10468c2ecf20Sopenharmony_ci * tables, so we don't need to change all the config structs 10478c2ecf20Sopenharmony_ci * at the same time. The cfg is used to compare with the old 10488c2ecf20Sopenharmony_ci * full cfg structs. 10498c2ecf20Sopenharmony_ci */ 10508c2ecf20Sopenharmony_ci cfg = (void *)(ent->driver_data & ~TRANS_CFG_MARKER); 10518c2ecf20Sopenharmony_ci 10528c2ecf20Sopenharmony_ci /* make sure trans is the first element in iwl_cfg */ 10538c2ecf20Sopenharmony_ci BUILD_BUG_ON(offsetof(struct iwl_cfg, trans)); 10548c2ecf20Sopenharmony_ci 10558c2ecf20Sopenharmony_ci iwl_trans = iwl_trans_pcie_alloc(pdev, ent, trans); 10568c2ecf20Sopenharmony_ci if (IS_ERR(iwl_trans)) 10578c2ecf20Sopenharmony_ci return PTR_ERR(iwl_trans); 10588c2ecf20Sopenharmony_ci 10598c2ecf20Sopenharmony_ci trans_pcie = IWL_TRANS_GET_PCIE_TRANS(iwl_trans); 10608c2ecf20Sopenharmony_ci 10618c2ecf20Sopenharmony_ci iwl_trans->hw_rf_id = iwl_read32(iwl_trans, CSR_HW_RF_ID); 10628c2ecf20Sopenharmony_ci 10638c2ecf20Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(iwl_dev_info_table); i++) { 10648c2ecf20Sopenharmony_ci const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i]; 10658c2ecf20Sopenharmony_ci if ((dev_info->device == (u16)IWL_CFG_ANY || 10668c2ecf20Sopenharmony_ci dev_info->device == pdev->device) && 10678c2ecf20Sopenharmony_ci (dev_info->subdevice == (u16)IWL_CFG_ANY || 10688c2ecf20Sopenharmony_ci dev_info->subdevice == pdev->subsystem_device) && 10698c2ecf20Sopenharmony_ci (dev_info->mac_type == (u16)IWL_CFG_ANY || 10708c2ecf20Sopenharmony_ci dev_info->mac_type == 10718c2ecf20Sopenharmony_ci CSR_HW_REV_TYPE(iwl_trans->hw_rev)) && 10728c2ecf20Sopenharmony_ci (dev_info->mac_step == (u8)IWL_CFG_ANY || 10738c2ecf20Sopenharmony_ci dev_info->mac_step == 10748c2ecf20Sopenharmony_ci CSR_HW_REV_STEP(iwl_trans->hw_rev)) && 10758c2ecf20Sopenharmony_ci (dev_info->rf_type == (u16)IWL_CFG_ANY || 10768c2ecf20Sopenharmony_ci dev_info->rf_type == 10778c2ecf20Sopenharmony_ci CSR_HW_RFID_TYPE(iwl_trans->hw_rf_id)) && 10788c2ecf20Sopenharmony_ci (dev_info->rf_id == (u8)IWL_CFG_ANY || 10798c2ecf20Sopenharmony_ci dev_info->rf_id == 10808c2ecf20Sopenharmony_ci IWL_SUBDEVICE_RF_ID(pdev->subsystem_device)) && 10818c2ecf20Sopenharmony_ci (dev_info->no_160 == (u8)IWL_CFG_ANY || 10828c2ecf20Sopenharmony_ci dev_info->no_160 == 10838c2ecf20Sopenharmony_ci IWL_SUBDEVICE_NO_160(pdev->subsystem_device)) && 10848c2ecf20Sopenharmony_ci (dev_info->cores == (u8)IWL_CFG_ANY || 10858c2ecf20Sopenharmony_ci dev_info->cores == 10868c2ecf20Sopenharmony_ci IWL_SUBDEVICE_CORES(pdev->subsystem_device))) { 10878c2ecf20Sopenharmony_ci iwl_trans->cfg = dev_info->cfg; 10888c2ecf20Sopenharmony_ci iwl_trans->name = dev_info->name; 10898c2ecf20Sopenharmony_ci } 10908c2ecf20Sopenharmony_ci } 10918c2ecf20Sopenharmony_ci 10928c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_IWLMVM) 10938c2ecf20Sopenharmony_ci /* 10948c2ecf20Sopenharmony_ci * special-case 7265D, it has the same PCI IDs. 10958c2ecf20Sopenharmony_ci * 10968c2ecf20Sopenharmony_ci * Note that because we already pass the cfg to the transport above, 10978c2ecf20Sopenharmony_ci * all the parameters that the transport uses must, until that is 10988c2ecf20Sopenharmony_ci * changed, be identical to the ones in the 7265D configuration. 10998c2ecf20Sopenharmony_ci */ 11008c2ecf20Sopenharmony_ci if (cfg == &iwl7265_2ac_cfg) 11018c2ecf20Sopenharmony_ci cfg_7265d = &iwl7265d_2ac_cfg; 11028c2ecf20Sopenharmony_ci else if (cfg == &iwl7265_2n_cfg) 11038c2ecf20Sopenharmony_ci cfg_7265d = &iwl7265d_2n_cfg; 11048c2ecf20Sopenharmony_ci else if (cfg == &iwl7265_n_cfg) 11058c2ecf20Sopenharmony_ci cfg_7265d = &iwl7265d_n_cfg; 11068c2ecf20Sopenharmony_ci if (cfg_7265d && 11078c2ecf20Sopenharmony_ci (iwl_trans->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_7265D) 11088c2ecf20Sopenharmony_ci iwl_trans->cfg = cfg_7265d; 11098c2ecf20Sopenharmony_ci 11108c2ecf20Sopenharmony_ci if (cfg == &iwlax210_2ax_cfg_so_hr_a0) { 11118c2ecf20Sopenharmony_ci if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_TY) { 11128c2ecf20Sopenharmony_ci iwl_trans->cfg = &iwlax210_2ax_cfg_ty_gf_a0; 11138c2ecf20Sopenharmony_ci } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) == 11148c2ecf20Sopenharmony_ci CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_JF)) { 11158c2ecf20Sopenharmony_ci iwl_trans->cfg = &iwlax210_2ax_cfg_so_jf_a0; 11168c2ecf20Sopenharmony_ci } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) == 11178c2ecf20Sopenharmony_ci CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_GF)) { 11188c2ecf20Sopenharmony_ci iwl_trans->cfg = &iwlax211_2ax_cfg_so_gf_a0; 11198c2ecf20Sopenharmony_ci } else if (CSR_HW_RF_ID_TYPE_CHIP_ID(iwl_trans->hw_rf_id) == 11208c2ecf20Sopenharmony_ci CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_GF4)) { 11218c2ecf20Sopenharmony_ci iwl_trans->cfg = &iwlax411_2ax_cfg_so_gf4_a0; 11228c2ecf20Sopenharmony_ci } 11238c2ecf20Sopenharmony_ci } 11248c2ecf20Sopenharmony_ci 11258c2ecf20Sopenharmony_ci /* 11268c2ecf20Sopenharmony_ci * This is a hack to switch from Qu B0 to Qu C0. We need to 11278c2ecf20Sopenharmony_ci * do this for all cfgs that use Qu B0, except for those using 11288c2ecf20Sopenharmony_ci * Jf, which have already been moved to the new table. The 11298c2ecf20Sopenharmony_ci * rest must be removed once we convert Qu with Hr as well. 11308c2ecf20Sopenharmony_ci */ 11318c2ecf20Sopenharmony_ci if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QU_C0) { 11328c2ecf20Sopenharmony_ci if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr) 11338c2ecf20Sopenharmony_ci iwl_trans->cfg = &iwl_ax201_cfg_qu_c0_hr_b0; 11348c2ecf20Sopenharmony_ci else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0) 11358c2ecf20Sopenharmony_ci iwl_trans->cfg = &killer1650s_2ax_cfg_qu_c0_hr_b0; 11368c2ecf20Sopenharmony_ci else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0) 11378c2ecf20Sopenharmony_ci iwl_trans->cfg = &killer1650i_2ax_cfg_qu_c0_hr_b0; 11388c2ecf20Sopenharmony_ci } 11398c2ecf20Sopenharmony_ci 11408c2ecf20Sopenharmony_ci /* same thing for QuZ... */ 11418c2ecf20Sopenharmony_ci if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QUZ) { 11428c2ecf20Sopenharmony_ci if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr) 11438c2ecf20Sopenharmony_ci iwl_trans->cfg = &iwl_ax201_cfg_quz_hr; 11448c2ecf20Sopenharmony_ci else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0) 11458c2ecf20Sopenharmony_ci iwl_trans->cfg = &iwl_ax1650s_cfg_quz_hr; 11468c2ecf20Sopenharmony_ci else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0) 11478c2ecf20Sopenharmony_ci iwl_trans->cfg = &iwl_ax1650i_cfg_quz_hr; 11488c2ecf20Sopenharmony_ci } 11498c2ecf20Sopenharmony_ci 11508c2ecf20Sopenharmony_ci#endif 11518c2ecf20Sopenharmony_ci /* 11528c2ecf20Sopenharmony_ci * If we didn't set the cfg yet, the PCI ID table entry should have 11538c2ecf20Sopenharmony_ci * been a full config - if yes, use it, otherwise fail. 11548c2ecf20Sopenharmony_ci */ 11558c2ecf20Sopenharmony_ci if (!iwl_trans->cfg) { 11568c2ecf20Sopenharmony_ci if (ent->driver_data & TRANS_CFG_MARKER) { 11578c2ecf20Sopenharmony_ci pr_err("No config found for PCI dev %04x/%04x, rev=0x%x, rfid=0x%x\n", 11588c2ecf20Sopenharmony_ci pdev->device, pdev->subsystem_device, 11598c2ecf20Sopenharmony_ci iwl_trans->hw_rev, iwl_trans->hw_rf_id); 11608c2ecf20Sopenharmony_ci ret = -EINVAL; 11618c2ecf20Sopenharmony_ci goto out_free_trans; 11628c2ecf20Sopenharmony_ci } 11638c2ecf20Sopenharmony_ci iwl_trans->cfg = cfg; 11648c2ecf20Sopenharmony_ci } 11658c2ecf20Sopenharmony_ci 11668c2ecf20Sopenharmony_ci /* if we don't have a name yet, copy name from the old cfg */ 11678c2ecf20Sopenharmony_ci if (!iwl_trans->name) 11688c2ecf20Sopenharmony_ci iwl_trans->name = iwl_trans->cfg->name; 11698c2ecf20Sopenharmony_ci 11708c2ecf20Sopenharmony_ci if (iwl_trans->trans_cfg->mq_rx_supported) { 11718c2ecf20Sopenharmony_ci if (WARN_ON(!iwl_trans->cfg->num_rbds)) { 11728c2ecf20Sopenharmony_ci ret = -EINVAL; 11738c2ecf20Sopenharmony_ci goto out_free_trans; 11748c2ecf20Sopenharmony_ci } 11758c2ecf20Sopenharmony_ci trans_pcie->num_rx_bufs = iwl_trans->cfg->num_rbds; 11768c2ecf20Sopenharmony_ci } else { 11778c2ecf20Sopenharmony_ci trans_pcie->num_rx_bufs = RX_QUEUE_SIZE; 11788c2ecf20Sopenharmony_ci } 11798c2ecf20Sopenharmony_ci 11808c2ecf20Sopenharmony_ci if (iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_8000 && 11818c2ecf20Sopenharmony_ci iwl_trans_grab_nic_access(iwl_trans, &flags)) { 11828c2ecf20Sopenharmony_ci u32 hw_step; 11838c2ecf20Sopenharmony_ci 11848c2ecf20Sopenharmony_ci hw_step = iwl_read_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG); 11858c2ecf20Sopenharmony_ci hw_step |= ENABLE_WFPM; 11868c2ecf20Sopenharmony_ci iwl_write_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG, hw_step); 11878c2ecf20Sopenharmony_ci hw_step = iwl_read_prph_no_grab(iwl_trans, CNVI_AUX_MISC_CHIP); 11888c2ecf20Sopenharmony_ci hw_step = (hw_step >> HW_STEP_LOCATION_BITS) & 0xF; 11898c2ecf20Sopenharmony_ci if (hw_step == 0x3) 11908c2ecf20Sopenharmony_ci iwl_trans->hw_rev = (iwl_trans->hw_rev & 0xFFFFFFF3) | 11918c2ecf20Sopenharmony_ci (SILICON_C_STEP << 2); 11928c2ecf20Sopenharmony_ci iwl_trans_release_nic_access(iwl_trans, &flags); 11938c2ecf20Sopenharmony_ci } 11948c2ecf20Sopenharmony_ci 11958c2ecf20Sopenharmony_ci pci_set_drvdata(pdev, iwl_trans); 11968c2ecf20Sopenharmony_ci iwl_trans->drv = iwl_drv_start(iwl_trans); 11978c2ecf20Sopenharmony_ci 11988c2ecf20Sopenharmony_ci if (IS_ERR(iwl_trans->drv)) { 11998c2ecf20Sopenharmony_ci ret = PTR_ERR(iwl_trans->drv); 12008c2ecf20Sopenharmony_ci goto out_free_trans; 12018c2ecf20Sopenharmony_ci } 12028c2ecf20Sopenharmony_ci 12038c2ecf20Sopenharmony_ci /* register transport layer debugfs here */ 12048c2ecf20Sopenharmony_ci iwl_trans_pcie_dbgfs_register(iwl_trans); 12058c2ecf20Sopenharmony_ci 12068c2ecf20Sopenharmony_ci return 0; 12078c2ecf20Sopenharmony_ci 12088c2ecf20Sopenharmony_ciout_free_trans: 12098c2ecf20Sopenharmony_ci iwl_trans_pcie_free(iwl_trans); 12108c2ecf20Sopenharmony_ci return ret; 12118c2ecf20Sopenharmony_ci} 12128c2ecf20Sopenharmony_ci 12138c2ecf20Sopenharmony_cistatic void iwl_pci_remove(struct pci_dev *pdev) 12148c2ecf20Sopenharmony_ci{ 12158c2ecf20Sopenharmony_ci struct iwl_trans *trans = pci_get_drvdata(pdev); 12168c2ecf20Sopenharmony_ci 12178c2ecf20Sopenharmony_ci if (!trans) 12188c2ecf20Sopenharmony_ci return; 12198c2ecf20Sopenharmony_ci 12208c2ecf20Sopenharmony_ci iwl_drv_stop(trans->drv); 12218c2ecf20Sopenharmony_ci 12228c2ecf20Sopenharmony_ci iwl_trans_pcie_free(trans); 12238c2ecf20Sopenharmony_ci} 12248c2ecf20Sopenharmony_ci 12258c2ecf20Sopenharmony_ci#ifdef CONFIG_PM_SLEEP 12268c2ecf20Sopenharmony_ci 12278c2ecf20Sopenharmony_cistatic int iwl_pci_suspend(struct device *device) 12288c2ecf20Sopenharmony_ci{ 12298c2ecf20Sopenharmony_ci /* Before you put code here, think about WoWLAN. You cannot check here 12308c2ecf20Sopenharmony_ci * whether WoWLAN is enabled or not, and your code will run even if 12318c2ecf20Sopenharmony_ci * WoWLAN is enabled - don't kill the NIC, someone may need it in Sx. 12328c2ecf20Sopenharmony_ci */ 12338c2ecf20Sopenharmony_ci 12348c2ecf20Sopenharmony_ci return 0; 12358c2ecf20Sopenharmony_ci} 12368c2ecf20Sopenharmony_ci 12378c2ecf20Sopenharmony_cistatic int iwl_pci_resume(struct device *device) 12388c2ecf20Sopenharmony_ci{ 12398c2ecf20Sopenharmony_ci struct pci_dev *pdev = to_pci_dev(device); 12408c2ecf20Sopenharmony_ci struct iwl_trans *trans = pci_get_drvdata(pdev); 12418c2ecf20Sopenharmony_ci struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); 12428c2ecf20Sopenharmony_ci 12438c2ecf20Sopenharmony_ci /* Before you put code here, think about WoWLAN. You cannot check here 12448c2ecf20Sopenharmony_ci * whether WoWLAN is enabled or not, and your code will run even if 12458c2ecf20Sopenharmony_ci * WoWLAN is enabled - the NIC may be alive. 12468c2ecf20Sopenharmony_ci */ 12478c2ecf20Sopenharmony_ci 12488c2ecf20Sopenharmony_ci /* 12498c2ecf20Sopenharmony_ci * We disable the RETRY_TIMEOUT register (0x41) to keep 12508c2ecf20Sopenharmony_ci * PCI Tx retries from interfering with C3 CPU state. 12518c2ecf20Sopenharmony_ci */ 12528c2ecf20Sopenharmony_ci pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00); 12538c2ecf20Sopenharmony_ci 12548c2ecf20Sopenharmony_ci if (!trans->op_mode) 12558c2ecf20Sopenharmony_ci return 0; 12568c2ecf20Sopenharmony_ci 12578c2ecf20Sopenharmony_ci /* In WOWLAN, let iwl_trans_pcie_d3_resume do the rest of the work */ 12588c2ecf20Sopenharmony_ci if (test_bit(STATUS_DEVICE_ENABLED, &trans->status)) 12598c2ecf20Sopenharmony_ci return 0; 12608c2ecf20Sopenharmony_ci 12618c2ecf20Sopenharmony_ci /* reconfigure the MSI-X mapping to get the correct IRQ for rfkill */ 12628c2ecf20Sopenharmony_ci iwl_pcie_conf_msix_hw(trans_pcie); 12638c2ecf20Sopenharmony_ci 12648c2ecf20Sopenharmony_ci /* 12658c2ecf20Sopenharmony_ci * Enable rfkill interrupt (in order to keep track of the rfkill 12668c2ecf20Sopenharmony_ci * status). Must be locked to avoid processing a possible rfkill 12678c2ecf20Sopenharmony_ci * interrupt while in iwl_pcie_check_hw_rf_kill(). 12688c2ecf20Sopenharmony_ci */ 12698c2ecf20Sopenharmony_ci mutex_lock(&trans_pcie->mutex); 12708c2ecf20Sopenharmony_ci iwl_enable_rfkill_int(trans); 12718c2ecf20Sopenharmony_ci iwl_pcie_check_hw_rf_kill(trans); 12728c2ecf20Sopenharmony_ci mutex_unlock(&trans_pcie->mutex); 12738c2ecf20Sopenharmony_ci 12748c2ecf20Sopenharmony_ci return 0; 12758c2ecf20Sopenharmony_ci} 12768c2ecf20Sopenharmony_ci 12778c2ecf20Sopenharmony_cistatic const struct dev_pm_ops iwl_dev_pm_ops = { 12788c2ecf20Sopenharmony_ci SET_SYSTEM_SLEEP_PM_OPS(iwl_pci_suspend, 12798c2ecf20Sopenharmony_ci iwl_pci_resume) 12808c2ecf20Sopenharmony_ci}; 12818c2ecf20Sopenharmony_ci 12828c2ecf20Sopenharmony_ci#define IWL_PM_OPS (&iwl_dev_pm_ops) 12838c2ecf20Sopenharmony_ci 12848c2ecf20Sopenharmony_ci#else /* CONFIG_PM_SLEEP */ 12858c2ecf20Sopenharmony_ci 12868c2ecf20Sopenharmony_ci#define IWL_PM_OPS NULL 12878c2ecf20Sopenharmony_ci 12888c2ecf20Sopenharmony_ci#endif /* CONFIG_PM_SLEEP */ 12898c2ecf20Sopenharmony_ci 12908c2ecf20Sopenharmony_cistatic struct pci_driver iwl_pci_driver = { 12918c2ecf20Sopenharmony_ci .name = DRV_NAME, 12928c2ecf20Sopenharmony_ci .id_table = iwl_hw_card_ids, 12938c2ecf20Sopenharmony_ci .probe = iwl_pci_probe, 12948c2ecf20Sopenharmony_ci .remove = iwl_pci_remove, 12958c2ecf20Sopenharmony_ci .driver.pm = IWL_PM_OPS, 12968c2ecf20Sopenharmony_ci}; 12978c2ecf20Sopenharmony_ci 12988c2ecf20Sopenharmony_ciint __must_check iwl_pci_register_driver(void) 12998c2ecf20Sopenharmony_ci{ 13008c2ecf20Sopenharmony_ci int ret; 13018c2ecf20Sopenharmony_ci ret = pci_register_driver(&iwl_pci_driver); 13028c2ecf20Sopenharmony_ci if (ret) 13038c2ecf20Sopenharmony_ci pr_err("Unable to initialize PCI module\n"); 13048c2ecf20Sopenharmony_ci 13058c2ecf20Sopenharmony_ci return ret; 13068c2ecf20Sopenharmony_ci} 13078c2ecf20Sopenharmony_ci 13088c2ecf20Sopenharmony_civoid iwl_pci_unregister_driver(void) 13098c2ecf20Sopenharmony_ci{ 13108c2ecf20Sopenharmony_ci pci_unregister_driver(&iwl_pci_driver); 13118c2ecf20Sopenharmony_ci} 1312