xref: /netbsd-src/sys/dev/pci/pucdata.c (revision d48f14661dda8638fee055ba15d35bdfb29b9fa8)
1 /*	$NetBSD: pucdata.c,v 1.45 2006/06/11 11:22:35 bouyer Exp $	*/
2 
3 /*
4  * Copyright (c) 1998, 1999 Christopher G. Demetriou.  All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. All advertising materials mentioning features or use of this software
15  *    must display the following acknowledgement:
16  *      This product includes software developed by Christopher G. Demetriou
17  *	for the NetBSD Project.
18  * 4. The name of the author may not be used to endorse or promote products
19  *    derived from this software without specific prior written permission
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 /*
34  * PCI "universal" communications card driver configuration data (used to
35  * match/attach the cards).
36  */
37 
38 #include <sys/cdefs.h>
39 __KERNEL_RCSID(0, "$NetBSD: pucdata.c,v 1.45 2006/06/11 11:22:35 bouyer Exp $");
40 
41 #include <sys/param.h>
42 #include <sys/systm.h>
43 #include <sys/device.h>
44 
45 #include <dev/pci/pcireg.h>
46 #include <dev/pci/pcivar.h>
47 #include <dev/pci/pucvar.h>
48 #include <dev/ic/comreg.h>
49 
50 const struct puc_device_description puc_devices[] = {
51 	/*
52 	 * SUNIX 40XX series of serial/parallel combo cards.
53 	 * Tested with 4055A and 4065A.
54 	 */
55 	{   "SUNIX 400X 1P",
56 	    {	0x1409,	0x7168,	0x1409,	0x4000 },
57 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
58 	    {
59 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
60 	    },
61 	},
62 
63 	{   "SUNIX 401X 2P",
64 	    {	0x1409,	0x7168,	0x1409,	0x4010 },
65 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
66 	    {
67 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
68 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
69 	    },
70 	},
71 
72 	{   "SUNIX 402X 1S",
73 	    {	0x1409,	0x7168,	0x1409,	0x4020 },
74 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
75 	    {
76 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
77 	    },
78 	},
79 
80 	{   "SUNIX 403X 2S",
81 	    {	0x1409,	0x7168,	0x1409,	0x4030 },
82 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
83 	    {
84 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
85 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
86 	    },
87 	},
88 
89 	{   "SUNIX 405X 4S",
90 	    {	0x1409,	0x7168,	0x1409,	0x4050 },
91 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
92 	    {
93 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
94 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
95 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ},
96 		{ PUC_PORT_TYPE_COM, 0x14, 0x08, COM_FREQ},
97 	    },
98 	},
99 
100 	{   "SUNIX 406X 8S",
101 	    {	0x1409,	0x7168,	0x1409,	0x4060 },
102 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
103 	    {
104 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
105 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
106 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ},
107 		{ PUC_PORT_TYPE_COM, 0x14, 0x08, COM_FREQ},
108 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ},
109 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ},
110 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ},
111 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ},
112 	    },
113 	},
114 
115 	{   "SUNIX 407X 2S/1P",
116 	    {	0x1409,	0x7168,	0x1409,	0x4070 },
117 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
118 	    {
119 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
120 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
121 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
122 	    },
123 	},
124 
125 	{   "SUNIX 408X 2S/2P",
126 	    {	0x1409,	0x7168,	0x1409,	0x4080 },
127 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
128 	    {
129 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
130 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
131 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
132 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
133 	    },
134 	},
135 
136 	{   "SUNIX 409X 4S/2P",
137 	    {	0x1409,	0x7168,	0x1409,	0x4090 },
138 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
139 	    {
140 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
141 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
142 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ},
143 		{ PUC_PORT_TYPE_COM, 0x14, 0x08, COM_FREQ},
144 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
145 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
146 	    },
147 	},
148 
149 	/*
150 	 * XXX no entry because I have no data:
151 	 * XXX Dolphin Peripherals 4006 (single parallel)
152 	 */
153 
154 	/*
155 	 * Dolphin Peripherals 4014 (dual parallel port) card.  PLX 9050, with
156 	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
157 	 * into the subsystem fields, and claims that it's a
158 	 * network/misc (0x02/0x80) device.
159 	 */
160 	{   "Dolphin Peripherals 4014",
161 	    {	0x10b5,	0x9050,	0xd84d,	0x6810	},
162 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
163 	    {
164 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
165 		{ PUC_PORT_TYPE_LPT, 0x24, 0x00, 0x00 },
166 	    },
167 	},
168 
169 	/*
170 	 * XXX Dolphin Peripherals 4025 (single serial)
171 	 * (clashes with Dolphin Peripherals  4036 (2s variant)
172 	 */
173 
174 	/*
175 	 * Dolphin Peripherals 4035 (dual serial port) card.  PLX 9050, with
176 	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
177 	 * into the subsystem fields, and claims that it's a
178 	 * network/misc (0x02/0x80) device.
179 	 */
180 	{   "Dolphin Peripherals 4035",
181 	    {	0x10b5,	0x9050,	0xd84d,	0x6808	},
182 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
183 	    {
184 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
185 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
186 	    },
187 	},
188 
189 	/*
190 	 * Dolphin Peripherals 4036 (dual serial port) card.
191 	 * (Dolpin 4025 has the same ID but only one port)
192 	 */
193 	{   "Dolphin Peripherals 4036",
194 	    {	0x1409,	0x7168,	0x0,	0x0	},
195 	    {	0xffff,	0xffff,	0x0,	0x0	},
196 	    {
197 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
198 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
199 	    },
200 	},
201 
202 	/*
203 	 * XXX no entry because I have no data:
204 	 * XXX Dolphin Peripherals 4078 (dual serial and single parallel)
205 	 */
206 
207 
208 	/*
209 	 * SIIG Boards.
210 	 *
211 	 * SIIG provides documentation for their boards at:
212 	 * <URL:http://www.siig.com/driver.htm>
213 	 *
214 	 * Please excuse the weird ordering, it's the order they
215 	 * use in their documentation.
216 	 */
217 
218 	/*
219 	 * SIIG "10x" family boards.
220 	 */
221 
222 	/* SIIG Cyber Serial PCI 16C550 (10x family): 1S */
223 	{   "SIIG Cyber Serial PCI 16C550 (10x family)",
224 	    {	0x131f,	0x1000,	0,	0	},
225 	    {	0xffff,	0xffff,	0,	0	},
226 	    {
227 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
228 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR1 },
229 	    },
230 	},
231 
232 	/* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
233 	{   "SIIG Cyber Serial PCI 16C650 (10x family)",
234 	    {	0x131f,	0x1001,	0,	0	},
235 	    {	0xffff,	0xffff,	0,	0	},
236 	    {
237 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
238 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR1 },
239 	    },
240 	},
241 
242 	/* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
243 	{   "SIIG Cyber Serial PCI 16C850 (10x family)",
244 	    {	0x131f,	0x1002,	0,	0	},
245 	    {	0xffff,	0xffff,	0,	0	},
246 	    {
247 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
248 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR1 },
249 	    },
250 	},
251 
252 	/* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
253 	{   "SIIG Cyber I/O PCI 16C550 (10x family)",
254 	    {	0x131f,	0x1010,	0,	0	},
255 	    {	0xffff,	0xffff,	0,	0	},
256 	    {
257 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
258 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
259 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
260 	    },
261 	},
262 
263 	/* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
264 	{   "SIIG Cyber I/O PCI 16C650 (10x family)",
265 	    {	0x131f,	0x1011,	0,	0	},
266 	    {	0xffff,	0xffff,	0,	0	},
267 	    {
268 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
269 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
270 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
271 	    },
272 	},
273 
274 	/* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
275 	{   "SIIG Cyber I/O PCI 16C850 (10x family)",
276 	    {	0x131f,	0x1012,	0,	0	},
277 	    {	0xffff,	0xffff,	0,	0	},
278 	    {
279 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
280 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
281 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
282 	    },
283 	},
284 
285 	/* SIIG Cyber Parallel PCI (10x family): 1P */
286 	{   "SIIG Cyber Parallel PCI (10x family)",
287 	    {	0x131f,	0x1020,	0,	0	},
288 	    {	0xffff,	0xffff,	0,	0	},
289 	    {
290 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
291 	    },
292 	},
293 
294 	/* SIIG Cyber Parallel Dual PCI (10x family): 2P */
295 	{   "SIIG Cyber Parallel Dual PCI (10x family)",
296 	    {	0x131f,	0x1021,	0,	0	},
297 	    {	0xffff,	0xffff,	0,	0	},
298 	    {
299 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
300 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
301 	    },
302 	},
303 
304 	/* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
305 	{   "SIIG Cyber Serial Dual PCI 16C550 (10x family)",
306 	    {	0x131f,	0x1030,	0,	0	},
307 	    {	0xffff,	0xffff,	0,	0	},
308 	    {
309 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
310 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
311 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
312 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
313 	    },
314 	},
315 
316 	/* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
317 	{   "SIIG Cyber Serial Dual PCI 16C650 (10x family)",
318 	    {	0x131f,	0x1031,	0,	0	},
319 	    {	0xffff,	0xffff,	0,	0	},
320 	    {
321 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
322 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
323 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
324 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
325 	    },
326 	},
327 
328 	/* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
329 	{   "SIIG Cyber Serial Dual PCI 16C850 (10x family)",
330 	    {	0x131f,	0x1032,	0,	0	},
331 	    {	0xffff,	0xffff,	0,	0	},
332 	    {
333 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
334 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
335 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
336 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
337 	    },
338 	},
339 
340 	/* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
341 	{   "SIIG Cyber 2S1P PCI 16C550 (10x family)",
342 	    {	0x131f,	0x1034,	0,	0	},	/* XXX really? */
343 	    {	0xffff,	0xffff,	0,	0	},
344 	    {
345 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
346 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
347 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
348 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
349 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
350 	    },
351 	},
352 
353 	/* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
354 	{   "SIIG Cyber 2S1P PCI 16C650 (10x family)",
355 	    {	0x131f,	0x1035,	0,	0	},	/* XXX really? */
356 	    {	0xffff,	0xffff,	0,	0	},
357 	    {
358 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
359 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
360 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
361 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
362 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
363 	    },
364 	},
365 
366 	/* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
367 	{   "SIIG Cyber 2S1P PCI 16C850 (10x family)",
368 	    {	0x131f,	0x1036,	0,	0	},	/* XXX really? */
369 	    {	0xffff,	0xffff,	0,	0	},
370 	    {
371 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
372 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
373 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
374 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
375 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
376 	    },
377 	},
378 
379 	/* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
380 	{   "SIIG Cyber 4S PCI 16C550 (10x family)",
381 	    {	0x131f,	0x1050,	0,	0	},
382 	    {	0xffff,	0xffff,	0,	0	},
383 	    {
384 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
385 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
386 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
387 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
388 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ * 8 },
389 	    },
390 	},
391 
392 	/* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
393 	{   "SIIG Cyber 4S PCI 16C650 (10x family)",
394 	    {	0x131f,	0x1051,	0,	0	},
395 	    {	0xffff,	0xffff,	0,	0	},
396 	    {
397 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
398 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
399 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
400 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
401 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ * 8 },
402 	    },
403 	},
404 
405 	/* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
406 	{   "SIIG Cyber 4S PCI 16C850 (10x family)",
407 	    {	0x131f,	0x1052,	0,	0	},
408 	    {	0xffff,	0xffff,	0,	0	},
409 	    {
410 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
411 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
412 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
413 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
414 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ * 8 },
415 	    },
416 	},
417 
418 	/*
419 	 * SIIG "20x" family boards.
420 	 */
421 
422 	/* SIIG Cyber Parallel PCI (20x family): 1P */
423 	{   "SIIG Cyber Parallel PCI (20x family)",
424 	    {	0x131f,	0x2020,	0,	0	},
425 	    {	0xffff,	0xffff,	0,	0	},
426 	    {
427 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
428 	    },
429 	},
430 
431 	/* SIIG Cyber Parallel Dual PCI (20x family): 2P */
432 	{   "SIIG Cyber Parallel Dual PCI (20x family)",
433 	    {	0x131f,	0x2021,	0,	0	},
434 	    {	0xffff,	0xffff,	0,	0	},
435 	    {
436 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
437 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
438 	    },
439 	},
440 
441 	/* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
442 	{   "SIIG Cyber 2P1S PCI 16C550 (20x family)",
443 	    {	0x131f,	0x2040,	0,	0	},
444 	    {	0xffff,	0xffff,	0,	0	},
445 	    {
446 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
447 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
448 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
449 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
450 	    },
451 	},
452 
453 	/* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
454 	{   "SIIG Cyber 2P1S PCI 16C650 (20x family)",
455 	    {	0x131f,	0x2041,	0,	0	},
456 	    {	0xffff,	0xffff,	0,	0	},
457 	    {
458 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
459 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
460 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
461 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
462 	    },
463 	},
464 
465 	/* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
466 	{   "SIIG Cyber 2P1S PCI 16C850 (20x family)",
467 	    {	0x131f,	0x2042,	0,	0	},
468 	    {	0xffff,	0xffff,	0,	0	},
469 	    {
470 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
471 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
472 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
473 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
474 	    },
475 	},
476 
477 	/* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
478 	{   "SIIG Cyber Serial PCI 16C550 (20x family)",
479 	    {	0x131f,	0x2000,	0,	0	},
480 	    {	0xffff,	0xffff,	0,	0	},
481 	    {
482 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
483 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
484 	    },
485 	},
486 
487 	/* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
488 	{   "SIIG Cyber Serial PCI 16C650 (20x family)",
489 	    {	0x131f,	0x2001,	0,	0	},
490 	    {	0xffff,	0xffff,	0,	0	},
491 	    {
492 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
493 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
494 	    },
495 	},
496 
497 	/* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
498 	{   "SIIG Cyber Serial PCI 16C850 (20x family)",
499 	    {	0x131f,	0x2002,	0,	0	},
500 	    {	0xffff,	0xffff,	0,	0	},
501 	    {
502 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
503 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
504 	    },
505 	},
506 
507 	/* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
508 	{   "SIIG Cyber I/O PCI 16C550 (20x family)",
509 	    {	0x131f,	0x2010,	0,	0	},
510 	    {	0xffff,	0xffff,	0,	0	},
511 	    {
512 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
513 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
514 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
515 	    },
516 	},
517 
518 	/* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
519 	{   "SIIG Cyber I/O PCI 16C650 (20x family)",
520 	    {	0x131f,	0x2011,	0,	0	},
521 	    {	0xffff,	0xffff,	0,	0	},
522 	    {
523 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
524 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
525 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
526 	    },
527 	},
528 
529 	/* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
530 	{   "SIIG Cyber I/O PCI 16C850 (20x family)",
531 	    {	0x131f,	0x2012,	0,	0	},
532 	    {	0xffff,	0xffff,	0,	0	},
533 	    {
534 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
535 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
536 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
537 	    },
538 	},
539 
540 	/* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
541 	{   "SIIG Cyber Serial Dual PCI 16C550 (20x family)",
542 	    {	0x131f,	0x2030,	0,	0	},
543 	    {	0xffff,	0xffff,	0,	0	},
544 	    {
545 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
546 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
547 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
548 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
549 	    },
550 	},
551 
552 	/* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
553 	{   "SIIG Cyber Serial Dual PCI 16C650 (20x family)",
554 	    {	0x131f,	0x2031,	0,	0	},
555 	    {	0xffff,	0xffff,	0,	0	},
556 	    {
557 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
558 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
559 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
560 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
561 	    },
562 	},
563 
564 	/* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
565 	{   "SIIG Cyber Serial Dual PCI 16C850 (20x family)",
566 	    {	0x131f,	0x2032,	0,	0	},
567 	    {	0xffff,	0xffff,	0,	0	},
568 	    {
569 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
570 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
571 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
572 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
573 	    },
574 	},
575 
576 	/* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
577 	{   "SIIG Cyber 2S1P PCI 16C550 (20x family)",
578 	    {	0x131f,	0x2060,	0,	0	},
579 	    {	0xffff,	0xffff,	0,	0	},
580 	    {
581 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
582 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
583 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
584 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
585 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
586 	    },
587 	},
588 
589 	/* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
590 	{   "SIIG Cyber 2S1P PCI 16C650 (20x family)",
591 	    {	0x131f,	0x2061,	0,	0	},
592 	    {	0xffff,	0xffff,	0,	0	},
593 	    {
594 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
595 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
596 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
597 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
598 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
599 	    },
600 	},
601 
602 	/* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
603 	{   "SIIG Cyber 2S1P PCI 16C850 (20x family)",
604 	    {	0x131f,	0x2062,	0,	0	},
605 	    {	0xffff,	0xffff,	0,	0	},
606 	    {
607 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
608 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
609 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
610 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
611 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
612 	    },
613 	},
614 
615 	/* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
616 	{   "SIIG Cyber 4S PCI 16C550 (20x family)",
617 	    {	0x131f,	0x2050,	0,	0	},
618 	    {	0xffff,	0xffff,	0,	0	},
619 	    {
620 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
621 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
622 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
623 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
624 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
625 	    },
626 	},
627 
628 	/* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
629 	{   "SIIG Cyber 4S PCI 16C650 (20x family)",
630 	    {	0x131f,	0x2051,	0,	0	},
631 	    {	0xffff,	0xffff,	0,	0	},
632 	    {
633 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
634 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
635 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
636 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
637 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
638 	    },
639 	},
640 
641 	/* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
642 	{   "SIIG Cyber 4S PCI 16C850 (20x family)",
643 	    {	0x131f,	0x2052,	0,	0	},
644 	    {	0xffff,	0xffff,	0,	0	},
645 	    {
646 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
647 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
648 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
649 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
650 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
651 	    },
652 	},
653 
654 	/* SIIG Cyber PS8000 PCI 16C650 (20x family): 8S - 32 Byte FIFOs */
655 	{   "SIIG PS8000 8S PCI 16C650 (20x family)",
656 	    {	0x131f,	0x2081,	0,	0	},
657 	    {	0xffff,	0xffff,	0,	0	},
658 	    {
659 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
660 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
661 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
662 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
663 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
664 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
665 		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ * 8 },
666 		{ PUC_PORT_TYPE_COM, 0x20, 0x10, COM_FREQ * 8 },
667 		{ PUC_PORT_TYPE_COM, 0x20, 0x18, COM_FREQ * 8 },
668 	    },
669 	},
670 
671 	/* VScom PCI-200: 2S */
672 	{   "VScom PCI-200",
673 	    {	0x10b5,	0x1103,	0x10b5,	0x1103	},
674 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
675 	    {
676 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
677 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
678 	    },
679 	},
680 
681 	/* VScom PCI-400: 4S */
682 	{   "VScom PCI-400",
683 	    {	0x10b5,	0x1077,	0x10b5,	0x1077	},
684 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
685 	    {
686 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
687 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
688 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
689 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
690 	    },
691 	},
692 
693 	/* VScom PCI-800: 8S */
694 	{   "VScom PCI-800",
695 	    {	0x10b5,	0x1076,	0x10b5,	0x1076	},
696 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
697 	    {
698 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
699 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
700 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
701 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
702 		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
703 		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
704 		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
705 		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
706 	    },
707 	},
708 
709 	{   "Titan PCI-010HV2",
710 	    {   0x14d2, 0xe001, 0,      0       },
711 	    {   0xffff, 0xffff, 0,      0       },
712 	    {
713 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
714 	    },
715 	},
716 	{   "Titan PCI-200HV2",
717 	    {   0x14d2, 0xe020, 0,      0       },
718 	    {   0xffff, 0xffff, 0,      0       },
719 	    {
720 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
721 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
722 	    },
723 	},
724 
725 	/*
726 	 * VScom PCI-800H. Uses 8 16950 UART, behind a PCI chips that offers
727 	 * 4 com port on PCI device 0 and 4 on PCI device 1. PCI device 0 has
728 	 * device ID 3 and PCI device 1 device ID 4.
729 	 */
730 	{   "Titan PCI-800H",
731 	    {	0x14d2,	0xa003,	0,	0	},
732 	    {	0xffff,	0xffff,	0,	0	},
733 	    {
734 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
735 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
736 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
737 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
738 	    },
739 	},
740 	{   "Titan PCI-800H",
741 	    {	0x14d2,	0xa004,	0,	0	},
742 	    {	0xffff,	0xffff,	0,	0	},
743 	    {
744 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
745 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
746 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
747 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
748 	    },
749 	},
750         {   "Titan PCI-200H",
751             {   0x14d2, 0xa005, 0,      0       },
752             {   0xffff, 0xffff, 0,      0       },
753             {
754                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
755                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
756             },
757         },
758 	{   "Titan PCI-800L",
759 	    {	0x14d2,	0x8080,	0,	0	},
760 	    {	0xffff,	0xffff,	0,	0	},
761 	    {
762 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
763 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
764 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
765 		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ * 8 },
766 		{ PUC_PORT_TYPE_COM, 0x20, 0x10, COM_FREQ * 8 },
767 		{ PUC_PORT_TYPE_COM, 0x20, 0x18, COM_FREQ * 8 },
768 		{ PUC_PORT_TYPE_COM, 0x20, 0x20, COM_FREQ * 8 },
769 		{ PUC_PORT_TYPE_COM, 0x20, 0x28, COM_FREQ * 8 },
770 	    },
771 	},
772 	/* NEC PK-UG-X001 K56flex PCI Modem card.
773 	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */
774 	{   "NEC PK-UG-X001 K56flex PCI Modem",
775 	    {	0x1033,	0x0074,	0x1033,	0x8014	},
776 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
777 	    {
778 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
779 	    },
780 	},
781 
782 	/* NEC PK-UG-X008 */
783 	{   "NEC PK-UG-X008",
784 	    {	0x1033,	0x007d,	0x1033,	0x8012	},
785 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
786 	    {
787 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ},
788 	    },
789 	},
790 
791 	/* Lava Computers 2SP-PCI */
792 	{   "Lava Computers 2SP-PCI parallel port",
793 	    {	0x1407,	0x8000,	0,	0	},
794 	    {	0xffff,	0xffff,	0,	0	},
795 	    {
796 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
797 	    },
798 	},
799 
800 	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
801 	{   "Lava Computers dual serial port",
802 	    {	0x1407,	0x0100,	0,	0	},
803 	    {	0xffff,	0xfffc,	0,	0	},
804 	    {
805 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
806 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
807 	    },
808 	},
809 
810 	/* Lava Computers DSerial PCI serial ports */
811 	{   "Lava Computers serial port",
812 	    {	0x1407,	0x0110,	0,	0	},
813 	    {	0xffff,	0xfffc,	0,	0	},
814 	    {
815 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
816 	    },
817 	},
818 
819 	/* Lava Computers Quattro-PCI serial ports */
820 	{   "Lava Quattro-PCI 4-port serial",
821 	    {   0x1407, 0x0120, 0,	0	},
822 	    {   0xffff, 0xfffc, 0,	0	},
823 	    {
824 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
825 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
826 	    },
827 	},
828 
829 	/* Lava Computers Octopus-550 serial ports */
830 	{   "Lava Computers Octopus-550 8-port serial",
831 	    {	0x1407,	0x0180,	0,	0	},
832 	    {	0xffff,	0xfffc,	0,	0	},
833 	    {
834 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
835 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
836 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
837 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
838 	    },
839 	},
840 
841 	/* US Robotics (3Com) PCI Modems */
842 	{   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
843 	    {	0x12b9,	0x1008,	0,	0	},
844 	    {	0xffff,	0xffff,	0,	0	},
845 	    {
846 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
847 	    },
848 	},
849 
850 	/* Actiontec  56K PCI Master */
851 	{   "Actiontec 56K PCI Master",
852 	    {	0x11c1,	0x0480,	0x0, 	0x0	},
853 	    {	0xffff,	0xffff,	0x0,	0x0	},
854 	    {
855 		{ PUC_PORT_TYPE_COM,	0x14,	0x00, COM_FREQ },
856 	    },
857 	},
858 
859 	/*
860 	 * Boards with an Oxford Semiconductor chip.
861 	 *
862 	 * Oxford Semiconductor provides documentation for their chip at:
863 	 * <URL:http://www.oxsemi.com/products/uarts/index.html>
864 	 *
865 	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
866 	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
867 	 */
868 
869 	/* Oxford Semiconductor OX16PCI952 PCI `950 UARTs - 128 byte FIFOs */
870 	{   "Oxford Semiconductor OX16PCI952 UARTs",
871 	    {   0x1415, 0x9521, 0,	0	},
872 	    {   0xffff, 0xffff, 0,	0	},
873 	    {
874 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
875 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
876 	    },
877 	},
878 
879 	/* Oxford Semiconductor OX16PCI952 PCI Parallel port */
880 	{   "Oxford Semiconductor OX16PCI952 Parallel port",
881 	    {   0x1415, 0x9523, 0,	0	},
882 	    {   0xffff, 0xffff, 0,	0	},
883 	    {
884 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
885 	    },
886 	},
887 
888 	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
889 	{   "Oxford Semiconductor OX16PCI954 UARTs",
890 	    {	0x1415,	0x9501,	0,	0	},
891 	    {	0xffff,	0xffff,	0,	0	},
892 	    {
893 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
894 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
895 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
896 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
897 	    },
898 	},
899 
900 	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
901 	{   "Oxford Semiconductor OX16PCI954 Parallel port",
902 	    {	0x1415,	0x9513,	0,	0	},
903 	    {	0xffff,	0xffff,	0,	0	},
904 	    {
905 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
906 	    },
907 	},
908 
909 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
910 	{   "Moxa Technologies, SmartIO CP104/PCI",
911 	    {   0x1393, 0x1041, 0,      0    },
912 	    {   0xffff, 0xffff, 0,      0    },
913 	    {
914 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
915 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
916 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
917 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
918 	    },
919 	},
920 
921 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
922 	{   "Moxa Technologies, SmartIO CP104-V2/PCI",
923 	    {   0x1393, 0x1042, 0,      0    },
924 	    {   0xffff, 0xffff, 0,      0    },
925 	    {
926 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
927 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
928 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
929 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
930 	    },
931 	},
932 
933 	/* NetMos 1P PCI : 1P */
934 	{   "NetMos NM9805 1284 Printer port",
935 	    {	0x9710,	0x9805,	0,	0	},
936 	    {	0xffff,	0xffff,	0,	0	},
937 	    {
938 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
939 	    },
940 	},
941 
942 	/* NetMos 2P PCI : 2P */
943 	{   "NetMos NM9815 Dual 1284 Printer port",
944 	    {	0x9710,	0x9815,	0,	0	},
945 	    {	0xffff,	0xffff,	0,	0	},
946 	    {
947 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
948 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
949 	    },
950 	},
951 
952 	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
953 	{   "NetMos NM9835 Dual UART and 1284 Printer port",
954 	    {	0x9710,	0x9835,	0,	0	},
955 	    {	0xffff,	0xffff,	0,	0	},
956 	    {
957 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
958 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
959 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
960 	    },
961 	},
962 
963 	/* NetMos 4S1P PCI NM9845 : 4S, 1P */
964 	{   "NetMos NM9845 Quad UART and 1284 Printer port",
965 	   {   0x9710, 0x9845, 0x1000, 0x0014  },
966 	   {   0xffff, 0xffff, 0xffff, 0xffff  },
967 	   {
968 	       { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
969 	       { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
970 	       { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
971 	       { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
972 	       { PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
973 	   },
974        },
975 
976        /* NetMos 6S PCI 16C650 : 6S, 0P */
977        {   "NetMos NM9845 6 UART",
978 	   {   0x9710, 0x9845, 0x1000, 0x0006  },
979 	   {   0xffff, 0xffff, 0xffff, 0xffff  },
980 	   {
981 	       { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
982 	       { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
983 	       { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
984 	       { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
985 	       { PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
986 	       { PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
987 	   },
988        },
989 
990        /* NetMos 4S1P PCI NM9845 : 4S, 1P */
991        {   "NetMos NM9845 Quad UART and 1284 Printer port (unknown type)",
992 	    {	0x9710,	0x9845,	0,	0	},
993 	    {	0xffff,	0xffff,	0,	0	},
994 	    {
995 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
996 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
997 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
998 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
999 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
1000 	    },
1001 	},
1002 
1003 	/*
1004 	 * This is the Middle Digital, Inc. PCI-Weasel, which
1005 	 * uses a PCI interface implemented in FPGA.
1006 	 */
1007 	{   "Middle Digital, Inc. Weasel serial port",
1008 	    {	0xdeaf,	0x9051,	0,	0	},
1009 	    {	0xffff,	0xffff,	0,	0	},
1010 	    {
1011 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1012 	    },
1013 	},
1014 
1015 	/* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
1016 	{   "Avlab Low Profile PCI 4 Serial",
1017 	    {	0x14db,	0x2150,	0,	0	},
1018 	    {	0xffff,	0xffff,	0,	0	},
1019 	    {
1020 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1021 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1022 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
1023 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1024 	    },
1025 	},
1026 
1027 	/*
1028 	 * Boca Research Turbo Serial 654 (4 serial port) card.
1029 	 * Appears to be the same as Chase Research PLC PCI-FAST4
1030 	 * and Perle PCI-FAST4 Multi-Port serial cards.
1031 	 */
1032 	{   "Boca Research Turbo Serial 654",
1033 	    {   0x10b5, 0x9050, 0x12e0, 0x0031  },
1034 	    {   0xffff, 0xffff, 0xffff, 0xffff  },
1035 	    {
1036 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 4 },
1037 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 4 },
1038 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 4 },
1039 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 4 },
1040 	    },
1041 	},
1042 
1043 	/*
1044 	 * Boca Research Turbo Serial 658 (8 serial port) card.
1045 	 * Appears to be the same as Chase Research PLC PCI-FAST8
1046 	 * and Perle PCI-FAST8 Multi-Port serial cards.
1047 	 */
1048 	{   "Boca Research Turbo Serial 658",
1049 	    {   0x10b5, 0x9050, 0x12e0, 0x0021  },
1050 	    {   0xffff, 0xffff, 0xffff, 0xffff  },
1051 	    {
1052 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 4 },
1053 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 4 },
1054 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 4 },
1055 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 4 },
1056 		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 4 },
1057 		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 4 },
1058 		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 4 },
1059 		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 4 },
1060 	    },
1061 	},
1062 
1063 	/*
1064 	 * Addi-Data APCI-7800 8-port serial card.
1065 	 * Uses an AMCC chip as PCI bridge.
1066 	 */
1067 	{   "Addi-Data APCI-7800",
1068 	    {   0x10e8, 0x818e, 0, 0  },
1069 	    {   0xffff, 0xffff, 0, 0  },
1070 	    {
1071 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1072 		{ PUC_PORT_TYPE_COM, 0x14, 0x08, COM_FREQ },
1073 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
1074 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ },
1075 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1076 		{ PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1077 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
1078 		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ },
1079 	    },
1080 	},
1081 
1082 	{   "EXAR XR17D152",
1083 	    {   0x13a8, 0x0152, 0,      0       },
1084 	    {   0xffff, 0xffff, 0,      0       },
1085 	    {
1086 		{ PUC_PORT_TYPE_COM, 0x10, 0x0000, COM_FREQ * 8 },
1087 		{ PUC_PORT_TYPE_COM, 0x10, 0x0200, COM_FREQ * 8 },
1088 	    },
1089 	},
1090 	{   "EXAR XR17D154",
1091 	    {   0x13a8, 0x0154, 0,      0       },
1092 	    {   0xffff, 0xffff, 0,      0       },
1093 	    {
1094 		{ PUC_PORT_TYPE_COM, 0x10, 0x0000, COM_FREQ * 8 },
1095 		{ PUC_PORT_TYPE_COM, 0x10, 0x0200, COM_FREQ * 8 },
1096 		{ PUC_PORT_TYPE_COM, 0x10, 0x0400, COM_FREQ * 8 },
1097 		{ PUC_PORT_TYPE_COM, 0x10, 0x0600, COM_FREQ * 8 },
1098 	    },
1099 	},
1100 	{   "EXAR XR17D158",
1101 	    {   0x13a8, 0x0154, 0,      0       },
1102 	    {   0xffff, 0xffff, 0,      0       },
1103 	    {
1104 		{ PUC_PORT_TYPE_COM, 0x10, 0x0000, COM_FREQ * 8 },
1105 		{ PUC_PORT_TYPE_COM, 0x10, 0x0200, COM_FREQ * 8 },
1106 		{ PUC_PORT_TYPE_COM, 0x10, 0x0400, COM_FREQ * 8 },
1107 		{ PUC_PORT_TYPE_COM, 0x10, 0x0600, COM_FREQ * 8 },
1108 		{ PUC_PORT_TYPE_COM, 0x10, 0x0800, COM_FREQ * 8 },
1109 		{ PUC_PORT_TYPE_COM, 0x10, 0x0a00, COM_FREQ * 8 },
1110 		{ PUC_PORT_TYPE_COM, 0x10, 0x0c00, COM_FREQ * 8 },
1111 		{ PUC_PORT_TYPE_COM, 0x10, 0x0e00, COM_FREQ * 8 },
1112 	    },
1113 	},
1114 
1115 	{ 0 }
1116 };
1117