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