diff options
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-8000.c | 42 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 6 |
2 files changed, 37 insertions, 11 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-8000.c b/drivers/net/wireless/intel/iwlwifi/iwl-8000.c index c84a0299d43e..bce9b3420a13 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-8000.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-8000.c | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | * | 7 | * |
| 8 | * Copyright(c) 2014 Intel Corporation. All rights reserved. | 8 | * Copyright(c) 2014 Intel Corporation. All rights reserved. |
| 9 | * Copyright(c) 2014 - 2015 Intel Mobile Communications GmbH | 9 | * Copyright(c) 2014 - 2015 Intel Mobile Communications GmbH |
| 10 | * Copyright(c) 2016 Intel Deutschland GmbH | ||
| 10 | * | 11 | * |
| 11 | * This program is free software; you can redistribute it and/or modify | 12 | * 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 | * it under the terms of version 2 of the GNU General Public License as |
| @@ -70,12 +71,15 @@ | |||
| 70 | 71 | ||
| 71 | /* Highest firmware API version supported */ | 72 | /* Highest firmware API version supported */ |
| 72 | #define IWL8000_UCODE_API_MAX 20 | 73 | #define IWL8000_UCODE_API_MAX 20 |
| 74 | #define IWL8265_UCODE_API_MAX 20 | ||
| 73 | 75 | ||
| 74 | /* Oldest version we won't warn about */ | 76 | /* Oldest version we won't warn about */ |
| 75 | #define IWL8000_UCODE_API_OK 13 | 77 | #define IWL8000_UCODE_API_OK 13 |
| 78 | #define IWL8265_UCODE_API_OK 20 | ||
| 76 | 79 | ||
| 77 | /* Lowest firmware API version supported */ | 80 | /* Lowest firmware API version supported */ |
| 78 | #define IWL8000_UCODE_API_MIN 13 | 81 | #define IWL8000_UCODE_API_MIN 13 |
| 82 | #define IWL8265_UCODE_API_MIN 20 | ||
| 79 | 83 | ||
| 80 | /* NVM versions */ | 84 | /* NVM versions */ |
| 81 | #define IWL8000_NVM_VERSION 0x0a1d | 85 | #define IWL8000_NVM_VERSION 0x0a1d |
| @@ -93,6 +97,10 @@ | |||
| 93 | #define IWL8000_MODULE_FIRMWARE(api) \ | 97 | #define IWL8000_MODULE_FIRMWARE(api) \ |
| 94 | IWL8000_FW_PRE "-" __stringify(api) ".ucode" | 98 | IWL8000_FW_PRE "-" __stringify(api) ".ucode" |
| 95 | 99 | ||
| 100 | #define IWL8265_FW_PRE "iwlwifi-8265-" | ||
| 101 | #define IWL8265_MODULE_FIRMWARE(api) \ | ||
| 102 | IWL8265_FW_PRE __stringify(api) ".ucode" | ||
| 103 | |||
| 96 | #define NVM_HW_SECTION_NUM_FAMILY_8000 10 | 104 | #define NVM_HW_SECTION_NUM_FAMILY_8000 10 |
| 97 | #define DEFAULT_NVM_FILE_FAMILY_8000B "nvmData-8000B" | 105 | #define DEFAULT_NVM_FILE_FAMILY_8000B "nvmData-8000B" |
| 98 | #define DEFAULT_NVM_FILE_FAMILY_8000C "nvmData-8000C" | 106 | #define DEFAULT_NVM_FILE_FAMILY_8000C "nvmData-8000C" |
| @@ -144,10 +152,7 @@ static const struct iwl_tt_params iwl8000_tt_params = { | |||
| 144 | .support_tx_backoff = true, | 152 | .support_tx_backoff = true, |
| 145 | }; | 153 | }; |
| 146 | 154 | ||
| 147 | #define IWL_DEVICE_8000 \ | 155 | #define IWL_DEVICE_8000_COMMON \ |
| 148 | .ucode_api_max = IWL8000_UCODE_API_MAX, \ | ||
| 149 | .ucode_api_ok = IWL8000_UCODE_API_OK, \ | ||
| 150 | .ucode_api_min = IWL8000_UCODE_API_MIN, \ | ||
| 151 | .device_family = IWL_DEVICE_FAMILY_8000, \ | 156 | .device_family = IWL_DEVICE_FAMILY_8000, \ |
| 152 | .max_inst_size = IWL60_RTC_INST_SIZE, \ | 157 | .max_inst_size = IWL60_RTC_INST_SIZE, \ |
| 153 | .max_data_size = IWL60_RTC_DATA_SIZE, \ | 158 | .max_data_size = IWL60_RTC_DATA_SIZE, \ |
| @@ -167,10 +172,28 @@ static const struct iwl_tt_params iwl8000_tt_params = { | |||
| 167 | .thermal_params = &iwl8000_tt_params, \ | 172 | .thermal_params = &iwl8000_tt_params, \ |
| 168 | .apmg_not_supported = true | 173 | .apmg_not_supported = true |
| 169 | 174 | ||
| 175 | #define IWL_DEVICE_8000 \ | ||
| 176 | IWL_DEVICE_8000_COMMON, \ | ||
| 177 | .ucode_api_max = IWL8000_UCODE_API_MAX, \ | ||
| 178 | .ucode_api_ok = IWL8000_UCODE_API_OK, \ | ||
| 179 | .ucode_api_min = IWL8000_UCODE_API_MIN \ | ||
| 180 | |||
| 181 | #define IWL_DEVICE_8260 \ | ||
| 182 | IWL_DEVICE_8000_COMMON, \ | ||
| 183 | .ucode_api_max = IWL8000_UCODE_API_MAX, \ | ||
| 184 | .ucode_api_ok = IWL8000_UCODE_API_OK, \ | ||
| 185 | .ucode_api_min = IWL8000_UCODE_API_MIN \ | ||
| 186 | |||
| 187 | #define IWL_DEVICE_8265 \ | ||
| 188 | IWL_DEVICE_8000_COMMON, \ | ||
| 189 | .ucode_api_max = IWL8265_UCODE_API_MAX, \ | ||
| 190 | .ucode_api_ok = IWL8265_UCODE_API_OK, \ | ||
| 191 | .ucode_api_min = IWL8265_UCODE_API_MIN \ | ||
| 192 | |||
| 170 | const struct iwl_cfg iwl8260_2n_cfg = { | 193 | const struct iwl_cfg iwl8260_2n_cfg = { |
| 171 | .name = "Intel(R) Dual Band Wireless N 8260", | 194 | .name = "Intel(R) Dual Band Wireless N 8260", |
| 172 | .fw_name_pre = IWL8000_FW_PRE, | 195 | .fw_name_pre = IWL8000_FW_PRE, |
| 173 | IWL_DEVICE_8000, | 196 | IWL_DEVICE_8260, |
| 174 | .ht_params = &iwl8000_ht_params, | 197 | .ht_params = &iwl8000_ht_params, |
| 175 | .nvm_ver = IWL8000_NVM_VERSION, | 198 | .nvm_ver = IWL8000_NVM_VERSION, |
| 176 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, | 199 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, |
| @@ -179,7 +202,7 @@ const struct iwl_cfg iwl8260_2n_cfg = { | |||
| 179 | const struct iwl_cfg iwl8260_2ac_cfg = { | 202 | const struct iwl_cfg iwl8260_2ac_cfg = { |
| 180 | .name = "Intel(R) Dual Band Wireless AC 8260", | 203 | .name = "Intel(R) Dual Band Wireless AC 8260", |
| 181 | .fw_name_pre = IWL8000_FW_PRE, | 204 | .fw_name_pre = IWL8000_FW_PRE, |
| 182 | IWL_DEVICE_8000, | 205 | IWL_DEVICE_8260, |
| 183 | .ht_params = &iwl8000_ht_params, | 206 | .ht_params = &iwl8000_ht_params, |
| 184 | .nvm_ver = IWL8000_NVM_VERSION, | 207 | .nvm_ver = IWL8000_NVM_VERSION, |
| 185 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, | 208 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, |
| @@ -188,8 +211,8 @@ const struct iwl_cfg iwl8260_2ac_cfg = { | |||
| 188 | 211 | ||
| 189 | const struct iwl_cfg iwl8265_2ac_cfg = { | 212 | const struct iwl_cfg iwl8265_2ac_cfg = { |
| 190 | .name = "Intel(R) Dual Band Wireless AC 8265", | 213 | .name = "Intel(R) Dual Band Wireless AC 8265", |
| 191 | .fw_name_pre = IWL8000_FW_PRE, | 214 | .fw_name_pre = IWL8265_FW_PRE, |
| 192 | IWL_DEVICE_8000, | 215 | IWL_DEVICE_8265, |
| 193 | .ht_params = &iwl8000_ht_params, | 216 | .ht_params = &iwl8000_ht_params, |
| 194 | .nvm_ver = IWL8000_NVM_VERSION, | 217 | .nvm_ver = IWL8000_NVM_VERSION, |
| 195 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, | 218 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, |
| @@ -209,7 +232,7 @@ const struct iwl_cfg iwl4165_2ac_cfg = { | |||
| 209 | const struct iwl_cfg iwl8260_2ac_sdio_cfg = { | 232 | const struct iwl_cfg iwl8260_2ac_sdio_cfg = { |
| 210 | .name = "Intel(R) Dual Band Wireless-AC 8260", | 233 | .name = "Intel(R) Dual Band Wireless-AC 8260", |
| 211 | .fw_name_pre = IWL8000_FW_PRE, | 234 | .fw_name_pre = IWL8000_FW_PRE, |
| 212 | IWL_DEVICE_8000, | 235 | IWL_DEVICE_8260, |
| 213 | .ht_params = &iwl8000_ht_params, | 236 | .ht_params = &iwl8000_ht_params, |
| 214 | .nvm_ver = IWL8000_NVM_VERSION, | 237 | .nvm_ver = IWL8000_NVM_VERSION, |
| 215 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, | 238 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, |
| @@ -236,3 +259,4 @@ const struct iwl_cfg iwl4165_2ac_sdio_cfg = { | |||
| 236 | }; | 259 | }; |
| 237 | 260 | ||
| 238 | MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK)); | 261 | MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK)); |
| 262 | MODULE_FIRMWARE(IWL8265_MODULE_FIRMWARE(IWL8265_UCODE_API_OK)); | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c index 7acb49075683..ab4c2a0470b2 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c | |||
| @@ -243,8 +243,10 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first) | |||
| 243 | if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) { | 243 | if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) { |
| 244 | char rev_step = 'A' + CSR_HW_REV_STEP(drv->trans->hw_rev); | 244 | char rev_step = 'A' + CSR_HW_REV_STEP(drv->trans->hw_rev); |
| 245 | 245 | ||
| 246 | snprintf(drv->firmware_name, sizeof(drv->firmware_name), | 246 | if (rev_step != 'A') |
| 247 | "%s%c-%s.ucode", name_pre, rev_step, tag); | 247 | snprintf(drv->firmware_name, |
| 248 | sizeof(drv->firmware_name), "%s%c-%s.ucode", | ||
| 249 | name_pre, rev_step, tag); | ||
| 248 | } | 250 | } |
| 249 | 251 | ||
| 250 | IWL_DEBUG_INFO(drv, "attempting to load firmware %s'%s'\n", | 252 | IWL_DEBUG_INFO(drv, "attempting to load firmware %s'%s'\n", |
