diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/pci.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/pci.c | 90 |
1 files changed, 89 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c index f009b5b57e5e..e6fef1be9977 100644 --- a/drivers/net/wireless/ath/ath9k/pci.c +++ b/drivers/net/wireless/ath/ath9k/pci.c | |||
@@ -427,6 +427,11 @@ static const struct pci_device_id ath_pci_id_table[] = { | |||
427 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 427 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
428 | 0x0036, | 428 | 0x0036, |
429 | 0x11AD, /* LITEON */ | 429 | 0x11AD, /* LITEON */ |
430 | 0x1842), | ||
431 | .driver_data = ATH9K_PCI_AR9565_1ANT }, | ||
432 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
433 | 0x0036, | ||
434 | 0x11AD, /* LITEON */ | ||
430 | 0x6671), | 435 | 0x6671), |
431 | .driver_data = ATH9K_PCI_AR9565_1ANT }, | 436 | .driver_data = ATH9K_PCI_AR9565_1ANT }, |
432 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 437 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
@@ -446,9 +451,19 @@ static const struct pci_device_id ath_pci_id_table[] = { | |||
446 | .driver_data = ATH9K_PCI_AR9565_1ANT }, | 451 | .driver_data = ATH9K_PCI_AR9565_1ANT }, |
447 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 452 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
448 | 0x0036, | 453 | 0x0036, |
454 | 0x1B9A, /* XAVI */ | ||
455 | 0x28A3), | ||
456 | .driver_data = ATH9K_PCI_AR9565_1ANT }, | ||
457 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
458 | 0x0036, | ||
449 | PCI_VENDOR_ID_AZWAVE, | 459 | PCI_VENDOR_ID_AZWAVE, |
450 | 0x218A), | 460 | 0x218A), |
451 | .driver_data = ATH9K_PCI_AR9565_1ANT }, | 461 | .driver_data = ATH9K_PCI_AR9565_1ANT }, |
462 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
463 | 0x0036, | ||
464 | PCI_VENDOR_ID_AZWAVE, | ||
465 | 0x2F8A), | ||
466 | .driver_data = ATH9K_PCI_AR9565_1ANT }, | ||
452 | 467 | ||
453 | /* WB335 1-ANT / Antenna Diversity */ | 468 | /* WB335 1-ANT / Antenna Diversity */ |
454 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 469 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
@@ -508,6 +523,11 @@ static const struct pci_device_id ath_pci_id_table[] = { | |||
508 | .driver_data = ATH9K_PCI_AR9565_1ANT | ATH9K_PCI_BT_ANT_DIV }, | 523 | .driver_data = ATH9K_PCI_AR9565_1ANT | ATH9K_PCI_BT_ANT_DIV }, |
509 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 524 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
510 | 0x0036, | 525 | 0x0036, |
526 | PCI_VENDOR_ID_AZWAVE, | ||
527 | 0x213C), | ||
528 | .driver_data = ATH9K_PCI_AR9565_1ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
529 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
530 | 0x0036, | ||
511 | PCI_VENDOR_ID_HP, | 531 | PCI_VENDOR_ID_HP, |
512 | 0x18E3), | 532 | 0x18E3), |
513 | .driver_data = ATH9K_PCI_AR9565_1ANT | ATH9K_PCI_BT_ANT_DIV }, | 533 | .driver_data = ATH9K_PCI_AR9565_1ANT | ATH9K_PCI_BT_ANT_DIV }, |
@@ -555,6 +575,16 @@ static const struct pci_device_id ath_pci_id_table[] = { | |||
555 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 575 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
556 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 576 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
557 | 0x0036, | 577 | 0x0036, |
578 | PCI_VENDOR_ID_SAMSUNG, | ||
579 | 0x4129), | ||
580 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
581 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
582 | 0x0036, | ||
583 | PCI_VENDOR_ID_SAMSUNG, | ||
584 | 0x412A), | ||
585 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
586 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
587 | 0x0036, | ||
558 | PCI_VENDOR_ID_ATHEROS, | 588 | PCI_VENDOR_ID_ATHEROS, |
559 | 0x3027), | 589 | 0x3027), |
560 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 590 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
@@ -586,10 +616,25 @@ static const struct pci_device_id ath_pci_id_table[] = { | |||
586 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 616 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
587 | 0x0036, | 617 | 0x0036, |
588 | 0x11AD, /* LITEON */ | 618 | 0x11AD, /* LITEON */ |
619 | 0x1832), | ||
620 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
621 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
622 | 0x0036, | ||
623 | 0x11AD, /* LITEON */ | ||
589 | 0x0692), | 624 | 0x0692), |
590 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 625 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
591 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 626 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
592 | 0x0036, | 627 | 0x0036, |
628 | 0x11AD, /* LITEON */ | ||
629 | 0x0803), | ||
630 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
631 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
632 | 0x0036, | ||
633 | 0x11AD, /* LITEON */ | ||
634 | 0x0813), | ||
635 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
636 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
637 | 0x0036, | ||
593 | PCI_VENDOR_ID_AZWAVE, | 638 | PCI_VENDOR_ID_AZWAVE, |
594 | 0x2130), | 639 | 0x2130), |
595 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 640 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
@@ -605,6 +650,21 @@ static const struct pci_device_id ath_pci_id_table[] = { | |||
605 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 650 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
606 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 651 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
607 | 0x0036, | 652 | 0x0036, |
653 | PCI_VENDOR_ID_AZWAVE, | ||
654 | 0x218B), | ||
655 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
656 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
657 | 0x0036, | ||
658 | PCI_VENDOR_ID_AZWAVE, | ||
659 | 0x218C), | ||
660 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
661 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
662 | 0x0036, | ||
663 | PCI_VENDOR_ID_AZWAVE, | ||
664 | 0x2F82), | ||
665 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
666 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
667 | 0x0036, | ||
608 | 0x144F, /* ASKEY */ | 668 | 0x144F, /* ASKEY */ |
609 | 0x7202), | 669 | 0x7202), |
610 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 670 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
@@ -616,10 +676,20 @@ static const struct pci_device_id ath_pci_id_table[] = { | |||
616 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 676 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
617 | 0x0036, | 677 | 0x0036, |
618 | 0x1B9A, /* XAVI */ | 678 | 0x1B9A, /* XAVI */ |
679 | 0x2813), | ||
680 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
681 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
682 | 0x0036, | ||
683 | 0x1B9A, /* XAVI */ | ||
619 | 0x28A2), | 684 | 0x28A2), |
620 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 685 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
621 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 686 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
622 | 0x0036, | 687 | 0x0036, |
688 | 0x1B9A, /* XAVI */ | ||
689 | 0x28A4), | ||
690 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
691 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
692 | 0x0036, | ||
623 | 0x185F, /* WNC */ | 693 | 0x185F, /* WNC */ |
624 | 0x3027), | 694 | 0x3027), |
625 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 695 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
@@ -636,10 +706,25 @@ static const struct pci_device_id ath_pci_id_table[] = { | |||
636 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 706 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
637 | 0x0036, | 707 | 0x0036, |
638 | PCI_VENDOR_ID_FOXCONN, | 708 | PCI_VENDOR_ID_FOXCONN, |
709 | 0xE08F), | ||
710 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
711 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
712 | 0x0036, | ||
713 | PCI_VENDOR_ID_FOXCONN, | ||
639 | 0xE081), | 714 | 0xE081), |
640 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 715 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
641 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | 716 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, |
642 | 0x0036, | 717 | 0x0036, |
718 | PCI_VENDOR_ID_FOXCONN, | ||
719 | 0xE091), | ||
720 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
721 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
722 | 0x0036, | ||
723 | PCI_VENDOR_ID_FOXCONN, | ||
724 | 0xE099), | ||
725 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | ||
726 | { PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS, | ||
727 | 0x0036, | ||
643 | PCI_VENDOR_ID_LENOVO, | 728 | PCI_VENDOR_ID_LENOVO, |
644 | 0x3026), | 729 | 0x3026), |
645 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, | 730 | .driver_data = ATH9K_PCI_AR9565_2ANT | ATH9K_PCI_BT_ANT_DIV }, |
@@ -913,9 +998,12 @@ static int ath_pci_suspend(struct device *device) | |||
913 | struct pci_dev *pdev = to_pci_dev(device); | 998 | struct pci_dev *pdev = to_pci_dev(device); |
914 | struct ieee80211_hw *hw = pci_get_drvdata(pdev); | 999 | struct ieee80211_hw *hw = pci_get_drvdata(pdev); |
915 | struct ath_softc *sc = hw->priv; | 1000 | struct ath_softc *sc = hw->priv; |
1001 | struct ath_common *common = ath9k_hw_common(sc->sc_ah); | ||
916 | 1002 | ||
917 | if (sc->wow_enabled) | 1003 | if (test_bit(ATH_OP_WOW_ENABLED, &common->op_flags)) { |
1004 | dev_info(&pdev->dev, "WOW is enabled, bypassing PCI suspend\n"); | ||
918 | return 0; | 1005 | return 0; |
1006 | } | ||
919 | 1007 | ||
920 | /* The device has to be moved to FULLSLEEP forcibly. | 1008 | /* The device has to be moved to FULLSLEEP forcibly. |
921 | * Otherwise the chip never moved to full sleep, | 1009 | * Otherwise the chip never moved to full sleep, |