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