aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2800usb.c
diff options
context:
space:
mode:
authorGertjan van Wingerde <gwingerde@gmail.com>2011-04-18 09:32:13 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-04-19 15:39:45 -0400
commite01ae27f8ce6bd3ee26ef33c704f62449ce8233b (patch)
tree28c022b0e755e244e4834f741d2bfce600606624 /drivers/net/wireless/rt2x00/rt2800usb.c
parentce2919c9fffe2aa52f9c3e327176d03764dbf9b5 (diff)
rt2x00: Allow dynamic addition of PCI/USB IDs.
Both USB and PCI drivers allow a system administrator to dynamically add USB/PCI IDs to the device table that a driver supports via the /sys/bus/{usb,pci,pci_express}/drivers/<driver-name>/new_id files. However, for the rt2x00 drivers using this method currently crashes the system with a NULL pointer failure. This is due to the set-up of rt2x00 where the probe functions require a rt2x00_ops structure in the driver_info field of the probed device. As this field is empty for the dynamically added devices this fails for these devices. Fix this by introducing driver-specific probe wrappers that do nothing but calling the bus-specific probe functions with the rt2x00_ops structure as an argument, rather than depending on the driver_info field. Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c440
1 files changed, 223 insertions, 217 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 1bb9a7d09de5..6f7c16174575 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -768,230 +768,230 @@ static const struct rt2x00_ops rt2800usb_ops = {
768 */ 768 */
769static struct usb_device_id rt2800usb_device_table[] = { 769static struct usb_device_id rt2800usb_device_table[] = {
770 /* Abocom */ 770 /* Abocom */
771 { USB_DEVICE(0x07b8, 0x2870), USB_DEVICE_DATA(&rt2800usb_ops) }, 771 { USB_DEVICE(0x07b8, 0x2870) },
772 { USB_DEVICE(0x07b8, 0x2770), USB_DEVICE_DATA(&rt2800usb_ops) }, 772 { USB_DEVICE(0x07b8, 0x2770) },
773 { USB_DEVICE(0x07b8, 0x3070), USB_DEVICE_DATA(&rt2800usb_ops) }, 773 { USB_DEVICE(0x07b8, 0x3070) },
774 { USB_DEVICE(0x07b8, 0x3071), USB_DEVICE_DATA(&rt2800usb_ops) }, 774 { USB_DEVICE(0x07b8, 0x3071) },
775 { USB_DEVICE(0x07b8, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, 775 { USB_DEVICE(0x07b8, 0x3072) },
776 { USB_DEVICE(0x1482, 0x3c09), USB_DEVICE_DATA(&rt2800usb_ops) }, 776 { USB_DEVICE(0x1482, 0x3c09) },
777 /* AirTies */ 777 /* AirTies */
778 { USB_DEVICE(0x1eda, 0x2310), USB_DEVICE_DATA(&rt2800usb_ops) }, 778 { USB_DEVICE(0x1eda, 0x2310) },
779 /* Allwin */ 779 /* Allwin */
780 { USB_DEVICE(0x8516, 0x2070), USB_DEVICE_DATA(&rt2800usb_ops) }, 780 { USB_DEVICE(0x8516, 0x2070) },
781 { USB_DEVICE(0x8516, 0x2770), USB_DEVICE_DATA(&rt2800usb_ops) }, 781 { USB_DEVICE(0x8516, 0x2770) },
782 { USB_DEVICE(0x8516, 0x2870), USB_DEVICE_DATA(&rt2800usb_ops) }, 782 { USB_DEVICE(0x8516, 0x2870) },
783 { USB_DEVICE(0x8516, 0x3070), USB_DEVICE_DATA(&rt2800usb_ops) }, 783 { USB_DEVICE(0x8516, 0x3070) },
784 { USB_DEVICE(0x8516, 0x3071), USB_DEVICE_DATA(&rt2800usb_ops) }, 784 { USB_DEVICE(0x8516, 0x3071) },
785 { USB_DEVICE(0x8516, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, 785 { USB_DEVICE(0x8516, 0x3072) },
786 /* Alpha Networks */ 786 /* Alpha Networks */
787 { USB_DEVICE(0x14b2, 0x3c06), USB_DEVICE_DATA(&rt2800usb_ops) }, 787 { USB_DEVICE(0x14b2, 0x3c06) },
788 { USB_DEVICE(0x14b2, 0x3c07), USB_DEVICE_DATA(&rt2800usb_ops) }, 788 { USB_DEVICE(0x14b2, 0x3c07) },
789 { USB_DEVICE(0x14b2, 0x3c09), USB_DEVICE_DATA(&rt2800usb_ops) }, 789 { USB_DEVICE(0x14b2, 0x3c09) },
790 { USB_DEVICE(0x14b2, 0x3c12), USB_DEVICE_DATA(&rt2800usb_ops) }, 790 { USB_DEVICE(0x14b2, 0x3c12) },
791 { USB_DEVICE(0x14b2, 0x3c23), USB_DEVICE_DATA(&rt2800usb_ops) }, 791 { USB_DEVICE(0x14b2, 0x3c23) },
792 { USB_DEVICE(0x14b2, 0x3c25), USB_DEVICE_DATA(&rt2800usb_ops) }, 792 { USB_DEVICE(0x14b2, 0x3c25) },
793 { USB_DEVICE(0x14b2, 0x3c27), USB_DEVICE_DATA(&rt2800usb_ops) }, 793 { USB_DEVICE(0x14b2, 0x3c27) },
794 { USB_DEVICE(0x14b2, 0x3c28), USB_DEVICE_DATA(&rt2800usb_ops) }, 794 { USB_DEVICE(0x14b2, 0x3c28) },
795 { USB_DEVICE(0x14b2, 0x3c2c), USB_DEVICE_DATA(&rt2800usb_ops) }, 795 { USB_DEVICE(0x14b2, 0x3c2c) },
796 /* Amit */ 796 /* Amit */
797 { USB_DEVICE(0x15c5, 0x0008), USB_DEVICE_DATA(&rt2800usb_ops) }, 797 { USB_DEVICE(0x15c5, 0x0008) },
798 /* Askey */ 798 /* Askey */
799 { USB_DEVICE(0x1690, 0x0740), USB_DEVICE_DATA(&rt2800usb_ops) }, 799 { USB_DEVICE(0x1690, 0x0740) },
800 /* ASUS */ 800 /* ASUS */
801 { USB_DEVICE(0x0b05, 0x1731), USB_DEVICE_DATA(&rt2800usb_ops) }, 801 { USB_DEVICE(0x0b05, 0x1731) },
802 { USB_DEVICE(0x0b05, 0x1732), USB_DEVICE_DATA(&rt2800usb_ops) }, 802 { USB_DEVICE(0x0b05, 0x1732) },
803 { USB_DEVICE(0x0b05, 0x1742), USB_DEVICE_DATA(&rt2800usb_ops) }, 803 { USB_DEVICE(0x0b05, 0x1742) },
804 { USB_DEVICE(0x0b05, 0x1784), USB_DEVICE_DATA(&rt2800usb_ops) }, 804 { USB_DEVICE(0x0b05, 0x1784) },
805 { USB_DEVICE(0x1761, 0x0b05), USB_DEVICE_DATA(&rt2800usb_ops) }, 805 { USB_DEVICE(0x1761, 0x0b05) },
806 /* AzureWave */ 806 /* AzureWave */
807 { USB_DEVICE(0x13d3, 0x3247), USB_DEVICE_DATA(&rt2800usb_ops) }, 807 { USB_DEVICE(0x13d3, 0x3247) },
808 { USB_DEVICE(0x13d3, 0x3273), USB_DEVICE_DATA(&rt2800usb_ops) }, 808 { USB_DEVICE(0x13d3, 0x3273) },
809 { USB_DEVICE(0x13d3, 0x3305), USB_DEVICE_DATA(&rt2800usb_ops) }, 809 { USB_DEVICE(0x13d3, 0x3305) },
810 { USB_DEVICE(0x13d3, 0x3307), USB_DEVICE_DATA(&rt2800usb_ops) }, 810 { USB_DEVICE(0x13d3, 0x3307) },
811 { USB_DEVICE(0x13d3, 0x3321), USB_DEVICE_DATA(&rt2800usb_ops) }, 811 { USB_DEVICE(0x13d3, 0x3321) },
812 /* Belkin */ 812 /* Belkin */
813 { USB_DEVICE(0x050d, 0x8053), USB_DEVICE_DATA(&rt2800usb_ops) }, 813 { USB_DEVICE(0x050d, 0x8053) },
814 { USB_DEVICE(0x050d, 0x805c), USB_DEVICE_DATA(&rt2800usb_ops) }, 814 { USB_DEVICE(0x050d, 0x805c) },
815 { USB_DEVICE(0x050d, 0x815c), USB_DEVICE_DATA(&rt2800usb_ops) }, 815 { USB_DEVICE(0x050d, 0x815c) },
816 { USB_DEVICE(0x050d, 0x825b), USB_DEVICE_DATA(&rt2800usb_ops) }, 816 { USB_DEVICE(0x050d, 0x825b) },
817 { USB_DEVICE(0x050d, 0x935a), USB_DEVICE_DATA(&rt2800usb_ops) }, 817 { USB_DEVICE(0x050d, 0x935a) },
818 { USB_DEVICE(0x050d, 0x935b), USB_DEVICE_DATA(&rt2800usb_ops) }, 818 { USB_DEVICE(0x050d, 0x935b) },
819 /* Buffalo */ 819 /* Buffalo */
820 { USB_DEVICE(0x0411, 0x00e8), USB_DEVICE_DATA(&rt2800usb_ops) }, 820 { USB_DEVICE(0x0411, 0x00e8) },
821 { USB_DEVICE(0x0411, 0x016f), USB_DEVICE_DATA(&rt2800usb_ops) }, 821 { USB_DEVICE(0x0411, 0x016f) },
822 { USB_DEVICE(0x0411, 0x01a2), USB_DEVICE_DATA(&rt2800usb_ops) }, 822 { USB_DEVICE(0x0411, 0x01a2) },
823 /* Corega */ 823 /* Corega */
824 { USB_DEVICE(0x07aa, 0x002f), USB_DEVICE_DATA(&rt2800usb_ops) }, 824 { USB_DEVICE(0x07aa, 0x002f) },
825 { USB_DEVICE(0x07aa, 0x003c), USB_DEVICE_DATA(&rt2800usb_ops) }, 825 { USB_DEVICE(0x07aa, 0x003c) },
826 { USB_DEVICE(0x07aa, 0x003f), USB_DEVICE_DATA(&rt2800usb_ops) }, 826 { USB_DEVICE(0x07aa, 0x003f) },
827 { USB_DEVICE(0x18c5, 0x0012), USB_DEVICE_DATA(&rt2800usb_ops) }, 827 { USB_DEVICE(0x18c5, 0x0012) },
828 /* D-Link */ 828 /* D-Link */
829 { USB_DEVICE(0x07d1, 0x3c09), USB_DEVICE_DATA(&rt2800usb_ops) }, 829 { USB_DEVICE(0x07d1, 0x3c09) },
830 { USB_DEVICE(0x07d1, 0x3c0a), USB_DEVICE_DATA(&rt2800usb_ops) }, 830 { USB_DEVICE(0x07d1, 0x3c0a) },
831 { USB_DEVICE(0x07d1, 0x3c0d), USB_DEVICE_DATA(&rt2800usb_ops) }, 831 { USB_DEVICE(0x07d1, 0x3c0d) },
832 { USB_DEVICE(0x07d1, 0x3c0e), USB_DEVICE_DATA(&rt2800usb_ops) }, 832 { USB_DEVICE(0x07d1, 0x3c0e) },
833 { USB_DEVICE(0x07d1, 0x3c0f), USB_DEVICE_DATA(&rt2800usb_ops) }, 833 { USB_DEVICE(0x07d1, 0x3c0f) },
834 { USB_DEVICE(0x07d1, 0x3c11), USB_DEVICE_DATA(&rt2800usb_ops) }, 834 { USB_DEVICE(0x07d1, 0x3c11) },
835 { USB_DEVICE(0x07d1, 0x3c16), USB_DEVICE_DATA(&rt2800usb_ops) }, 835 { USB_DEVICE(0x07d1, 0x3c16) },
836 /* Draytek */ 836 /* Draytek */
837 { USB_DEVICE(0x07fa, 0x7712), USB_DEVICE_DATA(&rt2800usb_ops) }, 837 { USB_DEVICE(0x07fa, 0x7712) },
838 /* Edimax */ 838 /* Edimax */
839 { USB_DEVICE(0x7392, 0x7711), USB_DEVICE_DATA(&rt2800usb_ops) }, 839 { USB_DEVICE(0x7392, 0x7711) },
840 { USB_DEVICE(0x7392, 0x7717), USB_DEVICE_DATA(&rt2800usb_ops) }, 840 { USB_DEVICE(0x7392, 0x7717) },
841 { USB_DEVICE(0x7392, 0x7718), USB_DEVICE_DATA(&rt2800usb_ops) }, 841 { USB_DEVICE(0x7392, 0x7718) },
842 /* Encore */ 842 /* Encore */
843 { USB_DEVICE(0x203d, 0x1480), USB_DEVICE_DATA(&rt2800usb_ops) }, 843 { USB_DEVICE(0x203d, 0x1480) },
844 { USB_DEVICE(0x203d, 0x14a9), USB_DEVICE_DATA(&rt2800usb_ops) }, 844 { USB_DEVICE(0x203d, 0x14a9) },
845 /* EnGenius */ 845 /* EnGenius */
846 { USB_DEVICE(0x1740, 0x9701), USB_DEVICE_DATA(&rt2800usb_ops) }, 846 { USB_DEVICE(0x1740, 0x9701) },
847 { USB_DEVICE(0x1740, 0x9702), USB_DEVICE_DATA(&rt2800usb_ops) }, 847 { USB_DEVICE(0x1740, 0x9702) },
848 { USB_DEVICE(0x1740, 0x9703), USB_DEVICE_DATA(&rt2800usb_ops) }, 848 { USB_DEVICE(0x1740, 0x9703) },
849 { USB_DEVICE(0x1740, 0x9705), USB_DEVICE_DATA(&rt2800usb_ops) }, 849 { USB_DEVICE(0x1740, 0x9705) },
850 { USB_DEVICE(0x1740, 0x9706), USB_DEVICE_DATA(&rt2800usb_ops) }, 850 { USB_DEVICE(0x1740, 0x9706) },
851 { USB_DEVICE(0x1740, 0x9707), USB_DEVICE_DATA(&rt2800usb_ops) }, 851 { USB_DEVICE(0x1740, 0x9707) },
852 { USB_DEVICE(0x1740, 0x9708), USB_DEVICE_DATA(&rt2800usb_ops) }, 852 { USB_DEVICE(0x1740, 0x9708) },
853 { USB_DEVICE(0x1740, 0x9709), USB_DEVICE_DATA(&rt2800usb_ops) }, 853 { USB_DEVICE(0x1740, 0x9709) },
854 /* Gemtek */ 854 /* Gemtek */
855 { USB_DEVICE(0x15a9, 0x0012), USB_DEVICE_DATA(&rt2800usb_ops) }, 855 { USB_DEVICE(0x15a9, 0x0012) },
856 /* Gigabyte */ 856 /* Gigabyte */
857 { USB_DEVICE(0x1044, 0x800b), USB_DEVICE_DATA(&rt2800usb_ops) }, 857 { USB_DEVICE(0x1044, 0x800b) },
858 { USB_DEVICE(0x1044, 0x800d), USB_DEVICE_DATA(&rt2800usb_ops) }, 858 { USB_DEVICE(0x1044, 0x800d) },
859 /* Hawking */ 859 /* Hawking */
860 { USB_DEVICE(0x0e66, 0x0001), USB_DEVICE_DATA(&rt2800usb_ops) }, 860 { USB_DEVICE(0x0e66, 0x0001) },
861 { USB_DEVICE(0x0e66, 0x0003), USB_DEVICE_DATA(&rt2800usb_ops) }, 861 { USB_DEVICE(0x0e66, 0x0003) },
862 { USB_DEVICE(0x0e66, 0x0009), USB_DEVICE_DATA(&rt2800usb_ops) }, 862 { USB_DEVICE(0x0e66, 0x0009) },
863 { USB_DEVICE(0x0e66, 0x000b), USB_DEVICE_DATA(&rt2800usb_ops) }, 863 { USB_DEVICE(0x0e66, 0x000b) },
864 { USB_DEVICE(0x0e66, 0x0013), USB_DEVICE_DATA(&rt2800usb_ops) }, 864 { USB_DEVICE(0x0e66, 0x0013) },
865 { USB_DEVICE(0x0e66, 0x0017), USB_DEVICE_DATA(&rt2800usb_ops) }, 865 { USB_DEVICE(0x0e66, 0x0017) },
866 { USB_DEVICE(0x0e66, 0x0018), USB_DEVICE_DATA(&rt2800usb_ops) }, 866 { USB_DEVICE(0x0e66, 0x0018) },
867 /* I-O DATA */ 867 /* I-O DATA */
868 { USB_DEVICE(0x04bb, 0x0945), USB_DEVICE_DATA(&rt2800usb_ops) }, 868 { USB_DEVICE(0x04bb, 0x0945) },
869 { USB_DEVICE(0x04bb, 0x0947), USB_DEVICE_DATA(&rt2800usb_ops) }, 869 { USB_DEVICE(0x04bb, 0x0947) },
870 { USB_DEVICE(0x04bb, 0x0948), USB_DEVICE_DATA(&rt2800usb_ops) }, 870 { USB_DEVICE(0x04bb, 0x0948) },
871 /* Linksys */ 871 /* Linksys */
872 { USB_DEVICE(0x13b1, 0x0031), USB_DEVICE_DATA(&rt2800usb_ops) }, 872 { USB_DEVICE(0x13b1, 0x0031) },
873 { USB_DEVICE(0x1737, 0x0070), USB_DEVICE_DATA(&rt2800usb_ops) }, 873 { USB_DEVICE(0x1737, 0x0070) },
874 { USB_DEVICE(0x1737, 0x0071), USB_DEVICE_DATA(&rt2800usb_ops) }, 874 { USB_DEVICE(0x1737, 0x0071) },
875 /* Logitec */ 875 /* Logitec */
876 { USB_DEVICE(0x0789, 0x0162), USB_DEVICE_DATA(&rt2800usb_ops) }, 876 { USB_DEVICE(0x0789, 0x0162) },
877 { USB_DEVICE(0x0789, 0x0163), USB_DEVICE_DATA(&rt2800usb_ops) }, 877 { USB_DEVICE(0x0789, 0x0163) },
878 { USB_DEVICE(0x0789, 0x0164), USB_DEVICE_DATA(&rt2800usb_ops) }, 878 { USB_DEVICE(0x0789, 0x0164) },
879 { USB_DEVICE(0x0789, 0x0166), USB_DEVICE_DATA(&rt2800usb_ops) }, 879 { USB_DEVICE(0x0789, 0x0166) },
880 /* Motorola */ 880 /* Motorola */
881 { USB_DEVICE(0x100d, 0x9031), USB_DEVICE_DATA(&rt2800usb_ops) }, 881 { USB_DEVICE(0x100d, 0x9031) },
882 /* MSI */ 882 /* MSI */
883 { USB_DEVICE(0x0db0, 0x3820), USB_DEVICE_DATA(&rt2800usb_ops) }, 883 { USB_DEVICE(0x0db0, 0x3820) },
884 { USB_DEVICE(0x0db0, 0x3821), USB_DEVICE_DATA(&rt2800usb_ops) }, 884 { USB_DEVICE(0x0db0, 0x3821) },
885 { USB_DEVICE(0x0db0, 0x3822), USB_DEVICE_DATA(&rt2800usb_ops) }, 885 { USB_DEVICE(0x0db0, 0x3822) },
886 { USB_DEVICE(0x0db0, 0x3870), USB_DEVICE_DATA(&rt2800usb_ops) }, 886 { USB_DEVICE(0x0db0, 0x3870) },
887 { USB_DEVICE(0x0db0, 0x3871), USB_DEVICE_DATA(&rt2800usb_ops) }, 887 { USB_DEVICE(0x0db0, 0x3871) },
888 { USB_DEVICE(0x0db0, 0x6899), USB_DEVICE_DATA(&rt2800usb_ops) }, 888 { USB_DEVICE(0x0db0, 0x6899) },
889 { USB_DEVICE(0x0db0, 0x821a), USB_DEVICE_DATA(&rt2800usb_ops) }, 889 { USB_DEVICE(0x0db0, 0x821a) },
890 { USB_DEVICE(0x0db0, 0x822a), USB_DEVICE_DATA(&rt2800usb_ops) }, 890 { USB_DEVICE(0x0db0, 0x822a) },
891 { USB_DEVICE(0x0db0, 0x822b), USB_DEVICE_DATA(&rt2800usb_ops) }, 891 { USB_DEVICE(0x0db0, 0x822b) },
892 { USB_DEVICE(0x0db0, 0x822c), USB_DEVICE_DATA(&rt2800usb_ops) }, 892 { USB_DEVICE(0x0db0, 0x822c) },
893 { USB_DEVICE(0x0db0, 0x870a), USB_DEVICE_DATA(&rt2800usb_ops) }, 893 { USB_DEVICE(0x0db0, 0x870a) },
894 { USB_DEVICE(0x0db0, 0x871a), USB_DEVICE_DATA(&rt2800usb_ops) }, 894 { USB_DEVICE(0x0db0, 0x871a) },
895 { USB_DEVICE(0x0db0, 0x871b), USB_DEVICE_DATA(&rt2800usb_ops) }, 895 { USB_DEVICE(0x0db0, 0x871b) },
896 { USB_DEVICE(0x0db0, 0x871c), USB_DEVICE_DATA(&rt2800usb_ops) }, 896 { USB_DEVICE(0x0db0, 0x871c) },
897 { USB_DEVICE(0x0db0, 0x899a), USB_DEVICE_DATA(&rt2800usb_ops) }, 897 { USB_DEVICE(0x0db0, 0x899a) },
898 /* Para */ 898 /* Para */
899 { USB_DEVICE(0x20b8, 0x8888), USB_DEVICE_DATA(&rt2800usb_ops) }, 899 { USB_DEVICE(0x20b8, 0x8888) },
900 /* Pegatron */ 900 /* Pegatron */
901 { USB_DEVICE(0x1d4d, 0x000c), USB_DEVICE_DATA(&rt2800usb_ops) }, 901 { USB_DEVICE(0x1d4d, 0x000c) },
902 { USB_DEVICE(0x1d4d, 0x000e), USB_DEVICE_DATA(&rt2800usb_ops) }, 902 { USB_DEVICE(0x1d4d, 0x000e) },
903 { USB_DEVICE(0x1d4d, 0x0011), USB_DEVICE_DATA(&rt2800usb_ops) }, 903 { USB_DEVICE(0x1d4d, 0x0011) },
904 /* Philips */ 904 /* Philips */
905 { USB_DEVICE(0x0471, 0x200f), USB_DEVICE_DATA(&rt2800usb_ops) }, 905 { USB_DEVICE(0x0471, 0x200f) },
906 /* Planex */ 906 /* Planex */
907 { USB_DEVICE(0x2019, 0xab25), USB_DEVICE_DATA(&rt2800usb_ops) }, 907 { USB_DEVICE(0x2019, 0xab25) },
908 { USB_DEVICE(0x2019, 0xed06), USB_DEVICE_DATA(&rt2800usb_ops) }, 908 { USB_DEVICE(0x2019, 0xed06) },
909 /* Quanta */ 909 /* Quanta */
910 { USB_DEVICE(0x1a32, 0x0304), USB_DEVICE_DATA(&rt2800usb_ops) }, 910 { USB_DEVICE(0x1a32, 0x0304) },
911 /* Ralink */ 911 /* Ralink */
912 { USB_DEVICE(0x148f, 0x2070), USB_DEVICE_DATA(&rt2800usb_ops) }, 912 { USB_DEVICE(0x148f, 0x2070) },
913 { USB_DEVICE(0x148f, 0x2770), USB_DEVICE_DATA(&rt2800usb_ops) }, 913 { USB_DEVICE(0x148f, 0x2770) },
914 { USB_DEVICE(0x148f, 0x2870), USB_DEVICE_DATA(&rt2800usb_ops) }, 914 { USB_DEVICE(0x148f, 0x2870) },
915 { USB_DEVICE(0x148f, 0x3070), USB_DEVICE_DATA(&rt2800usb_ops) }, 915 { USB_DEVICE(0x148f, 0x3070) },
916 { USB_DEVICE(0x148f, 0x3071), USB_DEVICE_DATA(&rt2800usb_ops) }, 916 { USB_DEVICE(0x148f, 0x3071) },
917 { USB_DEVICE(0x148f, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, 917 { USB_DEVICE(0x148f, 0x3072) },
918 /* Samsung */ 918 /* Samsung */
919 { USB_DEVICE(0x04e8, 0x2018), USB_DEVICE_DATA(&rt2800usb_ops) }, 919 { USB_DEVICE(0x04e8, 0x2018) },
920 /* Siemens */ 920 /* Siemens */
921 { USB_DEVICE(0x129b, 0x1828), USB_DEVICE_DATA(&rt2800usb_ops) }, 921 { USB_DEVICE(0x129b, 0x1828) },
922 /* Sitecom */ 922 /* Sitecom */
923 { USB_DEVICE(0x0df6, 0x0017), USB_DEVICE_DATA(&rt2800usb_ops) }, 923 { USB_DEVICE(0x0df6, 0x0017) },
924 { USB_DEVICE(0x0df6, 0x002b), USB_DEVICE_DATA(&rt2800usb_ops) }, 924 { USB_DEVICE(0x0df6, 0x002b) },
925 { USB_DEVICE(0x0df6, 0x002c), USB_DEVICE_DATA(&rt2800usb_ops) }, 925 { USB_DEVICE(0x0df6, 0x002c) },
926 { USB_DEVICE(0x0df6, 0x002d), USB_DEVICE_DATA(&rt2800usb_ops) }, 926 { USB_DEVICE(0x0df6, 0x002d) },
927 { USB_DEVICE(0x0df6, 0x0039), USB_DEVICE_DATA(&rt2800usb_ops) }, 927 { USB_DEVICE(0x0df6, 0x0039) },
928 { USB_DEVICE(0x0df6, 0x003b), USB_DEVICE_DATA(&rt2800usb_ops) }, 928 { USB_DEVICE(0x0df6, 0x003b) },
929 { USB_DEVICE(0x0df6, 0x003d), USB_DEVICE_DATA(&rt2800usb_ops) }, 929 { USB_DEVICE(0x0df6, 0x003d) },
930 { USB_DEVICE(0x0df6, 0x003e), USB_DEVICE_DATA(&rt2800usb_ops) }, 930 { USB_DEVICE(0x0df6, 0x003e) },
931 { USB_DEVICE(0x0df6, 0x003f), USB_DEVICE_DATA(&rt2800usb_ops) }, 931 { USB_DEVICE(0x0df6, 0x003f) },
932 { USB_DEVICE(0x0df6, 0x0040), USB_DEVICE_DATA(&rt2800usb_ops) }, 932 { USB_DEVICE(0x0df6, 0x0040) },
933 { USB_DEVICE(0x0df6, 0x0042), USB_DEVICE_DATA(&rt2800usb_ops) }, 933 { USB_DEVICE(0x0df6, 0x0042) },
934 { USB_DEVICE(0x0df6, 0x0047), USB_DEVICE_DATA(&rt2800usb_ops) }, 934 { USB_DEVICE(0x0df6, 0x0047) },
935 { USB_DEVICE(0x0df6, 0x0048), USB_DEVICE_DATA(&rt2800usb_ops) }, 935 { USB_DEVICE(0x0df6, 0x0048) },
936 /* SMC */ 936 /* SMC */
937 { USB_DEVICE(0x083a, 0x6618), USB_DEVICE_DATA(&rt2800usb_ops) }, 937 { USB_DEVICE(0x083a, 0x6618) },
938 { USB_DEVICE(0x083a, 0x7511), USB_DEVICE_DATA(&rt2800usb_ops) }, 938 { USB_DEVICE(0x083a, 0x7511) },
939 { USB_DEVICE(0x083a, 0x7512), USB_DEVICE_DATA(&rt2800usb_ops) }, 939 { USB_DEVICE(0x083a, 0x7512) },
940 { USB_DEVICE(0x083a, 0x7522), USB_DEVICE_DATA(&rt2800usb_ops) }, 940 { USB_DEVICE(0x083a, 0x7522) },
941 { USB_DEVICE(0x083a, 0x8522), USB_DEVICE_DATA(&rt2800usb_ops) }, 941 { USB_DEVICE(0x083a, 0x8522) },
942 { USB_DEVICE(0x083a, 0xa618), USB_DEVICE_DATA(&rt2800usb_ops) }, 942 { USB_DEVICE(0x083a, 0xa618) },
943 { USB_DEVICE(0x083a, 0xa701), USB_DEVICE_DATA(&rt2800usb_ops) }, 943 { USB_DEVICE(0x083a, 0xa701) },
944 { USB_DEVICE(0x083a, 0xa702), USB_DEVICE_DATA(&rt2800usb_ops) }, 944 { USB_DEVICE(0x083a, 0xa702) },
945 { USB_DEVICE(0x083a, 0xa703), USB_DEVICE_DATA(&rt2800usb_ops) }, 945 { USB_DEVICE(0x083a, 0xa703) },
946 { USB_DEVICE(0x083a, 0xb522), USB_DEVICE_DATA(&rt2800usb_ops) }, 946 { USB_DEVICE(0x083a, 0xb522) },
947 /* Sparklan */ 947 /* Sparklan */
948 { USB_DEVICE(0x15a9, 0x0006), USB_DEVICE_DATA(&rt2800usb_ops) }, 948 { USB_DEVICE(0x15a9, 0x0006) },
949 /* Sweex */ 949 /* Sweex */
950 { USB_DEVICE(0x177f, 0x0302), USB_DEVICE_DATA(&rt2800usb_ops) }, 950 { USB_DEVICE(0x177f, 0x0302) },
951 /* U-Media */ 951 /* U-Media */
952 { USB_DEVICE(0x157e, 0x300e), USB_DEVICE_DATA(&rt2800usb_ops) }, 952 { USB_DEVICE(0x157e, 0x300e) },
953 { USB_DEVICE(0x157e, 0x3013), USB_DEVICE_DATA(&rt2800usb_ops) }, 953 { USB_DEVICE(0x157e, 0x3013) },
954 /* ZCOM */ 954 /* ZCOM */
955 { USB_DEVICE(0x0cde, 0x0022), USB_DEVICE_DATA(&rt2800usb_ops) }, 955 { USB_DEVICE(0x0cde, 0x0022) },
956 { USB_DEVICE(0x0cde, 0x0025), USB_DEVICE_DATA(&rt2800usb_ops) }, 956 { USB_DEVICE(0x0cde, 0x0025) },
957 /* Zinwell */ 957 /* Zinwell */
958 { USB_DEVICE(0x5a57, 0x0280), USB_DEVICE_DATA(&rt2800usb_ops) }, 958 { USB_DEVICE(0x5a57, 0x0280) },
959 { USB_DEVICE(0x5a57, 0x0282), USB_DEVICE_DATA(&rt2800usb_ops) }, 959 { USB_DEVICE(0x5a57, 0x0282) },
960 { USB_DEVICE(0x5a57, 0x0283), USB_DEVICE_DATA(&rt2800usb_ops) }, 960 { USB_DEVICE(0x5a57, 0x0283) },
961 { USB_DEVICE(0x5a57, 0x5257), USB_DEVICE_DATA(&rt2800usb_ops) }, 961 { USB_DEVICE(0x5a57, 0x5257) },
962 /* Zyxel */ 962 /* Zyxel */
963 { USB_DEVICE(0x0586, 0x3416), USB_DEVICE_DATA(&rt2800usb_ops) }, 963 { USB_DEVICE(0x0586, 0x3416) },
964 { USB_DEVICE(0x0586, 0x3418), USB_DEVICE_DATA(&rt2800usb_ops) }, 964 { USB_DEVICE(0x0586, 0x3418) },
965 { USB_DEVICE(0x0586, 0x341e), USB_DEVICE_DATA(&rt2800usb_ops) }, 965 { USB_DEVICE(0x0586, 0x341e) },
966#ifdef CONFIG_RT2800USB_RT33XX 966#ifdef CONFIG_RT2800USB_RT33XX
967 /* Ralink */ 967 /* Ralink */
968 { USB_DEVICE(0x148f, 0x3370), USB_DEVICE_DATA(&rt2800usb_ops) }, 968 { USB_DEVICE(0x148f, 0x3370) },
969 { USB_DEVICE(0x148f, 0x8070), USB_DEVICE_DATA(&rt2800usb_ops) }, 969 { USB_DEVICE(0x148f, 0x8070) },
970 /* Sitecom */ 970 /* Sitecom */
971 { USB_DEVICE(0x0df6, 0x0050), USB_DEVICE_DATA(&rt2800usb_ops) }, 971 { USB_DEVICE(0x0df6, 0x0050) },
972#endif 972#endif
973#ifdef CONFIG_RT2800USB_RT35XX 973#ifdef CONFIG_RT2800USB_RT35XX
974 /* Allwin */ 974 /* Allwin */
975 { USB_DEVICE(0x8516, 0x3572), USB_DEVICE_DATA(&rt2800usb_ops) }, 975 { USB_DEVICE(0x8516, 0x3572) },
976 /* Askey */ 976 /* Askey */
977 { USB_DEVICE(0x1690, 0x0744), USB_DEVICE_DATA(&rt2800usb_ops) }, 977 { USB_DEVICE(0x1690, 0x0744) },
978 /* Cisco */ 978 /* Cisco */
979 { USB_DEVICE(0x167b, 0x4001), USB_DEVICE_DATA(&rt2800usb_ops) }, 979 { USB_DEVICE(0x167b, 0x4001) },
980 /* EnGenius */ 980 /* EnGenius */
981 { USB_DEVICE(0x1740, 0x9801), USB_DEVICE_DATA(&rt2800usb_ops) }, 981 { USB_DEVICE(0x1740, 0x9801) },
982 /* I-O DATA */ 982 /* I-O DATA */
983 { USB_DEVICE(0x04bb, 0x0944), USB_DEVICE_DATA(&rt2800usb_ops) }, 983 { USB_DEVICE(0x04bb, 0x0944) },
984 /* Linksys */ 984 /* Linksys */
985 { USB_DEVICE(0x13b1, 0x002f), USB_DEVICE_DATA(&rt2800usb_ops) }, 985 { USB_DEVICE(0x13b1, 0x002f) },
986 { USB_DEVICE(0x1737, 0x0079), USB_DEVICE_DATA(&rt2800usb_ops) }, 986 { USB_DEVICE(0x1737, 0x0079) },
987 /* Ralink */ 987 /* Ralink */
988 { USB_DEVICE(0x148f, 0x3572), USB_DEVICE_DATA(&rt2800usb_ops) }, 988 { USB_DEVICE(0x148f, 0x3572) },
989 /* Sitecom */ 989 /* Sitecom */
990 { USB_DEVICE(0x0df6, 0x0041), USB_DEVICE_DATA(&rt2800usb_ops) }, 990 { USB_DEVICE(0x0df6, 0x0041) },
991 /* Toshiba */ 991 /* Toshiba */
992 { USB_DEVICE(0x0930, 0x0a07), USB_DEVICE_DATA(&rt2800usb_ops) }, 992 { USB_DEVICE(0x0930, 0x0a07) },
993 /* Zinwell */ 993 /* Zinwell */
994 { USB_DEVICE(0x5a57, 0x0284), USB_DEVICE_DATA(&rt2800usb_ops) }, 994 { USB_DEVICE(0x5a57, 0x0284) },
995#endif 995#endif
996#ifdef CONFIG_RT2800USB_UNKNOWN 996#ifdef CONFIG_RT2800USB_UNKNOWN
997 /* 997 /*
@@ -999,73 +999,73 @@ static struct usb_device_id rt2800usb_device_table[] = {
999 * vendor linux driver). 999 * vendor linux driver).
1000 */ 1000 */
1001 /* Alpha Networks */ 1001 /* Alpha Networks */
1002 { USB_DEVICE(0x14b2, 0x3c08), USB_DEVICE_DATA(&rt2800usb_ops) }, 1002 { USB_DEVICE(0x14b2, 0x3c08) },
1003 { USB_DEVICE(0x14b2, 0x3c11), USB_DEVICE_DATA(&rt2800usb_ops) }, 1003 { USB_DEVICE(0x14b2, 0x3c11) },
1004 /* Amigo */ 1004 /* Amigo */
1005 { USB_DEVICE(0x0e0b, 0x9031), USB_DEVICE_DATA(&rt2800usb_ops) }, 1005 { USB_DEVICE(0x0e0b, 0x9031) },
1006 { USB_DEVICE(0x0e0b, 0x9041), USB_DEVICE_DATA(&rt2800usb_ops) }, 1006 { USB_DEVICE(0x0e0b, 0x9041) },
1007 /* ASUS */ 1007 /* ASUS */
1008 { USB_DEVICE(0x0b05, 0x1760), USB_DEVICE_DATA(&rt2800usb_ops) }, 1008 { USB_DEVICE(0x0b05, 0x1760) },
1009 { USB_DEVICE(0x0b05, 0x1761), USB_DEVICE_DATA(&rt2800usb_ops) }, 1009 { USB_DEVICE(0x0b05, 0x1761) },
1010 { USB_DEVICE(0x0b05, 0x1790), USB_DEVICE_DATA(&rt2800usb_ops) }, 1010 { USB_DEVICE(0x0b05, 0x1790) },
1011 /* AzureWave */ 1011 /* AzureWave */
1012 { USB_DEVICE(0x13d3, 0x3262), USB_DEVICE_DATA(&rt2800usb_ops) }, 1012 { USB_DEVICE(0x13d3, 0x3262) },
1013 { USB_DEVICE(0x13d3, 0x3284), USB_DEVICE_DATA(&rt2800usb_ops) }, 1013 { USB_DEVICE(0x13d3, 0x3284) },
1014 { USB_DEVICE(0x13d3, 0x3322), USB_DEVICE_DATA(&rt2800usb_ops) }, 1014 { USB_DEVICE(0x13d3, 0x3322) },
1015 /* Belkin */ 1015 /* Belkin */
1016 { USB_DEVICE(0x050d, 0x825a), USB_DEVICE_DATA(&rt2800usb_ops) }, 1016 { USB_DEVICE(0x050d, 0x825a) },
1017 /* Buffalo */ 1017 /* Buffalo */
1018 { USB_DEVICE(0x0411, 0x012e), USB_DEVICE_DATA(&rt2800usb_ops) }, 1018 { USB_DEVICE(0x0411, 0x012e) },
1019 { USB_DEVICE(0x0411, 0x0148), USB_DEVICE_DATA(&rt2800usb_ops) }, 1019 { USB_DEVICE(0x0411, 0x0148) },
1020 { USB_DEVICE(0x0411, 0x0150), USB_DEVICE_DATA(&rt2800usb_ops) }, 1020 { USB_DEVICE(0x0411, 0x0150) },
1021 { USB_DEVICE(0x0411, 0x015d), USB_DEVICE_DATA(&rt2800usb_ops) }, 1021 { USB_DEVICE(0x0411, 0x015d) },
1022 /* Corega */ 1022 /* Corega */
1023 { USB_DEVICE(0x07aa, 0x0041), USB_DEVICE_DATA(&rt2800usb_ops) }, 1023 { USB_DEVICE(0x07aa, 0x0041) },
1024 { USB_DEVICE(0x07aa, 0x0042), USB_DEVICE_DATA(&rt2800usb_ops) }, 1024 { USB_DEVICE(0x07aa, 0x0042) },
1025 { USB_DEVICE(0x18c5, 0x0008), USB_DEVICE_DATA(&rt2800usb_ops) }, 1025 { USB_DEVICE(0x18c5, 0x0008) },
1026 /* D-Link */ 1026 /* D-Link */
1027 { USB_DEVICE(0x07d1, 0x3c0b), USB_DEVICE_DATA(&rt2800usb_ops) }, 1027 { USB_DEVICE(0x07d1, 0x3c0b) },
1028 { USB_DEVICE(0x07d1, 0x3c13), USB_DEVICE_DATA(&rt2800usb_ops) }, 1028 { USB_DEVICE(0x07d1, 0x3c13) },
1029 { USB_DEVICE(0x07d1, 0x3c15), USB_DEVICE_DATA(&rt2800usb_ops) }, 1029 { USB_DEVICE(0x07d1, 0x3c15) },
1030 { USB_DEVICE(0x07d1, 0x3c17), USB_DEVICE_DATA(&rt2800usb_ops) }, 1030 { USB_DEVICE(0x07d1, 0x3c17) },
1031 /* Edimax */ 1031 /* Edimax */
1032 { USB_DEVICE(0x7392, 0x4085), USB_DEVICE_DATA(&rt2800usb_ops) }, 1032 { USB_DEVICE(0x7392, 0x4085) },
1033 /* Encore */ 1033 /* Encore */
1034 { USB_DEVICE(0x203d, 0x14a1), USB_DEVICE_DATA(&rt2800usb_ops) }, 1034 { USB_DEVICE(0x203d, 0x14a1) },
1035 /* Gemtek */ 1035 /* Gemtek */
1036 { USB_DEVICE(0x15a9, 0x0010), USB_DEVICE_DATA(&rt2800usb_ops) }, 1036 { USB_DEVICE(0x15a9, 0x0010) },
1037 /* Gigabyte */ 1037 /* Gigabyte */
1038 { USB_DEVICE(0x1044, 0x800c), USB_DEVICE_DATA(&rt2800usb_ops) }, 1038 { USB_DEVICE(0x1044, 0x800c) },
1039 /* LevelOne */ 1039 /* LevelOne */
1040 { USB_DEVICE(0x1740, 0x0605), USB_DEVICE_DATA(&rt2800usb_ops) }, 1040 { USB_DEVICE(0x1740, 0x0605) },
1041 { USB_DEVICE(0x1740, 0x0615), USB_DEVICE_DATA(&rt2800usb_ops) }, 1041 { USB_DEVICE(0x1740, 0x0615) },
1042 /* Linksys */ 1042 /* Linksys */
1043 { USB_DEVICE(0x1737, 0x0077), USB_DEVICE_DATA(&rt2800usb_ops) }, 1043 { USB_DEVICE(0x1737, 0x0077) },
1044 { USB_DEVICE(0x1737, 0x0078), USB_DEVICE_DATA(&rt2800usb_ops) }, 1044 { USB_DEVICE(0x1737, 0x0078) },
1045 /* Motorola */ 1045 /* Motorola */
1046 { USB_DEVICE(0x100d, 0x9032), USB_DEVICE_DATA(&rt2800usb_ops) }, 1046 { USB_DEVICE(0x100d, 0x9032) },
1047 /* Ovislink */ 1047 /* Ovislink */
1048 { USB_DEVICE(0x1b75, 0x3071), USB_DEVICE_DATA(&rt2800usb_ops) }, 1048 { USB_DEVICE(0x1b75, 0x3071) },
1049 { USB_DEVICE(0x1b75, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, 1049 { USB_DEVICE(0x1b75, 0x3072) },
1050 /* Pegatron */ 1050 /* Pegatron */
1051 { USB_DEVICE(0x05a6, 0x0101), USB_DEVICE_DATA(&rt2800usb_ops) }, 1051 { USB_DEVICE(0x05a6, 0x0101) },
1052 { USB_DEVICE(0x1d4d, 0x0002), USB_DEVICE_DATA(&rt2800usb_ops) }, 1052 { USB_DEVICE(0x1d4d, 0x0002) },
1053 { USB_DEVICE(0x1d4d, 0x0010), USB_DEVICE_DATA(&rt2800usb_ops) }, 1053 { USB_DEVICE(0x1d4d, 0x0010) },
1054 /* Planex */ 1054 /* Planex */
1055 { USB_DEVICE(0x2019, 0x5201), USB_DEVICE_DATA(&rt2800usb_ops) }, 1055 { USB_DEVICE(0x2019, 0x5201) },
1056 { USB_DEVICE(0x2019, 0xab24), USB_DEVICE_DATA(&rt2800usb_ops) }, 1056 { USB_DEVICE(0x2019, 0xab24) },
1057 /* Qcom */ 1057 /* Qcom */
1058 { USB_DEVICE(0x18e8, 0x6259), USB_DEVICE_DATA(&rt2800usb_ops) }, 1058 { USB_DEVICE(0x18e8, 0x6259) },
1059 /* SMC */ 1059 /* SMC */
1060 { USB_DEVICE(0x083a, 0xa512), USB_DEVICE_DATA(&rt2800usb_ops) }, 1060 { USB_DEVICE(0x083a, 0xa512) },
1061 { USB_DEVICE(0x083a, 0xc522), USB_DEVICE_DATA(&rt2800usb_ops) }, 1061 { USB_DEVICE(0x083a, 0xc522) },
1062 { USB_DEVICE(0x083a, 0xd522), USB_DEVICE_DATA(&rt2800usb_ops) }, 1062 { USB_DEVICE(0x083a, 0xd522) },
1063 { USB_DEVICE(0x083a, 0xf511), USB_DEVICE_DATA(&rt2800usb_ops) }, 1063 { USB_DEVICE(0x083a, 0xf511) },
1064 /* Sweex */ 1064 /* Sweex */
1065 { USB_DEVICE(0x177f, 0x0153), USB_DEVICE_DATA(&rt2800usb_ops) }, 1065 { USB_DEVICE(0x177f, 0x0153) },
1066 { USB_DEVICE(0x177f, 0x0313), USB_DEVICE_DATA(&rt2800usb_ops) }, 1066 { USB_DEVICE(0x177f, 0x0313) },
1067 /* Zyxel */ 1067 /* Zyxel */
1068 { USB_DEVICE(0x0586, 0x341a), USB_DEVICE_DATA(&rt2800usb_ops) }, 1068 { USB_DEVICE(0x0586, 0x341a) },
1069#endif 1069#endif
1070 { 0, } 1070 { 0, }
1071}; 1071};
@@ -1078,10 +1078,16 @@ MODULE_DEVICE_TABLE(usb, rt2800usb_device_table);
1078MODULE_FIRMWARE(FIRMWARE_RT2870); 1078MODULE_FIRMWARE(FIRMWARE_RT2870);
1079MODULE_LICENSE("GPL"); 1079MODULE_LICENSE("GPL");
1080 1080
1081static int rt2800usb_probe(struct usb_interface *usb_intf,
1082 const struct usb_device_id *id)
1083{
1084 return rt2x00usb_probe(usb_intf, &rt2800usb_ops);
1085}
1086
1081static struct usb_driver rt2800usb_driver = { 1087static struct usb_driver rt2800usb_driver = {
1082 .name = KBUILD_MODNAME, 1088 .name = KBUILD_MODNAME,
1083 .id_table = rt2800usb_device_table, 1089 .id_table = rt2800usb_device_table,
1084 .probe = rt2x00usb_probe, 1090 .probe = rt2800usb_probe,
1085 .disconnect = rt2x00usb_disconnect, 1091 .disconnect = rt2x00usb_disconnect,
1086 .suspend = rt2x00usb_suspend, 1092 .suspend = rt2x00usb_suspend,
1087 .resume = rt2x00usb_resume, 1093 .resume = rt2x00usb_resume,