pucdata.c revision 93330
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 93330 2002-03-28 11:17:20Z murray $");
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
50const struct puc_device_description puc_devices[] = {
51	/*
52	 * XXX no entry because I have no data:
53	 * XXX Dolphin Peripherals 4006 (single parallel)
54	 */
55
56	/*
57	 * Dolphin Peripherals 4014 (dual parallel port) card.  PLX 9050, with
58	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
59	 * into the subsystem fields, and claims that it's a
60	 * network/misc (0x02/0x80) device.
61	 */
62	{   "Dolphin Peripherals 4014",
63	    {	0x10b5,	0x9050,	0xd84d,	0x6810	},
64	    {	0xffff,	0xffff,	0xffff,	0xffff	},
65	    {
66		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
67		{ PUC_PORT_TYPE_LPT, 0x24, 0x00, 0x00 },
68	    },
69	},
70
71	/*
72	 * XXX Dolphin Peripherals 4025 (single serial)
73	 * (clashes with Dolphin Peripherals  4036 (2s variant)
74	 */
75
76	/*
77	 * Dolphin Peripherals 4035 (dual serial port) card.  PLX 9050, with
78	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
79	 * into the subsystem fields, and claims that it's a
80	 * network/misc (0x02/0x80) device.
81	 */
82	{   "Dolphin Peripherals 4035",
83	    {	0x10b5,	0x9050,	0xd84d,	0x6808	},
84	    {	0xffff,	0xffff,	0xffff,	0xffff	},
85	    {
86		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
87		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
88	    },
89	},
90
91	/*
92	 * Dolphin Peripherals 4036 (dual serial port) card.
93	 * (Dolpin 4025 has the same ID but only one port)
94	 */
95	{   "Dolphin Peripherals 4036",
96	    {	0x1409,	0x7168,	0x0,	0x0	},
97	    {	0xffff,	0xffff,	0x0,	0x0	},
98	    {
99		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
100		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
101	    },
102	},
103
104	/*
105	 * XXX no entry because I have no data:
106	 * XXX Dolphin Peripherals 4078 (dual serial and single parallel)
107	 */
108
109
110	/*
111	 * SIIG Boards.
112	 *
113	 * SIIG provides documentation for their boards at:
114	 * <URL:http://www.siig.com/driver.htm>
115	 *
116	 * Please excuse the weird ordering, it's the order they
117	 * use in their documentation.
118	 */
119
120	/*
121	 * SIIG "10x" family boards.
122	 */
123
124	/* SIIG Cyber Serial PCI 16C550 (10x family): 1S */
125	{   "SIIG Cyber Serial PCI 16C550 (10x family)",
126	    {	0x131f,	0x1000,	0,	0	},
127	    {	0xffff,	0xffff,	0,	0	},
128	    {
129		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
130	    },
131	},
132
133	/* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
134	{   "SIIG Cyber Serial PCI 16C650 (10x family)",
135	    {	0x131f,	0x1001,	0,	0	},
136	    {	0xffff,	0xffff,	0,	0	},
137	    {
138		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
139	    },
140	},
141
142	/* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
143	{   "SIIG Cyber Serial PCI 16C850 (10x family)",
144	    {	0x131f,	0x1002,	0,	0	},
145	    {	0xffff,	0xffff,	0,	0	},
146	    {
147		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
148	    },
149	},
150
151	/* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
152	{   "SIIG Cyber I/O PCI 16C550 (10x family)",
153	    {	0x131f,	0x1010,	0,	0	},
154	    {	0xffff,	0xffff,	0,	0	},
155	    {
156		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
157		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
158	    },
159	},
160
161	/* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
162	{   "SIIG Cyber I/O PCI 16C650 (10x family)",
163	    {	0x131f,	0x1011,	0,	0	},
164	    {	0xffff,	0xffff,	0,	0	},
165	    {
166		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
167		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
168	    },
169	},
170
171	/* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
172	{   "SIIG Cyber I/O PCI 16C850 (10x family)",
173	    {	0x131f,	0x1012,	0,	0	},
174	    {	0xffff,	0xffff,	0,	0	},
175	    {
176		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
177		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
178	    },
179	},
180
181	/* SIIG Cyber Parallel PCI (10x family): 1P */
182	{   "SIIG Cyber Parallel PCI (10x family)",
183	    {	0x131f,	0x1020,	0,	0	},
184	    {	0xffff,	0xffff,	0,	0	},
185	    {
186		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
187	    },
188	},
189
190	/* SIIG Cyber Parallel Dual PCI (10x family): 2P */
191	{   "SIIG Cyber Parallel Dual PCI (10x family)",
192	    {	0x131f,	0x1021,	0,	0	},
193	    {	0xffff,	0xffff,	0,	0	},
194	    {
195		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
196		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
197	    },
198	},
199
200	/* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
201	{   "SIIG Cyber Serial Dual PCI 16C550 (10x family)",
202	    {	0x131f,	0x1030,	0,	0	},
203	    {	0xffff,	0xffff,	0,	0	},
204	    {
205		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
206		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
207	    },
208	},
209
210	/* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
211	{   "SIIG Cyber Serial Dual PCI 16C650 (10x family)",
212	    {	0x131f,	0x1031,	0,	0	},
213	    {	0xffff,	0xffff,	0,	0	},
214	    {
215		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
216		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
217	    },
218	},
219
220	/* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
221	{   "SIIG Cyber Serial Dual PCI 16C850 (10x family)",
222	    {	0x131f,	0x1032,	0,	0	},
223	    {	0xffff,	0xffff,	0,	0	},
224	    {
225		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
226		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
227	    },
228	},
229
230	/* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
231	{   "SIIG Cyber 2S1P PCI 16C550 (10x family)",
232	    {	0x131f,	0x1034,	0,	0	},	/* XXX really? */
233	    {	0xffff,	0xffff,	0,	0	},
234	    {
235		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
236		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
237		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
238	    },
239	},
240
241	/* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
242	{   "SIIG Cyber 2S1P PCI 16C650 (10x family)",
243	    {	0x131f,	0x1035,	0,	0	},	/* XXX really? */
244	    {	0xffff,	0xffff,	0,	0	},
245	    {
246		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
247		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
248		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
249	    },
250	},
251
252	/* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
253	{   "SIIG Cyber 2S1P PCI 16C850 (10x family)",
254	    {	0x131f,	0x1036,	0,	0	},	/* XXX really? */
255	    {	0xffff,	0xffff,	0,	0	},
256	    {
257		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
258		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
259		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
260	    },
261	},
262
263	/* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
264	{   "SIIG Cyber 4S PCI 16C550 (10x family)",
265	    {	0x131f,	0x1050,	0,	0	},
266	    {	0xffff,	0xffff,	0,	0	},
267	    {
268		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
269		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
270		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
271		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
272	    },
273	},
274
275	/* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
276	{   "SIIG Cyber 4S PCI 16C650 (10x family)",
277	    {	0x131f,	0x1051,	0,	0	},
278	    {	0xffff,	0xffff,	0,	0	},
279	    {
280		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
281		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
282		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
283		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
284	    },
285	},
286
287	/* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
288	{   "SIIG Cyber 4S PCI 16C850 (10x family)",
289	    {	0x131f,	0x1052,	0,	0	},
290	    {	0xffff,	0xffff,	0,	0	},
291	    {
292		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
293		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
294		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
295		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
296	    },
297	},
298
299	/*
300	 * SIIG "20x" family boards.
301	 */
302
303	/* SIIG Cyber Parallel PCI (20x family): 1P */
304	{   "SIIG Cyber Parallel PCI (20x family)",
305	    {	0x131f,	0x2020,	0,	0	},
306	    {	0xffff,	0xffff,	0,	0	},
307	    {
308		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
309	    },
310	},
311
312	/* SIIG Cyber Parallel Dual PCI (20x family): 2P */
313	{   "SIIG Cyber Parallel Dual PCI (20x family)",
314	    {	0x131f,	0x2021,	0,	0	},
315	    {	0xffff,	0xffff,	0,	0	},
316	    {
317		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
318		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
319	    },
320	},
321
322	/* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
323	{   "SIIG Cyber 2P1S PCI 16C550 (20x family)",
324	    {	0x131f,	0x2040,	0,	0	},
325	    {	0xffff,	0xffff,	0,	0	},
326	    {
327		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
328		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
329		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
330	    },
331	},
332
333	/* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
334	{   "SIIG Cyber 2P1S PCI 16C650 (20x family)",
335	    {	0x131f,	0x2041,	0,	0	},
336	    {	0xffff,	0xffff,	0,	0	},
337	    {
338		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
339		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
340		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
341	    },
342	},
343
344	/* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
345	{   "SIIG Cyber 2P1S PCI 16C850 (20x family)",
346	    {	0x131f,	0x2042,	0,	0	},
347	    {	0xffff,	0xffff,	0,	0	},
348	    {
349		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
350		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
351		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
352	    },
353	},
354
355	/* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
356	{   "SIIG Cyber Serial PCI 16C550 (20x family)",
357	    {	0x131f,	0x2000,	0,	0	},
358	    {	0xffff,	0xffff,	0,	0	},
359	    {
360		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
361	    },
362	},
363
364	/* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
365	{   "SIIG Cyber Serial PCI 16C650 (20x family)",
366	    {	0x131f,	0x2001,	0,	0	},
367	    {	0xffff,	0xffff,	0,	0	},
368	    {
369		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
370	    },
371	},
372
373	/* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
374	{   "SIIG Cyber Serial PCI 16C850 (20x family)",
375	    {	0x131f,	0x2002,	0,	0	},
376	    {	0xffff,	0xffff,	0,	0	},
377	    {
378		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
379	    },
380	},
381
382	/* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
383	{   "SIIG Cyber I/O PCI 16C550 (20x family)",
384	    {	0x131f,	0x2010,	0,	0	},
385	    {	0xffff,	0xffff,	0,	0	},
386	    {
387		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
388		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
389	    },
390	},
391
392	/* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
393	{   "SIIG Cyber I/O PCI 16C650 (20x family)",
394	    {	0x131f,	0x2011,	0,	0	},
395	    {	0xffff,	0xffff,	0,	0	},
396	    {
397		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
398		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
399	    },
400	},
401
402	/* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
403	{   "SIIG Cyber I/O PCI 16C850 (20x family)",
404	    {	0x131f,	0x2012,	0,	0	},
405	    {	0xffff,	0xffff,	0,	0	},
406	    {
407		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
408		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
409	    },
410	},
411
412	/* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
413	{   "SIIG Cyber Serial Dual PCI 16C550 (20x family)",
414	    {	0x131f,	0x2030,	0,	0	},
415	    {	0xffff,	0xffff,	0,	0	},
416	    {
417		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
418		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
419	    },
420	},
421
422	/* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
423	{   "SIIG Cyber Serial Dual PCI 16C650 (20x family)",
424	    {	0x131f,	0x2031,	0,	0	},
425	    {	0xffff,	0xffff,	0,	0	},
426	    {
427		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
428		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
429	    },
430	},
431
432	/* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
433	{   "SIIG Cyber Serial Dual PCI 16C850 (20x family)",
434	    {	0x131f,	0x2032,	0,	0	},
435	    {	0xffff,	0xffff,	0,	0	},
436	    {
437		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
438		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
439	    },
440	},
441
442	/* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
443	{   "SIIG Cyber 2S1P PCI 16C550 (20x family)",
444	    {	0x131f,	0x2060,	0,	0	},
445	    {	0xffff,	0xffff,	0,	0	},
446	    {
447		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
448		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
449		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
450	    },
451	},
452
453	/* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
454	{   "SIIG Cyber 2S1P PCI 16C650 (20x family)",
455	    {	0x131f,	0x2061,	0,	0	},
456	    {	0xffff,	0xffff,	0,	0	},
457	    {
458		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
459		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
460		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
461	    },
462	},
463
464	/* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
465	{   "SIIG Cyber 2S1P PCI 16C850 (20x family)",
466	    {	0x131f,	0x2062,	0,	0	},
467	    {	0xffff,	0xffff,	0,	0	},
468	    {
469		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
470		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
471		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
472	    },
473	},
474
475	/* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
476	{   "SIIG Cyber 4S PCI 16C550 (20x family)",
477	    {	0x131f,	0x2050,	0,	0	},
478	    {	0xffff,	0xffff,	0,	0	},
479	    {
480		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
481		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
482		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
483		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
484	    },
485	},
486
487	/* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
488	{   "SIIG Cyber 4S PCI 16C650 (20x family)",
489	    {	0x131f,	0x2051,	0,	0	},
490	    {	0xffff,	0xffff,	0,	0	},
491	    {
492		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
493		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
494		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
495		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
496	    },
497	},
498
499	/* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
500	{   "SIIG Cyber 4S PCI 16C850 (20x family)",
501	    {	0x131f,	0x2052,	0,	0	},
502	    {	0xffff,	0xffff,	0,	0	},
503	    {
504		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
505		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
506		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
507		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
508	    },
509	},
510
511	/* VScom PCI-400: 4S */
512	{   "VScom PCI-400",
513	    {	0x10b5,	0x1077,	0x10b5,	0x1077	},
514	    {	0xffff,	0xffff,	0xffff,	0xffff	},
515	    {
516		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
517		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
518		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
519		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
520	    },
521	},
522
523	/* VScom PCI-800: 8S */
524	{   "VScom PCI-800",
525	    {	0x10b5,	0x1076,	0x10b5,	0x1076	},
526	    {	0xffff,	0xffff,	0xffff,	0xffff	},
527	    {
528		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
529		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
530		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
531		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
532		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
533		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
534		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
535		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
536	    },
537	},
538	/*
539	 * VScom PCI-800H. Uses 8 16950 UART, behind a PCI chips that offers
540	 * 4 com port on PCI device 0 and 4 on PCI device 1. PCI device 0 has
541	 * device ID 3 and PCI device 1 device ID 4.
542	 */
543	{   "Titan PCI-800H",
544	    {	0x14d2,	0xa003,	0,	0	},
545	    {	0xffff,	0xffff,	0,	0	},
546	    {
547		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
548		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
549		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
550		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
551	    },
552	},
553	{   "Titan PCI-800H",
554	    {	0x14d2,	0xa004,	0,	0	},
555	    {	0xffff,	0xffff,	0,	0	},
556	    {
557		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
558		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
559		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
560		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
561	    },
562	},
563        {   "Titan PCI-200H",
564            {   0x14d2, 0xa005, 0,      0       },
565            {   0xffff, 0xffff, 0,      0       },
566            {
567                { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
568                { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
569            },
570        },
571
572	/* NEC PK-UG-X001 K56flex PCI Modem card.
573	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */
574	{   "NEC PK-UG-X001 K56flex PCI Modem",
575	    {	0x1033,	0x0074,	0x1033,	0x8014	},
576	    {	0xffff,	0xffff,	0xffff,	0xffff	},
577	    {
578		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
579	    },
580	},
581
582	/* NEC PK-UG-X008 */
583	{   "NEC PK-UG-X008",
584	    {	0x1033,	0x007d,	0x1033,	0x8012	},
585	    {	0xffff,	0xffff,	0xffff,	0xffff	},
586	    {
587		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ},
588	    },
589	},
590
591	/* Lava Computers 2SP-PCI */
592	{   "Lava Computers 2SP-PCI parallel port",
593	    {	0x1407,	0x8000,	0,	0	},
594	    {	0xffff,	0xffff,	0,	0	},
595	    {
596		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
597	    },
598	},
599
600	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
601	{   "Lava Computers dual serial port",
602	    {	0x1407,	0x0100,	0,	0	},
603	    {	0xffff,	0xfffc,	0,	0	},
604	    {
605		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
606		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
607	    },
608	},
609
610	/* Lava Computers DSerial PCI serial ports */
611	{   "Lava Computers serial port",
612	    {	0x1407,	0x0110,	0,	0	},
613	    {	0xffff,	0xfffc,	0,	0	},
614	    {
615		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
616	    },
617	},
618
619	/* Lava Computers Octopus-550 serial ports */
620	{   "Lava Computers Octopus-550 8-port serial",
621	    {	0x1407,	0x0180,	0,	0	},
622	    {	0xffff,	0xfffc,	0,	0	},
623	    {
624		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
625		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
626		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
627		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
628	    },
629	},
630
631	/* US Robotics (3Com) PCI Modems */
632	{   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
633	    {	0x12b9,	0x1008,	0,	0	},
634	    {	0xffff,	0xffff,	0,	0	},
635	    {
636		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
637	    },
638	},
639
640	/* Actiontec  56K PCI Master */
641	{   "Actiontec 56K PCI Master",
642	    {	0x11c1,	0x0480,	0x0, 	0x0	},
643	    {	0xffff,	0xffff,	0x0,	0x0	},
644	    {
645		{ PUC_PORT_TYPE_COM,	0x14,	0x00, COM_FREQ },
646	    },
647	},
648
649	/*
650	 * Boards with an Oxford Semiconductor chip.
651	 *
652	 * Oxford Semiconductor provides documentation for their chip at:
653	 * <URL:http://www.oxsemi.com/products/uarts/index.html>
654	 *
655	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
656	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
657	 */
658
659	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
660	{   "Qxford Semiconductor OX16PCI954 UARTs",
661	    {	0x1415,	0x9501,	0,	0	},
662	    {	0xffff,	0xffff,	0,	0	},
663	    {
664		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
665		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
666		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
667		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
668	    },
669	},
670
671	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
672	{   "Qxford Semiconductor OX16PCI954 Parallel port",
673	    {	0x1415,	0x9513,	0,	0	},
674	    {	0xffff,	0xffff,	0,	0	},
675	    {
676		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
677	    },
678	},
679
680	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
681	{   "NetMos NM9835 Dual UART and 1284 Printer port",
682	    {	0x9710,	0x9835,	0,	0	},
683	    {	0xffff,	0xffff,	0,	0	},
684	    {
685		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
686		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
687		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
688	    },
689	},
690
691	/*
692	 * This is the Middle Digital, Inc. PCI-Weasel, which
693	 * uses a PCI interface implemented in FPGA.
694	 */
695	{   "Middle Digital, Inc. Weasel serial port",
696	    {	0xdeaf,	0x9051,	0,	0	},
697	    {	0xffff,	0xffff,	0,	0	},
698	    {
699		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
700	    },
701	},
702
703	/* SD-LAB PCI I/O Card 4S2P */
704	{   "Syba Tech Ltd. PCI-4S2P-550-ECP",
705	    {	0x1592, 0x0781, 0,	0	},
706	    {	0xffff, 0xffff, 0,	0	},
707	    {
708		{ PUC_PORT_TYPE_COM, 0x10, 0x2e8, COM_FREQ },
709		{ PUC_PORT_TYPE_COM, 0x10, 0x2f8, COM_FREQ },
710		{ PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
711		{ PUC_PORT_TYPE_COM, 0x10, 0x3e8, COM_FREQ },
712		{ PUC_PORT_TYPE_COM, 0x10, 0x3f8, COM_FREQ },
713		{ PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
714	    },
715	},
716
717	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
718	{   "Moxa Technologies, Industio CP-114",
719	    {	0x1393,	0x1141,	0,	0	},
720	    {	0xffff,	0xffff,	0,	0,	},
721	    {
722		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
723		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
724		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
725		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
726	    },
727	},
728
729	/* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
730	{   "Moxa Technologies, C168H/PCI",
731	    {	0x1393,	0x1680,	0,	0	},
732	    {	0xffff,	0xffff,	0,	0,	},
733	    {
734		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
735		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
736		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
737		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
738		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
739		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
740		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
741		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
742	    },
743	},
744
745	{   "Avlab Technology, PCI IO 2S",
746	    {	0x14db,	0x2130,	0,	0	},
747	    {	0xffff,	0xffff,	0,	0	},
748	    {
749		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
750		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
751	    },
752	},
753
754        /* Decision Computer Inc, serial ports */
755        {   "Decision Computer Inc, PCCOM 4-port serial",
756            {   0x6666, 0x0001, 0,      0       },
757            {   0xffff, 0xffff, 0,      0       },
758            {
759                { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
760                { PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
761                { PUC_PORT_TYPE_COM, 0x1c, 0x10, COM_FREQ },
762                { PUC_PORT_TYPE_COM, 0x1c, 0x18, COM_FREQ },
763            },
764        },
765
766	{ 0 }
767};
768