diff options
Diffstat (limited to 'drivers/usb/serial/ftdi_sio.c')
-rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 222 |
1 files changed, 2 insertions, 220 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 7200eaeb513b..2c142bb04fe1 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -17,226 +17,8 @@ | |||
17 | * See http://ftdi-usb-sio.sourceforge.net for upto date testing info | 17 | * See http://ftdi-usb-sio.sourceforge.net for upto date testing info |
18 | * and extra documentation | 18 | * and extra documentation |
19 | * | 19 | * |
20 | * (21/Jul/2004) Ian Abbott | 20 | * Change entries from 2004 and earlier can be found in versions of this |
21 | * Incorporated Steven Turner's code to add support for the FT2232C chip. | 21 | * file in kernel versions prior to the 2.6.24 release. |
22 | * The prelimilary port to the 2.6 kernel was by Rus V. Brushkoff. I have | ||
23 | * fixed a couple of things. | ||
24 | * | ||
25 | * (27/May/2004) Ian Abbott | ||
26 | * Improved throttling code, mostly stolen from the WhiteHEAT driver. | ||
27 | * | ||
28 | * (26/Mar/2004) Jan Capek | ||
29 | * Added PID's for ICD-U20/ICD-U40 - incircuit PIC debuggers from CCS Inc. | ||
30 | * | ||
31 | * (09/Feb/2004) Ian Abbott | ||
32 | * Changed full name of USB-UIRT device to avoid "/" character. | ||
33 | * Added FTDI's alternate PID (0x6006) for FT232/245 devices. | ||
34 | * Added PID for "ELV USB Module UO100" from Stefan Frings. | ||
35 | * | ||
36 | * (21/Oct/2003) Ian Abbott | ||
37 | * Renamed some VID/PID macros for Matrix Orbital and Perle Systems | ||
38 | * devices. Removed Matrix Orbital and Perle Systems devices from the | ||
39 | * 8U232AM device table, but left them in the FT232BM table, as they are | ||
40 | * known to use only FT232BM. | ||
41 | * | ||
42 | * (17/Oct/2003) Scott Allen | ||
43 | * Added vid/pid for Perle Systems UltraPort USB serial converters | ||
44 | * | ||
45 | * (21/Sep/2003) Ian Abbott | ||
46 | * Added VID/PID for Omnidirectional Control Technology US101 USB to | ||
47 | * RS-232 adapter (also rebadged as Dick Smith Electronics XH6381). | ||
48 | * VID/PID supplied by Donald Gordon. | ||
49 | * | ||
50 | * (19/Aug/2003) Ian Abbott | ||
51 | * Freed urb's transfer buffer in write bulk callback. | ||
52 | * Omitted some paranoid checks in write bulk callback that don't matter. | ||
53 | * Scheduled work in write bulk callback regardless of port's open count. | ||
54 | * | ||
55 | * (05/Aug/2003) Ian Abbott | ||
56 | * Added VID/PID for ID TECH IDT1221U USB to RS-232 adapter. | ||
57 | * VID/PID provided by Steve Briggs. | ||
58 | * | ||
59 | * (23/Jul/2003) Ian Abbott | ||
60 | * Added PIDs for CrystalFontz 547, 633, 631, 635, 640 and 640 from | ||
61 | * Wayne Wylupski. | ||
62 | * | ||
63 | * (10/Jul/2003) David Glance | ||
64 | * Added PID for DSS-20 SyncStation cradle for Sony-Ericsson P800. | ||
65 | * | ||
66 | * (27/Jun/2003) Ian Abbott | ||
67 | * Reworked the urb handling logic. We have no more pool, but dynamically | ||
68 | * allocate the urb and the transfer buffer on the fly. In testing this | ||
69 | * does not incure any measurable overhead. This also relies on the fact | ||
70 | * that we have proper reference counting logic for urbs. I nicked this | ||
71 | * from Greg KH's Visor driver. | ||
72 | * | ||
73 | * (23/Jun/2003) Ian Abbott | ||
74 | * Reduced flip buffer pushes and corrected a data length test in | ||
75 | * ftdi_read_bulk_callback. | ||
76 | * Defererence pointers after any paranoid checks, not before. | ||
77 | * | ||
78 | * (21/Jun/2003) Erik Nygren | ||
79 | * Added support for Home Electronics Tira-1 IR transceiver using FT232BM chip. | ||
80 | * See <http://www.home-electro.com/tira1.htm>. Only operates properly | ||
81 | * at 100000 and RTS-CTS, so set custom divisor mode on startup. | ||
82 | * Also force the Tira-1 and USB-UIRT to only use their custom baud rates. | ||
83 | * | ||
84 | * (18/Jun/2003) Ian Abbott | ||
85 | * Added Device ID of the USB relais from Rudolf Gugler (backported from | ||
86 | * Philipp Gühring's patch for 2.5.x kernel). | ||
87 | * Moved read transfer buffer reallocation into startup function. | ||
88 | * Free existing write urb and transfer buffer in startup function. | ||
89 | * Only use urbs in write urb pool that were successfully allocated. | ||
90 | * Moved some constant macros out of functions. | ||
91 | * Minor whitespace and comment changes. | ||
92 | * | ||
93 | * (12/Jun/2003) David Norwood | ||
94 | * Added support for USB-UIRT IR transceiver using 8U232AM chip. | ||
95 | * See <http://home.earthlink.net/~jrhees/USBUIRT/index.htm>. Only | ||
96 | * operates properly at 312500, so set custom divisor mode on startup. | ||
97 | * | ||
98 | * (12/Jun/2003) Ian Abbott | ||
99 | * Added Sealevel SeaLINK+ 210x, 220x, 240x, 280x vid/pids from Tuan Hoang | ||
100 | * - I've eliminated some that don't seem to exist! | ||
101 | * Added Home Electronics Tira-1 IR transceiver pid from Chris Horn | ||
102 | * Some whitespace/coding-style cleanups | ||
103 | * | ||
104 | * (11/Jun/2003) Ian Abbott | ||
105 | * Fixed unsafe spinlock usage in ftdi_write | ||
106 | * | ||
107 | * (24/Feb/2003) Richard Shooter | ||
108 | * Increase read buffer size to improve read speeds at higher baud rates | ||
109 | * (specifically tested with up to 1Mb/sec at 1.5M baud) | ||
110 | * | ||
111 | * (23/Feb/2003) John Wilkins | ||
112 | * Added Xon/xoff flow control (activating support in the ftdi device) | ||
113 | * Added vid/pid for Videonetworks/Homechoice (UK ISP) | ||
114 | * | ||
115 | * (23/Feb/2003) Bill Ryder | ||
116 | * Added matrix orb device vid/pids from Wayne Wylupski | ||
117 | * | ||
118 | * (19/Feb/2003) Ian Abbott | ||
119 | * For TIOCSSERIAL, set alt_speed to 0 when ASYNC_SPD_MASK value has | ||
120 | * changed to something other than ASYNC_SPD_HI, ASYNC_SPD_VHI, | ||
121 | * ASYNC_SPD_SHI or ASYNC_SPD_WARP. Also, unless ASYNC_SPD_CUST is in | ||
122 | * force, don't bother changing baud rate when custom_divisor has changed. | ||
123 | * | ||
124 | * (18/Feb/2003) Ian Abbott | ||
125 | * Fixed TIOCMGET handling to include state of DTR and RTS, the state | ||
126 | * of which are now saved by set_dtr() and set_rts(). | ||
127 | * Fixed improper storage class for buf in set_dtr() and set_rts(). | ||
128 | * Added FT232BM chip type and support for its extra baud rates (compared | ||
129 | * to FT8U232AM). | ||
130 | * Took account of special case divisor values for highest baud rates of | ||
131 | * FT8U232AM and FT232BM. | ||
132 | * For TIOCSSERIAL, forced alt_speed to 0 when ASYNC_SPD_CUST kludge used, | ||
133 | * as previous alt_speed setting is now stale. | ||
134 | * Moved startup code common between the startup routines for the | ||
135 | * different chip types into a common subroutine. | ||
136 | * | ||
137 | * (17/Feb/2003) Bill Ryder | ||
138 | * Added write urb buffer pool on a per device basis | ||
139 | * Added more checking for open file on callbacks (fixed OOPS) | ||
140 | * Added CrystalFontz 632 and 634 PIDs | ||
141 | * (thanx to CrystalFontz for the sample devices - they flushed out | ||
142 | * some driver bugs) | ||
143 | * Minor debugging message changes | ||
144 | * Added throttle, unthrottle and chars_in_buffer functions | ||
145 | * Fixed FTDI_SIO (the original device) bug | ||
146 | * Fixed some shutdown handling | ||
147 | * | ||
148 | * | ||
149 | * | ||
150 | * | ||
151 | * (07/Jun/2002) Kuba Ober | ||
152 | * Changed FTDI_SIO_BASE_BAUD_TO_DIVISOR macro into ftdi_baud_to_divisor | ||
153 | * function. It was getting too complex. | ||
154 | * Fix the divisor calculation logic which was setting divisor of 0.125 | ||
155 | * instead of 0.5 for fractional parts of divisor equal to 5/8, 6/8, 7/8. | ||
156 | * Also make it bump up the divisor to next integer in case of 7/8 - it's | ||
157 | * a better approximation. | ||
158 | * | ||
159 | * (25/Jul/2002) Bill Ryder inserted Dmitri's TIOCMIWAIT patch | ||
160 | * Not tested by me but it doesn't break anything I use. | ||
161 | * | ||
162 | * (04/Jan/2002) Kuba Ober | ||
163 | * Implemented 38400 baudrate kludge, where it can be substituted with other | ||
164 | * values. That's the only way to set custom baudrates. | ||
165 | * Implemented TIOCSSERIAL, TIOCGSERIAL ioctl's so that setserial is happy. | ||
166 | * FIXME: both baudrate things should eventually go to usbserial.c as other | ||
167 | * devices may need that functionality too. Actually, it can probably be | ||
168 | * merged in serial.c somehow - too many drivers repeat this code over | ||
169 | * and over. | ||
170 | * Fixed baudrate forgetfulness - open() used to reset baudrate to 9600 every time. | ||
171 | * Divisors for baudrates are calculated by a macro. | ||
172 | * Small code cleanups. Ugly whitespace changes for Plato's sake only ;-]. | ||
173 | * | ||
174 | * (04/Nov/2001) Bill Ryder | ||
175 | * Fixed bug in read_bulk_callback where incorrect urb buffer was used. | ||
176 | * Cleaned up write offset calculation | ||
177 | * Added write_room since default values can be incorrect for sio | ||
178 | * Changed write_bulk_callback to use same queue_task as other drivers | ||
179 | * (the previous version caused panics) | ||
180 | * Removed port iteration code since the device only has one I/O port and it | ||
181 | * was wrong anyway. | ||
182 | * | ||
183 | * (31/May/2001) gkh | ||
184 | * Switched from using spinlock to a semaphore, which fixes lots of problems. | ||
185 | * | ||
186 | * (23/May/2001) Bill Ryder | ||
187 | * Added runtime debug patch (thanx Tyson D Sawyer). | ||
188 | * Cleaned up comments for 8U232 | ||
189 | * Added parity, framing and overrun error handling | ||
190 | * Added receive break handling. | ||
191 | * | ||
192 | * (04/08/2001) gb | ||
193 | * Identify version on module load. | ||
194 | * | ||
195 | * (18/March/2001) Bill Ryder | ||
196 | * (Not released) | ||
197 | * Added send break handling. (requires kernel patch too) | ||
198 | * Fixed 8U232AM hardware RTS/CTS etc status reporting. | ||
199 | * Added flipbuf fix copied from generic device | ||
200 | * | ||
201 | * (12/3/2000) Bill Ryder | ||
202 | * Added support for 8U232AM device. | ||
203 | * Moved PID and VIDs into header file only. | ||
204 | * Turned on low-latency for the tty (device will do high baudrates) | ||
205 | * Added shutdown routine to close files when device removed. | ||
206 | * More debug and error message cleanups. | ||
207 | * | ||
208 | * (11/13/2000) Bill Ryder | ||
209 | * Added spinlock protected open code and close code. | ||
210 | * Multiple opens work (sort of - see webpage mentioned above). | ||
211 | * Cleaned up comments. Removed multiple PID/VID definitions. | ||
212 | * Factorised cts/dtr code | ||
213 | * Made use of __FUNCTION__ in dbg's | ||
214 | * | ||
215 | * (11/01/2000) Adam J. Richter | ||
216 | * usb_device_id table support | ||
217 | * | ||
218 | * (10/05/2000) gkh | ||
219 | * Fixed bug with urb->dev not being set properly, now that the usb | ||
220 | * core needs it. | ||
221 | * | ||
222 | * (09/11/2000) gkh | ||
223 | * Removed DEBUG #ifdefs with call to usb_serial_debug_data | ||
224 | * | ||
225 | * (07/19/2000) gkh | ||
226 | * Added module_init and module_exit functions to handle the fact that this | ||
227 | * driver is a loadable module now. | ||
228 | * | ||
229 | * (04/04/2000) Bill Ryder | ||
230 | * Fixed bugs in TCGET/TCSET ioctls (by removing them - they are | ||
231 | * handled elsewhere in the tty io driver chain). | ||
232 | * | ||
233 | * (03/30/2000) Bill Ryder | ||
234 | * Implemented lots of ioctls | ||
235 | * Fixed a race condition in write | ||
236 | * Changed some dbg's to errs | ||
237 | * | ||
238 | * (03/26/2000) gkh | ||
239 | * Split driver up into device specific pieces. | ||
240 | * | 22 | * |
241 | */ | 23 | */ |
242 | 24 | ||