aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-6000.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-6000.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c621
1 files changed, 212 insertions, 409 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 9f43f2770c96..6261aec5ebdc 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -51,13 +51,15 @@
51 51
52/* Highest firmware API version supported */ 52/* Highest firmware API version supported */
53#define IWL6000_UCODE_API_MAX 4 53#define IWL6000_UCODE_API_MAX 4
54#define IWL6050_UCODE_API_MAX 4 54#define IWL6050_UCODE_API_MAX 5
55#define IWL6000G2_UCODE_API_MAX 5 55#define IWL6000G2_UCODE_API_MAX 5
56#define IWL130_UCODE_API_MAX 5
56 57
57/* Lowest firmware API version supported */ 58/* Lowest firmware API version supported */
58#define IWL6000_UCODE_API_MIN 4 59#define IWL6000_UCODE_API_MIN 4
59#define IWL6050_UCODE_API_MIN 4 60#define IWL6050_UCODE_API_MIN 4
60#define IWL6000G2_UCODE_API_MIN 4 61#define IWL6000G2_UCODE_API_MIN 4
62#define IWL130_UCODE_API_MIN 5
61 63
62#define IWL6000_FW_PRE "iwlwifi-6000-" 64#define IWL6000_FW_PRE "iwlwifi-6000-"
63#define _IWL6000_MODULE_FIRMWARE(api) IWL6000_FW_PRE #api ".ucode" 65#define _IWL6000_MODULE_FIRMWARE(api) IWL6000_FW_PRE #api ".ucode"
@@ -75,6 +77,9 @@
75#define _IWL6000G2B_MODULE_FIRMWARE(api) IWL6000G2B_FW_PRE #api ".ucode" 77#define _IWL6000G2B_MODULE_FIRMWARE(api) IWL6000G2B_FW_PRE #api ".ucode"
76#define IWL6000G2B_MODULE_FIRMWARE(api) _IWL6000G2B_MODULE_FIRMWARE(api) 78#define IWL6000G2B_MODULE_FIRMWARE(api) _IWL6000G2B_MODULE_FIRMWARE(api)
77 79
80#define IWL130_FW_PRE "iwlwifi-130-"
81#define _IWL130_MODULE_FIRMWARE(api) IWL130_FW_PRE #api ".ucode"
82#define IWL130_MODULE_FIRMWARE(api) _IWL130_MODULE_FIRMWARE(api)
78 83
79static void iwl6000_set_ct_threshold(struct iwl_priv *priv) 84static void iwl6000_set_ct_threshold(struct iwl_priv *priv)
80{ 85{
@@ -83,15 +88,24 @@ static void iwl6000_set_ct_threshold(struct iwl_priv *priv)
83 priv->hw_params.ct_kill_exit_threshold = CT_KILL_EXIT_THRESHOLD; 88 priv->hw_params.ct_kill_exit_threshold = CT_KILL_EXIT_THRESHOLD;
84} 89}
85 90
86/* Indicate calibration version to uCode. */ 91static void iwl6050_additional_nic_config(struct iwl_priv *priv)
87static void iwl6000_set_calib_version(struct iwl_priv *priv)
88{ 92{
89 if (priv->cfg->need_dc_calib && 93 /* Indicate calibration version to uCode. */
90 (priv->cfg->ops->lib->eeprom_ops.calib_version(priv) >= 6)) 94 if (priv->cfg->ops->lib->eeprom_ops.calib_version(priv) >= 6)
91 iwl_set_bit(priv, CSR_GP_DRIVER_REG, 95 iwl_set_bit(priv, CSR_GP_DRIVER_REG,
92 CSR_GP_DRIVER_REG_BIT_CALIB_VERSION6); 96 CSR_GP_DRIVER_REG_BIT_CALIB_VERSION6);
93} 97}
94 98
99static void iwl6050g2_additional_nic_config(struct iwl_priv *priv)
100{
101 /* Indicate calibration version to uCode. */
102 if (priv->cfg->ops->lib->eeprom_ops.calib_version(priv) >= 6)
103 iwl_set_bit(priv, CSR_GP_DRIVER_REG,
104 CSR_GP_DRIVER_REG_BIT_CALIB_VERSION6);
105 iwl_set_bit(priv, CSR_GP_DRIVER_REG,
106 CSR_GP_DRIVER_REG_BIT_6050_1x2);
107}
108
95/* NIC configuration for 6000 series */ 109/* NIC configuration for 6000 series */
96static void iwl6000_nic_config(struct iwl_priv *priv) 110static void iwl6000_nic_config(struct iwl_priv *priv)
97{ 111{
@@ -117,9 +131,11 @@ static void iwl6000_nic_config(struct iwl_priv *priv)
117 iwl_write32(priv, CSR_GP_DRIVER_REG, 131 iwl_write32(priv, CSR_GP_DRIVER_REG,
118 CSR_GP_DRIVER_REG_BIT_RADIO_SKU_2x2_IPA); 132 CSR_GP_DRIVER_REG_BIT_RADIO_SKU_2x2_IPA);
119 } 133 }
120 /* else do nothing, uCode configured */ 134 /* do additional nic configuration if needed */
121 if (priv->cfg->ops->lib->temp_ops.set_calib_version) 135 if (priv->cfg->ops->nic &&
122 priv->cfg->ops->lib->temp_ops.set_calib_version(priv); 136 priv->cfg->ops->nic->additional_nic_config) {
137 priv->cfg->ops->nic->additional_nic_config(priv);
138 }
123} 139}
124 140
125static struct iwl_sensitivity_ranges iwl6000_sensitivity = { 141static struct iwl_sensitivity_ranges iwl6000_sensitivity = {
@@ -151,13 +167,13 @@ static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
151{ 167{
152 if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES && 168 if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES &&
153 priv->cfg->mod_params->num_of_queues <= IWLAGN_NUM_QUEUES) 169 priv->cfg->mod_params->num_of_queues <= IWLAGN_NUM_QUEUES)
154 priv->cfg->num_of_queues = 170 priv->cfg->base_params->num_of_queues =
155 priv->cfg->mod_params->num_of_queues; 171 priv->cfg->mod_params->num_of_queues;
156 172
157 priv->hw_params.max_txq_num = priv->cfg->num_of_queues; 173 priv->hw_params.max_txq_num = priv->cfg->base_params->num_of_queues;
158 priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM; 174 priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM;
159 priv->hw_params.scd_bc_tbls_size = 175 priv->hw_params.scd_bc_tbls_size =
160 priv->cfg->num_of_queues * 176 priv->cfg->base_params->num_of_queues *
161 sizeof(struct iwlagn_scd_bc_tbl); 177 sizeof(struct iwlagn_scd_bc_tbl);
162 priv->hw_params.tfd_size = sizeof(struct iwl_tfd); 178 priv->hw_params.tfd_size = sizeof(struct iwl_tfd);
163 priv->hw_params.max_stations = IWLAGN_STATION_COUNT; 179 priv->hw_params.max_stations = IWLAGN_STATION_COUNT;
@@ -188,7 +204,7 @@ static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
188 BIT(IWL_CALIB_TX_IQ) | 204 BIT(IWL_CALIB_TX_IQ) |
189 BIT(IWL_CALIB_BASE_BAND); 205 BIT(IWL_CALIB_BASE_BAND);
190 if (priv->cfg->need_dc_calib) 206 if (priv->cfg->need_dc_calib)
191 priv->hw_params.calib_init_cfg |= BIT(IWL_CALIB_DC); 207 priv->hw_params.calib_rt_cfg |= BIT(IWL_CALIB_CFG_DC_IDX);
192 208
193 priv->hw_params.beacon_time_tsf_bits = IWLAGN_EXT_BEACON_TIME_POS; 209 priv->hw_params.beacon_time_tsf_bits = IWLAGN_EXT_BEACON_TIME_POS;
194 210
@@ -320,7 +336,6 @@ static struct iwl_lib_ops iwl6000_lib = {
320 .temp_ops = { 336 .temp_ops = {
321 .temperature = iwlagn_temperature, 337 .temperature = iwlagn_temperature,
322 .set_ct_kill = iwl6000_set_ct_threshold, 338 .set_ct_kill = iwl6000_set_ct_threshold,
323 .set_calib_version = iwl6000_set_calib_version,
324 }, 339 },
325 .manage_ibss_station = iwlagn_manage_ibss_station, 340 .manage_ibss_station = iwlagn_manage_ibss_station,
326 .update_bcast_stations = iwl_update_bcast_stations, 341 .update_bcast_stations = iwl_update_bcast_stations,
@@ -396,7 +411,6 @@ static struct iwl_lib_ops iwl6000g2b_lib = {
396 .temp_ops = { 411 .temp_ops = {
397 .temperature = iwlagn_temperature, 412 .temperature = iwlagn_temperature,
398 .set_ct_kill = iwl6000_set_ct_threshold, 413 .set_ct_kill = iwl6000_set_ct_threshold,
399 .set_calib_version = iwl6000_set_calib_version,
400 }, 414 },
401 .manage_ibss_station = iwlagn_manage_ibss_station, 415 .manage_ibss_station = iwlagn_manage_ibss_station,
402 .update_bcast_stations = iwl_update_bcast_stations, 416 .update_bcast_stations = iwl_update_bcast_stations,
@@ -419,6 +433,14 @@ static struct iwl_lib_ops iwl6000g2b_lib = {
419 } 433 }
420}; 434};
421 435
436static struct iwl_nic_ops iwl6050_nic_ops = {
437 .additional_nic_config = &iwl6050_additional_nic_config,
438};
439
440static struct iwl_nic_ops iwl6050g2_nic_ops = {
441 .additional_nic_config = &iwl6050g2_additional_nic_config,
442};
443
422static const struct iwl_ops iwl6000_ops = { 444static const struct iwl_ops iwl6000_ops = {
423 .lib = &iwl6000_lib, 445 .lib = &iwl6000_lib,
424 .hcmd = &iwlagn_hcmd, 446 .hcmd = &iwlagn_hcmd,
@@ -426,6 +448,22 @@ static const struct iwl_ops iwl6000_ops = {
426 .led = &iwlagn_led_ops, 448 .led = &iwlagn_led_ops,
427}; 449};
428 450
451static const struct iwl_ops iwl6050_ops = {
452 .lib = &iwl6000_lib,
453 .hcmd = &iwlagn_hcmd,
454 .utils = &iwlagn_hcmd_utils,
455 .led = &iwlagn_led_ops,
456 .nic = &iwl6050_nic_ops,
457};
458
459static const struct iwl_ops iwl6050g2_ops = {
460 .lib = &iwl6000_lib,
461 .hcmd = &iwlagn_hcmd,
462 .utils = &iwlagn_hcmd_utils,
463 .led = &iwlagn_led_ops,
464 .nic = &iwl6050g2_nic_ops,
465};
466
429static const struct iwl_ops iwl6000g2b_ops = { 467static const struct iwl_ops iwl6000g2b_ops = {
430 .lib = &iwl6000g2b_lib, 468 .lib = &iwl6000g2b_lib,
431 .hcmd = &iwlagn_bt_hcmd, 469 .hcmd = &iwlagn_bt_hcmd,
@@ -433,30 +471,16 @@ static const struct iwl_ops iwl6000g2b_ops = {
433 .led = &iwlagn_led_ops, 471 .led = &iwlagn_led_ops,
434}; 472};
435 473
436struct iwl_cfg iwl6000g2a_2agn_cfg = { 474static struct iwl_base_params iwl6000_base_params = {
437 .name = "6000 Series 2x2 AGN Gen2a",
438 .fw_name_pre = IWL6000G2A_FW_PRE,
439 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
440 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
441 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
442 .ops = &iwl6000_ops,
443 .eeprom_size = OTP_LOW_IMAGE_SIZE, 475 .eeprom_size = OTP_LOW_IMAGE_SIZE,
444 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
445 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
446 .num_of_queues = IWLAGN_NUM_QUEUES, 476 .num_of_queues = IWLAGN_NUM_QUEUES,
447 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES, 477 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
448 .mod_params = &iwlagn_mod_params,
449 .valid_tx_ant = ANT_AB,
450 .valid_rx_ant = ANT_AB,
451 .pll_cfg_val = 0, 478 .pll_cfg_val = 0,
452 .set_l0s = true, 479 .set_l0s = true,
453 .use_bsm = false, 480 .use_bsm = false,
454 .pa_type = IWL_PA_SYSTEM,
455 .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 481 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
456 .shadow_ram_support = true, 482 .shadow_ram_support = true,
457 .ht_greenfield_support = true,
458 .led_compensation = 51, 483 .led_compensation = 51,
459 .use_rts_for_aggregation = true, /* use rts/cts protection */
460 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, 484 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
461 .supports_idle = true, 485 .supports_idle = true,
462 .adv_thermal_throttle = true, 486 .adv_thermal_throttle = true,
@@ -468,29 +492,16 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = {
468 .ucode_tracing = true, 492 .ucode_tracing = true,
469 .sensitivity_calib_by_driver = true, 493 .sensitivity_calib_by_driver = true,
470 .chain_noise_calib_by_driver = true, 494 .chain_noise_calib_by_driver = true,
471 .need_dc_calib = true,
472}; 495};
473 496
474struct iwl_cfg iwl6000g2a_2abg_cfg = { 497static struct iwl_base_params iwl6050_base_params = {
475 .name = "6000 Series 2x2 ABG Gen2a",
476 .fw_name_pre = IWL6000G2A_FW_PRE,
477 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
478 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
479 .sku = IWL_SKU_A|IWL_SKU_G,
480 .ops = &iwl6000_ops,
481 .eeprom_size = OTP_LOW_IMAGE_SIZE, 498 .eeprom_size = OTP_LOW_IMAGE_SIZE,
482 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
483 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
484 .num_of_queues = IWLAGN_NUM_QUEUES, 499 .num_of_queues = IWLAGN_NUM_QUEUES,
485 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES, 500 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
486 .mod_params = &iwlagn_mod_params,
487 .valid_tx_ant = ANT_AB,
488 .valid_rx_ant = ANT_AB,
489 .pll_cfg_val = 0, 501 .pll_cfg_val = 0,
490 .set_l0s = true, 502 .set_l0s = true,
491 .use_bsm = false, 503 .use_bsm = false,
492 .pa_type = IWL_PA_SYSTEM, 504 .max_ll_items = OTP_MAX_LL_ITEMS_6x50,
493 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
494 .shadow_ram_support = true, 505 .shadow_ram_support = true,
495 .led_compensation = 51, 506 .led_compensation = 51,
496 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, 507 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
@@ -498,11 +509,57 @@ struct iwl_cfg iwl6000g2a_2abg_cfg = {
498 .adv_thermal_throttle = true, 509 .adv_thermal_throttle = true,
499 .support_ct_kill_exit = true, 510 .support_ct_kill_exit = true,
500 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, 511 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
501 .chain_noise_scale = 1000, 512 .chain_noise_scale = 1500,
502 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD, 513 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
503 .max_event_log_size = 512, 514 .max_event_log_size = 1024,
515 .ucode_tracing = true,
504 .sensitivity_calib_by_driver = true, 516 .sensitivity_calib_by_driver = true,
505 .chain_noise_calib_by_driver = true, 517 .chain_noise_calib_by_driver = true,
518};
519
520static struct iwl_ht_params iwl6000_ht_params = {
521 .ht_greenfield_support = true,
522 .use_rts_for_aggregation = true, /* use rts/cts protection */
523};
524
525static struct iwl_bt_params iwl6000_bt_params = {
526 .bt_statistics = true,
527 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
528 .advanced_bt_coexist = true,
529 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE,
530 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT,
531};
532
533struct iwl_cfg iwl6000g2a_2agn_cfg = {
534 .name = "6000 Series 2x2 AGN Gen2a",
535 .fw_name_pre = IWL6000G2A_FW_PRE,
536 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
537 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
538 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
539 .valid_tx_ant = ANT_AB,
540 .valid_rx_ant = ANT_AB,
541 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
542 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
543 .ops = &iwl6000_ops,
544 .mod_params = &iwlagn_mod_params,
545 .base_params = &iwl6000_base_params,
546 .ht_params = &iwl6000_ht_params,
547 .need_dc_calib = true,
548};
549
550struct iwl_cfg iwl6000g2a_2abg_cfg = {
551 .name = "6000 Series 2x2 ABG Gen2a",
552 .fw_name_pre = IWL6000G2A_FW_PRE,
553 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
554 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
555 .sku = IWL_SKU_A|IWL_SKU_G,
556 .valid_tx_ant = ANT_AB,
557 .valid_rx_ant = ANT_AB,
558 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
559 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
560 .ops = &iwl6000_ops,
561 .mod_params = &iwlagn_mod_params,
562 .base_params = &iwl6000_base_params,
506 .need_dc_calib = true, 563 .need_dc_calib = true,
507}; 564};
508 565
@@ -512,32 +569,13 @@ struct iwl_cfg iwl6000g2a_2bg_cfg = {
512 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 569 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
513 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 570 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
514 .sku = IWL_SKU_G, 571 .sku = IWL_SKU_G,
515 .ops = &iwl6000_ops, 572 .valid_tx_ant = ANT_AB,
516 .eeprom_size = OTP_LOW_IMAGE_SIZE, 573 .valid_rx_ant = ANT_AB,
517 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 574 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
518 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION, 575 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
519 .num_of_queues = IWLAGN_NUM_QUEUES, 576 .ops = &iwl6000_ops,
520 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
521 .mod_params = &iwlagn_mod_params, 577 .mod_params = &iwlagn_mod_params,
522 .valid_tx_ant = ANT_AB, 578 .base_params = &iwl6000_base_params,
523 .valid_rx_ant = ANT_AB,
524 .pll_cfg_val = 0,
525 .set_l0s = true,
526 .use_bsm = false,
527 .pa_type = IWL_PA_SYSTEM,
528 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
529 .shadow_ram_support = true,
530 .led_compensation = 51,
531 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
532 .supports_idle = true,
533 .adv_thermal_throttle = true,
534 .support_ct_kill_exit = true,
535 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
536 .chain_noise_scale = 1000,
537 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
538 .max_event_log_size = 512,
539 .sensitivity_calib_by_driver = true,
540 .chain_noise_calib_by_driver = true,
541 .need_dc_calib = true, 579 .need_dc_calib = true,
542}; 580};
543 581
@@ -547,41 +585,18 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
547 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 585 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
548 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 586 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
549 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N, 587 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
550 .ops = &iwl6000g2b_ops, 588 .valid_tx_ant = ANT_AB,
551 .eeprom_size = OTP_LOW_IMAGE_SIZE, 589 .valid_rx_ant = ANT_AB,
552 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 590 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
553 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION, 591 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
554 .num_of_queues = IWLAGN_NUM_QUEUES, 592 .ops = &iwl6000g2b_ops,
555 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
556 .mod_params = &iwlagn_mod_params, 593 .mod_params = &iwlagn_mod_params,
557 .valid_tx_ant = ANT_AB, 594 .base_params = &iwl6000_base_params,
558 .valid_rx_ant = ANT_AB, 595 .bt_params = &iwl6000_bt_params,
559 .pll_cfg_val = 0, 596 .ht_params = &iwl6000_ht_params,
560 .set_l0s = true,
561 .use_bsm = false,
562 .pa_type = IWL_PA_SYSTEM,
563 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
564 .shadow_ram_support = true,
565 .ht_greenfield_support = true,
566 .led_compensation = 51,
567 .use_rts_for_aggregation = true, /* use rts/cts protection */
568 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
569 .supports_idle = true,
570 .adv_thermal_throttle = true,
571 .support_ct_kill_exit = true,
572 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
573 .chain_noise_scale = 1000,
574 .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
575 .max_event_log_size = 512,
576 .sensitivity_calib_by_driver = true,
577 .chain_noise_calib_by_driver = true,
578 .need_dc_calib = true, 597 .need_dc_calib = true,
579 .bt_statistics = true,
580 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 598 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
581 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 599 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
582 .advanced_bt_coexist = true,
583 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE,
584 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT,
585}; 600};
586 601
587struct iwl_cfg iwl6000g2b_2abg_cfg = { 602struct iwl_cfg iwl6000g2b_2abg_cfg = {
@@ -590,39 +605,17 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
590 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 605 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
591 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 606 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
592 .sku = IWL_SKU_A|IWL_SKU_G, 607 .sku = IWL_SKU_A|IWL_SKU_G,
593 .ops = &iwl6000g2b_ops, 608 .valid_tx_ant = ANT_AB,
594 .eeprom_size = OTP_LOW_IMAGE_SIZE, 609 .valid_rx_ant = ANT_AB,
595 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 610 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
596 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION, 611 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
597 .num_of_queues = IWLAGN_NUM_QUEUES, 612 .ops = &iwl6000g2b_ops,
598 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
599 .mod_params = &iwlagn_mod_params, 613 .mod_params = &iwlagn_mod_params,
600 .valid_tx_ant = ANT_AB, 614 .base_params = &iwl6000_base_params,
601 .valid_rx_ant = ANT_AB, 615 .bt_params = &iwl6000_bt_params,
602 .pll_cfg_val = 0,
603 .set_l0s = true,
604 .use_bsm = false,
605 .pa_type = IWL_PA_SYSTEM,
606 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
607 .shadow_ram_support = true,
608 .led_compensation = 51,
609 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
610 .supports_idle = true,
611 .adv_thermal_throttle = true,
612 .support_ct_kill_exit = true,
613 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
614 .chain_noise_scale = 1000,
615 .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
616 .max_event_log_size = 512,
617 .sensitivity_calib_by_driver = true,
618 .chain_noise_calib_by_driver = true,
619 .need_dc_calib = true, 616 .need_dc_calib = true,
620 .bt_statistics = true,
621 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 617 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
622 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 618 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
623 .advanced_bt_coexist = true,
624 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE,
625 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT,
626}; 619};
627 620
628struct iwl_cfg iwl6000g2b_2bgn_cfg = { 621struct iwl_cfg iwl6000g2b_2bgn_cfg = {
@@ -631,41 +624,18 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
631 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 624 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
632 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 625 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
633 .sku = IWL_SKU_G|IWL_SKU_N, 626 .sku = IWL_SKU_G|IWL_SKU_N,
634 .ops = &iwl6000g2b_ops, 627 .valid_tx_ant = ANT_AB,
635 .eeprom_size = OTP_LOW_IMAGE_SIZE, 628 .valid_rx_ant = ANT_AB,
636 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 629 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
637 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION, 630 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
638 .num_of_queues = IWLAGN_NUM_QUEUES, 631 .ops = &iwl6000g2b_ops,
639 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
640 .mod_params = &iwlagn_mod_params, 632 .mod_params = &iwlagn_mod_params,
641 .valid_tx_ant = ANT_AB, 633 .base_params = &iwl6000_base_params,
642 .valid_rx_ant = ANT_AB, 634 .bt_params = &iwl6000_bt_params,
643 .pll_cfg_val = 0, 635 .ht_params = &iwl6000_ht_params,
644 .set_l0s = true,
645 .use_bsm = false,
646 .pa_type = IWL_PA_SYSTEM,
647 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
648 .shadow_ram_support = true,
649 .ht_greenfield_support = true,
650 .led_compensation = 51,
651 .use_rts_for_aggregation = true, /* use rts/cts protection */
652 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
653 .supports_idle = true,
654 .adv_thermal_throttle = true,
655 .support_ct_kill_exit = true,
656 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
657 .chain_noise_scale = 1000,
658 .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
659 .max_event_log_size = 512,
660 .sensitivity_calib_by_driver = true,
661 .chain_noise_calib_by_driver = true,
662 .need_dc_calib = true, 636 .need_dc_calib = true,
663 .bt_statistics = true,
664 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 637 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
665 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 638 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
666 .advanced_bt_coexist = true,
667 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE,
668 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT,
669}; 639};
670 640
671struct iwl_cfg iwl6000g2b_2bg_cfg = { 641struct iwl_cfg iwl6000g2b_2bg_cfg = {
@@ -674,39 +644,17 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = {
674 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 644 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
675 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 645 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
676 .sku = IWL_SKU_G, 646 .sku = IWL_SKU_G,
677 .ops = &iwl6000g2b_ops, 647 .valid_tx_ant = ANT_AB,
678 .eeprom_size = OTP_LOW_IMAGE_SIZE, 648 .valid_rx_ant = ANT_AB,
679 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 649 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
680 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION, 650 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
681 .num_of_queues = IWLAGN_NUM_QUEUES, 651 .ops = &iwl6000g2b_ops,
682 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
683 .mod_params = &iwlagn_mod_params, 652 .mod_params = &iwlagn_mod_params,
684 .valid_tx_ant = ANT_AB, 653 .base_params = &iwl6000_base_params,
685 .valid_rx_ant = ANT_AB, 654 .bt_params = &iwl6000_bt_params,
686 .pll_cfg_val = 0,
687 .set_l0s = true,
688 .use_bsm = false,
689 .pa_type = IWL_PA_SYSTEM,
690 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
691 .shadow_ram_support = true,
692 .led_compensation = 51,
693 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
694 .supports_idle = true,
695 .adv_thermal_throttle = true,
696 .support_ct_kill_exit = true,
697 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
698 .chain_noise_scale = 1000,
699 .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
700 .max_event_log_size = 512,
701 .sensitivity_calib_by_driver = true,
702 .chain_noise_calib_by_driver = true,
703 .need_dc_calib = true, 655 .need_dc_calib = true,
704 .bt_statistics = true,
705 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 656 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
706 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 657 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
707 .advanced_bt_coexist = true,
708 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE,
709 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT,
710}; 658};
711 659
712struct iwl_cfg iwl6000g2b_bgn_cfg = { 660struct iwl_cfg iwl6000g2b_bgn_cfg = {
@@ -715,41 +663,18 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
715 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 663 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
716 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 664 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
717 .sku = IWL_SKU_G|IWL_SKU_N, 665 .sku = IWL_SKU_G|IWL_SKU_N,
718 .ops = &iwl6000g2b_ops, 666 .valid_tx_ant = ANT_A,
719 .eeprom_size = OTP_LOW_IMAGE_SIZE, 667 .valid_rx_ant = ANT_AB,
720 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 668 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
721 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION, 669 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
722 .num_of_queues = IWLAGN_NUM_QUEUES, 670 .ops = &iwl6000g2b_ops,
723 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
724 .mod_params = &iwlagn_mod_params, 671 .mod_params = &iwlagn_mod_params,
725 .valid_tx_ant = ANT_A, 672 .base_params = &iwl6000_base_params,
726 .valid_rx_ant = ANT_AB, 673 .bt_params = &iwl6000_bt_params,
727 .pll_cfg_val = 0, 674 .ht_params = &iwl6000_ht_params,
728 .set_l0s = true,
729 .use_bsm = false,
730 .pa_type = IWL_PA_SYSTEM,
731 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
732 .shadow_ram_support = true,
733 .ht_greenfield_support = true,
734 .led_compensation = 51,
735 .use_rts_for_aggregation = true, /* use rts/cts protection */
736 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
737 .supports_idle = true,
738 .adv_thermal_throttle = true,
739 .support_ct_kill_exit = true,
740 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
741 .chain_noise_scale = 1000,
742 .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
743 .max_event_log_size = 512,
744 .sensitivity_calib_by_driver = true,
745 .chain_noise_calib_by_driver = true,
746 .need_dc_calib = true, 675 .need_dc_calib = true,
747 .bt_statistics = true,
748 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 676 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
749 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 677 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
750 .advanced_bt_coexist = true,
751 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE,
752 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT,
753}; 678};
754 679
755struct iwl_cfg iwl6000g2b_bg_cfg = { 680struct iwl_cfg iwl6000g2b_bg_cfg = {
@@ -758,39 +683,17 @@ struct iwl_cfg iwl6000g2b_bg_cfg = {
758 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 683 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
759 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 684 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
760 .sku = IWL_SKU_G, 685 .sku = IWL_SKU_G,
761 .ops = &iwl6000g2b_ops, 686 .valid_tx_ant = ANT_A,
762 .eeprom_size = OTP_LOW_IMAGE_SIZE, 687 .valid_rx_ant = ANT_AB,
763 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 688 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
764 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION, 689 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
765 .num_of_queues = IWLAGN_NUM_QUEUES, 690 .ops = &iwl6000g2b_ops,
766 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
767 .mod_params = &iwlagn_mod_params, 691 .mod_params = &iwlagn_mod_params,
768 .valid_tx_ant = ANT_A, 692 .base_params = &iwl6000_base_params,
769 .valid_rx_ant = ANT_AB, 693 .bt_params = &iwl6000_bt_params,
770 .pll_cfg_val = 0,
771 .set_l0s = true,
772 .use_bsm = false,
773 .pa_type = IWL_PA_SYSTEM,
774 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
775 .shadow_ram_support = true,
776 .led_compensation = 51,
777 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
778 .supports_idle = true,
779 .adv_thermal_throttle = true,
780 .support_ct_kill_exit = true,
781 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
782 .chain_noise_scale = 1000,
783 .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
784 .max_event_log_size = 512,
785 .sensitivity_calib_by_driver = true,
786 .chain_noise_calib_by_driver = true,
787 .need_dc_calib = true, 694 .need_dc_calib = true,
788 .bt_statistics = true,
789 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 695 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
790 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 696 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
791 .advanced_bt_coexist = true,
792 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE,
793 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT,
794}; 697};
795 698
796/* 699/*
@@ -802,35 +705,15 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
802 .ucode_api_max = IWL6000_UCODE_API_MAX, 705 .ucode_api_max = IWL6000_UCODE_API_MAX,
803 .ucode_api_min = IWL6000_UCODE_API_MIN, 706 .ucode_api_min = IWL6000_UCODE_API_MIN,
804 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N, 707 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
805 .ops = &iwl6000_ops, 708 .valid_tx_ant = ANT_BC,
806 .eeprom_size = OTP_LOW_IMAGE_SIZE, 709 .valid_rx_ant = ANT_BC,
807 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 710 .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
808 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION, 711 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION,
809 .num_of_queues = IWLAGN_NUM_QUEUES, 712 .ops = &iwl6000_ops,
810 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
811 .mod_params = &iwlagn_mod_params, 713 .mod_params = &iwlagn_mod_params,
812 .valid_tx_ant = ANT_BC, 714 .base_params = &iwl6000_base_params,
813 .valid_rx_ant = ANT_BC, 715 .ht_params = &iwl6000_ht_params,
814 .pll_cfg_val = 0,
815 .set_l0s = true,
816 .use_bsm = false,
817 .pa_type = IWL_PA_INTERNAL, 716 .pa_type = IWL_PA_INTERNAL,
818 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
819 .shadow_ram_support = true,
820 .ht_greenfield_support = true,
821 .led_compensation = 51,
822 .use_rts_for_aggregation = true, /* use rts/cts protection */
823 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
824 .supports_idle = true,
825 .adv_thermal_throttle = true,
826 .support_ct_kill_exit = true,
827 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
828 .chain_noise_scale = 1000,
829 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
830 .max_event_log_size = 1024,
831 .ucode_tracing = true,
832 .sensitivity_calib_by_driver = true,
833 .chain_noise_calib_by_driver = true,
834}; 717};
835 718
836struct iwl_cfg iwl6000i_2abg_cfg = { 719struct iwl_cfg iwl6000i_2abg_cfg = {
@@ -839,33 +722,14 @@ struct iwl_cfg iwl6000i_2abg_cfg = {
839 .ucode_api_max = IWL6000_UCODE_API_MAX, 722 .ucode_api_max = IWL6000_UCODE_API_MAX,
840 .ucode_api_min = IWL6000_UCODE_API_MIN, 723 .ucode_api_min = IWL6000_UCODE_API_MIN,
841 .sku = IWL_SKU_A|IWL_SKU_G, 724 .sku = IWL_SKU_A|IWL_SKU_G,
842 .ops = &iwl6000_ops, 725 .valid_tx_ant = ANT_BC,
843 .eeprom_size = OTP_LOW_IMAGE_SIZE, 726 .valid_rx_ant = ANT_BC,
844 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 727 .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
845 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION, 728 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION,
846 .num_of_queues = IWLAGN_NUM_QUEUES, 729 .ops = &iwl6000_ops,
847 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
848 .mod_params = &iwlagn_mod_params, 730 .mod_params = &iwlagn_mod_params,
849 .valid_tx_ant = ANT_BC, 731 .base_params = &iwl6000_base_params,
850 .valid_rx_ant = ANT_BC,
851 .pll_cfg_val = 0,
852 .set_l0s = true,
853 .use_bsm = false,
854 .pa_type = IWL_PA_INTERNAL, 732 .pa_type = IWL_PA_INTERNAL,
855 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
856 .shadow_ram_support = true,
857 .led_compensation = 51,
858 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
859 .supports_idle = true,
860 .adv_thermal_throttle = true,
861 .support_ct_kill_exit = true,
862 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
863 .chain_noise_scale = 1000,
864 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
865 .max_event_log_size = 1024,
866 .ucode_tracing = true,
867 .sensitivity_calib_by_driver = true,
868 .chain_noise_calib_by_driver = true,
869}; 733};
870 734
871struct iwl_cfg iwl6000i_2bg_cfg = { 735struct iwl_cfg iwl6000i_2bg_cfg = {
@@ -874,33 +738,14 @@ struct iwl_cfg iwl6000i_2bg_cfg = {
874 .ucode_api_max = IWL6000_UCODE_API_MAX, 738 .ucode_api_max = IWL6000_UCODE_API_MAX,
875 .ucode_api_min = IWL6000_UCODE_API_MIN, 739 .ucode_api_min = IWL6000_UCODE_API_MIN,
876 .sku = IWL_SKU_G, 740 .sku = IWL_SKU_G,
877 .ops = &iwl6000_ops, 741 .valid_tx_ant = ANT_BC,
878 .eeprom_size = OTP_LOW_IMAGE_SIZE, 742 .valid_rx_ant = ANT_BC,
879 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 743 .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
880 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION, 744 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION,
881 .num_of_queues = IWLAGN_NUM_QUEUES, 745 .ops = &iwl6000_ops,
882 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
883 .mod_params = &iwlagn_mod_params, 746 .mod_params = &iwlagn_mod_params,
884 .valid_tx_ant = ANT_BC, 747 .base_params = &iwl6000_base_params,
885 .valid_rx_ant = ANT_BC,
886 .pll_cfg_val = 0,
887 .set_l0s = true,
888 .use_bsm = false,
889 .pa_type = IWL_PA_INTERNAL, 748 .pa_type = IWL_PA_INTERNAL,
890 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
891 .shadow_ram_support = true,
892 .led_compensation = 51,
893 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
894 .supports_idle = true,
895 .adv_thermal_throttle = true,
896 .support_ct_kill_exit = true,
897 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
898 .chain_noise_scale = 1000,
899 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
900 .max_event_log_size = 1024,
901 .ucode_tracing = true,
902 .sensitivity_calib_by_driver = true,
903 .chain_noise_calib_by_driver = true,
904}; 749};
905 750
906struct iwl_cfg iwl6050_2agn_cfg = { 751struct iwl_cfg iwl6050_2agn_cfg = {
@@ -909,35 +754,14 @@ struct iwl_cfg iwl6050_2agn_cfg = {
909 .ucode_api_max = IWL6050_UCODE_API_MAX, 754 .ucode_api_max = IWL6050_UCODE_API_MAX,
910 .ucode_api_min = IWL6050_UCODE_API_MIN, 755 .ucode_api_min = IWL6050_UCODE_API_MIN,
911 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N, 756 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
757 .valid_tx_ant = ANT_AB,
758 .valid_rx_ant = ANT_AB,
912 .ops = &iwl6000_ops, 759 .ops = &iwl6000_ops,
913 .eeprom_size = OTP_LOW_IMAGE_SIZE,
914 .eeprom_ver = EEPROM_6050_EEPROM_VERSION, 760 .eeprom_ver = EEPROM_6050_EEPROM_VERSION,
915 .eeprom_calib_ver = EEPROM_6050_TX_POWER_VERSION, 761 .eeprom_calib_ver = EEPROM_6050_TX_POWER_VERSION,
916 .num_of_queues = IWLAGN_NUM_QUEUES,
917 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
918 .mod_params = &iwlagn_mod_params, 762 .mod_params = &iwlagn_mod_params,
919 .valid_tx_ant = ANT_AB, 763 .base_params = &iwl6050_base_params,
920 .valid_rx_ant = ANT_AB, 764 .ht_params = &iwl6000_ht_params,
921 .pll_cfg_val = 0,
922 .set_l0s = true,
923 .use_bsm = false,
924 .pa_type = IWL_PA_SYSTEM,
925 .max_ll_items = OTP_MAX_LL_ITEMS_6x50,
926 .shadow_ram_support = true,
927 .ht_greenfield_support = true,
928 .led_compensation = 51,
929 .use_rts_for_aggregation = true, /* use rts/cts protection */
930 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
931 .supports_idle = true,
932 .adv_thermal_throttle = true,
933 .support_ct_kill_exit = true,
934 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
935 .chain_noise_scale = 1500,
936 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
937 .max_event_log_size = 1024,
938 .ucode_tracing = true,
939 .sensitivity_calib_by_driver = true,
940 .chain_noise_calib_by_driver = true,
941 .need_dc_calib = true, 765 .need_dc_calib = true,
942}; 766};
943 767
@@ -947,35 +771,14 @@ struct iwl_cfg iwl6050g2_bgn_cfg = {
947 .ucode_api_max = IWL6050_UCODE_API_MAX, 771 .ucode_api_max = IWL6050_UCODE_API_MAX,
948 .ucode_api_min = IWL6050_UCODE_API_MIN, 772 .ucode_api_min = IWL6050_UCODE_API_MIN,
949 .sku = IWL_SKU_G|IWL_SKU_N, 773 .sku = IWL_SKU_G|IWL_SKU_N,
950 .ops = &iwl6000_ops, 774 .valid_tx_ant = ANT_A,
951 .eeprom_size = OTP_LOW_IMAGE_SIZE, 775 .valid_rx_ant = ANT_AB,
952 .eeprom_ver = EEPROM_6050G2_EEPROM_VERSION, 776 .eeprom_ver = EEPROM_6050G2_EEPROM_VERSION,
953 .eeprom_calib_ver = EEPROM_6050G2_TX_POWER_VERSION, 777 .eeprom_calib_ver = EEPROM_6050G2_TX_POWER_VERSION,
954 .num_of_queues = IWLAGN_NUM_QUEUES, 778 .ops = &iwl6050g2_ops,
955 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
956 .mod_params = &iwlagn_mod_params, 779 .mod_params = &iwlagn_mod_params,
957 .valid_tx_ant = ANT_A, 780 .base_params = &iwl6050_base_params,
958 .valid_rx_ant = ANT_AB, 781 .ht_params = &iwl6000_ht_params,
959 .pll_cfg_val = 0,
960 .set_l0s = true,
961 .use_bsm = false,
962 .pa_type = IWL_PA_SYSTEM,
963 .max_ll_items = OTP_MAX_LL_ITEMS_6x50,
964 .shadow_ram_support = true,
965 .ht_greenfield_support = true,
966 .led_compensation = 51,
967 .use_rts_for_aggregation = true, /* use rts/cts protection */
968 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
969 .supports_idle = true,
970 .adv_thermal_throttle = true,
971 .support_ct_kill_exit = true,
972 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
973 .chain_noise_scale = 1500,
974 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
975 .max_event_log_size = 1024,
976 .ucode_tracing = true,
977 .sensitivity_calib_by_driver = true,
978 .chain_noise_calib_by_driver = true,
979 .need_dc_calib = true, 782 .need_dc_calib = true,
980}; 783};
981 784
@@ -985,33 +788,13 @@ struct iwl_cfg iwl6050_2abg_cfg = {
985 .ucode_api_max = IWL6050_UCODE_API_MAX, 788 .ucode_api_max = IWL6050_UCODE_API_MAX,
986 .ucode_api_min = IWL6050_UCODE_API_MIN, 789 .ucode_api_min = IWL6050_UCODE_API_MIN,
987 .sku = IWL_SKU_A|IWL_SKU_G, 790 .sku = IWL_SKU_A|IWL_SKU_G,
988 .ops = &iwl6000_ops, 791 .valid_tx_ant = ANT_AB,
989 .eeprom_size = OTP_LOW_IMAGE_SIZE, 792 .valid_rx_ant = ANT_AB,
990 .eeprom_ver = EEPROM_6050_EEPROM_VERSION, 793 .eeprom_ver = EEPROM_6050_EEPROM_VERSION,
991 .eeprom_calib_ver = EEPROM_6050_TX_POWER_VERSION, 794 .eeprom_calib_ver = EEPROM_6050_TX_POWER_VERSION,
992 .num_of_queues = IWLAGN_NUM_QUEUES, 795 .ops = &iwl6050_ops,
993 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
994 .mod_params = &iwlagn_mod_params, 796 .mod_params = &iwlagn_mod_params,
995 .valid_tx_ant = ANT_AB, 797 .base_params = &iwl6050_base_params,
996 .valid_rx_ant = ANT_AB,
997 .pll_cfg_val = 0,
998 .set_l0s = true,
999 .use_bsm = false,
1000 .pa_type = IWL_PA_SYSTEM,
1001 .max_ll_items = OTP_MAX_LL_ITEMS_6x50,
1002 .shadow_ram_support = true,
1003 .led_compensation = 51,
1004 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
1005 .supports_idle = true,
1006 .adv_thermal_throttle = true,
1007 .support_ct_kill_exit = true,
1008 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
1009 .chain_noise_scale = 1500,
1010 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
1011 .max_event_log_size = 1024,
1012 .ucode_tracing = true,
1013 .sensitivity_calib_by_driver = true,
1014 .chain_noise_calib_by_driver = true,
1015 .need_dc_calib = true, 798 .need_dc_calib = true,
1016}; 799};
1017 800
@@ -1021,38 +804,58 @@ struct iwl_cfg iwl6000_3agn_cfg = {
1021 .ucode_api_max = IWL6000_UCODE_API_MAX, 804 .ucode_api_max = IWL6000_UCODE_API_MAX,
1022 .ucode_api_min = IWL6000_UCODE_API_MIN, 805 .ucode_api_min = IWL6000_UCODE_API_MIN,
1023 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N, 806 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
1024 .ops = &iwl6000_ops, 807 .valid_tx_ant = ANT_ABC,
1025 .eeprom_size = OTP_LOW_IMAGE_SIZE, 808 .valid_rx_ant = ANT_ABC,
1026 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 809 .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
1027 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION, 810 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION,
1028 .num_of_queues = IWLAGN_NUM_QUEUES, 811 .ops = &iwl6000_ops,
1029 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
1030 .mod_params = &iwlagn_mod_params, 812 .mod_params = &iwlagn_mod_params,
1031 .valid_tx_ant = ANT_ABC, 813 .base_params = &iwl6000_base_params,
1032 .valid_rx_ant = ANT_ABC, 814 .ht_params = &iwl6000_ht_params,
1033 .pll_cfg_val = 0, 815 .need_dc_calib = true,
1034 .set_l0s = true, 816};
1035 .use_bsm = false, 817
1036 .pa_type = IWL_PA_SYSTEM, 818struct iwl_cfg iwl130_bgn_cfg = {
1037 .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 819 .name = "Intel(R) 130 Series 1x1 BGN",
1038 .shadow_ram_support = true, 820 .fw_name_pre = IWL6000G2B_FW_PRE,
1039 .ht_greenfield_support = true, 821 .ucode_api_max = IWL130_UCODE_API_MAX,
1040 .led_compensation = 51, 822 .ucode_api_min = IWL130_UCODE_API_MIN,
1041 .use_rts_for_aggregation = true, /* use rts/cts protection */ 823 .sku = IWL_SKU_G|IWL_SKU_N,
1042 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, 824 .valid_tx_ant = ANT_A,
1043 .supports_idle = true, 825 .valid_rx_ant = ANT_A,
1044 .adv_thermal_throttle = true, 826 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
1045 .support_ct_kill_exit = true, 827 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
1046 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, 828 .ops = &iwl6000g2b_ops,
1047 .chain_noise_scale = 1000, 829 .mod_params = &iwlagn_mod_params,
1048 .monitor_recover_period = IWL_DEF_MONITORING_PERIOD, 830 .base_params = &iwl6000_base_params,
1049 .max_event_log_size = 1024, 831 .bt_params = &iwl6000_bt_params,
1050 .ucode_tracing = true, 832 .ht_params = &iwl6000_ht_params,
1051 .sensitivity_calib_by_driver = true, 833 .need_dc_calib = true,
1052 .chain_noise_calib_by_driver = true, 834 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
835 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
836};
837
838struct iwl_cfg iwl130_bg_cfg = {
839 .name = "Intel(R) 130 Series 1x2 BG",
840 .fw_name_pre = IWL6000G2B_FW_PRE,
841 .ucode_api_max = IWL130_UCODE_API_MAX,
842 .ucode_api_min = IWL130_UCODE_API_MIN,
843 .sku = IWL_SKU_G,
844 .valid_tx_ant = ANT_A,
845 .valid_rx_ant = ANT_A,
846 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
847 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
848 .ops = &iwl6000g2b_ops,
849 .mod_params = &iwlagn_mod_params,
850 .base_params = &iwl6000_base_params,
851 .bt_params = &iwl6000_bt_params,
852 .need_dc_calib = true,
853 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
854 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
1053}; 855};
1054 856
1055MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); 857MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
1056MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX)); 858MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX));
1057MODULE_FIRMWARE(IWL6000G2A_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX)); 859MODULE_FIRMWARE(IWL6000G2A_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
1058MODULE_FIRMWARE(IWL6000G2B_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX)); 860MODULE_FIRMWARE(IWL6000G2B_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
861MODULE_FIRMWARE(IWL130_MODULE_FIRMWARE(IWL130_UCODE_API_MAX));