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