Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
0002 /*
0003  * Copyright (C) 2014, 2018-2020 Intel Corporation
0004  * Copyright (C) 2014-2015 Intel Mobile Communications GmbH
0005  * Copyright (C) 2016 Intel Deutschland GmbH
0006  */
0007 #include <linux/module.h>
0008 #include <linux/stringify.h>
0009 #include "iwl-config.h"
0010 
0011 /* Highest firmware API version supported */
0012 #define IWL8000_UCODE_API_MAX   36
0013 #define IWL8265_UCODE_API_MAX   36
0014 
0015 /* Lowest firmware API version supported */
0016 #define IWL8000_UCODE_API_MIN   22
0017 #define IWL8265_UCODE_API_MIN   22
0018 
0019 /* NVM versions */
0020 #define IWL8000_NVM_VERSION     0x0a1d
0021 
0022 /* Memory offsets and lengths */
0023 #define IWL8260_DCCM_OFFSET     0x800000
0024 #define IWL8260_DCCM_LEN        0x18000
0025 #define IWL8260_DCCM2_OFFSET        0x880000
0026 #define IWL8260_DCCM2_LEN       0x8000
0027 #define IWL8260_SMEM_OFFSET     0x400000
0028 #define IWL8260_SMEM_LEN        0x68000
0029 
0030 #define IWL8000_FW_PRE "iwlwifi-8000C-"
0031 #define IWL8000_MODULE_FIRMWARE(api) \
0032     IWL8000_FW_PRE __stringify(api) ".ucode"
0033 
0034 #define IWL8265_FW_PRE "iwlwifi-8265-"
0035 #define IWL8265_MODULE_FIRMWARE(api) \
0036     IWL8265_FW_PRE __stringify(api) ".ucode"
0037 
0038 #define DEFAULT_NVM_FILE_FAMILY_8000C       "nvmData-8000C"
0039 
0040 static const struct iwl_base_params iwl8000_base_params = {
0041     .eeprom_size = OTP_LOW_IMAGE_SIZE_32K,
0042     .num_of_queues = 31,
0043     .max_tfd_queue_size = 256,
0044     .shadow_ram_support = true,
0045     .led_compensation = 57,
0046     .wd_timeout = IWL_LONG_WD_TIMEOUT,
0047     .max_event_log_size = 512,
0048     .shadow_reg_enable = true,
0049     .pcie_l1_allowed = true,
0050 };
0051 
0052 static const struct iwl_ht_params iwl8000_ht_params = {
0053     .stbc = true,
0054     .ldpc = true,
0055     .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ),
0056 };
0057 
0058 static const struct iwl_tt_params iwl8000_tt_params = {
0059     .ct_kill_entry = 115,
0060     .ct_kill_exit = 93,
0061     .ct_kill_duration = 5,
0062     .dynamic_smps_entry = 111,
0063     .dynamic_smps_exit = 107,
0064     .tx_protection_entry = 112,
0065     .tx_protection_exit = 105,
0066     .tx_backoff = {
0067         {.temperature = 110, .backoff = 200},
0068         {.temperature = 111, .backoff = 600},
0069         {.temperature = 112, .backoff = 1200},
0070         {.temperature = 113, .backoff = 2000},
0071         {.temperature = 114, .backoff = 4000},
0072     },
0073     .support_ct_kill = true,
0074     .support_dynamic_smps = true,
0075     .support_tx_protection = true,
0076     .support_tx_backoff = true,
0077 };
0078 
0079 #define IWL_DEVICE_8000_COMMON                      \
0080     .trans.device_family = IWL_DEVICE_FAMILY_8000,          \
0081     .trans.base_params = &iwl8000_base_params,          \
0082     .led_mode = IWL_LED_RF_STATE,                   \
0083     .nvm_hw_section_num = 10,                   \
0084     .features = NETIF_F_RXCSUM,                 \
0085     .non_shared_ant = ANT_A,                    \
0086     .dccm_offset = IWL8260_DCCM_OFFSET,             \
0087     .dccm_len = IWL8260_DCCM_LEN,                   \
0088     .dccm2_offset = IWL8260_DCCM2_OFFSET,               \
0089     .dccm2_len = IWL8260_DCCM2_LEN,                 \
0090     .smem_offset = IWL8260_SMEM_OFFSET,             \
0091     .smem_len = IWL8260_SMEM_LEN,                   \
0092     .default_nvm_file_C_step = DEFAULT_NVM_FILE_FAMILY_8000C,   \
0093     .thermal_params = &iwl8000_tt_params,               \
0094     .apmg_not_supported = true,                 \
0095     .nvm_type = IWL_NVM_EXT,                    \
0096     .dbgc_supported = true,                     \
0097     .min_umac_error_event_table = 0x800000
0098 
0099 #define IWL_DEVICE_8000                         \
0100     IWL_DEVICE_8000_COMMON,                     \
0101     .ucode_api_max = IWL8000_UCODE_API_MAX,             \
0102     .ucode_api_min = IWL8000_UCODE_API_MIN              \
0103 
0104 #define IWL_DEVICE_8260                         \
0105     IWL_DEVICE_8000_COMMON,                     \
0106     .ucode_api_max = IWL8000_UCODE_API_MAX,             \
0107     .ucode_api_min = IWL8000_UCODE_API_MIN              \
0108 
0109 #define IWL_DEVICE_8265                         \
0110     IWL_DEVICE_8000_COMMON,                     \
0111     .ucode_api_max = IWL8265_UCODE_API_MAX,             \
0112     .ucode_api_min = IWL8265_UCODE_API_MIN              \
0113 
0114 const struct iwl_cfg iwl8260_2n_cfg = {
0115     .name = "Intel(R) Dual Band Wireless N 8260",
0116     .fw_name_pre = IWL8000_FW_PRE,
0117     IWL_DEVICE_8260,
0118     .ht_params = &iwl8000_ht_params,
0119     .nvm_ver = IWL8000_NVM_VERSION,
0120 };
0121 
0122 const struct iwl_cfg iwl8260_2ac_cfg = {
0123     .name = "Intel(R) Dual Band Wireless AC 8260",
0124     .fw_name_pre = IWL8000_FW_PRE,
0125     IWL_DEVICE_8260,
0126     .ht_params = &iwl8000_ht_params,
0127     .nvm_ver = IWL8000_NVM_VERSION,
0128 };
0129 
0130 const struct iwl_cfg iwl8265_2ac_cfg = {
0131     .name = "Intel(R) Dual Band Wireless AC 8265",
0132     .fw_name_pre = IWL8265_FW_PRE,
0133     IWL_DEVICE_8265,
0134     .ht_params = &iwl8000_ht_params,
0135     .nvm_ver = IWL8000_NVM_VERSION,
0136     .vht_mu_mimo_supported = true,
0137 };
0138 
0139 const struct iwl_cfg iwl8275_2ac_cfg = {
0140     .name = "Intel(R) Dual Band Wireless AC 8275",
0141     .fw_name_pre = IWL8265_FW_PRE,
0142     IWL_DEVICE_8265,
0143     .ht_params = &iwl8000_ht_params,
0144     .nvm_ver = IWL8000_NVM_VERSION,
0145     .vht_mu_mimo_supported = true,
0146 };
0147 
0148 const struct iwl_cfg iwl4165_2ac_cfg = {
0149     .name = "Intel(R) Dual Band Wireless AC 4165",
0150     .fw_name_pre = IWL8000_FW_PRE,
0151     IWL_DEVICE_8000,
0152     .ht_params = &iwl8000_ht_params,
0153     .nvm_ver = IWL8000_NVM_VERSION,
0154 };
0155 
0156 MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_MAX));
0157 MODULE_FIRMWARE(IWL8265_MODULE_FIRMWARE(IWL8265_UCODE_API_MAX));