xref: /netbsd-src/sys/dev/pci/pucdata.c (revision 8a705cc17d9661734a1beae130cdbb7daf4a7d17)
1 /*	$NetBSD: pucdata.c,v 1.27 2002/05/13 09:19:57 hannken 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.27 2002/05/13 09:19:57 hannken 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, COM_FREQ },
228 	    },
229 	},
230 
231 	/* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
232 	{   "SIIG Cyber Serial PCI 16C650 (10x family)",
233 	    {	0x131f,	0x1001,	0,	0	},
234 	    {	0xffff,	0xffff,	0,	0	},
235 	    {
236 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
237 	    },
238 	},
239 
240 	/* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
241 	{   "SIIG Cyber Serial PCI 16C850 (10x family)",
242 	    {	0x131f,	0x1002,	0,	0	},
243 	    {	0xffff,	0xffff,	0,	0	},
244 	    {
245 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
246 	    },
247 	},
248 
249 	/* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
250 	{   "SIIG Cyber I/O PCI 16C550 (10x family)",
251 	    {	0x131f,	0x1010,	0,	0	},
252 	    {	0xffff,	0xffff,	0,	0	},
253 	    {
254 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
255 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
256 	    },
257 	},
258 
259 	/* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
260 	{   "SIIG Cyber I/O PCI 16C650 (10x family)",
261 	    {	0x131f,	0x1011,	0,	0	},
262 	    {	0xffff,	0xffff,	0,	0	},
263 	    {
264 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
265 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
266 	    },
267 	},
268 
269 	/* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
270 	{   "SIIG Cyber I/O PCI 16C850 (10x family)",
271 	    {	0x131f,	0x1012,	0,	0	},
272 	    {	0xffff,	0xffff,	0,	0	},
273 	    {
274 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
275 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
276 	    },
277 	},
278 
279 	/* SIIG Cyber Parallel PCI (10x family): 1P */
280 	{   "SIIG Cyber Parallel PCI (10x family)",
281 	    {	0x131f,	0x1020,	0,	0	},
282 	    {	0xffff,	0xffff,	0,	0	},
283 	    {
284 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
285 	    },
286 	},
287 
288 	/* SIIG Cyber Parallel Dual PCI (10x family): 2P */
289 	{   "SIIG Cyber Parallel Dual PCI (10x family)",
290 	    {	0x131f,	0x1021,	0,	0	},
291 	    {	0xffff,	0xffff,	0,	0	},
292 	    {
293 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
294 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
295 	    },
296 	},
297 
298 	/* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
299 	{   "SIIG Cyber Serial Dual PCI 16C550 (10x family)",
300 	    {	0x131f,	0x1030,	0,	0	},
301 	    {	0xffff,	0xffff,	0,	0	},
302 	    {
303 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
304 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
305 	    },
306 	},
307 
308 	/* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
309 	{   "SIIG Cyber Serial Dual PCI 16C650 (10x family)",
310 	    {	0x131f,	0x1031,	0,	0	},
311 	    {	0xffff,	0xffff,	0,	0	},
312 	    {
313 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
314 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
315 	    },
316 	},
317 
318 	/* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
319 	{   "SIIG Cyber Serial Dual PCI 16C850 (10x family)",
320 	    {	0x131f,	0x1032,	0,	0	},
321 	    {	0xffff,	0xffff,	0,	0	},
322 	    {
323 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
324 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
325 	    },
326 	},
327 
328 	/* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
329 	{   "SIIG Cyber 2S1P PCI 16C550 (10x family)",
330 	    {	0x131f,	0x1034,	0,	0	},	/* XXX really? */
331 	    {	0xffff,	0xffff,	0,	0	},
332 	    {
333 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
334 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
335 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
336 	    },
337 	},
338 
339 	/* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
340 	{   "SIIG Cyber 2S1P PCI 16C650 (10x family)",
341 	    {	0x131f,	0x1035,	0,	0	},	/* XXX really? */
342 	    {	0xffff,	0xffff,	0,	0	},
343 	    {
344 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
345 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
346 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
347 	    },
348 	},
349 
350 	/* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
351 	{   "SIIG Cyber 2S1P PCI 16C850 (10x family)",
352 	    {	0x131f,	0x1036,	0,	0	},	/* XXX really? */
353 	    {	0xffff,	0xffff,	0,	0	},
354 	    {
355 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
356 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
357 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
358 	    },
359 	},
360 
361 	/* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
362 	{   "SIIG Cyber 4S PCI 16C550 (10x family)",
363 	    {	0x131f,	0x1050,	0,	0	},
364 	    {	0xffff,	0xffff,	0,	0	},
365 	    {
366 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
367 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
368 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
369 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
370 	    },
371 	},
372 
373 	/* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
374 	{   "SIIG Cyber 4S PCI 16C650 (10x family)",
375 	    {	0x131f,	0x1051,	0,	0	},
376 	    {	0xffff,	0xffff,	0,	0	},
377 	    {
378 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
379 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
380 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
381 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
382 	    },
383 	},
384 
385 	/* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
386 	{   "SIIG Cyber 4S PCI 16C850 (10x family)",
387 	    {	0x131f,	0x1052,	0,	0	},
388 	    {	0xffff,	0xffff,	0,	0	},
389 	    {
390 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
391 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
392 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
393 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
394 	    },
395 	},
396 
397 	/*
398 	 * SIIG "20x" family boards.
399 	 */
400 
401 	/* SIIG Cyber Parallel PCI (20x family): 1P */
402 	{   "SIIG Cyber Parallel PCI (20x family)",
403 	    {	0x131f,	0x2020,	0,	0	},
404 	    {	0xffff,	0xffff,	0,	0	},
405 	    {
406 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
407 	    },
408 	},
409 
410 	/* SIIG Cyber Parallel Dual PCI (20x family): 2P */
411 	{   "SIIG Cyber Parallel Dual PCI (20x family)",
412 	    {	0x131f,	0x2021,	0,	0	},
413 	    {	0xffff,	0xffff,	0,	0	},
414 	    {
415 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
416 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
417 	    },
418 	},
419 
420 	/* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
421 	{   "SIIG Cyber 2P1S PCI 16C550 (20x family)",
422 	    {	0x131f,	0x2040,	0,	0	},
423 	    {	0xffff,	0xffff,	0,	0	},
424 	    {
425 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
426 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
427 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
428 	    },
429 	},
430 
431 	/* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
432 	{   "SIIG Cyber 2P1S PCI 16C650 (20x family)",
433 	    {	0x131f,	0x2041,	0,	0	},
434 	    {	0xffff,	0xffff,	0,	0	},
435 	    {
436 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
437 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
438 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
439 	    },
440 	},
441 
442 	/* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
443 	{   "SIIG Cyber 2P1S PCI 16C850 (20x family)",
444 	    {	0x131f,	0x2042,	0,	0	},
445 	    {	0xffff,	0xffff,	0,	0	},
446 	    {
447 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
448 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
449 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
450 	    },
451 	},
452 
453 	/* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
454 	{   "SIIG Cyber Serial PCI 16C550 (20x family)",
455 	    {	0x131f,	0x2000,	0,	0	},
456 	    {	0xffff,	0xffff,	0,	0	},
457 	    {
458 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
459 	    },
460 	},
461 
462 	/* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
463 	{   "SIIG Cyber Serial PCI 16C650 (20x family)",
464 	    {	0x131f,	0x2001,	0,	0	},
465 	    {	0xffff,	0xffff,	0,	0	},
466 	    {
467 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
468 	    },
469 	},
470 
471 	/* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
472 	{   "SIIG Cyber Serial PCI 16C850 (20x family)",
473 	    {	0x131f,	0x2002,	0,	0	},
474 	    {	0xffff,	0xffff,	0,	0	},
475 	    {
476 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
477 	    },
478 	},
479 
480 	/* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
481 	{   "SIIG Cyber I/O PCI 16C550 (20x family)",
482 	    {	0x131f,	0x2010,	0,	0	},
483 	    {	0xffff,	0xffff,	0,	0	},
484 	    {
485 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
486 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
487 	    },
488 	},
489 
490 	/* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
491 	{   "SIIG Cyber I/O PCI 16C650 (20x family)",
492 	    {	0x131f,	0x2011,	0,	0	},
493 	    {	0xffff,	0xffff,	0,	0	},
494 	    {
495 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
496 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
497 	    },
498 	},
499 
500 	/* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
501 	{   "SIIG Cyber I/O PCI 16C850 (20x family)",
502 	    {	0x131f,	0x2012,	0,	0	},
503 	    {	0xffff,	0xffff,	0,	0	},
504 	    {
505 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
506 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
507 	    },
508 	},
509 
510 	/* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
511 	{   "SIIG Cyber Serial Dual PCI 16C550 (20x family)",
512 	    {	0x131f,	0x2030,	0,	0	},
513 	    {	0xffff,	0xffff,	0,	0	},
514 	    {
515 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
516 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
517 	    },
518 	},
519 
520 	/* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
521 	{   "SIIG Cyber Serial Dual PCI 16C650 (20x family)",
522 	    {	0x131f,	0x2031,	0,	0	},
523 	    {	0xffff,	0xffff,	0,	0	},
524 	    {
525 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
526 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
527 	    },
528 	},
529 
530 	/* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
531 	{   "SIIG Cyber Serial Dual PCI 16C850 (20x family)",
532 	    {	0x131f,	0x2032,	0,	0	},
533 	    {	0xffff,	0xffff,	0,	0	},
534 	    {
535 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
536 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
537 	    },
538 	},
539 
540 	/* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
541 	{   "SIIG Cyber 2S1P PCI 16C550 (20x family)",
542 	    {	0x131f,	0x2060,	0,	0	},
543 	    {	0xffff,	0xffff,	0,	0	},
544 	    {
545 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
546 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
547 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
548 	    },
549 	},
550 
551 	/* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
552 	{   "SIIG Cyber 2S1P PCI 16C650 (20x family)",
553 	    {	0x131f,	0x2061,	0,	0	},
554 	    {	0xffff,	0xffff,	0,	0	},
555 	    {
556 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
557 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
558 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
559 	    },
560 	},
561 
562 	/* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
563 	{   "SIIG Cyber 2S1P PCI 16C850 (20x family)",
564 	    {	0x131f,	0x2062,	0,	0	},
565 	    {	0xffff,	0xffff,	0,	0	},
566 	    {
567 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
568 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
569 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
570 	    },
571 	},
572 
573 	/* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
574 	{   "SIIG Cyber 4S PCI 16C550 (20x family)",
575 	    {	0x131f,	0x2050,	0,	0	},
576 	    {	0xffff,	0xffff,	0,	0	},
577 	    {
578 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
579 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
580 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
581 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
582 	    },
583 	},
584 
585 	/* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
586 	{   "SIIG Cyber 4S PCI 16C650 (20x family)",
587 	    {	0x131f,	0x2051,	0,	0	},
588 	    {	0xffff,	0xffff,	0,	0	},
589 	    {
590 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
591 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
592 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
593 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
594 	    },
595 	},
596 
597 	/* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
598 	{   "SIIG Cyber 4S PCI 16C850 (20x family)",
599 	    {	0x131f,	0x2052,	0,	0	},
600 	    {	0xffff,	0xffff,	0,	0	},
601 	    {
602 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
603 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
604 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
605 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
606 	    },
607 	},
608 
609 	/* VScom PCI-400: 4S */
610 	{   "VScom PCI-400",
611 	    {	0x10b5,	0x1077,	0x10b5,	0x1077	},
612 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
613 	    {
614 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
615 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
616 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
617 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
618 	    },
619 	},
620 
621 	/* VScom PCI-800: 8S */
622 	{   "VScom PCI-800",
623 	    {	0x10b5,	0x1076,	0x10b5,	0x1076	},
624 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
625 	    {
626 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
627 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
628 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
629 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
630 		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
631 		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
632 		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
633 		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
634 	    },
635 	},
636 	/*
637 	 * VScom PCI-800H. Uses 8 16950 UART, behind a PCI chips that offers
638 	 * 4 com port on PCI device 0 and 4 on PCI device 1. PCI device 0 has
639 	 * device ID 3 and PCI device 1 device ID 4.
640 	 */
641 	{   "Titan PCI-800H",
642 	    {	0x14d2,	0xa003,	0,	0	},
643 	    {	0xffff,	0xffff,	0,	0	},
644 	    {
645 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
646 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
647 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
648 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
649 	    },
650 	},
651 	{   "Titan PCI-800H",
652 	    {	0x14d2,	0xa004,	0,	0	},
653 	    {	0xffff,	0xffff,	0,	0	},
654 	    {
655 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
656 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
657 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
658 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
659 	    },
660 	},
661         {   "Titan PCI-200H",
662             {   0x14d2, 0xa005, 0,      0       },
663             {   0xffff, 0xffff, 0,      0       },
664             {
665                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
666                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
667             },
668         },
669 
670 	/* NEC PK-UG-X001 K56flex PCI Modem card.
671 	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */
672 	{   "NEC PK-UG-X001 K56flex PCI Modem",
673 	    {	0x1033,	0x0074,	0x1033,	0x8014	},
674 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
675 	    {
676 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
677 	    },
678 	},
679 
680 	/* NEC PK-UG-X008 */
681 	{   "NEC PK-UG-X008",
682 	    {	0x1033,	0x007d,	0x1033,	0x8012	},
683 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
684 	    {
685 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ},
686 	    },
687 	},
688 
689 	/* Lava Computers 2SP-PCI */
690 	{   "Lava Computers 2SP-PCI parallel port",
691 	    {	0x1407,	0x8000,	0,	0	},
692 	    {	0xffff,	0xffff,	0,	0	},
693 	    {
694 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
695 	    },
696 	},
697 
698 	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
699 	{   "Lava Computers dual serial port",
700 	    {	0x1407,	0x0100,	0,	0	},
701 	    {	0xffff,	0xfffc,	0,	0	},
702 	    {
703 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
704 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
705 	    },
706 	},
707 
708 	/* Lava Computers DSerial PCI serial ports */
709 	{   "Lava Computers serial port",
710 	    {	0x1407,	0x0110,	0,	0	},
711 	    {	0xffff,	0xfffc,	0,	0	},
712 	    {
713 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
714 	    },
715 	},
716 
717 	/* Lava Computers Octopus-550 serial ports */
718 	{   "Lava Computers Octopus-550 8-port serial",
719 	    {	0x1407,	0x0180,	0,	0	},
720 	    {	0xffff,	0xfffc,	0,	0	},
721 	    {
722 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
723 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
724 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
725 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
726 	    },
727 	},
728 
729 	/* US Robotics (3Com) PCI Modems */
730 	{   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
731 	    {	0x12b9,	0x1008,	0,	0	},
732 	    {	0xffff,	0xffff,	0,	0	},
733 	    {
734 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
735 	    },
736 	},
737 
738 	/* Actiontec  56K PCI Master */
739 	{   "Actiontec 56K PCI Master",
740 	    {	0x11c1,	0x0480,	0x0, 	0x0	},
741 	    {	0xffff,	0xffff,	0x0,	0x0	},
742 	    {
743 		{ PUC_PORT_TYPE_COM,	0x14,	0x00, COM_FREQ },
744 	    },
745 	},
746 
747 	/*
748 	 * Boards with an Oxford Semiconductor chip.
749 	 *
750 	 * Oxford Semiconductor provides documentation for their chip at:
751 	 * <URL:http://www.oxsemi.com/products/uarts/index.html>
752 	 *
753 	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
754 	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
755 	 */
756 
757 	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
758 	{   "Qxford Semiconductor OX16PCI954 UARTs",
759 	    {	0x1415,	0x9501,	0,	0	},
760 	    {	0xffff,	0xffff,	0,	0	},
761 	    {
762 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
763 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
764 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
765 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
766 	    },
767 	},
768 
769 	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
770 	{   "Qxford Semiconductor OX16PCI954 Parallel port",
771 	    {	0x1415,	0x9513,	0,	0	},
772 	    {	0xffff,	0xffff,	0,	0	},
773 	    {
774 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
775 	    },
776 	},
777 
778 	/* NetMos 1P PCI : 1P */
779 	{   "NetMos NM9805 1284 Printer port",
780 	    {	0x9710,	0x9805,	0,	0	},
781 	    {	0xffff,	0xffff,	0,	0	},
782 	    {
783 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
784 	    },
785 	},
786 
787 	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
788 	{   "NetMos NM9835 Dual UART and 1284 Printer port",
789 	    {	0x9710,	0x9835,	0,	0	},
790 	    {	0xffff,	0xffff,	0,	0	},
791 	    {
792 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
793 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
794 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
795 	    },
796 	},
797 
798 	/*
799 	 * This is the Middle Digital, Inc. PCI-Weasel, which
800 	 * uses a PCI interface implemented in FPGA.
801 	 */
802 	{   "Middle Digital, Inc. Weasel serial port",
803 	    {	0xdeaf,	0x9051,	0,	0	},
804 	    {	0xffff,	0xffff,	0,	0	},
805 	    {
806 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
807 	    },
808 	},
809 
810 	{ 0 }
811 };
812