]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/puc/pucdata.c
This commit was generated by cvs2svn to compensate for changes in r152390,
[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 int puc_config_win877(struct puc_softc *);
51
52 const struct puc_device_description puc_devices[] = {
53
54         {   "Sunix SUN1889",
55             {   0x0009, 0x7168, 0,      0       },
56             {   0xffff, 0xffff, 0,      0       },
57             {
58                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
59                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
60             },
61         },
62
63         {   "Diva Serial [GSP] Multiport UART",
64             {   0x103c, 0x1048, 0x103c, 0x1282  },
65             {   0xffff, 0xffff, 0xffff, 0xffff  },
66             {
67                 { PUC_PORT_TYPE_UART, 0x10, 0x00, 0, PUC_FLAGS_MEMORY },
68                 { PUC_PORT_TYPE_UART, 0x10, 0x10, 0, PUC_FLAGS_MEMORY },
69                 { PUC_PORT_TYPE_UART, 0x10, 0x38, 0, PUC_FLAGS_MEMORY },
70             },
71         },
72
73         {   "Comtrol RocketPort 550/4 RJ45",
74             {   0x11fe, 0x8014, 0,      0       },
75             {   0xffff, 0xffff, 0,      0       },
76             {
77                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
78                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
79                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
80                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
81             },
82         },
83
84         {   "Comtrol RocketPort 550/Quad",
85             {   0x11fe, 0x8015, 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 RJ11 part A",
96             {   0x11fe, 0x8010, 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 RJ11 part B",
106             {   0x11fe, 0x8011, 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 Octa part A",
117             {   0x11fe, 0x8012, 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 Octa part B",
127             {   0x11fe, 0x8013, 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/8 part A",
138             {   0x11fe, 0x8018, 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/8 part B",
148             {   0x11fe, 0x8019, 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             },
156         },
157
158         {   "Comtrol RocketPort 550/16 part A",
159             {   0x11fe, 0x8016, 0,      0       },
160             {   0xffff, 0xffff, 0,      0       },
161             {
162                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
163                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
164                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
165                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
166             },
167         },
168         {   "Comtrol RocketPort 550/16 part B",
169             {   0x11fe, 0x8017, 0,      0       },
170             {   0xffff, 0xffff, 0,      0       },
171             {
172                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 4 },
173                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 4 },
174                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 4 },
175                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 4 },
176                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ * 4 },
177                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ * 4 },
178                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ * 4 },
179                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ * 4 },
180                 { PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ * 4 },
181                 { PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ * 4 },
182                 { PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ * 4 },
183                 { PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ * 4 },
184             },
185         },
186
187         /*
188          * XXX no entry because I have no data:
189          * XXX Dolphin Peripherals 4006 (single parallel)
190          */
191
192         /*
193          * Dolphin Peripherals 4014 (dual parallel port) card.  PLX 9050, with
194          * a seemingly-lame EEPROM setup that puts the Dolphin IDs
195          * into the subsystem fields, and claims that it's a
196          * network/misc (0x02/0x80) device.
197          */
198         {   "Dolphin Peripherals 4014",
199             {   0x10b5, 0x9050, 0xd84d, 0x6810  },
200             {   0xffff, 0xffff, 0xffff, 0xffff  },
201             {
202                 { PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
203                 { PUC_PORT_TYPE_LPT, 0x24, 0x00, 0x00 },
204             },
205         },
206
207         /*
208          * XXX Dolphin Peripherals 4025 (single serial)
209          * (clashes with Dolphin Peripherals  4036 (2s variant)
210          */
211
212         /*
213          * Dolphin Peripherals 4035 (dual serial port) card.  PLX 9050, with
214          * a seemingly-lame EEPROM setup that puts the Dolphin IDs
215          * into the subsystem fields, and claims that it's a
216          * network/misc (0x02/0x80) device.
217          */
218         {   "Dolphin Peripherals 4035",
219             {   0x10b5, 0x9050, 0xd84d, 0x6808  },
220             {   0xffff, 0xffff, 0xffff, 0xffff  },
221             {
222                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
223                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
224             },
225         },
226
227         /*
228          * Dolphin Peripherals 4036 (dual serial port) card.
229          * (Dolpin 4025 has the same ID but only one port)
230          */
231         {   "Dolphin Peripherals 4036",
232             {   0x1409, 0x7168, 0,      0       },
233             {   0xffff, 0xffff, 0,      0       },
234             {
235                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
236                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
237             },
238         },
239
240         /*
241          * XXX no entry because I have no data:
242          * XXX Dolphin Peripherals 4078 (dual serial and single parallel)
243          */
244
245
246         /*
247          * SIIG Boards.
248          *
249          * SIIG provides documentation for their boards at:
250          * <URL:http://www.siig.com/driver.htm>
251          *
252          * Please excuse the weird ordering, it's the order they
253          * use in their documentation.
254          */
255
256         /*
257          * SIIG "10x" family boards.
258          */
259
260         /* SIIG Cyber Serial PCI 16C550 (10x family): 1S */
261         {   "SIIG Cyber Serial PCI 16C550 (10x family)",
262             {   0x131f, 0x1000, 0,      0       },
263             {   0xffff, 0xffff, 0,      0       },
264             {
265                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
266             },
267         },
268
269         /* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
270         {   "SIIG Cyber Serial PCI 16C650 (10x family)",
271             {   0x131f, 0x1001, 0,      0       },
272             {   0xffff, 0xffff, 0,      0       },
273             {
274                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
275             },
276         },
277
278         /* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
279         {   "SIIG Cyber Serial PCI 16C850 (10x family)",
280             {   0x131f, 0x1002, 0,      0       },
281             {   0xffff, 0xffff, 0,      0       },
282             {
283                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
284             },
285         },
286
287         /* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
288         {   "SIIG Cyber I/O PCI 16C550 (10x family)",
289             {   0x131f, 0x1010, 0,      0       },
290             {   0xffff, 0xffff, 0,      0       },
291             {
292                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
293                 { PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
294             },
295         },
296
297         /* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
298         {   "SIIG Cyber I/O PCI 16C650 (10x family)",
299             {   0x131f, 0x1011, 0,      0       },
300             {   0xffff, 0xffff, 0,      0       },
301             {
302                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
303                 { PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
304             },
305         },
306
307         /* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
308         {   "SIIG Cyber I/O PCI 16C850 (10x family)",
309             {   0x131f, 0x1012, 0,      0       },
310             {   0xffff, 0xffff, 0,      0       },
311             {
312                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
313                 { PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
314             },
315         },
316
317         /* SIIG Cyber Parallel PCI (10x family): 1P */
318         {   "SIIG Cyber Parallel PCI (10x family)",
319             {   0x131f, 0x1020, 0,      0       },
320             {   0xffff, 0xffff, 0,      0       },
321             {
322                 { PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
323             },
324         },
325
326         /* SIIG Cyber Parallel Dual PCI (10x family): 2P */
327         {   "SIIG Cyber Parallel Dual PCI (10x family)",
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             {   0x131f, 0x1030, 0,      0       },
339             {   0xffff, 0xffff, 0,      0       },
340             {
341                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
342                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
343             },
344         },
345
346         /* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
347         {   "SIIG Cyber Serial Dual PCI 16C650 (10x family)",
348             {   0x131f, 0x1031, 0,      0       },
349             {   0xffff, 0xffff, 0,      0       },
350             {
351                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
352                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
353             },
354         },
355
356         /* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
357         {   "SIIG Cyber Serial Dual PCI 16C850 (10x family)",
358             {   0x131f, 0x1032, 0,      0       },
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             },
364         },
365
366         /* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
367         {   "SIIG Cyber 2S1P PCI 16C550 (10x family)",
368             {   0x131f, 0x1034, 0,      0       },      /* XXX really? */
369             {   0xffff, 0xffff, 0,      0       },
370             {
371                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
372                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
373                 { PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
374             },
375         },
376
377         /* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
378         {   "SIIG Cyber 2S1P PCI 16C650 (10x family)",
379             {   0x131f, 0x1035, 0,      0       },      /* XXX really? */
380             {   0xffff, 0xffff, 0,      0       },
381             {
382                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
383                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
384                 { PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
385             },
386         },
387
388         /* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
389         {   "SIIG Cyber 2S1P PCI 16C850 (10x family)",
390             {   0x131f, 0x1036, 0,      0       },      /* XXX really? */
391             {   0xffff, 0xffff, 0,      0       },
392             {
393                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
394                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
395                 { PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
396             },
397         },
398
399         /* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
400         {   "SIIG Cyber 4S PCI 16C550 (10x family)",
401             {   0x131f, 0x1050, 0,      0       },
402             {   0xffff, 0xffff, 0,      0       },
403             {
404                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
405                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
406                 { PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
407                 { PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
408             },
409         },
410
411         /* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
412         {   "SIIG Cyber 4S PCI 16C650 (10x family)",
413             {   0x131f, 0x1051, 0,      0       },
414             {   0xffff, 0xffff, 0,      0       },
415             {
416                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
417                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
418                 { PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
419                 { PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
420             },
421         },
422
423         /* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
424         {   "SIIG Cyber 4S PCI 16C850 (10x family)",
425             {   0x131f, 0x1052, 0,      0       },
426             {   0xffff, 0xffff, 0,      0       },
427             {
428                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
429                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
430                 { PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
431                 { PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
432             },
433         },
434
435         /*
436          * SIIG "20x" family boards.
437          */
438
439         /* SIIG Cyber Parallel PCI (20x family): 1P */
440         {   "SIIG Cyber Parallel PCI (20x family)",
441             {   0x131f, 0x2020, 0,      0       },
442             {   0xffff, 0xffff, 0,      0       },
443             {
444                 { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
445             },
446         },
447
448         /* SIIG Cyber Parallel Dual PCI (20x family): 2P */
449         {   "SIIG Cyber Parallel Dual PCI (20x family)",
450             {   0x131f, 0x2021, 0,      0       },
451             {   0xffff, 0xffff, 0,      0       },
452             {
453                 { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
454                 { PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
455             },
456         },
457
458         /* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
459         {   "SIIG Cyber 2P1S PCI 16C550 (20x family)",
460             {   0x131f, 0x2040, 0,      0       },
461             {   0xffff, 0xffff, 0,      0       },
462             {
463                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
464                 { PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
465                 { PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
466             },
467         },
468
469         /* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
470         {   "SIIG Cyber 2P1S PCI 16C650 (20x family)",
471             {   0x131f, 0x2041, 0,      0       },
472             {   0xffff, 0xffff, 0,      0       },
473             {
474                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
475                 { PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
476                 { PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
477             },
478         },
479
480         /* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
481         {   "SIIG Cyber 2P1S PCI 16C850 (20x family)",
482             {   0x131f, 0x2042, 0,      0       },
483             {   0xffff, 0xffff, 0,      0       },
484             {
485                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
486                 { PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
487                 { PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
488             },
489         },
490
491         /* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
492         {   "SIIG Cyber Serial PCI 16C550 (20x family)",
493             {   0x131f, 0x2000, 0,      0       },
494             {   0xffff, 0xffff, 0,      0       },
495             {
496                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
497             },
498         },
499
500         /* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
501         {   "SIIG Cyber Serial PCI 16C650 (20x family)",
502             {   0x131f, 0x2001, 0,      0       },
503             {   0xffff, 0xffff, 0,      0       },
504             {
505                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
506             },
507         },
508
509         /* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
510         {   "SIIG Cyber Serial PCI 16C850 (20x family)",
511             {   0x131f, 0x2002, 0,      0       },
512             {   0xffff, 0xffff, 0,      0       },
513             {
514                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
515             },
516         },
517
518         /* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
519         {   "SIIG Cyber I/O PCI 16C550 (20x family)",
520             {   0x131f, 0x2010, 0,      0       },
521             {   0xffff, 0xffff, 0,      0       },
522             {
523                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
524                 { PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
525             },
526         },
527
528         /* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
529         {   "SIIG Cyber I/O PCI 16C650 (20x family)",
530             {   0x131f, 0x2011, 0,      0       },
531             {   0xffff, 0xffff, 0,      0       },
532             {
533                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
534                 { PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
535             },
536         },
537
538         /* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
539         {   "SIIG Cyber I/O PCI 16C850 (20x family)",
540             {   0x131f, 0x2012, 0,      0       },
541             {   0xffff, 0xffff, 0,      0       },
542             {
543                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
544                 { PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
545             },
546         },
547
548         /* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
549         {   "SIIG Cyber Serial Dual PCI 16C550 (20x family)",
550             {   0x131f, 0x2030, 0,      0       },
551             {   0xffff, 0xffff, 0,      0       },
552             {
553                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
554                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
555             },
556         },
557
558         /* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
559         {   "SIIG Cyber Serial Dual PCI 16C650 (20x family)",
560             {   0x131f, 0x2031, 0,      0       },
561             {   0xffff, 0xffff, 0,      0       },
562             {
563                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
564                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
565             },
566         },
567
568         /* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
569         {   "SIIG Cyber Serial Dual PCI 16C850 (20x family)",
570             {   0x131f, 0x2032, 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             },
576         },
577
578         /* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
579         {   "SIIG Cyber 2S1P PCI 16C550 (20x family)",
580             {   0x131f, 0x2060, 0,      0       },
581             {   0xffff, 0xffff, 0,      0       },
582             {
583                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
584                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
585                 { PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
586             },
587         },
588
589         /* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
590         {   "SIIG Cyber 2S1P PCI 16C650 (20x family)",
591             {   0x131f, 0x2061, 0,      0       },
592             {   0xffff, 0xffff, 0,      0       },
593             {
594                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
595                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
596                 { PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
597             },
598         },
599
600         /* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
601         {   "SIIG Cyber 2S1P PCI 16C850 (20x family)",
602             {   0x131f, 0x2062, 0,      0       },
603             {   0xffff, 0xffff, 0,      0       },
604             {
605                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
606                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
607                 { PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
608             },
609         },
610
611         /* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
612         {   "SIIG Cyber 4S PCI 16C550 (20x family)",
613             {   0x131f, 0x2050, 0,      0       },
614             {   0xffff, 0xffff, 0,      0       },
615             {
616                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
617                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
618                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
619                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
620             },
621         },
622
623         /* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
624         {   "SIIG Cyber 4S PCI 16C650 (20x family)",
625             {   0x131f, 0x2051, 0,      0       },
626             {   0xffff, 0xffff, 0,      0       },
627             {
628                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
629                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
630                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
631                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
632             },
633         },
634
635         /* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
636         {   "SIIG Cyber 4S PCI 16C850 (20x family)",
637             {   0x131f, 0x2052, 0,      0       },
638             {   0xffff, 0xffff, 0,      0       },
639             {
640                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
641                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
642                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
643                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
644             },
645         },
646
647         /* VScom PCI-200L: 2S */
648         {   "VScom PCI-200L",
649             {   0x14d2, 0x8020, 0,      0       },
650             {   0xffff, 0xffff, 0,      0       },
651             {
652                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
653                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
654             },
655         },
656
657         /* VScom PCI-400: 4S */
658         {   "VScom PCI-400",
659             {   0x10b5, 0x1077, 0x10b5, 0x1077  },
660             {   0xffff, 0xffff, 0xffff, 0xffff  },
661             {
662                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
663                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
664                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
665                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
666             },
667         },
668
669         /* VScom PCI-800: 8S */
670         {   "VScom PCI-800",
671             {   0x10b5, 0x1076, 0x10b5, 0x1076  },
672             {   0xffff, 0xffff, 0xffff, 0xffff  },
673             {
674                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
675                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
676                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
677                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
678                 { PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
679                 { PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
680                 { PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
681                 { PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
682             },
683         },
684         /*
685          * VScom PCI-800H. Uses 8 16950 UART, behind a PCI chips that offers
686          * 4 com port on PCI device 0 and 4 on PCI device 1. PCI device 0 has
687          * device ID 3 and PCI device 1 device ID 4.
688          */
689         {   "Titan PCI-800H",
690             {   0x14d2, 0xa003, 0,      0       },
691             {   0xffff, 0xffff, 0,      0       },
692             {
693                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
694                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
695                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
696                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
697             },
698         },
699         {   "Titan PCI-800H",
700             {   0x14d2, 0xa004, 0,      0       },
701             {   0xffff, 0xffff, 0,      0       },
702             {
703                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
704                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
705                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
706                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
707             },
708         },
709         {   "Titan PCI-200H",
710             {   0x14d2, 0xa005, 0,      0       },
711             {   0xffff, 0xffff, 0,      0       },
712             {
713                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
714                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
715             },
716         },
717
718         {   "Titan VScom PCI-200HV2",   /* 2S */
719             {   0x14d2, 0xe020, 0,      0       },
720             {   0xffff, 0xffff, 0,      0       },
721             {
722                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
723                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
724             },
725         },
726         /*
727          * VScom (Titan?) PCI-800L.  More modern variant of the
728          * PCI-800.  Uses 6 discrete 16550 UARTs, plus another
729          * two of them obviously implemented as macro cells in
730          * the ASIC.  This causes the weird port access pattern
731          * below, where two of the IO port ranges each access
732          * one of the ASIC UARTs, and a block of IO addresses
733          * access the external UARTs.
734          */
735         {   "Titan VScom PCI-800L",
736             {   0x14d2, 0x8080, 0,      0       },
737             {   0xffff, 0xffff, 0,      0       },
738             {
739                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
740                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
741                 { PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
742                 { PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ * 8 },
743                 { PUC_PORT_TYPE_COM, 0x20, 0x10, COM_FREQ * 8 },
744                 { PUC_PORT_TYPE_COM, 0x20, 0x18, COM_FREQ * 8 },
745                 { PUC_PORT_TYPE_COM, 0x20, 0x20, COM_FREQ * 8 },
746                 { PUC_PORT_TYPE_COM, 0x20, 0x28, COM_FREQ * 8 },
747             },
748         },
749
750         /*
751          * NEC PK-UG-X001 K56flex PCI Modem card.
752          * Uses NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP.
753          */
754         {   "NEC PK-UG-X001 K56flex PCI Modem",
755             {   0x1033, 0x0074, 0x1033, 0x8014  },
756             {   0xffff, 0xffff, 0xffff, 0xffff  },
757             {
758                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
759             },
760         },
761
762         /* NEC PK-UG-X008 */
763         {   "NEC PK-UG-X008",
764             {   0x1033, 0x007d, 0x1033, 0x8012  },
765             {   0xffff, 0xffff, 0xffff, 0xffff  },
766             {
767                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
768             },
769         },
770
771         /* Lava Computers 2SP-PCI */
772         {   "Lava Computers 2SP-PCI parallel port",
773             {   0x1407, 0x8000, 0,      0       },
774             {   0xffff, 0xffff, 0,      0       },
775             {
776                 { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
777             },
778         },
779
780         /* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
781         {   "Lava Computers dual serial port",
782             {   0x1407, 0x0100, 0,      0       },
783             {   0xffff, 0xfffc, 0,      0       },
784             {
785                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
786                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
787             },
788         },
789
790         /* Lava Computers newer Quattro-PCI serial ports */
791         {   "Lava Computers Quattro-PCI serial port",
792             {   0x1407, 0x0120, 0,      0       },
793             {   0xffff, 0xfffc, 0,      0       },
794             {
795                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
796                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
797             },
798         },
799
800         /* Lava Computers DSerial PCI serial ports */
801         {   "Lava Computers serial port",
802             {   0x1407, 0x0110, 0,      0       },
803             {   0xffff, 0xfffc, 0,      0       },
804             {
805                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
806             },
807         },
808
809         /* Lava Computers Octopus-550 serial ports */
810         {   "Lava Computers Octopus-550 8-port serial",
811             {   0x1407, 0x0180, 0,      0       },
812             {   0xffff, 0xfffc, 0,      0       },
813             {
814                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
815                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
816                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
817                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
818             },
819         },
820
821         /* US Robotics (3Com) PCI Modems */
822         {   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
823             {   0x12b9, 0x1008, 0,      0       },
824             {   0xffff, 0xffff, 0,      0       },
825             {
826                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
827             },
828         },
829
830         /* Actiontec 56K PCI Master */
831         {   "Actiontec 56K PCI Master",
832             {   0x11c1, 0x0480, 0,      0       },
833             {   0xffff, 0xffff, 0,      0       },
834             {
835                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
836             },
837         },
838
839         /*
840          * Boards with an Oxford Semiconductor chip.
841          *
842          * Oxford Semiconductor provides documentation for their chip at:
843          * <URL:http://www.oxsemi.com/products/uarts/index.html>
844          *
845          * As sold by Kouwell <URL:http://www.kouwell.com/>.
846          * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
847          */
848
849         /* Oxford Semiconductor OX12PCI840 PCI Parallel port */
850         {   "Oxford Semiconductor OX12PCI840 Parallel port",
851             {   0x1415, 0x8403, 0,      0       },
852             {   0xffff, 0xffff, 0,      0       },
853             {
854                 { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
855             },
856         },
857
858         /* Oxford Semiconductor OX16PCI954 PCI UARTs */
859         {   "Oxford Semiconductor OX16PCI954 UARTs",
860             {   0x1415, 0x9501, 0,      0       },
861             {   0xffff, 0xffff, 0,      0       },
862             {
863                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
864                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
865                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
866                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
867             },
868         },
869
870         /* Oxford Semiconductor OX16PCI954 PCI UARTs */
871         {   "Oxford Semiconductor OX16PCI954 UARTs",
872             {   0x1415, 0x950a, 0,      0       },
873             {   0xffff, 0xffff, 0,      0       },
874             {
875                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
876                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
877                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
878                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
879             },
880         },
881
882         /* Oxford Semiconductor OXCB950 PCI/CardBus UARTs */
883         {   "Oxford Semiconductor OXCB950 UART",
884             {   0x1415, 0x950b, 0,      0       },
885             {   0xffff, 0xffff, 0,      0       },
886             {
887                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
888             },
889         },
890
891         /*
892          * Oxford Semiconductor OX9160/OX16PCI954 PCI UARTS
893          * Second chip on Exsys EX-41098 8x cards
894          */
895         {   "Oxford Semiconductor OX9160/OX16PCI954 UARTs (function 1)",
896             {   0x1415, 0x9511, 0,      0       },
897             {   0xffff, 0xffff, 0,      0       },
898             {
899                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
900                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
901                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
902                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
903             },
904         },
905
906         /* Oxford Semiconductor OX16PCI954 PCI Parallel port */
907         {   "Oxford Semiconductor OX16PCI954 Parallel port",
908             {   0x1415, 0x9513, 0,      0       },
909             {   0xffff, 0xffff, 0,      0       },
910             {
911                 { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
912             },
913         },
914
915         /* NetMos 2S1P PCI 16C650 : 2S, 1P */
916         {   "NetMos NM9835 Dual UART and 1284 Printer port",
917             {   0x9710, 0x9835, 0,      0       },
918             {   0xffff, 0xffff, 0,      0       },
919             {
920                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
921                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
922                 { PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
923             },
924         },
925
926         /* NetMos 4S0P PCI: 4S, 0P */
927         {   "NetMos NM9845 Quad UART",
928             {   0x9710, 0x9845, 0,      0       },
929             {   0xffff, 0xffff, 0,      0       },
930             {
931                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
932                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
933                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
934                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
935             },
936         },
937
938         /* NetMos 0S1P PCI: 0S, 1P */
939         {   "NetMos NM9805 1284 Printer port",
940             {   0x9710, 0x9805, 0,      0       },
941             {   0xffff, 0xffff, 0,      0       },
942             {
943                 { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
944             },
945         },                            
946
947         /*
948          * This is the Middle Digital, Inc. PCI-Weasel, which
949          * uses a PCI interface implemented in FPGA.
950          */
951         {   "Middle Digital, Inc. Weasel serial port",
952             {   0xdeaf, 0x9051, 0,      0       },
953             {   0xffff, 0xffff, 0,      0       },
954             {
955                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
956             },
957         },
958
959         /* SD-LAB PCI I/O Card 4S2P */
960         {   "Syba Tech Ltd. PCI-4S2P-550-ECP",
961             {   0x1592, 0x0781, 0,      0       },
962             {   0xffff, 0xffff, 0,      0       },
963             {
964                 { PUC_PORT_TYPE_COM, 0x10, 0x2e8, COM_FREQ },
965                 { PUC_PORT_TYPE_COM, 0x10, 0x2f8, COM_FREQ },
966                 { PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
967                 { PUC_PORT_TYPE_COM, 0x10, 0x3e8, COM_FREQ },
968                 { PUC_PORT_TYPE_COM, 0x10, 0x3f8, COM_FREQ },
969                 { PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
970             },
971             .init = puc_config_win877,
972         },
973
974         /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
975         {   "Moxa Technologies, Smartio C104H/PCI",
976             {   0x1393, 0x1040, 0,      0       },
977             {   0xffff, 0xffff, 0,      0       },
978             {
979                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
980                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
981                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
982                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
983             },
984         },
985
986         /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
987         {   "Moxa Technologies, Smartio CP-104UL/PCI",
988             {   0x1393, 0x1041, 0,      0       },
989             {   0xffff, 0xffff, 0,      0       },
990             {
991                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
992                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
993                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
994                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
995             },
996         },
997
998         /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
999         {   "Moxa Technologies, Industio CP-114",
1000             {   0x1393, 0x1141, 0,      0       },
1001             {   0xffff, 0xffff, 0,      0       },
1002             {
1003                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1004                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1005                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1006                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1007             },
1008         },
1009
1010         /* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1011         {   "Moxa Technologies, C168H/PCI",
1012             {   0x1393, 0x1680, 0,      0       },
1013             {   0xffff, 0xffff, 0,      0       },
1014             {
1015                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1016                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1017                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1018                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1019                 { PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
1020                 { PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
1021                 { PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
1022                 { PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
1023             },
1024         },
1025
1026         /* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1027         {   "Moxa Technologies, C168U/PCI",
1028             {   0x1393, 0x1681, 0,      0       },
1029             {   0xffff, 0xffff, 0,      0       },
1030             {
1031                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1032                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1033                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1034                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1035                 { PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
1036                 { PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
1037                 { PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
1038                 { PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
1039             },
1040         },
1041
1042         {   "Avlab Technology, PCI IO 2S",
1043             {   0x14db, 0x2130, 0,      0       },
1044             {   0xffff, 0xfffc, 0,      0       },
1045             {
1046                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1047                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1048             },
1049         },
1050
1051         /* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
1052         {   "Avlab Low Profile PCI 4 Serial",
1053             {   0x14db, 0x2150, 0,      0       },
1054             {   0xffff, 0xffff, 0,      0       },
1055             {
1056                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1057                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1058                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
1059                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1060             },
1061         },
1062
1063         /* Decision Computer Inc, serial ports */
1064         {   "Decision Computer Inc, PCCOM 4-port serial",
1065             {   0x6666, 0x0001, 0,      0       },
1066             {   0xffff, 0xffff, 0,      0       },
1067             {
1068                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1069                 { PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1070                 { PUC_PORT_TYPE_COM, 0x1c, 0x10, COM_FREQ },
1071                 { PUC_PORT_TYPE_COM, 0x1c, 0x18, COM_FREQ },
1072             },
1073         },
1074
1075         {   "PCCOM dual port RS232/422/485",
1076             {   0x6666, 0x0004, 0,      0       },
1077             {   0xffff, 0xffff, 0,      0       },
1078             {
1079                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1080                 { PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1081             },
1082         },
1083
1084         {   "IC Book Labs Gunboat x2 Low Profile",
1085             {   0xb00c, 0x0a1c, 0,      0       },
1086             {   0xffff, 0xffff, 0,      0       },
1087             {
1088                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1089                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1090             },
1091         },
1092
1093         {   "IC Book Labs Gunboat x4 Lite",
1094             {   0xb00c, 0x021c, 0,      0       },
1095             {   0xffff, 0xffff, 0,      0       },
1096             {
1097                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1098                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1099                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1100                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1101             },
1102             PUC_ILR_TYPE_DIGI, { 0x07 },
1103         },
1104
1105         {   "IC Book Labs Gunboat x4 Pro",
1106             {   0xb00c, 0x031c, 0,      0       },
1107             {   0xffff, 0xffff, 0,      0       },
1108             {
1109                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1110                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1111                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1112                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1113             },
1114             PUC_ILR_TYPE_DIGI, { 0x07 },
1115         },
1116
1117         {   "IC Book Labs Gunboat x4 Low Profile",
1118             {   0xb00c, 0x0b1c, 0,      0       },
1119             {   0xffff, 0xffff, 0,      0       },
1120             {
1121                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1122                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1123                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1124                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1125             },
1126             PUC_ILR_TYPE_DIGI, { 0x07 },
1127         },
1128
1129         {   "IC Book Labs Ironclad x8 Lite",
1130             {   0xb00c, 0x041c, 0,      0       },
1131             {   0xffff, 0xffff, 0,      0       },
1132             {
1133                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1134                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1135                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1136                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1137                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1138                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1139                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1140                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
1141             },
1142             PUC_ILR_TYPE_DIGI, { 0x07 },
1143         },
1144
1145         {   "IC Book Labs Ironclad x8 Pro",
1146             {   0xb00c, 0x051c, 0,      0       },
1147             {   0xffff, 0xffff, 0,      0       },
1148             {
1149                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1150                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1151                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1152                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1153                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1154                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1155                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1156                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
1157             },
1158             PUC_ILR_TYPE_DIGI, { 0x07 },
1159         },
1160
1161         {   "IC Book Labs Dreadnought x16 Lite",
1162             {   0xb00c, 0x091c, 0,      0       },
1163             {   0xffff, 0xffff, 0,      0       },
1164             {
1165                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1166                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1167                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1168                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1169                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1170                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1171                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1172                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
1173                 { PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ },
1174                 { PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ },
1175                 { PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ },
1176                 { PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ },
1177                 { PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ },
1178                 { PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ },
1179                 { PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ },
1180                 { PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ },
1181             },
1182             PUC_ILR_TYPE_DIGI, { 0x07, 0x47 },
1183         },
1184
1185         {   "IC Book Labs Dreadnought x16 Pro",
1186             {   0xb00c, 0x081c, 0,      0       },
1187             {   0xffff, 0xffff, 0,      0       },
1188             {
1189                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8, 0x200000 },
1190                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8, 0x200000 },
1191                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8, 0x200000 },
1192                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8, 0x200000 },
1193                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ * 8, 0x200000 },
1194                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ * 8, 0x200000 },
1195                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ * 8, 0x200000 },
1196                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ * 8, 0x200000 },
1197                 { PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ * 8, 0x200000 },
1198                 { PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ * 8, 0x200000 },
1199                 { PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ * 8, 0x200000 },
1200                 { PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ * 8, 0x200000 },
1201                 { PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ * 8, 0x200000 },
1202                 { PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ * 8, 0x200000 },
1203                 { PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ * 8, 0x200000 },
1204                 { PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ * 8, 0x200000 },
1205             },
1206             PUC_ILR_TYPE_DIGI, { 0x07, 0x47 },
1207         },
1208
1209         {   "Cronyx Omega2-PCI",
1210             {   0x13a8, 0x0158, 0,      0       },
1211             {   0xffff, 0xffff, 0,      0       },
1212             {
1213                 { PUC_PORT_TYPE_UART, 0x010, 0x000, COM_FREQ * 8, PUC_FLAGS_MEMORY },
1214                 { PUC_PORT_TYPE_UART, 0x010, 0x200, COM_FREQ * 8, PUC_FLAGS_MEMORY },
1215                 { PUC_PORT_TYPE_UART, 0x010, 0x400, COM_FREQ * 8, PUC_FLAGS_MEMORY },
1216                 { PUC_PORT_TYPE_UART, 0x010, 0x600, COM_FREQ * 8, PUC_FLAGS_MEMORY },
1217                 { PUC_PORT_TYPE_UART, 0x010, 0x800, COM_FREQ * 8, PUC_FLAGS_MEMORY },
1218                 { PUC_PORT_TYPE_UART, 0x010, 0xA00, COM_FREQ * 8, PUC_FLAGS_MEMORY },
1219                 { PUC_PORT_TYPE_UART, 0x010, 0xC00, COM_FREQ * 8, PUC_FLAGS_MEMORY },
1220                 { PUC_PORT_TYPE_UART, 0x010, 0xE00, COM_FREQ * 8, PUC_FLAGS_MEMORY },
1221             },
1222         },
1223
1224         /*
1225          * Boca Research Turbo Serial 654 (4 serial port) card.
1226          * Appears to be the same as Chase Research PLC PCI-FAST4
1227          * and Perle PCI-FAST4 Multi-Port serial cards.
1228          */
1229         {   "Boca Research Turbo Serial 654",
1230         {   0x10b5, 0x9050, 0x12e0, 0x0031  },
1231         {   0xffff, 0xffff, 0xffff, 0xffff  },
1232         {
1233                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 4 },
1234                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 4 },
1235                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 4 },
1236                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 4 },
1237                 },
1238         },
1239
1240         /*
1241          * Boca Research Turbo Serial 658 (8 serial port) card.
1242          * Appears to be the same as Chase Research PLC PCI-FAST8
1243          * and Perle PCI-FAST8 Multi-Port serial cards.
1244          */
1245         {   "Boca Research Turbo Serial 658",
1246         {   0x10b5, 0x9050, 0x12e0, 0x0021  },
1247         {   0xffff, 0xffff, 0xffff, 0xffff  },
1248         {
1249                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 4 },
1250                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 4 },
1251                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 4 },
1252                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 4 },
1253                 { PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 4 },
1254                 { PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 4 },
1255                 { PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 4 },
1256                 { PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 4 },
1257                 },
1258         },
1259
1260         {   "Dell RAC III Virtual UART",
1261             {   0x1028, 0x0008, 0,      0       },
1262             {   0xffff, 0xffff, 0,      0       },
1263             {
1264                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 128 },
1265             },
1266         },
1267
1268         {   "Dell RAC IV/ERA Virtual UART",
1269             {   0x1028, 0x0012, 0,      0       },
1270             {   0xffff, 0xffff, 0,      0       },
1271             {
1272                 { PUC_PORT_TYPE_COM, 0x14, 0x00, DEFAULT_RCLK * 128 },
1273             },
1274         },
1275         {       /* "VScom 200Li" 00=14D2 02=8028 uart@20 uart@+8 */
1276             "VScom 200Li",
1277             {   0x14d2, 0x8028, 0,      0       },
1278             {   0xffff, 0xffff, 0,      0       },
1279             {
1280                 { PUC_PORT_TYPE_COM, 0x20, 0x00, DEFAULT_RCLK },
1281                 { PUC_PORT_TYPE_COM, 0x20, 0x08, DEFAULT_RCLK },
1282             },
1283         },
1284
1285         { 0 }
1286 };