xref: /openbsd/sys/dev/pci/pucdata.c (revision 8529ddd3)
1 /*	$OpenBSD: pucdata.c,v 1.96 2015/03/14 03:38:49 jsg Exp $	*/
2 /*	$NetBSD: pucdata.c,v 1.6 1999/07/03 05:55:23 cgd Exp $	*/
3 
4 /*
5  * Copyright (c) 1998, 1999 Christopher G. Demetriou.  All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *      This product includes software developed by Christopher G. Demetriou
18  *	for the NetBSD Project.
19  * 4. The name of the author may not be used to endorse or promote products
20  *    derived from this software without specific prior written permission
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
23  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
27  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
31  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 /*
35  * PCI "universal" communications card driver configuration data (used to
36  * match/attach the cards).
37  */
38 
39 #include <sys/param.h>
40 #include <sys/systm.h>
41 #include <sys/device.h>
42 
43 #include <dev/pci/pcireg.h>
44 #include <dev/pci/pcivar.h>
45 #include <dev/pci/pucvar.h>
46 #include <dev/pci/pcidevs.h>
47 
48 const struct puc_device_description puc_devs[] = {
49 
50 	{	/* 6 Series KT */
51 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_6SERIES_KT, 0x0000, 0x0000 },
52 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
53 	    {
54 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
55 	    },
56 	},
57 	{	/* 7 Series KT */
58 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_7SERIES_KT, 0x0000, 0x0000 },
59 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
60 	    {
61 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
62 	    },
63 	},
64 	{	/* 8 Series KT */
65 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_8SERIES_KT, 0x0000, 0x0000 },
66 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
67 	    {
68 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
69 	    },
70 	},
71 	{	/* 8 Series LP KT */
72 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_8SERIES_LP_KT, 0x0000, 0x0000 },
73 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
74 	    {
75 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
76 	    },
77 	},
78 	{	/* 9 Series KT */
79 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_9SERIES_KT, 0x0000, 0x0000 },
80 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
81 	    {
82 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
83 	    },
84 	},
85 	{	/* 9 Series LP KT */
86 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_9SERIES_LP_KT, 0x0000, 0x0000 },
87 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
88 	    {
89 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
90 	    },
91 	},
92 	{	/* 82946GZ KT */
93 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82946GZ_KT, 0x0000, 0x0000 },
94 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
95 	    {
96 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
97 	    },
98 	},
99 	{	/* 82Q965 KT */
100 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82Q965_KT, 0x0000, 0x0000 },
101 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
102 	    {
103 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
104 	    },
105 	},
106 	{	/* 82G965 KT */
107 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82G965_KT, 0x0000, 0x0000 },
108 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
109 	    {
110 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
111 	    },
112 	},
113 	{	/* 82Q35 KT */
114 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82Q35_KT, 0x0000, 0x0000 },
115 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
116 	    {
117 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
118 	    },
119 	},
120 	{	/* 82G33 KT */
121 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82G33_KT, 0x0000, 0x0000 },
122 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
123 	    {
124 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
125 	    },
126 	},
127 	{	/* 82Q33 KT */
128 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82Q33_KT, 0x0000, 0x0000 },
129 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
130 	    {
131 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
132 	    },
133 	},
134 	{	/* 82X38 KT */
135 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82X38_KT, 0x0000, 0x0000 },
136 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
137 	    {
138 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
139 	    },
140 	},
141 	{	/* GM965 KT */
142 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82GM965_KT, 0x0000, 0x0000 },
143 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
144 	    {
145 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
146 	    },
147 	},
148 	{	/* GME965 KT */
149 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82GME965_KT, 0x0000, 0x0000 },
150 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
151 	    {
152 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
153 	    },
154 	},
155 	{	/* GM45 KT */
156 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82GM45_KT, 0x0000, 0x0000 },
157 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
158 	    {
159 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
160 	    },
161 	},
162 	{	/* Q45 KT */
163 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82Q45_KT, 0x0000, 0x0000 },
164 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
165 	    {
166 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
167 	    },
168 	},
169 	{	/* 3400 KT */
170 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_3400_KT, 0x0000, 0x0000 },
171 	    {	0xffff, 0xffff,					0x0000, 0x0000 },
172 	    {
173 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
174 	    },
175 	},
176 	{   /* Intel EG20T */
177 	    {   PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EG20T_SERIAL_1, 0x0000, 0x0000 },
178 	    {	0xffff,	0xffff,				      0x0000, 0x0000 },
179 	    {
180 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
181 	    },
182 	},
183 	{   /* Intel EG20T */
184 	    {   PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EG20T_SERIAL_2, 0x0000, 0x0000 },
185 	    {	0xffff,	0xffff,				      0x0000, 0x0000 },
186 	    {
187 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
188 	    },
189 	},
190 	{   /* Intel EG20T */
191 	    {   PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EG20T_SERIAL_3, 0x0000, 0x0000 },
192 	    {	0xffff,	0xffff,				      0x0000, 0x0000 },
193 	    {
194 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
195 	    },
196 	},
197 	{   /* Intel EG20T */
198 	    {   PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EG20T_SERIAL_4, 0x0000, 0x0000 },
199 	    {	0xffff,	0xffff,				      0x0000, 0x0000 },
200 	    {
201 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
202 	    },
203 	},
204 	/*
205 	 * XXX no entry because I have no data:
206 	 * XXX Dolphin Peripherals 4006 (single parallel)
207 	 */
208 
209 	/*
210 	 * Dolphin Peripherals 4014 (dual parallel port) card.  PLX 9050, with
211 	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
212 	 * into the subsystem fields, and claims that it's a
213 	 * network/misc (0x02/0x80) device.
214 	 */
215 	{   /* "Dolphin Peripherals 4014" */
216 	    {	PCI_VENDOR_PLX,	PCI_PRODUCT_PLX_9050,	0xd84d,	0x6810	},
217 	    {	0xffff,	0xffff,				0xffff,	0xffff	},
218 	    {
219 		{ PUC_LPT, 0x20, 0x0000 },
220 		{ PUC_LPT, 0x24, 0x0000 },
221 	    },
222 	},
223 
224 	/*
225 	 * XXX no entry because I have no data:
226 	 * XXX Dolphin Peripherals 4025 (single serial)
227 	 */
228 
229 	/*
230 	 * Dolphin Peripherals 4035 (dual serial port) card.  PLX 9050, with
231 	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
232 	 * into the subsystem fields, and claims that it's a
233 	 * network/misc (0x02/0x80) device.
234 	 */
235 	{   /* "Dolphin Peripherals 4035" */
236 	    {	PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9050,	0xd84d,	0x6808	},
237 	    {	0xffff,	0xffff,				0xffff,	0xffff	},
238 	    {
239 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
240 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
241 	    },
242 	},
243 
244 	/*
245 	 * XXX no entry because I have no data:
246 	 * XXX Dolphin Peripherals 4078 (dual serial and single parallel)
247 	 */
248 
249 	/*
250 	 * Decision PCCOM PCI series. PLX 9052 with 1 or 2 16554 UARTS
251 	 */
252 
253 	/* Decision Computer Inc PCCOM 2 Port RS232/422/485: 2S */
254 	{   /* "Decision Computer Inc PCCOM 2 Port RS232/422/485", */
255 	    {	PCI_VENDOR_DCI,	PCI_PRODUCT_DCI_APCI2,		0, 0	},
256 	    {	0xffff,	0xffff,					0, 0	},
257 	    {
258 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
259 		{ PUC_COM_POW2(0), 0x1c, 0x0008 },
260 	    },
261 	},
262 
263 	/* Decision Computer Inc PCCOM 4 Port RS232/422/485: 4S */
264 	{   /* "Decision Computer Inc PCCOM 4 Port RS232/422/485", */
265 	    {	PCI_VENDOR_DCI,	PCI_PRODUCT_DCI_APCI4,		0, 0	},
266 	    {	0xffff,	0xffff,					0, 0	},
267 	    {
268 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
269 		{ PUC_COM_POW2(0), 0x1c, 0x0008 },
270 		{ PUC_COM_POW2(0), 0x1c, 0x0010 },
271 		{ PUC_COM_POW2(0), 0x1c, 0x0018 },
272 	    },
273 	},
274 
275 	/* Decision Computer Inc PCCOM 8 Port RS232/422/485: 8S */
276 	{   /* "Decision Computer Inc PCCOM 8 Port RS232/422/485", */
277 	    {	PCI_VENDOR_DCI, PCI_PRODUCT_DCI_APCI8,		0, 0	},
278 	    {	0xffff,	0xffff,					0, 0	},
279 	    {
280 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
281 		{ PUC_COM_POW2(0), 0x1c, 0x0008 },
282 		{ PUC_COM_POW2(0), 0x1c, 0x0010 },
283 		{ PUC_COM_POW2(0), 0x1c, 0x0018 },
284 		{ PUC_COM_POW2(0), 0x1c, 0x0020 },
285 		{ PUC_COM_POW2(0), 0x1c, 0x0028 },
286 		{ PUC_COM_POW2(0), 0x1c, 0x0030 },
287 		{ PUC_COM_POW2(0), 0x1c, 0x0038 },
288 	    },
289 	},
290 	/* IBM SurePOS 300 Series (481033H) serial ports */
291 	{   /* "IBM SurePOS 300 Series (481033H) serial ports", */
292 	    {	PCI_VENDOR_IBM, PCI_PRODUCT_IBM_4810_SCC,	0, 0	},
293 	    {	0xffff, 0xffff,					0, 0	},
294 	    {
295 		{ PUC_COM_POW2(0), 0x10, 0x0000 }, /* Port C */
296 		{ PUC_COM_POW2(0), 0x18, 0x0000 }, /* Port D */
297 		{ PUC_COM_POW2(0), 0x14, 0x0000 }, /* Port E */
298 		{ PUC_COM_POW2(0), 0x1c, 0x0000 }, /* Port F */
299 	    },
300 	},
301 
302 	/*
303 	 * SIIG Boards.
304 	 *
305 	 * SIIG provides documentation for their boards at:
306 	 * <URL:http://www.siig.com/driver.htm>
307 	 *
308 	 * Please excuse the weird ordering, it's the order they
309 	 * use in their documentation.
310 	 */
311 
312 	/*
313 	 * SIIG "10x" family boards.
314 	 */
315 
316 	/* SIIG Cyber Serial PCI 16C550 (10x family): 1S */
317 	{   /* "SIIG Cyber Serial PCI 16C550 (10x family)", */
318 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1000,		0, 0	},
319 	    {	0xffff,	0xffff,					0, 0	},
320 	    {
321 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
322 	    },
323 	},
324 
325 	/* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
326 	{   /* "SIIG Cyber Serial PCI 16C650 (10x family)", */
327 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1001,		0, 0	},
328 	    {	0xffff,	0xffff,					0, 0	},
329 	    {
330 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
331 	    },
332 	},
333 
334 	/* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
335 	{   /* "SIIG Cyber Serial PCI 16C850 (10x family)", */
336 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1002,		0, 0	},
337 	    {	0xffff,	0xffff,					0, 0	},
338 	    {
339 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
340 	    },
341 	},
342 
343 	/* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
344 	{   /* "SIIG Cyber I/O PCI 16C550 (10x family)", */
345 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1010,		0, 0	},
346 	    {	0xffff,	0xffff,					0, 0	},
347 	    {
348 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
349 		{ PUC_LPT, 0x1c, 0x0000 },
350 	    },
351 	},
352 
353 	/* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
354 	{   /* "SIIG Cyber I/O PCI 16C650 (10x family)", */
355 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1011,		0, 0	},
356 	    {	0xffff,	0xffff,					0, 0	},
357 	    {
358 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
359 		{ PUC_LPT, 0x1c, 0x0000 },
360 	    },
361 	},
362 
363 	/* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
364 	{   /* "SIIG Cyber I/O PCI 16C850 (10x family)", */
365 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1012,		0, 0	},
366 	    {	0xffff,	0xffff,					0, 0	},
367 	    {
368 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
369 		{ PUC_LPT, 0x1c, 0x0000 },
370 	    },
371 	},
372 
373 	/* SIIG Cyber Parallel PCI (10x family): 1P */
374 	{   /* "SIIG Cyber Parallel PCI (10x family)", */
375 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1020,		0, 0	},
376 	    {	0xffff,	0xffff,					0, 0	},
377 	    {
378 		{ PUC_LPT, 0x18, 0x0000 },
379 	    },
380 	},
381 
382 	/* SIIG Cyber Parallel Dual PCI (10x family): 2P */
383 	{   /* "SIIG Cyber Parallel Dual PCI (10x family)", */
384 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1021,		0, 0	},
385 	    {	0xffff,	0xffff,					0, 0	},
386 	    {
387 		{ PUC_LPT, 0x18, 0x0000 },
388 		{ PUC_LPT, 0x20, 0x0000 },
389 	    },
390 	},
391 
392 	/* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
393 	{   /* "SIIG Cyber Serial Dual PCI 16C550 (10x family)", */
394 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1030,		0, 0	},
395 	    {	0xffff,	0xffff,					0, 0	},
396 	    {
397 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
398 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
399 	    },
400 	},
401 
402 	/* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
403 	{   /* "SIIG Cyber Serial Dual PCI 16C650 (10x family)", */
404 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1031,		0, 0	},
405 	    {	0xffff,	0xffff,					0, 0	},
406 	    {
407 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
408 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
409 	    },
410 	},
411 
412 	/* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
413 	{   /* "SIIG Cyber Serial Dual PCI 16C850 (10x family)", */
414 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1032,		0, 0	},
415 	    {	0xffff,	0xffff,					0, 0	},
416 	    {
417 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
418 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
419 	    },
420 	},
421 
422 	/* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
423 	{   /* "SIIG Cyber 2S1P PCI 16C550 (10x family)", */
424 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1034,		0, 0	},
425 	    {	0xffff,	0xffff,					0, 0	},
426 	    {
427 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
428 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
429 		{ PUC_LPT, 0x20, 0x0000 },
430 	    },
431 	},
432 
433 	/* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
434 	{   /* "SIIG Cyber 2S1P PCI 16C650 (10x family)", */
435 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1035,		0, 0	},
436 	    {	0xffff,	0xffff,					0, 0	},
437 	    {
438 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
439 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
440 		{ PUC_LPT, 0x20, 0x0000 },
441 	    },
442 	},
443 
444 	/* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
445 	{   /* "SIIG Cyber 2S1P PCI 16C850 (10x family)", */
446 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1036,		0, 0	},
447 	    {	0xffff,	0xffff,					0, 0	},
448 	    {
449 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
450 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
451 		{ PUC_LPT, 0x20, 0x0000 },
452 	    },
453 	},
454 
455 	/* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
456 	{   /* "SIIG Cyber 4S PCI 16C550 (10x family)", */
457 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1050,		0, 0	},
458 	    {	0xffff,	0xffff,					0, 0	},
459 	    {
460 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
461 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
462 		{ PUC_COM_POW2(0), 0x20, 0x0000 },
463 		{ PUC_COM_POW2(0), 0x24, 0x0000 },
464 	    },
465 	},
466 
467 	/* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
468 	{   /* "SIIG Cyber 4S PCI 16C650 (10x family)", */
469 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1051,		0, 0	},
470 	    {	0xffff,	0xffff,					0, 0	},
471 	    {
472 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
473 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
474 		{ PUC_COM_POW2(0), 0x20, 0x0000 },
475 		{ PUC_COM_POW2(0), 0x24, 0x0000 },
476 	    },
477 	},
478 
479 	/* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
480 	{   /* "SIIG Cyber 4S PCI 16C850 (10x family)", */
481 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1052,		0, 0	},
482 	    {	0xffff,	0xffff,					0, 0	},
483 	    {
484 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
485 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
486 		{ PUC_COM_POW2(0), 0x20, 0x0000 },
487 		{ PUC_COM_POW2(0), 0x24, 0x0000 },
488 	    },
489 	},
490 
491 	/*
492 	 * SIIG "20x" family boards.
493 	 */
494 
495 	/* SIIG Cyber Parallel PCI (20x family): 1P */
496 	{   /* "SIIG Cyber Parallel PCI (20x family)", */
497 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2020,		0, 0	},
498 	    {	0xffff,	0xffff,					0, 0	},
499 	    {
500 		{ PUC_LPT, 0x10, 0x0000 },
501 	    },
502 	},
503 
504 	/* SIIG Cyber Parallel Dual PCI (20x family): 2P */
505 	{   /* "SIIG Cyber Parallel Dual PCI (20x family)", */
506 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2021,		0, 0	},
507 	    {	0xffff,	0xffff,					0, 0	},
508 	    {
509 		{ PUC_LPT, 0x10, 0x0000 },
510 		{ PUC_LPT, 0x18, 0x0000 },
511 	    },
512 	},
513 
514 	/* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
515 	{   /* "SIIG Cyber 2P1S PCI 16C550 (20x family)", */
516 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2040,		0, 0	},
517 	    {	0xffff,	0xffff,					0, 0	},
518 	    {
519 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
520 		{ PUC_LPT, 0x14, 0x0000 },
521 		{ PUC_LPT, 0x1c, 0x0000 },
522 	    },
523 	},
524 
525 	/* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
526 	{   /* "SIIG Cyber 2P1S PCI 16C650 (20x family)", */
527 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2041,		0, 0	},
528 	    {	0xffff,	0xffff,					0, 0	},
529 	    {
530 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
531 		{ PUC_LPT, 0x14, 0x0000 },
532 		{ PUC_LPT, 0x1c, 0x0000 },
533 	    },
534 	},
535 
536 	/* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
537 	{   /* "SIIG Cyber 2P1S PCI 16C850 (20x family)", */
538 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2042,		0, 0	},
539 	    {	0xffff,	0xffff,					0, 0	},
540 	    {
541 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
542 		{ PUC_LPT, 0x14, 0x0000 },
543 		{ PUC_LPT, 0x1c, 0x0000 },
544 	    },
545 	},
546 
547 	/* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
548 	{   /* "SIIG Cyber Serial PCI 16C550 (20x family)", */
549 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2000,		0, 0	},
550 	    {	0xffff,	0xffff,					0, 0	},
551 	    {
552 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
553 	    },
554 	},
555 
556 	/* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
557 	{   /* "SIIG Cyber Serial PCI 16C650 (20x family)", */
558 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2001,		0, 0	},
559 	    {	0xffff,	0xffff,					0, 0	},
560 	    {
561 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
562 	    },
563 	},
564 
565 	/* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
566 	{   /* "SIIG Cyber Serial PCI 16C850 (20x family)", */
567 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2002,		0, 0	},
568 	    {	0xffff,	0xffff,					0, 0	},
569 	    {
570 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
571 	    },
572 	},
573 
574 	/* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
575 	{   /* "SIIG Cyber I/O PCI 16C550 (20x family)", */
576 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2010,		0, 0	},
577 	    {	0xffff,	0xffff,					0, 0	},
578 	    {
579 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
580 		{ PUC_LPT, 0x14, 0x0000 },
581 	    },
582 	},
583 
584 	/* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
585 	{   /* "SIIG Cyber I/O PCI 16C650 (20x family)", */
586 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2011,		0, 0	},
587 	    {	0xffff,	0xffff,					0, 0	},
588 	    {
589 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
590 		{ PUC_LPT, 0x14, 0x0000 },
591 	    },
592 	},
593 
594 	/* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
595 	{   /* "SIIG Cyber I/O PCI 16C850 (20x family)", */
596 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2012,		0, 0	},
597 	    {	0xffff,	0xffff,					0, 0	},
598 	    {
599 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
600 		{ PUC_LPT, 0x14, 0x0000 },
601 	    },
602 	},
603 
604 	/* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
605 	{   /* "SIIG Cyber Serial Dual PCI 16C550 (20x family)", */
606 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2030,		0, 0	},
607 	    {	0xffff,	0xffff,					0, 0	},
608 	    {
609 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
610 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
611 	    },
612 	},
613 
614 	/* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
615 	{   /* "SIIG Cyber Serial Dual PCI 16C650 (20x family)", */
616 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2031,		0, 0	},
617 	    {	0xffff,	0xffff,					0, 0	},
618 	    {
619 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
620 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
621 	    },
622 	},
623 
624 	/* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
625 	{   /* "SIIG Cyber Serial Dual PCI 16C850 (20x family)", */
626 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2032,		0, 0	},
627 	    {	0xffff,	0xffff,					0, 0	},
628 	    {
629 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
630 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
631 	    },
632 	},
633 
634 	/* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
635 	{   /* "SIIG Cyber 2S1P PCI 16C550 (20x family)", */
636 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2060,		0, 0	},
637 	    {	0xffff,	0xffff,					0, 0	},
638 	    {
639 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
640 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
641 		{ PUC_LPT, 0x18, 0x0000 },
642 	    },
643 	},
644 
645 	/* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
646 	{   /* "SIIG Cyber 2S1P PCI 16C650 (20x family)", */
647 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2061,		0, 0	},
648 	    {	0xffff,	0xffff,					0, 0	},
649 	    {
650 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
651 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
652 		{ PUC_LPT, 0x18, 0x0000 },
653 	    },
654 	},
655 
656 	/* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
657 	{   /* "SIIG Cyber 2S1P PCI 16C850 (20x family)", */
658 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2062,		0, 0	},
659 	    {	0xffff,	0xffff,					0, 0	},
660 	    {
661 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
662 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
663 		{ PUC_LPT, 0x18, 0x0000 },
664 	    },
665 	},
666 
667 	/* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
668 	{   /* "SIIG Cyber 4S PCI 16C550 (20x family)", */
669 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2050,		0, 0	},
670 	    {	0xffff,	0xffff,					0, 0	},
671 	    {
672 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
673 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
674 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
675 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
676 	    },
677 	},
678 
679 	/* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
680 	{   /* "SIIG Cyber 4S PCI 16C650 (20x family)", */
681 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2051,		0, 0	},
682 	    {	0xffff,	0xffff,					0, 0	},
683 	    {
684 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
685 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
686 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
687 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
688 	    },
689 	},
690 
691 	/* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
692 	{   /* "SIIG Cyber 4S PCI 16C850 (20x family)", */
693 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2052,		0, 0	},
694 	    {	0xffff,	0xffff,					0, 0	},
695 	    {
696 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
697 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
698 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
699 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
700 	    },
701 	},
702 
703 	/* SIIG Cyber 8S PCI 16C850 (20x family): 8S */
704 	{   /* "SIIG Cyber 8S PCI 16C850 (20x family)", */
705 	    {	PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2081,		0, 0	},
706 	    {	0xffff, 0xffff,					0, 0	},
707 	    {
708 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
709 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
710 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
711 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
712 		{ PUC_COM_POW2(0), 0x20, 0x0000 },
713 		{ PUC_COM_POW2(0), 0x20, 0x0008 },
714 		{ PUC_COM_POW2(0), 0x20, 0x0010 },
715 		{ PUC_COM_POW2(0), 0x20, 0x0018 },
716 	    },
717 	},
718 
719 	/* SIIG Cyber 8S PCI 16C850 (20x family): 8S */
720 	{   /* "SIIG Cyber 8S PCI 16C850 (20x family)", */
721 	    {	PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,
722 		PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2082	},
723 	    {	0xffff, 0xffff,	0xffff, 0xffff	},
724 	    {
725 		{ PUC_COM_MUL(10), 0x10, 0x0000 },
726 		{ PUC_COM_MUL(10), 0x10, 0x0008 },
727 		{ PUC_COM_MUL(10), 0x10, 0x0010 },
728 		{ PUC_COM_MUL(10), 0x10, 0x0018 },
729 	    },
730 	},
731 
732 	/* OX16PCI954, first part of Serial Technologies Expander PCI-232-108 */
733 	{   /* "OX16PCI954" */
734 	    {	PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,
735 		PCI_VENDOR_OXFORD2, 0	},
736 	    {	0xffff, 0xffff,	0xffff, 0xffff	},
737 	    {
738 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
739 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
740 		{ PUC_COM_POW2(3), 0x10, 0x0010 },
741 		{ PUC_COM_POW2(3), 0x10, 0x0018 },
742 	    },
743 	},
744 
745 	/* Exsys EX-41092 (sold as SIIG JJ-E10011-S3) */
746 	{      /* "Exsys EX-41092", */
747 		{ PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_EXSYS_EX41092,0x0000,0x0000},
748 		{ 0xffff, 0xffff,                                       0x0000,0x0000},
749 		{
750 			{ PUC_COM_MUL(10), 0x10, 0x0000 },
751 		},
752 	},
753 
754 	/* Exsys EX-41098, second part of Serial Technologies Expander PCI-232-108 */
755 	{   /* "Exsys EX-41098", */
756 	    {	PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_EXSYS_EX41098,
757 		PCI_VENDOR_OXFORD2, 0	},
758 	    {	0xffff, 0xffff, 0xffff, 0xffff },
759 	    {
760 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
761 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
762 		{ PUC_COM_POW2(3), 0x10, 0x0010 },
763 		{ PUC_COM_POW2(3), 0x10, 0x0018 },
764 	    },
765 	},
766 
767 	/* Exsys EX-41098, second part of SIIG Cyber 8S PCI Card */
768 	{   /* "Exsys EX-41098", */
769 	    {	PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_EXSYS_EX41098,
770 		PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2082	},
771 	    {	0xffff, 0xffff, 0xffff, 0xffff },
772 	    {
773 		{ PUC_COM_MUL(10), 0x10, 0x0000 },
774 		{ PUC_COM_MUL(10), 0x10, 0x0008 },
775 		{ PUC_COM_MUL(10), 0x10, 0x0010 },
776 		{ PUC_COM_MUL(10), 0x10, 0x0018 },
777 	    },
778 	},
779 
780 	/*
781 	 * VScom PCI-400S, based on PLX 9050 Chip, 16k buffer
782 	 */
783 	{ /* "VScom PCI-400S", */
784 	    { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_1077, 0x10b5, 0x1077 },
785 	    { 0xffff, 0xffff, 0xffff, 0xffff },
786 	    {
787 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
788 		{ PUC_COM_POW2(3), 0x18, 0x0008 },
789 		{ PUC_COM_POW2(3), 0x18, 0x0010 },
790 		{ PUC_COM_POW2(3), 0x18, 0x0018 },
791 	    },
792 	},
793 
794 	/*
795 	 * VScom PCI-800, as sold on http://www.swann.com.au/isp/titan.html.
796 	 * Some PLX chip.  Note: This board has a software selectable(?)
797 	 * clock multiplier which this driver doesn't support, so you'll
798 	 * have to use an appropriately scaled baud rate when talking to
799 	 * the card.
800 	 */
801 	{   /* "VScom PCI-800", */
802 	    {	PCI_VENDOR_PLX,	PCI_PRODUCT_PLX_1076,	0x10b5,	0x1076	},
803 	    {	0xffff,	0xffff,				0xffff,	0xffff	},
804 	    {
805 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
806 		{ PUC_COM_POW2(0), 0x18, 0x0008 },
807 		{ PUC_COM_POW2(0), 0x18, 0x0010 },
808 		{ PUC_COM_POW2(0), 0x18, 0x0018 },
809 		{ PUC_COM_POW2(0), 0x18, 0x0020 },
810 		{ PUC_COM_POW2(0), 0x18, 0x0028 },
811 		{ PUC_COM_POW2(0), 0x18, 0x0030 },
812 		{ PUC_COM_POW2(0), 0x18, 0x0038 },
813 	    },
814 	},
815 
816 	/*
817 	* VScom PCI 011H, 1 lpt.
818 	*/
819 	{   /* "VScom PCI-011H", */
820 	    {	PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_VSCOM_PCI011H,	0, 0 },
821 	    {	0xffff, 0xffff,						0, 0 },
822 	    {
823 		{ PUC_LPT, 0x10, 0x0000 },
824 	    },
825 	},
826 
827 	/*
828 	 * VScom PCI x10H, 1 lpt.
829 	 * is the lpt part of VScom 110H, 210H, 410H
830 	 */
831 	{   /* "VScom PCI-x10H", */
832 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCIx10H,	0, 0 },
833 	    {	0xffff, 0xffff,						0, 0 },
834 	    {
835 		{ PUC_LPT, 0x10, 0x0000 },
836 	    },
837 	},
838 
839 	/*
840 	 * VScom PCI 100H, little sister of 800H, 1 com.
841 	 * also com part of VScom 110H
842 	 * The one I have defaults to a fequency of 14.7456 MHz which is
843 	 * jumper J1 set to 2-3.
844 	 */
845 	{   /* "VScom PCI-100H", */
846 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI100H,	0, 0 },
847 	    {	0xffff, 0xffff,						0, 0 },
848 	    {
849 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
850 	    },
851 	},
852 
853 	/*
854 	 * VScom PCI 200H, little sister of 800H, 2 com.
855 	 * also com part of VScom 210H
856 	 * The one I have defaults to a fequency of 14.7456 MHz which is
857 	 * jumper J1 set to 2-3.
858 	 */
859 
860 	{   /* "VScom PCI-200H", */
861 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI200H,	0, 0 },
862 	    {	0xffff, 0xffff,						0, 0 },
863 	    {
864 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
865 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
866 	    },
867 	},
868 
869 	/*
870 	 * VScom PCI 400H and 800H. Uses 4/8 16950 UART, behind a PCI chips
871 	 * that offers 4 com port on PCI device 0 (both 400H and 800H)
872 	 * and 4 on PCI device 1 (800H only). PCI device 0 has
873 	 * device ID 3 and PCI device 1 device ID 4. Uses a 14.7456 MHz crystal
874 	 * instead of the standart 1.8432MHz.
875 	 * There's a version with a jumper for selecting the crystal frequency,
876 	 * defaults to 8x as used here. The jumperless version uses 8x, too.
877 	 */
878 	{   /* "VScom PCI-400H/800H", */
879 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI800H_0,	0, 0 },
880 	    {	0xffff, 0xffff,						0, 0 },
881 	    {
882 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
883 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
884 		{ PUC_COM_POW2(3), 0x10, 0x0010 },
885 		{ PUC_COM_POW2(3), 0x10, 0x0018 },
886 	    },
887 	},
888 	{   /* "VScom PCI-400H/800H", */
889 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI800H_1,	0, 0 },
890 	    {	0xffff, 0xffff,						0, 0 },
891 	    {
892 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
893 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
894 		{ PUC_COM_POW2(3), 0x10, 0x0010 },
895 		{ PUC_COM_POW2(3), 0x10, 0x0018 },
896 	    },
897 	},
898 
899 	/*
900 	 * VScom PCI 200HV2, is 200H Version 2.
901 	 * Sells as 200H
902 	 */
903 	{   /* "VScom PCI-200HV2", */
904 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI200HV2,	0, 0 },
905 	    {	0xffff, 0xffff,						0, 0 },
906 	    {
907 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
908 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
909 	    },
910 	},
911 
912 	/*
913 	 * VScom PCI 010L
914 	 * one lpt
915 	 * untested
916 	 */
917 	{   /* "VScom PCI-010L", */
918 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI010L,    0, 0 },
919 	    {	0xffff, 0xffff,						0, 0 },
920 	    {
921 		{ PUC_LPT, 0x1c, 0x0000 },
922 	    },
923 	},
924 
925 	/*
926 	 * VScom PCI 100L
927 	 * one com
928 	 * The one I have defaults to a fequency of 14.7456 MHz which is
929 	 * jumper J1 set to 2-3.
930 	 */
931 	{   /* "VScom PCI-100L", */
932 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI100L,	0, 0 },
933 	    {	0xffff, 0xffff,						0, 0 },
934 	    {
935 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
936 	    },
937 	},
938 
939 	/*
940 	 * VScom PCI 110L
941 	 * one com, one lpt
942 	 * untested
943 	 */
944 	{   /* "VScom PCI-110L", */
945 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI110L,	0, 0 },
946 	    {	0xffff, 0xffff,						0, 0 },
947 	    {
948 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
949 		{ PUC_LPT, 0x1c, 0x0000 },
950 	    },
951 	},
952 
953 	/*
954 	 * VScom PCI-200L has 2 x 16550 UARTS.
955 	 * The board has a jumper which allows you to select a clock speed
956 	 * of either 14.7456MHz or 1.8432MHz. By default it runs at
957 	 * the fast speed.
958 	 */
959 	{   /* "VScom PCI-200L with 2 x 16550 UARTS" */
960 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI200L,	0, 0 },
961 	    {	0xffff, 0xffff,						0, 0 },
962 	    {
963 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
964 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
965 	    },
966 	},
967 
968 	/*
969 	 * VScom PCI-210L
970 	 * Has a jumper for frequency selection, defaults to 8x as used here
971 	 * two com, one lpt
972 	 */
973 	{   /* "VScom PCI-210L" */
974 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI210L,	0, 0 },
975 	    {	0xffff, 0xffff,						0, 0 },
976 	    {
977 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
978 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
979 		{ PUC_LPT, 0x1c, 0x0000 },
980 	    },
981 	},
982 
983 	/*
984 	 * VScom PCI 400L
985 	 * Has a jumper for frequency selection, defaults to 8x as used here
986 	 * This is equal to J1 in pos 2-3
987 	 * VendorID mismatch with docs, should be 14d2 (oxford), is 10d2 (molex)
988 	 */
989 	{   /* "VScom PCI-400L", */
990 	    {	PCI_VENDOR_MOLEX, PCI_PRODUCT_MOLEX_VSCOM_PCI400L,	0, 0 },
991 	    {	0xffff, 0xffff,						0, 0 },
992 	    {
993 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
994 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
995 		{ PUC_COM_POW2(3), 0x20, 0x0000 },
996 		{ PUC_COM_POW2(3), 0x20, 0x0008 },
997 	    },
998 	},
999 
1000 	/*
1001 	 * VScom PCI 800L
1002 	 * Has a jumper for frequency selection, defaults to 8x as used here
1003 	 */
1004 	{   /* "VScom PCI-800L", */
1005 	    {	PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI800L,	0, 0 },
1006 	    {	0xffff, 0xffff,						0, 0 },
1007 	    {
1008 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
1009 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
1010 		{ PUC_COM_POW2(3), 0x20, 0x0000 },
1011 		{ PUC_COM_POW2(3), 0x20, 0x0008 },
1012 		{ PUC_COM_POW2(3), 0x20, 0x0010 },
1013 		{ PUC_COM_POW2(3), 0x20, 0x0018 },
1014 		{ PUC_COM_POW2(3), 0x20, 0x0020 },
1015 		{ PUC_COM_POW2(3), 0x20, 0x0028 },
1016 	    },
1017 	},
1018 
1019 	/*
1020 	 * Exsys EX-41098
1021 	 */
1022 	{   /* "Exsys EX-41098", */
1023 	    {	PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_EXSYS_EX41098,	0, 0 },
1024 	    {	0xffff, 0xffff,						0, 0 },
1025 	    {
1026 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1027 		{ PUC_COM_POW2(0), 0x10, 0x0008 },
1028 		{ PUC_COM_POW2(0), 0x10, 0x0010 },
1029 		{ PUC_COM_POW2(0), 0x10, 0x0018 },
1030 	    },
1031 	},
1032 
1033 	/*
1034 	 * Boards with an Oxford Semiconductor chip.
1035 	 *
1036 	 * Oxford Semiconductor provides documentation for their chip at:
1037 	 * <URL:http://www.plxtech.com/products/uart/>
1038 	 *
1039 	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
1040 	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
1041 	 */
1042 
1043 	/* Exsys EX-1372 (uses Oxford OX16PCI952 and a 8x clock) */
1044 	{   /* "Oxford Semiconductor OX16PCI952 UARTs", */
1045 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI952,
1046 		PCI_VENDOR_OXFORD2, 0x0001 },
1047 	    {   0xffff, 0xffff,	0xffff, 0xffff },
1048 	    {
1049 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1050 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
1051 	    },
1052 	},
1053 
1054 	/* Oxford Semiconductor OX16PCI952 PCI `950 UARTs - 128 byte FIFOs */
1055 	{   /* "Oxford Semiconductor OX16PCI952 UARTs", */
1056 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI952,	0, 0 },
1057 	    {   0xffff, 0xffff,						0, 0 },
1058 	    {
1059 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1060 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1061 	    },
1062 	},
1063 
1064 	/* Oxford Semiconductor OX16PCI952 PCI Parallel port */
1065 	{   /* "Oxford Semiconductor OX16PCI952 Parallel port", */
1066 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI952P,	0, 0 },
1067 	    {   0xffff, 0xffff,						0, 0 },
1068 	    {
1069 		{ PUC_LPT, 0x10, 0x0000 },
1070 	    },
1071 	},
1072 
1073 	/* Oxford Semiconductor OXPCIE952 PCIE Parallel port */
1074 	{   /* "Oxford Semiconductor OXPCIE952 PCIE Parallel port", */
1075 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXPCIE952,	0, 0 },
1076 	    {   0xffff, 0xffff,						0, 0 },
1077 	    {
1078 		{ PUC_LPT, 0x10, 0x0000 },
1079 	    },
1080 	},
1081 
1082 	/* SIIG 2050 (uses Oxford 16PCI954 and a 10x clock) */
1083 	{   /* "Oxford Semiconductor OX16PCI954 UARTs", */
1084 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,
1085 		PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2050 },
1086 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1087 	    {
1088 		{ PUC_COM_MUL(10), 0x10, 0x0000 },
1089 		{ PUC_COM_MUL(10), 0x10, 0x0008 },
1090 		{ PUC_COM_MUL(10), 0x10, 0x0010 },
1091 		{ PUC_COM_MUL(10), 0x10, 0x0018 },
1092 	    },
1093 	},
1094 
1095 	/* I-O DATA RSA-PCI2 (uses Oxford 16PCI954 and a 8x clock) */
1096 	{   /* "Oxford Semiconductor OX16PCI954 UARTs", */
1097 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,
1098 		PCI_VENDOR_IODATA, 0xc070 },
1099 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1100 	    {
1101 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1102 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1103 	    },
1104 	},
1105 
1106 	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
1107 	{   /* "Oxford Semiconductor OX16PCI954 UARTs", */
1108 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,	0, 0 },
1109 	    {   0xffff, 0xffff,						0, 0 },
1110 	    {
1111 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1112 		{ PUC_COM_POW2(0), 0x10, 0x0008 },
1113 		{ PUC_COM_POW2(0), 0x10, 0x0010 },
1114 		{ PUC_COM_POW2(0), 0x10, 0x0018 },
1115 	    },
1116 	},
1117 
1118 	/* Commell MP-954GPS, GPS and 2 COM */
1119 	{   /* "Oxford Semiconductor OX16mPCI954 UARTs", */
1120 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXMPCI954,	0, 0 },
1121 	    {   0xffff, 0xffff,						0, 0 },
1122 	    {
1123 		{ PUC_COM_POW2(2), 0x10, 0x0000 },
1124 		{ PUC_COM_POW2(2), 0x10, 0x0008 },
1125 		{ PUC_COM_POW2(2), 0x10, 0x0010 },
1126 	    },
1127 	},
1128 
1129 	/* Oxford Semiconductor OX16PCI954K PCI UARTs */
1130 	{   /* "Oxford Semiconductor OX16PCI954K UARTs", */
1131 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954K,	0, 0 },
1132 	    {   0xffff, 0xffff,						0, 0 },
1133 	    {
1134 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1135 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1136 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1137 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1138 	    },
1139 	},
1140 
1141 	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
1142 	{   /* "Oxford Semiconductor OX16PCI954 Parallel port", */
1143 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954P,	0, 0 },
1144 	    {   0xffff, 0xffff,						0, 0 },
1145 	    {
1146 		{ PUC_LPT, 0x10, 0x0000 },
1147 	    },
1148 	},
1149 
1150 	/* Oxford Semiconductor PCIE `950 UARTs - 128 byte FIFOs */
1151 	{   /* "Oxford Semiconductor PCIE UARTs", */
1152 	    {   PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXPCIE952S,	0, 0 },
1153 	    {   0xffff, 0xffff,						0, 0 },
1154 	    {
1155 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1156 	    },
1157 	},
1158 
1159 	/*
1160 	 * Brainboxes BB16PCI958.
1161 	 * Apparently based on an Oxford Semiconductor OX16PCI958 chip.
1162 	 */
1163 	{    /* "Brainboxes BB16PCI958 UARTs", */
1164 	    {	PCI_VENDOR_BRAINBOXES, PCI_PRODUCT_BRAINBOXES_IS200_BB16PCI958,
1165 		    							0, 0 },
1166 	    {	0xffff, 0xffff,						0, 0 },
1167 	    {
1168 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1169 		{ PUC_COM_POW2(0), 0x18, 0x0008 },
1170 	    },
1171 	},
1172 
1173 	/*
1174 	 * NEC PK-UG-X001 K56flex PCI Modem card.
1175 	 * NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using.
1176 	 */
1177 	{   /* "NEC PK-UG-X001 K56flex PCI Modem", */
1178 	    {	PCI_VENDOR_NEC,	PCI_PRODUCT_NEC_MARTH,	0x1033,	0x8014	},
1179 	    {	0xffff,	0xffff,				0xffff,	0xffff	},
1180 	    {
1181 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1182 	    },
1183 	},
1184 
1185 	/* NEC PK-UG-X008 */
1186 	{   /* "NEC PK-UG-X008", */
1187 	    {	PCI_VENDOR_NEC,	PCI_PRODUCT_NEC_PKUG,	0x1033,	0x8012	},
1188 	    {	0xffff,	0xffff,				0xffff,	0xffff	},
1189 	    {
1190 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1191 	    },
1192 	},
1193 
1194 	/* Lava Computers 2SP-PCI (0x8000-0x8003) */
1195 	{   /* "Lava Computers 2SP-PCI parallel port", */
1196 	    {	PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_TWOSP_1P,	0, 0	},
1197 	    {	0xffff,	0xfffc,					0, 0	},
1198 	    {
1199 		{ PUC_LPT, 0x10, 0x0000 },
1200 	    },
1201 	},
1202 
1203 	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
1204 	{   /* "Lava Computers dual serial port", */
1205 	    {	PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_TWOSP_2S,	0, 0	},
1206 	    {	0xffff,	0xfffc,					0, 0	},
1207 	    {
1208 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1209 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1210 	    },
1211 	},
1212 
1213 	/*
1214 	 * Lava Computers Quattro-PCI serial ports.
1215 	 * A second version of the Quattro-PCI with different PCI ids.
1216 	 */
1217 	{   /* "Lava Computers Quattro-PCI 4-port serial", */
1218 	    {	PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_QUATTRO_AB2,	0, 0	},
1219 	    {	0xffff,	0xfffe,					0, 0	},
1220 	    {
1221 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1222 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1223 	    },
1224 	},
1225 
1226 	/*
1227 	 * Lava Computers LavaPort-Dual and LavaPort-Quad 4*clock PCI
1228 	 * serial ports.
1229 	 */
1230 	{   /* "Lava Computers high-speed port", */
1231 	    {	PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_LAVAPORT_0,	0, 0	},
1232 	    {	0xffff,	0xfffc,					0, 0	},
1233 	    {
1234 		{ PUC_COM_POW2(2), 0x10, 0x0000 },
1235 		{ PUC_COM_POW2(2), 0x14, 0x0000 },
1236 	    },
1237 	},
1238 
1239 	/*
1240 	 * Lava Computers LavaPort-single serial port.
1241 	 */
1242 	{   /* "Lava Computers high-speed port", */
1243 	    {	PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_LAVAPORT_2,	0, 0	},
1244 	    {	0xffff,	0xfffc,					0, 0	},
1245 	    {
1246 		{ PUC_COM_POW2(2), 0x10, 0x0000 },
1247 	    },
1248 	},
1249 
1250 	/* Lava Computers LavaPort-650 */
1251 	{   /* "Lava Computers high-speed port", */
1252 	    {	PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_650,		0, 0	},
1253 	    {	0xffff,	0xfffc,					0, 0	},
1254 	    {
1255 		{ PUC_COM_POW2(2), 0x10, 0x0000 },
1256 	    },
1257 	},
1258 
1259 	/* Koutech IOFLEX-2S PCI Dual Port Serial, port 1 */
1260 	{   /* "Koutech IOFLEX-2S PCI Dual Port Serial, port 1", */
1261 	    {	PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_IOFLEX_2S_0,	0, 0	},
1262 	    {	0xffff,	0xfffc,					0, 0	},
1263 	    {
1264 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1265 	    },
1266 	},
1267 
1268 	/* Koutech IOFLEX-2S PCI Dual Port Serial, port 2 */
1269 	{   /* "Koutech IOFLEX-2S PCI Dual Port Serial, port 2", */
1270 	    {	PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_IOFLEX_2S_1,	0, 0	},
1271 	    {	0xffff,	0xfffc,					0, 0	},
1272 	    {
1273 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1274 	    },
1275 	},
1276 
1277 	/* Lava Computers Octopus-550 serial ports */
1278 	{   /* "Lava Computers Octopus-550 8-port serial", */
1279 	    {   PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_OCTOPUS550_0,	0, 0	},
1280 	    {   0xffff, 0xfffc,					0, 0	},
1281 	    {
1282 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1283 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1284 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1285 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1286 	    },
1287 	},
1288 
1289 	/* Lava Computers Octopus-550 serial ports */
1290 	{   /* "Lava Computers Octopus-550 8-port serial", */
1291 	    {   PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_OCTOPUS550_1,	0, 0	},
1292 	    {   0xffff, 0xfffc,					0, 0	},
1293 	    {
1294 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1295 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1296 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1297 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1298 	    },
1299 	},
1300 
1301 	/* US Robotics (3Com) PCI Modems */
1302 	{   /* "US Robotics (3Com) 3CP5610 PCI 16550 Modem", */
1303 	    {	PCI_VENDOR_USR, PCI_PRODUCT_USR_3CP5610,	0, 0	},
1304 	    {	0xffff,	0xffff,					0, 0	},
1305 	    {
1306 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1307 	    },
1308 	},
1309 
1310 	/* IBM 33L4618: AT&T/Lucent Venus Modem */
1311 	{   /* "IBM 33L4618: AT&T/Lucent Venus Modem", */
1312 	    /* "Actiontec 56K PCI Master" */
1313 	    {	PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_VENUSMODEM,	0, 0 },
1314 	    {	0xffff,	0xffff,						0, 0 },
1315 	    {
1316 		{ PUC_COM_POW2(0), 0x18, 0x0008 },
1317 	    },
1318 	},
1319 
1320 	/* Topic/SmartLink 5634PCV SurfRider */
1321 	{   /* "Topic/SmartLink 5634PCV SurfRider" */
1322 	    {	PCI_VENDOR_TOPIC, PCI_PRODUCT_TOPIC_5634PCV,	0, 0	},
1323 	    {	0xffff,	0xffff,					0, 0	},
1324 	    {
1325 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1326 	    },
1327 	},
1328 
1329 	/* SD-LAB PCI I/O Card 4S */
1330 	{   /* "Syba Tech Ltd. PCI-4S" */
1331 	    {   PCI_VENDOR_SYBA, PCI_PRODUCT_SYBA_4S,		0, 0	},
1332 	    {	0xffff,	0xffff,					0, 0	},
1333 	    {
1334 		{ PUC_COM_POW2(0), 0x10, 0x03e8 },
1335 		{ PUC_COM_POW2(0), 0x10, 0x02e8 },
1336 		{ PUC_COM_POW2(0), 0x10, 0x03f8 },
1337 		{ PUC_COM_POW2(0), 0x10, 0x02f8 },
1338 	    },
1339 	},
1340 
1341 	/* SD-LAB PCI I/O Card 4S2P */
1342 	{   /* "Syba Tech Ltd. PCI-4S2P-550-ECP" */
1343 	    {   PCI_VENDOR_SYBA, PCI_PRODUCT_SYBA_4S2P,		0, 0	},
1344 	    {	0xffff,	0xffff,					0, 0	},
1345 	    {
1346 		{ PUC_COM_POW2(0), 0x10, 0x02e8 },
1347 		{ PUC_COM_POW2(0), 0x10, 0x02f8 },
1348 		{ PUC_LPT, 0x10, 0x0000 },
1349 		{ PUC_COM_POW2(0), 0x10, 0x03e8 },
1350 		{ PUC_COM_POW2(0), 0x10, 0x03f8 },
1351 		{ PUC_LPT, 0x10, 0x0000 },
1352 	    },
1353 	},
1354 
1355 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
1356 	{   /* "Moxa Technologies, Industio CP-114" */
1357 	    {	PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_CP114,	0, 0	},
1358 	    {	0xffff,	0xffff,					0, 0	},
1359 	    {
1360 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
1361 		{ PUC_COM_POW2(3), 0x18, 0x0008 },
1362 		{ PUC_COM_POW2(3), 0x18, 0x0010 },
1363 		{ PUC_COM_POW2(3), 0x18, 0x0018 },
1364 	    },
1365 	},
1366 
1367 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
1368 	{   /* "Moxa Technologies, SmartIO C104H/PCI" */
1369 	    {	PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_C104H,	0, 0	},
1370 	    {	0xffff,	0xffff,					0, 0	},
1371 	    {
1372 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
1373 		{ PUC_COM_POW2(3), 0x18, 0x0008 },
1374 		{ PUC_COM_POW2(3), 0x18, 0x0010 },
1375 		{ PUC_COM_POW2(3), 0x18, 0x0018 },
1376 	    },
1377 	},
1378 
1379 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1380 	{   /* "Moxa Technologies, SmartIO CP104UL/PCI" */
1381 	    {	PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_CP104UL,	0, 0	},
1382 	    {	0xffff,	0xffff,					0, 0	},
1383 	    {
1384 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
1385 		{ PUC_COM_POW2(3), 0x18, 0x0008 },
1386 		{ PUC_COM_POW2(3), 0x18, 0x0010 },
1387 		{ PUC_COM_POW2(3), 0x18, 0x0018 },
1388 	    },
1389 	},
1390 
1391 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1392 	{   /* "Moxa Technologies, SmartIO CP104JU/PCI" */
1393 	    {	PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_CP104JU,	0, 0	},
1394 	    {	0xffff,	0xffff,					0, 0	},
1395 	    {
1396 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
1397 		{ PUC_COM_POW2(3), 0x18, 0x0008 },
1398 		{ PUC_COM_POW2(3), 0x18, 0x0010 },
1399 		{ PUC_COM_POW2(3), 0x18, 0x0018 },
1400 	    },
1401 	},
1402 
1403 	/* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1404 	{   /* "Moxa Technologies, Industio C168H" */
1405 	    {	PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_C168H,	0, 0	},
1406 	    {	0xffff,	0xffff,					0, 0	},
1407 	    {
1408 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
1409 		{ PUC_COM_POW2(3), 0x18, 0x0008 },
1410 		{ PUC_COM_POW2(3), 0x18, 0x0010 },
1411 		{ PUC_COM_POW2(3), 0x18, 0x0018 },
1412 		{ PUC_COM_POW2(3), 0x18, 0x0020 },
1413 		{ PUC_COM_POW2(3), 0x18, 0x0028 },
1414 		{ PUC_COM_POW2(3), 0x18, 0x0030 },
1415 		{ PUC_COM_POW2(3), 0x18, 0x0038 },
1416 	    },
1417 	},
1418 
1419 	/* NetMos 1P PCI: 1P */
1420 	{   /* "NetMos NM9805 1284 Printer Port" */
1421 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9805,	0, 0	},
1422 	    {	0xffff,	0xffff,					0, 0	},
1423 	    {
1424 		{ PUC_LPT, 0x10, 0x0000 },
1425 	    },
1426 	},
1427 
1428 	/* NetMos 1S PCI 16C650 : 1S */
1429 	{   /* "NetMos NM9835 UART" */
1430 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9835,	0x1000, 0x0001	},
1431 	    {	0xffff,	0xffff,					0xffff, 0xffff	},
1432 	    {
1433 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1434 	    },
1435 	},
1436 
1437 	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
1438 	{   /* "NetMos NM9835 Dual UART and 1284 Printer port" */
1439 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9835,	0, 0	},
1440 	    {	0xffff,	0xffff,					0, 0	},
1441 	    {
1442 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1443 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1444 		{ PUC_LPT, 0x18, 0x0000 },
1445 	    },
1446 	},
1447 
1448 	/* NetMos 4S PCI 16C650 : 4S, 0P */
1449 	{   /* "NetMos NM9845 Quad UART" */
1450 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9845, 0x1000, 0x0004 },
1451 	    {	0xffff,	0xffff,				      0xffff, 0xffff },
1452 	    {
1453 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1454 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1455 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1456 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1457 	    },
1458 	},
1459 
1460 	/* NetMos 4S1P PCI 16C650 : 4S, 1P */
1461 	{   /* "NetMos NM9845 Quad UART and 1284 Printer port" */
1462 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9845, 0x1000, 0x0014 },
1463 	    {	0xffff,	0xffff,				      0xffff, 0xffff },
1464 	    {
1465 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1466 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1467 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1468 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1469 		{ PUC_LPT, 0x20, 0x0000 },
1470 	    },
1471 	},
1472 
1473 	/* NetMos 6S PCI 16C650 : 6S, 0P */
1474 	{   /* "NetMos NM9845 6 UART" */
1475 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9845, 0x1000, 0x0006 },
1476 	    {	0xffff,	0xffff,				      0xffff, 0xffff },
1477 	    {
1478 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1479 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1480 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1481 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1482 		{ PUC_COM_POW2(0), 0x20, 0x0000 },
1483 		{ PUC_COM_POW2(0), 0x24, 0x0000 },
1484 	    },
1485 	},
1486 
1487 	/* NetMos 2S PCI 16C650 : 2S */
1488 	{   /* "NetMos NM9845 Dual UART" */
1489 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9845,	0, 0	},
1490 	    {	0xffff,	0xffff,					0, 0	},
1491 	    {
1492 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1493 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1494 	    },
1495 	},
1496 
1497 	/* NetMos 6S PCI 16C650 : 6S
1498 	 * Shows up as three PCI devices, two with a single serial
1499 	 * port and one with four serial ports (on a special ISA
1500 	 * extender chip).
1501 	 */
1502 	{   /* "NetMos NM9865 6 UART: 1 UART" */
1503 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000, 0x1000 },
1504 	    {	0xffff,	0xffff,				      0xffff, 0xffff },
1505 	    {
1506 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1507 	    },
1508 	},
1509 	{   /* "NetMos NM9865 6 UART: 4 UART ISA" */
1510 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000, 0x3004 },
1511 	    {	0xffff,	0xffff,				      0xffff, 0xffff },
1512 	    {
1513 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1514 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1515 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1516 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1517 	    },
1518 	},
1519 
1520 	/* NetMos PCIe Peripheral Controller :UART part */
1521 	{   /* "NetMos NM9901 UART" */
1522 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9901, 0xa000, 0x1000 },
1523 	    {	0xffff,	0xffff,				      0xffff, 0xffff },
1524 	    {
1525 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1526 	    },
1527 	},
1528 
1529 	/* NetMos PCIe Peripheral Controller :parallel part */
1530 	{   /* "NetMos NM9901 UART" */
1531 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9901, 0xa000, 0x2000 },
1532 	    {	0xffff,	0xffff,				      0xffff, 0xffff },
1533 	    {
1534 		{ PUC_LPT, 0x10, 0x0000 },
1535 	    },
1536 	},
1537 
1538 	{   /* NetMos NM9922: 2S */
1539 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9922, 0xa000, 0x1000 },
1540 	    {	0xffff,	0xffff,				      0xffff, 0xffff },
1541 	    {
1542 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1543 	    },
1544 	},
1545 
1546 	{ /* Sunix 4018A : 2-port parallel */
1547 	    {   PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_4018A,	0, 0	},
1548 	    {	0xffff,	0xffff,					0, 0	},
1549 	    {
1550 		{ PUC_LPT, 0x10, 0x0000 },
1551 		{ PUC_LPT, 0x18, 0x0000 },
1552 	    },
1553 	},
1554 
1555 	/*
1556 	 * SUNIX 40XX series of serial/parallel combo cards.
1557 	 * Tested with 4055A and 4065A.
1558 	 */
1559 	{   /* SUNIX 400X 1P */
1560 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4000 },
1561 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
1562 	    {
1563 		{ PUC_LPT, 0x10, 0x0000 },
1564 	    },
1565 	},
1566 
1567 	{   /* SUNIX 401X 2P */
1568 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4010 },
1569 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
1570 	    {
1571 		{ PUC_LPT, 0x10, 0x0000 },
1572 		{ PUC_LPT, 0x18, 0x0000 },
1573 	    },
1574 	},
1575 
1576 	{   /* SUNIX 402X 1S */
1577 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4020 },
1578 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
1579 	    {
1580 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1581 	    },
1582 	},
1583 
1584 	{   /* SUNIX 403X 2S */
1585 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4030 },
1586 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
1587 	    {
1588 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1589 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1590 	    },
1591 	},
1592 
1593 	{   /* SUNIX 4036 2S */
1594 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x0002 },
1595 	    {	0xffff,	0xffff,	0xffff,	0xffff },
1596 	    {
1597 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1598 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1599 	    },
1600 	},
1601 
1602 	{   /* SUNIX 405X 4S */
1603 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4050 },
1604 	    {	0xffff,	0xffff,	0xffff,	0xe0f0 },
1605 	    {
1606 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1607 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1608 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1609 		{ PUC_COM_POW2(0), 0x14, 0x0008 },
1610 	    },
1611 	},
1612 
1613 	{   /* SUNIX 406X 8S */
1614 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x5066 },
1615 	    {	0xffff,	0xffff,	0xffff,	0xffff },
1616 	    {
1617 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1618 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1619 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1620 		{ PUC_COM_POW2(0), 0x14, 0x0008 },
1621 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1622 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1623 		{ PUC_COM_POW2(0), 0x20, 0x0000 },
1624 		{ PUC_COM_POW2(0), 0x24, 0x0000 },
1625 	    },
1626 	},
1627 
1628 	{   /* SUNIX 406X 8S */
1629 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4060 },
1630 	    {	0xffff,	0xffff,	0xffff,	0xe0f0 },
1631 	    {
1632 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1633 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1634 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
1635 		{ PUC_COM_POW2(3), 0x14, 0x0008 },
1636 		{ PUC_COM_POW2(3), 0x18, 0x0000 },
1637 		{ PUC_COM_POW2(3), 0x1c, 0x0000 },
1638 		{ PUC_COM_POW2(3), 0x20, 0x0000 },
1639 		{ PUC_COM_POW2(3), 0x24, 0x0000 },
1640 	    },
1641 	},
1642 
1643 	{   /* SUNIX 407X 2S/1P */
1644 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4070 },
1645 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
1646 	    {
1647 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1648 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1649 		{ PUC_LPT, 0x18, 0x0000 },
1650 	    },
1651 	},
1652 
1653 	{   /* SUNIX 408X 2S/2P */
1654 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4080 },
1655 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
1656 	    {
1657 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1658 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1659 		{ PUC_LPT, 0x18, 0x0000 },
1660 		{ PUC_LPT, 0x20, 0x0000 },
1661 	    },
1662 	},
1663 
1664 	{   /* SUNIX 409X 4S/2P */
1665 	    {	PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4090 },
1666 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
1667 	    {
1668 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1669 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1670 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1671 		{ PUC_COM_POW2(0), 0x14, 0x0008 },
1672 		{ PUC_LPT, 0x18, 0x0000 },
1673 		{ PUC_LPT, 0x20, 0x0000 },
1674 	    },
1675 	},
1676 
1677 	/*
1678 	 * SUNIX 50XX series of serial/parallel combo cards.
1679 	 * Tested with 5066A.
1680 	 */
1681 	{   /* SUNIX 5008 1P */
1682 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0100 },
1683 	    {   0xffff, 0xffff, 0xffff, 0xeff0 },
1684 	    {
1685 		{ PUC_LPT, 0x14, 0x0000 },
1686 	    },
1687 	},
1688 
1689 	{   /* SUNIX 5016 16S */
1690 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0010 },
1691 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1692 	    {
1693 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1694 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1695 		{ PUC_COM_POW2(3), 0x10, 0x0010 },
1696 		{ PUC_COM_POW2(3), 0x10, 0x0018 },
1697 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
1698 		{ PUC_COM_POW2(3), 0x14, 0x0008 },
1699 		{ PUC_COM_POW2(3), 0x14, 0x0010 },
1700 		{ PUC_COM_POW2(3), 0x14, 0x0018 },
1701 		{ PUC_COM_POW2(3), 0x14, 0x0020 },
1702 		{ PUC_COM_POW2(3), 0x14, 0x0028 },
1703 		{ PUC_COM_POW2(3), 0x14, 0x0030 },
1704 		{ PUC_COM_POW2(3), 0x14, 0x0038 },
1705 		{ PUC_COM_POW2(3), 0x14, 0x0040 },
1706 		{ PUC_COM_POW2(3), 0x14, 0x0048 },
1707 		{ PUC_COM_POW2(3), 0x14, 0x0050 },
1708 		{ PUC_COM_POW2(3), 0x14, 0x0058 },
1709 	    },
1710 	},
1711 
1712 	{   /* SUNIX 5027 1S */
1713 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0001 },
1714 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1715 	    {
1716 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1717 	    },
1718 	},
1719 
1720 	{   /* SUNIX 5037 2S */
1721 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0002 },
1722 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1723 	    {
1724 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1725 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1726 	    },
1727 	},
1728 
1729 	{   /* SUNIX 5056 4S */
1730 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0004 },
1731 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1732 	    {
1733 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1734 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1735 		{ PUC_COM_POW2(3), 0x10, 0x0010 },
1736 		{ PUC_COM_POW2(3), 0x10, 0x0018 },
1737 	    },
1738 	},
1739 
1740 	{   /* SUNIX 5066 8S */
1741 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0008 },
1742 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1743 	    {
1744 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1745 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1746 		{ PUC_COM_POW2(3), 0x10, 0x0010 },
1747 		{ PUC_COM_POW2(3), 0x10, 0x0018 },
1748 		{ PUC_COM_POW2(3), 0x14, 0x0000 },
1749 		{ PUC_COM_POW2(3), 0x14, 0x0008 },
1750 		{ PUC_COM_POW2(3), 0x14, 0x0010 },
1751 		{ PUC_COM_POW2(3), 0x14, 0x0018 },
1752 	    },
1753 	},
1754 
1755 	{   /* SUNIX 5069 1S / 1P */
1756 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0101 },
1757 	    {   0xffff, 0xffff, 0xffff, 0xeff0 },
1758 	    {
1759 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1760 		{ PUC_LPT, 0x14, 0x0000 },
1761 	    },
1762 	},
1763 
1764 	{   /* SUNIX 5079 2S / 1P */
1765 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0102 },
1766 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1767 	    {
1768 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1769 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1770 		{ PUC_LPT, 0x14, 0x0000 },
1771 	    },
1772 	},
1773 
1774 	{   /* SUNIX 5099 4S / 1P */
1775 	    {   PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0104 },
1776 	    {   0xffff, 0xffff, 0xffff, 0xffff },
1777 	    {
1778 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1779 		{ PUC_COM_POW2(3), 0x10, 0x0008 },
1780 		{ PUC_COM_POW2(3), 0x10, 0x0010 },
1781 		{ PUC_COM_POW2(3), 0x10, 0x0018 },
1782 		{ PUC_LPT, 0x14, 0x0000 },
1783 	    },
1784 	},
1785 
1786 	/*
1787 	 * Boca Research Turbo Serial 654 (4 serial port) card.
1788 	 * Appears to be the same as Chase Research PLC PCI-FAST4 card,
1789 	 * same as Perle PCI-FAST4 Multi-Port serial card
1790 	 */
1791 	{   /* "Boca Turbo Serial 654 - IOP654" */
1792 	    {   PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9050,	0x12e0, 0x0031  },
1793 	    {   0xffff, 0xffff,				0xffff, 0xffff  },
1794 	    {
1795 		{ PUC_COM_POW2(2), 0x18, 0x0000 },
1796 		{ PUC_COM_POW2(2), 0x18, 0x0008 },
1797 		{ PUC_COM_POW2(2), 0x18, 0x0010 },
1798 		{ PUC_COM_POW2(2), 0x18, 0x0018 },
1799 	    },
1800 	},
1801 
1802 	/*
1803 	 * Boca Research Turbo Serial 658 (8 serial port) card.
1804 	 * Appears to be the same as Chase Research PLC PCI-FAST8 card
1805 	 * same as Perle PCI-FAST8 Multi-Port serial card
1806 	 */
1807 	{   /* "Boca Turbo Serial 658 - IOP658" */
1808 	    {   PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9050,	0x12e0, 0x0021  },
1809 	    {   0xffff, 0xffff,				0xffff, 0xffff  },
1810 	    {
1811 		{ PUC_COM_POW2(2), 0x18, 0x0000 },
1812 		{ PUC_COM_POW2(2), 0x18, 0x0008 },
1813 		{ PUC_COM_POW2(2), 0x18, 0x0010 },
1814 		{ PUC_COM_POW2(2), 0x18, 0x0018 },
1815 		{ PUC_COM_POW2(2), 0x18, 0x0020 },
1816 		{ PUC_COM_POW2(2), 0x18, 0x0028 },
1817 		{ PUC_COM_POW2(2), 0x18, 0x0030 },
1818 		{ PUC_COM_POW2(2), 0x18, 0x0038 },
1819 	    },
1820 	},
1821 
1822 	/* Cronyx Engineering Ltd. Omega-PCI (8 serial port) card. */
1823 	{    /* "Cronyx Omega-PCI" */
1824 	    {	PCI_VENDOR_PLX,	PCI_PRODUCT_PLX_CRONYX_OMEGA,	0, 0 },
1825 	    {	0xffff,	0xffff,					0, 0 },
1826 	    {
1827 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1828 		{ PUC_COM_POW2(0), 0x18, 0x0008 },
1829 		{ PUC_COM_POW2(0), 0x18, 0x0010 },
1830 		{ PUC_COM_POW2(0), 0x18, 0x0018 },
1831 		{ PUC_COM_POW2(0), 0x18, 0x0020 },
1832 		{ PUC_COM_POW2(0), 0x18, 0x0028 },
1833 		{ PUC_COM_POW2(0), 0x18, 0x0030 },
1834 		{ PUC_COM_POW2(0), 0x18, 0x0038 },
1835 	    },
1836 	},
1837 
1838 	/* PLX 9016 8 port serial card. (i.e. Syba) */
1839 	{    /* "PLX 9016 - Syba" */
1840 	    {	PCI_VENDOR_PLX,	PCI_PRODUCT_PLX_9016,	0, 0 },
1841 	    {	0xffff,	0xffff,					0, 0 },
1842 	    {
1843 		{ PUC_COM_POW2(2), 0x10, 0x0000 },
1844 		{ PUC_COM_POW2(2), 0x10, 0x0008 },
1845 		{ PUC_COM_POW2(2), 0x10, 0x0010 },
1846 		{ PUC_COM_POW2(2), 0x10, 0x0018 },
1847 		{ PUC_COM_POW2(2), 0x10, 0x0020 },
1848 		{ PUC_COM_POW2(2), 0x10, 0x0028 },
1849 		{ PUC_COM_POW2(2), 0x10, 0x0030 },
1850 		{ PUC_COM_POW2(2), 0x10, 0x0038 },
1851 	    },
1852 	},
1853 
1854 	/* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
1855 	{   /* "Avlab Low Profile PCI 4 Serial" */
1856 	    {	PCI_VENDOR_AVLAB, PCI_PRODUCT_AVLAB_LPPCI4S_2,	0, 0  },
1857 	    {	0xffff,	0xffff,					0, 0  },
1858 	    {
1859 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1860 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1861 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1862 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1863 	    },
1864 	},
1865 
1866 	/* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
1867 	{   /* "Avlab Low Profile PCI 4 Serial" */
1868 	    {	PCI_VENDOR_AVLAB, PCI_PRODUCT_AVLAB_LPPCI4S,	0, 0  },
1869 	    {	0xffff,	0xffff,					0, 0  },
1870 	    {
1871 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1872 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1873 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
1874 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
1875 	    },
1876 	},
1877 
1878 	/* Avlab Technology, Inc. PCI 2 Serial: 2S */
1879 	{   /* "Avlab PCI 2 Serial" */
1880 	    {	PCI_VENDOR_AVLAB, PCI_PRODUCT_AVLAB_PCI2S,	0, 0  },
1881 	    {	0xffff,	0xffff,					0, 0  },
1882 	    {
1883 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
1884 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
1885 	    },
1886 	},
1887 
1888 	/* Digi International Digi Neo 4 Serial */
1889 	{
1890 	    {	PCI_VENDOR_DIGI, PCI_PRODUCT_DIGI_NEO4,		0, 0  },
1891 	    {	0xffff, 0xffff,					0, 0  },
1892 	    {
1893 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1894 		{ PUC_COM_POW2(3), 0x10, 0x0200 },
1895 		{ PUC_COM_POW2(3), 0x10, 0x0400 },
1896 		{ PUC_COM_POW2(3), 0x10, 0x0600 },
1897 	    },
1898 	},
1899 
1900 	/* Digi International Digi Neo 8 Serial */
1901 	{
1902 	    {	PCI_VENDOR_DIGI, PCI_PRODUCT_DIGI_NEO8,		0, 0  },
1903 	    {	0xffff, 0xffff,					0, 0  },
1904 	    {
1905 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1906 		{ PUC_COM_POW2(3), 0x10, 0x0200 },
1907 		{ PUC_COM_POW2(3), 0x10, 0x0400 },
1908 		{ PUC_COM_POW2(3), 0x10, 0x0600 },
1909 		{ PUC_COM_POW2(3), 0x10, 0x0800 },
1910 		{ PUC_COM_POW2(3), 0x10, 0x0a00 },
1911 		{ PUC_COM_POW2(3), 0x10, 0x0c00 },
1912 		{ PUC_COM_POW2(3), 0x10, 0x0e00 },
1913 	    },
1914 	},
1915 
1916 	/* Digi International Digi Neo 8 PCIe Serial */
1917 	{
1918 	    {	PCI_VENDOR_DIGI, PCI_PRODUCT_DIGI_NEO8_PCIE,	0, 0  },
1919 	    {	0xffff, 0xffff,					0, 0  },
1920 	    {
1921 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1922 		{ PUC_COM_POW2(3), 0x10, 0x0200 },
1923 		{ PUC_COM_POW2(3), 0x10, 0x0400 },
1924 		{ PUC_COM_POW2(3), 0x10, 0x0600 },
1925 		{ PUC_COM_POW2(3), 0x10, 0x0800 },
1926 		{ PUC_COM_POW2(3), 0x10, 0x0a00 },
1927 		{ PUC_COM_POW2(3), 0x10, 0x0c00 },
1928 		{ PUC_COM_POW2(3), 0x10, 0x0e00 },
1929 	    },
1930 	},
1931 
1932 	/*
1933 	 * Multi-Tech ISI5634PCI/4 4-port modem board.
1934 	 * Has a 4-channel Exar XR17C154 UART, but with bogus product ID in its
1935 	 * config EEPROM.
1936 	 */
1937 	{
1938 	    {   PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17C158, 0x2205, 0x2003 },
1939 	    {	0xffff,	0xffff,				    0xffff, 0xffff },
1940 	    {
1941 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1942 		{ PUC_COM_POW2(3), 0x10, 0x0200 },
1943 		{ PUC_COM_POW2(3), 0x10, 0x0400 },
1944 		{ PUC_COM_POW2(3), 0x10, 0x0600 },
1945 	    },
1946 	},
1947 
1948 	{   /* EXAR XR17C152 Dual UART */
1949 	    {   PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17C152,	0, 0 },
1950 	    {   0xffff, 0xffff,					0, 0 },
1951 	    {
1952 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1953 		{ PUC_COM_POW2(3), 0x10, 0x0200 },
1954 	    },
1955 	},
1956 
1957 	{   /* Exar XR17C154 Quad UART */
1958 	    {   PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17C154,	0, 0 },
1959 	    {   0xffff, 0xffff,					0, 0 },
1960 	    {
1961 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1962 		{ PUC_COM_POW2(3), 0x10, 0x0200 },
1963 		{ PUC_COM_POW2(3), 0x10, 0x0400 },
1964 		{ PUC_COM_POW2(3), 0x10, 0x0600 },
1965 	    },
1966 	},
1967 
1968 	{   /* Exar XR17C158 Eight Channel UART */
1969 	    {   PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17C158,	0, 0 },
1970 	    {   0xffff, 0xffff,					0, 0 },
1971 	    {
1972 		{ PUC_COM_POW2(3), 0x10, 0x0000 },
1973 		{ PUC_COM_POW2(3), 0x10, 0x0200 },
1974 		{ PUC_COM_POW2(3), 0x10, 0x0400 },
1975 		{ PUC_COM_POW2(3), 0x10, 0x0600 },
1976 		{ PUC_COM_POW2(3), 0x10, 0x0800 },
1977 		{ PUC_COM_POW2(3), 0x10, 0x0a00 },
1978 		{ PUC_COM_POW2(3), 0x10, 0x0c00 },
1979 		{ PUC_COM_POW2(3), 0x10, 0x0e00 },
1980 	    },
1981 	},
1982 
1983 	{   /* Dell DRAC 3 Virtual UART */
1984 	    {   PCI_VENDOR_DELL, PCI_PRODUCT_DELL_DRAC_3_VUART,	0, 0 },
1985 	    {   0xffff, 0xffff,					0, 0 },
1986 	    {
1987 		{ PUC_COM_POW2(7), 0x14, 0x0000 },
1988 	    },
1989 	},
1990 	{   /* Dell DRAC 4 Virtual UART */
1991 	    {   PCI_VENDOR_DELL, PCI_PRODUCT_DELL_DRAC_4_VUART,	0, 0 },
1992 	    {   0xffff, 0xffff,					0, 0 },
1993 	    {
1994 		{ PUC_COM_POW2(7), 0x14, 0x0000 },
1995 	    },
1996 	},
1997 
1998 	/*
1999 	 * Cardbus devices which can potentially show up because of
2000 	 * Expresscard adapters
2001 	 * XXX Keep this list syncronized with cardbus/com_cardbus.c
2002 	*/
2003 
2004 	{   /* "", */
2005 	    {	PCI_VENDOR_3COM, PCI_PRODUCT_3COM_GLOBALMODEM56,0, 0	},
2006 	    {	0xffff,	0xffff,					0, 0	},
2007 	    {
2008 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2009 	    },
2010 	},
2011 	{   /* "", */
2012 	    {	PCI_VENDOR_3COM, PCI_PRODUCT_3COM_MODEM56,	0, 0	},
2013 	    {	0xffff,	0xffff,					0, 0	},
2014 	    {
2015 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2016 	    },
2017 	},
2018 	{   /* "", */
2019 	    {	PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_SERIAL,0, 0	},
2020 	    {	0xffff,	0xffff,					0, 0	},
2021 	    {
2022 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2023 	    },
2024 	},
2025 	{   /* "", */
2026 	    {	PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_SERIAL_2,0, 0	},
2027 	    {	0xffff,	0xffff,					0, 0	},
2028 	    {
2029 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2030 	    },
2031 	},
2032 	{   /* "", */
2033 	    {	PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_SERIAL_GC,0, 0	},
2034 	    {	0xffff,	0xffff,					0, 0	},
2035 	    {
2036 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2037 	    },
2038 	},
2039 	{   /* "", */
2040 	    {	PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_MODEM56,	0, 0	},
2041 	    {	0xffff,	0xffff,					0, 0	},
2042 	    {
2043 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2044 	    },
2045 	},
2046 	{   /* "", */
2047 	    {	PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXCB950,0, 0	},
2048 	    {	0xffff,	0xffff,					0, 0	},
2049 	    {
2050 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2051 	    },
2052 	},
2053 	{   /* "Xircom Cardbus 56K Modem", */
2054 	    {	PCI_VENDOR_XIRCOM, PCI_PRODUCT_XIRCOM_MODEM_56K,0, 0	},
2055 	    {	0xffff,	0xffff,					0, 0	},
2056 	    {
2057 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2058 	    },
2059 	},
2060 	{   /* "Xircom CBEM56G Modem", */
2061 	    {	PCI_VENDOR_XIRCOM, PCI_PRODUCT_XIRCOM_CBEM56G,	0, 0	},
2062 	    {	0xffff,	0xffff,					0, 0	},
2063 	    {
2064 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2065 	    },
2066 	},
2067 	{   /* "Xircom 56k Modem", */
2068 	    {	PCI_VENDOR_XIRCOM, PCI_PRODUCT_XIRCOM_MODEM56,	0, 0	},
2069 	    {	0xffff,	0xffff,					0, 0	},
2070 	    {
2071 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2072 	    },
2073 	},
2074 	{   /* "WinChipHead CH351 (2S)", */
2075 	    {	PCI_VENDOR_WCH2, PCI_PRODUCT_WCH2_CH351,	0, 0	},
2076 	    {	0xffff,	0xffff,					0, 0	},
2077 	    {
2078 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2079 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
2080 	    },
2081 	},
2082 	{   /* "WinChipHead CH352", */
2083 	    {	PCI_VENDOR_WCH, PCI_PRODUCT_WCH_CH352,		0, 0	},
2084 	    {	0xffff,	0xffff,					0, 0	},
2085 	    {
2086 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2087 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
2088 	    },
2089 	},
2090 	{   /* "WinChipHead CH382 (2S)", */
2091 	    {	PCI_VENDOR_WCH2, PCI_PRODUCT_WCH2_CH382_1,	0, 0	},
2092 	    {	0xffff,	0xffff,					0, 0	},
2093 	    {
2094 		{ PUC_COM_POW2(0), 0x10, 0x00c0 },
2095 		{ PUC_COM_POW2(0), 0x10, 0x00c8 },
2096 	    },
2097 	},
2098 	{   /* "WinChipHead CH382 (2S1P)", */
2099 	    {	PCI_VENDOR_WCH2, PCI_PRODUCT_WCH2_CH382_2,	0, 0	},
2100 	    {	0xffff,	0xffff,					0, 0	},
2101 	    {
2102 		{ PUC_COM_POW2(0), 0x10, 0x00c0 },
2103 		{ PUC_COM_POW2(0), 0x10, 0x00c8 },
2104 	    },
2105 	},
2106 	{   /* "NetMos NM9820 UART" */
2107 	    {   PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9820,	0, 0	},
2108 	    {	0xffff,	0xffff,					0, 0	},
2109 	    {
2110 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2111 	    },
2112 	},
2113 	{   /* "MosChip MCS9865 Quad Serial Port" */
2114 	    {   PCI_VENDOR_MOSCHIP, PCI_PRODUCT_MOSCHIP_MCS9865, 0x1000, 0x4 },
2115 	    {   0xffff, 0xffff, 0xffff, 0xffff },
2116 	    {
2117 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2118 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
2119 		{ PUC_COM_POW2(0), 0x18, 0x0000 },
2120 		{ PUC_COM_POW2(0), 0x1c, 0x0000 },
2121 	    },
2122 	},
2123 	{   /* "MosChip MCS9865 Dual Serial Port" */
2124 	    {   PCI_VENDOR_MOSCHIP, PCI_PRODUCT_MOSCHIP_MCS9865, 0x1000, 0x2 },
2125 	    {   0xffff, 0xffff, 0xffff, 0xffff },
2126 	    {
2127 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2128 		{ PUC_COM_POW2(0), 0x14, 0x0000 },
2129 	    },
2130 	},
2131 	{   /* "MosChip MCS9865 Single Serial Port" */
2132 	    {   PCI_VENDOR_MOSCHIP, PCI_PRODUCT_MOSCHIP_MCS9865, 0x1000, 0x1 },
2133 	    {   0xffff, 0xffff, 0xffff, 0xffff },
2134 	    {
2135 		{ PUC_COM_POW2(0), 0x10, 0x0000 },
2136 	    },
2137 	},
2138 };
2139 int puc_ndevs = nitems(puc_devs);
2140