diff options
author | Paul Mackerras <paulus@samba.org> | 2005-10-30 21:37:12 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-10-30 21:37:12 -0500 |
commit | 23fd07750a789a66fe88cf173d52a18f1a387da4 (patch) | |
tree | 06fdd6df35fdb835abdaa9b754d62f6b84b97250 /drivers/usb/serial/visor.c | |
parent | bd787d438a59266af3c9f6351644c85ef1dd21fe (diff) | |
parent | ed28f96ac1960f30f818374d65be71d2fdf811b0 (diff) |
Merge ../linux-2.6 by hand
Diffstat (limited to 'drivers/usb/serial/visor.c')
-rw-r--r-- | drivers/usb/serial/visor.c | 170 |
1 files changed, 23 insertions, 147 deletions
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 31c57adcb623..a473c1c34559 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c | |||
@@ -7,139 +7,10 @@ | |||
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License as published by | 9 | * it under the terms of the GNU General Public License as published by |
10 | * the Free Software Foundation; either version 2 of the License, or | 10 | * the Free Software Foundation; either version 2 of the License. |
11 | * (at your option) any later version. | ||
12 | * | 11 | * |
13 | * See Documentation/usb/usb-serial.txt for more information on using this driver | 12 | * See Documentation/usb/usb-serial.txt for more information on using this driver |
14 | * | 13 | * |
15 | * (06/03/2003) Judd Montgomery <judd at jpilot.org> | ||
16 | * Added support for module parameter options for untested/unknown | ||
17 | * devices. | ||
18 | * | ||
19 | * (03/09/2003) gkh | ||
20 | * Added support for the Sony Clie NZ90V device. Thanks to Martin Brachtl | ||
21 | * <brachtl@redgrep.cz> for the information. | ||
22 | * | ||
23 | * (03/05/2003) gkh | ||
24 | * Think Treo support is now working. | ||
25 | * | ||
26 | * (04/03/2002) gkh | ||
27 | * Added support for the Sony OS 4.1 devices. Thanks to Hiroyuki ARAKI | ||
28 | * <hiro@zob.ne.jp> for the information. | ||
29 | * | ||
30 | * (03/27/2002) gkh | ||
31 | * Removed assumptions that port->tty was always valid (is not true | ||
32 | * for usb serial console devices.) | ||
33 | * | ||
34 | * (03/23/2002) gkh | ||
35 | * Added support for the Palm i705 device, thanks to Thomas Riemer | ||
36 | * <tom@netmech.com> for the information. | ||
37 | * | ||
38 | * (03/21/2002) gkh | ||
39 | * Added support for the Palm m130 device, thanks to Udo Eisenbarth | ||
40 | * <udo.eisenbarth@web.de> for the information. | ||
41 | * | ||
42 | * (02/27/2002) gkh | ||
43 | * Reworked the urb handling logic. We have no more pool, but dynamically | ||
44 | * allocate the urb and the transfer buffer on the fly. In testing this | ||
45 | * does not incure any measurable overhead. This also relies on the fact | ||
46 | * that we have proper reference counting logic for urbs. | ||
47 | * | ||
48 | * (02/21/2002) SilaS | ||
49 | * Added initial support for the Palm m515 devices. | ||
50 | * | ||
51 | * (02/14/2002) gkh | ||
52 | * Added support for the Clie S-360 device. | ||
53 | * | ||
54 | * (12/18/2001) gkh | ||
55 | * Added better Clie support for 3.5 devices. Thanks to Geoffrey Levand | ||
56 | * for the patch. | ||
57 | * | ||
58 | * (11/11/2001) gkh | ||
59 | * Added support for the m125 devices, and added check to prevent oopses | ||
60 | * for Clié devices that lie about the number of ports they have. | ||
61 | * | ||
62 | * (08/30/2001) gkh | ||
63 | * Added support for the Clie devices, both the 3.5 and 4.0 os versions. | ||
64 | * Many thanks to Daniel Burke, and Bryan Payne for helping with this. | ||
65 | * | ||
66 | * (08/23/2001) gkh | ||
67 | * fixed a few potential bugs pointed out by Oliver Neukum. | ||
68 | * | ||
69 | * (05/30/2001) gkh | ||
70 | * switched from using spinlock to a semaphore, which fixes lots of problems. | ||
71 | * | ||
72 | * (05/28/2000) gkh | ||
73 | * Added initial support for the Palm m500 and Palm m505 devices. | ||
74 | * | ||
75 | * (04/08/2001) gb | ||
76 | * Identify version on module load. | ||
77 | * | ||
78 | * (01/21/2000) gkh | ||
79 | * Added write_room and chars_in_buffer, as they were previously using the | ||
80 | * generic driver versions which is all wrong now that we are using an urb | ||
81 | * pool. Thanks to Wolfgang Grandegger for pointing this out to me. | ||
82 | * Removed count assignment in the write function, which was not needed anymore | ||
83 | * either. Thanks to Al Borchers for pointing this out. | ||
84 | * | ||
85 | * (12/12/2000) gkh | ||
86 | * Moved MOD_DEC to end of visor_close to be nicer, as the final write | ||
87 | * message can sleep. | ||
88 | * | ||
89 | * (11/12/2000) gkh | ||
90 | * Fixed bug with data being dropped on the floor by forcing tty->low_latency | ||
91 | * to be on. Hopefully this fixes the OHCI issue! | ||
92 | * | ||
93 | * (11/01/2000) Adam J. Richter | ||
94 | * usb_device_id table support | ||
95 | * | ||
96 | * (10/05/2000) gkh | ||
97 | * Fixed bug with urb->dev not being set properly, now that the usb | ||
98 | * core needs it. | ||
99 | * | ||
100 | * (09/11/2000) gkh | ||
101 | * Got rid of always calling kmalloc for every urb we wrote out to the | ||
102 | * device. | ||
103 | * Added visor_read_callback so we can keep track of bytes in and out for | ||
104 | * those people who like to know the speed of their device. | ||
105 | * Removed DEBUG #ifdefs with call to usb_serial_debug_data | ||
106 | * | ||
107 | * (09/06/2000) gkh | ||
108 | * Fixed oops in visor_exit. Need to uncomment usb_unlink_urb call _after_ | ||
109 | * the host controller drivers set urb->dev = NULL when the urb is finished. | ||
110 | * | ||
111 | * (08/28/2000) gkh | ||
112 | * Added locks for SMP safeness. | ||
113 | * | ||
114 | * (08/08/2000) gkh | ||
115 | * Fixed endian problem in visor_startup. | ||
116 | * Fixed MOD_INC and MOD_DEC logic and the ability to open a port more | ||
117 | * than once. | ||
118 | * | ||
119 | * (07/23/2000) gkh | ||
120 | * Added pool of write urbs to speed up transfers to the visor. | ||
121 | * | ||
122 | * (07/19/2000) gkh | ||
123 | * Added module_init and module_exit functions to handle the fact that this | ||
124 | * driver is a loadable module now. | ||
125 | * | ||
126 | * (07/03/2000) gkh | ||
127 | * Added visor_set_ioctl and visor_set_termios functions (they don't do much | ||
128 | * of anything, but are good for debugging.) | ||
129 | * | ||
130 | * (06/25/2000) gkh | ||
131 | * Fixed bug in visor_unthrottle that should help with the disconnect in PPP | ||
132 | * bug that people have been reporting. | ||
133 | * | ||
134 | * (06/23/2000) gkh | ||
135 | * Cleaned up debugging statements in a quest to find UHCI timeout bug. | ||
136 | * | ||
137 | * (04/27/2000) Ryan VanderBijl | ||
138 | * Fixed memory leak in visor_close | ||
139 | * | ||
140 | * (03/26/2000) gkh | ||
141 | * Split driver up into device specific pieces. | ||
142 | * | ||
143 | */ | 14 | */ |
144 | 15 | ||
145 | #include <linux/config.h> | 16 | #include <linux/config.h> |
@@ -161,7 +32,6 @@ | |||
161 | /* | 32 | /* |
162 | * Version Information | 33 | * Version Information |
163 | */ | 34 | */ |
164 | #define DRIVER_VERSION "v2.1" | ||
165 | #define DRIVER_AUTHOR "Greg Kroah-Hartman <greg@kroah.com>" | 35 | #define DRIVER_AUTHOR "Greg Kroah-Hartman <greg@kroah.com>" |
166 | #define DRIVER_DESC "USB HandSpring Visor / Palm OS driver" | 36 | #define DRIVER_DESC "USB HandSpring Visor / Palm OS driver" |
167 | 37 | ||
@@ -311,10 +181,12 @@ static struct usb_driver visor_driver = { | |||
311 | }; | 181 | }; |
312 | 182 | ||
313 | /* All of the device info needed for the Handspring Visor, and Palm 4.0 devices */ | 183 | /* All of the device info needed for the Handspring Visor, and Palm 4.0 devices */ |
314 | static struct usb_serial_device_type handspring_device = { | 184 | static struct usb_serial_driver handspring_device = { |
315 | .owner = THIS_MODULE, | 185 | .driver = { |
316 | .name = "Handspring Visor / Palm OS", | 186 | .owner = THIS_MODULE, |
317 | .short_name = "visor", | 187 | .name = "visor", |
188 | }, | ||
189 | .description = "Handspring Visor / Palm OS", | ||
318 | .id_table = id_table, | 190 | .id_table = id_table, |
319 | .num_interrupt_in = NUM_DONT_CARE, | 191 | .num_interrupt_in = NUM_DONT_CARE, |
320 | .num_bulk_in = 2, | 192 | .num_bulk_in = 2, |
@@ -339,10 +211,12 @@ static struct usb_serial_device_type handspring_device = { | |||
339 | }; | 211 | }; |
340 | 212 | ||
341 | /* All of the device info needed for the Clie UX50, TH55 Palm 5.0 devices */ | 213 | /* All of the device info needed for the Clie UX50, TH55 Palm 5.0 devices */ |
342 | static struct usb_serial_device_type clie_5_device = { | 214 | static struct usb_serial_driver clie_5_device = { |
343 | .owner = THIS_MODULE, | 215 | .driver = { |
344 | .name = "Sony Clie 5.0", | 216 | .owner = THIS_MODULE, |
345 | .short_name = "clie_5", | 217 | .name = "clie_5", |
218 | }, | ||
219 | .description = "Sony Clie 5.0", | ||
346 | .id_table = clie_id_5_table, | 220 | .id_table = clie_id_5_table, |
347 | .num_interrupt_in = NUM_DONT_CARE, | 221 | .num_interrupt_in = NUM_DONT_CARE, |
348 | .num_bulk_in = 2, | 222 | .num_bulk_in = 2, |
@@ -367,10 +241,12 @@ static struct usb_serial_device_type clie_5_device = { | |||
367 | }; | 241 | }; |
368 | 242 | ||
369 | /* device info for the Sony Clie OS version 3.5 */ | 243 | /* device info for the Sony Clie OS version 3.5 */ |
370 | static struct usb_serial_device_type clie_3_5_device = { | 244 | static struct usb_serial_driver clie_3_5_device = { |
371 | .owner = THIS_MODULE, | 245 | .driver = { |
372 | .name = "Sony Clie 3.5", | 246 | .owner = THIS_MODULE, |
373 | .short_name = "clie_3.5", | 247 | .name = "clie_3.5", |
248 | }, | ||
249 | .description = "Sony Clie 3.5", | ||
374 | .id_table = clie_id_3_5_table, | 250 | .id_table = clie_id_3_5_table, |
375 | .num_interrupt_in = 0, | 251 | .num_interrupt_in = 0, |
376 | .num_bulk_in = 1, | 252 | .num_bulk_in = 1, |
@@ -782,7 +658,7 @@ static int palm_os_3_probe (struct usb_serial *serial, const struct usb_device_i | |||
782 | break; | 658 | break; |
783 | } | 659 | } |
784 | dev_info(dev, "%s: port %d, is for %s use\n", | 660 | dev_info(dev, "%s: port %d, is for %s use\n", |
785 | serial->type->name, | 661 | serial->type->description, |
786 | connection_info->connections[i].port, string); | 662 | connection_info->connections[i].port, string); |
787 | } | 663 | } |
788 | } | 664 | } |
@@ -791,11 +667,11 @@ static int palm_os_3_probe (struct usb_serial *serial, const struct usb_device_i | |||
791 | */ | 667 | */ |
792 | if (num_ports == 0 || num_ports > 2) { | 668 | if (num_ports == 0 || num_ports > 2) { |
793 | dev_warn (dev, "%s: No valid connect info available\n", | 669 | dev_warn (dev, "%s: No valid connect info available\n", |
794 | serial->type->name); | 670 | serial->type->description); |
795 | num_ports = 2; | 671 | num_ports = 2; |
796 | } | 672 | } |
797 | 673 | ||
798 | dev_info(dev, "%s: Number of ports: %d\n", serial->type->name, | 674 | dev_info(dev, "%s: Number of ports: %d\n", serial->type->description, |
799 | num_ports); | 675 | num_ports); |
800 | 676 | ||
801 | /* | 677 | /* |
@@ -1125,7 +1001,7 @@ static int __init visor_init (void) | |||
1125 | retval = usb_register(&visor_driver); | 1001 | retval = usb_register(&visor_driver); |
1126 | if (retval) | 1002 | if (retval) |
1127 | goto failed_usb_register; | 1003 | goto failed_usb_register; |
1128 | info(DRIVER_DESC " " DRIVER_VERSION); | 1004 | info(DRIVER_DESC); |
1129 | 1005 | ||
1130 | return 0; | 1006 | return 0; |
1131 | failed_usb_register: | 1007 | failed_usb_register: |