pucdata.c revision 125453
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 125453 2004-02-04 18:01:02Z jhb $");
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	 * VScom (Titan?) PCI-800L.  More modern variant of the
777	 * PCI-800.  Uses 6 discrete 16550 UARTs, plus another
778	 * two of them obviously implemented as macro cells in
779	 * the ASIC.  This causes the weird port access pattern
780	 * below, where two of the IO port ranges each access
781	 * one of the ASIC UARTs, and a block of IO addresses
782	 * access the external UARTs.
783	 */
784	{   "Titan VScom PCI-800L",
785	    NULL,
786	    {   0x14d2, 0x8080, 0x14d2, 0x8080  },
787	    {   0xffff, 0xffff, 0xffff, 0xffff  },
788	    {
789		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
790		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
791		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
792		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ * 8 },
793		{ PUC_PORT_TYPE_COM, 0x20, 0x10, COM_FREQ * 8 },
794		{ PUC_PORT_TYPE_COM, 0x20, 0x18, COM_FREQ * 8 },
795		{ PUC_PORT_TYPE_COM, 0x20, 0x20, COM_FREQ * 8 },
796		{ PUC_PORT_TYPE_COM, 0x20, 0x28, COM_FREQ * 8 },
797	    },
798	},
799
800	/* NEC PK-UG-X001 K56flex PCI Modem card.
801	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */
802	{   "NEC PK-UG-X001 K56flex PCI Modem",
803	    NULL,
804	    {	0x1033,	0x0074,	0x1033,	0x8014	},
805	    {	0xffff,	0xffff,	0xffff,	0xffff	},
806	    {
807		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
808	    },
809	},
810
811	/* NEC PK-UG-X008 */
812	{   "NEC PK-UG-X008",
813	    NULL,
814	    {	0x1033,	0x007d,	0x1033,	0x8012	},
815	    {	0xffff,	0xffff,	0xffff,	0xffff	},
816	    {
817		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ},
818	    },
819	},
820
821	/* Lava Computers 2SP-PCI */
822	{   "Lava Computers 2SP-PCI parallel port",
823	    NULL,
824	    {	0x1407,	0x8000,	0,	0	},
825	    {	0xffff,	0xffff,	0,	0	},
826	    {
827		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
828	    },
829	},
830
831	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
832	{   "Lava Computers dual serial port",
833	    NULL,
834	    {	0x1407,	0x0100,	0,	0	},
835	    {	0xffff,	0xfffc,	0,	0	},
836	    {
837		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
838		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
839	    },
840	},
841
842	/* Lava Computers newer Quattro-PCI serial ports */
843	{   "Lava Computers Quattro-PCI serial port",
844	    NULL,
845	    {	0x1407,	0x0120,	0,	0	},
846	    {	0xffff,	0xfffc,	0,	0	},
847	    {
848		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
849		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
850	    },
851	},
852
853	/* Lava Computers DSerial PCI serial ports */
854	{   "Lava Computers serial port",
855	    NULL,
856	    {	0x1407,	0x0110,	0,	0	},
857	    {	0xffff,	0xfffc,	0,	0	},
858	    {
859		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
860	    },
861	},
862
863	/* Lava Computers Octopus-550 serial ports */
864	{   "Lava Computers Octopus-550 8-port serial",
865	    NULL,
866	    {	0x1407,	0x0180,	0,	0	},
867	    {	0xffff,	0xfffc,	0,	0	},
868	    {
869		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
870		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
871		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
872		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
873	    },
874	},
875
876	/* US Robotics (3Com) PCI Modems */
877	{   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
878	    NULL,
879	    {	0x12b9,	0x1008,	0,	0	},
880	    {	0xffff,	0xffff,	0,	0	},
881	    {
882		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
883	    },
884	},
885
886	/* Actiontec  56K PCI Master */
887	{   "Actiontec 56K PCI Master",
888	    NULL,
889	    {	0x11c1,	0x0480,	0x0, 	0x0	},
890	    {	0xffff,	0xffff,	0x0,	0x0	},
891	    {
892		{ PUC_PORT_TYPE_COM,	0x14,	0x00, COM_FREQ },
893	    },
894	},
895
896	/*
897	 * Boards with an Oxford Semiconductor chip.
898	 *
899	 * Oxford Semiconductor provides documentation for their chip at:
900	 * <URL:http://www.oxsemi.com/products/uarts/index.html>
901	 *
902	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
903	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
904	 */
905
906	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
907	{   "Oxford Semiconductor OX16PCI954 UARTs",
908	    NULL,
909	    {	0x1415,	0x9501,	0,	0	},
910	    {	0xffff,	0xffff,	0,	0	},
911	    {
912		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
913		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
914		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
915		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
916	    },
917	},
918
919	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
920	{   "Oxford Semiconductor OX16PCI954 UARTs",
921	    NULL,
922	    {	0x1415,	0x950a,	0,	0	},
923	    {	0xffff,	0xffff,	0,	0	},
924	    {
925		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
926		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
927		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
928		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
929	    },
930	},
931
932	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
933	{   "Oxford Semiconductor OX16PCI954 Parallel port",
934	    NULL,
935	    {	0x1415,	0x9513,	0,	0	},
936	    {	0xffff,	0xffff,	0,	0	},
937	    {
938		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
939	    },
940	},
941
942	/* Oxford Semiconductor OX12PCI840 PCI Parallel port */
943	{   "Qxford Semiconductor OX12PCI840 Parallel port",
944		NULL,
945		{   0x1415, 0x8403, 0,      0       },
946		{   0xffff, 0xffff, 0,      0 },
947		{
948		    { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
949		},
950	},
951
952	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
953	{   "NetMos NM9835 Dual UART and 1284 Printer port",
954	    NULL,
955	    {	0x9710,	0x9835,	0,	0	},
956	    {	0xffff,	0xffff,	0,	0	},
957	    {
958		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
959		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
960		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
961	    },
962	},
963
964	/* NetMos 4S0P PCI: 4S, 0P */
965	{   "NetMos NM9845 Quad UART",
966	    NULL,
967	    {	0x9710,	0x9845,	0,	0	},
968	    {	0xffff,	0xffff,	0,	0	},
969	    {
970		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
971		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
972		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
973		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
974	    },
975	},
976
977	/*
978	 * This is the Middle Digital, Inc. PCI-Weasel, which
979	 * uses a PCI interface implemented in FPGA.
980	 */
981	{   "Middle Digital, Inc. Weasel serial port",
982	    NULL,
983	    {	0xdeaf,	0x9051,	0,	0	},
984	    {	0xffff,	0xffff,	0,	0	},
985	    {
986		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
987	    },
988	},
989
990	/* SD-LAB PCI I/O Card 4S2P */
991	{   "Syba Tech Ltd. PCI-4S2P-550-ECP",
992	    puc_config_win877,
993	    {	0x1592, 0x0781, 0,	0	},
994	    {	0xffff, 0xffff, 0,	0	},
995	    {
996		{ PUC_PORT_TYPE_COM, 0x10, 0x2e8, COM_FREQ },
997		{ PUC_PORT_TYPE_COM, 0x10, 0x2f8, COM_FREQ },
998		{ PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
999		{ PUC_PORT_TYPE_COM, 0x10, 0x3e8, COM_FREQ },
1000		{ PUC_PORT_TYPE_COM, 0x10, 0x3f8, COM_FREQ },
1001		{ PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
1002	    },
1003	},
1004
1005	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1006	{   "Moxa Technologies, Smartio C104H/PCI",
1007	    NULL,
1008	    {   0x1393, 0x1040, 0,      0       },
1009	    {   0xffff, 0xffff, 0,      0,      },
1010	    {
1011		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1012		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1013		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1014		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1015	    },
1016	},
1017
1018	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1019	{   "Moxa Technologies, Smartio CP-104UL/PCI",
1020		NULL,
1021		{   0x1393, 0x1041, 0,      0       },
1022		{   0xffff, 0xffff, 0,      0,      },
1023		{
1024			{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1025			{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1026			{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1027			{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1028		},
1029	},
1030
1031	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
1032	{   "Moxa Technologies, Industio CP-114",
1033	    NULL,
1034	    {	0x1393,	0x1141,	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 8S RS232 */
1045	{   "Moxa Technologies, C168H/PCI",
1046	    NULL,
1047	    {	0x1393,	0x1680,	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		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
1055		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
1056		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
1057		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
1058	    },
1059	},
1060
1061	/* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1062	{   "Moxa Technologies, C168U/PCI",
1063	    NULL,
1064	    {	0x1393,	0x1681,	0,	0	},
1065	    {	0xffff,	0xffff,	0,	0,	},
1066	    {
1067		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1068		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1069		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1070		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1071		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
1072		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
1073		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
1074		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
1075	    },
1076	},
1077
1078	{   "Avlab Technology, PCI IO 2S",
1079	    NULL,
1080	    {	0x14db,	0x2130,	0,	0	},
1081	    {	0xffff,	0xfffc,	0,	0	},
1082	    {
1083		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1084		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1085	    },
1086	},
1087
1088	/* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
1089	{   "Avlab Low Profile PCI 4 Serial",
1090	    NULL,
1091	    {	0x14db,	0x2150,	0,	0	},
1092	    {	0xffff,	0xffff,	0,	0	},
1093	    {
1094		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1095		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1096		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
1097		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1098	    },
1099	},
1100
1101        /* Decision Computer Inc, serial ports */
1102        {   "Decision Computer Inc, PCCOM 4-port serial",
1103	    NULL,
1104            {   0x6666, 0x0001, 0,      0       },
1105            {   0xffff, 0xffff, 0,      0       },
1106            {
1107                { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1108                { PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1109                { PUC_PORT_TYPE_COM, 0x1c, 0x10, COM_FREQ },
1110                { PUC_PORT_TYPE_COM, 0x1c, 0x18, COM_FREQ },
1111            },
1112        },
1113
1114	{   "PCCOM dual port RS232/422/485",
1115	    NULL,
1116	    {	0x6666,	0x0004,	0,	0	},
1117	    {	0xffff,	0xffff,	0,	0	},
1118	    {
1119		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1120		{ PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1121	    },
1122	},
1123
1124	{   "IC Book Labs Ironclad x8 Lite",
1125	    NULL,
1126	    {   0xb00c, 0x041c, 0,      0       },
1127	    {   0xffff, 0xffff, 0,      0       },
1128	    {
1129		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1130		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1131		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1132		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1133		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1134		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1135		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1136		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ }
1137	    },
1138	    PUC_ILR_TYPE_DIGI, { 0x07 },
1139	},
1140
1141	{   "IC Book Labs Ironclad x8 Pro",
1142	    NULL,
1143	    {   0xb00c, 0x051c, 0,      0       },
1144	    {   0xffff, 0xffff, 0,      0       },
1145	    {
1146		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1147		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1148		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1149		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1150		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1151		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1152		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1153		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ }
1154	    },
1155	    PUC_ILR_TYPE_DIGI, { 0x07 },
1156	},
1157
1158	{   "IC Book Labs Dreadnought x16 Lite",
1159	    NULL,
1160	    {	0xb00c, 0x091c, 0,	0	},
1161	    {   0xffff, 0xffff, 0,      0       },
1162	    {
1163		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1164		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1165		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1166		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1167		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1168		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1169		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1170		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
1171		{ PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ },
1172		{ PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ },
1173		{ PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ },
1174		{ PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ },
1175		{ PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ },
1176		{ PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ },
1177		{ PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ },
1178		{ PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ },
1179	    },
1180	    PUC_ILR_TYPE_DIGI, { 0x07, 0x47 },
1181	},
1182
1183	{   "IC Book Labs Dreadnought x16 Pro",
1184	    NULL,
1185	    {   0xb00c, 0x081c, 0,      0       },
1186	    {   0xffff, 0xffff, 0,      0       },
1187	    {
1188		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8, 0x200000 },
1189		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8, 0x200000 },
1190		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8, 0x200000 },
1191		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8, 0x200000 },
1192		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ * 8, 0x200000 },
1193		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ * 8, 0x200000 },
1194		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ * 8, 0x200000 },
1195		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ * 8, 0x200000 },
1196		{ PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ * 8, 0x200000 },
1197		{ PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ * 8, 0x200000 },
1198		{ PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ * 8, 0x200000 },
1199		{ PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ * 8, 0x200000 },
1200		{ PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ * 8, 0x200000 },
1201		{ PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ * 8, 0x200000 },
1202		{ PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ * 8, 0x200000 },
1203		{ PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ * 8, 0x200000 },
1204	    },
1205	    PUC_ILR_TYPE_DIGI, { 0x07, 0x47 },
1206	},
1207
1208	{   "Sunix SUN1889",
1209	    NULL,
1210	    {	0x0009,	0x7168,	0,	0	},
1211	    {	0xffff,	0xffff,	0,	0	},
1212	    {
1213		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
1214		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
1215	    },
1216	},
1217
1218	{ 0 }
1219};
1220