xref: /freebsd/sys/dev/puc/pucdata.c (revision eacee0ff7ec955b32e09515246bd97b6edcd2b0f)
1 /*	$NetBSD: pucdata.c,v 1.25 2001/12/16 22:23:01 thorpej 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 #include <sys/cdefs.h>
34 __FBSDID("$FreeBSD$");
35 
36 /*
37  * PCI "universal" communications card driver configuration data (used to
38  * match/attach the cards).
39  */
40 
41 #include <sys/param.h>
42 
43 #if __FreeBSD_version < 500000
44 #include <pci/pcireg.h>
45 #include <pci/pcivar.h>
46 #include <isa/sioreg.h>
47 #else
48 #include <dev/pci/pcireg.h>
49 #include <dev/pci/pcivar.h>
50 #include <dev/sio/sioreg.h>
51 #endif
52 #include <dev/puc/pucvar.h>
53 
54 #define COM_FREQ	DEFAULT_RCLK
55 
56 const struct puc_device_description puc_devices[] = {
57 	/*
58 	 * XXX no entry because I have no data:
59 	 * XXX Dolphin Peripherals 4006 (single parallel)
60 	 */
61 
62 	/*
63 	 * Dolphin Peripherals 4014 (dual parallel port) card.  PLX 9050, with
64 	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
65 	 * into the subsystem fields, and claims that it's a
66 	 * network/misc (0x02/0x80) device.
67 	 */
68 	{   "Dolphin Peripherals 4014",
69 	    {	0x10b5,	0x9050,	0xd84d,	0x6810	},
70 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
71 	    {
72 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
73 		{ PUC_PORT_TYPE_LPT, 0x24, 0x00, 0x00 },
74 	    },
75 	},
76 
77 	/*
78 	 * XXX Dolphin Peripherals 4025 (single serial)
79 	 * (clashes with Dolphin Peripherals  4036 (2s variant)
80 	 */
81 
82 	/*
83 	 * Dolphin Peripherals 4035 (dual serial port) card.  PLX 9050, with
84 	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
85 	 * into the subsystem fields, and claims that it's a
86 	 * network/misc (0x02/0x80) device.
87 	 */
88 	{   "Dolphin Peripherals 4035",
89 	    {	0x10b5,	0x9050,	0xd84d,	0x6808	},
90 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
91 	    {
92 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
93 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
94 	    },
95 	},
96 
97 	/*
98 	 * Dolphin Peripherals 4036 (dual serial port) card.
99 	 * (Dolpin 4025 has the same ID but only one port)
100 	 */
101 	{   "Dolphin Peripherals 4036",
102 	    {	0x1409,	0x7168,	0x0,	0x0	},
103 	    {	0xffff,	0xffff,	0x0,	0x0	},
104 	    {
105 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
106 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
107 	    },
108 	},
109 
110 	/*
111 	 * XXX no entry because I have no data:
112 	 * XXX Dolphin Peripherals 4078 (dual serial and single parallel)
113 	 */
114 
115 
116 	/*
117 	 * SIIG Boards.
118 	 *
119 	 * SIIG provides documentation for their boards at:
120 	 * <URL:http://www.siig.com/driver.htm>
121 	 *
122 	 * Please excuse the weird ordering, it's the order they
123 	 * use in their documentation.
124 	 */
125 
126 	/*
127 	 * SIIG "10x" family boards.
128 	 */
129 
130 	/* SIIG Cyber Serial PCI 16C550 (10x family): 1S */
131 	{   "SIIG Cyber Serial PCI 16C550 (10x family)",
132 	    {	0x131f,	0x1000,	0,	0	},
133 	    {	0xffff,	0xffff,	0,	0	},
134 	    {
135 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
136 	    },
137 	},
138 
139 	/* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
140 	{   "SIIG Cyber Serial PCI 16C650 (10x family)",
141 	    {	0x131f,	0x1001,	0,	0	},
142 	    {	0xffff,	0xffff,	0,	0	},
143 	    {
144 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
145 	    },
146 	},
147 
148 	/* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
149 	{   "SIIG Cyber Serial PCI 16C850 (10x family)",
150 	    {	0x131f,	0x1002,	0,	0	},
151 	    {	0xffff,	0xffff,	0,	0	},
152 	    {
153 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
154 	    },
155 	},
156 
157 	/* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
158 	{   "SIIG Cyber I/O PCI 16C550 (10x family)",
159 	    {	0x131f,	0x1010,	0,	0	},
160 	    {	0xffff,	0xffff,	0,	0	},
161 	    {
162 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
163 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
164 	    },
165 	},
166 
167 	/* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
168 	{   "SIIG Cyber I/O PCI 16C650 (10x family)",
169 	    {	0x131f,	0x1011,	0,	0	},
170 	    {	0xffff,	0xffff,	0,	0	},
171 	    {
172 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
173 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
174 	    },
175 	},
176 
177 	/* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
178 	{   "SIIG Cyber I/O PCI 16C850 (10x family)",
179 	    {	0x131f,	0x1012,	0,	0	},
180 	    {	0xffff,	0xffff,	0,	0	},
181 	    {
182 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
183 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
184 	    },
185 	},
186 
187 	/* SIIG Cyber Parallel PCI (10x family): 1P */
188 	{   "SIIG Cyber Parallel PCI (10x family)",
189 	    {	0x131f,	0x1020,	0,	0	},
190 	    {	0xffff,	0xffff,	0,	0	},
191 	    {
192 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
193 	    },
194 	},
195 
196 	/* SIIG Cyber Parallel Dual PCI (10x family): 2P */
197 	{   "SIIG Cyber Parallel Dual PCI (10x family)",
198 	    {	0x131f,	0x1021,	0,	0	},
199 	    {	0xffff,	0xffff,	0,	0	},
200 	    {
201 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
202 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
203 	    },
204 	},
205 
206 	/* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
207 	{   "SIIG Cyber Serial Dual PCI 16C550 (10x family)",
208 	    {	0x131f,	0x1030,	0,	0	},
209 	    {	0xffff,	0xffff,	0,	0	},
210 	    {
211 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
212 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
213 	    },
214 	},
215 
216 	/* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
217 	{   "SIIG Cyber Serial Dual PCI 16C650 (10x family)",
218 	    {	0x131f,	0x1031,	0,	0	},
219 	    {	0xffff,	0xffff,	0,	0	},
220 	    {
221 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
222 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
223 	    },
224 	},
225 
226 	/* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
227 	{   "SIIG Cyber Serial Dual PCI 16C850 (10x family)",
228 	    {	0x131f,	0x1032,	0,	0	},
229 	    {	0xffff,	0xffff,	0,	0	},
230 	    {
231 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
232 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
233 	    },
234 	},
235 
236 	/* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
237 	{   "SIIG Cyber 2S1P PCI 16C550 (10x family)",
238 	    {	0x131f,	0x1034,	0,	0	},	/* XXX really? */
239 	    {	0xffff,	0xffff,	0,	0	},
240 	    {
241 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
242 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
243 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
244 	    },
245 	},
246 
247 	/* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
248 	{   "SIIG Cyber 2S1P PCI 16C650 (10x family)",
249 	    {	0x131f,	0x1035,	0,	0	},	/* XXX really? */
250 	    {	0xffff,	0xffff,	0,	0	},
251 	    {
252 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
253 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
254 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
255 	    },
256 	},
257 
258 	/* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
259 	{   "SIIG Cyber 2S1P PCI 16C850 (10x family)",
260 	    {	0x131f,	0x1036,	0,	0	},	/* XXX really? */
261 	    {	0xffff,	0xffff,	0,	0	},
262 	    {
263 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
264 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
265 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
266 	    },
267 	},
268 
269 	/* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
270 	{   "SIIG Cyber 4S PCI 16C550 (10x family)",
271 	    {	0x131f,	0x1050,	0,	0	},
272 	    {	0xffff,	0xffff,	0,	0	},
273 	    {
274 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
275 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
276 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
277 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
278 	    },
279 	},
280 
281 	/* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
282 	{   "SIIG Cyber 4S PCI 16C650 (10x family)",
283 	    {	0x131f,	0x1051,	0,	0	},
284 	    {	0xffff,	0xffff,	0,	0	},
285 	    {
286 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
287 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
288 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
289 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
290 	    },
291 	},
292 
293 	/* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
294 	{   "SIIG Cyber 4S PCI 16C850 (10x family)",
295 	    {	0x131f,	0x1052,	0,	0	},
296 	    {	0xffff,	0xffff,	0,	0	},
297 	    {
298 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
299 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
300 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
301 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
302 	    },
303 	},
304 
305 	/*
306 	 * SIIG "20x" family boards.
307 	 */
308 
309 	/* SIIG Cyber Parallel PCI (20x family): 1P */
310 	{   "SIIG Cyber Parallel PCI (20x family)",
311 	    {	0x131f,	0x2020,	0,	0	},
312 	    {	0xffff,	0xffff,	0,	0	},
313 	    {
314 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
315 	    },
316 	},
317 
318 	/* SIIG Cyber Parallel Dual PCI (20x family): 2P */
319 	{   "SIIG Cyber Parallel Dual PCI (20x family)",
320 	    {	0x131f,	0x2021,	0,	0	},
321 	    {	0xffff,	0xffff,	0,	0	},
322 	    {
323 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
324 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
325 	    },
326 	},
327 
328 	/* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
329 	{   "SIIG Cyber 2P1S PCI 16C550 (20x family)",
330 	    {	0x131f,	0x2040,	0,	0	},
331 	    {	0xffff,	0xffff,	0,	0	},
332 	    {
333 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
334 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
335 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
336 	    },
337 	},
338 
339 	/* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
340 	{   "SIIG Cyber 2P1S PCI 16C650 (20x family)",
341 	    {	0x131f,	0x2041,	0,	0	},
342 	    {	0xffff,	0xffff,	0,	0	},
343 	    {
344 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
345 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
346 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
347 	    },
348 	},
349 
350 	/* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
351 	{   "SIIG Cyber 2P1S PCI 16C850 (20x family)",
352 	    {	0x131f,	0x2042,	0,	0	},
353 	    {	0xffff,	0xffff,	0,	0	},
354 	    {
355 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
356 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
357 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
358 	    },
359 	},
360 
361 	/* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
362 	{   "SIIG Cyber Serial PCI 16C550 (20x family)",
363 	    {	0x131f,	0x2000,	0,	0	},
364 	    {	0xffff,	0xffff,	0,	0	},
365 	    {
366 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
367 	    },
368 	},
369 
370 	/* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
371 	{   "SIIG Cyber Serial PCI 16C650 (20x family)",
372 	    {	0x131f,	0x2001,	0,	0	},
373 	    {	0xffff,	0xffff,	0,	0	},
374 	    {
375 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
376 	    },
377 	},
378 
379 	/* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
380 	{   "SIIG Cyber Serial PCI 16C850 (20x family)",
381 	    {	0x131f,	0x2002,	0,	0	},
382 	    {	0xffff,	0xffff,	0,	0	},
383 	    {
384 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
385 	    },
386 	},
387 
388 	/* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
389 	{   "SIIG Cyber I/O PCI 16C550 (20x family)",
390 	    {	0x131f,	0x2010,	0,	0	},
391 	    {	0xffff,	0xffff,	0,	0	},
392 	    {
393 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
394 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
395 	    },
396 	},
397 
398 	/* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
399 	{   "SIIG Cyber I/O PCI 16C650 (20x family)",
400 	    {	0x131f,	0x2011,	0,	0	},
401 	    {	0xffff,	0xffff,	0,	0	},
402 	    {
403 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
404 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
405 	    },
406 	},
407 
408 	/* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
409 	{   "SIIG Cyber I/O PCI 16C850 (20x family)",
410 	    {	0x131f,	0x2012,	0,	0	},
411 	    {	0xffff,	0xffff,	0,	0	},
412 	    {
413 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
414 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
415 	    },
416 	},
417 
418 	/* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
419 	{   "SIIG Cyber Serial Dual PCI 16C550 (20x family)",
420 	    {	0x131f,	0x2030,	0,	0	},
421 	    {	0xffff,	0xffff,	0,	0	},
422 	    {
423 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
424 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
425 	    },
426 	},
427 
428 	/* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
429 	{   "SIIG Cyber Serial Dual PCI 16C650 (20x family)",
430 	    {	0x131f,	0x2031,	0,	0	},
431 	    {	0xffff,	0xffff,	0,	0	},
432 	    {
433 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
434 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
435 	    },
436 	},
437 
438 	/* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
439 	{   "SIIG Cyber Serial Dual PCI 16C850 (20x family)",
440 	    {	0x131f,	0x2032,	0,	0	},
441 	    {	0xffff,	0xffff,	0,	0	},
442 	    {
443 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
444 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
445 	    },
446 	},
447 
448 	/* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
449 	{   "SIIG Cyber 2S1P PCI 16C550 (20x family)",
450 	    {	0x131f,	0x2060,	0,	0	},
451 	    {	0xffff,	0xffff,	0,	0	},
452 	    {
453 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
454 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
455 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
456 	    },
457 	},
458 
459 	/* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
460 	{   "SIIG Cyber 2S1P PCI 16C650 (20x family)",
461 	    {	0x131f,	0x2061,	0,	0	},
462 	    {	0xffff,	0xffff,	0,	0	},
463 	    {
464 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
465 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
466 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
467 	    },
468 	},
469 
470 	/* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
471 	{   "SIIG Cyber 2S1P PCI 16C850 (20x family)",
472 	    {	0x131f,	0x2062,	0,	0	},
473 	    {	0xffff,	0xffff,	0,	0	},
474 	    {
475 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
476 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
477 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
478 	    },
479 	},
480 
481 	/* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
482 	{   "SIIG Cyber 4S PCI 16C550 (20x family)",
483 	    {	0x131f,	0x2050,	0,	0	},
484 	    {	0xffff,	0xffff,	0,	0	},
485 	    {
486 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
487 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
488 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
489 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
490 	    },
491 	},
492 
493 	/* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
494 	{   "SIIG Cyber 4S PCI 16C650 (20x family)",
495 	    {	0x131f,	0x2051,	0,	0	},
496 	    {	0xffff,	0xffff,	0,	0	},
497 	    {
498 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
499 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
500 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
501 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
502 	    },
503 	},
504 
505 	/* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
506 	{   "SIIG Cyber 4S PCI 16C850 (20x family)",
507 	    {	0x131f,	0x2052,	0,	0	},
508 	    {	0xffff,	0xffff,	0,	0	},
509 	    {
510 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
511 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
512 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
513 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
514 	    },
515 	},
516 
517 	/* VScom PCI-400: 4S */
518 	{   "VScom PCI-400",
519 	    {	0x10b5,	0x1077,	0x10b5,	0x1077	},
520 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
521 	    {
522 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
523 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
524 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
525 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
526 	    },
527 	},
528 
529 	/* VScom PCI-800: 8S */
530 	{   "VScom PCI-800",
531 	    {	0x10b5,	0x1076,	0x10b5,	0x1076	},
532 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
533 	    {
534 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
535 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
536 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
537 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
538 		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
539 		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
540 		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
541 		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
542 	    },
543 	},
544 	/*
545 	 * VScom PCI-800H. Uses 8 16950 UART, behind a PCI chips that offers
546 	 * 4 com port on PCI device 0 and 4 on PCI device 1. PCI device 0 has
547 	 * device ID 3 and PCI device 1 device ID 4.
548 	 */
549 	{   "Titan PCI-800H",
550 	    {	0x14d2,	0xa003,	0,	0	},
551 	    {	0xffff,	0xffff,	0,	0	},
552 	    {
553 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
554 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
555 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
556 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
557 	    },
558 	},
559 	{   "Titan PCI-800H",
560 	    {	0x14d2,	0xa004,	0,	0	},
561 	    {	0xffff,	0xffff,	0,	0	},
562 	    {
563 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
564 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
565 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
566 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
567 	    },
568 	},
569         {   "Titan PCI-200H",
570             {   0x14d2, 0xa005, 0,      0       },
571             {   0xffff, 0xffff, 0,      0       },
572             {
573                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
574                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
575             },
576         },
577 
578 	/* NEC PK-UG-X001 K56flex PCI Modem card.
579 	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */
580 	{   "NEC PK-UG-X001 K56flex PCI Modem",
581 	    {	0x1033,	0x0074,	0x1033,	0x8014	},
582 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
583 	    {
584 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
585 	    },
586 	},
587 
588 	/* NEC PK-UG-X008 */
589 	{   "NEC PK-UG-X008",
590 	    {	0x1033,	0x007d,	0x1033,	0x8012	},
591 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
592 	    {
593 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ},
594 	    },
595 	},
596 
597 	/* Lava Computers 2SP-PCI */
598 	{   "Lava Computers 2SP-PCI parallel port",
599 	    {	0x1407,	0x8000,	0,	0	},
600 	    {	0xffff,	0xffff,	0,	0	},
601 	    {
602 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
603 	    },
604 	},
605 
606 	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
607 	{   "Lava Computers dual serial port",
608 	    {	0x1407,	0x0100,	0,	0	},
609 	    {	0xffff,	0xfffc,	0,	0	},
610 	    {
611 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
612 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
613 	    },
614 	},
615 
616 	/* Lava Computers DSerial PCI serial ports */
617 	{   "Lava Computers serial port",
618 	    {	0x1407,	0x0110,	0,	0	},
619 	    {	0xffff,	0xfffc,	0,	0	},
620 	    {
621 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
622 	    },
623 	},
624 
625 	/* Lava Computers Octopus-550 serial ports */
626 	{   "Lava Computers Octopus-550 8-port serial",
627 	    {	0x1407,	0x0180,	0,	0	},
628 	    {	0xffff,	0xfffc,	0,	0	},
629 	    {
630 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
631 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
632 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
633 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
634 	    },
635 	},
636 
637 	/* US Robotics (3Com) PCI Modems */
638 	{   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
639 	    {	0x12b9,	0x1008,	0,	0	},
640 	    {	0xffff,	0xffff,	0,	0	},
641 	    {
642 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
643 	    },
644 	},
645 
646 	/* Actiontec  56K PCI Master */
647 	{   "Actiontec 56K PCI Master",
648 	    {	0x11c1,	0x0480,	0x0, 	0x0	},
649 	    {	0xffff,	0xffff,	0x0,	0x0	},
650 	    {
651 		{ PUC_PORT_TYPE_COM,	0x14,	0x00, COM_FREQ },
652 	    },
653 	},
654 
655 	/*
656 	 * Boards with an Oxford Semiconductor chip.
657 	 *
658 	 * Oxford Semiconductor provides documentation for their chip at:
659 	 * <URL:http://www.oxsemi.com/products/uarts/index.html>
660 	 *
661 	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
662 	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
663 	 */
664 
665 	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
666 	{   "Qxford Semiconductor OX16PCI954 UARTs",
667 	    {	0x1415,	0x9501,	0,	0	},
668 	    {	0xffff,	0xffff,	0,	0	},
669 	    {
670 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
671 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
672 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
673 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
674 	    },
675 	},
676 
677 	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
678 	{   "Qxford Semiconductor OX16PCI954 Parallel port",
679 	    {	0x1415,	0x9513,	0,	0	},
680 	    {	0xffff,	0xffff,	0,	0	},
681 	    {
682 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
683 	    },
684 	},
685 
686 	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
687 	{   "NetMos NM9835 Dual UART and 1284 Printer port",
688 	    {	0x9710,	0x9835,	0,	0	},
689 	    {	0xffff,	0xffff,	0,	0	},
690 	    {
691 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
692 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
693 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
694 	    },
695 	},
696 
697 	/*
698 	 * This is the Middle Digital, Inc. PCI-Weasel, which
699 	 * uses a PCI interface implemented in FPGA.
700 	 */
701 	{   "Middle Digital, Inc. Weasel serial port",
702 	    {	0xdeaf,	0x9051,	0,	0	},
703 	    {	0xffff,	0xffff,	0,	0	},
704 	    {
705 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
706 	    },
707 	},
708 
709 	/* SD-LAB PCI I/O Card 4S2P */
710 	{   "Syba Tech Ltd. PCI-4S2P-550-ECP",
711 	    {	0x1592, 0x0781, 0,	0	},
712 	    {	0xffff, 0xffff, 0,	0	},
713 	    {
714 		{ PUC_PORT_TYPE_COM, 0x10, 0x2e8, COM_FREQ },
715 		{ PUC_PORT_TYPE_COM, 0x10, 0x2f8, COM_FREQ },
716 		{ PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
717 		{ PUC_PORT_TYPE_COM, 0x10, 0x3e8, COM_FREQ },
718 		{ PUC_PORT_TYPE_COM, 0x10, 0x3f8, COM_FREQ },
719 		{ PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
720 	    },
721 	},
722 
723 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
724 	{   "Moxa Technologies, Industio CP-114",
725 	    {	0x1393,	0x1141,	0,	0	},
726 	    {	0xffff,	0xffff,	0,	0,	},
727 	    {
728 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
729 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
730 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
731 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
732 	    },
733 	},
734 
735 	/* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
736 	{   "Moxa Technologies, C168H/PCI",
737 	    {	0x1393,	0x1680,	0,	0	},
738 	    {	0xffff,	0xffff,	0,	0,	},
739 	    {
740 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
741 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
742 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
743 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
744 		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
745 		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
746 		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
747 		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
748 	    },
749 	},
750 
751 	{ 0 }
752 };
753