mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-05-19 21:56:02 +00:00
iwlwifi: add support for 9000 HW B-step NICs
Once we remove support for A-step, we'll be able to clean the code back again. Signed-off-by: Liad Kaufman <liad.kaufman@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
bd31dd9d14
commit
5da083d192
3 changed files with 34 additions and 17 deletions
|
@ -5,7 +5,7 @@
|
||||||
*
|
*
|
||||||
* GPL LICENSE SUMMARY
|
* GPL LICENSE SUMMARY
|
||||||
*
|
*
|
||||||
* Copyright(c) 2015-2016 Intel Deutschland GmbH
|
* Copyright(c) 2015-2017 Intel Deutschland GmbH
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of version 2 of the GNU General Public License as
|
* it under the terms of version 2 of the GNU General Public License as
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
*
|
*
|
||||||
* BSD LICENSE
|
* BSD LICENSE
|
||||||
*
|
*
|
||||||
* Copyright(c) 2015-2016 Intel Deutschland GmbH
|
* Copyright(c) 2015-2017 Intel Deutschland GmbH
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -73,11 +73,14 @@
|
||||||
#define IWL9000_SMEM_LEN 0x68000
|
#define IWL9000_SMEM_LEN 0x68000
|
||||||
|
|
||||||
#define IWL9000_FW_PRE "iwlwifi-9000-pu-a0-jf-a0-"
|
#define IWL9000_FW_PRE "iwlwifi-9000-pu-a0-jf-a0-"
|
||||||
#define IWL9260_FW_PRE "iwlwifi-9260-th-a0-jf-a0-"
|
#define IWL9260A_FW_PRE "iwlwifi-9260-th-a0-jf-a0-"
|
||||||
|
#define IWL9260B_FW_PRE "iwlwifi-9260-th-b0-jf-b0-"
|
||||||
#define IWL9000_MODULE_FIRMWARE(api) \
|
#define IWL9000_MODULE_FIRMWARE(api) \
|
||||||
IWL9000_FW_PRE "-" __stringify(api) ".ucode"
|
IWL9000_FW_PRE "-" __stringify(api) ".ucode"
|
||||||
#define IWL9260_MODULE_FIRMWARE(api) \
|
#define IWL9260A_MODULE_FIRMWARE(api) \
|
||||||
IWL9260_FW_PRE "-" __stringify(api) ".ucode"
|
IWL9260A_FW_PRE "-" __stringify(api) ".ucode"
|
||||||
|
#define IWL9260B_MODULE_FIRMWARE(api) \
|
||||||
|
IWL9260B_FW_PRE "-" __stringify(api) ".ucode"
|
||||||
|
|
||||||
#define NVM_HW_SECTION_NUM_FAMILY_9000 10
|
#define NVM_HW_SECTION_NUM_FAMILY_9000 10
|
||||||
|
|
||||||
|
@ -145,7 +148,8 @@ static const struct iwl_tt_params iwl9000_tt_params = {
|
||||||
|
|
||||||
const struct iwl_cfg iwl9160_2ac_cfg = {
|
const struct iwl_cfg iwl9160_2ac_cfg = {
|
||||||
.name = "Intel(R) Dual Band Wireless AC 9160",
|
.name = "Intel(R) Dual Band Wireless AC 9160",
|
||||||
.fw_name_pre = IWL9260_FW_PRE,
|
.fw_name_pre = IWL9260A_FW_PRE,
|
||||||
|
.fw_name_pre_next_step = IWL9260B_FW_PRE,
|
||||||
IWL_DEVICE_9000,
|
IWL_DEVICE_9000,
|
||||||
.ht_params = &iwl9000_ht_params,
|
.ht_params = &iwl9000_ht_params,
|
||||||
.nvm_ver = IWL9000_NVM_VERSION,
|
.nvm_ver = IWL9000_NVM_VERSION,
|
||||||
|
@ -155,7 +159,8 @@ const struct iwl_cfg iwl9160_2ac_cfg = {
|
||||||
|
|
||||||
const struct iwl_cfg iwl9260_2ac_cfg = {
|
const struct iwl_cfg iwl9260_2ac_cfg = {
|
||||||
.name = "Intel(R) Dual Band Wireless AC 9260",
|
.name = "Intel(R) Dual Band Wireless AC 9260",
|
||||||
.fw_name_pre = IWL9260_FW_PRE,
|
.fw_name_pre = IWL9260A_FW_PRE,
|
||||||
|
.fw_name_pre_next_step = IWL9260B_FW_PRE,
|
||||||
IWL_DEVICE_9000,
|
IWL_DEVICE_9000,
|
||||||
.ht_params = &iwl9000_ht_params,
|
.ht_params = &iwl9000_ht_params,
|
||||||
.nvm_ver = IWL9000_NVM_VERSION,
|
.nvm_ver = IWL9000_NVM_VERSION,
|
||||||
|
@ -165,7 +170,8 @@ const struct iwl_cfg iwl9260_2ac_cfg = {
|
||||||
|
|
||||||
const struct iwl_cfg iwl9270_2ac_cfg = {
|
const struct iwl_cfg iwl9270_2ac_cfg = {
|
||||||
.name = "Intel(R) Dual Band Wireless AC 9270",
|
.name = "Intel(R) Dual Band Wireless AC 9270",
|
||||||
.fw_name_pre = IWL9260_FW_PRE,
|
.fw_name_pre = IWL9260A_FW_PRE,
|
||||||
|
.fw_name_pre_next_step = IWL9260B_FW_PRE,
|
||||||
IWL_DEVICE_9000,
|
IWL_DEVICE_9000,
|
||||||
.ht_params = &iwl9000_ht_params,
|
.ht_params = &iwl9000_ht_params,
|
||||||
.nvm_ver = IWL9000_NVM_VERSION,
|
.nvm_ver = IWL9000_NVM_VERSION,
|
||||||
|
@ -196,4 +202,5 @@ const struct iwl_cfg iwl9560_2ac_cfg = {
|
||||||
};
|
};
|
||||||
|
|
||||||
MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
|
MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
|
||||||
MODULE_FIRMWARE(IWL9260_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
|
MODULE_FIRMWARE(IWL9260A_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
|
||||||
|
MODULE_FIRMWARE(IWL9260B_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX));
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* GPL LICENSE SUMMARY
|
* GPL LICENSE SUMMARY
|
||||||
*
|
*
|
||||||
* Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved.
|
* Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved.
|
||||||
* Copyright (C) 2016 Intel Deutschland GmbH
|
* Copyright (C) 2016 - 2017 Intel Deutschland GmbH
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of version 2 of the GNU General Public License as
|
* it under the terms of version 2 of the GNU General Public License as
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
* BSD LICENSE
|
* BSD LICENSE
|
||||||
*
|
*
|
||||||
* Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
|
* Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
|
||||||
* Copyright (C) 2016 Intel Deutschland GmbH
|
* Copyright (C) 2016 - 2017 Intel Deutschland GmbH
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -283,6 +283,8 @@ struct iwl_pwr_tx_backoff {
|
||||||
* @fw_name_pre: Firmware filename prefix. The api version and extension
|
* @fw_name_pre: Firmware filename prefix. The api version and extension
|
||||||
* (.ucode) will be added to filename before loading from disk. The
|
* (.ucode) will be added to filename before loading from disk. The
|
||||||
* filename is constructed as fw_name_pre<api>.ucode.
|
* filename is constructed as fw_name_pre<api>.ucode.
|
||||||
|
* @fw_name_pre_next_step: same as @fw_name_pre, only for next step
|
||||||
|
* (if supported)
|
||||||
* @ucode_api_max: Highest version of uCode API supported by driver.
|
* @ucode_api_max: Highest version of uCode API supported by driver.
|
||||||
* @ucode_api_min: Lowest version of uCode API supported by driver.
|
* @ucode_api_min: Lowest version of uCode API supported by driver.
|
||||||
* @max_inst_size: The maximal length of the fw inst section
|
* @max_inst_size: The maximal length of the fw inst section
|
||||||
|
@ -330,6 +332,7 @@ struct iwl_cfg {
|
||||||
/* params specific to an individual device within a device family */
|
/* params specific to an individual device within a device family */
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *fw_name_pre;
|
const char *fw_name_pre;
|
||||||
|
const char *fw_name_pre_next_step;
|
||||||
/* params not likely to change within a device family */
|
/* params not likely to change within a device family */
|
||||||
const struct iwl_base_params *base_params;
|
const struct iwl_base_params *base_params;
|
||||||
/* params likely to change within a device family */
|
/* params likely to change within a device family */
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
* Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved.
|
* Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved.
|
||||||
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
|
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
|
||||||
* Copyright(c) 2016 Intel Deutschland GmbH
|
* Copyright(c) 2016 - 2017 Intel Deutschland GmbH
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of version 2 of the GNU General Public License as
|
* it under the terms of version 2 of the GNU General Public License as
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
*
|
*
|
||||||
* Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
|
* Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
|
||||||
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
|
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
|
||||||
* Copyright(c) 2016 Intel Deutschland GmbH
|
* Copyright(c) 2016 - 2017 Intel Deutschland GmbH
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -213,6 +213,13 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first)
|
||||||
{
|
{
|
||||||
const struct iwl_cfg *cfg = drv->trans->cfg;
|
const struct iwl_cfg *cfg = drv->trans->cfg;
|
||||||
char tag[8];
|
char tag[8];
|
||||||
|
const char *fw_pre_name;
|
||||||
|
|
||||||
|
if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_8000 &&
|
||||||
|
CSR_HW_REV_STEP(drv->trans->hw_rev) == SILICON_B_STEP)
|
||||||
|
fw_pre_name = cfg->fw_name_pre_next_step;
|
||||||
|
else
|
||||||
|
fw_pre_name = cfg->fw_name_pre;
|
||||||
|
|
||||||
if (first) {
|
if (first) {
|
||||||
drv->fw_index = cfg->ucode_api_max;
|
drv->fw_index = cfg->ucode_api_max;
|
||||||
|
@ -226,14 +233,14 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first)
|
||||||
IWL_ERR(drv, "no suitable firmware found!\n");
|
IWL_ERR(drv, "no suitable firmware found!\n");
|
||||||
|
|
||||||
if (cfg->ucode_api_min == cfg->ucode_api_max) {
|
if (cfg->ucode_api_min == cfg->ucode_api_max) {
|
||||||
IWL_ERR(drv, "%s%d is required\n", cfg->fw_name_pre,
|
IWL_ERR(drv, "%s%d is required\n", fw_pre_name,
|
||||||
cfg->ucode_api_max);
|
cfg->ucode_api_max);
|
||||||
} else {
|
} else {
|
||||||
IWL_ERR(drv, "minimum version required: %s%d\n",
|
IWL_ERR(drv, "minimum version required: %s%d\n",
|
||||||
cfg->fw_name_pre,
|
fw_pre_name,
|
||||||
cfg->ucode_api_min);
|
cfg->ucode_api_min);
|
||||||
IWL_ERR(drv, "maximum version supported: %s%d\n",
|
IWL_ERR(drv, "maximum version supported: %s%d\n",
|
||||||
cfg->fw_name_pre,
|
fw_pre_name,
|
||||||
cfg->ucode_api_max);
|
cfg->ucode_api_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,7 +250,7 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first)
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(drv->firmware_name, sizeof(drv->firmware_name), "%s%s.ucode",
|
snprintf(drv->firmware_name, sizeof(drv->firmware_name), "%s%s.ucode",
|
||||||
cfg->fw_name_pre, tag);
|
fw_pre_name, tag);
|
||||||
|
|
||||||
IWL_DEBUG_INFO(drv, "attempting to load firmware '%s'\n",
|
IWL_DEBUG_INFO(drv, "attempting to load firmware '%s'\n",
|
||||||
drv->firmware_name);
|
drv->firmware_name);
|
||||||
|
|
Loading…
Add table
Reference in a new issue