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