diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-6000.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-6000.c | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c index 3e32693d1c2f..7da23d3ff7b6 100644 --- a/drivers/net/wireless/iwlwifi/iwl-6000.c +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | |||
@@ -47,17 +47,19 @@ | |||
47 | #include "iwl-agn-hw.h" | 47 | #include "iwl-agn-hw.h" |
48 | #include "iwl-6000-hw.h" | 48 | #include "iwl-6000-hw.h" |
49 | #include "iwl-agn-led.h" | 49 | #include "iwl-agn-led.h" |
50 | #include "iwl-agn-debugfs.h" | ||
50 | 51 | ||
51 | /* Highest firmware API version supported */ | 52 | /* Highest firmware API version supported */ |
52 | #define IWL6000_UCODE_API_MAX 4 | 53 | #define IWL6000_UCODE_API_MAX 4 |
53 | #define IWL6050_UCODE_API_MAX 4 | 54 | #define IWL6050_UCODE_API_MAX 4 |
55 | #define IWL6000G2_UCODE_API_MAX 4 | ||
54 | 56 | ||
55 | /* Lowest firmware API version supported */ | 57 | /* Lowest firmware API version supported */ |
56 | #define IWL6000_UCODE_API_MIN 4 | 58 | #define IWL6000_UCODE_API_MIN 4 |
57 | #define IWL6050_UCODE_API_MIN 4 | 59 | #define IWL6050_UCODE_API_MIN 4 |
60 | #define IWL6000G2_UCODE_API_MIN 4 | ||
58 | 61 | ||
59 | #define IWL6000_FW_PRE "iwlwifi-6000-" | 62 | #define IWL6000_FW_PRE "iwlwifi-6000-" |
60 | #define IWL6000_G2_FW_PRE "iwlwifi-6005-" | ||
61 | #define _IWL6000_MODULE_FIRMWARE(api) IWL6000_FW_PRE #api ".ucode" | 63 | #define _IWL6000_MODULE_FIRMWARE(api) IWL6000_FW_PRE #api ".ucode" |
62 | #define IWL6000_MODULE_FIRMWARE(api) _IWL6000_MODULE_FIRMWARE(api) | 64 | #define IWL6000_MODULE_FIRMWARE(api) _IWL6000_MODULE_FIRMWARE(api) |
63 | 65 | ||
@@ -65,6 +67,10 @@ | |||
65 | #define _IWL6050_MODULE_FIRMWARE(api) IWL6050_FW_PRE #api ".ucode" | 67 | #define _IWL6050_MODULE_FIRMWARE(api) IWL6050_FW_PRE #api ".ucode" |
66 | #define IWL6050_MODULE_FIRMWARE(api) _IWL6050_MODULE_FIRMWARE(api) | 68 | #define IWL6050_MODULE_FIRMWARE(api) _IWL6050_MODULE_FIRMWARE(api) |
67 | 69 | ||
70 | #define IWL6000G2_FW_PRE "iwlwifi-6005-" | ||
71 | #define _IWL6000G2_MODULE_FIRMWARE(api) IWL6000G2_FW_PRE #api ".ucode" | ||
72 | #define IWL6000G2_MODULE_FIRMWARE(api) _IWL6000G2_MODULE_FIRMWARE(api) | ||
73 | |||
68 | static void iwl6000_set_ct_threshold(struct iwl_priv *priv) | 74 | static void iwl6000_set_ct_threshold(struct iwl_priv *priv) |
69 | { | 75 | { |
70 | /* want Celsius */ | 76 | /* want Celsius */ |
@@ -261,7 +267,6 @@ static struct iwl_lib_ops iwl6000_lib = { | |||
261 | EEPROM_REG_BAND_3_CHANNELS, | 267 | EEPROM_REG_BAND_3_CHANNELS, |
262 | EEPROM_REG_BAND_4_CHANNELS, | 268 | EEPROM_REG_BAND_4_CHANNELS, |
263 | EEPROM_REG_BAND_5_CHANNELS, | 269 | EEPROM_REG_BAND_5_CHANNELS, |
264 | EEPROM_REG_BAND_24_HT40_CHANNELS, | ||
265 | EEPROM_6000_REG_BAND_24_HT40_CHANNELS, | 270 | EEPROM_6000_REG_BAND_24_HT40_CHANNELS, |
266 | EEPROM_REG_BAND_52_HT40_CHANNELS | 271 | EEPROM_REG_BAND_52_HT40_CHANNELS |
267 | }, | 272 | }, |
@@ -280,6 +285,11 @@ static struct iwl_lib_ops iwl6000_lib = { | |||
280 | .set_ct_kill = iwl6000_set_ct_threshold, | 285 | .set_ct_kill = iwl6000_set_ct_threshold, |
281 | }, | 286 | }, |
282 | .add_bcast_station = iwl_add_bcast_station, | 287 | .add_bcast_station = iwl_add_bcast_station, |
288 | .debugfs_ops = { | ||
289 | .rx_stats_read = iwl_ucode_rx_stats_read, | ||
290 | .tx_stats_read = iwl_ucode_tx_stats_read, | ||
291 | .general_stats_read = iwl_ucode_general_stats_read, | ||
292 | }, | ||
283 | .recover_from_tx_stall = iwl_bg_monitor_recover, | 293 | .recover_from_tx_stall = iwl_bg_monitor_recover, |
284 | .check_plcp_health = iwl_good_plcp_health, | 294 | .check_plcp_health = iwl_good_plcp_health, |
285 | .check_ack_health = iwl_good_ack_health, | 295 | .check_ack_health = iwl_good_ack_health, |
@@ -348,6 +358,11 @@ static struct iwl_lib_ops iwl6050_lib = { | |||
348 | .set_calib_version = iwl6050_set_calib_version, | 358 | .set_calib_version = iwl6050_set_calib_version, |
349 | }, | 359 | }, |
350 | .add_bcast_station = iwl_add_bcast_station, | 360 | .add_bcast_station = iwl_add_bcast_station, |
361 | .debugfs_ops = { | ||
362 | .rx_stats_read = iwl_ucode_rx_stats_read, | ||
363 | .tx_stats_read = iwl_ucode_tx_stats_read, | ||
364 | .general_stats_read = iwl_ucode_general_stats_read, | ||
365 | }, | ||
351 | .recover_from_tx_stall = iwl_bg_monitor_recover, | 366 | .recover_from_tx_stall = iwl_bg_monitor_recover, |
352 | .check_plcp_health = iwl_good_plcp_health, | 367 | .check_plcp_health = iwl_good_plcp_health, |
353 | .check_ack_health = iwl_good_ack_health, | 368 | .check_ack_health = iwl_good_ack_health, |
@@ -364,16 +379,16 @@ static const struct iwl_ops iwl6050_ops = { | |||
364 | /* | 379 | /* |
365 | * "i": Internal configuration, use internal Power Amplifier | 380 | * "i": Internal configuration, use internal Power Amplifier |
366 | */ | 381 | */ |
367 | struct iwl_cfg iwl6000i_g2_2agn_cfg = { | 382 | struct iwl_cfg iwl6000g2_2agn_cfg = { |
368 | .name = "6000 Series 2x2 AGN Gen2", | 383 | .name = "6000 Series 2x2 AGN Gen2", |
369 | .fw_name_pre = IWL6000_G2_FW_PRE, | 384 | .fw_name_pre = IWL6000G2_FW_PRE, |
370 | .ucode_api_max = IWL6000_UCODE_API_MAX, | 385 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
371 | .ucode_api_min = IWL6000_UCODE_API_MIN, | 386 | .ucode_api_min = IWL6000G2_UCODE_API_MIN, |
372 | .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N, | 387 | .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N, |
373 | .ops = &iwl6000_ops, | 388 | .ops = &iwl6000_ops, |
374 | .eeprom_size = OTP_LOW_IMAGE_SIZE, | 389 | .eeprom_size = OTP_LOW_IMAGE_SIZE, |
375 | .eeprom_ver = EEPROM_6000_EEPROM_VERSION, | 390 | .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, |
376 | .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION, | 391 | .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION, |
377 | .num_of_queues = IWLAGN_NUM_QUEUES, | 392 | .num_of_queues = IWLAGN_NUM_QUEUES, |
378 | .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES, | 393 | .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES, |
379 | .mod_params = &iwlagn_mod_params, | 394 | .mod_params = &iwlagn_mod_params, |
@@ -382,7 +397,7 @@ struct iwl_cfg iwl6000i_g2_2agn_cfg = { | |||
382 | .pll_cfg_val = 0, | 397 | .pll_cfg_val = 0, |
383 | .set_l0s = true, | 398 | .set_l0s = true, |
384 | .use_bsm = false, | 399 | .use_bsm = false, |
385 | .pa_type = IWL_PA_INTERNAL, | 400 | .pa_type = IWL_PA_SYSTEM, |
386 | .max_ll_items = OTP_MAX_LL_ITEMS_6x00, | 401 | .max_ll_items = OTP_MAX_LL_ITEMS_6x00, |
387 | .shadow_ram_support = true, | 402 | .shadow_ram_support = true, |
388 | .ht_greenfield_support = true, | 403 | .ht_greenfield_support = true, |
@@ -601,3 +616,4 @@ struct iwl_cfg iwl6000_3agn_cfg = { | |||
601 | 616 | ||
602 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); | 617 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); |
603 | MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX)); | 618 | MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX)); |
619 | MODULE_FIRMWARE(IWL6000G2_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX)); | ||