/******************************************************************************
 *
 * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
 * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
 * Copyright(c) 2015        Intel Deutschland GmbH
 * Copyright(c) 2018        Intel Corporation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *  * Neither the name Intel Corporation nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *****************************************************************************/

#include "third_party/iwlwifi/iwl-config.h"

/* Highest firmware API version supported */
#define IWL7260_UCODE_API_MAX 17
#define IWL7265_UCODE_API_MAX 17
#define IWL7265D_UCODE_API_MAX 29
#define IWL3168_UCODE_API_MAX 29

/* Lowest firmware API version supported */
#define IWL7260_UCODE_API_MIN 17
#define IWL7265_UCODE_API_MIN 17
#define IWL7265D_UCODE_API_MIN 22
#define IWL3168_UCODE_API_MIN 22

/* NVM versions */
#define IWL7260_NVM_VERSION 0x0a1d
#define IWL3160_NVM_VERSION 0x709
#define IWL3165_NVM_VERSION 0x709
#define IWL3168_NVM_VERSION 0xd01
#define IWL7265_NVM_VERSION 0x0a1d
#define IWL7265D_NVM_VERSION 0x0c11

/* DCCM offsets and lengths */
#define IWL7000_DCCM_OFFSET 0x800000
#define IWL7260_DCCM_LEN 0x14000
#define IWL3160_DCCM_LEN 0x10000
#define IWL7265_DCCM_LEN 0x17A00

#define IWL7260_FW_PRE "iwlwifi-7260-"
#define IWL7260_MODULE_FIRMWARE(api) IWL7260_FW_PRE __stringify(api) ".ucode"

#define IWL3160_FW_PRE "iwlwifi-3160-"
#define IWL3160_MODULE_FIRMWARE(api) IWL3160_FW_PRE __stringify(api) ".ucode"

#define IWL3168_FW_PRE "iwlwifi-3168-"
#define IWL3168_MODULE_FIRMWARE(api) IWL3168_FW_PRE __stringify(api) ".ucode"

#define IWL7265_FW_PRE "iwlwifi-7265-"
#define IWL7265_MODULE_FIRMWARE(api) IWL7265_FW_PRE __stringify(api) ".ucode"

#define IWL7265D_FW_PRE "iwlwifi-7265D-"
#define IWL7265D_MODULE_FIRMWARE(api) IWL7265D_FW_PRE __stringify(api) ".ucode"

static const struct iwl_base_params iwl7000_base_params = {
    .eeprom_size = OTP_LOW_IMAGE_SIZE_16K,
    .num_of_queues = 31,
    .max_tfd_queue_size = 256,
    .shadow_ram_support = true,
    .led_compensation = 57,
    .wd_timeout = IWL_LONG_WD_TIMEOUT,
    .max_event_log_size = 512,
    .shadow_reg_enable = true,
    .pcie_l1_allowed = true,
    .apmg_wake_up_wa = true,
};

static const struct iwl_tt_params iwl7000_high_temp_tt_params = {
    .ct_kill_entry = 118,
    .ct_kill_exit = 96,
    .ct_kill_duration = 5,
    .dynamic_smps_entry = 114,
    .dynamic_smps_exit = 110,
    .tx_protection_entry = 114,
    .tx_protection_exit = 108,
    .tx_backoff =
        {
            {.temperature = 112, .backoff = 300},
            {.temperature = 113, .backoff = 800},
            {.temperature = 114, .backoff = 1500},
            {.temperature = 115, .backoff = 3000},
            {.temperature = 116, .backoff = 5000},
            {.temperature = 117, .backoff = 10000},
        },
    .support_ct_kill = true,
    .support_dynamic_smps = true,
    .support_tx_protection = true,
    .support_tx_backoff = true,
};

static const struct iwl_ht_params iwl7000_ht_params = {
    .stbc = true,
    .ht40_bands = BIT(WLAN_INFO_BAND_TWO_GHZ) | BIT(WLAN_INFO_BAND_FIVE_GHZ),
};

#define IWL_DEVICE_7000_COMMON                                                             \
  .device_family = IWL_DEVICE_FAMILY_7000, .base_params = &iwl7000_base_params,            \
  .led_mode = IWL_LED_RF_STATE, .nvm_hw_section_num = 0, .non_shared_ant = ANT_A,          \
  .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, .dccm_offset = IWL7000_DCCM_OFFSET, \
  .csr = &iwl_csr_v1

#define IWL_DEVICE_7000                                           \
  IWL_DEVICE_7000_COMMON, .ucode_api_max = IWL7260_UCODE_API_MAX, \
                          .ucode_api_min = IWL7260_UCODE_API_MIN

#define IWL_DEVICE_7005                                           \
  IWL_DEVICE_7000_COMMON, .ucode_api_max = IWL7265_UCODE_API_MAX, \
                          .ucode_api_min = IWL7265_UCODE_API_MIN

#define IWL_DEVICE_3008                                           \
  IWL_DEVICE_7000_COMMON, .ucode_api_max = IWL3168_UCODE_API_MAX, \
                          .ucode_api_min = IWL3168_UCODE_API_MIN

#define IWL_DEVICE_7005D                                           \
  IWL_DEVICE_7000_COMMON, .ucode_api_max = IWL7265D_UCODE_API_MAX, \
                          .ucode_api_min = IWL7265D_UCODE_API_MIN

const struct iwl_cfg iwl7260_2ac_cfg = {
    .name = "Intel(R) Dual Band Wireless AC 7260",
    .fw_name_pre = IWL7260_FW_PRE,
    IWL_DEVICE_7000,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL7260_NVM_VERSION,
    .host_interrupt_operation_mode = true,
    .lp_xtal_workaround = true,
    .dccm_len = IWL7260_DCCM_LEN,
};

const struct iwl_cfg iwl7260_2ac_cfg_high_temp = {
    .name = "Intel(R) Dual Band Wireless AC 7260",
    .fw_name_pre = IWL7260_FW_PRE,
    IWL_DEVICE_7000,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL7260_NVM_VERSION,
    .high_temp = true,
    .host_interrupt_operation_mode = true,
    .lp_xtal_workaround = true,
    .dccm_len = IWL7260_DCCM_LEN,
    .thermal_params = &iwl7000_high_temp_tt_params,
};

const struct iwl_cfg iwl7260_2n_cfg = {
    .name = "Intel(R) Dual Band Wireless N 7260",
    .fw_name_pre = IWL7260_FW_PRE,
    IWL_DEVICE_7000,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL7260_NVM_VERSION,
    .host_interrupt_operation_mode = true,
    .lp_xtal_workaround = true,
    .dccm_len = IWL7260_DCCM_LEN,
};

const struct iwl_cfg iwl7260_n_cfg = {
    .name = "Intel(R) Wireless N 7260",
    .fw_name_pre = IWL7260_FW_PRE,
    IWL_DEVICE_7000,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL7260_NVM_VERSION,
    .host_interrupt_operation_mode = true,
    .lp_xtal_workaround = true,
    .dccm_len = IWL7260_DCCM_LEN,
};

const struct iwl_cfg iwl3160_2ac_cfg = {
    .name = "Intel(R) Dual Band Wireless AC 3160",
    .fw_name_pre = IWL3160_FW_PRE,
    IWL_DEVICE_7000,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL3160_NVM_VERSION,
    .host_interrupt_operation_mode = true,
    .dccm_len = IWL3160_DCCM_LEN,
};

const struct iwl_cfg iwl3160_2n_cfg = {
    .name = "Intel(R) Dual Band Wireless N 3160",
    .fw_name_pre = IWL3160_FW_PRE,
    IWL_DEVICE_7000,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL3160_NVM_VERSION,
    .host_interrupt_operation_mode = true,
    .dccm_len = IWL3160_DCCM_LEN,
};

const struct iwl_cfg iwl3160_n_cfg = {
    .name = "Intel(R) Wireless N 3160",
    .fw_name_pre = IWL3160_FW_PRE,
    IWL_DEVICE_7000,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL3160_NVM_VERSION,
    .host_interrupt_operation_mode = true,
    .dccm_len = IWL3160_DCCM_LEN,
};

static const struct iwl_pwr_tx_backoff iwl7265_pwr_tx_backoffs[] = {
    {.pwr = 1600, .backoff = 0},   {.pwr = 1300, .backoff = 467},
    {.pwr = 900, .backoff = 1900}, {.pwr = 800, .backoff = 2630},
    {.pwr = 700, .backoff = 3720}, {.pwr = 600, .backoff = 5550},
    {.pwr = 500, .backoff = 9350}, {0},
};

static const struct iwl_ht_params iwl7265_ht_params = {
    .stbc = true,
    .ldpc = true,
    .ht40_bands = BIT(WLAN_INFO_BAND_TWO_GHZ) | BIT(WLAN_INFO_BAND_FIVE_GHZ),
};

const struct iwl_cfg iwl3165_2ac_cfg = {
    .name = "Intel(R) Dual Band Wireless AC 3165",
    .fw_name_pre = IWL7265D_FW_PRE,
    IWL_DEVICE_7005D,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL3165_NVM_VERSION,
    .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
    .dccm_len = IWL7265_DCCM_LEN,
};

const struct iwl_cfg iwl3168_2ac_cfg = {
    .name = "Intel(R) Dual Band Wireless AC 3168",
    .fw_name_pre = IWL3168_FW_PRE,
    IWL_DEVICE_3008,
    .ht_params = &iwl7000_ht_params,
    .nvm_ver = IWL3168_NVM_VERSION,
    .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
    .dccm_len = IWL7265_DCCM_LEN,
    .nvm_type = IWL_NVM_SDP,
};

const struct iwl_cfg iwl7265_2ac_cfg = {
    .name = "Intel(R) Dual Band Wireless AC 7265",
    .fw_name_pre = IWL7265_FW_PRE,
    IWL_DEVICE_7005,
    .ht_params = &iwl7265_ht_params,
    .nvm_ver = IWL7265_NVM_VERSION,
    .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
    .dccm_len = IWL7265_DCCM_LEN,
};

const struct iwl_cfg iwl7265_2n_cfg = {
    .name = "Intel(R) Dual Band Wireless N 7265",
    .fw_name_pre = IWL7265_FW_PRE,
    IWL_DEVICE_7005,
    .ht_params = &iwl7265_ht_params,
    .nvm_ver = IWL7265_NVM_VERSION,
    .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
    .dccm_len = IWL7265_DCCM_LEN,
};

const struct iwl_cfg iwl7265_n_cfg = {
    .name = "Intel(R) Wireless N 7265",
    .fw_name_pre = IWL7265_FW_PRE,
    IWL_DEVICE_7005,
    .ht_params = &iwl7265_ht_params,
    .nvm_ver = IWL7265_NVM_VERSION,
    .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
    .dccm_len = IWL7265_DCCM_LEN,
};

const struct iwl_cfg iwl7265d_2ac_cfg = {
    .name = "Intel(R) Dual Band Wireless AC 7265",
    .fw_name_pre = IWL7265D_FW_PRE,
    IWL_DEVICE_7005D,
    .ht_params = &iwl7265_ht_params,
    .nvm_ver = IWL7265D_NVM_VERSION,
    .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
    .dccm_len = IWL7265_DCCM_LEN,
};

const struct iwl_cfg iwl7265d_2n_cfg = {
    .name = "Intel(R) Dual Band Wireless N 7265",
    .fw_name_pre = IWL7265D_FW_PRE,
    IWL_DEVICE_7005D,
    .ht_params = &iwl7265_ht_params,
    .nvm_ver = IWL7265D_NVM_VERSION,
    .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
    .dccm_len = IWL7265_DCCM_LEN,
};

const struct iwl_cfg iwl7265d_n_cfg = {
    .name = "Intel(R) Wireless N 7265",
    .fw_name_pre = IWL7265D_FW_PRE,
    IWL_DEVICE_7005D,
    .ht_params = &iwl7265_ht_params,
    .nvm_ver = IWL7265D_NVM_VERSION,
    .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs,
    .dccm_len = IWL7265_DCCM_LEN,
};
