Home | History | Annotate | Line # | Download | only in pci
pucdata.c revision 1.26
      1 /*	$NetBSD: pucdata.c,v 1.26 2002/04/11 13:53:56 hannken 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.26 2002/04/11 13:53:56 hannken 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, COM_FREQ },
    228 	    },
    229 	},
    230 
    231 	/* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
    232 	{   "SIIG Cyber Serial PCI 16C650 (10x family)",
    233 	    {	0x131f,	0x1001,	0,	0	},
    234 	    {	0xffff,	0xffff,	0,	0	},
    235 	    {
    236 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    237 	    },
    238 	},
    239 
    240 	/* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
    241 	{   "SIIG Cyber Serial PCI 16C850 (10x family)",
    242 	    {	0x131f,	0x1002,	0,	0	},
    243 	    {	0xffff,	0xffff,	0,	0	},
    244 	    {
    245 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    246 	    },
    247 	},
    248 
    249 	/* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
    250 	{   "SIIG Cyber I/O PCI 16C550 (10x family)",
    251 	    {	0x131f,	0x1010,	0,	0	},
    252 	    {	0xffff,	0xffff,	0,	0	},
    253 	    {
    254 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    255 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    256 	    },
    257 	},
    258 
    259 	/* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
    260 	{   "SIIG Cyber I/O PCI 16C650 (10x family)",
    261 	    {	0x131f,	0x1011,	0,	0	},
    262 	    {	0xffff,	0xffff,	0,	0	},
    263 	    {
    264 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    265 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    266 	    },
    267 	},
    268 
    269 	/* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
    270 	{   "SIIG Cyber I/O PCI 16C850 (10x family)",
    271 	    {	0x131f,	0x1012,	0,	0	},
    272 	    {	0xffff,	0xffff,	0,	0	},
    273 	    {
    274 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    275 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    276 	    },
    277 	},
    278 
    279 	/* SIIG Cyber Parallel PCI (10x family): 1P */
    280 	{   "SIIG Cyber Parallel PCI (10x family)",
    281 	    {	0x131f,	0x1020,	0,	0	},
    282 	    {	0xffff,	0xffff,	0,	0	},
    283 	    {
    284 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    285 	    },
    286 	},
    287 
    288 	/* SIIG Cyber Parallel Dual PCI (10x family): 2P */
    289 	{   "SIIG Cyber Parallel Dual PCI (10x family)",
    290 	    {	0x131f,	0x1021,	0,	0	},
    291 	    {	0xffff,	0xffff,	0,	0	},
    292 	    {
    293 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    294 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    295 	    },
    296 	},
    297 
    298 	/* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
    299 	{   "SIIG Cyber Serial Dual PCI 16C550 (10x family)",
    300 	    {	0x131f,	0x1030,	0,	0	},
    301 	    {	0xffff,	0xffff,	0,	0	},
    302 	    {
    303 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    304 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    305 	    },
    306 	},
    307 
    308 	/* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
    309 	{   "SIIG Cyber Serial Dual PCI 16C650 (10x family)",
    310 	    {	0x131f,	0x1031,	0,	0	},
    311 	    {	0xffff,	0xffff,	0,	0	},
    312 	    {
    313 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    314 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    315 	    },
    316 	},
    317 
    318 	/* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
    319 	{   "SIIG Cyber Serial Dual PCI 16C850 (10x family)",
    320 	    {	0x131f,	0x1032,	0,	0	},
    321 	    {	0xffff,	0xffff,	0,	0	},
    322 	    {
    323 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    324 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    325 	    },
    326 	},
    327 
    328 	/* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
    329 	{   "SIIG Cyber 2S1P PCI 16C550 (10x family)",
    330 	    {	0x131f,	0x1034,	0,	0	},	/* XXX really? */
    331 	    {	0xffff,	0xffff,	0,	0	},
    332 	    {
    333 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    334 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    335 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    336 	    },
    337 	},
    338 
    339 	/* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
    340 	{   "SIIG Cyber 2S1P PCI 16C650 (10x family)",
    341 	    {	0x131f,	0x1035,	0,	0	},	/* XXX really? */
    342 	    {	0xffff,	0xffff,	0,	0	},
    343 	    {
    344 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    345 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    346 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    347 	    },
    348 	},
    349 
    350 	/* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
    351 	{   "SIIG Cyber 2S1P PCI 16C850 (10x family)",
    352 	    {	0x131f,	0x1036,	0,	0	},	/* XXX really? */
    353 	    {	0xffff,	0xffff,	0,	0	},
    354 	    {
    355 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    356 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    357 		{ PUC_PORT_TYPE_LPT, 0x20, 0x00, 0x00 },
    358 	    },
    359 	},
    360 
    361 	/* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
    362 	{   "SIIG Cyber 4S PCI 16C550 (10x family)",
    363 	    {	0x131f,	0x1050,	0,	0	},
    364 	    {	0xffff,	0xffff,	0,	0	},
    365 	    {
    366 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    367 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    368 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
    369 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
    370 	    },
    371 	},
    372 
    373 	/* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
    374 	{   "SIIG Cyber 4S PCI 16C650 (10x family)",
    375 	    {	0x131f,	0x1051,	0,	0	},
    376 	    {	0xffff,	0xffff,	0,	0	},
    377 	    {
    378 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    379 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    380 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
    381 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
    382 	    },
    383 	},
    384 
    385 	/* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
    386 	{   "SIIG Cyber 4S PCI 16C850 (10x family)",
    387 	    {	0x131f,	0x1052,	0,	0	},
    388 	    {	0xffff,	0xffff,	0,	0	},
    389 	    {
    390 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    391 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    392 		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ },
    393 		{ PUC_PORT_TYPE_COM, 0x24, 0x00, COM_FREQ },
    394 	    },
    395 	},
    396 
    397 	/*
    398 	 * SIIG "20x" family boards.
    399 	 */
    400 
    401 	/* SIIG Cyber Parallel PCI (20x family): 1P */
    402 	{   "SIIG Cyber Parallel PCI (20x family)",
    403 	    {	0x131f,	0x2020,	0,	0	},
    404 	    {	0xffff,	0xffff,	0,	0	},
    405 	    {
    406 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    407 	    },
    408 	},
    409 
    410 	/* SIIG Cyber Parallel Dual PCI (20x family): 2P */
    411 	{   "SIIG Cyber Parallel Dual PCI (20x family)",
    412 	    {	0x131f,	0x2021,	0,	0	},
    413 	    {	0xffff,	0xffff,	0,	0	},
    414 	    {
    415 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    416 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    417 	    },
    418 	},
    419 
    420 	/* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
    421 	{   "SIIG Cyber 2P1S PCI 16C550 (20x family)",
    422 	    {	0x131f,	0x2040,	0,	0	},
    423 	    {	0xffff,	0xffff,	0,	0	},
    424 	    {
    425 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    426 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    427 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    428 	    },
    429 	},
    430 
    431 	/* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
    432 	{   "SIIG Cyber 2P1S PCI 16C650 (20x family)",
    433 	    {	0x131f,	0x2041,	0,	0	},
    434 	    {	0xffff,	0xffff,	0,	0	},
    435 	    {
    436 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    437 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    438 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    439 	    },
    440 	},
    441 
    442 	/* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
    443 	{   "SIIG Cyber 2P1S PCI 16C850 (20x family)",
    444 	    {	0x131f,	0x2042,	0,	0	},
    445 	    {	0xffff,	0xffff,	0,	0	},
    446 	    {
    447 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    448 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    449 		{ PUC_PORT_TYPE_LPT, 0x1c, 0x00, 0x00 },
    450 	    },
    451 	},
    452 
    453 	/* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
    454 	{   "SIIG Cyber Serial PCI 16C550 (20x family)",
    455 	    {	0x131f,	0x2000,	0,	0	},
    456 	    {	0xffff,	0xffff,	0,	0	},
    457 	    {
    458 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    459 	    },
    460 	},
    461 
    462 	/* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
    463 	{   "SIIG Cyber Serial PCI 16C650 (20x family)",
    464 	    {	0x131f,	0x2001,	0,	0	},
    465 	    {	0xffff,	0xffff,	0,	0	},
    466 	    {
    467 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    468 	    },
    469 	},
    470 
    471 	/* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
    472 	{   "SIIG Cyber Serial PCI 16C850 (20x family)",
    473 	    {	0x131f,	0x2002,	0,	0	},
    474 	    {	0xffff,	0xffff,	0,	0	},
    475 	    {
    476 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    477 	    },
    478 	},
    479 
    480 	/* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
    481 	{   "SIIG Cyber I/O PCI 16C550 (20x family)",
    482 	    {	0x131f,	0x2010,	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 	    },
    488 	},
    489 
    490 	/* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
    491 	{   "SIIG Cyber I/O PCI 16C650 (20x family)",
    492 	    {	0x131f,	0x2011,	0,	0	},
    493 	    {	0xffff,	0xffff,	0,	0	},
    494 	    {
    495 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    496 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    497 	    },
    498 	},
    499 
    500 	/* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
    501 	{   "SIIG Cyber I/O PCI 16C850 (20x family)",
    502 	    {	0x131f,	0x2012,	0,	0	},
    503 	    {	0xffff,	0xffff,	0,	0	},
    504 	    {
    505 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    506 		{ PUC_PORT_TYPE_LPT, 0x14, 0x00, 0x00 },
    507 	    },
    508 	},
    509 
    510 	/* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
    511 	{   "SIIG Cyber Serial Dual PCI 16C550 (20x family)",
    512 	    {	0x131f,	0x2030,	0,	0	},
    513 	    {	0xffff,	0xffff,	0,	0	},
    514 	    {
    515 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    516 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    517 	    },
    518 	},
    519 
    520 	/* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
    521 	{   "SIIG Cyber Serial Dual PCI 16C650 (20x family)",
    522 	    {	0x131f,	0x2031,	0,	0	},
    523 	    {	0xffff,	0xffff,	0,	0	},
    524 	    {
    525 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    526 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    527 	    },
    528 	},
    529 
    530 	/* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
    531 	{   "SIIG Cyber Serial Dual PCI 16C850 (20x family)",
    532 	    {	0x131f,	0x2032,	0,	0	},
    533 	    {	0xffff,	0xffff,	0,	0	},
    534 	    {
    535 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    536 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    537 	    },
    538 	},
    539 
    540 	/* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
    541 	{   "SIIG Cyber 2S1P PCI 16C550 (20x family)",
    542 	    {	0x131f,	0x2060,	0,	0	},
    543 	    {	0xffff,	0xffff,	0,	0	},
    544 	    {
    545 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    546 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    547 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    548 	    },
    549 	},
    550 
    551 	/* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
    552 	{   "SIIG Cyber 2S1P PCI 16C650 (20x family)",
    553 	    {	0x131f,	0x2061,	0,	0	},
    554 	    {	0xffff,	0xffff,	0,	0	},
    555 	    {
    556 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    557 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    558 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    559 	    },
    560 	},
    561 
    562 	/* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
    563 	{   "SIIG Cyber 2S1P PCI 16C850 (20x family)",
    564 	    {	0x131f,	0x2062,	0,	0	},
    565 	    {	0xffff,	0xffff,	0,	0	},
    566 	    {
    567 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    568 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    569 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    570 	    },
    571 	},
    572 
    573 	/* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
    574 	{   "SIIG Cyber 4S PCI 16C550 (20x family)",
    575 	    {	0x131f,	0x2050,	0,	0	},
    576 	    {	0xffff,	0xffff,	0,	0	},
    577 	    {
    578 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    579 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    580 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    581 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    582 	    },
    583 	},
    584 
    585 	/* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
    586 	{   "SIIG Cyber 4S PCI 16C650 (20x family)",
    587 	    {	0x131f,	0x2051,	0,	0	},
    588 	    {	0xffff,	0xffff,	0,	0	},
    589 	    {
    590 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    591 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    592 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    593 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    594 	    },
    595 	},
    596 
    597 	/* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
    598 	{   "SIIG Cyber 4S PCI 16C850 (20x family)",
    599 	    {	0x131f,	0x2052,	0,	0	},
    600 	    {	0xffff,	0xffff,	0,	0	},
    601 	    {
    602 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    603 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    604 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    605 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    606 	    },
    607 	},
    608 
    609 	/* VScom PCI-400: 4S */
    610 	{   "VScom PCI-400",
    611 	    {	0x10b5,	0x1077,	0x10b5,	0x1077	},
    612 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    613 	    {
    614 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    615 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
    616 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
    617 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
    618 	    },
    619 	},
    620 
    621 	/* VScom PCI-800: 8S */
    622 	{   "VScom PCI-800",
    623 	    {	0x10b5,	0x1076,	0x10b5,	0x1076	},
    624 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    625 	    {
    626 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
    627 		{ PUC_PORT_TYPE_COM, 0x18, 0x08, COM_FREQ * 8 },
    628 		{ PUC_PORT_TYPE_COM, 0x18, 0x10, COM_FREQ * 8 },
    629 		{ PUC_PORT_TYPE_COM, 0x18, 0x18, COM_FREQ * 8 },
    630 		{ PUC_PORT_TYPE_COM, 0x18, 0x20, COM_FREQ * 8 },
    631 		{ PUC_PORT_TYPE_COM, 0x18, 0x28, COM_FREQ * 8 },
    632 		{ PUC_PORT_TYPE_COM, 0x18, 0x30, COM_FREQ * 8 },
    633 		{ PUC_PORT_TYPE_COM, 0x18, 0x38, COM_FREQ * 8 },
    634 	    },
    635 	},
    636 	/*
    637 	 * VScom PCI-800H. Uses 8 16950 UART, behind a PCI chips that offers
    638 	 * 4 com port on PCI device 0 and 4 on PCI device 1. PCI device 0 has
    639 	 * device ID 3 and PCI device 1 device ID 4.
    640 	 */
    641 	{   "Titan PCI-800H",
    642 	    {	0x14d2,	0xa003,	0,	0	},
    643 	    {	0xffff,	0xffff,	0,	0	},
    644 	    {
    645 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
    646 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
    647 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
    648 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
    649 	    },
    650 	},
    651 	{   "Titan PCI-800H",
    652 	    {	0x14d2,	0xa004,	0,	0	},
    653 	    {	0xffff,	0xffff,	0,	0	},
    654 	    {
    655 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
    656 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
    657 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ * 8 },
    658 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ * 8 },
    659 	    },
    660 	},
    661         {   "Titan PCI-200H",
    662             {   0x14d2, 0xa005, 0,      0       },
    663             {   0xffff, 0xffff, 0,      0       },
    664             {
    665                 { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 8 },
    666                 { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 8 },
    667             },
    668         },
    669 
    670 	/* NEC PK-UG-X001 K56flex PCI Modem card.
    671 	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */
    672 	{   "NEC PK-UG-X001 K56flex PCI Modem",
    673 	    {	0x1033,	0x0074,	0x1033,	0x8014	},
    674 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    675 	    {
    676 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    677 	    },
    678 	},
    679 
    680 	/* NEC PK-UG-X008 */
    681 	{   "NEC PK-UG-X008",
    682 	    {	0x1033,	0x007d,	0x1033,	0x8012	},
    683 	    {	0xffff,	0xffff,	0xffff,	0xffff	},
    684 	    {
    685 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ},
    686 	    },
    687 	},
    688 
    689 	/* Lava Computers 2SP-PCI */
    690 	{   "Lava Computers 2SP-PCI parallel port",
    691 	    {	0x1407,	0x8000,	0,	0	},
    692 	    {	0xffff,	0xffff,	0,	0	},
    693 	    {
    694 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    695 	    },
    696 	},
    697 
    698 	/* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
    699 	{   "Lava Computers dual serial port",
    700 	    {	0x1407,	0x0100,	0,	0	},
    701 	    {	0xffff,	0xfffc,	0,	0	},
    702 	    {
    703 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    704 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    705 	    },
    706 	},
    707 
    708 	/* Lava Computers DSerial PCI serial ports */
    709 	{   "Lava Computers serial port",
    710 	    {	0x1407,	0x0110,	0,	0	},
    711 	    {	0xffff,	0xfffc,	0,	0	},
    712 	    {
    713 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    714 	    },
    715 	},
    716 
    717 	/* Lava Computers Octopus-550 serial ports */
    718 	{   "Lava Computers Octopus-550 8-port serial",
    719 	    {	0x1407,	0x0180,	0,	0	},
    720 	    {	0xffff,	0xfffc,	0,	0	},
    721 	    {
    722 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    723 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    724 		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ },
    725 		{ PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ },
    726 	    },
    727 	},
    728 
    729 	/* US Robotics (3Com) PCI Modems */
    730 	{   "US Robotics (3Com) 3CP5609 PCI 16550 Modem",
    731 	    {	0x12b9,	0x1008,	0,	0	},
    732 	    {	0xffff,	0xffff,	0,	0	},
    733 	    {
    734 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    735 	    },
    736 	},
    737 
    738 	/* Actiontec  56K PCI Master */
    739 	{   "Actiontec 56K PCI Master",
    740 	    {	0x11c1,	0x0480,	0x0, 	0x0	},
    741 	    {	0xffff,	0xffff,	0x0,	0x0	},
    742 	    {
    743 		{ PUC_PORT_TYPE_COM,	0x14,	0x00, COM_FREQ },
    744 	    },
    745 	},
    746 
    747 	/*
    748 	 * Boards with an Oxford Semiconductor chip.
    749 	 *
    750 	 * Oxford Semiconductor provides documentation for their chip at:
    751 	 * <URL:http://www.oxsemi.com/products/uarts/index.html>
    752 	 *
    753 	 * As sold by Kouwell <URL:http://www.kouwell.com/>.
    754 	 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
    755 	 */
    756 
    757 	/* Oxford Semiconductor OX16PCI954 PCI UARTs */
    758 	{   "Qxford Semiconductor OX16PCI954 UARTs",
    759 	    {	0x1415,	0x9501,	0,	0	},
    760 	    {	0xffff,	0xffff,	0,	0	},
    761 	    {
    762 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    763 		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
    764 		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
    765 		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
    766 	    },
    767 	},
    768 
    769 	/* Oxford Semiconductor OX16PCI954 PCI Parallel port */
    770 	{   "Qxford Semiconductor OX16PCI954 Parallel port",
    771 	    {	0x1415,	0x9513,	0,	0	},
    772 	    {	0xffff,	0xffff,	0,	0	},
    773 	    {
    774 		{ PUC_PORT_TYPE_LPT, 0x10, 0x00, 0x00 },
    775 	    },
    776 	},
    777 
    778 	/* NetMos 2S1P PCI 16C650 : 2S, 1P */
    779 	{   "NetMos NM9835 Dual UART and 1284 Printer port",
    780 	    {	0x9710,	0x9835,	0,	0	},
    781 	    {	0xffff,	0xffff,	0,	0	},
    782 	    {
    783 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    784 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ },
    785 		{ PUC_PORT_TYPE_LPT, 0x18, 0x00, 0x00 },
    786 	    },
    787 	},
    788 
    789 	/*
    790 	 * This is the Middle Digital, Inc. PCI-Weasel, which
    791 	 * uses a PCI interface implemented in FPGA.
    792 	 */
    793 	{   "Middle Digital, Inc. Weasel serial port",
    794 	    {	0xdeaf,	0x9051,	0,	0	},
    795 	    {	0xffff,	0xffff,	0,	0	},
    796 	    {
    797 		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
    798 	    },
    799 	},
    800 
    801 	{ 0 }
    802 };
    803