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