aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-1000.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c7
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c18
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c21
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.h12
7 files changed, 36 insertions, 31 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index e881b083963c..3100a72b9b44 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -278,7 +278,6 @@ struct iwl_cfg iwl1000_bgn_cfg = {
278 .fw_name_pre = IWL1000_FW_PRE, 278 .fw_name_pre = IWL1000_FW_PRE,
279 .ucode_api_max = IWL1000_UCODE_API_MAX, 279 .ucode_api_max = IWL1000_UCODE_API_MAX,
280 .ucode_api_min = IWL1000_UCODE_API_MIN, 280 .ucode_api_min = IWL1000_UCODE_API_MIN,
281 .sku = IWL_SKU_G|IWL_SKU_N,
282 .valid_tx_ant = ANT_A, 281 .valid_tx_ant = ANT_A,
283 .valid_rx_ant = ANT_AB, 282 .valid_rx_ant = ANT_AB,
284 .eeprom_ver = EEPROM_1000_EEPROM_VERSION, 283 .eeprom_ver = EEPROM_1000_EEPROM_VERSION,
@@ -295,7 +294,6 @@ struct iwl_cfg iwl1000_bg_cfg = {
295 .fw_name_pre = IWL1000_FW_PRE, 294 .fw_name_pre = IWL1000_FW_PRE,
296 .ucode_api_max = IWL1000_UCODE_API_MAX, 295 .ucode_api_max = IWL1000_UCODE_API_MAX,
297 .ucode_api_min = IWL1000_UCODE_API_MIN, 296 .ucode_api_min = IWL1000_UCODE_API_MIN,
298 .sku = IWL_SKU_G,
299 .valid_tx_ant = ANT_A, 297 .valid_tx_ant = ANT_A,
300 .valid_rx_ant = ANT_AB, 298 .valid_rx_ant = ANT_AB,
301 .eeprom_ver = EEPROM_1000_EEPROM_VERSION, 299 .eeprom_ver = EEPROM_1000_EEPROM_VERSION,
@@ -311,7 +309,6 @@ struct iwl_cfg iwl100_bgn_cfg = {
311 .fw_name_pre = IWL100_FW_PRE, 309 .fw_name_pre = IWL100_FW_PRE,
312 .ucode_api_max = IWL100_UCODE_API_MAX, 310 .ucode_api_max = IWL100_UCODE_API_MAX,
313 .ucode_api_min = IWL100_UCODE_API_MIN, 311 .ucode_api_min = IWL100_UCODE_API_MIN,
314 .sku = IWL_SKU_G|IWL_SKU_N,
315 .valid_tx_ant = ANT_A, 312 .valid_tx_ant = ANT_A,
316 .valid_rx_ant = ANT_A, 313 .valid_rx_ant = ANT_A,
317 .eeprom_ver = EEPROM_1000_EEPROM_VERSION, 314 .eeprom_ver = EEPROM_1000_EEPROM_VERSION,
@@ -328,7 +325,6 @@ struct iwl_cfg iwl100_bg_cfg = {
328 .fw_name_pre = IWL100_FW_PRE, 325 .fw_name_pre = IWL100_FW_PRE,
329 .ucode_api_max = IWL100_UCODE_API_MAX, 326 .ucode_api_max = IWL100_UCODE_API_MAX,
330 .ucode_api_min = IWL100_UCODE_API_MIN, 327 .ucode_api_min = IWL100_UCODE_API_MIN,
331 .sku = IWL_SKU_G,
332 .valid_tx_ant = ANT_A, 328 .valid_tx_ant = ANT_A,
333 .valid_rx_ant = ANT_A, 329 .valid_rx_ant = ANT_A,
334 .eeprom_ver = EEPROM_1000_EEPROM_VERSION, 330 .eeprom_ver = EEPROM_1000_EEPROM_VERSION,
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 2ec868d328b9..6788ceb37686 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2624,7 +2624,6 @@ struct iwl_cfg iwl4965_agn_cfg = {
2624 .fw_name_pre = IWL4965_FW_PRE, 2624 .fw_name_pre = IWL4965_FW_PRE,
2625 .ucode_api_max = IWL4965_UCODE_API_MAX, 2625 .ucode_api_max = IWL4965_UCODE_API_MAX,
2626 .ucode_api_min = IWL4965_UCODE_API_MIN, 2626 .ucode_api_min = IWL4965_UCODE_API_MIN,
2627 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
2628 .valid_tx_ant = ANT_AB, 2627 .valid_tx_ant = ANT_AB,
2629 .valid_rx_ant = ANT_ABC, 2628 .valid_rx_ant = ANT_ABC,
2630 .eeprom_ver = EEPROM_4965_EEPROM_VERSION, 2629 .eeprom_ver = EEPROM_4965_EEPROM_VERSION,
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index b147580fe228..3ee0f7c035cf 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -527,7 +527,6 @@ struct iwl_cfg iwl5300_agn_cfg = {
527 .fw_name_pre = IWL5000_FW_PRE, 527 .fw_name_pre = IWL5000_FW_PRE,
528 .ucode_api_max = IWL5000_UCODE_API_MAX, 528 .ucode_api_max = IWL5000_UCODE_API_MAX,
529 .ucode_api_min = IWL5000_UCODE_API_MIN, 529 .ucode_api_min = IWL5000_UCODE_API_MIN,
530 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
531 .valid_tx_ant = ANT_ABC, 530 .valid_tx_ant = ANT_ABC,
532 .valid_rx_ant = ANT_ABC, 531 .valid_rx_ant = ANT_ABC,
533 .eeprom_ver = EEPROM_5000_EEPROM_VERSION, 532 .eeprom_ver = EEPROM_5000_EEPROM_VERSION,
@@ -544,7 +543,6 @@ struct iwl_cfg iwl5100_bgn_cfg = {
544 .fw_name_pre = IWL5000_FW_PRE, 543 .fw_name_pre = IWL5000_FW_PRE,
545 .ucode_api_max = IWL5000_UCODE_API_MAX, 544 .ucode_api_max = IWL5000_UCODE_API_MAX,
546 .ucode_api_min = IWL5000_UCODE_API_MIN, 545 .ucode_api_min = IWL5000_UCODE_API_MIN,
547 .sku = IWL_SKU_G|IWL_SKU_N,
548 .valid_tx_ant = ANT_B, 546 .valid_tx_ant = ANT_B,
549 .valid_rx_ant = ANT_AB, 547 .valid_rx_ant = ANT_AB,
550 .eeprom_ver = EEPROM_5000_EEPROM_VERSION, 548 .eeprom_ver = EEPROM_5000_EEPROM_VERSION,
@@ -561,7 +559,6 @@ struct iwl_cfg iwl5100_abg_cfg = {
561 .fw_name_pre = IWL5000_FW_PRE, 559 .fw_name_pre = IWL5000_FW_PRE,
562 .ucode_api_max = IWL5000_UCODE_API_MAX, 560 .ucode_api_max = IWL5000_UCODE_API_MAX,
563 .ucode_api_min = IWL5000_UCODE_API_MIN, 561 .ucode_api_min = IWL5000_UCODE_API_MIN,
564 .sku = IWL_SKU_A|IWL_SKU_G,
565 .valid_tx_ant = ANT_B, 562 .valid_tx_ant = ANT_B,
566 .valid_rx_ant = ANT_AB, 563 .valid_rx_ant = ANT_AB,
567 .eeprom_ver = EEPROM_5000_EEPROM_VERSION, 564 .eeprom_ver = EEPROM_5000_EEPROM_VERSION,
@@ -577,7 +574,6 @@ struct iwl_cfg iwl5100_agn_cfg = {
577 .fw_name_pre = IWL5000_FW_PRE, 574 .fw_name_pre = IWL5000_FW_PRE,
578 .ucode_api_max = IWL5000_UCODE_API_MAX, 575 .ucode_api_max = IWL5000_UCODE_API_MAX,
579 .ucode_api_min = IWL5000_UCODE_API_MIN, 576 .ucode_api_min = IWL5000_UCODE_API_MIN,
580 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
581 .valid_tx_ant = ANT_B, 577 .valid_tx_ant = ANT_B,
582 .valid_rx_ant = ANT_AB, 578 .valid_rx_ant = ANT_AB,
583 .eeprom_ver = EEPROM_5000_EEPROM_VERSION, 579 .eeprom_ver = EEPROM_5000_EEPROM_VERSION,
@@ -594,7 +590,6 @@ struct iwl_cfg iwl5350_agn_cfg = {
594 .fw_name_pre = IWL5000_FW_PRE, 590 .fw_name_pre = IWL5000_FW_PRE,
595 .ucode_api_max = IWL5000_UCODE_API_MAX, 591 .ucode_api_max = IWL5000_UCODE_API_MAX,
596 .ucode_api_min = IWL5000_UCODE_API_MIN, 592 .ucode_api_min = IWL5000_UCODE_API_MIN,
597 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
598 .valid_tx_ant = ANT_ABC, 593 .valid_tx_ant = ANT_ABC,
599 .valid_rx_ant = ANT_ABC, 594 .valid_rx_ant = ANT_ABC,
600 .eeprom_ver = EEPROM_5050_EEPROM_VERSION, 595 .eeprom_ver = EEPROM_5050_EEPROM_VERSION,
@@ -611,7 +606,6 @@ struct iwl_cfg iwl5150_agn_cfg = {
611 .fw_name_pre = IWL5150_FW_PRE, 606 .fw_name_pre = IWL5150_FW_PRE,
612 .ucode_api_max = IWL5150_UCODE_API_MAX, 607 .ucode_api_max = IWL5150_UCODE_API_MAX,
613 .ucode_api_min = IWL5150_UCODE_API_MIN, 608 .ucode_api_min = IWL5150_UCODE_API_MIN,
614 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
615 .valid_tx_ant = ANT_A, 609 .valid_tx_ant = ANT_A,
616 .valid_rx_ant = ANT_AB, 610 .valid_rx_ant = ANT_AB,
617 .eeprom_ver = EEPROM_5050_EEPROM_VERSION, 611 .eeprom_ver = EEPROM_5050_EEPROM_VERSION,
@@ -629,7 +623,6 @@ struct iwl_cfg iwl5150_abg_cfg = {
629 .fw_name_pre = IWL5150_FW_PRE, 623 .fw_name_pre = IWL5150_FW_PRE,
630 .ucode_api_max = IWL5150_UCODE_API_MAX, 624 .ucode_api_max = IWL5150_UCODE_API_MAX,
631 .ucode_api_min = IWL5150_UCODE_API_MIN, 625 .ucode_api_min = IWL5150_UCODE_API_MIN,
632 .sku = IWL_SKU_A|IWL_SKU_G,
633 .valid_tx_ant = ANT_A, 626 .valid_tx_ant = ANT_A,
634 .valid_rx_ant = ANT_AB, 627 .valid_rx_ant = ANT_AB,
635 .eeprom_ver = EEPROM_5050_EEPROM_VERSION, 628 .eeprom_ver = EEPROM_5050_EEPROM_VERSION,
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 9f835ac905f1..0cc66fdc7a0d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -556,7 +556,6 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = {
556 .fw_name_pre = IWL6000G2A_FW_PRE, 556 .fw_name_pre = IWL6000G2A_FW_PRE,
557 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 557 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
558 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 558 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
559 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
560 .valid_tx_ant = ANT_AB, 559 .valid_tx_ant = ANT_AB,
561 .valid_rx_ant = ANT_AB, 560 .valid_rx_ant = ANT_AB,
562 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 561 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -575,7 +574,6 @@ struct iwl_cfg iwl6000g2a_2abg_cfg = {
575 .fw_name_pre = IWL6000G2A_FW_PRE, 574 .fw_name_pre = IWL6000G2A_FW_PRE,
576 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 575 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
577 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 576 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
578 .sku = IWL_SKU_A|IWL_SKU_G,
579 .valid_tx_ant = ANT_AB, 577 .valid_tx_ant = ANT_AB,
580 .valid_rx_ant = ANT_AB, 578 .valid_rx_ant = ANT_AB,
581 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 579 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -593,7 +591,6 @@ struct iwl_cfg iwl6000g2a_2bg_cfg = {
593 .fw_name_pre = IWL6000G2A_FW_PRE, 591 .fw_name_pre = IWL6000G2A_FW_PRE,
594 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 592 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
595 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 593 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
596 .sku = IWL_SKU_G,
597 .valid_tx_ant = ANT_AB, 594 .valid_tx_ant = ANT_AB,
598 .valid_rx_ant = ANT_AB, 595 .valid_rx_ant = ANT_AB,
599 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 596 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -611,7 +608,6 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
611 .fw_name_pre = IWL6000G2B_FW_PRE, 608 .fw_name_pre = IWL6000G2B_FW_PRE,
612 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 609 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
613 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 610 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
614 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
615 .valid_tx_ant = ANT_AB, 611 .valid_tx_ant = ANT_AB,
616 .valid_rx_ant = ANT_AB, 612 .valid_rx_ant = ANT_AB,
617 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 613 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -633,7 +629,6 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
633 .fw_name_pre = IWL6000G2B_FW_PRE, 629 .fw_name_pre = IWL6000G2B_FW_PRE,
634 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 630 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
635 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 631 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
636 .sku = IWL_SKU_A|IWL_SKU_G,
637 .valid_tx_ant = ANT_AB, 632 .valid_tx_ant = ANT_AB,
638 .valid_rx_ant = ANT_AB, 633 .valid_rx_ant = ANT_AB,
639 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 634 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -654,7 +649,6 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
654 .fw_name_pre = IWL6000G2B_FW_PRE, 649 .fw_name_pre = IWL6000G2B_FW_PRE,
655 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 650 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
656 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 651 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
657 .sku = IWL_SKU_G|IWL_SKU_N,
658 .valid_tx_ant = ANT_AB, 652 .valid_tx_ant = ANT_AB,
659 .valid_rx_ant = ANT_AB, 653 .valid_rx_ant = ANT_AB,
660 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 654 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -676,7 +670,6 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = {
676 .fw_name_pre = IWL6000G2B_FW_PRE, 670 .fw_name_pre = IWL6000G2B_FW_PRE,
677 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 671 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
678 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 672 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
679 .sku = IWL_SKU_G,
680 .valid_tx_ant = ANT_AB, 673 .valid_tx_ant = ANT_AB,
681 .valid_rx_ant = ANT_AB, 674 .valid_rx_ant = ANT_AB,
682 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 675 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -697,7 +690,6 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
697 .fw_name_pre = IWL6000G2B_FW_PRE, 690 .fw_name_pre = IWL6000G2B_FW_PRE,
698 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 691 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
699 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 692 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
700 .sku = IWL_SKU_G|IWL_SKU_N,
701 .valid_tx_ant = ANT_A, 693 .valid_tx_ant = ANT_A,
702 .valid_rx_ant = ANT_AB, 694 .valid_rx_ant = ANT_AB,
703 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 695 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -719,7 +711,6 @@ struct iwl_cfg iwl6000g2b_bg_cfg = {
719 .fw_name_pre = IWL6000G2B_FW_PRE, 711 .fw_name_pre = IWL6000G2B_FW_PRE,
720 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 712 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
721 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 713 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
722 .sku = IWL_SKU_G,
723 .valid_tx_ant = ANT_A, 714 .valid_tx_ant = ANT_A,
724 .valid_rx_ant = ANT_AB, 715 .valid_rx_ant = ANT_AB,
725 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 716 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -743,7 +734,6 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
743 .fw_name_pre = IWL6000_FW_PRE, 734 .fw_name_pre = IWL6000_FW_PRE,
744 .ucode_api_max = IWL6000_UCODE_API_MAX, 735 .ucode_api_max = IWL6000_UCODE_API_MAX,
745 .ucode_api_min = IWL6000_UCODE_API_MIN, 736 .ucode_api_min = IWL6000_UCODE_API_MIN,
746 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
747 .valid_tx_ant = ANT_BC, 737 .valid_tx_ant = ANT_BC,
748 .valid_rx_ant = ANT_BC, 738 .valid_rx_ant = ANT_BC,
749 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 739 .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
@@ -761,7 +751,6 @@ struct iwl_cfg iwl6000i_2abg_cfg = {
761 .fw_name_pre = IWL6000_FW_PRE, 751 .fw_name_pre = IWL6000_FW_PRE,
762 .ucode_api_max = IWL6000_UCODE_API_MAX, 752 .ucode_api_max = IWL6000_UCODE_API_MAX,
763 .ucode_api_min = IWL6000_UCODE_API_MIN, 753 .ucode_api_min = IWL6000_UCODE_API_MIN,
764 .sku = IWL_SKU_A|IWL_SKU_G,
765 .valid_tx_ant = ANT_BC, 754 .valid_tx_ant = ANT_BC,
766 .valid_rx_ant = ANT_BC, 755 .valid_rx_ant = ANT_BC,
767 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 756 .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
@@ -778,7 +767,6 @@ struct iwl_cfg iwl6000i_2bg_cfg = {
778 .fw_name_pre = IWL6000_FW_PRE, 767 .fw_name_pre = IWL6000_FW_PRE,
779 .ucode_api_max = IWL6000_UCODE_API_MAX, 768 .ucode_api_max = IWL6000_UCODE_API_MAX,
780 .ucode_api_min = IWL6000_UCODE_API_MIN, 769 .ucode_api_min = IWL6000_UCODE_API_MIN,
781 .sku = IWL_SKU_G,
782 .valid_tx_ant = ANT_BC, 770 .valid_tx_ant = ANT_BC,
783 .valid_rx_ant = ANT_BC, 771 .valid_rx_ant = ANT_BC,
784 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 772 .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
@@ -795,7 +783,6 @@ struct iwl_cfg iwl6050_2agn_cfg = {
795 .fw_name_pre = IWL6050_FW_PRE, 783 .fw_name_pre = IWL6050_FW_PRE,
796 .ucode_api_max = IWL6050_UCODE_API_MAX, 784 .ucode_api_max = IWL6050_UCODE_API_MAX,
797 .ucode_api_min = IWL6050_UCODE_API_MIN, 785 .ucode_api_min = IWL6050_UCODE_API_MIN,
798 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
799 .valid_tx_ant = ANT_AB, 786 .valid_tx_ant = ANT_AB,
800 .valid_rx_ant = ANT_AB, 787 .valid_rx_ant = ANT_AB,
801 .ops = &iwl6050_ops, 788 .ops = &iwl6050_ops,
@@ -813,7 +800,6 @@ struct iwl_cfg iwl6050g2_bgn_cfg = {
813 .fw_name_pre = IWL6050_FW_PRE, 800 .fw_name_pre = IWL6050_FW_PRE,
814 .ucode_api_max = IWL6050_UCODE_API_MAX, 801 .ucode_api_max = IWL6050_UCODE_API_MAX,
815 .ucode_api_min = IWL6050_UCODE_API_MIN, 802 .ucode_api_min = IWL6050_UCODE_API_MIN,
816 .sku = IWL_SKU_G|IWL_SKU_N,
817 .valid_tx_ant = ANT_A, 803 .valid_tx_ant = ANT_A,
818 .valid_rx_ant = ANT_AB, 804 .valid_rx_ant = ANT_AB,
819 .eeprom_ver = EEPROM_6050G2_EEPROM_VERSION, 805 .eeprom_ver = EEPROM_6050G2_EEPROM_VERSION,
@@ -831,7 +817,6 @@ struct iwl_cfg iwl6050_2abg_cfg = {
831 .fw_name_pre = IWL6050_FW_PRE, 817 .fw_name_pre = IWL6050_FW_PRE,
832 .ucode_api_max = IWL6050_UCODE_API_MAX, 818 .ucode_api_max = IWL6050_UCODE_API_MAX,
833 .ucode_api_min = IWL6050_UCODE_API_MIN, 819 .ucode_api_min = IWL6050_UCODE_API_MIN,
834 .sku = IWL_SKU_A|IWL_SKU_G,
835 .valid_tx_ant = ANT_AB, 820 .valid_tx_ant = ANT_AB,
836 .valid_rx_ant = ANT_AB, 821 .valid_rx_ant = ANT_AB,
837 .eeprom_ver = EEPROM_6050_EEPROM_VERSION, 822 .eeprom_ver = EEPROM_6050_EEPROM_VERSION,
@@ -848,7 +833,6 @@ struct iwl_cfg iwl6000_3agn_cfg = {
848 .fw_name_pre = IWL6000_FW_PRE, 833 .fw_name_pre = IWL6000_FW_PRE,
849 .ucode_api_max = IWL6000_UCODE_API_MAX, 834 .ucode_api_max = IWL6000_UCODE_API_MAX,
850 .ucode_api_min = IWL6000_UCODE_API_MIN, 835 .ucode_api_min = IWL6000_UCODE_API_MIN,
851 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
852 .valid_tx_ant = ANT_ABC, 836 .valid_tx_ant = ANT_ABC,
853 .valid_rx_ant = ANT_ABC, 837 .valid_rx_ant = ANT_ABC,
854 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 838 .eeprom_ver = EEPROM_6000_EEPROM_VERSION,
@@ -866,7 +850,6 @@ struct iwl_cfg iwl130_bgn_cfg = {
866 .fw_name_pre = IWL6000G2B_FW_PRE, 850 .fw_name_pre = IWL6000G2B_FW_PRE,
867 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 851 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
868 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 852 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
869 .sku = IWL_SKU_G|IWL_SKU_N,
870 .valid_tx_ant = ANT_A, 853 .valid_tx_ant = ANT_A,
871 .valid_rx_ant = ANT_A, 854 .valid_rx_ant = ANT_A,
872 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 855 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
@@ -887,7 +870,6 @@ struct iwl_cfg iwl130_bg_cfg = {
887 .fw_name_pre = IWL6000G2B_FW_PRE, 870 .fw_name_pre = IWL6000G2B_FW_PRE,
888 .ucode_api_max = IWL6000G2_UCODE_API_MAX, 871 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
889 .ucode_api_min = IWL6000G2_UCODE_API_MIN, 872 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
890 .sku = IWL_SKU_G,
891 .valid_tx_ant = ANT_A, 873 .valid_tx_ant = ANT_A,
892 .valid_rx_ant = ANT_A, 874 .valid_rx_ant = ANT_A,
893 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION, 875 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c b/drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
index a650baba0809..8a4d3acb9b79 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
@@ -248,6 +248,27 @@ err:
248 248
249} 249}
250 250
251int iwl_eeprom_check_sku(struct iwl_priv *priv)
252{
253 u16 eeprom_sku;
254
255 eeprom_sku = iwl_eeprom_query16(priv, EEPROM_SKU_CAP);
256
257 priv->cfg->sku = ((eeprom_sku & EEPROM_SKU_CAP_BAND_SELECTION) >>
258 EEPROM_SKU_CAP_BAND_POS);
259 if (eeprom_sku & EEPROM_SKU_CAP_11N_ENABLE)
260 priv->cfg->sku |= IWL_SKU_N;
261
262 if (!priv->cfg->sku) {
263 IWL_ERR(priv, "Invalid device sku\n");
264 return -EINVAL;
265 }
266
267 IWL_INFO(priv, "Device SKU: 0X%x\n", priv->cfg->sku);
268
269 return 0;
270}
271
251void iwl_eeprom_get_mac(const struct iwl_priv *priv, u8 *mac) 272void iwl_eeprom_get_mac(const struct iwl_priv *priv, u8 *mac)
252{ 273{
253 const u8 *addr = priv->cfg->ops->lib->eeprom_ops.query_addr(priv, 274 const u8 *addr = priv->cfg->ops->lib->eeprom_ops.query_addr(priv,
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index d97691261ace..59af06d3511c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -4134,6 +4134,10 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
4134 if (err) 4134 if (err)
4135 goto out_free_eeprom; 4135 goto out_free_eeprom;
4136 4136
4137 err = iwl_eeprom_check_sku(priv);
4138 if (err)
4139 goto out_free_eeprom;
4140
4137 /* extract MAC Address */ 4141 /* extract MAC Address */
4138 iwl_eeprom_get_mac(priv, priv->addresses[0].addr); 4142 iwl_eeprom_get_mac(priv, priv->addresses[0].addr);
4139 IWL_DEBUG_INFO(priv, "MAC address: %pM\n", priv->addresses[0].addr); 4143 IWL_DEBUG_INFO(priv, "MAC address: %pM\n", priv->addresses[0].addr);
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.h b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
index d9b590625ae4..e87be1e551aa 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.h
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
@@ -110,9 +110,18 @@ enum {
110}; 110};
111 111
112/* SKU Capabilities */ 112/* SKU Capabilities */
113/* 3945 only */
113#define EEPROM_SKU_CAP_SW_RF_KILL_ENABLE (1 << 0) 114#define EEPROM_SKU_CAP_SW_RF_KILL_ENABLE (1 << 0)
114#define EEPROM_SKU_CAP_HW_RF_KILL_ENABLE (1 << 1) 115#define EEPROM_SKU_CAP_HW_RF_KILL_ENABLE (1 << 1)
115 116
117/* 5000 and up */
118#define EEPROM_SKU_CAP_BAND_POS (4)
119#define EEPROM_SKU_CAP_BAND_SELECTION \
120 (3 << EEPROM_SKU_CAP_BAND_POS)
121#define EEPROM_SKU_CAP_11N_ENABLE (1 << 6)
122#define EEPROM_SKU_CAP_AMT_ENABLE (1 << 7)
123#define EEPROM_SKU_CAP_IPAN_ENABLE (1 << 8)
124
116/* *regulatory* channel data format in eeprom, one for each channel. 125/* *regulatory* channel data format in eeprom, one for each channel.
117 * There are separate entries for HT40 (40 MHz) vs. normal (20 MHz) channels. */ 126 * There are separate entries for HT40 (40 MHz) vs. normal (20 MHz) channels. */
118struct iwl_eeprom_channel { 127struct iwl_eeprom_channel {
@@ -397,7 +406,7 @@ struct iwl_eeprom_calib_info {
397#define EEPROM_BOARD_REVISION (2*0x35) /* 2 bytes */ 406#define EEPROM_BOARD_REVISION (2*0x35) /* 2 bytes */
398#define EEPROM_BOARD_PBA_NUMBER (2*0x3B+1) /* 9 bytes */ 407#define EEPROM_BOARD_PBA_NUMBER (2*0x3B+1) /* 9 bytes */
399#define EEPROM_VERSION (2*0x44) /* 2 bytes */ 408#define EEPROM_VERSION (2*0x44) /* 2 bytes */
400#define EEPROM_SKU_CAP (2*0x45) /* 1 bytes */ 409#define EEPROM_SKU_CAP (2*0x45) /* 2 bytes */
401#define EEPROM_OEM_MODE (2*0x46) /* 2 bytes */ 410#define EEPROM_OEM_MODE (2*0x46) /* 2 bytes */
402#define EEPROM_WOWLAN_MODE (2*0x47) /* 2 bytes */ 411#define EEPROM_WOWLAN_MODE (2*0x47) /* 2 bytes */
403#define EEPROM_RADIO_CONFIG (2*0x48) /* 2 bytes */ 412#define EEPROM_RADIO_CONFIG (2*0x48) /* 2 bytes */
@@ -504,6 +513,7 @@ struct iwl_eeprom_ops {
504int iwl_eeprom_init(struct iwl_priv *priv); 513int iwl_eeprom_init(struct iwl_priv *priv);
505void iwl_eeprom_free(struct iwl_priv *priv); 514void iwl_eeprom_free(struct iwl_priv *priv);
506int iwl_eeprom_check_version(struct iwl_priv *priv); 515int iwl_eeprom_check_version(struct iwl_priv *priv);
516int iwl_eeprom_check_sku(struct iwl_priv *priv);
507const u8 *iwl_eeprom_query_addr(const struct iwl_priv *priv, size_t offset); 517const u8 *iwl_eeprom_query_addr(const struct iwl_priv *priv, size_t offset);
508int iwlcore_eeprom_verify_signature(struct iwl_priv *priv); 518int iwlcore_eeprom_verify_signature(struct iwl_priv *priv);
509u16 iwl_eeprom_query16(const struct iwl_priv *priv, size_t offset); 519u16 iwl_eeprom_query16(const struct iwl_priv *priv, size_t offset);