diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-8000.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-8000.c | 49 |
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 | |||
91 | static const struct iwl_base_params iwl8000_base_params = { | 98 | static 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 | ||
103 | static const struct iwl_ht_params iwl8000_ht_params = { | 110 | static 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 | |||
129 | const 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 | ||
118 | const struct iwl_cfg iwl8260_2ac_cfg = { | 138 | const 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 | ||
127 | const struct iwl_cfg iwl8260_2ac_sdio_cfg = { | 148 | const 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 | |||
162 | const 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 | ||
138 | MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK)); | 177 | MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK)); |