Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
0002 /*
0003  * Copyright (C) 2015-2017 Intel Deutschland GmbH
0004  * Copyright (C) 2018-2021 Intel Corporation
0005  */
0006 #include <linux/module.h>
0007 #include <linux/stringify.h>
0008 #include "iwl-config.h"
0009 #include "fw/file.h"
0010 #include "iwl-prph.h"
0011 
0012 /* Highest firmware API version supported */
0013 #define IWL9000_UCODE_API_MAX   46
0014 
0015 /* Lowest firmware API version supported */
0016 #define IWL9000_UCODE_API_MIN   30
0017 
0018 /* NVM versions */
0019 #define IWL9000_NVM_VERSION     0x0a1d
0020 
0021 /* Memory offsets and lengths */
0022 #define IWL9000_DCCM_OFFSET     0x800000
0023 #define IWL9000_DCCM_LEN        0x18000
0024 #define IWL9000_DCCM2_OFFSET        0x880000
0025 #define IWL9000_DCCM2_LEN       0x8000
0026 #define IWL9000_SMEM_OFFSET     0x400000
0027 #define IWL9000_SMEM_LEN        0x68000
0028 
0029 #define  IWL9000_FW_PRE "iwlwifi-9000-pu-b0-jf-b0-"
0030 #define  IWL9260_FW_PRE "iwlwifi-9260-th-b0-jf-b0-"
0031 #define IWL9000_MODULE_FIRMWARE(api) \
0032     IWL9000_FW_PRE __stringify(api) ".ucode"
0033 #define IWL9260_MODULE_FIRMWARE(api) \
0034     IWL9260_FW_PRE __stringify(api) ".ucode"
0035 
0036 static const struct iwl_base_params iwl9000_base_params = {
0037     .eeprom_size = OTP_LOW_IMAGE_SIZE_32K,
0038     .num_of_queues = 31,
0039     .max_tfd_queue_size = 256,
0040     .shadow_ram_support = true,
0041     .led_compensation = 57,
0042     .wd_timeout = IWL_LONG_WD_TIMEOUT,
0043     .max_event_log_size = 512,
0044     .shadow_reg_enable = true,
0045     .pcie_l1_allowed = true,
0046 };
0047 
0048 static const struct iwl_ht_params iwl9000_ht_params = {
0049     .stbc = true,
0050     .ldpc = true,
0051     .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ),
0052 };
0053 
0054 static const struct iwl_tt_params iwl9000_tt_params = {
0055     .ct_kill_entry = 115,
0056     .ct_kill_exit = 93,
0057     .ct_kill_duration = 5,
0058     .dynamic_smps_entry = 111,
0059     .dynamic_smps_exit = 107,
0060     .tx_protection_entry = 112,
0061     .tx_protection_exit = 105,
0062     .tx_backoff = {
0063         {.temperature = 110, .backoff = 200},
0064         {.temperature = 111, .backoff = 600},
0065         {.temperature = 112, .backoff = 1200},
0066         {.temperature = 113, .backoff = 2000},
0067         {.temperature = 114, .backoff = 4000},
0068     },
0069     .support_ct_kill = true,
0070     .support_dynamic_smps = true,
0071     .support_tx_protection = true,
0072     .support_tx_backoff = true,
0073 };
0074 
0075 #define IWL_DEVICE_9000                         \
0076     .ucode_api_max = IWL9000_UCODE_API_MAX,             \
0077     .ucode_api_min = IWL9000_UCODE_API_MIN,             \
0078     .led_mode = IWL_LED_RF_STATE,                   \
0079     .nvm_hw_section_num = 10,                   \
0080     .non_shared_ant = ANT_B,                    \
0081     .dccm_offset = IWL9000_DCCM_OFFSET,             \
0082     .dccm_len = IWL9000_DCCM_LEN,                   \
0083     .dccm2_offset = IWL9000_DCCM2_OFFSET,               \
0084     .dccm2_len = IWL9000_DCCM2_LEN,                 \
0085     .smem_offset = IWL9000_SMEM_OFFSET,             \
0086     .smem_len = IWL9000_SMEM_LEN,                   \
0087     .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,       \
0088     .thermal_params = &iwl9000_tt_params,               \
0089     .apmg_not_supported = true,                 \
0090     .num_rbds = 512,                        \
0091     .vht_mu_mimo_supported = true,                  \
0092     .mac_addr_from_csr = 0x380,                 \
0093     .nvm_type = IWL_NVM_EXT,                    \
0094     .dbgc_supported = true,                     \
0095     .min_umac_error_event_table = 0x800000,             \
0096     .d3_debug_data_base_addr = 0x401000,                \
0097     .d3_debug_data_length = 92 * 1024,              \
0098     .ht_params = &iwl9000_ht_params,                \
0099     .nvm_ver = IWL9000_NVM_VERSION,                 \
0100     .mon_smem_regs = {                      \
0101         .write_ptr = {                      \
0102             .addr = LDBG_M2S_BUF_WPTR,          \
0103             .mask = LDBG_M2S_BUF_WPTR_VAL_MSK,      \
0104         },                          \
0105         .cycle_cnt = {                      \
0106             .addr = LDBG_M2S_BUF_WRAP_CNT,          \
0107             .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK,      \
0108         },                          \
0109     },                              \
0110     .mon_dram_regs = {                      \
0111         .write_ptr = {                      \
0112             .addr = MON_BUFF_WRPTR_VER2,            \
0113             .mask = 0xffffffff,             \
0114         },                          \
0115         .cycle_cnt = {                      \
0116             .addr = MON_BUFF_CYCLE_CNT_VER2,        \
0117             .mask = 0xffffffff,             \
0118         },                          \
0119     }
0120 
0121 const struct iwl_cfg_trans_params iwl9000_trans_cfg = {
0122     .device_family = IWL_DEVICE_FAMILY_9000,
0123     .base_params = &iwl9000_base_params,
0124     .mq_rx_supported = true,
0125     .rf_id = true,
0126 };
0127 
0128 const struct iwl_cfg_trans_params iwl9560_trans_cfg = {
0129     .device_family = IWL_DEVICE_FAMILY_9000,
0130     .base_params = &iwl9000_base_params,
0131     .mq_rx_supported = true,
0132     .rf_id = true,
0133     .integrated = true,
0134     .xtal_latency = 650,
0135 };
0136 
0137 const struct iwl_cfg_trans_params iwl9560_long_latency_trans_cfg = {
0138     .device_family = IWL_DEVICE_FAMILY_9000,
0139     .base_params = &iwl9000_base_params,
0140     .mq_rx_supported = true,
0141     .rf_id = true,
0142     .integrated = true,
0143     .xtal_latency = 2820,
0144 };
0145 
0146 const struct iwl_cfg_trans_params iwl9560_shared_clk_trans_cfg = {
0147     .device_family = IWL_DEVICE_FAMILY_9000,
0148     .base_params = &iwl9000_base_params,
0149     .mq_rx_supported = true,
0150     .rf_id = true,
0151     .integrated = true,
0152     .xtal_latency = 670,
0153     .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
0154 };
0155 
0156 const char iwl9162_name[] = "Intel(R) Wireless-AC 9162";
0157 const char iwl9260_name[] = "Intel(R) Wireless-AC 9260";
0158 const char iwl9260_1_name[] = "Intel(R) Wireless-AC 9260-1";
0159 const char iwl9270_name[] = "Intel(R) Wireless-AC 9270";
0160 const char iwl9461_name[] = "Intel(R) Wireless-AC 9461";
0161 const char iwl9462_name[] = "Intel(R) Wireless-AC 9462";
0162 const char iwl9560_name[] = "Intel(R) Wireless-AC 9560";
0163 const char iwl9162_160_name[] = "Intel(R) Wireless-AC 9162 160MHz";
0164 const char iwl9260_160_name[] = "Intel(R) Wireless-AC 9260 160MHz";
0165 const char iwl9270_160_name[] = "Intel(R) Wireless-AC 9270 160MHz";
0166 const char iwl9461_160_name[] = "Intel(R) Wireless-AC 9461 160MHz";
0167 const char iwl9462_160_name[] = "Intel(R) Wireless-AC 9462 160MHz";
0168 const char iwl9560_160_name[] = "Intel(R) Wireless-AC 9560 160MHz";
0169 
0170 const char iwl9260_killer_1550_name[] =
0171     "Killer (R) Wireless-AC 1550 Wireless Network Adapter (9260NGW) 160MHz";
0172 const char iwl9560_killer_1550i_name[] =
0173     "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)";
0174 const char iwl9560_killer_1550i_160_name[] =
0175     "Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) 160MHz";
0176 const char iwl9560_killer_1550s_name[] =
0177     "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)";
0178 const char iwl9560_killer_1550s_160_name[] =
0179     "Killer(R) Wireless-AC 1550s Wireless Network Adapter (9560D2W) 160MHz";
0180 
0181 const struct iwl_cfg iwl9260_2ac_cfg = {
0182     .fw_name_pre = IWL9260_FW_PRE,
0183     IWL_DEVICE_9000,
0184 };
0185 
0186 const struct iwl_cfg iwl9560_2ac_cfg_soc = {
0187     .fw_name_pre = IWL9000_FW_PRE,
0188     IWL_DEVICE_9000,
0189 };
0190 
0191 MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
0192 MODULE_FIRMWARE(IWL9260_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));