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