aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-8000.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-8000.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-8000.c49
1 files changed, 44 insertions, 5 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-8000.c b/drivers/net/wireless/iwlwifi/iwl-8000.c
index e93c6972290b..bf0a95cb7153 100644
--- a/drivers/net/wireless/iwlwifi/iwl-8000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-8000.c
@@ -6,6 +6,7 @@
6 * GPL LICENSE SUMMARY 6 * GPL LICENSE SUMMARY
7 * 7 *
8 * Copyright(c) 2014 Intel Corporation. All rights reserved. 8 * Copyright(c) 2014 Intel Corporation. All rights reserved.
9 * Copyright(c) 2014 Intel Mobile Communications GmbH
9 * 10 *
10 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of version 2 of the GNU General Public License as 12 * it under the terms of version 2 of the GNU General Public License as
@@ -31,6 +32,7 @@
31 * BSD LICENSE 32 * BSD LICENSE
32 * 33 *
33 * Copyright(c) 2014 Intel Corporation. All rights reserved. 34 * Copyright(c) 2014 Intel Corporation. All rights reserved.
35 * Copyright(c) 2014 Intel Mobile Communications GmbH
34 * All rights reserved. 36 * All rights reserved.
35 * 37 *
36 * Redistribution and use in source and binary forms, with or without 38 * Redistribution and use in source and binary forms, with or without
@@ -70,17 +72,18 @@
70#define IWL8000_UCODE_API_MAX 10 72#define IWL8000_UCODE_API_MAX 10
71 73
72/* Oldest version we won't warn about */ 74/* Oldest version we won't warn about */
73#define IWL8000_UCODE_API_OK 8 75#define IWL8000_UCODE_API_OK 10
74 76
75/* Lowest firmware API version supported */ 77/* Lowest firmware API version supported */
76#define IWL8000_UCODE_API_MIN 8 78#define IWL8000_UCODE_API_MIN 9
77 79
78/* NVM versions */ 80/* NVM versions */
79#define IWL8000_NVM_VERSION 0x0a1d 81#define IWL8000_NVM_VERSION 0x0a1d
80#define IWL8000_TX_POWER_VERSION 0xffff /* meaningless */ 82#define IWL8000_TX_POWER_VERSION 0xffff /* meaningless */
81 83
82#define IWL8000_FW_PRE "iwlwifi-8000-" 84#define IWL8000_FW_PRE "iwlwifi-8000"
83#define IWL8000_MODULE_FIRMWARE(api) IWL8000_FW_PRE __stringify(api) ".ucode" 85#define IWL8000_MODULE_FIRMWARE(api) \
86 IWL8000_FW_PRE "-" __stringify(api) ".ucode"
84 87
85#define NVM_HW_SECTION_NUM_FAMILY_8000 10 88#define NVM_HW_SECTION_NUM_FAMILY_8000 10
86#define DEFAULT_NVM_FILE_FAMILY_8000 "iwl_nvm_8000.bin" 89#define DEFAULT_NVM_FILE_FAMILY_8000 "iwl_nvm_8000.bin"
@@ -88,6 +91,10 @@
88/* Max SDIO RX aggregation size of the ADDBA request/response */ 91/* Max SDIO RX aggregation size of the ADDBA request/response */
89#define MAX_RX_AGG_SIZE_8260_SDIO 28 92#define MAX_RX_AGG_SIZE_8260_SDIO 28
90 93
94/* Max A-MPDU exponent for HT and VHT */
95#define MAX_HT_AMPDU_EXPONENT_8260_SDIO IEEE80211_HT_MAX_AMPDU_32K
96#define MAX_VHT_AMPDU_EXPONENT_8260_SDIO IEEE80211_VHT_MAX_AMPDU_32K
97
91static const struct iwl_base_params iwl8000_base_params = { 98static const struct iwl_base_params iwl8000_base_params = {
92 .eeprom_size = OTP_LOW_IMAGE_SIZE_FAMILY_8000, 99 .eeprom_size = OTP_LOW_IMAGE_SIZE_FAMILY_8000,
93 .num_of_queues = IWLAGN_NUM_QUEUES, 100 .num_of_queues = IWLAGN_NUM_QUEUES,
@@ -101,6 +108,8 @@ static const struct iwl_base_params iwl8000_base_params = {
101}; 108};
102 109
103static const struct iwl_ht_params iwl8000_ht_params = { 110static const struct iwl_ht_params iwl8000_ht_params = {
111 .stbc = true,
112 .ldpc = true,
104 .ht40_bands = BIT(IEEE80211_BAND_2GHZ) | BIT(IEEE80211_BAND_5GHZ), 113 .ht40_bands = BIT(IEEE80211_BAND_2GHZ) | BIT(IEEE80211_BAND_5GHZ),
105}; 114};
106 115
@@ -113,7 +122,18 @@ static const struct iwl_ht_params iwl8000_ht_params = {
113 .max_data_size = IWL60_RTC_DATA_SIZE, \ 122 .max_data_size = IWL60_RTC_DATA_SIZE, \
114 .base_params = &iwl8000_base_params, \ 123 .base_params = &iwl8000_base_params, \
115 .led_mode = IWL_LED_RF_STATE, \ 124 .led_mode = IWL_LED_RF_STATE, \
116 .nvm_hw_section_num = NVM_HW_SECTION_NUM_FAMILY_8000 125 .nvm_hw_section_num = NVM_HW_SECTION_NUM_FAMILY_8000, \
126 .d0i3 = true, \
127 .non_shared_ant = ANT_A
128
129const struct iwl_cfg iwl8260_2n_cfg = {
130 .name = "Intel(R) Dual Band Wireless N 8260",
131 .fw_name_pre = IWL8000_FW_PRE,
132 IWL_DEVICE_8000,
133 .ht_params = &iwl8000_ht_params,
134 .nvm_ver = IWL8000_NVM_VERSION,
135 .nvm_calib_ver = IWL8000_TX_POWER_VERSION,
136};
117 137
118const struct iwl_cfg iwl8260_2ac_cfg = { 138const struct iwl_cfg iwl8260_2ac_cfg = {
119 .name = "Intel(R) Dual Band Wireless AC 8260", 139 .name = "Intel(R) Dual Band Wireless AC 8260",
@@ -122,6 +142,7 @@ const struct iwl_cfg iwl8260_2ac_cfg = {
122 .ht_params = &iwl8000_ht_params, 142 .ht_params = &iwl8000_ht_params,
123 .nvm_ver = IWL8000_NVM_VERSION, 143 .nvm_ver = IWL8000_NVM_VERSION,
124 .nvm_calib_ver = IWL8000_TX_POWER_VERSION, 144 .nvm_calib_ver = IWL8000_TX_POWER_VERSION,
145 .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K,
125}; 146};
126 147
127const struct iwl_cfg iwl8260_2ac_sdio_cfg = { 148const struct iwl_cfg iwl8260_2ac_sdio_cfg = {
@@ -133,6 +154,24 @@ const struct iwl_cfg iwl8260_2ac_sdio_cfg = {
133 .nvm_calib_ver = IWL8000_TX_POWER_VERSION, 154 .nvm_calib_ver = IWL8000_TX_POWER_VERSION,
134 .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000, 155 .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000,
135 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO, 156 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO,
157 .disable_dummy_notification = true,
158 .max_ht_ampdu_exponent = MAX_HT_AMPDU_EXPONENT_8260_SDIO,
159 .max_vht_ampdu_exponent = MAX_VHT_AMPDU_EXPONENT_8260_SDIO,
160};
161
162const struct iwl_cfg iwl4165_2ac_sdio_cfg = {
163 .name = "Intel(R) Dual Band Wireless-AC 4165",
164 .fw_name_pre = IWL8000_FW_PRE,
165 IWL_DEVICE_8000,
166 .ht_params = &iwl8000_ht_params,
167 .nvm_ver = IWL8000_NVM_VERSION,
168 .nvm_calib_ver = IWL8000_TX_POWER_VERSION,
169 .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000,
170 .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO,
171 .bt_shared_single_ant = true,
172 .disable_dummy_notification = true,
173 .max_ht_ampdu_exponent = MAX_HT_AMPDU_EXPONENT_8260_SDIO,
174 .max_vht_ampdu_exponent = MAX_VHT_AMPDU_EXPONENT_8260_SDIO,
136}; 175};
137 176
138MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK)); 177MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK));