pucdata.c revision 128392
1/*	$NetBSD: pucdata.c,v 1.25 2001/12/16 22:23:01 thorpej Exp $	*/
2
3/*
4 * Copyright (c) 1998, 1999 Christopher G. Demetriou.  All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 *    must display the following acknowledgement:
16 *      This product includes software developed by Christopher G. Demetriou
17 *	for the NetBSD Project.
18 * 4. The name of the author may not be used to endorse or promote products
19 *    derived from this software without specific prior written permission
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33#include <sys/cdefs.h>
34__FBSDID("$FreeBSD: head/sys/dev/puc/pucdata.c 128392 2004-04-18 07:06:45Z bde $");
35
36/*
37 * PCI "universal" communications card driver configuration data (used to
38 * match/attach the cards).
39 */
40
41#include <sys/param.h>
42
43#include <dev/pci/pcireg.h>
44#include <dev/pci/pcivar.h>
45#include <dev/sio/sioreg.h>
46#include <dev/puc/pucvar.h>
47
48#define COM_FREQ	DEFAULT_RCLK
49
50int puc_config_win877(struct puc_softc *);
51
52const struct puc_device_description puc_devices[] = {
53
54	{   "Sunix SUN1889",
55	    NULL,
56	    {	0x0009,	0x7168,	0,	0	},
57	    {	0xffff,	0xffff,	0,	0	},
58	    {
59		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
60		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
61	    },
62	},
63
64	{   "Diva Serial [GSP] Multiport UART",
65	    NULL,
66	    {	0x103c,	0x1048,	0x103c,	0x1282	},
67	    {	0xffff,	0xffff,	0xffff,	0xffff	},
68	    {
69		{ PUC_PORT_TYPE_UART, 0x10, 0x00, 0, PUC_FLAGS_MEMORY },
70		{ PUC_PORT_TYPE_UART, 0x10, 0x10, 0, PUC_FLAGS_MEMORY },
71		{ PUC_PORT_TYPE_UART, 0x10, 0x38, 0, PUC_FLAGS_MEMORY },
72	    },
73	},
74
75	{   "Comtrol RocketPort 550/4 RJ45",
76	    NULL,
77	    {	0x11fe,	0x8014,	0,	0	},
78	    {	0xffff,	0xffff,	0,	0	},
79	    {
80		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
81		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
82		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
83		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
84	    },
85	},
86
87	{   "Comtrol RocketPort 550/Quad",
88	    NULL,
89	    {	0x11fe,	0x8015,	0,	0	},
90	    {	0xffff,	0xffff,	0,	0	},
91	    {
92		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
93		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
94		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
95		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
96	    },
97	},
98
99	{   "Comtrol RocketPort 550/8 RJ11 part A",
100	    NULL,
101	    {	0x11fe,	0x8010,	0,	0	},
102	    {	0xffff,	0xffff,	0,	0	},
103	    {
104		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
105		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
106		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
107		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
108	    },
109	},
110	{   "Comtrol RocketPort 550/8 RJ11 part B",
111	    NULL,
112	    {	0x11fe,	0x8011,	0,	0	},
113	    {	0xffff,	0xffff,	0,	0	},
114	    {
115		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
116		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
117		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
118		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
119	    },
120	},
121
122	{   "Comtrol RocketPort 550/8 Octa part A",
123	    NULL,
124	    {	0x11fe,	0x8012,	0,	0	},
125	    {	0xffff,	0xffff,	0,	0	},
126	    {
127		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
128		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
129		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
130		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
131	    },
132	},
133	{   "Comtrol RocketPort 550/8 Octa part B",
134	    NULL,
135	    {	0x11fe,	0x8013,	0,	0	},
136	    {	0xffff,	0xffff,	0,	0	},
137	    {
138		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
139		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
140		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
141		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
142	    },
143	},
144
145	{   "Comtrol RocketPort 550/8 part A",
146	    NULL,
147	    {	0x11fe,	0x8018,	0,	0	},
148	    {	0xffff,	0xffff,	0,	0	},
149	    {
150		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
151		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
152		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
153		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
154	    },
155	},
156	{   "Comtrol RocketPort 550/8 part B",
157	    NULL,
158	    {	0x11fe,	0x8019,	0,	0	},
159	    {	0xffff,	0xffff,	0,	0	},
160	    {
161		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
162		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
163		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
164		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
165	    },
166	},
167
168	{   "Comtrol RocketPort 550/16 part A",
169	    NULL,
170	    {	0x11fe,	0x8016,	0,	0	},
171	    {	0xffff,	0xffff,	0,	0	},
172	    {
173		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
174		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
175		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
176		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
177	    },
178	},
179	{   "Comtrol RocketPort 550/16 part B",
180	    NULL,
181	    {	0x11fe,	0x8017,	0,	0	},
182	    {	0xffff,	0xffff,	0,	0	},
183	    {
184		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
185		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
186		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
187		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
188		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ * 4 },
189		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ * 4 },
190		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ * 4 },
191		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ * 4 },
192		{ PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ * 4 },
193		{ PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ * 4 },
194		{ PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ * 4 },
195		{ PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ * 4 },
196	    },
197	},
198
199	/*
200	 * XXX no entry because I have no data:
201	 * XXX Dolphin Peripherals 4006 (single parallel)
202	 */
203
204	/*
205	 * Dolphin Peripherals 4014 (dual parallel port) card.  PLX 9050, with
206	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
207	 * into the subsystem fields, and claims that it's a
208	 * network/misc (0x02/0x80) device.
209	 */
210	{   "Dolphin Peripherals 4014",
211	    NULL,
212	    {	0x10b5,	0x9050,	0xd84d,	0x6810	},
213	    {	0xffff,	0xffff,	0xffff,	0xffff	},
214	    {
215		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
216		{ PUC_PORT_TYPE_LPT, 0x24, 0x00, 0x00 },
217	    },
218	},
219
220	/*
221	 * XXX Dolphin Peripherals 4025 (single serial)
222	 * (clashes with Dolphin Peripherals  4036 (2s variant)
223	 */
224
225	/*
226	 * Dolphin Peripherals 4035 (dual serial port) card.  PLX 9050, with
227	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
228	 * into the subsystem fields, and claims that it's a
229	 * network/misc (0x02/0x80) device.
230	 */
231	{   "Dolphin Peripherals 4035",
232	    NULL,
233	    {	0x10b5,	0x9050,	0xd84d,	0x6808	},
234	    {	0xffff,	0xffff,	0xffff,	0xffff	},
235	    {
236		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
237		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
238	    },
239	},
240
241	/*
242	 * Dolphin Peripherals 4036 (dual serial port) card.
243	 * (Dolpin 4025 has the same ID but only one port)
244	 */
245	{   "Dolphin Peripherals 4036",
246	    NULL,
247	    {	0x1409,	0x7168,	0x0,	0x0	},
248	    {	0xffff,	0xffff,	0x0,	0x0	},
249	    {
250		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
251		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
252	    },
253	},
254
255	/*
256	 * XXX no entry because I have no data:
257	 * XXX Dolphin Peripherals 4078 (dual serial and single parallel)
258	 */
259
260
261	/*
262	 * SIIG Boards.
263	 *
264	 * SIIG provides documentation for their boards at:
265	 * <URL:http://www.siig.com/driver.htm>
266	 *
267	 * Please excuse the weird ordering, it's the order they
268	 * use in their documentation.
269	 */
270
271	/*
272	 * SIIG "10x" family boards.
273	 */
274
275	/* SIIG Cyber Serial PCI 16C550 (10x family): 1S */
276	{   "SIIG Cyber Serial PCI 16C550 (10x family)",
277	    NULL,
278	    {	0x131f,	0x1000,	0,	0	},
279	    {	0xffff,	0xffff,	0,	0	},
280	    {
281		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
282	    },
283	},
284
285	/* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
286	{   "SIIG Cyber Serial PCI 16C650 (10x family)",
287	    NULL,
288	    {	0x131f,	0x1001,	0,	0	},
289	    {	0xffff,	0xffff,	0,	0	},
290	    {
291		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
292	    },
293	},
294
295	/* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
296	{   "SIIG Cyber Serial PCI 16C850 (10x family)",
297	    NULL,
298	    {	0x131f,	0x1002,	0,	0	},
299	    {	0xffff,	0xffff,	0,	0	},
300	    {
301		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
302	    },
303	},
304
305	/* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
306	{   "SIIG Cyber I/O PCI 16C550 (10x family)",
307	    NULL,
308	    {	0x131f,	0x1010,	0,	0	},
309	    {	0xffff,	0xffff,	0,	0	},
310	    {
311		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
312		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
313	    },
314	},
315
316	/* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
317	{   "SIIG Cyber I/O PCI 16C650 (10x family)",
318	    NULL,
319	    {	0x131f,	0x1011,	0,	0	},
320	    {	0xffff,	0xffff,	0,	0	},
321	    {
322		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
323		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
324	    },
325	},
326
327	/* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
328	{   "SIIG Cyber I/O PCI 16C850 (10x family)",
329	    NULL,
330	    {	0x131f,	0x1012,	0,	0	},
331	    {	0xffff,	0xffff,	0,	0	},
332	    {
333		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
334		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
335	    },
336	},
337
338	/* SIIG Cyber Parallel PCI (10x family): 1P */
339	{   "SIIG Cyber Parallel PCI (10x family)",
340	    NULL,
341	    {	0x131f,	0x1020,	0,	0	},
342	    {	0xffff,	0xffff,	0,	0	},
343	    {
344		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
345	    },
346	},
347
348	/* SIIG Cyber Parallel Dual PCI (10x family): 2P */
349	{   "SIIG Cyber Parallel Dual PCI (10x family)",
350	    NULL,
351	    {	0x131f,	0x1021,	0,	0	},
352	    {	0xffff,	0xffff,	0,	0	},
353	    {
354		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
355		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
356	    },
357	},
358
359	/* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
360	{   "SIIG Cyber Serial Dual PCI 16C550 (10x family)",
361	    NULL,
362	    {	0x131f,	0x1030,	0,	0	},
363	    {	0xffff,	0xffff,	0,	0	},
364	    {
365		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
366		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
367	    },
368	},
369
370	/* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
371	{   "SIIG Cyber Serial Dual PCI 16C650 (10x family)",
372	    NULL,
373	    {	0x131f,	0x1031,	0,	0	},
374	    {	0xffff,	0xffff,	0,	0	},
375	    {
376		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
377		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
378	    },
379	},
380
381	/* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
382	{   "SIIG Cyber Serial Dual PCI 16C850 (10x family)",
383	    NULL,
384	    {	0x131f,	0x1032,	0,	0	},
385	    {	0xffff,	0xffff,	0,	0	},
386	    {
387		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
388		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
389	    },
390	},
391
392	/* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
393	{   "SIIG Cyber 2S1P PCI 16C550 (10x family)",
394	    NULL,
395	    {	0x131f,	0x1034,	0,	0	},	/* XXX really? */
396	    {	0xffff,	0xffff,	0,	0	},
397	    {
398		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
399		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
400		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
401	    },
402	},
403
404	/* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
405	{   "SIIG Cyber 2S1P PCI 16C650 (10x family)",
406	    NULL,
407	    {	0x131f,	0x1035,	0,	0	},	/* XXX really? */
408	    {	0xffff,	0xffff,	0,	0	},
409	    {
410		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
411		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
412		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
413	    },
414	},
415
416	/* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
417	{   "SIIG Cyber 2S1P PCI 16C850 (10x family)",
418	    NULL,
419	    {	0x131f,	0x1036,	0,	0	},	/* XXX really? */
420	    {	0xffff,	0xffff,	0,	0	},
421	    {
422		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
423		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
424		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
425	    },
426	},
427
428	/* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
429	{   "SIIG Cyber 4S PCI 16C550 (10x family)",
430	    NULL,
431	    {	0x131f,	0x1050,	0,	0	},
432	    {	0xffff,	0xffff,	0,	0	},
433	    {
434		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
435		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
436		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
437		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
438	    },
439	},
440
441	/* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
442	{   "SIIG Cyber 4S PCI 16C650 (10x family)",
443	    NULL,
444	    {	0x131f,	0x1051,	0,	0	},
445	    {	0xffff,	0xffff,	0,	0	},
446	    {
447		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
448		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
449		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
450		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
451	    },
452	},
453
454	/* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
455	{   "SIIG Cyber 4S PCI 16C850 (10x family)",
456	    NULL,
457	    {	0x131f,	0x1052,	0,	0	},
458	    {	0xffff,	0xffff,	0,	0	},
459	    {
460		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
461		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
462		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
463		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
464	    },
465	},
466
467	/*
468	 * SIIG "20x" family boards.
469	 */
470
471	/* SIIG Cyber Parallel PCI (20x family): 1P */
472	{   "SIIG Cyber Parallel PCI (20x family)",
473	    NULL,
474	    {	0x131f,	0x2020,	0,	0	},
475	    {	0xffff,	0xffff,	0,	0	},
476	    {
477		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
478	    },
479	},
480
481	/* SIIG Cyber Parallel Dual PCI (20x family): 2P */
482	{   "SIIG Cyber Parallel Dual PCI (20x family)",
483	    NULL,
484	    {	0x131f,	0x2021,	0,	0	},
485	    {	0xffff,	0xffff,	0,	0	},
486	    {
487		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
488		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
489	    },
490	},
491
492	/* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
493	{   "SIIG Cyber 2P1S PCI 16C550 (20x family)",
494	    NULL,
495	    {	0x131f,	0x2040,	0,	0	},
496	    {	0xffff,	0xffff,	0,	0	},
497	    {
498		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
499		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
500		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
501	    },
502	},
503
504	/* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
505	{   "SIIG Cyber 2P1S PCI 16C650 (20x family)",
506	    NULL,
507	    {	0x131f,	0x2041,	0,	0	},
508	    {	0xffff,	0xffff,	0,	0	},
509	    {
510		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
511		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
512		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
513	    },
514	},
515
516	/* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
517	{   "SIIG Cyber 2P1S PCI 16C850 (20x family)",
518	    NULL,
519	    {	0x131f,	0x2042,	0,	0	},
520	    {	0xffff,	0xffff,	0,	0	},
521	    {
522		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
523		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
524		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
525	    },
526	},
527
528	/* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
529	{   "SIIG Cyber Serial PCI 16C550 (20x family)",
530	    NULL,
531	    {	0x131f,	0x2000,	0,	0	},
532	    {	0xffff,	0xffff,	0,	0	},
533	    {
534		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
535	    },
536	},
537
538	/* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
539	{   "SIIG Cyber Serial PCI 16C650 (20x family)",
540	    NULL,
541	    {	0x131f,	0x2001,	0,	0	},
542	    {	0xffff,	0xffff,	0,	0	},
543	    {
544		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
545	    },
546	},
547
548	/* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
549	{   "SIIG Cyber Serial PCI 16C850 (20x family)",
550	    NULL,
551	    {	0x131f,	0x2002,	0,	0	},
552	    {	0xffff,	0xffff,	0,	0	},
553	    {
554		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
555	    },
556	},
557
558	/* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
559	{   "SIIG Cyber I/O PCI 16C550 (20x family)",
560	    NULL,
561	    {	0x131f,	0x2010,	0,	0	},
562	    {	0xffff,	0xffff,	0,	0	},
563	    {
564		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
565		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
566	    },
567	},
568
569	/* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
570	{   "SIIG Cyber I/O PCI 16C650 (20x family)",
571	    NULL,
572	    {	0x131f,	0x2011,	0,	0	},
573	    {	0xffff,	0xffff,	0,	0	},
574	    {
575		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
576		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
577	    },
578	},
579
580	/* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
581	{   "SIIG Cyber I/O PCI 16C850 (20x family)",
582	    NULL,
583	    {	0x131f,	0x2012,	0,	0	},
584	    {	0xffff,	0xffff,	0,	0	},
585	    {
586		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
587		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
588	    },
589	},
590
591	/* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
592	{   "SIIG Cyber Serial Dual PCI 16C550 (20x family)",
593	    NULL,
594	    {	0x131f,	0x2030,	0,	0	},
595	    {	0xffff,	0xffff,	0,	0	},
596	    {
597		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
598		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
599	    },
600	},
601
602	/* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
603	{   "SIIG Cyber Serial Dual PCI 16C650 (20x family)",
604	    NULL,
605	    {	0x131f,	0x2031,	0,	0	},
606	    {	0xffff,	0xffff,	0,	0	},
607	    {
608		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
609		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
610	    },
611	},
612
613	/* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
614	{   "SIIG Cyber Serial Dual PCI 16C850 (20x family)",
615	    NULL,
616	    {	0x131f,	0x2032,	0,	0	},
617	    {	0xffff,	0xffff,	0,	0	},
618	    {
619		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
620		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
621	    },
622	},
623
624	/* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
625	{   "SIIG Cyber 2S1P PCI 16C550 (20x family)",
626	    NULL,
627	    {	0x131f,	0x2060,	0,	0	},
628	    {	0xffff,	0xffff,	0,	0	},
629	    {
630		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
631		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
632		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
633	    },
634	},
635
636	/* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
637	{   "SIIG Cyber 2S1P PCI 16C650 (20x family)",
638	    NULL,
639	    {	0x131f,	0x2061,	0,	0	},
640	    {	0xffff,	0xffff,	0,	0	},
641	    {
642		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
643		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
644		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
645	    },
646	},
647
648	/* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
649	{   "SIIG Cyber 2S1P PCI 16C850 (20x family)",
650	    NULL,
651	    {	0x131f,	0x2062,	0,	0	},
652	    {	0xffff,	0xffff,	0,	0	},
653	    {
654		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
655		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
656		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
657	    },
658	},
659
660	/* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
661	{   "SIIG Cyber 4S PCI 16C550 (20x family)",
662	    NULL,
663	    {	0x131f,	0x2050,	0,	0	},
664	    {	0xffff,	0xffff,	0,	0	},
665	    {
666		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
667		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
668		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
669		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
670	    },
671	},
672
673	/* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
674	{   "SIIG Cyber 4S PCI 16C650 (20x family)",
675	    NULL,
676	    {	0x131f,	0x2051,	0,	0	},
677	    {	0xffff,	0xffff,	0,	0	},
678	    {
679		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
680		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
681		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
682		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
683	    },
684	},
685
686	/* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
687	{   "SIIG Cyber 4S PCI 16C850 (20x family)",
688	    NULL,
689	    {	0x131f,	0x2052,	0,	0	},
690	    {	0xffff,	0xffff,	0,	0	},
691	    {
692		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
693		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
694		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
695		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
696	    },
697	},
698
699	/* VScom PCI-200L: 2S */
700	{   "VScom PCI-200L",
701	    NULL,
702	    {	0x14d2,	0x8020,	0,	0	},
703	    {	0xffff,	0xffff,	0,	0	},
704	    {
705		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8},
706		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8},
707	    },
708	},
709
710	/* VScom PCI-400: 4S */
711	{   "VScom PCI-400",
712	    NULL,
713	    {	0x10b5,	0x1077,	0x10b5,	0x1077	},
714	    {	0xffff,	0xffff,	0xffff,	0xffff	},
715	    {
716		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
717		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
718		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
719		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
720	    },
721	},
722
723	/* VScom PCI-800: 8S */
724	{   "VScom PCI-800",
725	    NULL,
726	    {	0x10b5,	0x1076,	0x10b5,	0x1076	},
727	    {	0xffff,	0xffff,	0xffff,	0xffff	},
728	    {
729		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
730		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
731		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
732		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
733		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
734		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
735		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
736		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
737	    },
738	},
739	/*
740	 * VScom PCI-800H. Uses 8 16950 UART, behind a PCI chips that offers
741	 * 4 com port on PCI device 0 and 4 on PCI device 1. PCI device 0 has
742	 * device ID 3 and PCI device 1 device ID 4.
743	 */
744	{   "Titan PCI-800H",
745	    NULL,
746	    {	0x14d2,	0xa003,	0,	0	},
747	    {	0xffff,	0xffff,	0,	0	},
748	    {
749		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
750		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
751		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
752		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
753	    },
754	},
755	{   "Titan PCI-800H",
756	    NULL,
757	    {	0x14d2,	0xa004,	0,	0	},
758	    {	0xffff,	0xffff,	0,	0	},
759	    {
760		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
761		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
762		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
763		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
764	    },
765	},
766	{   "Titan PCI-200H",
767	    NULL,
768	    {	0x14d2,	0xa005,	0,	0	},
769	    {	0xffff,	0xffff,	0,	0	},
770	    {
771		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
772		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
773	    },
774	},
775
776	{   "Titan VScom PCI-200HV2",	/* 2S */
777	    NULL,
778	    {	0x14d2,	0xe020,	0,	0	},
779	    {	0xffff,	0xffff,	0,	0	},
780	    {
781		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
782		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
783	    },
784	},
785	/*
786	 * VScom (Titan?) PCI-800L.  More modern variant of the
787	 * PCI-800.  Uses 6 discrete 16550 UARTs, plus another
788	 * two of them obviously implemented as macro cells in
789	 * the ASIC.  This causes the weird port access pattern
790	 * below, where two of the IO port ranges each access
791	 * one of the ASIC UARTs, and a block of IO addresses
792	 * access the external UARTs.
793	 */
794	{   "Titan VScom PCI-800L",
795	    NULL,
796	    {	0x14d2,	0x8080,	0,	0	},
797	    {	0xffff,	0xffff,	0,	0	},
798	    {
799		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
800		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
801		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
802		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ * 8 },
803		{ PUC_PORT_TYPE_COM, 0x20, 0x10, COM_FREQ * 8 },
804		{ PUC_PORT_TYPE_COM, 0x20, 0x18, COM_FREQ * 8 },
805		{ PUC_PORT_TYPE_COM, 0x20, 0x20, COM_FREQ * 8 },
806		{ PUC_PORT_TYPE_COM, 0x20, 0x28, COM_FREQ * 8 },
807	    },
808	},
809
810	/* NEC PK-UG-X001 K56flex PCI Modem card.
811	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */
812	{   "NEC PK-UG-X001 K56flex PCI Modem",
813	    NULL,
814	    {	0x1033,	0x0074,	0x1033,	0x8014	},
815	    {	0xffff,	0xffff,	0xffff,	0xffff	},
816	    {
817		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
818	    },
819	},
820
821	/* NEC PK-UG-X008 */
822	{   "NEC PK-UG-X008",
823	    NULL,
824	    {	0x1033,	0x007d,	0x1033,	0x8012	},
825	    {	0xffff,	0xffff,	0xffff,	0xffff	},
826	    {
827		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ},
828	    },
829	},
830
831	/* Lava Computers 2SP-PCI */
832	{   "Lava Computers 2SP-PCI parallel port",
833	    NULL,
834	    {	0x1407,	0x8000,	0,	0	},
835	    {	0xffff,	0xffff,	0,	0	},
836	    {
837		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
838	    },
839	},
840
841	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
842	{   "Lava Computers dual serial port",
843	    NULL,
844	    {	0x1407,	0x0100,	0,	0	},
845	    {	0xffff,	0xfffc,	0,	0	},
846	    {
847		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
848		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
849	    },
850	},
851
852	/* Lava Computers newer Quattro-PCI serial ports */
853	{   "Lava Computers Quattro-PCI serial port",
854	    NULL,
855	    {	0x1407,	0x0120,	0,	0	},
856	    {	0xffff,	0xfffc,	0,	0	},
857	    {
858		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
859		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
860	    },
861	},
862
863	/* Lava Computers DSerial PCI serial ports */
864	{   "Lava Computers serial port",
865	    NULL,
866	    {	0x1407,	0x0110,	0,	0	},
867	    {	0xffff,	0xfffc,	0,	0	},
868	    {
869		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
870	    },
871	},
872
873	/* Lava Computers Octopus-550 serial ports */
874	{   "Lava Computers Octopus-550 8-port serial",
875	    NULL,
876	    {	0x1407,	0x0180,	0,	0	},
877	    {	0xffff,	0xfffc,	0,	0	},
878	    {
879		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
880		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
881		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
882		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
883	    },
884	},
885
886	/* US Robotics (3Com) PCI Modems */
887	{   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
888	    NULL,
889	    {	0x12b9,	0x1008,	0,	0	},
890	    {	0xffff,	0xffff,	0,	0	},
891	    {
892		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
893	    },
894	},
895
896	/* Actiontec 56K PCI Master */
897	{   "Actiontec 56K PCI Master",
898	    NULL,
899	    {	0x11c1,	0x0480,	0x0,	0x0	},
900	    {	0xffff,	0xffff,	0x0,	0x0	},
901	    {
902		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
903	    },
904	},
905
906	/*
907	 * Boards with an Oxford Semiconductor chip.
908	 *
909	 * Oxford Semiconductor provides documentation for their chip at:
910	 * <URL:http://www.oxsemi.com/products/uarts/index.html>
911	 *
912	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
913	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
914	 */
915
916	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
917	{   "Oxford Semiconductor OX16PCI954 UARTs",
918	    NULL,
919	    {	0x1415,	0x9501,	0,	0	},
920	    {	0xffff,	0xffff,	0,	0	},
921	    {
922		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
923		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
924		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
925		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
926	    },
927	},
928
929	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
930	{   "Oxford Semiconductor OX16PCI954 UARTs",
931	    NULL,
932	    {	0x1415,	0x950a,	0,	0	},
933	    {	0xffff,	0xffff,	0,	0	},
934	    {
935		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
936		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
937		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
938		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
939	    },
940	},
941
942	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
943	{   "Oxford Semiconductor OX16PCI954 Parallel port",
944	    NULL,
945	    {	0x1415,	0x9513,	0,	0	},
946	    {	0xffff,	0xffff,	0,	0	},
947	    {
948		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
949	    },
950	},
951
952	/* Oxford Semiconductor OX12PCI840 PCI Parallel port */
953	{   "Oxford Semiconductor OX12PCI840 Parallel port",
954	    NULL,
955	    {	0x1415,	0x8403,	0,	0	},
956	    {	0xffff,	0xffff,	0,	0	},
957	    {
958		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
959	    },
960	},
961
962	/*
963	 * Oxford Semiconductor OX9160/OX16PCI954 PCI UARTS
964	 * Second chip on Exsys EX-41098 8x cards
965	 */
966	{   "Oxford Semiconductor OX9160/OX16PCI954 UARTs (function 1)",
967	    NULL,
968	    {	0x1415,	0x9511,	0,	0	},
969	    {	0xffff,	0xffff,	0,	0	},
970	    {
971		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
972		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
973		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
974		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
975	    },
976	},
977
978	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
979	{   "NetMos NM9835 Dual UART and 1284 Printer port",
980	    NULL,
981	    {	0x9710,	0x9835,	0,	0	},
982	    {	0xffff,	0xffff,	0,	0	},
983	    {
984		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
985		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
986		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
987	    },
988	},
989
990	/* NetMos 4S0P PCI: 4S, 0P */
991	{   "NetMos NM9845 Quad UART",
992	    NULL,
993	    {	0x9710,	0x9845,	0,	0	},
994	    {	0xffff,	0xffff,	0,	0	},
995	    {
996		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
997		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
998		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
999		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1000	    },
1001	},
1002
1003	/*
1004	 * This is the Middle Digital, Inc. PCI-Weasel, which
1005	 * uses a PCI interface implemented in FPGA.
1006	 */
1007	{   "Middle Digital, Inc. Weasel serial port",
1008	    NULL,
1009	    {	0xdeaf,	0x9051,	0,	0	},
1010	    {	0xffff,	0xffff,	0,	0	},
1011	    {
1012		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1013	    },
1014	},
1015
1016	/* SD-LAB PCI I/O Card 4S2P */
1017	{   "Syba Tech Ltd. PCI-4S2P-550-ECP",
1018	    puc_config_win877,
1019	    {	0x1592, 0x0781, 0,	0	},
1020	    {	0xffff, 0xffff, 0,	0	},
1021	    {
1022		{ PUC_PORT_TYPE_COM, 0x10, 0x2e8, COM_FREQ },
1023		{ PUC_PORT_TYPE_COM, 0x10, 0x2f8, COM_FREQ },
1024		{ PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
1025		{ PUC_PORT_TYPE_COM, 0x10, 0x3e8, COM_FREQ },
1026		{ PUC_PORT_TYPE_COM, 0x10, 0x3f8, COM_FREQ },
1027		{ PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
1028	    },
1029	},
1030
1031	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1032	{   "Moxa Technologies, Smartio C104H/PCI",
1033	    NULL,
1034	    {	0x1393,	0x1040,	0,	0	},
1035	    {	0xffff,	0xffff,	0,	0,	},
1036	    {
1037		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1038		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1039		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1040		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1041	    },
1042	},
1043
1044	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1045	{   "Moxa Technologies, Smartio CP-104UL/PCI",
1046	    NULL,
1047	    {   0x1393,	0x1041,	0,	0	},
1048	    {   0xffff,	0xffff,	0,	0,	},
1049	    {
1050		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1051		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1052		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1053		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1054	    },
1055	},
1056
1057	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
1058	{   "Moxa Technologies, Industio CP-114",
1059	    NULL,
1060	    {	0x1393,	0x1141,	0,	0	},
1061	    {	0xffff,	0xffff,	0,	0,	},
1062	    {
1063		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1064		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1065		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1066		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1067	    },
1068	},
1069
1070	/* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1071	{   "Moxa Technologies, C168H/PCI",
1072	    NULL,
1073	    {	0x1393,	0x1680,	0,	0	},
1074	    {	0xffff,	0xffff,	0,	0,	},
1075	    {
1076		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1077		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1078		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1079		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1080		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
1081		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
1082		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
1083		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
1084	    },
1085	},
1086
1087	/* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1088	{   "Moxa Technologies, C168U/PCI",
1089	    NULL,
1090	    {	0x1393,	0x1681,	0,	0	},
1091	    {	0xffff,	0xffff,	0,	0,	},
1092	    {
1093		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1094		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1095		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1096		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1097		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
1098		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
1099		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
1100		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
1101	    },
1102	},
1103
1104	{   "Avlab Technology, PCI IO 2S",
1105	    NULL,
1106	    {	0x14db,	0x2130,	0,	0	},
1107	    {	0xffff,	0xfffc,	0,	0	},
1108	    {
1109		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1110		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1111	    },
1112	},
1113
1114	/* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
1115	{   "Avlab Low Profile PCI 4 Serial",
1116	    NULL,
1117	    {	0x14db,	0x2150,	0,	0	},
1118	    {	0xffff,	0xffff,	0,	0	},
1119	    {
1120		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1121		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1122		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
1123		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1124	    },
1125	},
1126
1127	/* Decision Computer Inc, serial ports */
1128	{   "Decision Computer Inc, PCCOM 4-port serial",
1129	    NULL,
1130	    {	0x6666,	0x0001,	0,	0	},
1131	    {	0xffff,	0xffff,	0,	0	},
1132	    {
1133		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1134		{ PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1135		{ PUC_PORT_TYPE_COM, 0x1c, 0x10, COM_FREQ },
1136		{ PUC_PORT_TYPE_COM, 0x1c, 0x18, COM_FREQ },
1137	    },
1138	},
1139
1140	{   "PCCOM dual port RS232/422/485",
1141	    NULL,
1142	    {	0x6666,	0x0004,	0,	0	},
1143	    {	0xffff,	0xffff,	0,	0	},
1144	    {
1145		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1146		{ PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1147	    },
1148	},
1149
1150	{   "IC Book Labs Ironclad x8 Lite",
1151	    NULL,
1152	    {	0xb00c,	0x041c,	0,	0	},
1153	    {	0xffff,	0xffff,	0,	0	},
1154	    {
1155		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1156		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1157		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1158		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1159		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1160		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1161		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1162		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ }
1163	    },
1164	    PUC_ILR_TYPE_DIGI, { 0x07 },
1165	},
1166
1167	{   "IC Book Labs Ironclad x8 Pro",
1168	    NULL,
1169	    {	0xb00c,	0x051c,	0,	0	},
1170	    {	0xffff,	0xffff,	0,	0	},
1171	    {
1172		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1173		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1174		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1175		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1176		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1177		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1178		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1179		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ }
1180	    },
1181	    PUC_ILR_TYPE_DIGI, { 0x07 },
1182	},
1183
1184	{   "IC Book Labs Dreadnought x16 Lite",
1185	    NULL,
1186	    {	0xb00c,	0x091c,	0,	0	},
1187	    {	0xffff,	0xffff,	0,	0	},
1188	    {
1189		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1190		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1191		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1192		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1193		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1194		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1195		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1196		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
1197		{ PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ },
1198		{ PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ },
1199		{ PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ },
1200		{ PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ },
1201		{ PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ },
1202		{ PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ },
1203		{ PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ },
1204		{ PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ },
1205	    },
1206	    PUC_ILR_TYPE_DIGI, { 0x07, 0x47 },
1207	},
1208
1209	{   "IC Book Labs Dreadnought x16 Pro",
1210	    NULL,
1211	    {	0xb00c,	0x081c,	0,	0	},
1212	    {	0xffff,	0xffff,	0,	0	},
1213	    {
1214		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8, 0x200000 },
1215		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8, 0x200000 },
1216		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8, 0x200000 },
1217		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8, 0x200000 },
1218		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ * 8, 0x200000 },
1219		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ * 8, 0x200000 },
1220		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ * 8, 0x200000 },
1221		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ * 8, 0x200000 },
1222		{ PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ * 8, 0x200000 },
1223		{ PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ * 8, 0x200000 },
1224		{ PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ * 8, 0x200000 },
1225		{ PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ * 8, 0x200000 },
1226		{ PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ * 8, 0x200000 },
1227		{ PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ * 8, 0x200000 },
1228		{ PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ * 8, 0x200000 },
1229		{ PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ * 8, 0x200000 },
1230	    },
1231	    PUC_ILR_TYPE_DIGI, { 0x07, 0x47 },
1232	},
1233
1234	{ 0 }
1235};
1236