diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2013-03-07 10:27:40 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-03-20 09:17:11 -0400 |
commit | d110cb51cf109a6dff0e801d945ea98d2883bd01 (patch) | |
tree | a85fa39ede1ea554ca6574186695bd7bbed77265 /drivers/net/wireless | |
parent | 5358549575aab8ed98c55100650510bdfb6ef5ef (diff) |
iwlwifi: mvm: take the radio type / step / dash from TLVs
This data should taken from TLVs and not from the NVM. This
is true for the value written in CSR_HW_IF_CONFIG_REG too.
Also, no need to set the CSR_HW_IF_CONFIG_REG_BIT_MAC_SI bit
for 7000 devices which are the only devices currently
supported.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-fw.h | 13 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/ops.c | 22 |
2 files changed, 19 insertions, 16 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-fw.h b/drivers/net/wireless/iwlwifi/iwl-fw.h index 435618574240..4e932e04d87e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-fw.h +++ b/drivers/net/wireless/iwlwifi/iwl-fw.h | |||
@@ -154,6 +154,19 @@ struct iwl_tlv_calib_ctrl { | |||
154 | __le32 event_trigger; | 154 | __le32 event_trigger; |
155 | } __packed; | 155 | } __packed; |
156 | 156 | ||
157 | enum iwl_fw_phy_cfg { | ||
158 | FW_PHY_CFG_RADIO_TYPE_POS = 0, | ||
159 | FW_PHY_CFG_RADIO_TYPE = 0x3 << FW_PHY_CFG_RADIO_TYPE_POS, | ||
160 | FW_PHY_CFG_RADIO_STEP_POS = 2, | ||
161 | FW_PHY_CFG_RADIO_STEP = 0x3 << FW_PHY_CFG_RADIO_STEP_POS, | ||
162 | FW_PHY_CFG_RADIO_DASH_POS = 4, | ||
163 | FW_PHY_CFG_RADIO_DASH = 0x3 << FW_PHY_CFG_RADIO_DASH_POS, | ||
164 | FW_PHY_CFG_TX_CHAIN_POS = 16, | ||
165 | FW_PHY_CFG_TX_CHAIN = 0xf << FW_PHY_CFG_TX_CHAIN_POS, | ||
166 | FW_PHY_CFG_RX_CHAIN_POS = 20, | ||
167 | FW_PHY_CFG_RX_CHAIN = 0xf << FW_PHY_CFG_RX_CHAIN_POS, | ||
168 | }; | ||
169 | |||
157 | /** | 170 | /** |
158 | * struct iwl_fw - variables associated with the firmware | 171 | * struct iwl_fw - variables associated with the firmware |
159 | * | 172 | * |
diff --git a/drivers/net/wireless/iwlwifi/mvm/ops.c b/drivers/net/wireless/iwlwifi/mvm/ops.c index 81ff28361dc2..fe031d304d1e 100644 --- a/drivers/net/wireless/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/iwlwifi/mvm/ops.c | |||
@@ -143,21 +143,12 @@ static void iwl_mvm_nic_config(struct iwl_op_mode *op_mode) | |||
143 | u8 radio_cfg_type, radio_cfg_step, radio_cfg_dash; | 143 | u8 radio_cfg_type, radio_cfg_step, radio_cfg_dash; |
144 | u32 reg_val = 0; | 144 | u32 reg_val = 0; |
145 | 145 | ||
146 | /* | 146 | radio_cfg_type = (mvm->fw->phy_config & FW_PHY_CFG_RADIO_TYPE) >> |
147 | * We can't upload the correct value to the INIT image | 147 | FW_PHY_CFG_RADIO_TYPE_POS; |
148 | * as we don't have nvm_data by that time. | 148 | radio_cfg_step = (mvm->fw->phy_config & FW_PHY_CFG_RADIO_STEP) >> |
149 | * | 149 | FW_PHY_CFG_RADIO_STEP_POS; |
150 | * TODO: Figure out what we should do here | 150 | radio_cfg_dash = (mvm->fw->phy_config & FW_PHY_CFG_RADIO_DASH) >> |
151 | */ | 151 | FW_PHY_CFG_RADIO_DASH_POS; |
152 | if (mvm->nvm_data) { | ||
153 | radio_cfg_type = mvm->nvm_data->radio_cfg_type; | ||
154 | radio_cfg_step = mvm->nvm_data->radio_cfg_step; | ||
155 | radio_cfg_dash = mvm->nvm_data->radio_cfg_dash; | ||
156 | } else { | ||
157 | radio_cfg_type = 0; | ||
158 | radio_cfg_step = 0; | ||
159 | radio_cfg_dash = 0; | ||
160 | } | ||
161 | 152 | ||
162 | /* SKU control */ | 153 | /* SKU control */ |
163 | reg_val |= CSR_HW_REV_STEP(mvm->trans->hw_rev) << | 154 | reg_val |= CSR_HW_REV_STEP(mvm->trans->hw_rev) << |
@@ -175,7 +166,6 @@ static void iwl_mvm_nic_config(struct iwl_op_mode *op_mode) | |||
175 | 166 | ||
176 | /* silicon bits */ | 167 | /* silicon bits */ |
177 | reg_val |= CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI; | 168 | reg_val |= CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI; |
178 | reg_val |= CSR_HW_IF_CONFIG_REG_BIT_MAC_SI; | ||
179 | 169 | ||
180 | iwl_trans_set_bits_mask(mvm->trans, CSR_HW_IF_CONFIG_REG, | 170 | iwl_trans_set_bits_mask(mvm->trans, CSR_HW_IF_CONFIG_REG, |
181 | CSR_HW_IF_CONFIG_REG_MSK_MAC_DASH | | 171 | CSR_HW_IF_CONFIG_REG_MSK_MAC_DASH | |