root/drivers/net/wireless/intel/iwlwifi/cfg/9000.c

/* [<][>][^][v][top][bottom][index][help] */
   1 /******************************************************************************
   2  *
   3  * This file is provided under a dual BSD/GPLv2 license.  When using or
   4  * redistributing this file, you may do so under either license.
   5  *
   6  * GPL LICENSE SUMMARY
   7  *
   8  * Copyright(c) 2015-2017 Intel Deutschland GmbH
   9  * Copyright (C) 2018 - 2019 Intel Corporation
  10  *
  11  * This program is free software; you can redistribute it and/or modify
  12  * it under the terms of version 2 of the GNU General Public License as
  13  * published by the Free Software Foundation.
  14  *
  15  * This program is distributed in the hope that it will be useful, but
  16  * WITHOUT ANY WARRANTY; without even the implied warranty of
  17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  18  * General Public License for more details.
  19  *
  20  * BSD LICENSE
  21  *
  22  * Copyright(c) 2015-2017 Intel Deutschland GmbH
  23  * Copyright (C) 2018 - 2019 Intel Corporation
  24  * All rights reserved.
  25  *
  26  * Redistribution and use in source and binary forms, with or without
  27  * modification, are permitted provided that the following conditions
  28  * are met:
  29  *
  30  *  * Redistributions of source code must retain the above copyright
  31  *    notice, this list of conditions and the following disclaimer.
  32  *  * Redistributions in binary form must reproduce the above copyright
  33  *    notice, this list of conditions and the following disclaimer in
  34  *    the documentation and/or other materials provided with the
  35  *    distribution.
  36  *  * Neither the name Intel Corporation nor the names of its
  37  *    contributors may be used to endorse or promote products derived
  38  *    from this software without specific prior written permission.
  39  *
  40  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  41  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  42  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  43  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  44  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  45  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  46  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  47  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  48  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  49  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  50  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  51  *
  52  *****************************************************************************/
  53 
  54 #include <linux/module.h>
  55 #include <linux/stringify.h>
  56 #include "iwl-config.h"
  57 #include "fw/file.h"
  58 
  59 /* Highest firmware API version supported */
  60 #define IWL9000_UCODE_API_MAX   46
  61 
  62 /* Lowest firmware API version supported */
  63 #define IWL9000_UCODE_API_MIN   30
  64 
  65 /* NVM versions */
  66 #define IWL9000_NVM_VERSION             0x0a1d
  67 
  68 /* Memory offsets and lengths */
  69 #define IWL9000_DCCM_OFFSET             0x800000
  70 #define IWL9000_DCCM_LEN                0x18000
  71 #define IWL9000_DCCM2_OFFSET            0x880000
  72 #define IWL9000_DCCM2_LEN               0x8000
  73 #define IWL9000_SMEM_OFFSET             0x400000
  74 #define IWL9000_SMEM_LEN                0x68000
  75 
  76 #define  IWL9000_FW_PRE "iwlwifi-9000-pu-b0-jf-b0-"
  77 #define  IWL9260_FW_PRE "iwlwifi-9260-th-b0-jf-b0-"
  78 #define IWL9000_MODULE_FIRMWARE(api) \
  79         IWL9000_FW_PRE __stringify(api) ".ucode"
  80 #define IWL9260_MODULE_FIRMWARE(api) \
  81         IWL9260_FW_PRE __stringify(api) ".ucode"
  82 
  83 static const struct iwl_base_params iwl9000_base_params = {
  84         .eeprom_size = OTP_LOW_IMAGE_SIZE_32K,
  85         .num_of_queues = 31,
  86         .max_tfd_queue_size = 256,
  87         .shadow_ram_support = true,
  88         .led_compensation = 57,
  89         .wd_timeout = IWL_LONG_WD_TIMEOUT,
  90         .max_event_log_size = 512,
  91         .shadow_reg_enable = true,
  92         .pcie_l1_allowed = true,
  93 };
  94 
  95 static const struct iwl_ht_params iwl9000_ht_params = {
  96         .stbc = true,
  97         .ldpc = true,
  98         .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ),
  99 };
 100 
 101 static const struct iwl_tt_params iwl9000_tt_params = {
 102         .ct_kill_entry = 115,
 103         .ct_kill_exit = 93,
 104         .ct_kill_duration = 5,
 105         .dynamic_smps_entry = 111,
 106         .dynamic_smps_exit = 107,
 107         .tx_protection_entry = 112,
 108         .tx_protection_exit = 105,
 109         .tx_backoff = {
 110                 {.temperature = 110, .backoff = 200},
 111                 {.temperature = 111, .backoff = 600},
 112                 {.temperature = 112, .backoff = 1200},
 113                 {.temperature = 113, .backoff = 2000},
 114                 {.temperature = 114, .backoff = 4000},
 115         },
 116         .support_ct_kill = true,
 117         .support_dynamic_smps = true,
 118         .support_tx_protection = true,
 119         .support_tx_backoff = true,
 120 };
 121 
 122 #define IWL_DEVICE_9000                                                 \
 123         .ucode_api_max = IWL9000_UCODE_API_MAX,                         \
 124         .ucode_api_min = IWL9000_UCODE_API_MIN,                         \
 125         .trans.device_family = IWL_DEVICE_FAMILY_9000,                  \
 126         .trans.base_params = &iwl9000_base_params,                      \
 127         .led_mode = IWL_LED_RF_STATE,                                   \
 128         .nvm_hw_section_num = 10,                                       \
 129         .non_shared_ant = ANT_B,                                        \
 130         .dccm_offset = IWL9000_DCCM_OFFSET,                             \
 131         .dccm_len = IWL9000_DCCM_LEN,                                   \
 132         .dccm2_offset = IWL9000_DCCM2_OFFSET,                           \
 133         .dccm2_len = IWL9000_DCCM2_LEN,                                 \
 134         .smem_offset = IWL9000_SMEM_OFFSET,                             \
 135         .smem_len = IWL9000_SMEM_LEN,                                   \
 136         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,           \
 137         .thermal_params = &iwl9000_tt_params,                           \
 138         .apmg_not_supported = true,                                     \
 139         .trans.mq_rx_supported = true,                                  \
 140         .vht_mu_mimo_supported = true,                                  \
 141         .mac_addr_from_csr = true,                                      \
 142         .trans.rf_id = true,                                            \
 143         .nvm_type = IWL_NVM_EXT,                                        \
 144         .dbgc_supported = true,                                         \
 145         .min_umac_error_event_table = 0x800000,                         \
 146         .trans.csr = &iwl_csr_v1,                                       \
 147         .d3_debug_data_base_addr = 0x401000,                            \
 148         .d3_debug_data_length = 92 * 1024,                              \
 149         .ht_params = &iwl9000_ht_params,                                \
 150         .nvm_ver = IWL9000_NVM_VERSION,                                 \
 151         .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,            \
 152         .fw_mon_smem_write_ptr_addr = 0xa0476c,                         \
 153         .fw_mon_smem_write_ptr_msk = 0xfffff,                           \
 154         .fw_mon_smem_cycle_cnt_ptr_addr = 0xa04774,                     \
 155         .fw_mon_smem_cycle_cnt_ptr_msk = 0xfffff
 156 
 157 
 158 const struct iwl_cfg iwl9160_2ac_cfg = {
 159         .name = "Intel(R) Dual Band Wireless AC 9160",
 160         .fw_name_pre = IWL9260_FW_PRE,
 161         IWL_DEVICE_9000,
 162 };
 163 
 164 const struct iwl_cfg iwl9260_2ac_cfg = {
 165         .name = "Intel(R) Dual Band Wireless AC 9260",
 166         .fw_name_pre = IWL9260_FW_PRE,
 167         IWL_DEVICE_9000,
 168 };
 169 
 170 const struct iwl_cfg iwl9260_2ac_160_cfg = {
 171         .name = "Intel(R) Wireless-AC 9260 160MHz",
 172         .fw_name_pre = IWL9260_FW_PRE,
 173         IWL_DEVICE_9000,
 174 };
 175 
 176 const struct iwl_cfg iwl9260_killer_2ac_cfg = {
 177         .name = "Killer (R) Wireless-AC 1550 Wireless Network Adapter (9260NGW)",
 178         .fw_name_pre = IWL9260_FW_PRE,
 179         IWL_DEVICE_9000,
 180 };
 181 
 182 const struct iwl_cfg iwl9270_2ac_cfg = {
 183         .name = "Intel(R) Dual Band Wireless AC 9270",
 184         .fw_name_pre = IWL9260_FW_PRE,
 185         IWL_DEVICE_9000,
 186 };
 187 
 188 const struct iwl_cfg iwl9460_2ac_cfg = {
 189         .name = "Intel(R) Dual Band Wireless AC 9460",
 190         .fw_name_pre = IWL9260_FW_PRE,
 191         IWL_DEVICE_9000,
 192 };
 193 
 194 const struct iwl_cfg iwl9460_2ac_cfg_soc = {
 195         .name = "Intel(R) Dual Band Wireless AC 9460",
 196         .fw_name_pre = IWL9000_FW_PRE,
 197         IWL_DEVICE_9000,
 198         .integrated = true,
 199         .soc_latency = 5000,
 200 };
 201 
 202 const struct iwl_cfg iwl9461_2ac_cfg_soc = {
 203         .name = "Intel(R) Dual Band Wireless AC 9461",
 204         .fw_name_pre = IWL9000_FW_PRE,
 205         IWL_DEVICE_9000,
 206         .integrated = true,
 207         .soc_latency = 5000,
 208 };
 209 
 210 const struct iwl_cfg iwl9462_2ac_cfg_soc = {
 211         .name = "Intel(R) Dual Band Wireless AC 9462",
 212         .fw_name_pre = IWL9000_FW_PRE,
 213         IWL_DEVICE_9000,
 214         .integrated = true,
 215         .soc_latency = 5000,
 216 };
 217 
 218 const struct iwl_cfg iwl9560_2ac_cfg = {
 219         .name = "Intel(R) Dual Band Wireless AC 9560",
 220         .fw_name_pre = IWL9260_FW_PRE,
 221         IWL_DEVICE_9000,
 222 };
 223 
 224 const struct iwl_cfg iwl9560_2ac_160_cfg = {
 225         .name = "Intel(R) Wireless-AC 9560 160MHz",
 226         .fw_name_pre = IWL9260_FW_PRE,
 227         IWL_DEVICE_9000,
 228 };
 229 
 230 const struct iwl_cfg iwl9560_2ac_cfg_soc = {
 231         .name = "Intel(R) Dual Band Wireless AC 9560",
 232         .fw_name_pre = IWL9000_FW_PRE,
 233         IWL_DEVICE_9000,
 234         .integrated = true,
 235         .soc_latency = 5000,
 236 };
 237 
 238 const struct iwl_cfg iwl9560_2ac_160_cfg_soc = {
 239         .name = "Intel(R) Wireless-AC 9560 160MHz",
 240         .fw_name_pre = IWL9000_FW_PRE,
 241         IWL_DEVICE_9000,
 242         .integrated = true,
 243         .soc_latency = 5000,
 244 };
 245 
 246 const struct iwl_cfg iwl9560_killer_2ac_cfg_soc = {
 247         .name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)",
 248         .fw_name_pre = IWL9000_FW_PRE,
 249         IWL_DEVICE_9000,
 250         .integrated = true,
 251         .soc_latency = 5000,
 252 };
 253 
 254 const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc = {
 255         .name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)",
 256         .fw_name_pre = IWL9000_FW_PRE,
 257         IWL_DEVICE_9000,
 258         .integrated = true,
 259         .soc_latency = 5000,
 260 };
 261 
 262 const struct iwl_cfg iwl9460_2ac_cfg_shared_clk = {
 263         .name = "Intel(R) Dual Band Wireless AC 9460",
 264         .fw_name_pre = IWL9000_FW_PRE,
 265         IWL_DEVICE_9000,
 266         .integrated = true,
 267         .soc_latency = 5000,
 268         .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
 269 };
 270 
 271 const struct iwl_cfg iwl9461_2ac_cfg_shared_clk = {
 272         .name = "Intel(R) Dual Band Wireless AC 9461",
 273         .fw_name_pre = IWL9000_FW_PRE,
 274         IWL_DEVICE_9000,
 275         .integrated = true,
 276         .soc_latency = 5000,
 277         .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
 278 };
 279 
 280 const struct iwl_cfg iwl9462_2ac_cfg_shared_clk = {
 281         .name = "Intel(R) Dual Band Wireless AC 9462",
 282         .fw_name_pre = IWL9000_FW_PRE,
 283         IWL_DEVICE_9000,
 284         .integrated = true,
 285         .soc_latency = 5000,
 286         .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
 287 };
 288 
 289 const struct iwl_cfg iwl9560_2ac_cfg_shared_clk = {
 290         .name = "Intel(R) Dual Band Wireless AC 9560",
 291         .fw_name_pre = IWL9000_FW_PRE,
 292         IWL_DEVICE_9000,
 293         .integrated = true,
 294         .soc_latency = 5000,
 295         .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
 296 };
 297 
 298 const struct iwl_cfg iwl9560_2ac_160_cfg_shared_clk = {
 299         .name = "Intel(R) Wireless-AC 9560 160MHz",
 300         .fw_name_pre = IWL9000_FW_PRE,
 301         IWL_DEVICE_9000,
 302         .integrated = true,
 303         .soc_latency = 5000,
 304         .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
 305 };
 306 
 307 const struct iwl_cfg iwl9560_killer_2ac_cfg_shared_clk = {
 308         .name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)",
 309         .fw_name_pre = IWL9000_FW_PRE,
 310         IWL_DEVICE_9000,
 311         .integrated = true,
 312         .soc_latency = 5000,
 313         .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
 314 };
 315 
 316 const struct iwl_cfg iwl9560_killer_s_2ac_cfg_shared_clk = {
 317         .name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)",
 318         .fw_name_pre = IWL9000_FW_PRE,
 319         IWL_DEVICE_9000,
 320         .integrated = true,
 321         .soc_latency = 5000,
 322         .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK
 323 };
 324 
 325 MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
 326 MODULE_FIRMWARE(IWL9260_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));

/* [<][>][^][v][top][bottom][index][help] */