]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/puc/pucdata.c
Moved the function pointer in struct puc_device_description to the end
[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 OX16PCI954 PCI UARTs */
850         {   "Oxford Semiconductor OX16PCI954 UARTs",
851             {   0x1415, 0x9501, 0,      0       },
852             {   0xffff, 0xffff, 0,      0       },
853             {
854                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
855                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
856                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
857                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
858             },
859         },
860
861         /* Oxford Semiconductor OX16PCI954 PCI UARTs */
862         {   "Oxford Semiconductor OX16PCI954 UARTs",
863             {   0x1415, 0x950a, 0,      0       },
864             {   0xffff, 0xffff, 0,      0       },
865             {
866                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
867                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
868                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
869                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
870             },
871         },
872
873         /* Oxford Semiconductor OX16PCI954 PCI Parallel port */
874         {   "Oxford Semiconductor OX16PCI954 Parallel port",
875             {   0x1415, 0x9513, 0,      0       },
876             {   0xffff, 0xffff, 0,      0       },
877             {
878                 { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
879             },
880         },
881
882         /* Oxford Semiconductor OX12PCI840 PCI Parallel port */
883         {   "Oxford Semiconductor OX12PCI840 Parallel port",
884             {   0x1415, 0x8403, 0,      0       },
885             {   0xffff, 0xffff, 0,      0       },
886             {
887                 { PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
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         /* NetMos 2S1P PCI 16C650 : 2S, 1P */
907         {   "NetMos NM9835 Dual UART and 1284 Printer port",
908             {   0x9710, 0x9835, 0,      0       },
909             {   0xffff, 0xffff, 0,      0       },
910             {
911                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
912                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
913                 { PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
914             },
915         },
916
917         /* NetMos 4S0P PCI: 4S, 0P */
918         {   "NetMos NM9845 Quad UART",
919             {   0x9710, 0x9845, 0,      0       },
920             {   0xffff, 0xffff, 0,      0       },
921             {
922                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
923                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
924                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
925                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
926             },
927         },
928
929         /*
930          * This is the Middle Digital, Inc. PCI-Weasel, which
931          * uses a PCI interface implemented in FPGA.
932          */
933         {   "Middle Digital, Inc. Weasel serial port",
934             {   0xdeaf, 0x9051, 0,      0       },
935             {   0xffff, 0xffff, 0,      0       },
936             {
937                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
938             },
939         },
940
941         /* SD-LAB PCI I/O Card 4S2P */
942         {   "Syba Tech Ltd. PCI-4S2P-550-ECP",
943             {   0x1592, 0x0781, 0,      0       },
944             {   0xffff, 0xffff, 0,      0       },
945             {
946                 { PUC_PORT_TYPE_COM, 0x10, 0x2e8, COM_FREQ },
947                 { PUC_PORT_TYPE_COM, 0x10, 0x2f8, COM_FREQ },
948                 { PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
949                 { PUC_PORT_TYPE_COM, 0x10, 0x3e8, COM_FREQ },
950                 { PUC_PORT_TYPE_COM, 0x10, 0x3f8, COM_FREQ },
951                 { PUC_PORT_TYPE_LPT, 0x10, 0x000, 0x00 },
952             },
953             .init = puc_config_win877,
954         },
955
956         /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
957         {   "Moxa Technologies, Smartio C104H/PCI",
958             {   0x1393, 0x1040, 0,      0       },
959             {   0xffff, 0xffff, 0,      0       },
960             {
961                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
962                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
963                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
964                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
965             },
966         },
967
968         /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
969         {   "Moxa Technologies, Smartio CP-104UL/PCI",
970             {   0x1393, 0x1041, 0,      0       },
971             {   0xffff, 0xffff, 0,      0       },
972             {
973                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
974                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
975                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
976                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
977             },
978         },
979
980         /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
981         {   "Moxa Technologies, Industio CP-114",
982             {   0x1393, 0x1141, 0,      0       },
983             {   0xffff, 0xffff, 0,      0       },
984             {
985                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
986                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
987                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
988                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
989             },
990         },
991
992         /* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
993         {   "Moxa Technologies, C168H/PCI",
994             {   0x1393, 0x1680, 0,      0       },
995             {   0xffff, 0xffff, 0,      0       },
996             {
997                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
998                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
999                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1000                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1001                 { PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
1002                 { PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
1003                 { PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
1004                 { PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
1005             },
1006         },
1007
1008         /* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1009         {   "Moxa Technologies, C168U/PCI",
1010             {   0x1393, 0x1681, 0,      0       },
1011             {   0xffff, 0xffff, 0,      0       },
1012             {
1013                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
1014                 { PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
1015                 { PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
1016                 { PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
1017                 { PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
1018                 { PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
1019                 { PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
1020                 { PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
1021             },
1022         },
1023
1024         {   "Avlab Technology, PCI IO 2S",
1025             {   0x14db, 0x2130, 0,      0       },
1026             {   0xffff, 0xfffc, 0,      0       },
1027             {
1028                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1029                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1030             },
1031         },
1032
1033         /* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
1034         {   "Avlab Low Profile PCI 4 Serial",
1035             {   0x14db, 0x2150, 0,      0       },
1036             {   0xffff, 0xffff, 0,      0       },
1037             {
1038                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1039                 { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
1040                 { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
1041                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1042             },
1043         },
1044
1045         /* Decision Computer Inc, serial ports */
1046         {   "Decision Computer Inc, PCCOM 4-port serial",
1047             {   0x6666, 0x0001, 0,      0       },
1048             {   0xffff, 0xffff, 0,      0       },
1049             {
1050                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1051                 { PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1052                 { PUC_PORT_TYPE_COM, 0x1c, 0x10, COM_FREQ },
1053                 { PUC_PORT_TYPE_COM, 0x1c, 0x18, COM_FREQ },
1054             },
1055         },
1056
1057         {   "PCCOM dual port RS232/422/485",
1058             {   0x6666, 0x0004, 0,      0       },
1059             {   0xffff, 0xffff, 0,      0       },
1060             {
1061                 { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
1062                 { PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
1063             },
1064         },
1065
1066         {   "IC Book Labs Ironclad x8 Lite",
1067             {   0xb00c, 0x041c, 0,      0       },
1068             {   0xffff, 0xffff, 0,      0       },
1069             {
1070                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1071                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1072                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1073                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1074                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1075                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1076                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1077                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
1078             },
1079             PUC_ILR_TYPE_DIGI, { 0x07 },
1080         },
1081
1082         {   "IC Book Labs Ironclad x8 Pro",
1083             {   0xb00c, 0x051c, 0,      0       },
1084             {   0xffff, 0xffff, 0,      0       },
1085             {
1086                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1087                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1088                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1089                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1090                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1091                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1092                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1093                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
1094             },
1095             PUC_ILR_TYPE_DIGI, { 0x07 },
1096         },
1097
1098         {   "IC Book Labs Dreadnought x16 Lite",
1099             {   0xb00c, 0x091c, 0,      0       },
1100             {   0xffff, 0xffff, 0,      0       },
1101             {
1102                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
1103                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
1104                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
1105                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
1106                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
1107                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
1108                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
1109                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
1110                 { PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ },
1111                 { PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ },
1112                 { PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ },
1113                 { PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ },
1114                 { PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ },
1115                 { PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ },
1116                 { PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ },
1117                 { PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ },
1118             },
1119             PUC_ILR_TYPE_DIGI, { 0x07, 0x47 },
1120         },
1121
1122         {   "IC Book Labs Dreadnought x16 Pro",
1123             {   0xb00c, 0x081c, 0,      0       },
1124             {   0xffff, 0xffff, 0,      0       },
1125             {
1126                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8, 0x200000 },
1127                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8, 0x200000 },
1128                 { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8, 0x200000 },
1129                 { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8, 0x200000 },
1130                 { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ * 8, 0x200000 },
1131                 { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ * 8, 0x200000 },
1132                 { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ * 8, 0x200000 },
1133                 { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ * 8, 0x200000 },
1134                 { PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ * 8, 0x200000 },
1135                 { PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ * 8, 0x200000 },
1136                 { PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ * 8, 0x200000 },
1137                 { PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ * 8, 0x200000 },
1138                 { PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ * 8, 0x200000 },
1139                 { PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ * 8, 0x200000 },
1140                 { PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ * 8, 0x200000 },
1141                 { PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ * 8, 0x200000 },
1142             },
1143             PUC_ILR_TYPE_DIGI, { 0x07, 0x47 },
1144         },
1145
1146         { 0 }
1147 };