diff options
| -rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/fw.c | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/fw.c b/drivers/net/wireless/iwlwifi/mvm/fw.c index d3c067e670a8..500f818dba04 100644 --- a/drivers/net/wireless/iwlwifi/mvm/fw.c +++ b/drivers/net/wireless/iwlwifi/mvm/fw.c | |||
| @@ -79,17 +79,8 @@ | |||
| 79 | #define UCODE_VALID_OK cpu_to_le32(0x1) | 79 | #define UCODE_VALID_OK cpu_to_le32(0x1) |
| 80 | 80 | ||
| 81 | /* Default calibration values for WkP - set to INIT image w/o running */ | 81 | /* Default calibration values for WkP - set to INIT image w/o running */ |
| 82 | static const u8 wkp_calib_values_bb_filter[] = { 0xbf, 0x00, 0x5f, 0x00, 0x2f, | ||
| 83 | 0x00, 0x18, 0x00 }; | ||
| 84 | static const u8 wkp_calib_values_rx_dc[] = { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, | ||
| 85 | 0x7f, 0x7f, 0x7f }; | ||
| 86 | static const u8 wkp_calib_values_tx_lo[] = { 0x00, 0x00, 0x00, 0x00 }; | ||
| 87 | static const u8 wkp_calib_values_tx_iq[] = { 0xff, 0x00, 0xff, 0x00, 0x00, | ||
| 88 | 0x00 }; | ||
| 89 | static const u8 wkp_calib_values_rx_iq[] = { 0xff, 0x00, 0x00, 0x00 }; | ||
| 90 | static const u8 wkp_calib_values_rx_iq_skew[] = { 0x00, 0x00, 0x01, 0x00 }; | 82 | static const u8 wkp_calib_values_rx_iq_skew[] = { 0x00, 0x00, 0x01, 0x00 }; |
| 91 | static const u8 wkp_calib_values_tx_iq_skew[] = { 0x01, 0x00, 0x00, 0x00 }; | 83 | static const u8 wkp_calib_values_tx_iq_skew[] = { 0x01, 0x00, 0x00, 0x00 }; |
| 92 | static const u8 wkp_calib_values_xtal[] = { 0xd2, 0xd2 }; | ||
| 93 | 84 | ||
| 94 | struct iwl_calib_default_data { | 85 | struct iwl_calib_default_data { |
| 95 | u16 size; | 86 | u16 size; |
| @@ -99,12 +90,7 @@ struct iwl_calib_default_data { | |||
| 99 | #define CALIB_SIZE_N_DATA(_buf) {.size = sizeof(_buf), .data = &_buf} | 90 | #define CALIB_SIZE_N_DATA(_buf) {.size = sizeof(_buf), .data = &_buf} |
| 100 | 91 | ||
| 101 | static const struct iwl_calib_default_data wkp_calib_default_data[12] = { | 92 | static const struct iwl_calib_default_data wkp_calib_default_data[12] = { |
| 102 | [5] = CALIB_SIZE_N_DATA(wkp_calib_values_rx_dc), | ||
| 103 | [6] = CALIB_SIZE_N_DATA(wkp_calib_values_bb_filter), | ||
| 104 | [7] = CALIB_SIZE_N_DATA(wkp_calib_values_tx_lo), | ||
| 105 | [8] = CALIB_SIZE_N_DATA(wkp_calib_values_tx_iq), | ||
| 106 | [9] = CALIB_SIZE_N_DATA(wkp_calib_values_tx_iq_skew), | 93 | [9] = CALIB_SIZE_N_DATA(wkp_calib_values_tx_iq_skew), |
| 107 | [10] = CALIB_SIZE_N_DATA(wkp_calib_values_rx_iq), | ||
| 108 | [11] = CALIB_SIZE_N_DATA(wkp_calib_values_rx_iq_skew), | 94 | [11] = CALIB_SIZE_N_DATA(wkp_calib_values_rx_iq_skew), |
| 109 | }; | 95 | }; |
| 110 | 96 | ||
| @@ -261,103 +247,6 @@ static int iwl_send_phy_cfg_cmd(struct iwl_mvm *mvm) | |||
| 261 | sizeof(phy_cfg_cmd), &phy_cfg_cmd); | 247 | sizeof(phy_cfg_cmd), &phy_cfg_cmd); |
| 262 | } | 248 | } |
| 263 | 249 | ||
| 264 | /* Starting with the new PHY DB implementation - New calibs are enabled */ | ||
| 265 | /* Value - 0x405e7 */ | ||
| 266 | #define IWL_CALIB_DEFAULT_FLOW_INIT (IWL_CALIB_CFG_XTAL_IDX |\ | ||
| 267 | IWL_CALIB_CFG_TEMPERATURE_IDX |\ | ||
| 268 | IWL_CALIB_CFG_VOLTAGE_READ_IDX |\ | ||
| 269 | IWL_CALIB_CFG_DC_IDX |\ | ||
| 270 | IWL_CALIB_CFG_BB_FILTER_IDX |\ | ||
| 271 | IWL_CALIB_CFG_LO_LEAKAGE_IDX |\ | ||
| 272 | IWL_CALIB_CFG_TX_IQ_IDX |\ | ||
| 273 | IWL_CALIB_CFG_RX_IQ_IDX |\ | ||
| 274 | IWL_CALIB_CFG_AGC_IDX) | ||
| 275 | |||
| 276 | #define IWL_CALIB_DEFAULT_EVENT_INIT 0x0 | ||
| 277 | |||
| 278 | /* Value 0x41567 */ | ||
| 279 | #define IWL_CALIB_DEFAULT_FLOW_RUN (IWL_CALIB_CFG_XTAL_IDX |\ | ||
| 280 | IWL_CALIB_CFG_TEMPERATURE_IDX |\ | ||
| 281 | IWL_CALIB_CFG_VOLTAGE_READ_IDX |\ | ||
| 282 | IWL_CALIB_CFG_BB_FILTER_IDX |\ | ||
| 283 | IWL_CALIB_CFG_DC_IDX |\ | ||
| 284 | IWL_CALIB_CFG_TX_IQ_IDX |\ | ||
| 285 | IWL_CALIB_CFG_RX_IQ_IDX |\ | ||
| 286 | IWL_CALIB_CFG_SENSITIVITY_IDX |\ | ||
| 287 | IWL_CALIB_CFG_AGC_IDX) | ||
| 288 | |||
| 289 | #define IWL_CALIB_DEFAULT_EVENT_RUN (IWL_CALIB_CFG_XTAL_IDX |\ | ||
| 290 | IWL_CALIB_CFG_TEMPERATURE_IDX |\ | ||
| 291 | IWL_CALIB_CFG_VOLTAGE_READ_IDX |\ | ||
| 292 | IWL_CALIB_CFG_TX_PWR_IDX |\ | ||
| 293 | IWL_CALIB_CFG_DC_IDX |\ | ||
| 294 | IWL_CALIB_CFG_TX_IQ_IDX |\ | ||
| 295 | IWL_CALIB_CFG_SENSITIVITY_IDX) | ||
| 296 | |||
| 297 | /* | ||
| 298 | * Sets the calibrations trigger values that will be sent to the FW for runtime | ||
| 299 | * and init calibrations. | ||
| 300 | * The ones given in the FW TLV are not correct. | ||
| 301 | */ | ||
| 302 | static void iwl_set_default_calib_trigger(struct iwl_mvm *mvm) | ||
| 303 | { | ||
| 304 | struct iwl_tlv_calib_ctrl default_calib; | ||
| 305 | |||
| 306 | /* | ||
| 307 | * WkP FW TLV calib bits are wrong, overwrite them. | ||
| 308 | * This defines the dynamic calibrations which are implemented in the | ||
| 309 | * uCode both for init(flow) calculation and event driven calibs. | ||
| 310 | */ | ||
| 311 | |||
| 312 | /* Init Image */ | ||
| 313 | default_calib.event_trigger = cpu_to_le32(IWL_CALIB_DEFAULT_EVENT_INIT); | ||
| 314 | default_calib.flow_trigger = cpu_to_le32(IWL_CALIB_DEFAULT_FLOW_INIT); | ||
| 315 | |||
| 316 | if (default_calib.event_trigger != | ||
| 317 | mvm->fw->default_calib[IWL_UCODE_INIT].event_trigger) | ||
| 318 | IWL_ERR(mvm, | ||
| 319 | "Updating the event calib for INIT image: 0x%x -> 0x%x\n", | ||
| 320 | mvm->fw->default_calib[IWL_UCODE_INIT].event_trigger, | ||
| 321 | default_calib.event_trigger); | ||
| 322 | if (default_calib.flow_trigger != | ||
| 323 | mvm->fw->default_calib[IWL_UCODE_INIT].flow_trigger) | ||
| 324 | IWL_ERR(mvm, | ||
| 325 | "Updating the flow calib for INIT image: 0x%x -> 0x%x\n", | ||
| 326 | mvm->fw->default_calib[IWL_UCODE_INIT].flow_trigger, | ||
| 327 | default_calib.flow_trigger); | ||
| 328 | |||
| 329 | memcpy((void *)&mvm->fw->default_calib[IWL_UCODE_INIT], | ||
| 330 | &default_calib, sizeof(struct iwl_tlv_calib_ctrl)); | ||
| 331 | IWL_ERR(mvm, | ||
| 332 | "Setting uCode init calibrations event 0x%x, trigger 0x%x\n", | ||
| 333 | default_calib.event_trigger, | ||
| 334 | default_calib.flow_trigger); | ||
| 335 | |||
| 336 | /* Run time image */ | ||
| 337 | default_calib.event_trigger = cpu_to_le32(IWL_CALIB_DEFAULT_EVENT_RUN); | ||
| 338 | default_calib.flow_trigger = cpu_to_le32(IWL_CALIB_DEFAULT_FLOW_RUN); | ||
| 339 | |||
| 340 | if (default_calib.event_trigger != | ||
| 341 | mvm->fw->default_calib[IWL_UCODE_REGULAR].event_trigger) | ||
| 342 | IWL_ERR(mvm, | ||
| 343 | "Updating the event calib for RT image: 0x%x -> 0x%x\n", | ||
| 344 | mvm->fw->default_calib[IWL_UCODE_REGULAR].event_trigger, | ||
| 345 | default_calib.event_trigger); | ||
| 346 | if (default_calib.flow_trigger != | ||
| 347 | mvm->fw->default_calib[IWL_UCODE_REGULAR].flow_trigger) | ||
| 348 | IWL_ERR(mvm, | ||
| 349 | "Updating the flow calib for RT image: 0x%x -> 0x%x\n", | ||
| 350 | mvm->fw->default_calib[IWL_UCODE_REGULAR].flow_trigger, | ||
| 351 | default_calib.flow_trigger); | ||
| 352 | |||
| 353 | memcpy((void *)&mvm->fw->default_calib[IWL_UCODE_REGULAR], | ||
| 354 | &default_calib, sizeof(struct iwl_tlv_calib_ctrl)); | ||
| 355 | IWL_ERR(mvm, | ||
| 356 | "Setting uCode runtime calibs event 0x%x, trigger 0x%x\n", | ||
| 357 | default_calib.event_trigger, | ||
| 358 | default_calib.flow_trigger); | ||
| 359 | } | ||
| 360 | |||
| 361 | static int iwl_set_default_calibrations(struct iwl_mvm *mvm) | 250 | static int iwl_set_default_calibrations(struct iwl_mvm *mvm) |
| 362 | { | 251 | { |
| 363 | u8 cmd_raw[16]; /* holds the variable size commands */ | 252 | u8 cmd_raw[16]; /* holds the variable size commands */ |
| @@ -437,9 +326,6 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm) | |||
| 437 | if (ret) | 326 | if (ret) |
| 438 | goto error; | 327 | goto error; |
| 439 | 328 | ||
| 440 | /* Override the calibrations from TLV and the const of fw */ | ||
| 441 | iwl_set_default_calib_trigger(mvm); | ||
| 442 | |||
| 443 | /* WkP doesn't have all calibrations, need to set default values */ | 329 | /* WkP doesn't have all calibrations, need to set default values */ |
| 444 | if (mvm->cfg->device_family == IWL_DEVICE_FAMILY_7000) { | 330 | if (mvm->cfg->device_family == IWL_DEVICE_FAMILY_7000) { |
| 445 | ret = iwl_set_default_calibrations(mvm); | 331 | ret = iwl_set_default_calibrations(mvm); |
