The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/dev/iwlwifi/cfg/7000.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
    2 /*
    3  * Copyright (C) 2012-2014, 2018-2020 Intel Corporation
    4  * Copyright (C) 2013-2014 Intel Mobile Communications GmbH
    5  * Copyright (C) 2015 Intel Deutschland GmbH
    6  */
    7 #include <linux/module.h>
    8 #include <linux/stringify.h>
    9 #include "iwl-config.h"
   10 
   11 /* Highest firmware API version supported */
   12 #define IWL7260_UCODE_API_MAX   17
   13 #define IWL7265_UCODE_API_MAX   17
   14 #define IWL7265D_UCODE_API_MAX  29
   15 #define IWL3168_UCODE_API_MAX   29
   16 
   17 /* Lowest firmware API version supported */
   18 #define IWL7260_UCODE_API_MIN   17
   19 #define IWL7265_UCODE_API_MIN   17
   20 #define IWL7265D_UCODE_API_MIN  22
   21 #define IWL3168_UCODE_API_MIN   22
   22 
   23 /* NVM versions */
   24 #define IWL7260_NVM_VERSION             0x0a1d
   25 #define IWL3160_NVM_VERSION             0x709
   26 #define IWL3165_NVM_VERSION             0x709
   27 #define IWL3168_NVM_VERSION             0xd01
   28 #define IWL7265_NVM_VERSION             0x0a1d
   29 #define IWL7265D_NVM_VERSION            0x0c11
   30 
   31 /* DCCM offsets and lengths */
   32 #define IWL7000_DCCM_OFFSET             0x800000
   33 #define IWL7260_DCCM_LEN                0x14000
   34 #define IWL3160_DCCM_LEN                0x10000
   35 #define IWL7265_DCCM_LEN                0x17A00
   36 
   37 #define IWL7260_FW_PRE "iwlwifi-7260-"
   38 #define IWL7260_MODULE_FIRMWARE(api) IWL7260_FW_PRE __stringify(api) ".ucode"
   39 
   40 #define IWL3160_FW_PRE "iwlwifi-3160-"
   41 #define IWL3160_MODULE_FIRMWARE(api) IWL3160_FW_PRE __stringify(api) ".ucode"
   42 
   43 #define IWL3168_FW_PRE "iwlwifi-3168-"
   44 #define IWL3168_MODULE_FIRMWARE(api) IWL3168_FW_PRE __stringify(api) ".ucode"
   45 
   46 #define IWL7265_FW_PRE "iwlwifi-7265-"
   47 #define IWL7265_MODULE_FIRMWARE(api) IWL7265_FW_PRE __stringify(api) ".ucode"
   48 
   49 #define IWL7265D_FW_PRE "iwlwifi-7265D-"
   50 #define IWL7265D_MODULE_FIRMWARE(api) IWL7265D_FW_PRE __stringify(api) ".ucode"
   51 
   52 static const struct iwl_base_params iwl7000_base_params = {
   53         .eeprom_size = OTP_LOW_IMAGE_SIZE_16K,
   54         .num_of_queues = 31,
   55         .max_tfd_queue_size = 256,
   56         .shadow_ram_support = true,
   57         .led_compensation = 57,
   58         .wd_timeout = IWL_LONG_WD_TIMEOUT,
   59         .max_event_log_size = 512,
   60         .shadow_reg_enable = true,
   61         .pcie_l1_allowed = true,
   62         .apmg_wake_up_wa = true,
   63 };
   64 
   65 static const struct iwl_tt_params iwl7000_high_temp_tt_params = {
   66         .ct_kill_entry = 118,
   67         .ct_kill_exit = 96,
   68         .ct_kill_duration = 5,
   69         .dynamic_smps_entry = 114,
   70         .dynamic_smps_exit = 110,
   71         .tx_protection_entry = 114,
   72         .tx_protection_exit = 108,
   73         .tx_backoff = {
   74                 {.temperature = 112, .backoff = 300},
   75                 {.temperature = 113, .backoff = 800},
   76                 {.temperature = 114, .backoff = 1500},
   77                 {.temperature = 115, .backoff = 3000},
   78                 {.temperature = 116, .backoff = 5000},
   79                 {.temperature = 117, .backoff = 10000},
   80         },
   81         .support_ct_kill = true,
   82         .support_dynamic_smps = true,
   83         .support_tx_protection = true,
   84         .support_tx_backoff = true,
   85 };
   86 
   87 static const struct iwl_ht_params iwl7000_ht_params = {
   88         .stbc = true,
   89         .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ),
   90 };
   91 
   92 #define IWL_DEVICE_7000_COMMON                                  \
   93         .trans.device_family = IWL_DEVICE_FAMILY_7000,          \
   94         .trans.base_params = &iwl7000_base_params,              \
   95         .led_mode = IWL_LED_RF_STATE,                           \
   96         .nvm_hw_section_num = 0,                                \
   97         .non_shared_ant = ANT_A,                                \
   98         .dccm_offset = IWL7000_DCCM_OFFSET
   99 
  100 #define IWL_DEVICE_7000                                         \
  101         IWL_DEVICE_7000_COMMON,                                 \
  102         .ucode_api_max = IWL7260_UCODE_API_MAX,                 \
  103         .ucode_api_min = IWL7260_UCODE_API_MIN
  104 
  105 #define IWL_DEVICE_7005                                         \
  106         IWL_DEVICE_7000_COMMON,                                 \
  107         .ucode_api_max = IWL7265_UCODE_API_MAX,                 \
  108         .ucode_api_min = IWL7265_UCODE_API_MIN
  109 
  110 #define IWL_DEVICE_3008                                         \
  111         IWL_DEVICE_7000_COMMON,                                 \
  112         .ucode_api_max = IWL3168_UCODE_API_MAX,                 \
  113         .ucode_api_min = IWL3168_UCODE_API_MIN
  114 
  115 #define IWL_DEVICE_7005D                                        \
  116         IWL_DEVICE_7000_COMMON,                                 \
  117         .ucode_api_max = IWL7265D_UCODE_API_MAX,                \
  118         .ucode_api_min = IWL7265D_UCODE_API_MIN
  119 
  120 const struct iwl_cfg iwl7260_2ac_cfg = {
  121         .name = "Intel(R) Dual Band Wireless AC 7260",
  122         .fw_name_pre = IWL7260_FW_PRE,
  123         IWL_DEVICE_7000,
  124         .ht_params = &iwl7000_ht_params,
  125         .nvm_ver = IWL7260_NVM_VERSION,
  126         .host_interrupt_operation_mode = true,
  127         .lp_xtal_workaround = true,
  128         .dccm_len = IWL7260_DCCM_LEN,
  129 };
  130 
  131 const struct iwl_cfg iwl7260_2ac_cfg_high_temp = {
  132         .name = "Intel(R) Dual Band Wireless AC 7260",
  133         .fw_name_pre = IWL7260_FW_PRE,
  134         IWL_DEVICE_7000,
  135         .ht_params = &iwl7000_ht_params,
  136         .nvm_ver = IWL7260_NVM_VERSION,
  137         .high_temp = true,
  138         .host_interrupt_operation_mode = true,
  139         .lp_xtal_workaround = true,
  140         .dccm_len = IWL7260_DCCM_LEN,
  141         .thermal_params = &iwl7000_high_temp_tt_params,
  142 };
  143 
  144 const struct iwl_cfg iwl7260_2n_cfg = {
  145         .name = "Intel(R) Dual Band Wireless N 7260",
  146         .fw_name_pre = IWL7260_FW_PRE,
  147         IWL_DEVICE_7000,
  148         .ht_params = &iwl7000_ht_params,
  149         .nvm_ver = IWL7260_NVM_VERSION,
  150         .host_interrupt_operation_mode = true,
  151         .lp_xtal_workaround = true,
  152         .dccm_len = IWL7260_DCCM_LEN,
  153 };
  154 
  155 const struct iwl_cfg iwl7260_n_cfg = {
  156         .name = "Intel(R) Wireless N 7260",
  157         .fw_name_pre = IWL7260_FW_PRE,
  158         IWL_DEVICE_7000,
  159         .ht_params = &iwl7000_ht_params,
  160         .nvm_ver = IWL7260_NVM_VERSION,
  161         .host_interrupt_operation_mode = true,
  162         .lp_xtal_workaround = true,
  163         .dccm_len = IWL7260_DCCM_LEN,
  164 };
  165 
  166 const struct iwl_cfg iwl3160_2ac_cfg = {
  167         .name = "Intel(R) Dual Band Wireless AC 3160",
  168         .fw_name_pre = IWL3160_FW_PRE,
  169         IWL_DEVICE_7000,
  170         .ht_params = &iwl7000_ht_params,
  171         .nvm_ver = IWL3160_NVM_VERSION,
  172         .host_interrupt_operation_mode = true,
  173         .dccm_len = IWL3160_DCCM_LEN,
  174 };
  175 
  176 const struct iwl_cfg iwl3160_2n_cfg = {
  177         .name = "Intel(R) Dual Band Wireless N 3160",
  178         .fw_name_pre = IWL3160_FW_PRE,
  179         IWL_DEVICE_7000,
  180         .ht_params = &iwl7000_ht_params,
  181         .nvm_ver = IWL3160_NVM_VERSION,
  182         .host_interrupt_operation_mode = true,
  183         .dccm_len = IWL3160_DCCM_LEN,
  184 };
  185 
  186 const struct iwl_cfg iwl3160_n_cfg = {
  187         .name = "Intel(R) Wireless N 3160",
  188         .fw_name_pre = IWL3160_FW_PRE,
  189         IWL_DEVICE_7000,
  190         .ht_params = &iwl7000_ht_params,
  191         .nvm_ver = IWL3160_NVM_VERSION,
  192         .host_interrupt_operation_mode = true,
  193         .dccm_len = IWL3160_DCCM_LEN,
  194 };
  195 
  196 static const struct iwl_pwr_tx_backoff iwl7265_pwr_tx_backoffs[] = {
  197         {.pwr = 1600, .backoff = 0},
  198         {.pwr = 1300, .backoff = 467},
  199         {.pwr = 900,  .backoff = 1900},
  200         {.pwr = 800, .backoff = 2630},
  201         {.pwr = 700, .backoff = 3720},
  202         {.pwr = 600, .backoff = 5550},
  203         {.pwr = 500, .backoff = 9350},
  204         {0},
  205 };
  206 
  207 static const struct iwl_ht_params iwl7265_ht_params = {
  208         .stbc = true,
  209         .ldpc = true,
  210         .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ),
  211 };
  212 
  213 const struct iwl_cfg iwl3165_2ac_cfg = {
  214         .name = "Intel(R) Dual Band Wireless AC 3165",
  215         .fw_name_pre = IWL7265D_FW_PRE,
  216         IWL_DEVICE_7005D,
  217         .ht_params = &iwl7000_ht_params,
  218         .nvm_ver = IWL3165_NVM_VERSION,
  219         .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
  220         .dccm_len = IWL7265_DCCM_LEN,
  221 };
  222 
  223 const struct iwl_cfg iwl3168_2ac_cfg = {
  224         .name = "Intel(R) Dual Band Wireless AC 3168",
  225         .fw_name_pre = IWL3168_FW_PRE,
  226         IWL_DEVICE_3008,
  227         .ht_params = &iwl7000_ht_params,
  228         .nvm_ver = IWL3168_NVM_VERSION,
  229         .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
  230         .dccm_len = IWL7265_DCCM_LEN,
  231         .nvm_type = IWL_NVM_SDP,
  232 };
  233 
  234 const struct iwl_cfg iwl7265_2ac_cfg = {
  235         .name = "Intel(R) Dual Band Wireless AC 7265",
  236         .fw_name_pre = IWL7265_FW_PRE,
  237         IWL_DEVICE_7005,
  238         .ht_params = &iwl7265_ht_params,
  239         .nvm_ver = IWL7265_NVM_VERSION,
  240         .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
  241         .dccm_len = IWL7265_DCCM_LEN,
  242 };
  243 
  244 const struct iwl_cfg iwl7265_2n_cfg = {
  245         .name = "Intel(R) Dual Band Wireless N 7265",
  246         .fw_name_pre = IWL7265_FW_PRE,
  247         IWL_DEVICE_7005,
  248         .ht_params = &iwl7265_ht_params,
  249         .nvm_ver = IWL7265_NVM_VERSION,
  250         .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
  251         .dccm_len = IWL7265_DCCM_LEN,
  252 };
  253 
  254 const struct iwl_cfg iwl7265_n_cfg = {
  255         .name = "Intel(R) Wireless N 7265",
  256         .fw_name_pre = IWL7265_FW_PRE,
  257         IWL_DEVICE_7005,
  258         .ht_params = &iwl7265_ht_params,
  259         .nvm_ver = IWL7265_NVM_VERSION,
  260         .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
  261         .dccm_len = IWL7265_DCCM_LEN,
  262 };
  263 
  264 const struct iwl_cfg iwl7265d_2ac_cfg = {
  265         .name = "Intel(R) Dual Band Wireless AC 7265",
  266         .fw_name_pre = IWL7265D_FW_PRE,
  267         IWL_DEVICE_7005D,
  268         .ht_params = &iwl7265_ht_params,
  269         .nvm_ver = IWL7265D_NVM_VERSION,
  270         .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
  271         .dccm_len = IWL7265_DCCM_LEN,
  272 };
  273 
  274 const struct iwl_cfg iwl7265d_2n_cfg = {
  275         .name = "Intel(R) Dual Band Wireless N 7265",
  276         .fw_name_pre = IWL7265D_FW_PRE,
  277         IWL_DEVICE_7005D,
  278         .ht_params = &iwl7265_ht_params,
  279         .nvm_ver = IWL7265D_NVM_VERSION,
  280         .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
  281         .dccm_len = IWL7265_DCCM_LEN,
  282 };
  283 
  284 const struct iwl_cfg iwl7265d_n_cfg = {
  285         .name = "Intel(R) Wireless N 7265",
  286         .fw_name_pre = IWL7265D_FW_PRE,
  287         IWL_DEVICE_7005D,
  288         .ht_params = &iwl7265_ht_params,
  289         .nvm_ver = IWL7265D_NVM_VERSION,
  290         .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
  291         .dccm_len = IWL7265_DCCM_LEN,
  292 };
  293 
  294 MODULE_FIRMWARE(IWL7260_MODULE_FIRMWARE(IWL7260_UCODE_API_MAX));
  295 MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL7260_UCODE_API_MAX));
  296 MODULE_FIRMWARE(IWL3168_MODULE_FIRMWARE(IWL3168_UCODE_API_MAX));
  297 MODULE_FIRMWARE(IWL7265_MODULE_FIRMWARE(IWL7265_UCODE_API_MAX));
  298 MODULE_FIRMWARE(IWL7265D_MODULE_FIRMWARE(IWL7265D_UCODE_API_MAX));

Cache object: e25b0354914217e773284e3b91df4f2d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.