mirror of
https://github.com/torvalds/linux.git
synced 2024-12-13 14:43:03 +00:00
iwlwifi: nvm: force 1x1 antenna in Series 8000
This is a workaround to an OTP bug. In Series 8000 1x1, the OTP 0xA052 defines 2x2 antenna configuration. This workaround overrides the decision based on HW id and MIMO disabled bit which is correct in the OTP and set to disabled. Signed-off-by: Moshe Harel <moshe.harel@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
09eef3307e
commit
bb35dc1418
@ -580,13 +580,15 @@ static void iwl_set_hw_address_family_8000(struct device *dev,
|
||||
IWL_ERR_DEV(dev, "mac address is not found\n");
|
||||
}
|
||||
|
||||
#define IWL_4165_DEVICE_ID 0x5501
|
||||
|
||||
struct iwl_nvm_data *
|
||||
iwl_parse_nvm_data(struct device *dev, const struct iwl_cfg *cfg,
|
||||
const __le16 *nvm_hw, const __le16 *nvm_sw,
|
||||
const __le16 *nvm_calib, const __le16 *regulatory,
|
||||
const __le16 *mac_override, const __le16 *phy_sku,
|
||||
u8 tx_chains, u8 rx_chains, bool lar_fw_supported,
|
||||
u32 mac_addr0, u32 mac_addr1)
|
||||
u32 mac_addr0, u32 mac_addr1, u32 hw_id)
|
||||
{
|
||||
struct iwl_nvm_data *data;
|
||||
u32 sku;
|
||||
@ -625,6 +627,17 @@ iwl_parse_nvm_data(struct device *dev, const struct iwl_cfg *cfg,
|
||||
(sku & NVM_SKU_CAP_11AC_ENABLE);
|
||||
data->sku_cap_mimo_disabled = sku & NVM_SKU_CAP_MIMO_DISABLE;
|
||||
|
||||
/*
|
||||
* OTP 0x52 bug work around
|
||||
* define antenna 1x1 according to MIMO disabled
|
||||
*/
|
||||
if (hw_id == IWL_4165_DEVICE_ID && data->sku_cap_mimo_disabled) {
|
||||
data->valid_tx_ant = ANT_B;
|
||||
data->valid_rx_ant = ANT_B;
|
||||
tx_chains = ANT_B;
|
||||
rx_chains = ANT_B;
|
||||
}
|
||||
|
||||
data->n_hw_addrs = iwl_get_n_hw_addrs(cfg, nvm_sw);
|
||||
|
||||
if (cfg->device_family != IWL_DEVICE_FAMILY_8000) {
|
||||
|
@ -79,7 +79,7 @@ iwl_parse_nvm_data(struct device *dev, const struct iwl_cfg *cfg,
|
||||
const __le16 *nvm_calib, const __le16 *regulatory,
|
||||
const __le16 *mac_override, const __le16 *phy_sku,
|
||||
u8 tx_chains, u8 rx_chains, bool lar_fw_supported,
|
||||
u32 mac_addr0, u32 mac_addr1);
|
||||
u32 mac_addr0, u32 mac_addr1, u32 hw_id);
|
||||
|
||||
/**
|
||||
* iwl_parse_mcc_info - parse MCC (mobile country code) info coming from FW
|
||||
|
@ -316,7 +316,8 @@ iwl_parse_nvm_sections(struct iwl_mvm *mvm)
|
||||
return iwl_parse_nvm_data(mvm->trans->dev, mvm->cfg, hw, sw, calib,
|
||||
regulatory, mac_override, phy_sku,
|
||||
mvm->fw->valid_tx_ant, mvm->fw->valid_rx_ant,
|
||||
lar_enabled, mac_addr0, mac_addr1);
|
||||
lar_enabled, mac_addr0, mac_addr1,
|
||||
mvm->trans->hw_id);
|
||||
}
|
||||
|
||||
#define MAX_NVM_FILE_LEN 16384
|
||||
|
Loading…
Reference in New Issue
Block a user