diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-07-23 13:24:50 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-08-08 16:04:07 -0400 |
commit | ae7f9a740b4ac5a64306abc47a440b794c5b827a (patch) | |
tree | 417960419c67cb1badfe1df96b0efec90a8a5619 /drivers/net/wireless | |
parent | e7515ba154b63c87d987fb2a30bcbe8814c3f317 (diff) |
iwlagn: support v2 of enhanced sensitivity table
Add support for v2 of enhanced sensitivity table for 2000 series products
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-2000.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-calib.c | 69 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-commands.h | 34 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 2 |
4 files changed, 74 insertions, 33 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-2000.c b/drivers/net/wireless/iwlwifi/iwl-2000.c index 8a2cfde46d5a..54d931d614fb 100644 --- a/drivers/net/wireless/iwlwifi/iwl-2000.c +++ b/drivers/net/wireless/iwlwifi/iwl-2000.c | |||
@@ -221,6 +221,7 @@ static struct iwl_base_params iwl2000_base_params = { | |||
221 | .wd_timeout = IWL_DEF_WD_TIMEOUT, | 221 | .wd_timeout = IWL_DEF_WD_TIMEOUT, |
222 | .max_event_log_size = 512, | 222 | .max_event_log_size = 512, |
223 | .shadow_reg_enable = true, | 223 | .shadow_reg_enable = true, |
224 | .hd_v2 = true, | ||
224 | }; | 225 | }; |
225 | 226 | ||
226 | 227 | ||
@@ -240,6 +241,7 @@ static struct iwl_base_params iwl2030_base_params = { | |||
240 | .wd_timeout = IWL_LONG_WD_TIMEOUT, | 241 | .wd_timeout = IWL_LONG_WD_TIMEOUT, |
241 | .max_event_log_size = 512, | 242 | .max_event_log_size = 512, |
242 | .shadow_reg_enable = true, | 243 | .shadow_reg_enable = true, |
244 | .hd_v2 = true, | ||
243 | }; | 245 | }; |
244 | 246 | ||
245 | static struct iwl_ht_params iwl2000_ht_params = { | 247 | static struct iwl_ht_params iwl2000_ht_params = { |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-calib.c b/drivers/net/wireless/iwlwifi/iwl-agn-calib.c index 72d6297602b8..1789e3af8101 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-calib.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-calib.c | |||
@@ -505,28 +505,53 @@ static int iwl_enhance_sensitivity_write(struct iwl_priv *priv) | |||
505 | 505 | ||
506 | iwl_prepare_legacy_sensitivity_tbl(priv, data, &cmd.enhance_table[0]); | 506 | iwl_prepare_legacy_sensitivity_tbl(priv, data, &cmd.enhance_table[0]); |
507 | 507 | ||
508 | cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX] = | 508 | if (priv->cfg->base_params->hd_v2) { |
509 | HD_INA_NON_SQUARE_DET_OFDM_DATA; | 509 | cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX] = |
510 | cmd.enhance_table[HD_INA_NON_SQUARE_DET_CCK_INDEX] = | 510 | HD_INA_NON_SQUARE_DET_OFDM_DATA_V2; |
511 | HD_INA_NON_SQUARE_DET_CCK_DATA; | 511 | cmd.enhance_table[HD_INA_NON_SQUARE_DET_CCK_INDEX] = |
512 | cmd.enhance_table[HD_CORR_11_INSTEAD_OF_CORR_9_EN_INDEX] = | 512 | HD_INA_NON_SQUARE_DET_CCK_DATA_V2; |
513 | HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA; | 513 | cmd.enhance_table[HD_CORR_11_INSTEAD_OF_CORR_9_EN_INDEX] = |
514 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_INDEX] = | 514 | HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA_V2; |
515 | HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA; | 515 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_INDEX] = |
516 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] = | 516 | HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA_V2; |
517 | HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA; | 517 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] = |
518 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_INDEX] = | 518 | HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V2; |
519 | HD_OFDM_NON_SQUARE_DET_SLOPE_DATA; | 519 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_INDEX] = |
520 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_INDEX] = | 520 | HD_OFDM_NON_SQUARE_DET_SLOPE_DATA_V2; |
521 | HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA; | 521 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_INDEX] = |
522 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_MRC_INDEX] = | 522 | HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA_V2; |
523 | HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA; | 523 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_MRC_INDEX] = |
524 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] = | 524 | HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA_V2; |
525 | HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA; | 525 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] = |
526 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_INDEX] = | 526 | HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V2; |
527 | HD_CCK_NON_SQUARE_DET_SLOPE_DATA; | 527 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_INDEX] = |
528 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_INDEX] = | 528 | HD_CCK_NON_SQUARE_DET_SLOPE_DATA_V2; |
529 | HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA; | 529 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_INDEX] = |
530 | HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA_V2; | ||
531 | } else { | ||
532 | cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX] = | ||
533 | HD_INA_NON_SQUARE_DET_OFDM_DATA_V1; | ||
534 | cmd.enhance_table[HD_INA_NON_SQUARE_DET_CCK_INDEX] = | ||
535 | HD_INA_NON_SQUARE_DET_CCK_DATA_V1; | ||
536 | cmd.enhance_table[HD_CORR_11_INSTEAD_OF_CORR_9_EN_INDEX] = | ||
537 | HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA_V1; | ||
538 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_INDEX] = | ||
539 | HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA_V1; | ||
540 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] = | ||
541 | HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V1; | ||
542 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_INDEX] = | ||
543 | HD_OFDM_NON_SQUARE_DET_SLOPE_DATA_V1; | ||
544 | cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_INDEX] = | ||
545 | HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA_V1; | ||
546 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_MRC_INDEX] = | ||
547 | HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA_V1; | ||
548 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] = | ||
549 | HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V1; | ||
550 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_INDEX] = | ||
551 | HD_CCK_NON_SQUARE_DET_SLOPE_DATA_V1; | ||
552 | cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_INDEX] = | ||
553 | HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA_V1; | ||
554 | } | ||
530 | 555 | ||
531 | /* Update uCode's "work" table, and copy it to DSP */ | 556 | /* Update uCode's "work" table, and copy it to DSP */ |
532 | cmd.control = SENSITIVITY_CMD_CONTROL_WORK_TABLE; | 557 | cmd.control = SENSITIVITY_CMD_CONTROL_WORK_TABLE; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h index e9e9d1d1778d..0016c61b3000 100644 --- a/drivers/net/wireless/iwlwifi/iwl-commands.h +++ b/drivers/net/wireless/iwlwifi/iwl-commands.h | |||
@@ -3067,17 +3067,29 @@ struct iwl_missed_beacon_notif { | |||
3067 | /* number of additional entries for enhanced tbl */ | 3067 | /* number of additional entries for enhanced tbl */ |
3068 | #define ENHANCE_HD_TABLE_ENTRIES (ENHANCE_HD_TABLE_SIZE - HD_TABLE_SIZE) | 3068 | #define ENHANCE_HD_TABLE_ENTRIES (ENHANCE_HD_TABLE_SIZE - HD_TABLE_SIZE) |
3069 | 3069 | ||
3070 | #define HD_INA_NON_SQUARE_DET_OFDM_DATA cpu_to_le16(0) | 3070 | #define HD_INA_NON_SQUARE_DET_OFDM_DATA_V1 cpu_to_le16(0) |
3071 | #define HD_INA_NON_SQUARE_DET_CCK_DATA cpu_to_le16(0) | 3071 | #define HD_INA_NON_SQUARE_DET_CCK_DATA_V1 cpu_to_le16(0) |
3072 | #define HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA cpu_to_le16(0) | 3072 | #define HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA_V1 cpu_to_le16(0) |
3073 | #define HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA cpu_to_le16(668) | 3073 | #define HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA_V1 cpu_to_le16(668) |
3074 | #define HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA cpu_to_le16(4) | 3074 | #define HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V1 cpu_to_le16(4) |
3075 | #define HD_OFDM_NON_SQUARE_DET_SLOPE_DATA cpu_to_le16(486) | 3075 | #define HD_OFDM_NON_SQUARE_DET_SLOPE_DATA_V1 cpu_to_le16(486) |
3076 | #define HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA cpu_to_le16(37) | 3076 | #define HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA_V1 cpu_to_le16(37) |
3077 | #define HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA cpu_to_le16(853) | 3077 | #define HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA_V1 cpu_to_le16(853) |
3078 | #define HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA cpu_to_le16(4) | 3078 | #define HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V1 cpu_to_le16(4) |
3079 | #define HD_CCK_NON_SQUARE_DET_SLOPE_DATA cpu_to_le16(476) | 3079 | #define HD_CCK_NON_SQUARE_DET_SLOPE_DATA_V1 cpu_to_le16(476) |
3080 | #define HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA cpu_to_le16(99) | 3080 | #define HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA_V1 cpu_to_le16(99) |
3081 | |||
3082 | #define HD_INA_NON_SQUARE_DET_OFDM_DATA_V2 cpu_to_le16(1) | ||
3083 | #define HD_INA_NON_SQUARE_DET_CCK_DATA_V2 cpu_to_le16(1) | ||
3084 | #define HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA_V2 cpu_to_le16(1) | ||
3085 | #define HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA_V2 cpu_to_le16(600) | ||
3086 | #define HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V2 cpu_to_le16(40) | ||
3087 | #define HD_OFDM_NON_SQUARE_DET_SLOPE_DATA_V2 cpu_to_le16(486) | ||
3088 | #define HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA_V2 cpu_to_le16(45) | ||
3089 | #define HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA_V2 cpu_to_le16(853) | ||
3090 | #define HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V2 cpu_to_le16(60) | ||
3091 | #define HD_CCK_NON_SQUARE_DET_SLOPE_DATA_V2 cpu_to_le16(476) | ||
3092 | #define HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA_V2 cpu_to_le16(99) | ||
3081 | 3093 | ||
3082 | 3094 | ||
3083 | /* Control field in struct iwl_sensitivity_cmd */ | 3095 | /* Control field in struct iwl_sensitivity_cmd */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h index 0e5be5abb005..42bcb469d32c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.h +++ b/drivers/net/wireless/iwlwifi/iwl-core.h | |||
@@ -136,6 +136,7 @@ struct iwl_mod_params { | |||
136 | * @max_event_log_size: size of event log buffer size for ucode event logging | 136 | * @max_event_log_size: size of event log buffer size for ucode event logging |
137 | * @shadow_reg_enable: HW shadhow register bit | 137 | * @shadow_reg_enable: HW shadhow register bit |
138 | * @no_idle_support: do not support idle mode | 138 | * @no_idle_support: do not support idle mode |
139 | * @hd_v2: v2 of enhanced sensitivity value, used for 2000 series and up | ||
139 | */ | 140 | */ |
140 | struct iwl_base_params { | 141 | struct iwl_base_params { |
141 | int eeprom_size; | 142 | int eeprom_size; |
@@ -158,6 +159,7 @@ struct iwl_base_params { | |||
158 | u32 max_event_log_size; | 159 | u32 max_event_log_size; |
159 | const bool shadow_reg_enable; | 160 | const bool shadow_reg_enable; |
160 | const bool no_idle_support; | 161 | const bool no_idle_support; |
162 | const bool hd_v2; | ||
161 | }; | 163 | }; |
162 | /* | 164 | /* |
163 | * @advanced_bt_coexist: support advanced bt coexist | 165 | * @advanced_bt_coexist: support advanced bt coexist |