OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Linux device driver for USB based Prism54 | 3 * Linux device driver for USB based Prism54 |
4 * | 4 * |
5 * Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net> | 5 * Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net> |
6 * | 6 * |
7 * Based on the islsm (softmac prism54) driver, which is: | 7 * Based on the islsm (softmac prism54) driver, which is: |
8 * Copyright 2004-2006 Jean-Baptiste Note <jbnote@gmail.com>, et al. | 8 * Copyright 2004-2006 Jean-Baptiste Note <jbnote@gmail.com>, et al. |
9 * | 9 * |
10 * This program is free software; you can redistribute it and/or modify | 10 * This program is free software; you can redistribute it and/or modify |
(...skipping 15 matching lines...) Expand all Loading... |
26 #include "lmac.h" | 26 #include "lmac.h" |
27 #include "p54usb.h" | 27 #include "p54usb.h" |
28 | 28 |
29 MODULE_AUTHOR("Michael Wu <flamingice@sourmilk.net>"); | 29 MODULE_AUTHOR("Michael Wu <flamingice@sourmilk.net>"); |
30 MODULE_DESCRIPTION("Prism54 USB wireless driver"); | 30 MODULE_DESCRIPTION("Prism54 USB wireless driver"); |
31 MODULE_LICENSE("GPL"); | 31 MODULE_LICENSE("GPL"); |
32 MODULE_ALIAS("prism54usb"); | 32 MODULE_ALIAS("prism54usb"); |
33 MODULE_FIRMWARE("isl3886usb"); | 33 MODULE_FIRMWARE("isl3886usb"); |
34 MODULE_FIRMWARE("isl3887usb"); | 34 MODULE_FIRMWARE("isl3887usb"); |
35 | 35 |
| 36 /* |
| 37 * Note: |
| 38 * |
| 39 * Always update our wiki's device list (located at: |
| 40 * http://wireless.kernel.org/en/users/Drivers/p54/devices ), |
| 41 * whenever you add a new device. |
| 42 */ |
| 43 |
36 static struct usb_device_id p54u_table[] __devinitdata = { | 44 static struct usb_device_id p54u_table[] __devinitdata = { |
37 /* Version 1 devices (pci chip + net2280) */ | 45 /* Version 1 devices (pci chip + net2280) */ |
| 46 {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */ |
38 {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ | 47 {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ |
39 {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ | 48 {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ |
40 {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ | 49 {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ |
41 {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ | 50 {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ |
42 {USB_DEVICE(0x083a, 0x4501)}, /* Accton 802.11g WN4501 USB */ | 51 {USB_DEVICE(0x083a, 0x4501)}, /* Accton 802.11g WN4501 USB */ |
43 {USB_DEVICE(0x083a, 0x4502)}, /* Siemens Gigaset USB Adapter */ | 52 {USB_DEVICE(0x083a, 0x4502)}, /* Siemens Gigaset USB Adapter */ |
44 {USB_DEVICE(0x083a, 0x5501)}, /* Phillips CPWUA054 */ | 53 {USB_DEVICE(0x083a, 0x5501)}, /* Phillips CPWUA054 */ |
45 {USB_DEVICE(0x0846, 0x4200)}, /* Netgear WG121 */ | 54 {USB_DEVICE(0x0846, 0x4200)}, /* Netgear WG121 */ |
46 {USB_DEVICE(0x0846, 0x4210)}, /* Netgear WG121 the second ? */ | 55 {USB_DEVICE(0x0846, 0x4210)}, /* Netgear WG121 the second ? */ |
47 {USB_DEVICE(0x0846, 0x4220)}, /* Netgear WG111 */ | 56 {USB_DEVICE(0x0846, 0x4220)}, /* Netgear WG111 */ |
48 {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */ | 57 {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */ |
49 {USB_DEVICE(0x0cde, 0x0006)}, /* Medion 40900, Roper Europe */ | 58 {USB_DEVICE(0x0cde, 0x0006)}, /* Medion 40900, Roper Europe */ |
| 59 {USB_DEVICE(0x107b, 0x55f2)}, /* Gateway WGU-210 (Gemtek) */ |
50 {USB_DEVICE(0x124a, 0x4023)}, /* Shuttle PN15, Airvast WM168g, IOGear
GWU513 */ | 60 {USB_DEVICE(0x124a, 0x4023)}, /* Shuttle PN15, Airvast WM168g, IOGear
GWU513 */ |
| 61 {USB_DEVICE(0x1630, 0x0005)}, /* 2Wire 802.11g USB (v1) / Z-Com */ |
51 {USB_DEVICE(0x1915, 0x2234)}, /* Linksys WUSB54G OEM */ | 62 {USB_DEVICE(0x1915, 0x2234)}, /* Linksys WUSB54G OEM */ |
52 {USB_DEVICE(0x1915, 0x2235)}, /* Linksys WUSB54G Portable OEM */ | 63 {USB_DEVICE(0x1915, 0x2235)}, /* Linksys WUSB54G Portable OEM */ |
53 {USB_DEVICE(0x2001, 0x3701)}, /* DLink DWL-G120 Spinnaker */ | 64 {USB_DEVICE(0x2001, 0x3701)}, /* DLink DWL-G120 Spinnaker */ |
54 {USB_DEVICE(0x2001, 0x3703)}, /* DLink DWL-G122 */ | 65 {USB_DEVICE(0x2001, 0x3703)}, /* DLink DWL-G122 */ |
55 {USB_DEVICE(0x5041, 0x2234)}, /* Linksys WUSB54G */ | 66 {USB_DEVICE(0x5041, 0x2234)}, /* Linksys WUSB54G */ |
56 {USB_DEVICE(0x5041, 0x2235)}, /* Linksys WUSB54G Portable */ | 67 {USB_DEVICE(0x5041, 0x2235)}, /* Linksys WUSB54G Portable */ |
57 | 68 |
58 /* Version 2 devices (3887) */ | 69 /* Version 2 devices (3887) */ |
59 {USB_DEVICE(0x0471, 0x1230)}, /* Philips CPWUA054/00 */ | 70 {USB_DEVICE(0x0471, 0x1230)}, /* Philips CPWUA054/00 */ |
60 {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */ | 71 {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */ |
61 {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */ | 72 {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */ |
62 {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */ | 73 {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */ |
| 74 {USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */ |
63 {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */ | 75 {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */ |
64 {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ | 76 {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ |
65 {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 versio
n 2 */ | 77 {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 versio
n 2 */ |
66 {USB_DEVICE(0x083a, 0xf503)}, /* Accton FD7050E ver 1010ec */ | 78 {USB_DEVICE(0x083a, 0xf503)}, /* Accton FD7050E ver 1010ec */ |
67 {USB_DEVICE(0x0846, 0x4240)}, /* Netgear WG111 (v2) */ | 79 {USB_DEVICE(0x0846, 0x4240)}, /* Netgear WG111 (v2) */ |
68 {USB_DEVICE(0x0915, 0x2000)}, /* Cohiba Proto board */ | 80 {USB_DEVICE(0x0915, 0x2000)}, /* Cohiba Proto board */ |
69 {USB_DEVICE(0x0915, 0x2002)}, /* Cohiba Proto board */ | 81 {USB_DEVICE(0x0915, 0x2002)}, /* Cohiba Proto board */ |
70 {USB_DEVICE(0x0baf, 0x0118)}, /* U.S. Robotics U5 802.11g Adapter*/ | 82 {USB_DEVICE(0x0baf, 0x0118)}, /* U.S. Robotics U5 802.11g Adapter*/ |
71 {USB_DEVICE(0x0bf8, 0x1009)}, /* FUJITSU E-5400 USB D1700*/ | 83 {USB_DEVICE(0x0bf8, 0x1009)}, /* FUJITSU E-5400 USB D1700*/ |
72 /* {USB_DEVICE(0x0cde, 0x0006)}, * Medion MD40900 already listed above, | 84 /* {USB_DEVICE(0x0cde, 0x0006)}, * Medion MD40900 already listed above, |
73 * just noting it here for clarity */ | 85 * just noting it here for clarity */ |
74 {USB_DEVICE(0x0cde, 0x0008)}, /* Sagem XG703A */ | 86 {USB_DEVICE(0x0cde, 0x0008)}, /* Sagem XG703A */ |
75 {USB_DEVICE(0x0cde, 0x0015)}, /* Zcomax XG-705A */ | 87 {USB_DEVICE(0x0cde, 0x0015)}, /* Zcomax XG-705A */ |
76 {USB_DEVICE(0x0d8e, 0x3762)}, /* DLink DWL-G120 Cohiba */ | 88 {USB_DEVICE(0x0d8e, 0x3762)}, /* DLink DWL-G120 Cohiba */ |
77 {USB_DEVICE(0x124a, 0x4025)}, /* IOGear GWU513 (GW3887IK chip) */ | 89 {USB_DEVICE(0x124a, 0x4025)}, /* IOGear GWU513 (GW3887IK chip) */ |
78 {USB_DEVICE(0x1260, 0xee22)}, /* SMC 2862W-G version 2 */ | 90 {USB_DEVICE(0x1260, 0xee22)}, /* SMC 2862W-G version 2 */ |
79 {USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */ | 91 {USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */ |
80 {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ | 92 {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ |
81 {USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */ | 93 {USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */ |
82 {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ | 94 {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ |
| 95 {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */ |
83 {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ | 96 {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ |
84 {USB_DEVICE(0x413c, 0x5513)}, /* Dell WLA3310 USB Wireless Adapter */ | 97 {USB_DEVICE(0x413c, 0x5513)}, /* Dell WLA3310 USB Wireless Adapter */ |
85 {USB_DEVICE(0x413c, 0x8102)}, /* Spinnaker DUT */ | 98 {USB_DEVICE(0x413c, 0x8102)}, /* Spinnaker DUT */ |
86 {USB_DEVICE(0x413c, 0x8104)}, /* Cohiba Proto board */ | 99 {USB_DEVICE(0x413c, 0x8104)}, /* Cohiba Proto board */ |
87 {} | 100 {} |
88 }; | 101 }; |
89 | 102 |
90 MODULE_DEVICE_TABLE(usb, p54u_table); | 103 MODULE_DEVICE_TABLE(usb, p54u_table); |
91 | 104 |
92 static const struct { | 105 static const struct { |
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
923 case P54U_PIPE_INT | USB_DIR_IN: | 936 case P54U_PIPE_INT | USB_DIR_IN: |
924 recognized_pipes++; | 937 recognized_pipes++; |
925 } | 938 } |
926 } | 939 } |
927 priv->common.open = p54u_open; | 940 priv->common.open = p54u_open; |
928 priv->common.stop = p54u_stop; | 941 priv->common.stop = p54u_stop; |
929 if (recognized_pipes < P54U_PIPE_NUMBER) { | 942 if (recognized_pipes < P54U_PIPE_NUMBER) { |
930 #ifdef CONFIG_PM | 943 #ifdef CONFIG_PM |
931 /* ISL3887 needs a full reset on resume */ | 944 /* ISL3887 needs a full reset on resume */ |
932 udev->reset_resume = 1; | 945 udev->reset_resume = 1; |
| 946 #endif /* CONFIG_PM */ |
933 err = p54u_device_reset(dev); | 947 err = p54u_device_reset(dev); |
934 #endif | |
935 | 948 |
936 priv->hw_type = P54U_3887; | 949 priv->hw_type = P54U_3887; |
937 dev->extra_tx_headroom += sizeof(struct lm87_tx_hdr); | 950 dev->extra_tx_headroom += sizeof(struct lm87_tx_hdr); |
938 priv->common.tx_hdr_len = sizeof(struct lm87_tx_hdr); | 951 priv->common.tx_hdr_len = sizeof(struct lm87_tx_hdr); |
939 priv->common.tx = p54u_tx_lm87; | 952 priv->common.tx = p54u_tx_lm87; |
940 priv->upload_fw = p54u_upload_firmware_3887; | 953 priv->upload_fw = p54u_upload_firmware_3887; |
941 } else { | 954 } else { |
942 priv->hw_type = P54U_NET2280; | 955 priv->hw_type = P54U_NET2280; |
943 dev->extra_tx_headroom += sizeof(struct net2280_tx_hdr); | 956 dev->extra_tx_headroom += sizeof(struct net2280_tx_hdr); |
944 priv->common.tx_hdr_len = sizeof(struct net2280_tx_hdr); | 957 priv->common.tx_hdr_len = sizeof(struct net2280_tx_hdr); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1066 return usb_register(&p54u_driver); | 1079 return usb_register(&p54u_driver); |
1067 } | 1080 } |
1068 | 1081 |
1069 static void __exit p54u_exit(void) | 1082 static void __exit p54u_exit(void) |
1070 { | 1083 { |
1071 usb_deregister(&p54u_driver); | 1084 usb_deregister(&p54u_driver); |
1072 } | 1085 } |
1073 | 1086 |
1074 module_init(p54u_init); | 1087 module_init(p54u_init); |
1075 module_exit(p54u_exit); | 1088 module_exit(p54u_exit); |
OLD | NEW |