162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2005-2014, 2018-2021 Intel Corporation 462306a36Sopenharmony_ci * Copyright (C) 2013-2015 Intel Mobile Communications GmbH 562306a36Sopenharmony_ci * Copyright (C) 2016-2017 Intel Deutschland GmbH 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/module.h> 1062306a36Sopenharmony_ci#include <linux/pci.h> 1162306a36Sopenharmony_ci#include <linux/acpi.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include "fw/acpi.h" 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#include "iwl-trans.h" 1662306a36Sopenharmony_ci#include "iwl-drv.h" 1762306a36Sopenharmony_ci#include "iwl-prph.h" 1862306a36Sopenharmony_ci#include "internal.h" 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define TRANS_CFG_MARKER BIT(0) 2162306a36Sopenharmony_ci#define _IS_A(cfg, _struct) __builtin_types_compatible_p(typeof(cfg), \ 2262306a36Sopenharmony_ci struct _struct) 2362306a36Sopenharmony_ciextern int _invalid_type; 2462306a36Sopenharmony_ci#define _TRANS_CFG_MARKER(cfg) \ 2562306a36Sopenharmony_ci (__builtin_choose_expr(_IS_A(cfg, iwl_cfg_trans_params), \ 2662306a36Sopenharmony_ci TRANS_CFG_MARKER, \ 2762306a36Sopenharmony_ci __builtin_choose_expr(_IS_A(cfg, iwl_cfg), 0, _invalid_type))) 2862306a36Sopenharmony_ci#define _ASSIGN_CFG(cfg) (_TRANS_CFG_MARKER(cfg) + (kernel_ulong_t)&(cfg)) 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci#define IWL_PCI_DEVICE(dev, subdev, cfg) \ 3162306a36Sopenharmony_ci .vendor = PCI_VENDOR_ID_INTEL, .device = (dev), \ 3262306a36Sopenharmony_ci .subvendor = PCI_ANY_ID, .subdevice = (subdev), \ 3362306a36Sopenharmony_ci .driver_data = _ASSIGN_CFG(cfg) 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci/* Hardware specific file defines the PCI IDs table for that hardware module */ 3662306a36Sopenharmony_cistatic const struct pci_device_id iwl_hw_card_ids[] = { 3762306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_IWLDVM) 3862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1201, iwl5100_agn_cfg)}, /* Mini Card */ 3962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1301, iwl5100_agn_cfg)}, /* Half Mini Card */ 4062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1204, iwl5100_agn_cfg)}, /* Mini Card */ 4162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1304, iwl5100_agn_cfg)}, /* Half Mini Card */ 4262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1205, iwl5100_bgn_cfg)}, /* Mini Card */ 4362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1305, iwl5100_bgn_cfg)}, /* Half Mini Card */ 4462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1206, iwl5100_abg_cfg)}, /* Mini Card */ 4562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1306, iwl5100_abg_cfg)}, /* Half Mini Card */ 4662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1221, iwl5100_agn_cfg)}, /* Mini Card */ 4762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1321, iwl5100_agn_cfg)}, /* Half Mini Card */ 4862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1224, iwl5100_agn_cfg)}, /* Mini Card */ 4962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1324, iwl5100_agn_cfg)}, /* Half Mini Card */ 5062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1225, iwl5100_bgn_cfg)}, /* Mini Card */ 5162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1325, iwl5100_bgn_cfg)}, /* Half Mini Card */ 5262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1226, iwl5100_abg_cfg)}, /* Mini Card */ 5362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4232, 0x1326, iwl5100_abg_cfg)}, /* Half Mini Card */ 5462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1211, iwl5100_agn_cfg)}, /* Mini Card */ 5562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1311, iwl5100_agn_cfg)}, /* Half Mini Card */ 5662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1214, iwl5100_agn_cfg)}, /* Mini Card */ 5762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1314, iwl5100_agn_cfg)}, /* Half Mini Card */ 5862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1215, iwl5100_bgn_cfg)}, /* Mini Card */ 5962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1315, iwl5100_bgn_cfg)}, /* Half Mini Card */ 6062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1216, iwl5100_abg_cfg)}, /* Mini Card */ 6162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4237, 0x1316, iwl5100_abg_cfg)}, /* Half Mini Card */ 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci/* 5300 Series WiFi */ 6462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1021, iwl5300_agn_cfg)}, /* Mini Card */ 6562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1121, iwl5300_agn_cfg)}, /* Half Mini Card */ 6662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1024, iwl5300_agn_cfg)}, /* Mini Card */ 6762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1124, iwl5300_agn_cfg)}, /* Half Mini Card */ 6862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1001, iwl5300_agn_cfg)}, /* Mini Card */ 6962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1101, iwl5300_agn_cfg)}, /* Half Mini Card */ 7062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1004, iwl5300_agn_cfg)}, /* Mini Card */ 7162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4235, 0x1104, iwl5300_agn_cfg)}, /* Half Mini Card */ 7262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4236, 0x1011, iwl5300_agn_cfg)}, /* Mini Card */ 7362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4236, 0x1111, iwl5300_agn_cfg)}, /* Half Mini Card */ 7462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4236, 0x1014, iwl5300_agn_cfg)}, /* Mini Card */ 7562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4236, 0x1114, iwl5300_agn_cfg)}, /* Half Mini Card */ 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci/* 5350 Series WiFi/WiMax */ 7862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423A, 0x1001, iwl5350_agn_cfg)}, /* Mini Card */ 7962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423A, 0x1021, iwl5350_agn_cfg)}, /* Mini Card */ 8062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423B, 0x1011, iwl5350_agn_cfg)}, /* Mini Card */ 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci/* 5150 Series Wifi/WiMax */ 8362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1201, iwl5150_agn_cfg)}, /* Mini Card */ 8462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1301, iwl5150_agn_cfg)}, /* Half Mini Card */ 8562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1206, iwl5150_abg_cfg)}, /* Mini Card */ 8662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1306, iwl5150_abg_cfg)}, /* Half Mini Card */ 8762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1221, iwl5150_agn_cfg)}, /* Mini Card */ 8862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1321, iwl5150_agn_cfg)}, /* Half Mini Card */ 8962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423C, 0x1326, iwl5150_abg_cfg)}, /* Half Mini Card */ 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423D, 0x1211, iwl5150_agn_cfg)}, /* Mini Card */ 9262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423D, 0x1311, iwl5150_agn_cfg)}, /* Half Mini Card */ 9362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423D, 0x1216, iwl5150_abg_cfg)}, /* Mini Card */ 9462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x423D, 0x1316, iwl5150_abg_cfg)}, /* Half Mini Card */ 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci/* 6x00 Series */ 9762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422B, 0x1101, iwl6000_3agn_cfg)}, 9862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422B, 0x1108, iwl6000_3agn_cfg)}, 9962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422B, 0x1121, iwl6000_3agn_cfg)}, 10062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422B, 0x1128, iwl6000_3agn_cfg)}, 10162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1301, iwl6000i_2agn_cfg)}, 10262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1306, iwl6000i_2abg_cfg)}, 10362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1307, iwl6000i_2bg_cfg)}, 10462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1321, iwl6000i_2agn_cfg)}, 10562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x422C, 0x1326, iwl6000i_2abg_cfg)}, 10662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4238, 0x1111, iwl6000_3agn_cfg)}, 10762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4238, 0x1118, iwl6000_3agn_cfg)}, 10862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4239, 0x1311, iwl6000i_2agn_cfg)}, 10962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_2abg_cfg)}, 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci/* 6x05 Series */ 11262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6005_2agn_cfg)}, 11362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6005_2abg_cfg)}, 11462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6005_2bg_cfg)}, 11562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1308, iwl6005_2agn_cfg)}, 11662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6005_2agn_cfg)}, 11762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6005_2abg_cfg)}, 11862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1328, iwl6005_2agn_cfg)}, 11962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6005_2agn_cfg)}, 12062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0x1318, iwl6005_2agn_cfg)}, 12162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6005_2abg_cfg)}, 12262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0xC020, iwl6005_2agn_sff_cfg)}, 12362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0xC220, iwl6005_2agn_sff_cfg)}, 12462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0085, 0xC228, iwl6005_2agn_sff_cfg)}, 12562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x4820, iwl6005_2agn_d_cfg)}, 12662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1304, iwl6005_2agn_mow1_cfg)},/* low 5GHz active */ 12762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0082, 0x1305, iwl6005_2agn_mow2_cfg)},/* high 5GHz active */ 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci/* 6x30 Series */ 13062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x008A, 0x5305, iwl1030_bgn_cfg)}, 13162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x008A, 0x5307, iwl1030_bg_cfg)}, 13262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x008A, 0x5325, iwl1030_bgn_cfg)}, 13362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x008A, 0x5327, iwl1030_bg_cfg)}, 13462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x008B, 0x5315, iwl1030_bgn_cfg)}, 13562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x008B, 0x5317, iwl1030_bg_cfg)}, 13662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6030_2agn_cfg)}, 13762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6030_2bgn_cfg)}, 13862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6030_2abg_cfg)}, 13962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6030_2agn_cfg)}, 14062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6030_2bgn_cfg)}, 14162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6030_2abg_cfg)}, 14262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6030_2bg_cfg)}, 14362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6030_2agn_cfg)}, 14462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6030_2bgn_cfg)}, 14562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6030_2abg_cfg)}, 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci/* 6x50 WiFi/WiMax Series */ 14862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)}, 14962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0087, 0x1306, iwl6050_2abg_cfg)}, 15062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0087, 0x1321, iwl6050_2agn_cfg)}, 15162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0087, 0x1326, iwl6050_2abg_cfg)}, 15262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_2agn_cfg)}, 15362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)}, 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci/* 6150 WiFi/WiMax Series */ 15662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6150_bgn_cfg)}, 15762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0885, 0x1307, iwl6150_bg_cfg)}, 15862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6150_bgn_cfg)}, 15962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0885, 0x1327, iwl6150_bg_cfg)}, 16062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6150_bgn_cfg)}, 16162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0886, 0x1317, iwl6150_bg_cfg)}, 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci/* 1000 Series WiFi */ 16462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)}, 16562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_bgn_cfg)}, 16662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1225, iwl1000_bgn_cfg)}, 16762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1325, iwl1000_bgn_cfg)}, 16862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0084, 0x1215, iwl1000_bgn_cfg)}, 16962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0084, 0x1315, iwl1000_bgn_cfg)}, 17062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1206, iwl1000_bg_cfg)}, 17162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1306, iwl1000_bg_cfg)}, 17262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1226, iwl1000_bg_cfg)}, 17362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0083, 0x1326, iwl1000_bg_cfg)}, 17462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0084, 0x1216, iwl1000_bg_cfg)}, 17562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0084, 0x1316, iwl1000_bg_cfg)}, 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci/* 100 Series WiFi */ 17862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08AE, 0x1005, iwl100_bgn_cfg)}, 17962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08AE, 0x1007, iwl100_bg_cfg)}, 18062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08AF, 0x1015, iwl100_bgn_cfg)}, 18162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08AF, 0x1017, iwl100_bg_cfg)}, 18262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08AE, 0x1025, iwl100_bgn_cfg)}, 18362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08AE, 0x1027, iwl100_bg_cfg)}, 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci/* 130 Series WiFi */ 18662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0896, 0x5005, iwl130_bgn_cfg)}, 18762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0896, 0x5007, iwl130_bg_cfg)}, 18862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0897, 0x5015, iwl130_bgn_cfg)}, 18962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0897, 0x5017, iwl130_bg_cfg)}, 19062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0896, 0x5025, iwl130_bgn_cfg)}, 19162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0896, 0x5027, iwl130_bg_cfg)}, 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ci/* 2x00 Series */ 19462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0890, 0x4022, iwl2000_2bgn_cfg)}, 19562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0891, 0x4222, iwl2000_2bgn_cfg)}, 19662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0890, 0x4422, iwl2000_2bgn_cfg)}, 19762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0890, 0x4822, iwl2000_2bgn_d_cfg)}, 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci/* 2x30 Series */ 20062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0887, 0x4062, iwl2030_2bgn_cfg)}, 20162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0888, 0x4262, iwl2030_2bgn_cfg)}, 20262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0887, 0x4462, iwl2030_2bgn_cfg)}, 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci/* 6x35 Series */ 20562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x4060, iwl6035_2agn_cfg)}, 20662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x406A, iwl6035_2agn_sff_cfg)}, 20762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x088F, 0x4260, iwl6035_2agn_cfg)}, 20862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x088F, 0x426A, iwl6035_2agn_sff_cfg)}, 20962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x4460, iwl6035_2agn_cfg)}, 21062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x446A, iwl6035_2agn_sff_cfg)}, 21162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)}, 21262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)}, 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ci/* 105 Series */ 21562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)}, 21662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0895, 0x0222, iwl105_bgn_cfg)}, 21762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0894, 0x0422, iwl105_bgn_cfg)}, 21862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0894, 0x0822, iwl105_bgn_d_cfg)}, 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci/* 135 Series */ 22162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0892, 0x0062, iwl135_bgn_cfg)}, 22262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0893, 0x0262, iwl135_bgn_cfg)}, 22362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x0892, 0x0462, iwl135_bgn_cfg)}, 22462306a36Sopenharmony_ci#endif /* CONFIG_IWLDVM */ 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_IWLMVM) 22762306a36Sopenharmony_ci/* 7260 Series */ 22862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)}, 22962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4072, iwl7260_2ac_cfg)}, 23062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4170, iwl7260_2ac_cfg)}, 23162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4C60, iwl7260_2ac_cfg)}, 23262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4C70, iwl7260_2ac_cfg)}, 23362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4060, iwl7260_2n_cfg)}, 23462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x406A, iwl7260_2n_cfg)}, 23562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4160, iwl7260_2n_cfg)}, 23662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4062, iwl7260_n_cfg)}, 23762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4162, iwl7260_n_cfg)}, 23862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4270, iwl7260_2ac_cfg)}, 23962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4272, iwl7260_2ac_cfg)}, 24062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4260, iwl7260_2n_cfg)}, 24162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x426A, iwl7260_2n_cfg)}, 24262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4262, iwl7260_n_cfg)}, 24362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4470, iwl7260_2ac_cfg)}, 24462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4472, iwl7260_2ac_cfg)}, 24562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4460, iwl7260_2n_cfg)}, 24662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x446A, iwl7260_2n_cfg)}, 24762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4462, iwl7260_n_cfg)}, 24862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4870, iwl7260_2ac_cfg)}, 24962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x486E, iwl7260_2ac_cfg)}, 25062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4A70, iwl7260_2ac_cfg_high_temp)}, 25162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4A6E, iwl7260_2ac_cfg_high_temp)}, 25262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4A6C, iwl7260_2ac_cfg_high_temp)}, 25362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4570, iwl7260_2ac_cfg)}, 25462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4560, iwl7260_2n_cfg)}, 25562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4370, iwl7260_2ac_cfg)}, 25662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4360, iwl7260_2n_cfg)}, 25762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x5070, iwl7260_2ac_cfg)}, 25862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x5072, iwl7260_2ac_cfg)}, 25962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x5170, iwl7260_2ac_cfg)}, 26062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x5770, iwl7260_2ac_cfg)}, 26162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4020, iwl7260_2n_cfg)}, 26262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x402A, iwl7260_2n_cfg)}, 26362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0x4220, iwl7260_2n_cfg)}, 26462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0x4420, iwl7260_2n_cfg)}, 26562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)}, 26662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC072, iwl7260_2ac_cfg)}, 26762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC170, iwl7260_2ac_cfg)}, 26862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC060, iwl7260_2n_cfg)}, 26962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC06A, iwl7260_2n_cfg)}, 27062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC160, iwl7260_2n_cfg)}, 27162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC062, iwl7260_n_cfg)}, 27262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC162, iwl7260_n_cfg)}, 27362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC770, iwl7260_2ac_cfg)}, 27462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC760, iwl7260_2n_cfg)}, 27562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC270, iwl7260_2ac_cfg)}, 27662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xCC70, iwl7260_2ac_cfg)}, 27762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xCC60, iwl7260_2ac_cfg)}, 27862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC272, iwl7260_2ac_cfg)}, 27962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC260, iwl7260_2n_cfg)}, 28062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC26A, iwl7260_n_cfg)}, 28162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC262, iwl7260_n_cfg)}, 28262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC470, iwl7260_2ac_cfg)}, 28362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC472, iwl7260_2ac_cfg)}, 28462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC460, iwl7260_2n_cfg)}, 28562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC462, iwl7260_n_cfg)}, 28662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC570, iwl7260_2ac_cfg)}, 28762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC560, iwl7260_2n_cfg)}, 28862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC370, iwl7260_2ac_cfg)}, 28962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC360, iwl7260_2n_cfg)}, 29062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC020, iwl7260_2n_cfg)}, 29162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC02A, iwl7260_2n_cfg)}, 29262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B2, 0xC220, iwl7260_2n_cfg)}, 29362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B1, 0xC420, iwl7260_2n_cfg)}, 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_ci/* 3160 Series */ 29662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_2ac_cfg)}, 29762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0072, iwl3160_2ac_cfg)}, 29862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0170, iwl3160_2ac_cfg)}, 29962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0172, iwl3160_2ac_cfg)}, 30062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0060, iwl3160_2n_cfg)}, 30162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0062, iwl3160_n_cfg)}, 30262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x0270, iwl3160_2ac_cfg)}, 30362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x0272, iwl3160_2ac_cfg)}, 30462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0470, iwl3160_2ac_cfg)}, 30562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x0472, iwl3160_2ac_cfg)}, 30662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x0370, iwl3160_2ac_cfg)}, 30762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_2ac_cfg)}, 30862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8072, iwl3160_2ac_cfg)}, 30962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8170, iwl3160_2ac_cfg)}, 31062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8172, iwl3160_2ac_cfg)}, 31162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8060, iwl3160_2n_cfg)}, 31262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8062, iwl3160_n_cfg)}, 31362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x8270, iwl3160_2ac_cfg)}, 31462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x8370, iwl3160_2ac_cfg)}, 31562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B4, 0x8272, iwl3160_2ac_cfg)}, 31662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8470, iwl3160_2ac_cfg)}, 31762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x8570, iwl3160_2ac_cfg)}, 31862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x1070, iwl3160_2ac_cfg)}, 31962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x08B3, 0x1170, iwl3160_2ac_cfg)}, 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci/* 3165 Series */ 32262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4010, iwl3165_2ac_cfg)}, 32362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4012, iwl3165_2ac_cfg)}, 32462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3166, 0x4212, iwl3165_2ac_cfg)}, 32562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4410, iwl3165_2ac_cfg)}, 32662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4510, iwl3165_2ac_cfg)}, 32762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x4110, iwl3165_2ac_cfg)}, 32862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3166, 0x4310, iwl3165_2ac_cfg)}, 32962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3166, 0x4210, iwl3165_2ac_cfg)}, 33062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x8010, iwl3165_2ac_cfg)}, 33162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3165, 0x8110, iwl3165_2ac_cfg)}, 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_ci/* 3168 Series */ 33462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x2010, iwl3168_2ac_cfg)}, 33562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x2110, iwl3168_2ac_cfg)}, 33662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x2050, iwl3168_2ac_cfg)}, 33762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x2150, iwl3168_2ac_cfg)}, 33862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FB, 0x0000, iwl3168_2ac_cfg)}, 33962306a36Sopenharmony_ci 34062306a36Sopenharmony_ci/* 7265 Series */ 34162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7265_2ac_cfg)}, 34262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5110, iwl7265_2ac_cfg)}, 34362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5100, iwl7265_2ac_cfg)}, 34462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7265_2ac_cfg)}, 34562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5302, iwl7265_n_cfg)}, 34662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5210, iwl7265_2ac_cfg)}, 34762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5C10, iwl7265_2ac_cfg)}, 34862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5012, iwl7265_2ac_cfg)}, 34962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7265_2ac_cfg)}, 35062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7265_2ac_cfg)}, 35162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5510, iwl7265_2ac_cfg)}, 35262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5400, iwl7265_2ac_cfg)}, 35362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x1010, iwl7265_2ac_cfg)}, 35462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5000, iwl7265_2n_cfg)}, 35562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x500A, iwl7265_2n_cfg)}, 35662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5200, iwl7265_2n_cfg)}, 35762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5002, iwl7265_n_cfg)}, 35862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5102, iwl7265_n_cfg)}, 35962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5202, iwl7265_n_cfg)}, 36062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9010, iwl7265_2ac_cfg)}, 36162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9012, iwl7265_2ac_cfg)}, 36262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x900A, iwl7265_2ac_cfg)}, 36362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7265_2ac_cfg)}, 36462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9112, iwl7265_2ac_cfg)}, 36562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x9210, iwl7265_2ac_cfg)}, 36662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)}, 36762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9510, iwl7265_2ac_cfg)}, 36862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x9310, iwl7265_2ac_cfg)}, 36962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9410, iwl7265_2ac_cfg)}, 37062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5020, iwl7265_2n_cfg)}, 37162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x502A, iwl7265_2n_cfg)}, 37262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5420, iwl7265_2n_cfg)}, 37362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5090, iwl7265_2ac_cfg)}, 37462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5190, iwl7265_2ac_cfg)}, 37562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5590, iwl7265_2ac_cfg)}, 37662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5290, iwl7265_2ac_cfg)}, 37762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5490, iwl7265_2ac_cfg)}, 37862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7265_2ac_cfg)}, 37962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)}, 38062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095B, 0x520A, iwl7265_2ac_cfg)}, 38162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9000, iwl7265_2ac_cfg)}, 38262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9400, iwl7265_2ac_cfg)}, 38362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x095A, 0x9E10, iwl7265_2ac_cfg)}, 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci/* 8000 Series */ 38662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)}, 38762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)}, 38862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8260_2ac_cfg)}, 38962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8260_2ac_cfg)}, 39062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8260_2ac_cfg)}, 39162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8260_2ac_cfg)}, 39262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1132, iwl8260_2ac_cfg)}, 39362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0110, iwl8260_2ac_cfg)}, 39462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x01F0, iwl8260_2ac_cfg)}, 39562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0012, iwl8260_2ac_cfg)}, 39662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1012, iwl8260_2ac_cfg)}, 39762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1110, iwl8260_2ac_cfg)}, 39862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0050, iwl8260_2ac_cfg)}, 39962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0250, iwl8260_2ac_cfg)}, 40062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1050, iwl8260_2ac_cfg)}, 40162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0150, iwl8260_2ac_cfg)}, 40262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x1150, iwl8260_2ac_cfg)}, 40362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0x0030, iwl8260_2ac_cfg)}, 40462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8260_2ac_cfg)}, 40562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8260_2ac_cfg)}, 40662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8260_2ac_cfg)}, 40762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8260_2ac_cfg)}, 40862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)}, 40962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)}, 41062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xD0B0, iwl8260_2ac_cfg)}, 41162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0xB0B0, iwl8260_2ac_cfg)}, 41262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)}, 41362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8260_2ac_cfg)}, 41462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8260_2ac_cfg)}, 41562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8260_2ac_cfg)}, 41662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8260_2ac_cfg)}, 41762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8260_2ac_cfg)}, 41862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8260_2ac_cfg)}, 41962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8260_2ac_cfg)}, 42062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8260_2ac_cfg)}, 42162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8260_2ac_cfg)}, 42262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8260_2ac_cfg)}, 42362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9132, iwl8260_2ac_cfg)}, 42462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8050, iwl8260_2ac_cfg)}, 42562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x8150, iwl8260_2ac_cfg)}, 42662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9050, iwl8260_2ac_cfg)}, 42762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x9150, iwl8260_2ac_cfg)}, 42862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0004, iwl8260_2n_cfg)}, 42962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0044, iwl8260_2n_cfg)}, 43062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F5, 0x0010, iwl4165_2ac_cfg)}, 43162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F6, 0x0030, iwl4165_2ac_cfg)}, 43262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0810, iwl8260_2ac_cfg)}, 43362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0910, iwl8260_2ac_cfg)}, 43462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0850, iwl8260_2ac_cfg)}, 43562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8260_2ac_cfg)}, 43662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)}, 43762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8265_2ac_cfg)}, 43862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24F3, 0x4010, iwl8260_2ac_cfg)}, 43962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)}, 44062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)}, 44162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)}, 44262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1130, iwl8265_2ac_cfg)}, 44362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0130, iwl8265_2ac_cfg)}, 44462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8265_2ac_cfg)}, 44562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x10D0, iwl8265_2ac_cfg)}, 44662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8265_2ac_cfg)}, 44762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8265_2ac_cfg)}, 44862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x9010, iwl8265_2ac_cfg)}, 44962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x8110, iwl8265_2ac_cfg)}, 45062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x8050, iwl8265_2ac_cfg)}, 45162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x8010, iwl8265_2ac_cfg)}, 45262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8265_2ac_cfg)}, 45362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8265_2ac_cfg)}, 45462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8265_2ac_cfg)}, 45562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0910, iwl8265_2ac_cfg)}, 45662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0930, iwl8265_2ac_cfg)}, 45762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0950, iwl8265_2ac_cfg)}, 45862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0850, iwl8265_2ac_cfg)}, 45962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1014, iwl8265_2ac_cfg)}, 46062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x3E02, iwl8275_2ac_cfg)}, 46162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x3E01, iwl8275_2ac_cfg)}, 46262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x1012, iwl8275_2ac_cfg)}, 46362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8275_2ac_cfg)}, 46462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x0014, iwl8265_2ac_cfg)}, 46562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8265_2ac_cfg)}, 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_ci/* 9000 Series */ 46862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x2526, PCI_ANY_ID, iwl9000_trans_cfg)}, 46962306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x271B, PCI_ANY_ID, iwl9000_trans_cfg)}, 47062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x271C, PCI_ANY_ID, iwl9000_trans_cfg)}, 47162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x30DC, PCI_ANY_ID, iwl9560_long_latency_trans_cfg)}, 47262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x31DC, PCI_ANY_ID, iwl9560_shared_clk_trans_cfg)}, 47362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x9DF0, PCI_ANY_ID, iwl9560_trans_cfg)}, 47462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0xA370, PCI_ANY_ID, iwl9560_trans_cfg)}, 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_ci/* Qu devices */ 47762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x02F0, PCI_ANY_ID, iwl_qu_trans_cfg)}, 47862306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x06F0, PCI_ANY_ID, iwl_qu_trans_cfg)}, 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x34F0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 48162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x3DF0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 48262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x4DF0, PCI_ANY_ID, iwl_qu_medium_latency_trans_cfg)}, 48362306a36Sopenharmony_ci 48462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x43F0, PCI_ANY_ID, iwl_qu_long_latency_trans_cfg)}, 48562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0xA0F0, PCI_ANY_ID, iwl_qu_long_latency_trans_cfg)}, 48662306a36Sopenharmony_ci 48762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x2723, PCI_ANY_ID, iwl_ax200_trans_cfg)}, 48862306a36Sopenharmony_ci 48962306a36Sopenharmony_ci/* So devices */ 49062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x2725, PCI_ANY_ID, iwl_so_trans_cfg)}, 49162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x7A70, PCI_ANY_ID, iwl_so_long_latency_imr_trans_cfg)}, 49262306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x7AF0, PCI_ANY_ID, iwl_so_trans_cfg)}, 49362306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x51F0, PCI_ANY_ID, iwl_so_long_latency_trans_cfg)}, 49462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x51F1, PCI_ANY_ID, iwl_so_long_latency_imr_trans_cfg)}, 49562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x51F1, PCI_ANY_ID, iwl_so_long_latency_trans_cfg)}, 49662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x54F0, PCI_ANY_ID, iwl_so_long_latency_trans_cfg)}, 49762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x7F70, PCI_ANY_ID, iwl_so_trans_cfg)}, 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_ci/* Ma devices */ 50062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x2729, PCI_ANY_ID, iwl_ma_trans_cfg)}, 50162306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x7E40, PCI_ANY_ID, iwl_ma_trans_cfg)}, 50262306a36Sopenharmony_ci 50362306a36Sopenharmony_ci/* Bz devices */ 50462306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x2727, PCI_ANY_ID, iwl_bz_trans_cfg)}, 50562306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x272b, PCI_ANY_ID, iwl_bz_trans_cfg)}, 50662306a36Sopenharmony_ci {IWL_PCI_DEVICE(0xA840, PCI_ANY_ID, iwl_bz_trans_cfg)}, 50762306a36Sopenharmony_ci {IWL_PCI_DEVICE(0x7740, PCI_ANY_ID, iwl_bz_trans_cfg)}, 50862306a36Sopenharmony_ci 50962306a36Sopenharmony_ci/* Sc devices */ 51062306a36Sopenharmony_ci {IWL_PCI_DEVICE(0xE440, PCI_ANY_ID, iwl_sc_trans_cfg)}, 51162306a36Sopenharmony_ci#endif /* CONFIG_IWLMVM */ 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_ci {0} 51462306a36Sopenharmony_ci}; 51562306a36Sopenharmony_ciMODULE_DEVICE_TABLE(pci, iwl_hw_card_ids); 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_ci#define _IWL_DEV_INFO(_device, _subdevice, _mac_type, _mac_step, _rf_type, \ 51862306a36Sopenharmony_ci _rf_id, _rf_step, _no_160, _cores, _cdb, _cfg, _name) \ 51962306a36Sopenharmony_ci { .device = (_device), .subdevice = (_subdevice), .cfg = &(_cfg), \ 52062306a36Sopenharmony_ci .name = _name, .mac_type = _mac_type, .rf_type = _rf_type, .rf_step = _rf_step, \ 52162306a36Sopenharmony_ci .no_160 = _no_160, .cores = _cores, .rf_id = _rf_id, \ 52262306a36Sopenharmony_ci .mac_step = _mac_step, .cdb = _cdb, .jacket = IWL_CFG_ANY } 52362306a36Sopenharmony_ci 52462306a36Sopenharmony_ci#define IWL_DEV_INFO(_device, _subdevice, _cfg, _name) \ 52562306a36Sopenharmony_ci _IWL_DEV_INFO(_device, _subdevice, IWL_CFG_ANY, IWL_CFG_ANY, \ 52662306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, \ 52762306a36Sopenharmony_ci IWL_CFG_ANY, _cfg, _name) 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_cistatic const struct iwl_dev_info iwl_dev_info_table[] = { 53062306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_IWLMVM) 53162306a36Sopenharmony_ci/* 9000 */ 53262306a36Sopenharmony_ci IWL_DEV_INFO(0x2526, 0x1550, iwl9260_2ac_cfg, iwl9260_killer_1550_name), 53362306a36Sopenharmony_ci IWL_DEV_INFO(0x2526, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 53462306a36Sopenharmony_ci IWL_DEV_INFO(0x2526, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 53562306a36Sopenharmony_ci IWL_DEV_INFO(0x30DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 53662306a36Sopenharmony_ci IWL_DEV_INFO(0x30DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 53762306a36Sopenharmony_ci IWL_DEV_INFO(0x31DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 53862306a36Sopenharmony_ci IWL_DEV_INFO(0x31DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 53962306a36Sopenharmony_ci IWL_DEV_INFO(0xA370, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name), 54062306a36Sopenharmony_ci IWL_DEV_INFO(0xA370, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 54162306a36Sopenharmony_ci IWL_DEV_INFO(0x54F0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), 54262306a36Sopenharmony_ci IWL_DEV_INFO(0x54F0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name), 54362306a36Sopenharmony_ci IWL_DEV_INFO(0x51F0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), 54462306a36Sopenharmony_ci IWL_DEV_INFO(0x51F0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), 54562306a36Sopenharmony_ci IWL_DEV_INFO(0x51F0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), 54662306a36Sopenharmony_ci IWL_DEV_INFO(0x51F0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 54762306a36Sopenharmony_ci IWL_DEV_INFO(0x51F1, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 54862306a36Sopenharmony_ci IWL_DEV_INFO(0x54F0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), 54962306a36Sopenharmony_ci IWL_DEV_INFO(0x54F0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 55062306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), 55162306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 55262306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x1691, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name), 55362306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x1692, iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name), 55462306a36Sopenharmony_ci 55562306a36Sopenharmony_ci IWL_DEV_INFO(0x271C, 0x0214, iwl9260_2ac_cfg, iwl9260_1_name), 55662306a36Sopenharmony_ci IWL_DEV_INFO(0x7E40, 0x1691, iwl_cfg_ma, iwl_ax411_killer_1690s_name), 55762306a36Sopenharmony_ci IWL_DEV_INFO(0x7E40, 0x1692, iwl_cfg_ma, iwl_ax411_killer_1690i_name), 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_ci/* AX200 */ 56062306a36Sopenharmony_ci IWL_DEV_INFO(0x2723, IWL_CFG_ANY, iwl_ax200_cfg_cc, iwl_ax200_name), 56162306a36Sopenharmony_ci IWL_DEV_INFO(0x2723, 0x1653, iwl_ax200_cfg_cc, iwl_ax200_killer_1650w_name), 56262306a36Sopenharmony_ci IWL_DEV_INFO(0x2723, 0x1654, iwl_ax200_cfg_cc, iwl_ax200_killer_1650x_name), 56362306a36Sopenharmony_ci 56462306a36Sopenharmony_ci /* Qu with Hr */ 56562306a36Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 56662306a36Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 56762306a36Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 56862306a36Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 56962306a36Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650s_name), 57062306a36Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650i_name), 57162306a36Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 57262306a36Sopenharmony_ci IWL_DEV_INFO(0x43F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 57362306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 57462306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 57562306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 57662306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 57762306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x0A10, iwl_ax201_cfg_qu_hr, NULL), 57862306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 57962306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 58062306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 58162306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 58262306a36Sopenharmony_ci IWL_DEV_INFO(0xA0F0, 0x6074, iwl_ax201_cfg_qu_hr, NULL), 58362306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL), 58462306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL), 58562306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x6074, iwl_ax201_cfg_quz_hr, NULL), 58662306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL), 58762306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL), 58862306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL), 58962306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL), 59062306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL), 59162306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL), 59262306a36Sopenharmony_ci IWL_DEV_INFO(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL), 59362306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x0070, iwl_ax201_cfg_quz_hr, NULL), 59462306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x0074, iwl_ax201_cfg_quz_hr, NULL), 59562306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x0078, iwl_ax201_cfg_quz_hr, NULL), 59662306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x007C, iwl_ax201_cfg_quz_hr, NULL), 59762306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x0310, iwl_ax201_cfg_quz_hr, NULL), 59862306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x1651, iwl_ax1650s_cfg_quz_hr, NULL), 59962306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x1652, iwl_ax1650i_cfg_quz_hr, NULL), 60062306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x2074, iwl_ax201_cfg_quz_hr, NULL), 60162306a36Sopenharmony_ci IWL_DEV_INFO(0x06F0, 0x4070, iwl_ax201_cfg_quz_hr, NULL), 60262306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 60362306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 60462306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 60562306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 60662306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 60762306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 60862306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 60962306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 61062306a36Sopenharmony_ci IWL_DEV_INFO(0x34F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 61162306a36Sopenharmony_ci 61262306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 61362306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 61462306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 61562306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 61662306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 61762306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 61862306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 61962306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 62062306a36Sopenharmony_ci IWL_DEV_INFO(0x3DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 62162306a36Sopenharmony_ci 62262306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x0070, iwl_ax201_cfg_qu_hr, NULL), 62362306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x0074, iwl_ax201_cfg_qu_hr, NULL), 62462306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x0078, iwl_ax201_cfg_qu_hr, NULL), 62562306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x007C, iwl_ax201_cfg_qu_hr, NULL), 62662306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x0310, iwl_ax201_cfg_qu_hr, NULL), 62762306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, NULL), 62862306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, NULL), 62962306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x2074, iwl_ax201_cfg_qu_hr, NULL), 63062306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x4070, iwl_ax201_cfg_qu_hr, NULL), 63162306a36Sopenharmony_ci IWL_DEV_INFO(0x4DF0, 0x6074, iwl_ax201_cfg_qu_hr, NULL), 63262306a36Sopenharmony_ci 63362306a36Sopenharmony_ci /* So with HR */ 63462306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x0090, iwlax211_2ax_cfg_so_gf_a0, NULL), 63562306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x0020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 63662306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x2020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 63762306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x0024, iwlax210_2ax_cfg_ty_gf_a0, NULL), 63862306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x0310, iwlax210_2ax_cfg_ty_gf_a0, NULL), 63962306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x0510, iwlax210_2ax_cfg_ty_gf_a0, NULL), 64062306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x0A10, iwlax210_2ax_cfg_ty_gf_a0, NULL), 64162306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0xE020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 64262306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0xE024, iwlax210_2ax_cfg_ty_gf_a0, NULL), 64362306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x4020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 64462306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x6020, iwlax210_2ax_cfg_ty_gf_a0, NULL), 64562306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x6024, iwlax210_2ax_cfg_ty_gf_a0, NULL), 64662306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x1673, iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675w_name), 64762306a36Sopenharmony_ci IWL_DEV_INFO(0x2725, 0x1674, iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675x_name), 64862306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x0090, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 64962306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x0098, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 65062306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0_long, NULL), 65162306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 65262306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 65362306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0_long, NULL), 65462306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x0090, iwlax211_2ax_cfg_so_gf_a0, NULL), 65562306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x0098, iwlax211_2ax_cfg_so_gf_a0, NULL), 65662306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0, NULL), 65762306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0, NULL), 65862306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0, NULL), 65962306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0, NULL), 66062306a36Sopenharmony_ci 66162306a36Sopenharmony_ci /* So with JF */ 66262306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), 66362306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), 66462306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name), 66562306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name), 66662306a36Sopenharmony_ci 66762306a36Sopenharmony_ci /* SO with GF2 */ 66862306a36Sopenharmony_ci IWL_DEV_INFO(0x2726, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 66962306a36Sopenharmony_ci IWL_DEV_INFO(0x2726, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 67062306a36Sopenharmony_ci IWL_DEV_INFO(0x51F0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 67162306a36Sopenharmony_ci IWL_DEV_INFO(0x51F0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 67262306a36Sopenharmony_ci IWL_DEV_INFO(0x51F1, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 67362306a36Sopenharmony_ci IWL_DEV_INFO(0x51F1, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 67462306a36Sopenharmony_ci IWL_DEV_INFO(0x54F0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 67562306a36Sopenharmony_ci IWL_DEV_INFO(0x54F0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 67662306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 67762306a36Sopenharmony_ci IWL_DEV_INFO(0x7A70, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 67862306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 67962306a36Sopenharmony_ci IWL_DEV_INFO(0x7AF0, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 68062306a36Sopenharmony_ci IWL_DEV_INFO(0x7F70, 0x1671, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name), 68162306a36Sopenharmony_ci IWL_DEV_INFO(0x7F70, 0x1672, iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name), 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ci /* MA with GF2 */ 68462306a36Sopenharmony_ci IWL_DEV_INFO(0x7E40, 0x1671, iwl_cfg_ma, iwl_ax211_killer_1675s_name), 68562306a36Sopenharmony_ci IWL_DEV_INFO(0x7E40, 0x1672, iwl_cfg_ma, iwl_ax211_killer_1675i_name), 68662306a36Sopenharmony_ci 68762306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 68862306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 68962306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 69062306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 69162306a36Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9461_160_name), 69262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 69362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 69462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 69562306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 69662306a36Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9461_name), 69762306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 69862306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 69962306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 70062306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 70162306a36Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9462_160_name), 70262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 70362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 70462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 70562306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 70662306a36Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9462_name), 70762306a36Sopenharmony_ci 70862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 70962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 71062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 71162306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 71262306a36Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9560_160_name), 71362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 71462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_PU, IWL_CFG_ANY, 71562306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 71662306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 71762306a36Sopenharmony_ci iwl9560_2ac_cfg_soc, iwl9560_name), 71862306a36Sopenharmony_ci 71962306a36Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 72062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 72162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, 72262306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT_GNSS, IWL_CFG_NO_CDB, 72362306a36Sopenharmony_ci iwl9260_2ac_cfg, iwl9270_160_name), 72462306a36Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 72562306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 72662306a36Sopenharmony_ci IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, 72762306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT_GNSS, IWL_CFG_NO_CDB, 72862306a36Sopenharmony_ci iwl9260_2ac_cfg, iwl9270_name), 72962306a36Sopenharmony_ci 73062306a36Sopenharmony_ci _IWL_DEV_INFO(0x271B, IWL_CFG_ANY, 73162306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 73262306a36Sopenharmony_ci IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY, IWL_CFG_ANY, 73362306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 73462306a36Sopenharmony_ci iwl9260_2ac_cfg, iwl9162_160_name), 73562306a36Sopenharmony_ci _IWL_DEV_INFO(0x271B, IWL_CFG_ANY, 73662306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 73762306a36Sopenharmony_ci IWL_CFG_RF_TYPE_TH1, IWL_CFG_ANY, IWL_CFG_ANY, 73862306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 73962306a36Sopenharmony_ci iwl9260_2ac_cfg, iwl9162_name), 74062306a36Sopenharmony_ci 74162306a36Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 74262306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 74362306a36Sopenharmony_ci IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, 74462306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 74562306a36Sopenharmony_ci iwl9260_2ac_cfg, iwl9260_160_name), 74662306a36Sopenharmony_ci _IWL_DEV_INFO(0x2526, IWL_CFG_ANY, 74762306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_TH, IWL_CFG_ANY, 74862306a36Sopenharmony_ci IWL_CFG_RF_TYPE_TH, IWL_CFG_ANY, IWL_CFG_ANY, 74962306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 75062306a36Sopenharmony_ci iwl9260_2ac_cfg, iwl9260_name), 75162306a36Sopenharmony_ci 75262306a36Sopenharmony_ci/* Qu with Jf */ 75362306a36Sopenharmony_ci /* Qu B step */ 75462306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 75562306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 75662306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 75762306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 75862306a36Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9461_160_name), 75962306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 76062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 76162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 76262306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 76362306a36Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9461_name), 76462306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 76562306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 76662306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 76762306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 76862306a36Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9462_160_name), 76962306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 77062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 77162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 77262306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 77362306a36Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9462_name), 77462306a36Sopenharmony_ci 77562306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 77662306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 77762306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 77862306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 77962306a36Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9560_160_name), 78062306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 78162306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 78262306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 78362306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 78462306a36Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9560_name), 78562306a36Sopenharmony_ci 78662306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 78762306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 78862306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 78962306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 79062306a36Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550s_name), 79162306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 79262306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 79362306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 79462306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 79562306a36Sopenharmony_ci iwl9560_qu_b0_jf_b0_cfg, iwl9560_killer_1550i_name), 79662306a36Sopenharmony_ci 79762306a36Sopenharmony_ci /* Qu C step */ 79862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 79962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 80062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 80162306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 80262306a36Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9461_160_name), 80362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 80462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 80562306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 80662306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 80762306a36Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9461_name), 80862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 80962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 81062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 81162306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 81262306a36Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9462_160_name), 81362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 81462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 81562306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 81662306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 81762306a36Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9462_name), 81862306a36Sopenharmony_ci 81962306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 82062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 82162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 82262306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 82362306a36Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9560_160_name), 82462306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 82562306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 82662306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 82762306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 82862306a36Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9560_name), 82962306a36Sopenharmony_ci 83062306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 83162306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 83262306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 83362306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 83462306a36Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550s_name), 83562306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 83662306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 83762306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 83862306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 83962306a36Sopenharmony_ci iwl9560_qu_c0_jf_b0_cfg, iwl9560_killer_1550i_name), 84062306a36Sopenharmony_ci 84162306a36Sopenharmony_ci /* QuZ */ 84262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 84362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 84462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 84562306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 84662306a36Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9461_160_name), 84762306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 84862306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 84962306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 85062306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 85162306a36Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9461_name), 85262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 85362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 85462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 85562306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 85662306a36Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9462_160_name), 85762306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 85862306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 85962306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 86062306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 86162306a36Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9462_name), 86262306a36Sopenharmony_ci 86362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 86462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 86562306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 86662306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 86762306a36Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9560_160_name), 86862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 86962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 87062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 87162306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 87262306a36Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9560_name), 87362306a36Sopenharmony_ci 87462306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1551, 87562306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 87662306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 87762306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 87862306a36Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550s_name), 87962306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, 0x1552, 88062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 88162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 88262306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 88362306a36Sopenharmony_ci iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550i_name), 88462306a36Sopenharmony_ci 88562306a36Sopenharmony_ci/* Qu with Hr */ 88662306a36Sopenharmony_ci /* Qu B step */ 88762306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 88862306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 88962306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 89062306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 89162306a36Sopenharmony_ci iwl_qu_b0_hr1_b0, iwl_ax101_name), 89262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 89362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_B_STEP, 89462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 89562306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 89662306a36Sopenharmony_ci iwl_qu_b0_hr_b0, iwl_ax203_name), 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_ci /* Qu C step */ 89962306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 90062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 90162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 90262306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 90362306a36Sopenharmony_ci iwl_qu_c0_hr1_b0, iwl_ax101_name), 90462306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 90562306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 90662306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 90762306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 90862306a36Sopenharmony_ci iwl_qu_c0_hr_b0, iwl_ax203_name), 90962306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 91062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, 91162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 91262306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 91362306a36Sopenharmony_ci iwl_qu_c0_hr_b0, iwl_ax201_name), 91462306a36Sopenharmony_ci 91562306a36Sopenharmony_ci /* QuZ */ 91662306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 91762306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, IWL_CFG_ANY, 91862306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 91962306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 92062306a36Sopenharmony_ci iwl_quz_a0_hr1_b0, iwl_ax101_name), 92162306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 92262306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, SILICON_B_STEP, 92362306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 92462306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 92562306a36Sopenharmony_ci iwl_cfg_quz_a0_hr_b0, iwl_ax203_name), 92662306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 92762306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_QUZ, SILICON_B_STEP, 92862306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 92962306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 93062306a36Sopenharmony_ci iwl_cfg_quz_a0_hr_b0, iwl_ax201_name), 93162306a36Sopenharmony_ci 93262306a36Sopenharmony_ci/* Ma */ 93362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 93462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 93562306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 93662306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 93762306a36Sopenharmony_ci iwl_cfg_ma, iwl_ax201_name), 93862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 93962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 94062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 94162306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 94262306a36Sopenharmony_ci iwl_cfg_ma, iwl_ax211_name), 94362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 94462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 94562306a36Sopenharmony_ci IWL_CFG_RF_TYPE_MR, IWL_CFG_ANY, IWL_CFG_ANY, 94662306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 94762306a36Sopenharmony_ci iwl_cfg_ma, iwl_ax221_name), 94862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 94962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 95062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, 95162306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 95262306a36Sopenharmony_ci iwl_cfg_ma, iwl_ax231_name), 95362306a36Sopenharmony_ci 95462306a36Sopenharmony_ci/* So with Hr */ 95562306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 95662306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 95762306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 95862306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 95962306a36Sopenharmony_ci iwl_cfg_so_a0_hr_a0, iwl_ax203_name), 96062306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 96162306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 96262306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 96362306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 96462306a36Sopenharmony_ci iwl_cfg_so_a0_hr_a0, iwl_ax101_name), 96562306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 96662306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 96762306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 96862306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 96962306a36Sopenharmony_ci iwl_cfg_so_a0_hr_a0, iwl_ax201_name), 97062306a36Sopenharmony_ci 97162306a36Sopenharmony_ci/* So-F with Hr */ 97262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 97362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 97462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 97562306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 97662306a36Sopenharmony_ci iwl_cfg_so_a0_hr_a0, iwl_ax203_name), 97762306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 97862306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 97962306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, 98062306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 98162306a36Sopenharmony_ci iwl_cfg_so_a0_hr_a0, iwl_ax101_name), 98262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 98362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 98462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, IWL_CFG_ANY, 98562306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 98662306a36Sopenharmony_ci iwl_cfg_so_a0_hr_a0, iwl_ax201_name), 98762306a36Sopenharmony_ci 98862306a36Sopenharmony_ci/* So-F with Gf */ 98962306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 99062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 99162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 99262306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 99362306a36Sopenharmony_ci iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name), 99462306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 99562306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 99662306a36Sopenharmony_ci IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 99762306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_CDB, 99862306a36Sopenharmony_ci iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name), 99962306a36Sopenharmony_ci 100062306a36Sopenharmony_ci/* Bz */ 100162306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 100262306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_BZ, IWL_CFG_ANY, 100362306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 100462306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 100562306a36Sopenharmony_ci iwl_cfg_bz, iwl_bz_name), 100662306a36Sopenharmony_ci 100762306a36Sopenharmony_ci/* Ga (Gl) */ 100862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 100962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_GL, IWL_CFG_ANY, 101062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_FM, IWL_CFG_ANY, IWL_CFG_ANY, 101162306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_NO_CDB, 101262306a36Sopenharmony_ci iwl_cfg_gl, iwl_bz_name), 101362306a36Sopenharmony_ci 101462306a36Sopenharmony_ci/* SoF with JF2 */ 101562306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 101662306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 101762306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 101862306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 101962306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name), 102062306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 102162306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 102262306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 102362306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 102462306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9560_name), 102562306a36Sopenharmony_ci 102662306a36Sopenharmony_ci/* SoF with JF */ 102762306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 102862306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 102962306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 103062306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 103162306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name), 103262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 103362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 103462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 103562306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 103662306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name), 103762306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 103862306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 103962306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 104062306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 104162306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9461_name), 104262306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 104362306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 104462306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 104562306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 104662306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9462_name), 104762306a36Sopenharmony_ci 104862306a36Sopenharmony_ci/* So with GF */ 104962306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 105062306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 105162306a36Sopenharmony_ci IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 105262306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 105362306a36Sopenharmony_ci iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name), 105462306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 105562306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 105662306a36Sopenharmony_ci IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY, 105762306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_CDB, 105862306a36Sopenharmony_ci iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name), 105962306a36Sopenharmony_ci 106062306a36Sopenharmony_ci/* So with JF2 */ 106162306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 106262306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 106362306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 106462306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 106562306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name), 106662306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 106762306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 106862306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF2, IWL_CFG_RF_ID_JF, IWL_CFG_ANY, 106962306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 107062306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9560_name), 107162306a36Sopenharmony_ci 107262306a36Sopenharmony_ci/* So with JF */ 107362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 107462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 107562306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 107662306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 107762306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name), 107862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 107962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 108062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 108162306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 108262306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name), 108362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 108462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 108562306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1, IWL_CFG_ANY, 108662306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 108762306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9461_name), 108862306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 108962306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 109062306a36Sopenharmony_ci IWL_CFG_RF_TYPE_JF1, IWL_CFG_RF_ID_JF1_DIV, IWL_CFG_ANY, 109162306a36Sopenharmony_ci IWL_CFG_NO_160, IWL_CFG_CORES_BT, IWL_CFG_NO_CDB, 109262306a36Sopenharmony_ci iwlax210_2ax_cfg_so_jf_b0, iwl9462_name), 109362306a36Sopenharmony_ci 109462306a36Sopenharmony_ci/* MsP */ 109562306a36Sopenharmony_ci/* For now we use the same FW as MR, but this will change in the future. */ 109662306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 109762306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SO, IWL_CFG_ANY, 109862306a36Sopenharmony_ci IWL_CFG_RF_TYPE_MS, IWL_CFG_ANY, IWL_CFG_ANY, 109962306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 110062306a36Sopenharmony_ci iwl_cfg_so_a0_ms_a0, iwl_ax204_name), 110162306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 110262306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SOF, IWL_CFG_ANY, 110362306a36Sopenharmony_ci IWL_CFG_RF_TYPE_MS, IWL_CFG_ANY, IWL_CFG_ANY, 110462306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 110562306a36Sopenharmony_ci iwl_cfg_so_a0_ms_a0, iwl_ax204_name), 110662306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 110762306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_MA, IWL_CFG_ANY, 110862306a36Sopenharmony_ci IWL_CFG_RF_TYPE_MS, IWL_CFG_ANY, IWL_CFG_ANY, 110962306a36Sopenharmony_ci IWL_CFG_160, IWL_CFG_ANY, IWL_CFG_NO_CDB, 111062306a36Sopenharmony_ci iwl_cfg_ma, iwl_ax204_name), 111162306a36Sopenharmony_ci 111262306a36Sopenharmony_ci/* Sc */ 111362306a36Sopenharmony_ci _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, 111462306a36Sopenharmony_ci IWL_CFG_MAC_TYPE_SC, IWL_CFG_ANY, 111562306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 111662306a36Sopenharmony_ci IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, 111762306a36Sopenharmony_ci iwl_cfg_sc, iwl_sc_name), 111862306a36Sopenharmony_ci#endif /* CONFIG_IWLMVM */ 111962306a36Sopenharmony_ci}; 112062306a36Sopenharmony_ci 112162306a36Sopenharmony_ci/* 112262306a36Sopenharmony_ci * Read rf id and cdb info from prph register and store it 112362306a36Sopenharmony_ci */ 112462306a36Sopenharmony_cistatic int get_crf_id(struct iwl_trans *iwl_trans) 112562306a36Sopenharmony_ci{ 112662306a36Sopenharmony_ci int ret = 0; 112762306a36Sopenharmony_ci u32 sd_reg_ver_addr; 112862306a36Sopenharmony_ci u32 val = 0; 112962306a36Sopenharmony_ci 113062306a36Sopenharmony_ci if (iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) 113162306a36Sopenharmony_ci sd_reg_ver_addr = SD_REG_VER_GEN2; 113262306a36Sopenharmony_ci else 113362306a36Sopenharmony_ci sd_reg_ver_addr = SD_REG_VER; 113462306a36Sopenharmony_ci 113562306a36Sopenharmony_ci /* Enable access to peripheral registers */ 113662306a36Sopenharmony_ci val = iwl_read_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG); 113762306a36Sopenharmony_ci val |= ENABLE_WFPM; 113862306a36Sopenharmony_ci iwl_write_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG, val); 113962306a36Sopenharmony_ci 114062306a36Sopenharmony_ci /* Read crf info */ 114162306a36Sopenharmony_ci iwl_trans->hw_crf_id = iwl_read_prph_no_grab(iwl_trans, sd_reg_ver_addr); 114262306a36Sopenharmony_ci 114362306a36Sopenharmony_ci /* Read cnv info */ 114462306a36Sopenharmony_ci iwl_trans->hw_cnv_id = 114562306a36Sopenharmony_ci iwl_read_prph_no_grab(iwl_trans, CNVI_AUX_MISC_CHIP); 114662306a36Sopenharmony_ci 114762306a36Sopenharmony_ci /* Read cdb info (also contains the jacket info if needed in the future */ 114862306a36Sopenharmony_ci iwl_trans->hw_wfpm_id = 114962306a36Sopenharmony_ci iwl_read_umac_prph_no_grab(iwl_trans, WFPM_OTP_CFG1_ADDR); 115062306a36Sopenharmony_ci IWL_INFO(iwl_trans, "Detected crf-id 0x%x, cnv-id 0x%x wfpm id 0x%x\n", 115162306a36Sopenharmony_ci iwl_trans->hw_crf_id, iwl_trans->hw_cnv_id, 115262306a36Sopenharmony_ci iwl_trans->hw_wfpm_id); 115362306a36Sopenharmony_ci 115462306a36Sopenharmony_ci return ret; 115562306a36Sopenharmony_ci} 115662306a36Sopenharmony_ci 115762306a36Sopenharmony_ci/* 115862306a36Sopenharmony_ci * In case that there is no OTP on the NIC, map the rf id and cdb info 115962306a36Sopenharmony_ci * from the prph registers. 116062306a36Sopenharmony_ci */ 116162306a36Sopenharmony_cistatic int map_crf_id(struct iwl_trans *iwl_trans) 116262306a36Sopenharmony_ci{ 116362306a36Sopenharmony_ci int ret = 0; 116462306a36Sopenharmony_ci u32 val = iwl_trans->hw_crf_id; 116562306a36Sopenharmony_ci u32 step_id = REG_CRF_ID_STEP(val); 116662306a36Sopenharmony_ci u32 slave_id = REG_CRF_ID_SLAVE(val); 116762306a36Sopenharmony_ci u32 jacket_id_cnv = REG_CRF_ID_SLAVE(iwl_trans->hw_cnv_id); 116862306a36Sopenharmony_ci u32 jacket_id_wfpm = WFPM_OTP_CFG1_IS_JACKET(iwl_trans->hw_wfpm_id); 116962306a36Sopenharmony_ci u32 cdb_id_wfpm = WFPM_OTP_CFG1_IS_CDB(iwl_trans->hw_wfpm_id); 117062306a36Sopenharmony_ci 117162306a36Sopenharmony_ci /* Map between crf id to rf id */ 117262306a36Sopenharmony_ci switch (REG_CRF_ID_TYPE(val)) { 117362306a36Sopenharmony_ci case REG_CRF_ID_TYPE_JF_1: 117462306a36Sopenharmony_ci iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_JF1 << 12); 117562306a36Sopenharmony_ci break; 117662306a36Sopenharmony_ci case REG_CRF_ID_TYPE_JF_2: 117762306a36Sopenharmony_ci iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_JF2 << 12); 117862306a36Sopenharmony_ci break; 117962306a36Sopenharmony_ci case REG_CRF_ID_TYPE_HR_NONE_CDB_1X1: 118062306a36Sopenharmony_ci iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_HR1 << 12); 118162306a36Sopenharmony_ci break; 118262306a36Sopenharmony_ci case REG_CRF_ID_TYPE_HR_NONE_CDB: 118362306a36Sopenharmony_ci iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_HR2 << 12); 118462306a36Sopenharmony_ci break; 118562306a36Sopenharmony_ci case REG_CRF_ID_TYPE_HR_CDB: 118662306a36Sopenharmony_ci iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_HR2 << 12); 118762306a36Sopenharmony_ci break; 118862306a36Sopenharmony_ci case REG_CRF_ID_TYPE_GF: 118962306a36Sopenharmony_ci iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_GF << 12); 119062306a36Sopenharmony_ci break; 119162306a36Sopenharmony_ci case REG_CRF_ID_TYPE_MR: 119262306a36Sopenharmony_ci iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_MR << 12); 119362306a36Sopenharmony_ci break; 119462306a36Sopenharmony_ci case REG_CRF_ID_TYPE_FM: 119562306a36Sopenharmony_ci case REG_CRF_ID_TYPE_FMI: 119662306a36Sopenharmony_ci case REG_CRF_ID_TYPE_FMR: 119762306a36Sopenharmony_ci iwl_trans->hw_rf_id = (IWL_CFG_RF_TYPE_FM << 12); 119862306a36Sopenharmony_ci break; 119962306a36Sopenharmony_ci default: 120062306a36Sopenharmony_ci ret = -EIO; 120162306a36Sopenharmony_ci IWL_ERR(iwl_trans, 120262306a36Sopenharmony_ci "Can't find a correct rfid for crf id 0x%x\n", 120362306a36Sopenharmony_ci REG_CRF_ID_TYPE(val)); 120462306a36Sopenharmony_ci goto out; 120562306a36Sopenharmony_ci 120662306a36Sopenharmony_ci } 120762306a36Sopenharmony_ci 120862306a36Sopenharmony_ci /* Set Step-id */ 120962306a36Sopenharmony_ci iwl_trans->hw_rf_id |= (step_id << 8); 121062306a36Sopenharmony_ci 121162306a36Sopenharmony_ci /* Set CDB capabilities */ 121262306a36Sopenharmony_ci if (cdb_id_wfpm || slave_id) { 121362306a36Sopenharmony_ci iwl_trans->hw_rf_id += BIT(28); 121462306a36Sopenharmony_ci IWL_INFO(iwl_trans, "Adding cdb to rf id\n"); 121562306a36Sopenharmony_ci } 121662306a36Sopenharmony_ci 121762306a36Sopenharmony_ci /* Set Jacket capabilities */ 121862306a36Sopenharmony_ci if (jacket_id_wfpm || jacket_id_cnv) { 121962306a36Sopenharmony_ci iwl_trans->hw_rf_id += BIT(29); 122062306a36Sopenharmony_ci IWL_INFO(iwl_trans, "Adding jacket to rf id\n"); 122162306a36Sopenharmony_ci } 122262306a36Sopenharmony_ci 122362306a36Sopenharmony_ci IWL_INFO(iwl_trans, 122462306a36Sopenharmony_ci "Detected rf-type 0x%x step-id 0x%x slave-id 0x%x from crf id 0x%x\n", 122562306a36Sopenharmony_ci REG_CRF_ID_TYPE(val), step_id, slave_id, iwl_trans->hw_rf_id); 122662306a36Sopenharmony_ci IWL_INFO(iwl_trans, 122762306a36Sopenharmony_ci "Detected cdb-id 0x%x jacket-id 0x%x from wfpm id 0x%x\n", 122862306a36Sopenharmony_ci cdb_id_wfpm, jacket_id_wfpm, iwl_trans->hw_wfpm_id); 122962306a36Sopenharmony_ci IWL_INFO(iwl_trans, "Detected jacket-id 0x%x from cnvi id 0x%x\n", 123062306a36Sopenharmony_ci jacket_id_cnv, iwl_trans->hw_cnv_id); 123162306a36Sopenharmony_ci 123262306a36Sopenharmony_ciout: 123362306a36Sopenharmony_ci return ret; 123462306a36Sopenharmony_ci} 123562306a36Sopenharmony_ci 123662306a36Sopenharmony_ci/* PCI registers */ 123762306a36Sopenharmony_ci#define PCI_CFG_RETRY_TIMEOUT 0x041 123862306a36Sopenharmony_ci 123962306a36Sopenharmony_cistatic const struct iwl_dev_info * 124062306a36Sopenharmony_ciiwl_pci_find_dev_info(u16 device, u16 subsystem_device, 124162306a36Sopenharmony_ci u16 mac_type, u8 mac_step, u16 rf_type, u8 cdb, 124262306a36Sopenharmony_ci u8 jacket, u8 rf_id, u8 no_160, u8 cores, u8 rf_step) 124362306a36Sopenharmony_ci{ 124462306a36Sopenharmony_ci int num_devices = ARRAY_SIZE(iwl_dev_info_table); 124562306a36Sopenharmony_ci int i; 124662306a36Sopenharmony_ci 124762306a36Sopenharmony_ci if (!num_devices) 124862306a36Sopenharmony_ci return NULL; 124962306a36Sopenharmony_ci 125062306a36Sopenharmony_ci for (i = num_devices - 1; i >= 0; i--) { 125162306a36Sopenharmony_ci const struct iwl_dev_info *dev_info = &iwl_dev_info_table[i]; 125262306a36Sopenharmony_ci 125362306a36Sopenharmony_ci if (dev_info->device != (u16)IWL_CFG_ANY && 125462306a36Sopenharmony_ci dev_info->device != device) 125562306a36Sopenharmony_ci continue; 125662306a36Sopenharmony_ci 125762306a36Sopenharmony_ci if (dev_info->subdevice != (u16)IWL_CFG_ANY && 125862306a36Sopenharmony_ci dev_info->subdevice != subsystem_device) 125962306a36Sopenharmony_ci continue; 126062306a36Sopenharmony_ci 126162306a36Sopenharmony_ci if (dev_info->mac_type != (u16)IWL_CFG_ANY && 126262306a36Sopenharmony_ci dev_info->mac_type != mac_type) 126362306a36Sopenharmony_ci continue; 126462306a36Sopenharmony_ci 126562306a36Sopenharmony_ci if (dev_info->mac_step != (u8)IWL_CFG_ANY && 126662306a36Sopenharmony_ci dev_info->mac_step != mac_step) 126762306a36Sopenharmony_ci continue; 126862306a36Sopenharmony_ci 126962306a36Sopenharmony_ci if (dev_info->rf_type != (u16)IWL_CFG_ANY && 127062306a36Sopenharmony_ci dev_info->rf_type != rf_type) 127162306a36Sopenharmony_ci continue; 127262306a36Sopenharmony_ci 127362306a36Sopenharmony_ci if (dev_info->cdb != (u8)IWL_CFG_ANY && 127462306a36Sopenharmony_ci dev_info->cdb != cdb) 127562306a36Sopenharmony_ci continue; 127662306a36Sopenharmony_ci 127762306a36Sopenharmony_ci if (dev_info->jacket != (u8)IWL_CFG_ANY && 127862306a36Sopenharmony_ci dev_info->jacket != jacket) 127962306a36Sopenharmony_ci continue; 128062306a36Sopenharmony_ci 128162306a36Sopenharmony_ci if (dev_info->rf_id != (u8)IWL_CFG_ANY && 128262306a36Sopenharmony_ci dev_info->rf_id != rf_id) 128362306a36Sopenharmony_ci continue; 128462306a36Sopenharmony_ci 128562306a36Sopenharmony_ci if (dev_info->no_160 != (u8)IWL_CFG_ANY && 128662306a36Sopenharmony_ci dev_info->no_160 != no_160) 128762306a36Sopenharmony_ci continue; 128862306a36Sopenharmony_ci 128962306a36Sopenharmony_ci if (dev_info->cores != (u8)IWL_CFG_ANY && 129062306a36Sopenharmony_ci dev_info->cores != cores) 129162306a36Sopenharmony_ci continue; 129262306a36Sopenharmony_ci 129362306a36Sopenharmony_ci if (dev_info->rf_step != (u8)IWL_CFG_ANY && 129462306a36Sopenharmony_ci dev_info->rf_step != rf_step) 129562306a36Sopenharmony_ci continue; 129662306a36Sopenharmony_ci 129762306a36Sopenharmony_ci return dev_info; 129862306a36Sopenharmony_ci } 129962306a36Sopenharmony_ci 130062306a36Sopenharmony_ci return NULL; 130162306a36Sopenharmony_ci} 130262306a36Sopenharmony_ci 130362306a36Sopenharmony_cistatic int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 130462306a36Sopenharmony_ci{ 130562306a36Sopenharmony_ci const struct iwl_cfg_trans_params *trans; 130662306a36Sopenharmony_ci const struct iwl_cfg *cfg_7265d __maybe_unused = NULL; 130762306a36Sopenharmony_ci const struct iwl_dev_info *dev_info; 130862306a36Sopenharmony_ci struct iwl_trans *iwl_trans; 130962306a36Sopenharmony_ci struct iwl_trans_pcie *trans_pcie; 131062306a36Sopenharmony_ci int ret; 131162306a36Sopenharmony_ci const struct iwl_cfg *cfg; 131262306a36Sopenharmony_ci 131362306a36Sopenharmony_ci trans = (void *)(ent->driver_data & ~TRANS_CFG_MARKER); 131462306a36Sopenharmony_ci 131562306a36Sopenharmony_ci /* 131662306a36Sopenharmony_ci * This is needed for backwards compatibility with the old 131762306a36Sopenharmony_ci * tables, so we don't need to change all the config structs 131862306a36Sopenharmony_ci * at the same time. The cfg is used to compare with the old 131962306a36Sopenharmony_ci * full cfg structs. 132062306a36Sopenharmony_ci */ 132162306a36Sopenharmony_ci cfg = (void *)(ent->driver_data & ~TRANS_CFG_MARKER); 132262306a36Sopenharmony_ci 132362306a36Sopenharmony_ci /* make sure trans is the first element in iwl_cfg */ 132462306a36Sopenharmony_ci BUILD_BUG_ON(offsetof(struct iwl_cfg, trans)); 132562306a36Sopenharmony_ci 132662306a36Sopenharmony_ci iwl_trans = iwl_trans_pcie_alloc(pdev, ent, trans); 132762306a36Sopenharmony_ci if (IS_ERR(iwl_trans)) 132862306a36Sopenharmony_ci return PTR_ERR(iwl_trans); 132962306a36Sopenharmony_ci 133062306a36Sopenharmony_ci trans_pcie = IWL_TRANS_GET_PCIE_TRANS(iwl_trans); 133162306a36Sopenharmony_ci 133262306a36Sopenharmony_ci /* 133362306a36Sopenharmony_ci * Let's try to grab NIC access early here. Sometimes, NICs may 133462306a36Sopenharmony_ci * fail to initialize, and if that happens it's better if we see 133562306a36Sopenharmony_ci * issues early on (and can reprobe, per the logic inside), than 133662306a36Sopenharmony_ci * first trying to load the firmware etc. and potentially only 133762306a36Sopenharmony_ci * detecting any problems when the first interface is brought up. 133862306a36Sopenharmony_ci */ 133962306a36Sopenharmony_ci ret = iwl_pcie_prepare_card_hw(iwl_trans); 134062306a36Sopenharmony_ci if (!ret) { 134162306a36Sopenharmony_ci ret = iwl_finish_nic_init(iwl_trans); 134262306a36Sopenharmony_ci if (ret) 134362306a36Sopenharmony_ci goto out_free_trans; 134462306a36Sopenharmony_ci if (iwl_trans_grab_nic_access(iwl_trans)) { 134562306a36Sopenharmony_ci get_crf_id(iwl_trans); 134662306a36Sopenharmony_ci /* all good */ 134762306a36Sopenharmony_ci iwl_trans_release_nic_access(iwl_trans); 134862306a36Sopenharmony_ci } else { 134962306a36Sopenharmony_ci ret = -EIO; 135062306a36Sopenharmony_ci goto out_free_trans; 135162306a36Sopenharmony_ci } 135262306a36Sopenharmony_ci } 135362306a36Sopenharmony_ci 135462306a36Sopenharmony_ci iwl_trans->hw_rf_id = iwl_read32(iwl_trans, CSR_HW_RF_ID); 135562306a36Sopenharmony_ci 135662306a36Sopenharmony_ci /* 135762306a36Sopenharmony_ci * The RF_ID is set to zero in blank OTP so read version to 135862306a36Sopenharmony_ci * extract the RF_ID. 135962306a36Sopenharmony_ci * This is relevant only for family 9000 and up. 136062306a36Sopenharmony_ci */ 136162306a36Sopenharmony_ci if (iwl_trans->trans_cfg->rf_id && 136262306a36Sopenharmony_ci iwl_trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_9000 && 136362306a36Sopenharmony_ci !CSR_HW_RFID_TYPE(iwl_trans->hw_rf_id) && map_crf_id(iwl_trans)) { 136462306a36Sopenharmony_ci ret = -EINVAL; 136562306a36Sopenharmony_ci goto out_free_trans; 136662306a36Sopenharmony_ci } 136762306a36Sopenharmony_ci 136862306a36Sopenharmony_ci IWL_INFO(iwl_trans, "PCI dev %04x/%04x, rev=0x%x, rfid=0x%x\n", 136962306a36Sopenharmony_ci pdev->device, pdev->subsystem_device, 137062306a36Sopenharmony_ci iwl_trans->hw_rev, iwl_trans->hw_rf_id); 137162306a36Sopenharmony_ci 137262306a36Sopenharmony_ci dev_info = iwl_pci_find_dev_info(pdev->device, pdev->subsystem_device, 137362306a36Sopenharmony_ci CSR_HW_REV_TYPE(iwl_trans->hw_rev), 137462306a36Sopenharmony_ci iwl_trans->hw_rev_step, 137562306a36Sopenharmony_ci CSR_HW_RFID_TYPE(iwl_trans->hw_rf_id), 137662306a36Sopenharmony_ci CSR_HW_RFID_IS_CDB(iwl_trans->hw_rf_id), 137762306a36Sopenharmony_ci CSR_HW_RFID_IS_JACKET(iwl_trans->hw_rf_id), 137862306a36Sopenharmony_ci IWL_SUBDEVICE_RF_ID(pdev->subsystem_device), 137962306a36Sopenharmony_ci IWL_SUBDEVICE_NO_160(pdev->subsystem_device), 138062306a36Sopenharmony_ci IWL_SUBDEVICE_CORES(pdev->subsystem_device), 138162306a36Sopenharmony_ci CSR_HW_RFID_STEP(iwl_trans->hw_rf_id)); 138262306a36Sopenharmony_ci if (dev_info) { 138362306a36Sopenharmony_ci iwl_trans->cfg = dev_info->cfg; 138462306a36Sopenharmony_ci iwl_trans->name = dev_info->name; 138562306a36Sopenharmony_ci } 138662306a36Sopenharmony_ci 138762306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_IWLMVM) 138862306a36Sopenharmony_ci /* 138962306a36Sopenharmony_ci * special-case 7265D, it has the same PCI IDs. 139062306a36Sopenharmony_ci * 139162306a36Sopenharmony_ci * Note that because we already pass the cfg to the transport above, 139262306a36Sopenharmony_ci * all the parameters that the transport uses must, until that is 139362306a36Sopenharmony_ci * changed, be identical to the ones in the 7265D configuration. 139462306a36Sopenharmony_ci */ 139562306a36Sopenharmony_ci if (cfg == &iwl7265_2ac_cfg) 139662306a36Sopenharmony_ci cfg_7265d = &iwl7265d_2ac_cfg; 139762306a36Sopenharmony_ci else if (cfg == &iwl7265_2n_cfg) 139862306a36Sopenharmony_ci cfg_7265d = &iwl7265d_2n_cfg; 139962306a36Sopenharmony_ci else if (cfg == &iwl7265_n_cfg) 140062306a36Sopenharmony_ci cfg_7265d = &iwl7265d_n_cfg; 140162306a36Sopenharmony_ci if (cfg_7265d && 140262306a36Sopenharmony_ci (iwl_trans->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_7265D) 140362306a36Sopenharmony_ci iwl_trans->cfg = cfg_7265d; 140462306a36Sopenharmony_ci 140562306a36Sopenharmony_ci /* 140662306a36Sopenharmony_ci * This is a hack to switch from Qu B0 to Qu C0. We need to 140762306a36Sopenharmony_ci * do this for all cfgs that use Qu B0, except for those using 140862306a36Sopenharmony_ci * Jf, which have already been moved to the new table. The 140962306a36Sopenharmony_ci * rest must be removed once we convert Qu with Hr as well. 141062306a36Sopenharmony_ci */ 141162306a36Sopenharmony_ci if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QU_C0) { 141262306a36Sopenharmony_ci if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr) 141362306a36Sopenharmony_ci iwl_trans->cfg = &iwl_ax201_cfg_qu_c0_hr_b0; 141462306a36Sopenharmony_ci else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0) 141562306a36Sopenharmony_ci iwl_trans->cfg = &killer1650s_2ax_cfg_qu_c0_hr_b0; 141662306a36Sopenharmony_ci else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0) 141762306a36Sopenharmony_ci iwl_trans->cfg = &killer1650i_2ax_cfg_qu_c0_hr_b0; 141862306a36Sopenharmony_ci } 141962306a36Sopenharmony_ci 142062306a36Sopenharmony_ci /* same thing for QuZ... */ 142162306a36Sopenharmony_ci if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QUZ) { 142262306a36Sopenharmony_ci if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr) 142362306a36Sopenharmony_ci iwl_trans->cfg = &iwl_ax201_cfg_quz_hr; 142462306a36Sopenharmony_ci else if (iwl_trans->cfg == &killer1650s_2ax_cfg_qu_b0_hr_b0) 142562306a36Sopenharmony_ci iwl_trans->cfg = &iwl_ax1650s_cfg_quz_hr; 142662306a36Sopenharmony_ci else if (iwl_trans->cfg == &killer1650i_2ax_cfg_qu_b0_hr_b0) 142762306a36Sopenharmony_ci iwl_trans->cfg = &iwl_ax1650i_cfg_quz_hr; 142862306a36Sopenharmony_ci } 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_ci#endif 143162306a36Sopenharmony_ci /* 143262306a36Sopenharmony_ci * If we didn't set the cfg yet, the PCI ID table entry should have 143362306a36Sopenharmony_ci * been a full config - if yes, use it, otherwise fail. 143462306a36Sopenharmony_ci */ 143562306a36Sopenharmony_ci if (!iwl_trans->cfg) { 143662306a36Sopenharmony_ci if (ent->driver_data & TRANS_CFG_MARKER) { 143762306a36Sopenharmony_ci pr_err("No config found for PCI dev %04x/%04x, rev=0x%x, rfid=0x%x\n", 143862306a36Sopenharmony_ci pdev->device, pdev->subsystem_device, 143962306a36Sopenharmony_ci iwl_trans->hw_rev, iwl_trans->hw_rf_id); 144062306a36Sopenharmony_ci ret = -EINVAL; 144162306a36Sopenharmony_ci goto out_free_trans; 144262306a36Sopenharmony_ci } 144362306a36Sopenharmony_ci iwl_trans->cfg = cfg; 144462306a36Sopenharmony_ci } 144562306a36Sopenharmony_ci 144662306a36Sopenharmony_ci /* if we don't have a name yet, copy name from the old cfg */ 144762306a36Sopenharmony_ci if (!iwl_trans->name) 144862306a36Sopenharmony_ci iwl_trans->name = iwl_trans->cfg->name; 144962306a36Sopenharmony_ci 145062306a36Sopenharmony_ci if (iwl_trans->trans_cfg->mq_rx_supported) { 145162306a36Sopenharmony_ci if (WARN_ON(!iwl_trans->cfg->num_rbds)) { 145262306a36Sopenharmony_ci ret = -EINVAL; 145362306a36Sopenharmony_ci goto out_free_trans; 145462306a36Sopenharmony_ci } 145562306a36Sopenharmony_ci trans_pcie->num_rx_bufs = iwl_trans->cfg->num_rbds; 145662306a36Sopenharmony_ci } else { 145762306a36Sopenharmony_ci trans_pcie->num_rx_bufs = RX_QUEUE_SIZE; 145862306a36Sopenharmony_ci } 145962306a36Sopenharmony_ci 146062306a36Sopenharmony_ci if (!iwl_trans->trans_cfg->integrated) { 146162306a36Sopenharmony_ci u16 link_status; 146262306a36Sopenharmony_ci 146362306a36Sopenharmony_ci pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &link_status); 146462306a36Sopenharmony_ci 146562306a36Sopenharmony_ci iwl_trans->pcie_link_speed = 146662306a36Sopenharmony_ci u16_get_bits(link_status, PCI_EXP_LNKSTA_CLS); 146762306a36Sopenharmony_ci } 146862306a36Sopenharmony_ci 146962306a36Sopenharmony_ci ret = iwl_trans_init(iwl_trans); 147062306a36Sopenharmony_ci if (ret) 147162306a36Sopenharmony_ci goto out_free_trans; 147262306a36Sopenharmony_ci 147362306a36Sopenharmony_ci pci_set_drvdata(pdev, iwl_trans); 147462306a36Sopenharmony_ci 147562306a36Sopenharmony_ci /* try to get ownership so that we'll know if we don't own it */ 147662306a36Sopenharmony_ci iwl_pcie_prepare_card_hw(iwl_trans); 147762306a36Sopenharmony_ci 147862306a36Sopenharmony_ci iwl_trans->drv = iwl_drv_start(iwl_trans); 147962306a36Sopenharmony_ci 148062306a36Sopenharmony_ci if (IS_ERR(iwl_trans->drv)) { 148162306a36Sopenharmony_ci ret = PTR_ERR(iwl_trans->drv); 148262306a36Sopenharmony_ci goto out_free_trans; 148362306a36Sopenharmony_ci } 148462306a36Sopenharmony_ci 148562306a36Sopenharmony_ci /* register transport layer debugfs here */ 148662306a36Sopenharmony_ci iwl_trans_pcie_dbgfs_register(iwl_trans); 148762306a36Sopenharmony_ci 148862306a36Sopenharmony_ci return 0; 148962306a36Sopenharmony_ci 149062306a36Sopenharmony_ciout_free_trans: 149162306a36Sopenharmony_ci iwl_trans_pcie_free(iwl_trans); 149262306a36Sopenharmony_ci return ret; 149362306a36Sopenharmony_ci} 149462306a36Sopenharmony_ci 149562306a36Sopenharmony_cistatic void iwl_pci_remove(struct pci_dev *pdev) 149662306a36Sopenharmony_ci{ 149762306a36Sopenharmony_ci struct iwl_trans *trans = pci_get_drvdata(pdev); 149862306a36Sopenharmony_ci 149962306a36Sopenharmony_ci if (!trans) 150062306a36Sopenharmony_ci return; 150162306a36Sopenharmony_ci 150262306a36Sopenharmony_ci iwl_drv_stop(trans->drv); 150362306a36Sopenharmony_ci 150462306a36Sopenharmony_ci iwl_trans_pcie_free(trans); 150562306a36Sopenharmony_ci} 150662306a36Sopenharmony_ci 150762306a36Sopenharmony_ci#ifdef CONFIG_PM_SLEEP 150862306a36Sopenharmony_ci 150962306a36Sopenharmony_cistatic int iwl_pci_suspend(struct device *device) 151062306a36Sopenharmony_ci{ 151162306a36Sopenharmony_ci /* Before you put code here, think about WoWLAN. You cannot check here 151262306a36Sopenharmony_ci * whether WoWLAN is enabled or not, and your code will run even if 151362306a36Sopenharmony_ci * WoWLAN is enabled - don't kill the NIC, someone may need it in Sx. 151462306a36Sopenharmony_ci */ 151562306a36Sopenharmony_ci 151662306a36Sopenharmony_ci return 0; 151762306a36Sopenharmony_ci} 151862306a36Sopenharmony_ci 151962306a36Sopenharmony_cistatic int iwl_pci_resume(struct device *device) 152062306a36Sopenharmony_ci{ 152162306a36Sopenharmony_ci struct pci_dev *pdev = to_pci_dev(device); 152262306a36Sopenharmony_ci struct iwl_trans *trans = pci_get_drvdata(pdev); 152362306a36Sopenharmony_ci struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); 152462306a36Sopenharmony_ci 152562306a36Sopenharmony_ci /* Before you put code here, think about WoWLAN. You cannot check here 152662306a36Sopenharmony_ci * whether WoWLAN is enabled or not, and your code will run even if 152762306a36Sopenharmony_ci * WoWLAN is enabled - the NIC may be alive. 152862306a36Sopenharmony_ci */ 152962306a36Sopenharmony_ci 153062306a36Sopenharmony_ci /* 153162306a36Sopenharmony_ci * We disable the RETRY_TIMEOUT register (0x41) to keep 153262306a36Sopenharmony_ci * PCI Tx retries from interfering with C3 CPU state. 153362306a36Sopenharmony_ci */ 153462306a36Sopenharmony_ci pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00); 153562306a36Sopenharmony_ci 153662306a36Sopenharmony_ci if (!trans->op_mode) 153762306a36Sopenharmony_ci return 0; 153862306a36Sopenharmony_ci 153962306a36Sopenharmony_ci /* In WOWLAN, let iwl_trans_pcie_d3_resume do the rest of the work */ 154062306a36Sopenharmony_ci if (test_bit(STATUS_DEVICE_ENABLED, &trans->status)) 154162306a36Sopenharmony_ci return 0; 154262306a36Sopenharmony_ci 154362306a36Sopenharmony_ci /* reconfigure the MSI-X mapping to get the correct IRQ for rfkill */ 154462306a36Sopenharmony_ci iwl_pcie_conf_msix_hw(trans_pcie); 154562306a36Sopenharmony_ci 154662306a36Sopenharmony_ci /* 154762306a36Sopenharmony_ci * Enable rfkill interrupt (in order to keep track of the rfkill 154862306a36Sopenharmony_ci * status). Must be locked to avoid processing a possible rfkill 154962306a36Sopenharmony_ci * interrupt while in iwl_pcie_check_hw_rf_kill(). 155062306a36Sopenharmony_ci */ 155162306a36Sopenharmony_ci mutex_lock(&trans_pcie->mutex); 155262306a36Sopenharmony_ci iwl_enable_rfkill_int(trans); 155362306a36Sopenharmony_ci iwl_pcie_check_hw_rf_kill(trans); 155462306a36Sopenharmony_ci mutex_unlock(&trans_pcie->mutex); 155562306a36Sopenharmony_ci 155662306a36Sopenharmony_ci return 0; 155762306a36Sopenharmony_ci} 155862306a36Sopenharmony_ci 155962306a36Sopenharmony_cistatic const struct dev_pm_ops iwl_dev_pm_ops = { 156062306a36Sopenharmony_ci SET_SYSTEM_SLEEP_PM_OPS(iwl_pci_suspend, 156162306a36Sopenharmony_ci iwl_pci_resume) 156262306a36Sopenharmony_ci}; 156362306a36Sopenharmony_ci 156462306a36Sopenharmony_ci#define IWL_PM_OPS (&iwl_dev_pm_ops) 156562306a36Sopenharmony_ci 156662306a36Sopenharmony_ci#else /* CONFIG_PM_SLEEP */ 156762306a36Sopenharmony_ci 156862306a36Sopenharmony_ci#define IWL_PM_OPS NULL 156962306a36Sopenharmony_ci 157062306a36Sopenharmony_ci#endif /* CONFIG_PM_SLEEP */ 157162306a36Sopenharmony_ci 157262306a36Sopenharmony_cistatic struct pci_driver iwl_pci_driver = { 157362306a36Sopenharmony_ci .name = DRV_NAME, 157462306a36Sopenharmony_ci .id_table = iwl_hw_card_ids, 157562306a36Sopenharmony_ci .probe = iwl_pci_probe, 157662306a36Sopenharmony_ci .remove = iwl_pci_remove, 157762306a36Sopenharmony_ci .driver.pm = IWL_PM_OPS, 157862306a36Sopenharmony_ci}; 157962306a36Sopenharmony_ci 158062306a36Sopenharmony_ciint __must_check iwl_pci_register_driver(void) 158162306a36Sopenharmony_ci{ 158262306a36Sopenharmony_ci int ret; 158362306a36Sopenharmony_ci ret = pci_register_driver(&iwl_pci_driver); 158462306a36Sopenharmony_ci if (ret) 158562306a36Sopenharmony_ci pr_err("Unable to initialize PCI module\n"); 158662306a36Sopenharmony_ci 158762306a36Sopenharmony_ci return ret; 158862306a36Sopenharmony_ci} 158962306a36Sopenharmony_ci 159062306a36Sopenharmony_civoid iwl_pci_unregister_driver(void) 159162306a36Sopenharmony_ci{ 159262306a36Sopenharmony_ci pci_unregister_driver(&iwl_pci_driver); 159362306a36Sopenharmony_ci} 1594