Home | History | Annotate | Line # | Download | only in pci
pucdata.c revision 1.45
      1 /*	$NetBSD: pucdata.c,v 1.45 2006/06/11 11:22:35 bouyer 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 /*
     34  * PCI "universal" communications card driver configuration data (used to
     35  * match/attach the cards).
     36  */
     37 
     38 #include <sys/cdefs.h>
     39 __KERNEL_RCSID(0, "$NetBSD: pucdata.c,v 1.45 2006/06/11 11:22:35 bouyer Exp $");
     40 
     41 #include <sys/param.h>
     42 #include <sys/systm.h>
     43 #include <sys/device.h>
     44 
     45 #include <dev/pci/pcireg.h>
     46 #include <dev/pci/pcivar.h>
     47 #include <dev/pci/pucvar.h>
     48 #include <dev/ic/comreg.h>
     49 
     50 const struct puc_device_description puc_devices[] = {
     51 	/*
     52 	 * SUNIX 40XX series of serial/parallel combo cards.
     53 	 * Tested with 4055A and 4065A.
     54 	 */
     55 	{   "SUNIX 400X 1P",
     56 	    {	0x1409,	0x7168,	0x1409,	0x4000 },
     57 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
     58 	    {
     59 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
     60 	    },
     61 	},
     62 
     63 	{   "SUNIX 401X 2P",
     64 	    {	0x1409,	0x7168,	0x1409,	0x4010 },
     65 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
     66 	    {
     67 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
     68 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
     69 	    },
     70 	},
     71 
     72 	{   "SUNIX 402X 1S",
     73 	    {	0x1409,	0x7168,	0x1409,	0x4020 },
     74 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
     75 	    {
     76 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
     77 	    },
     78 	},
     79 
     80 	{   "SUNIX 403X 2S",
     81 	    {	0x1409,	0x7168,	0x1409,	0x4030 },
     82 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
     83 	    {
     84 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
     85 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
     86 	    },
     87 	},
     88 
     89 	{   "SUNIX 405X 4S",
     90 	    {	0x1409,	0x7168,	0x1409,	0x4050 },
     91 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
     92 	    {
     93 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
     94 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
     95 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ},
     96 		{ PUC_PORT_TYPE_COM, 0x14, 0x08, COM_FREQ},
     97 	    },
     98 	},
     99 
    100 	{   "SUNIX 406X 8S",
    101 	    {	0x1409,	0x7168,	0x1409,	0x4060 },
    102 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
    103 	    {
    104 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
    105 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
    106 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ},
    107 		{ PUC_PORT_TYPE_COM, 0x14, 0x08, COM_FREQ},
    108 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ},
    109 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ},
    110 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ},
    111 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ},
    112 	    },
    113 	},
    114 
    115 	{   "SUNIX 407X 2S/1P",
    116 	    {	0x1409,	0x7168,	0x1409,	0x4070 },
    117 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
    118 	    {
    119 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
    120 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
    121 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    122 	    },
    123 	},
    124 
    125 	{   "SUNIX 408X 2S/2P",
    126 	    {	0x1409,	0x7168,	0x1409,	0x4080 },
    127 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
    128 	    {
    129 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
    130 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
    131 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    132 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    133 	    },
    134 	},
    135 
    136 	{   "SUNIX 409X 4S/2P",
    137 	    {	0x1409,	0x7168,	0x1409,	0x4090 },
    138 	    {	0xffff,	0xffff,	0xffff,	0xeff0 },
    139 	    {
    140 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
    141 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
    142 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ},
    143 		{ PUC_PORT_TYPE_COM, 0x14, 0x08, COM_FREQ},
    144 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    145 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    146 	    },
    147 	},
    148 
    149 	/*
    150 	 * XXX no entry because I have no data:
    151 	 * XXX Dolphin Peripherals 4006 (single parallel)
    152 	 */
    153 
    154 	/*
    155 	 * Dolphin Peripherals 4014 (dual parallel port) card.  PLX 9050, with
    156 	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
    157 	 * into the subsystem fields, and claims that it's a
    158 	 * network/misc (0x02/0x80) device.
    159 	 */
    160 	{   "Dolphin Peripherals 4014",
    161 	    {	0x10b5,	0x9050,	0xd84d,	0x6810	},
    162 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    163 	    {
    164 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    165 		{ PUC_PORT_TYPE_LPT, 0x24, 0x00, 0x00 },
    166 	    },
    167 	},
    168 
    169 	/*
    170 	 * XXX Dolphin Peripherals 4025 (single serial)
    171 	 * (clashes with Dolphin Peripherals  4036 (2s variant)
    172 	 */
    173 
    174 	/*
    175 	 * Dolphin Peripherals 4035 (dual serial port) card.  PLX 9050, with
    176 	 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
    177 	 * into the subsystem fields, and claims that it's a
    178 	 * network/misc (0x02/0x80) device.
    179 	 */
    180 	{   "Dolphin Peripherals 4035",
    181 	    {	0x10b5,	0x9050,	0xd84d,	0x6808	},
    182 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    183 	    {
    184 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    185 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    186 	    },
    187 	},
    188 
    189 	/*
    190 	 * Dolphin Peripherals 4036 (dual serial port) card.
    191 	 * (Dolpin 4025 has the same ID but only one port)
    192 	 */
    193 	{   "Dolphin Peripherals 4036",
    194 	    {	0x1409,	0x7168,	0x0,	0x0	},
    195 	    {	0xffff,	0xffff,	0x0,	0x0	},
    196 	    {
    197 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8},
    198 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8},
    199 	    },
    200 	},
    201 
    202 	/*
    203 	 * XXX no entry because I have no data:
    204 	 * XXX Dolphin Peripherals 4078 (dual serial and single parallel)
    205 	 */
    206 
    207 
    208 	/*
    209 	 * SIIG Boards.
    210 	 *
    211 	 * SIIG provides documentation for their boards at:
    212 	 * <URL:http://www.siig.com/driver.htm>
    213 	 *
    214 	 * Please excuse the weird ordering, it's the order they
    215 	 * use in their documentation.
    216 	 */
    217 
    218 	/*
    219 	 * SIIG "10x" family boards.
    220 	 */
    221 
    222 	/* SIIG Cyber Serial PCI 16C550 (10x family): 1S */
    223 	{   "SIIG Cyber Serial PCI 16C550 (10x family)",
    224 	    {	0x131f,	0x1000,	0,	0	},
    225 	    {	0xffff,	0xffff,	0,	0	},
    226 	    {
    227 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    228 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR1 },
    229 	    },
    230 	},
    231 
    232 	/* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
    233 	{   "SIIG Cyber Serial PCI 16C650 (10x family)",
    234 	    {	0x131f,	0x1001,	0,	0	},
    235 	    {	0xffff,	0xffff,	0,	0	},
    236 	    {
    237 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    238 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR1 },
    239 	    },
    240 	},
    241 
    242 	/* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
    243 	{   "SIIG Cyber Serial PCI 16C850 (10x family)",
    244 	    {	0x131f,	0x1002,	0,	0	},
    245 	    {	0xffff,	0xffff,	0,	0	},
    246 	    {
    247 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    248 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR1 },
    249 	    },
    250 	},
    251 
    252 	/* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
    253 	{   "SIIG Cyber I/O PCI 16C550 (10x family)",
    254 	    {	0x131f,	0x1010,	0,	0	},
    255 	    {	0xffff,	0xffff,	0,	0	},
    256 	    {
    257 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    258 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
    259 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    260 	    },
    261 	},
    262 
    263 	/* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
    264 	{   "SIIG Cyber I/O PCI 16C650 (10x family)",
    265 	    {	0x131f,	0x1011,	0,	0	},
    266 	    {	0xffff,	0xffff,	0,	0	},
    267 	    {
    268 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    269 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
    270 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    271 	    },
    272 	},
    273 
    274 	/* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
    275 	{   "SIIG Cyber I/O PCI 16C850 (10x family)",
    276 	    {	0x131f,	0x1012,	0,	0	},
    277 	    {	0xffff,	0xffff,	0,	0	},
    278 	    {
    279 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    280 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
    281 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    282 	    },
    283 	},
    284 
    285 	/* SIIG Cyber Parallel PCI (10x family): 1P */
    286 	{   "SIIG Cyber Parallel PCI (10x family)",
    287 	    {	0x131f,	0x1020,	0,	0	},
    288 	    {	0xffff,	0xffff,	0,	0	},
    289 	    {
    290 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    291 	    },
    292 	},
    293 
    294 	/* SIIG Cyber Parallel Dual PCI (10x family): 2P */
    295 	{   "SIIG Cyber Parallel Dual PCI (10x family)",
    296 	    {	0x131f,	0x1021,	0,	0	},
    297 	    {	0xffff,	0xffff,	0,	0	},
    298 	    {
    299 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    300 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    301 	    },
    302 	},
    303 
    304 	/* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
    305 	{   "SIIG Cyber Serial Dual PCI 16C550 (10x family)",
    306 	    {	0x131f,	0x1030,	0,	0	},
    307 	    {	0xffff,	0xffff,	0,	0	},
    308 	    {
    309 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    310 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
    311 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
    312 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
    313 	    },
    314 	},
    315 
    316 	/* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
    317 	{   "SIIG Cyber Serial Dual PCI 16C650 (10x family)",
    318 	    {	0x131f,	0x1031,	0,	0	},
    319 	    {	0xffff,	0xffff,	0,	0	},
    320 	    {
    321 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    322 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
    323 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
    324 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
    325 	    },
    326 	},
    327 
    328 	/* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
    329 	{   "SIIG Cyber Serial Dual PCI 16C850 (10x family)",
    330 	    {	0x131f,	0x1032,	0,	0	},
    331 	    {	0xffff,	0xffff,	0,	0	},
    332 	    {
    333 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    334 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
    335 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
    336 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
    337 	    },
    338 	},
    339 
    340 	/* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
    341 	{   "SIIG Cyber 2S1P PCI 16C550 (10x family)",
    342 	    {	0x131f,	0x1034,	0,	0	},	/* XXX really? */
    343 	    {	0xffff,	0xffff,	0,	0	},
    344 	    {
    345 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    346 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
    347 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
    348 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
    349 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    350 	    },
    351 	},
    352 
    353 	/* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
    354 	{   "SIIG Cyber 2S1P PCI 16C650 (10x family)",
    355 	    {	0x131f,	0x1035,	0,	0	},	/* XXX really? */
    356 	    {	0xffff,	0xffff,	0,	0	},
    357 	    {
    358 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    359 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
    360 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
    361 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
    362 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    363 	    },
    364 	},
    365 
    366 	/* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
    367 	{   "SIIG Cyber 2S1P PCI 16C850 (10x family)",
    368 	    {	0x131f,	0x1036,	0,	0	},	/* XXX really? */
    369 	    {	0xffff,	0xffff,	0,	0	},
    370 	    {
    371 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    372 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR2 },
    373 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00,
    374 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR3 },
    375 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    376 	    },
    377 	},
    378 
    379 	/* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
    380 	{   "SIIG Cyber 4S PCI 16C550 (10x family)",
    381 	    {	0x131f,	0x1050,	0,	0	},
    382 	    {	0xffff,	0xffff,	0,	0	},
    383 	    {
    384 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    385 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
    386 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
    387 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
    388 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ * 8 },
    389 	    },
    390 	},
    391 
    392 	/* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
    393 	{   "SIIG Cyber 4S PCI 16C650 (10x family)",
    394 	    {	0x131f,	0x1051,	0,	0	},
    395 	    {	0xffff,	0xffff,	0,	0	},
    396 	    {
    397 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    398 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
    399 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
    400 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
    401 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ * 8 },
    402 	    },
    403 	},
    404 
    405 	/* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
    406 	{   "SIIG Cyber 4S PCI 16C850 (10x family)",
    407 	    {	0x131f,	0x1052,	0,	0	},
    408 	    {	0xffff,	0xffff,	0,	0	},
    409 	    {
    410 		{ PUC_PORT_TYPE_COM, 0x18, 0x00,
    411 		    (COM_FREQ * 8)|PUC_COM_SIIG10x|PUC_PORT_USR0 },
    412 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
    413 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
    414 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ * 8 },
    415 	    },
    416 	},
    417 
    418 	/*
    419 	 * SIIG "20x" family boards.
    420 	 */
    421 
    422 	/* SIIG Cyber Parallel PCI (20x family): 1P */
    423 	{   "SIIG Cyber Parallel PCI (20x family)",
    424 	    {	0x131f,	0x2020,	0,	0	},
    425 	    {	0xffff,	0xffff,	0,	0	},
    426 	    {
    427 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    428 	    },
    429 	},
    430 
    431 	/* SIIG Cyber Parallel Dual PCI (20x family): 2P */
    432 	{   "SIIG Cyber Parallel Dual PCI (20x family)",
    433 	    {	0x131f,	0x2021,	0,	0	},
    434 	    {	0xffff,	0xffff,	0,	0	},
    435 	    {
    436 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    437 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    438 	    },
    439 	},
    440 
    441 	/* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
    442 	{   "SIIG Cyber 2P1S PCI 16C550 (20x family)",
    443 	    {	0x131f,	0x2040,	0,	0	},
    444 	    {	0xffff,	0xffff,	0,	0	},
    445 	    {
    446 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    447 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    448 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    449 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    450 	    },
    451 	},
    452 
    453 	/* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
    454 	{   "SIIG Cyber 2P1S PCI 16C650 (20x family)",
    455 	    {	0x131f,	0x2041,	0,	0	},
    456 	    {	0xffff,	0xffff,	0,	0	},
    457 	    {
    458 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    459 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    460 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    461 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    462 	    },
    463 	},
    464 
    465 	/* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
    466 	{   "SIIG Cyber 2P1S PCI 16C850 (20x family)",
    467 	    {	0x131f,	0x2042,	0,	0	},
    468 	    {	0xffff,	0xffff,	0,	0	},
    469 	    {
    470 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    471 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    472 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    473 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    474 	    },
    475 	},
    476 
    477 	/* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
    478 	{   "SIIG Cyber Serial PCI 16C550 (20x family)",
    479 	    {	0x131f,	0x2000,	0,	0	},
    480 	    {	0xffff,	0xffff,	0,	0	},
    481 	    {
    482 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    483 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    484 	    },
    485 	},
    486 
    487 	/* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
    488 	{   "SIIG Cyber Serial PCI 16C650 (20x family)",
    489 	    {	0x131f,	0x2001,	0,	0	},
    490 	    {	0xffff,	0xffff,	0,	0	},
    491 	    {
    492 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    493 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    494 	    },
    495 	},
    496 
    497 	/* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
    498 	{   "SIIG Cyber Serial PCI 16C850 (20x family)",
    499 	    {	0x131f,	0x2002,	0,	0	},
    500 	    {	0xffff,	0xffff,	0,	0	},
    501 	    {
    502 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    503 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    504 	    },
    505 	},
    506 
    507 	/* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
    508 	{   "SIIG Cyber I/O PCI 16C550 (20x family)",
    509 	    {	0x131f,	0x2010,	0,	0	},
    510 	    {	0xffff,	0xffff,	0,	0	},
    511 	    {
    512 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    513 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    514 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    515 	    },
    516 	},
    517 
    518 	/* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
    519 	{   "SIIG Cyber I/O PCI 16C650 (20x family)",
    520 	    {	0x131f,	0x2011,	0,	0	},
    521 	    {	0xffff,	0xffff,	0,	0	},
    522 	    {
    523 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    524 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    525 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    526 	    },
    527 	},
    528 
    529 	/* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
    530 	{   "SIIG Cyber I/O PCI 16C850 (20x family)",
    531 	    {	0x131f,	0x2012,	0,	0	},
    532 	    {	0xffff,	0xffff,	0,	0	},
    533 	    {
    534 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    535 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    536 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    537 	    },
    538 	},
    539 
    540 	/* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
    541 	{   "SIIG Cyber Serial Dual PCI 16C550 (20x family)",
    542 	    {	0x131f,	0x2030,	0,	0	},
    543 	    {	0xffff,	0xffff,	0,	0	},
    544 	    {
    545 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    546 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    547 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
    548 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
    549 	    },
    550 	},
    551 
    552 	/* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
    553 	{   "SIIG Cyber Serial Dual PCI 16C650 (20x family)",
    554 	    {	0x131f,	0x2031,	0,	0	},
    555 	    {	0xffff,	0xffff,	0,	0	},
    556 	    {
    557 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    558 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    559 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
    560 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
    561 	    },
    562 	},
    563 
    564 	/* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
    565 	{   "SIIG Cyber Serial Dual PCI 16C850 (20x family)",
    566 	    {	0x131f,	0x2032,	0,	0	},
    567 	    {	0xffff,	0xffff,	0,	0	},
    568 	    {
    569 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    570 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    571 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
    572 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
    573 	    },
    574 	},
    575 
    576 	/* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
    577 	{   "SIIG Cyber 2S1P PCI 16C550 (20x family)",
    578 	    {	0x131f,	0x2060,	0,	0	},
    579 	    {	0xffff,	0xffff,	0,	0	},
    580 	    {
    581 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    582 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    583 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
    584 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
    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,
    595 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    596 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
    597 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
    598 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    599 	    },
    600 	},
    601 
    602 	/* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
    603 	{   "SIIG Cyber 2S1P PCI 16C850 (20x family)",
    604 	    {	0x131f,	0x2062,	0,	0	},
    605 	    {	0xffff,	0xffff,	0,	0	},
    606 	    {
    607 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    608 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    609 		{ PUC_PORT_TYPE_COM, 0x14, 0x00,
    610 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR1 },
    611 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    612 	    },
    613 	},
    614 
    615 	/* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
    616 	{   "SIIG Cyber 4S PCI 16C550 (20x family)",
    617 	    {	0x131f,	0x2050,	0,	0	},
    618 	    {	0xffff,	0xffff,	0,	0	},
    619 	    {
    620 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    621 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    622 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
    623 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    624 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
    625 	    },
    626 	},
    627 
    628 	/* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
    629 	{   "SIIG Cyber 4S PCI 16C650 (20x family)",
    630 	    {	0x131f,	0x2051,	0,	0	},
    631 	    {	0xffff,	0xffff,	0,	0	},
    632 	    {
    633 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    634 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    635 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
    636 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    637 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
    638 	    },
    639 	},
    640 
    641 	/* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
    642 	{   "SIIG Cyber 4S PCI 16C850 (20x family)",
    643 	    {	0x131f,	0x2052,	0,	0	},
    644 	    {	0xffff,	0xffff,	0,	0	},
    645 	    {
    646 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    647 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    648 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
    649 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    650 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
    651 	    },
    652 	},
    653 
    654 	/* SIIG Cyber PS8000 PCI 16C650 (20x family): 8S - 32 Byte FIFOs */
    655 	{   "SIIG PS8000 8S PCI 16C650 (20x family)",
    656 	    {	0x131f,	0x2081,	0,	0	},
    657 	    {	0xffff,	0xffff,	0,	0	},
    658 	    {
    659 		{ PUC_PORT_TYPE_COM, 0x10, 0x00,
    660 		    (COM_FREQ * 8)|PUC_COM_SIIG20x|PUC_PORT_USR0 },
    661 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
    662 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    663 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
    664 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
    665 		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ * 8 },
    666 		{ PUC_PORT_TYPE_COM, 0x20, 0x10, COM_FREQ * 8 },
    667 		{ PUC_PORT_TYPE_COM, 0x20, 0x18, COM_FREQ * 8 },
    668 	    },
    669 	},
    670 
    671 	/* VScom PCI-200: 2S */
    672 	{   "VScom PCI-200",
    673 	    {	0x10b5,	0x1103,	0x10b5,	0x1103	},
    674 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    675 	    {
    676 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    677 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ * 8 },
    678 	    },
    679 	},
    680 
    681 	/* VScom PCI-400: 4S */
    682 	{   "VScom PCI-400",
    683 	    {	0x10b5,	0x1077,	0x10b5,	0x1077	},
    684 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    685 	    {
    686 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    687 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
    688 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
    689 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
    690 	    },
    691 	},
    692 
    693 	/* VScom PCI-800: 8S */
    694 	{   "VScom PCI-800",
    695 	    {	0x10b5,	0x1076,	0x10b5,	0x1076	},
    696 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    697 	    {
    698 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    699 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
    700 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
    701 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
    702 		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
    703 		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
    704 		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
    705 		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
    706 	    },
    707 	},
    708 
    709 	{   "Titan PCI-010HV2",
    710 	    {   0x14d2, 0xe001, 0,      0       },
    711 	    {   0xffff, 0xffff, 0,      0       },
    712 	    {
    713 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    714 	    },
    715 	},
    716 	{   "Titan PCI-200HV2",
    717 	    {   0x14d2, 0xe020, 0,      0       },
    718 	    {   0xffff, 0xffff, 0,      0       },
    719 	    {
    720 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
    721 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
    722 	    },
    723 	},
    724 
    725 	/*
    726 	 * VScom PCI-800H. Uses 8 16950 UART, behind a PCI chips that offers
    727 	 * 4 com port on PCI device 0 and 4 on PCI device 1. PCI device 0 has
    728 	 * device ID 3 and PCI device 1 device ID 4.
    729 	 */
    730 	{   "Titan PCI-800H",
    731 	    {	0x14d2,	0xa003,	0,	0	},
    732 	    {	0xffff,	0xffff,	0,	0	},
    733 	    {
    734 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
    735 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
    736 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
    737 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
    738 	    },
    739 	},
    740 	{   "Titan PCI-800H",
    741 	    {	0x14d2,	0xa004,	0,	0	},
    742 	    {	0xffff,	0xffff,	0,	0	},
    743 	    {
    744 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
    745 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
    746 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
    747 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
    748 	    },
    749 	},
    750         {   "Titan PCI-200H",
    751             {   0x14d2, 0xa005, 0,      0       },
    752             {   0xffff, 0xffff, 0,      0       },
    753             {
    754                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
    755                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
    756             },
    757         },
    758 	{   "Titan PCI-800L",
    759 	    {	0x14d2,	0x8080,	0,	0	},
    760 	    {	0xffff,	0xffff,	0,	0	},
    761 	    {
    762 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
    763 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    764 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
    765 		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ * 8 },
    766 		{ PUC_PORT_TYPE_COM, 0x20, 0x10, COM_FREQ * 8 },
    767 		{ PUC_PORT_TYPE_COM, 0x20, 0x18, COM_FREQ * 8 },
    768 		{ PUC_PORT_TYPE_COM, 0x20, 0x20, COM_FREQ * 8 },
    769 		{ PUC_PORT_TYPE_COM, 0x20, 0x28, COM_FREQ * 8 },
    770 	    },
    771 	},
    772 	/* NEC PK-UG-X001 K56flex PCI Modem card.
    773 	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */
    774 	{   "NEC PK-UG-X001 K56flex PCI Modem",
    775 	    {	0x1033,	0x0074,	0x1033,	0x8014	},
    776 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    777 	    {
    778 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    779 	    },
    780 	},
    781 
    782 	/* NEC PK-UG-X008 */
    783 	{   "NEC PK-UG-X008",
    784 	    {	0x1033,	0x007d,	0x1033,	0x8012	},
    785 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    786 	    {
    787 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ},
    788 	    },
    789 	},
    790 
    791 	/* Lava Computers 2SP-PCI */
    792 	{   "Lava Computers 2SP-PCI parallel port",
    793 	    {	0x1407,	0x8000,	0,	0	},
    794 	    {	0xffff,	0xffff,	0,	0	},
    795 	    {
    796 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    797 	    },
    798 	},
    799 
    800 	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
    801 	{   "Lava Computers dual serial port",
    802 	    {	0x1407,	0x0100,	0,	0	},
    803 	    {	0xffff,	0xfffc,	0,	0	},
    804 	    {
    805 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    806 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    807 	    },
    808 	},
    809 
    810 	/* Lava Computers DSerial PCI serial ports */
    811 	{   "Lava Computers serial port",
    812 	    {	0x1407,	0x0110,	0,	0	},
    813 	    {	0xffff,	0xfffc,	0,	0	},
    814 	    {
    815 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    816 	    },
    817 	},
    818 
    819 	/* Lava Computers Quattro-PCI serial ports */
    820 	{   "Lava Quattro-PCI 4-port serial",
    821 	    {   0x1407, 0x0120, 0,	0	},
    822 	    {   0xffff, 0xfffc, 0,	0	},
    823 	    {
    824 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    825 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    826 	    },
    827 	},
    828 
    829 	/* Lava Computers Octopus-550 serial ports */
    830 	{   "Lava Computers Octopus-550 8-port serial",
    831 	    {	0x1407,	0x0180,	0,	0	},
    832 	    {	0xffff,	0xfffc,	0,	0	},
    833 	    {
    834 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    835 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    836 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    837 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    838 	    },
    839 	},
    840 
    841 	/* US Robotics (3Com) PCI Modems */
    842 	{   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
    843 	    {	0x12b9,	0x1008,	0,	0	},
    844 	    {	0xffff,	0xffff,	0,	0	},
    845 	    {
    846 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    847 	    },
    848 	},
    849 
    850 	/* Actiontec  56K PCI Master */
    851 	{   "Actiontec 56K PCI Master",
    852 	    {	0x11c1,	0x0480,	0x0, 	0x0	},
    853 	    {	0xffff,	0xffff,	0x0,	0x0	},
    854 	    {
    855 		{ PUC_PORT_TYPE_COM,	0x14,	0x00, COM_FREQ },
    856 	    },
    857 	},
    858 
    859 	/*
    860 	 * Boards with an Oxford Semiconductor chip.
    861 	 *
    862 	 * Oxford Semiconductor provides documentation for their chip at:
    863 	 * <URL:http://www.oxsemi.com/products/uarts/index.html>
    864 	 *
    865 	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
    866 	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
    867 	 */
    868 
    869 	/* Oxford Semiconductor OX16PCI952 PCI `950 UARTs - 128 byte FIFOs */
    870 	{   "Oxford Semiconductor OX16PCI952 UARTs",
    871 	    {   0x1415, 0x9521, 0,	0	},
    872 	    {   0xffff, 0xffff, 0,	0	},
    873 	    {
    874 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    875 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    876 	    },
    877 	},
    878 
    879 	/* Oxford Semiconductor OX16PCI952 PCI Parallel port */
    880 	{   "Oxford Semiconductor OX16PCI952 Parallel port",
    881 	    {   0x1415, 0x9523, 0,	0	},
    882 	    {   0xffff, 0xffff, 0,	0	},
    883 	    {
    884 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    885 	    },
    886 	},
    887 
    888 	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
    889 	{   "Oxford Semiconductor OX16PCI954 UARTs",
    890 	    {	0x1415,	0x9501,	0,	0	},
    891 	    {	0xffff,	0xffff,	0,	0	},
    892 	    {
    893 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    894 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
    895 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
    896 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
    897 	    },
    898 	},
    899 
    900 	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
    901 	{   "Oxford Semiconductor OX16PCI954 Parallel port",
    902 	    {	0x1415,	0x9513,	0,	0	},
    903 	    {	0xffff,	0xffff,	0,	0	},
    904 	    {
    905 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    906 	    },
    907 	},
    908 
    909 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
    910 	{   "Moxa Technologies, SmartIO CP104/PCI",
    911 	    {   0x1393, 0x1041, 0,      0    },
    912 	    {   0xffff, 0xffff, 0,      0    },
    913 	    {
    914 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    915 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
    916 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
    917 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
    918 	    },
    919 	},
    920 
    921 	/* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
    922 	{   "Moxa Technologies, SmartIO CP104-V2/PCI",
    923 	    {   0x1393, 0x1042, 0,      0    },
    924 	    {   0xffff, 0xffff, 0,      0    },
    925 	    {
    926 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    927 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
    928 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
    929 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
    930 	    },
    931 	},
    932 
    933 	/* NetMos 1P PCI : 1P */
    934 	{   "NetMos NM9805 1284 Printer port",
    935 	    {	0x9710,	0x9805,	0,	0	},
    936 	    {	0xffff,	0xffff,	0,	0	},
    937 	    {
    938 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    939 	    },
    940 	},
    941 
    942 	/* NetMos 2P PCI : 2P */
    943 	{   "NetMos NM9815 Dual 1284 Printer port",
    944 	    {	0x9710,	0x9815,	0,	0	},
    945 	    {	0xffff,	0xffff,	0,	0	},
    946 	    {
    947 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    948 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    949 	    },
    950 	},
    951 
    952 	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
    953 	{   "NetMos NM9835 Dual UART and 1284 Printer port",
    954 	    {	0x9710,	0x9835,	0,	0	},
    955 	    {	0xffff,	0xffff,	0,	0	},
    956 	    {
    957 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    958 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    959 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    960 	    },
    961 	},
    962 
    963 	/* NetMos 4S1P PCI NM9845 : 4S, 1P */
    964 	{   "NetMos NM9845 Quad UART and 1284 Printer port",
    965 	   {   0x9710, 0x9845, 0x1000, 0x0014  },
    966 	   {   0xffff, 0xffff, 0xffff, 0xffff  },
    967 	   {
    968 	       { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    969 	       { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    970 	       { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    971 	       { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    972 	       { PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    973 	   },
    974        },
    975 
    976        /* NetMos 6S PCI 16C650 : 6S, 0P */
    977        {   "NetMos NM9845 6 UART",
    978 	   {   0x9710, 0x9845, 0x1000, 0x0006  },
    979 	   {   0xffff, 0xffff, 0xffff, 0xffff  },
    980 	   {
    981 	       { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    982 	       { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    983 	       { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    984 	       { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    985 	       { PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
    986 	       { PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
    987 	   },
    988        },
    989 
    990        /* NetMos 4S1P PCI NM9845 : 4S, 1P */
    991        {   "NetMos NM9845 Quad UART and 1284 Printer port (unknown type)",
    992 	    {	0x9710,	0x9845,	0,	0	},
    993 	    {	0xffff,	0xffff,	0,	0	},
    994 	    {
    995 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    996 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    997 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    998 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    999 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
   1000 	    },
   1001 	},
   1002 
   1003 	/*
   1004 	 * This is the Middle Digital, Inc. PCI-Weasel, which
   1005 	 * uses a PCI interface implemented in FPGA.
   1006 	 */
   1007 	{   "Middle Digital, Inc. Weasel serial port",
   1008 	    {	0xdeaf,	0x9051,	0,	0	},
   1009 	    {	0xffff,	0xffff,	0,	0	},
   1010 	    {
   1011 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
   1012 	    },
   1013 	},
   1014 
   1015 	/* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
   1016 	{   "Avlab Low Profile PCI 4 Serial",
   1017 	    {	0x14db,	0x2150,	0,	0	},
   1018 	    {	0xffff,	0xffff,	0,	0	},
   1019 	    {
   1020 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
   1021 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
   1022 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
   1023 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
   1024 	    },
   1025 	},
   1026 
   1027 	/*
   1028 	 * Boca Research Turbo Serial 654 (4 serial port) card.
   1029 	 * Appears to be the same as Chase Research PLC PCI-FAST4
   1030 	 * and Perle PCI-FAST4 Multi-Port serial cards.
   1031 	 */
   1032 	{   "Boca Research Turbo Serial 654",
   1033 	    {   0x10b5, 0x9050, 0x12e0, 0x0031  },
   1034 	    {   0xffff, 0xffff, 0xffff, 0xffff  },
   1035 	    {
   1036 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 4 },
   1037 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 4 },
   1038 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 4 },
   1039 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 4 },
   1040 	    },
   1041 	},
   1042 
   1043 	/*
   1044 	 * Boca Research Turbo Serial 658 (8 serial port) card.
   1045 	 * Appears to be the same as Chase Research PLC PCI-FAST8
   1046 	 * and Perle PCI-FAST8 Multi-Port serial cards.
   1047 	 */
   1048 	{   "Boca Research Turbo Serial 658",
   1049 	    {   0x10b5, 0x9050, 0x12e0, 0x0021  },
   1050 	    {   0xffff, 0xffff, 0xffff, 0xffff  },
   1051 	    {
   1052 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 4 },
   1053 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 4 },
   1054 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 4 },
   1055 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 4 },
   1056 		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 4 },
   1057 		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 4 },
   1058 		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 4 },
   1059 		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 4 },
   1060 	    },
   1061 	},
   1062 
   1063 	/*
   1064 	 * Addi-Data APCI-7800 8-port serial card.
   1065 	 * Uses an AMCC chip as PCI bridge.
   1066 	 */
   1067 	{   "Addi-Data APCI-7800",
   1068 	    {   0x10e8, 0x818e, 0, 0  },
   1069 	    {   0xffff, 0xffff, 0, 0  },
   1070 	    {
   1071 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
   1072 		{ PUC_PORT_TYPE_COM, 0x14, 0x08, COM_FREQ },
   1073 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
   1074 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ },
   1075 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
   1076 		{ PUC_PORT_TYPE_COM, 0x1c, 0x08, COM_FREQ },
   1077 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
   1078 		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ },
   1079 	    },
   1080 	},
   1081 
   1082 	{   "EXAR XR17D152",
   1083 	    {   0x13a8, 0x0152, 0,      0       },
   1084 	    {   0xffff, 0xffff, 0,      0       },
   1085 	    {
   1086 		{ PUC_PORT_TYPE_COM, 0x10, 0x0000, COM_FREQ * 8 },
   1087 		{ PUC_PORT_TYPE_COM, 0x10, 0x0200, COM_FREQ * 8 },
   1088 	    },
   1089 	},
   1090 	{   "EXAR XR17D154",
   1091 	    {   0x13a8, 0x0154, 0,      0       },
   1092 	    {   0xffff, 0xffff, 0,      0       },
   1093 	    {
   1094 		{ PUC_PORT_TYPE_COM, 0x10, 0x0000, COM_FREQ * 8 },
   1095 		{ PUC_PORT_TYPE_COM, 0x10, 0x0200, COM_FREQ * 8 },
   1096 		{ PUC_PORT_TYPE_COM, 0x10, 0x0400, COM_FREQ * 8 },
   1097 		{ PUC_PORT_TYPE_COM, 0x10, 0x0600, COM_FREQ * 8 },
   1098 	    },
   1099 	},
   1100 	{   "EXAR XR17D158",
   1101 	    {   0x13a8, 0x0154, 0,      0       },
   1102 	    {   0xffff, 0xffff, 0,      0       },
   1103 	    {
   1104 		{ PUC_PORT_TYPE_COM, 0x10, 0x0000, COM_FREQ * 8 },
   1105 		{ PUC_PORT_TYPE_COM, 0x10, 0x0200, COM_FREQ * 8 },
   1106 		{ PUC_PORT_TYPE_COM, 0x10, 0x0400, COM_FREQ * 8 },
   1107 		{ PUC_PORT_TYPE_COM, 0x10, 0x0600, COM_FREQ * 8 },
   1108 		{ PUC_PORT_TYPE_COM, 0x10, 0x0800, COM_FREQ * 8 },
   1109 		{ PUC_PORT_TYPE_COM, 0x10, 0x0a00, COM_FREQ * 8 },
   1110 		{ PUC_PORT_TYPE_COM, 0x10, 0x0c00, COM_FREQ * 8 },
   1111 		{ PUC_PORT_TYPE_COM, 0x10, 0x0e00, COM_FREQ * 8 },
   1112 	    },
   1113 	},
   1114 
   1115 	{ 0 }
   1116 };
   1117