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