diff options
author | Zhu Yi <yi.zhu@intel.com> | 2009-06-25 06:28:31 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-07-10 15:02:25 -0400 |
commit | fd2c7fe0b4dedc34ea0a2a72e00648bd2b8c7c3a (patch) | |
tree | bf112bfd0dcb3a7d6efdb8af59898a65e3cf6167 /drivers/net/wireless/iwmc3200wifi/fw.c | |
parent | dd13fd649879b6230be5d855e00c286c5e60f354 (diff) |
iwmc3200wifi: simplify calibration map
The patch simplifies calibration map by combining the init_calib_map
and periodic_calib_map into one calib_map in struct iwm_conf. Now the
initial calibration map is stored in the lower 16 bits of calib_map
and the periodic calibration map is stored in the higher 16 bits.
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/fw.c')
-rw-r--r-- | drivers/net/wireless/iwmc3200wifi/fw.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/fw.c b/drivers/net/wireless/iwmc3200wifi/fw.c index ec1a15a5a0e4..c58f614ce6d8 100644 --- a/drivers/net/wireless/iwmc3200wifi/fw.c +++ b/drivers/net/wireless/iwmc3200wifi/fw.c | |||
@@ -275,6 +275,7 @@ static int iwm_load_lmac(struct iwm_priv *iwm, const char *img_name) | |||
275 | */ | 275 | */ |
276 | int iwm_load_fw(struct iwm_priv *iwm) | 276 | int iwm_load_fw(struct iwm_priv *iwm) |
277 | { | 277 | { |
278 | unsigned long init_calib_map, periodic_calib_map; | ||
278 | int ret; | 279 | int ret; |
279 | 280 | ||
280 | /* We first start downloading the UMAC */ | 281 | /* We first start downloading the UMAC */ |
@@ -315,23 +316,25 @@ int iwm_load_fw(struct iwm_priv *iwm) | |||
315 | return ret; | 316 | return ret; |
316 | } | 317 | } |
317 | 318 | ||
319 | init_calib_map = iwm->conf.calib_map & IWM_CALIB_MAP_INIT_MSK; | ||
320 | periodic_calib_map = IWM_CALIB_MAP_PER_LMAC(iwm->conf.calib_map); | ||
321 | |||
318 | #ifdef CONFIG_IWM_B0_HW_SUPPORT | 322 | #ifdef CONFIG_IWM_B0_HW_SUPPORT |
319 | if (iwm->conf.hw_b0) { | 323 | if (iwm->conf.hw_b0) { |
320 | clear_bit(PHY_CALIBRATE_RX_IQ_CMD, &iwm->conf.init_calib_map); | 324 | clear_bit(PHY_CALIBRATE_RX_IQ_CMD, &init_calib_map); |
321 | clear_bit(PHY_CALIBRATE_RX_IQ_CMD, | 325 | clear_bit(PHY_CALIBRATE_RX_IQ_CMD, &periodic_calib_map); |
322 | &iwm->conf.periodic_calib_map); | ||
323 | } | 326 | } |
324 | #endif | 327 | #endif |
325 | /* Read RX IQ calibration result from EEPROM */ | 328 | /* Read RX IQ calibration result from EEPROM */ |
326 | if (test_bit(PHY_CALIBRATE_RX_IQ_CMD, &iwm->conf.init_calib_map)) { | 329 | if (test_bit(PHY_CALIBRATE_RX_IQ_CMD, &init_calib_map)) { |
327 | iwm_store_rxiq_calib_result(iwm); | 330 | iwm_store_rxiq_calib_result(iwm); |
328 | set_bit(PHY_CALIBRATE_RX_IQ_CMD, &iwm->calib_done_map); | 331 | set_bit(PHY_CALIBRATE_RX_IQ_CMD, &iwm->calib_done_map); |
329 | } | 332 | } |
330 | 333 | ||
331 | iwm_send_prio_table(iwm); | 334 | iwm_send_prio_table(iwm); |
332 | iwm_send_init_calib_cfg(iwm, iwm->conf.init_calib_map); | 335 | iwm_send_init_calib_cfg(iwm, init_calib_map); |
333 | 336 | ||
334 | while (iwm->calib_done_map != iwm->conf.init_calib_map) { | 337 | while (iwm->calib_done_map != init_calib_map) { |
335 | ret = iwm_notif_handle(iwm, CALIBRATION_RES_NOTIFICATION, | 338 | ret = iwm_notif_handle(iwm, CALIBRATION_RES_NOTIFICATION, |
336 | IWM_SRC_LMAC, WAIT_NOTIF_TIMEOUT); | 339 | IWM_SRC_LMAC, WAIT_NOTIF_TIMEOUT); |
337 | if (ret) { | 340 | if (ret) { |
@@ -340,7 +343,7 @@ int iwm_load_fw(struct iwm_priv *iwm) | |||
340 | } | 343 | } |
341 | IWM_DBG_FW(iwm, DBG, "Got calibration result. calib_done_map: " | 344 | IWM_DBG_FW(iwm, DBG, "Got calibration result. calib_done_map: " |
342 | "0x%lx, requested calibrations: 0x%lx\n", | 345 | "0x%lx, requested calibrations: 0x%lx\n", |
343 | iwm->calib_done_map, iwm->conf.init_calib_map); | 346 | iwm->calib_done_map, init_calib_map); |
344 | } | 347 | } |
345 | 348 | ||
346 | /* Handle LMAC CALIBRATION_COMPLETE notification */ | 349 | /* Handle LMAC CALIBRATION_COMPLETE notification */ |
@@ -378,7 +381,7 @@ int iwm_load_fw(struct iwm_priv *iwm) | |||
378 | 381 | ||
379 | iwm_send_prio_table(iwm); | 382 | iwm_send_prio_table(iwm); |
380 | iwm_send_calib_results(iwm); | 383 | iwm_send_calib_results(iwm); |
381 | iwm_send_periodic_calib_cfg(iwm, iwm->conf.periodic_calib_map); | 384 | iwm_send_periodic_calib_cfg(iwm, periodic_calib_map); |
382 | 385 | ||
383 | return 0; | 386 | return 0; |
384 | 387 | ||