xref: /linux/drivers/net/wireless/intel/iwlwifi/cfg/rf-jf.c (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2 /*
3  * Copyright (C) 2015-2017 Intel Deutschland GmbH
4  * Copyright (C) 2018-2021, 2023, 2025 Intel Corporation
5  */
6 #include "iwl-config.h"
7 
8 /* Highest firmware API version supported */
9 #define IWL_JF_UCODE_API_MAX	77
10 
11 /* Lowest firmware API version supported */
12 #define IWL_JF_UCODE_API_MIN	77
13 
14 #define IWL_QU_B_JF_B_FW_PRE		"iwlwifi-Qu-b0-jf-b0"
15 #define IWL_QU_C_JF_B_FW_PRE		"iwlwifi-Qu-c0-jf-b0"
16 #define IWL_QUZ_A_JF_B_FW_PRE		"iwlwifi-QuZ-a0-jf-b0"
17 #define IWL_SO_A_JF_B_FW_PRE		"iwlwifi-so-a0-jf-b0"
18 
19 #define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \
20 	IWL_QUZ_A_JF_B_FW_PRE "-" __stringify(api) ".ucode"
21 #define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \
22 	IWL_QU_B_JF_B_FW_PRE "-" __stringify(api) ".ucode"
23 #define IWL_QU_C_JF_B_MODULE_FIRMWARE(api) \
24 	IWL_QU_C_JF_B_FW_PRE "-" __stringify(api) ".ucode"
25 #define IWL_SO_A_JF_B_MODULE_FIRMWARE(api) \
26 	IWL_SO_A_JF_B_FW_PRE "-" __stringify(api) ".ucode"
27 
28 /* NVM versions */
29 #define IWL_JF_NVM_VERSION		0x0a1d
30 
31 /* Memory offsets and lengths */
32 #define IWL9000_DCCM_OFFSET		0x800000
33 #define IWL9000_DCCM_LEN		0x18000
34 #define IWL9000_DCCM2_OFFSET		0x880000
35 #define IWL9000_DCCM2_LEN		0x8000
36 
37 static const struct iwl_tt_params iwl_jf_tt_params = {
38 	.ct_kill_entry = 115,
39 	.ct_kill_exit = 93,
40 	.ct_kill_duration = 5,
41 	.dynamic_smps_entry = 111,
42 	.dynamic_smps_exit = 107,
43 	.tx_protection_entry = 112,
44 	.tx_protection_exit = 105,
45 	.tx_backoff = {
46 		{.temperature = 110, .backoff = 200},
47 		{.temperature = 111, .backoff = 600},
48 		{.temperature = 112, .backoff = 1200},
49 		{.temperature = 113, .backoff = 2000},
50 		{.temperature = 114, .backoff = 4000},
51 	},
52 	.support_ct_kill = true,
53 	.support_dynamic_smps = true,
54 	.support_tx_protection = true,
55 	.support_tx_backoff = true,
56 };
57 
58 /* these values are ignored if not with Pu/Th MAC firmware, due to offload */
59 #define IWL_DEVICE_JF_PU						\
60 	.dccm_offset = IWL9000_DCCM_OFFSET,				\
61 	.dccm_len = IWL9000_DCCM_LEN,					\
62 	.dccm2_offset = IWL9000_DCCM2_OFFSET,				\
63 	.dccm2_len = IWL9000_DCCM2_LEN,					\
64 	.thermal_params = &iwl_jf_tt_params
65 
66 #define IWL_DEVICE_JF							\
67 	IWL_DEVICE_JF_PU,						\
68 	.led_mode = IWL_LED_RF_STATE,					\
69 	.non_shared_ant = ANT_B,					\
70 	.num_rbds = IWL_NUM_RBDS_NON_HE,				\
71 	.vht_mu_mimo_supported = true,					\
72 	.ht_params = {							\
73 		.stbc = true,						\
74 		.ldpc = true,						\
75 		.ht40_bands = BIT(NL80211_BAND_2GHZ) |			\
76 			      BIT(NL80211_BAND_5GHZ),			\
77 	},								\
78 	.nvm_ver = IWL_JF_NVM_VERSION,					\
79 	.nvm_type = IWL_NVM_EXT,					\
80 	.ucode_api_min = IWL_JF_UCODE_API_MIN,				\
81 	.ucode_api_max = IWL_JF_UCODE_API_MAX
82 
83 const struct iwl_rf_cfg iwl_rf_jf = {
84 	IWL_DEVICE_JF,
85 };
86 
87 const struct iwl_rf_cfg iwl_rf_jf_80mhz = {
88 	IWL_DEVICE_JF,
89 	.bw_limit = 80,
90 };
91 
92 const char iwl9260_name[] = "Intel(R) Wireless-AC 9260";
93 const char iwl9461_name[] = "Intel(R) Wireless-AC 9461";
94 const char iwl9462_name[] = "Intel(R) Wireless-AC 9462";
95 const char iwl9560_name[] = "Intel(R) Wireless-AC 9560";
96 const char iwl9260_160_name[] = "Intel(R) Wireless-AC 9260 160MHz";
97 const char iwl9461_160_name[] = "Intel(R) Wireless-AC 9461 160MHz";
98 const char iwl9462_160_name[] = "Intel(R) Wireless-AC 9462 160MHz";
99 const char iwl9560_160_name[] = "Intel(R) Wireless-AC 9560 160MHz";
100 
101 const char iwl9260_killer_1550_name[] =
102 	"Killer(R) Wireless-AC 1550 Wireless Network Adapter (9260NGW) 160MHz";
103 const char iwl9560_killer_1550i_name[] =
104 	"Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) 160MHz";
105 const char iwl9560_killer_1550s_name[] =
106 	"Killer(R) Wireless-AC 1550s Wireless Network Adapter (9560D2W) 160MHz";
107 
108 MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_JF_UCODE_API_MAX));
109 MODULE_FIRMWARE(IWL_QU_C_JF_B_MODULE_FIRMWARE(IWL_JF_UCODE_API_MAX));
110 MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_JF_UCODE_API_MAX));
111 MODULE_FIRMWARE(IWL_SO_A_JF_B_MODULE_FIRMWARE(IWL_JF_UCODE_API_MAX));
112