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