jcs's openbsd hax
openbsd
1/* $OpenBSD: pucdata.c,v 1.122 2025/07/04 04:31:48 tb Exp $ */
2/* $NetBSD: pucdata.c,v 1.6 1999/07/03 05:55:23 cgd Exp $ */
3
4/*
5 * Copyright (c) 1998, 1999 Christopher G. Demetriou. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. All advertising materials mentioning features or use of this software
16 * must display the following acknowledgement:
17 * This product includes software developed by Christopher G. Demetriou
18 * for the NetBSD Project.
19 * 4. The name of the author may not be used to endorse or promote products
20 * derived from this software without specific prior written permission
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34/*
35 * PCI "universal" communications card driver configuration data (used to
36 * match/attach the cards).
37 */
38
39#include <sys/param.h>
40#include <sys/systm.h>
41#include <sys/device.h>
42
43#include <dev/pci/pcireg.h>
44#include <dev/pci/pcivar.h>
45#include <dev/pci/pucvar.h>
46#include <dev/pci/pcidevs.h>
47
48const struct puc_device_description puc_devs[] = {
49
50 { /* 6 Series KT */
51 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_6SERIES_KT, 0x0000, 0x0000 },
52 { 0xffff, 0xffff, 0x0000, 0x0000 },
53 {
54 { PUC_PORT_COM, 0x10, 0x0000 },
55 },
56 },
57 { /* 7 Series KT */
58 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_7SERIES_KT, 0x0000, 0x0000 },
59 { 0xffff, 0xffff, 0x0000, 0x0000 },
60 {
61 { PUC_PORT_COM, 0x10, 0x0000 },
62 },
63 },
64 { /* 8 Series KT */
65 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_8SERIES_KT, 0x0000, 0x0000 },
66 { 0xffff, 0xffff, 0x0000, 0x0000 },
67 {
68 { PUC_PORT_COM, 0x10, 0x0000 },
69 },
70 },
71 { /* 8 Series LP KT */
72 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_8SERIES_LP_KT, 0x0000, 0x0000 },
73 { 0xffff, 0xffff, 0x0000, 0x0000 },
74 {
75 { PUC_PORT_COM, 0x10, 0x0000 },
76 },
77 },
78 { /* 9 Series KT */
79 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_9SERIES_KT, 0x0000, 0x0000 },
80 { 0xffff, 0xffff, 0x0000, 0x0000 },
81 {
82 { PUC_PORT_COM, 0x10, 0x0000 },
83 },
84 },
85 { /* 9 Series LP KT */
86 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_9SERIES_LP_KT, 0x0000, 0x0000 },
87 { 0xffff, 0xffff, 0x0000, 0x0000 },
88 {
89 { PUC_PORT_COM, 0x10, 0x0000 },
90 },
91 },
92 { /* 100 Series KT */
93 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_100SERIES_KT, 0x0000, 0x0000 },
94 { 0xffff, 0xffff, 0x0000, 0x0000 },
95 {
96 { PUC_PORT_COM, 0x10, 0x0000 },
97 },
98 },
99 { /* 100 Series LP KT */
100 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_100SERIES_LP_KT, 0x0000, 0x0000 },
101 { 0xffff, 0xffff, 0x0000, 0x0000 },
102 {
103 { PUC_PORT_COM, 0x10, 0x0000 },
104 },
105 },
106 { /* 200 Series KT */
107 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_200SERIES_KT, 0x0000, 0x0000 },
108 { 0xffff, 0xffff, 0x0000, 0x0000 },
109 {
110 { PUC_PORT_COM, 0x10, 0x0000 },
111 },
112 },
113 { /* 300 Series KT */
114 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_300SERIES_KT, 0x0000, 0x0000 },
115 { 0xffff, 0xffff, 0x0000, 0x0000 },
116 {
117 { PUC_PORT_COM, 0x10, 0x0000 },
118 },
119 },
120 { /* 300 Series U KT */
121 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_300SERIES_U_KT, 0x0000, 0x0000 },
122 { 0xffff, 0xffff, 0x0000, 0x0000 },
123 {
124 { PUC_PORT_COM, 0x10, 0x0000 },
125 },
126 },
127 { /* 400 Series KT */
128 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_400SERIES_KT, 0x0000, 0x0000 },
129 { 0xffff, 0xffff, 0x0000, 0x0000 },
130 {
131 { PUC_PORT_COM, 0x10, 0x0000 },
132 },
133 },
134 { /* 400 Series LP KT */
135 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_400SERIES_LP_KT, 0x0000, 0x0000 },
136 { 0xffff, 0xffff, 0x0000, 0x0000 },
137 {
138 { PUC_PORT_COM, 0x10, 0x0000 },
139 },
140 },
141 { /* 400 Series V KT */
142 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_400SERIES_V_KT, 0x0000, 0x0000 },
143 { 0xffff, 0xffff, 0x0000, 0x0000 },
144 {
145 { PUC_PORT_COM, 0x10, 0x0000 },
146 },
147 },
148 { /* 495 Series LP KT */
149 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_495SERIES_LP_KT, 0x0000, 0x0000 },
150 { 0xffff, 0xffff, 0x0000, 0x0000 },
151 {
152 { PUC_PORT_COM, 0x10, 0x0000 },
153 },
154 },
155 { /* 500 Series KT */
156 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_500SERIES_KT, 0x0000, 0x0000 },
157 { 0xffff, 0xffff, 0x0000, 0x0000 },
158 {
159 { PUC_PORT_COM, 0x10, 0x0000 },
160 },
161 },
162 { /* 500 Series LP KT */
163 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_500SERIES_LP_KT, 0x0000, 0x0000 },
164 { 0xffff, 0xffff, 0x0000, 0x0000 },
165 {
166 { PUC_PORT_COM, 0x10, 0x0000 },
167 },
168 },
169 { /* 600 Series KT */
170 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_600SERIES_KT, 0x0000, 0x0000 },
171 { 0xffff, 0xffff, 0x0000, 0x0000 },
172 {
173 { PUC_PORT_COM, 0x10, 0x0000 },
174 },
175 },
176 { /* 600 Series LP KT */
177 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_600SERIES_LP_KT, 0x0000, 0x0000 },
178 { 0xffff, 0xffff, 0x0000, 0x0000 },
179 {
180 { PUC_PORT_COM, 0x10, 0x0000 },
181 },
182 },
183 { /* 700 Series KT */
184 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_700SERIES_KT, 0x0000, 0x0000 },
185 { 0xffff, 0xffff, 0x0000, 0x0000 },
186 {
187 { PUC_PORT_COM, 0x10, 0x0000 },
188 },
189 },
190 { /* MTL KT */
191 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_MTL_KT, 0x0000, 0x0000 },
192 { 0xffff, 0xffff, 0x0000, 0x0000 },
193 {
194 { PUC_PORT_COM, 0x10, 0x0000 },
195 },
196 },
197 { /* 82946GZ KT */
198 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82946GZ_KT, 0x0000, 0x0000 },
199 { 0xffff, 0xffff, 0x0000, 0x0000 },
200 {
201 { PUC_PORT_COM, 0x10, 0x0000 },
202 },
203 },
204 { /* 82Q965 KT */
205 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82Q965_KT, 0x0000, 0x0000 },
206 { 0xffff, 0xffff, 0x0000, 0x0000 },
207 {
208 { PUC_PORT_COM, 0x10, 0x0000 },
209 },
210 },
211 { /* 82G965 KT */
212 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82G965_KT, 0x0000, 0x0000 },
213 { 0xffff, 0xffff, 0x0000, 0x0000 },
214 {
215 { PUC_PORT_COM, 0x10, 0x0000 },
216 },
217 },
218 { /* 82Q35 KT */
219 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82Q35_KT, 0x0000, 0x0000 },
220 { 0xffff, 0xffff, 0x0000, 0x0000 },
221 {
222 { PUC_PORT_COM, 0x10, 0x0000 },
223 },
224 },
225 { /* 82G33 KT */
226 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82G33_KT, 0x0000, 0x0000 },
227 { 0xffff, 0xffff, 0x0000, 0x0000 },
228 {
229 { PUC_PORT_COM, 0x10, 0x0000 },
230 },
231 },
232 { /* 82Q33 KT */
233 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82Q33_KT, 0x0000, 0x0000 },
234 { 0xffff, 0xffff, 0x0000, 0x0000 },
235 {
236 { PUC_PORT_COM, 0x10, 0x0000 },
237 },
238 },
239 { /* 82X38 KT */
240 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82X38_KT, 0x0000, 0x0000 },
241 { 0xffff, 0xffff, 0x0000, 0x0000 },
242 {
243 { PUC_PORT_COM, 0x10, 0x0000 },
244 },
245 },
246 { /* GM965 KT */
247 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82GM965_KT, 0x0000, 0x0000 },
248 { 0xffff, 0xffff, 0x0000, 0x0000 },
249 {
250 { PUC_PORT_COM, 0x10, 0x0000 },
251 },
252 },
253 { /* GME965 KT */
254 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82GME965_KT, 0x0000, 0x0000 },
255 { 0xffff, 0xffff, 0x0000, 0x0000 },
256 {
257 { PUC_PORT_COM, 0x10, 0x0000 },
258 },
259 },
260 { /* GM45 KT */
261 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82GM45_KT, 0x0000, 0x0000 },
262 { 0xffff, 0xffff, 0x0000, 0x0000 },
263 {
264 { PUC_PORT_COM, 0x10, 0x0000 },
265 },
266 },
267 { /* Q45 KT */
268 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82Q45_KT, 0x0000, 0x0000 },
269 { 0xffff, 0xffff, 0x0000, 0x0000 },
270 {
271 { PUC_PORT_COM, 0x10, 0x0000 },
272 },
273 },
274 { /* 3400 KT */
275 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_3400_KT, 0x0000, 0x0000 },
276 { 0xffff, 0xffff, 0x0000, 0x0000 },
277 {
278 { PUC_PORT_COM, 0x10, 0x0000 },
279 },
280 },
281 { /* Intel EG20T */
282 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EG20T_SERIAL_1, 0x0000, 0x0000 },
283 { 0xffff, 0xffff, 0x0000, 0x0000 },
284 {
285 { PUC_PORT_COM, 0x10, 0x0000 },
286 },
287 },
288 { /* Intel EG20T */
289 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EG20T_SERIAL_2, 0x0000, 0x0000 },
290 { 0xffff, 0xffff, 0x0000, 0x0000 },
291 {
292 { PUC_PORT_COM, 0x10, 0x0000 },
293 },
294 },
295 { /* Intel EG20T */
296 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EG20T_SERIAL_3, 0x0000, 0x0000 },
297 { 0xffff, 0xffff, 0x0000, 0x0000 },
298 {
299 { PUC_PORT_COM, 0x10, 0x0000 },
300 },
301 },
302 { /* Intel EG20T */
303 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EG20T_SERIAL_4, 0x0000, 0x0000 },
304 { 0xffff, 0xffff, 0x0000, 0x0000 },
305 {
306 { PUC_PORT_COM, 0x10, 0x0000 },
307 },
308 },
309 { /* Atom S1200 UART */
310 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ATOM_S1200_UART, 0x0000, 0x0000 },
311 { 0xffff, 0xffff, 0x0000, 0x0000 },
312 {
313 { PUC_PORT_COM, 0x10, 0x0000 },
314 },
315 },
316 { /* Intel C3000 UART */
317 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_C3000_HSUART, 0x0000, 0x0000 },
318 { 0xffff, 0xffff, 0x0000, 0x0000 },
319 {
320 { PUC_PORT_COM, 0x10, 0x0000 },
321 },
322 },
323 /*
324 * XXX no entry because I have no data:
325 * XXX Dolphin Peripherals 4006 (single parallel)
326 */
327
328 /*
329 * Dolphin Peripherals 4014 (dual parallel port) card. PLX 9050, with
330 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
331 * into the subsystem fields, and claims that it's a
332 * network/misc (0x02/0x80) device.
333 */
334 { /* "Dolphin Peripherals 4014" */
335 { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9050, 0xd84d, 0x6810 },
336 { 0xffff, 0xffff, 0xffff, 0xffff },
337 {
338 { PUC_PORT_LPT, 0x20, 0x0000 },
339 { PUC_PORT_LPT, 0x24, 0x0000 },
340 },
341 },
342
343 /*
344 * XXX no entry because I have no data:
345 * XXX Dolphin Peripherals 4025 (single serial)
346 */
347
348 /*
349 * Dolphin Peripherals 4035 (dual serial port) card. PLX 9050, with
350 * a seemingly-lame EEPROM setup that puts the Dolphin IDs
351 * into the subsystem fields, and claims that it's a
352 * network/misc (0x02/0x80) device.
353 */
354 { /* "Dolphin Peripherals 4035" */
355 { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9050, 0xd84d, 0x6808 },
356 { 0xffff, 0xffff, 0xffff, 0xffff },
357 {
358 { PUC_PORT_COM, 0x18, 0x0000 },
359 { PUC_PORT_COM, 0x1c, 0x0000 },
360 },
361 },
362
363 /*
364 * XXX no entry because I have no data:
365 * XXX Dolphin Peripherals 4078 (dual serial and single parallel)
366 */
367
368 /*
369 * Decision PCCOM PCI series. PLX 9052 with 1 or 2 16554 UARTS
370 */
371
372 /* Decision Computer Inc PCCOM 2 Port RS232/422/485: 2S */
373 { /* "Decision Computer Inc PCCOM 2 Port RS232/422/485", */
374 { PCI_VENDOR_DCI, PCI_PRODUCT_DCI_APCI2, 0, 0 },
375 { 0xffff, 0xffff, 0, 0 },
376 {
377 { PUC_PORT_COM, 0x1c, 0x0000 },
378 { PUC_PORT_COM, 0x1c, 0x0008 },
379 },
380 },
381
382 /* Decision Computer Inc PCCOM 4 Port RS232/422/485: 4S */
383 { /* "Decision Computer Inc PCCOM 4 Port RS232/422/485", */
384 { PCI_VENDOR_DCI, PCI_PRODUCT_DCI_APCI4, 0, 0 },
385 { 0xffff, 0xffff, 0, 0 },
386 {
387 { PUC_PORT_COM, 0x1c, 0x0000 },
388 { PUC_PORT_COM, 0x1c, 0x0008 },
389 { PUC_PORT_COM, 0x1c, 0x0010 },
390 { PUC_PORT_COM, 0x1c, 0x0018 },
391 },
392 },
393
394 /* Decision Computer Inc PCCOM 8 Port RS232/422/485: 8S */
395 { /* "Decision Computer Inc PCCOM 8 Port RS232/422/485", */
396 { PCI_VENDOR_DCI, PCI_PRODUCT_DCI_APCI8, 0, 0 },
397 { 0xffff, 0xffff, 0, 0 },
398 {
399 { PUC_PORT_COM, 0x1c, 0x0000 },
400 { PUC_PORT_COM, 0x1c, 0x0008 },
401 { PUC_PORT_COM, 0x1c, 0x0010 },
402 { PUC_PORT_COM, 0x1c, 0x0018 },
403 { PUC_PORT_COM, 0x1c, 0x0020 },
404 { PUC_PORT_COM, 0x1c, 0x0028 },
405 { PUC_PORT_COM, 0x1c, 0x0030 },
406 { PUC_PORT_COM, 0x1c, 0x0038 },
407 },
408 },
409 /* IBM SurePOS 300 Series (481033H) serial ports */
410 { /* "IBM SurePOS 300 Series (481033H) serial ports", */
411 { PCI_VENDOR_IBM, PCI_PRODUCT_IBM_4810_SCC, 0, 0 },
412 { 0xffff, 0xffff, 0, 0 },
413 {
414 { PUC_PORT_COM, 0x10, 0x0000 }, /* Port C */
415 { PUC_PORT_COM, 0x18, 0x0000 }, /* Port D */
416 { PUC_PORT_COM, 0x14, 0x0000 }, /* Port E */
417 { PUC_PORT_COM, 0x1c, 0x0000 }, /* Port F */
418 },
419 },
420
421 /*
422 * SIIG Boards.
423 *
424 * SIIG provides documentation for their boards at:
425 * <URL:http://www.siig.com/driver.htm>
426 *
427 * Please excuse the weird ordering, it's the order they
428 * use in their documentation.
429 */
430
431 /*
432 * SIIG "10x" family boards.
433 */
434
435 /* SIIG Cyber Serial PCI 16C550 (10x family): 1S */
436 { /* "SIIG Cyber Serial PCI 16C550 (10x family)", */
437 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1000, 0, 0 },
438 { 0xffff, 0xffff, 0, 0 },
439 {
440 { PUC_PORT_COM, 0x18, 0x0000 },
441 },
442 },
443
444 /* SIIG Cyber Serial PCI 16C650 (10x family): 1S */
445 { /* "SIIG Cyber Serial PCI 16C650 (10x family)", */
446 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1001, 0, 0 },
447 { 0xffff, 0xffff, 0, 0 },
448 {
449 { PUC_PORT_COM, 0x18, 0x0000 },
450 },
451 },
452
453 /* SIIG Cyber Serial PCI 16C850 (10x family): 1S */
454 { /* "SIIG Cyber Serial PCI 16C850 (10x family)", */
455 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1002, 0, 0 },
456 { 0xffff, 0xffff, 0, 0 },
457 {
458 { PUC_PORT_COM, 0x18, 0x0000 },
459 },
460 },
461
462 /* SIIG Cyber I/O PCI 16C550 (10x family): 1S, 1P */
463 { /* "SIIG Cyber I/O PCI 16C550 (10x family)", */
464 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1010, 0, 0 },
465 { 0xffff, 0xffff, 0, 0 },
466 {
467 { PUC_PORT_COM, 0x18, 0x0000 },
468 { PUC_PORT_LPT, 0x1c, 0x0000 },
469 },
470 },
471
472 /* SIIG Cyber I/O PCI 16C650 (10x family): 1S, 1P */
473 { /* "SIIG Cyber I/O PCI 16C650 (10x family)", */
474 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1011, 0, 0 },
475 { 0xffff, 0xffff, 0, 0 },
476 {
477 { PUC_PORT_COM, 0x18, 0x0000 },
478 { PUC_PORT_LPT, 0x1c, 0x0000 },
479 },
480 },
481
482 /* SIIG Cyber I/O PCI 16C850 (10x family): 1S, 1P */
483 { /* "SIIG Cyber I/O PCI 16C850 (10x family)", */
484 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1012, 0, 0 },
485 { 0xffff, 0xffff, 0, 0 },
486 {
487 { PUC_PORT_COM, 0x18, 0x0000 },
488 { PUC_PORT_LPT, 0x1c, 0x0000 },
489 },
490 },
491
492 /* SIIG Cyber Parallel PCI (10x family): 1P */
493 { /* "SIIG Cyber Parallel PCI (10x family)", */
494 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1020, 0, 0 },
495 { 0xffff, 0xffff, 0, 0 },
496 {
497 { PUC_PORT_LPT, 0x18, 0x0000 },
498 },
499 },
500
501 /* SIIG Cyber Parallel Dual PCI (10x family): 2P */
502 { /* "SIIG Cyber Parallel Dual PCI (10x family)", */
503 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1021, 0, 0 },
504 { 0xffff, 0xffff, 0, 0 },
505 {
506 { PUC_PORT_LPT, 0x18, 0x0000 },
507 { PUC_PORT_LPT, 0x20, 0x0000 },
508 },
509 },
510
511 /* SIIG Cyber Serial Dual PCI 16C550 (10x family): 2S */
512 { /* "SIIG Cyber Serial Dual PCI 16C550 (10x family)", */
513 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1030, 0, 0 },
514 { 0xffff, 0xffff, 0, 0 },
515 {
516 { PUC_PORT_COM, 0x18, 0x0000 },
517 { PUC_PORT_COM, 0x1c, 0x0000 },
518 },
519 },
520
521 /* SIIG Cyber Serial Dual PCI 16C650 (10x family): 2S */
522 { /* "SIIG Cyber Serial Dual PCI 16C650 (10x family)", */
523 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1031, 0, 0 },
524 { 0xffff, 0xffff, 0, 0 },
525 {
526 { PUC_PORT_COM, 0x18, 0x0000 },
527 { PUC_PORT_COM, 0x1c, 0x0000 },
528 },
529 },
530
531 /* SIIG Cyber Serial Dual PCI 16C850 (10x family): 2S */
532 { /* "SIIG Cyber Serial Dual PCI 16C850 (10x family)", */
533 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1032, 0, 0 },
534 { 0xffff, 0xffff, 0, 0 },
535 {
536 { PUC_PORT_COM, 0x18, 0x0000 },
537 { PUC_PORT_COM, 0x1c, 0x0000 },
538 },
539 },
540
541 /* SIIG Cyber 2S1P PCI 16C550 (10x family): 2S, 1P */
542 { /* "SIIG Cyber 2S1P PCI 16C550 (10x family)", */
543 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1034, 0, 0 },
544 { 0xffff, 0xffff, 0, 0 },
545 {
546 { PUC_PORT_COM, 0x18, 0x0000 },
547 { PUC_PORT_COM, 0x1c, 0x0000 },
548 { PUC_PORT_LPT, 0x20, 0x0000 },
549 },
550 },
551
552 /* SIIG Cyber 2S1P PCI 16C650 (10x family): 2S, 1P */
553 { /* "SIIG Cyber 2S1P PCI 16C650 (10x family)", */
554 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1035, 0, 0 },
555 { 0xffff, 0xffff, 0, 0 },
556 {
557 { PUC_PORT_COM, 0x18, 0x0000 },
558 { PUC_PORT_COM, 0x1c, 0x0000 },
559 { PUC_PORT_LPT, 0x20, 0x0000 },
560 },
561 },
562
563 /* SIIG Cyber 2S1P PCI 16C850 (10x family): 2S, 1P */
564 { /* "SIIG Cyber 2S1P PCI 16C850 (10x family)", */
565 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1036, 0, 0 },
566 { 0xffff, 0xffff, 0, 0 },
567 {
568 { PUC_PORT_COM, 0x18, 0x0000 },
569 { PUC_PORT_COM, 0x1c, 0x0000 },
570 { PUC_PORT_LPT, 0x20, 0x0000 },
571 },
572 },
573
574 /* SIIG Cyber 4S PCI 16C550 (10x family): 4S */
575 { /* "SIIG Cyber 4S PCI 16C550 (10x family)", */
576 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1050, 0, 0 },
577 { 0xffff, 0xffff, 0, 0 },
578 {
579 { PUC_PORT_COM, 0x18, 0x0000 },
580 { PUC_PORT_COM, 0x1c, 0x0000 },
581 { PUC_PORT_COM, 0x20, 0x0000 },
582 { PUC_PORT_COM, 0x24, 0x0000 },
583 },
584 },
585
586 /* SIIG Cyber 4S PCI 16C650 (10x family): 4S */
587 { /* "SIIG Cyber 4S PCI 16C650 (10x family)", */
588 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1051, 0, 0 },
589 { 0xffff, 0xffff, 0, 0 },
590 {
591 { PUC_PORT_COM, 0x18, 0x0000 },
592 { PUC_PORT_COM, 0x1c, 0x0000 },
593 { PUC_PORT_COM, 0x20, 0x0000 },
594 { PUC_PORT_COM, 0x24, 0x0000 },
595 },
596 },
597
598 /* SIIG Cyber 4S PCI 16C850 (10x family): 4S */
599 { /* "SIIG Cyber 4S PCI 16C850 (10x family)", */
600 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_1052, 0, 0 },
601 { 0xffff, 0xffff, 0, 0 },
602 {
603 { PUC_PORT_COM, 0x18, 0x0000 },
604 { PUC_PORT_COM, 0x1c, 0x0000 },
605 { PUC_PORT_COM, 0x20, 0x0000 },
606 { PUC_PORT_COM, 0x24, 0x0000 },
607 },
608 },
609
610 /*
611 * SIIG "20x" family boards.
612 */
613
614 /* SIIG Cyber Parallel PCI (20x family): 1P */
615 { /* "SIIG Cyber Parallel PCI (20x family)", */
616 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2020, 0, 0 },
617 { 0xffff, 0xffff, 0, 0 },
618 {
619 { PUC_PORT_LPT, 0x10, 0x0000 },
620 },
621 },
622
623 /* SIIG Cyber Parallel Dual PCI (20x family): 2P */
624 { /* "SIIG Cyber Parallel Dual PCI (20x family)", */
625 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2021, 0, 0 },
626 { 0xffff, 0xffff, 0, 0 },
627 {
628 { PUC_PORT_LPT, 0x10, 0x0000 },
629 { PUC_PORT_LPT, 0x18, 0x0000 },
630 },
631 },
632
633 /* SIIG Cyber 2P1S PCI 16C550 (20x family): 1S, 2P */
634 { /* "SIIG Cyber 2P1S PCI 16C550 (20x family)", */
635 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2040, 0, 0 },
636 { 0xffff, 0xffff, 0, 0 },
637 {
638 { PUC_PORT_COM, 0x10, 0x0000 },
639 { PUC_PORT_LPT, 0x14, 0x0000 },
640 { PUC_PORT_LPT, 0x1c, 0x0000 },
641 },
642 },
643
644 /* SIIG Cyber 2P1S PCI 16C650 (20x family): 1S, 2P */
645 { /* "SIIG Cyber 2P1S PCI 16C650 (20x family)", */
646 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2041, 0, 0 },
647 { 0xffff, 0xffff, 0, 0 },
648 {
649 { PUC_PORT_COM, 0x10, 0x0000 },
650 { PUC_PORT_LPT, 0x14, 0x0000 },
651 { PUC_PORT_LPT, 0x1c, 0x0000 },
652 },
653 },
654
655 /* SIIG Cyber 2P1S PCI 16C850 (20x family): 1S, 2P */
656 { /* "SIIG Cyber 2P1S PCI 16C850 (20x family)", */
657 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2042, 0, 0 },
658 { 0xffff, 0xffff, 0, 0 },
659 {
660 { PUC_PORT_COM, 0x10, 0x0000 },
661 { PUC_PORT_LPT, 0x14, 0x0000 },
662 { PUC_PORT_LPT, 0x1c, 0x0000 },
663 },
664 },
665
666 /* SIIG Cyber Serial PCI 16C550 (20x family): 1S */
667 { /* "SIIG Cyber Serial PCI 16C550 (20x family)", */
668 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2000, 0, 0 },
669 { 0xffff, 0xffff, 0, 0 },
670 {
671 { PUC_PORT_COM, 0x10, 0x0000 },
672 },
673 },
674
675 /* SIIG Cyber Serial PCI 16C650 (20x family): 1S */
676 { /* "SIIG Cyber Serial PCI 16C650 (20x family)", */
677 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2001, 0, 0 },
678 { 0xffff, 0xffff, 0, 0 },
679 {
680 { PUC_PORT_COM, 0x10, 0x0000 },
681 },
682 },
683
684 /* SIIG Cyber Serial PCI 16C850 (20x family): 1S */
685 { /* "SIIG Cyber Serial PCI 16C850 (20x family)", */
686 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2002, 0, 0 },
687 { 0xffff, 0xffff, 0, 0 },
688 {
689 { PUC_PORT_COM, 0x10, 0x0000 },
690 },
691 },
692
693 /* SIIG Cyber I/O PCI 16C550 (20x family): 1S, 1P */
694 { /* "SIIG Cyber I/O PCI 16C550 (20x family)", */
695 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2010, 0, 0 },
696 { 0xffff, 0xffff, 0, 0 },
697 {
698 { PUC_PORT_COM, 0x10, 0x0000 },
699 { PUC_PORT_LPT, 0x14, 0x0000 },
700 },
701 },
702
703 /* SIIG Cyber I/O PCI 16C650 (20x family): 1S, 1P */
704 { /* "SIIG Cyber I/O PCI 16C650 (20x family)", */
705 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2011, 0, 0 },
706 { 0xffff, 0xffff, 0, 0 },
707 {
708 { PUC_PORT_COM, 0x10, 0x0000 },
709 { PUC_PORT_LPT, 0x14, 0x0000 },
710 },
711 },
712
713 /* SIIG Cyber I/O PCI 16C850 (20x family): 1S, 1P */
714 { /* "SIIG Cyber I/O PCI 16C850 (20x family)", */
715 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2012, 0, 0 },
716 { 0xffff, 0xffff, 0, 0 },
717 {
718 { PUC_PORT_COM, 0x10, 0x0000 },
719 { PUC_PORT_LPT, 0x14, 0x0000 },
720 },
721 },
722
723 /* SIIG Cyber Serial Dual PCI 16C550 (20x family): 2S */
724 { /* "SIIG Cyber Serial Dual PCI 16C550 (20x family)", */
725 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2030, 0, 0 },
726 { 0xffff, 0xffff, 0, 0 },
727 {
728 { PUC_PORT_COM, 0x10, 0x0000 },
729 { PUC_PORT_COM, 0x14, 0x0000 },
730 },
731 },
732
733 /* SIIG Cyber Serial Dual PCI 16C650 (20x family): 2S */
734 { /* "SIIG Cyber Serial Dual PCI 16C650 (20x family)", */
735 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2031, 0, 0 },
736 { 0xffff, 0xffff, 0, 0 },
737 {
738 { PUC_PORT_COM, 0x10, 0x0000 },
739 { PUC_PORT_COM, 0x14, 0x0000 },
740 },
741 },
742
743 /* SIIG Cyber Serial Dual PCI 16C850 (20x family): 2S */
744 { /* "SIIG Cyber Serial Dual PCI 16C850 (20x family)", */
745 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2032, 0, 0 },
746 { 0xffff, 0xffff, 0, 0 },
747 {
748 { PUC_PORT_COM, 0x10, 0x0000 },
749 { PUC_PORT_COM, 0x14, 0x0000 },
750 },
751 },
752
753 /* SIIG Cyber 2S1P PCI 16C550 (20x family): 2S, 1P */
754 { /* "SIIG Cyber 2S1P PCI 16C550 (20x family)", */
755 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2060, 0, 0 },
756 { 0xffff, 0xffff, 0, 0 },
757 {
758 { PUC_PORT_COM, 0x10, 0x0000 },
759 { PUC_PORT_COM, 0x14, 0x0000 },
760 { PUC_PORT_LPT, 0x18, 0x0000 },
761 },
762 },
763
764 /* SIIG Cyber 2S1P PCI 16C650 (20x family): 2S, 1P */
765 { /* "SIIG Cyber 2S1P PCI 16C650 (20x family)", */
766 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2061, 0, 0 },
767 { 0xffff, 0xffff, 0, 0 },
768 {
769 { PUC_PORT_COM, 0x10, 0x0000 },
770 { PUC_PORT_COM, 0x14, 0x0000 },
771 { PUC_PORT_LPT, 0x18, 0x0000 },
772 },
773 },
774
775 /* SIIG Cyber 2S1P PCI 16C850 (20x family): 2S, 1P */
776 { /* "SIIG Cyber 2S1P PCI 16C850 (20x family)", */
777 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2062, 0, 0 },
778 { 0xffff, 0xffff, 0, 0 },
779 {
780 { PUC_PORT_COM, 0x10, 0x0000 },
781 { PUC_PORT_COM, 0x14, 0x0000 },
782 { PUC_PORT_LPT, 0x18, 0x0000 },
783 },
784 },
785
786 /* SIIG Cyber 4S PCI 16C550 (20x family): 4S */
787 { /* "SIIG Cyber 4S PCI 16C550 (20x family)", */
788 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2050, 0, 0 },
789 { 0xffff, 0xffff, 0, 0 },
790 {
791 { PUC_PORT_COM, 0x10, 0x0000 },
792 { PUC_PORT_COM, 0x14, 0x0000 },
793 { PUC_PORT_COM, 0x18, 0x0000 },
794 { PUC_PORT_COM, 0x1c, 0x0000 },
795 },
796 },
797
798 /* SIIG Cyber 4S PCI 16C650 (20x family): 4S */
799 { /* "SIIG Cyber 4S PCI 16C650 (20x family)", */
800 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2051, 0, 0 },
801 { 0xffff, 0xffff, 0, 0 },
802 {
803 { PUC_PORT_COM, 0x10, 0x0000 },
804 { PUC_PORT_COM, 0x14, 0x0000 },
805 { PUC_PORT_COM, 0x18, 0x0000 },
806 { PUC_PORT_COM, 0x1c, 0x0000 },
807 },
808 },
809
810 /* SIIG Cyber 4S PCI 16C850 (20x family): 4S */
811 { /* "SIIG Cyber 4S PCI 16C850 (20x family)", */
812 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2052, 0, 0 },
813 { 0xffff, 0xffff, 0, 0 },
814 {
815 { PUC_PORT_COM, 0x10, 0x0000 },
816 { PUC_PORT_COM, 0x14, 0x0000 },
817 { PUC_PORT_COM, 0x18, 0x0000 },
818 { PUC_PORT_COM, 0x1c, 0x0000 },
819 },
820 },
821
822 /* SIIG Cyber 8S PCI 16C850 (20x family): 8S */
823 { /* "SIIG Cyber 8S PCI 16C850 (20x family)", */
824 { PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2081, 0, 0 },
825 { 0xffff, 0xffff, 0, 0 },
826 {
827 { PUC_PORT_COM, 0x10, 0x0000 },
828 { PUC_PORT_COM, 0x14, 0x0000 },
829 { PUC_PORT_COM, 0x18, 0x0000 },
830 { PUC_PORT_COM, 0x1c, 0x0000 },
831 { PUC_PORT_COM, 0x20, 0x0000 },
832 { PUC_PORT_COM, 0x20, 0x0008 },
833 { PUC_PORT_COM, 0x20, 0x0010 },
834 { PUC_PORT_COM, 0x20, 0x0018 },
835 },
836 },
837
838 /* SIIG Cyber 8S PCI 16C850 (20x family): 8S */
839 { /* "SIIG Cyber 8S PCI 16C850 (20x family)", */
840 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,
841 PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2082 },
842 { 0xffff, 0xffff, 0xffff, 0xffff },
843 {
844 { PUC_PORT_COM_MUL10, 0x10, 0x0000 },
845 { PUC_PORT_COM_MUL10, 0x10, 0x0008 },
846 { PUC_PORT_COM_MUL10, 0x10, 0x0010 },
847 { PUC_PORT_COM_MUL10, 0x10, 0x0018 },
848 },
849 },
850
851 /* OX16PCI954, first part of Serial Technologies Expander PCI-232-108 */
852 { /* "OX16PCI954" */
853 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,
854 PCI_VENDOR_OXFORD2, 0 },
855 { 0xffff, 0xffff, 0xffff, 0xffff },
856 {
857 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
858 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
859 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
860 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
861 },
862 },
863
864 /* Exsys EX-41092 (sold as SIIG JJ-E10011-S3) */
865 { /* "Exsys EX-41092", */
866 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_EXSYS_EX41092,0x0000,0x0000},
867 { 0xffff, 0xffff, 0x0000,0x0000},
868 {
869 { PUC_PORT_COM_MUL10, 0x10, 0x0000 },
870 },
871 },
872
873 /* Exsys EX-41098, second part of Serial Technologies Expander PCI-232-108 */
874 { /* "Exsys EX-41098", */
875 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_EXSYS_EX41098,
876 PCI_VENDOR_OXFORD2, 0 },
877 { 0xffff, 0xffff, 0xffff, 0xffff },
878 {
879 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
880 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
881 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
882 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
883 },
884 },
885
886 /* Exsys EX-41098, second part of SIIG Cyber 8S PCI Card */
887 { /* "Exsys EX-41098", */
888 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_EXSYS_EX41098,
889 PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2082 },
890 { 0xffff, 0xffff, 0xffff, 0xffff },
891 {
892 { PUC_PORT_COM_MUL10, 0x10, 0x0000 },
893 { PUC_PORT_COM_MUL10, 0x10, 0x0008 },
894 { PUC_PORT_COM_MUL10, 0x10, 0x0010 },
895 { PUC_PORT_COM_MUL10, 0x10, 0x0018 },
896 },
897 },
898
899 /*
900 * VScom PCI-400S, based on PLX 9050 Chip, 16k buffer
901 */
902 { /* "VScom PCI-400S", */
903 { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_1077, 0x10b5, 0x1077 },
904 { 0xffff, 0xffff, 0xffff, 0xffff },
905 {
906 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
907 { PUC_PORT_COM_MUL8, 0x18, 0x0008 },
908 { PUC_PORT_COM_MUL8, 0x18, 0x0010 },
909 { PUC_PORT_COM_MUL8, 0x18, 0x0018 },
910 },
911 },
912
913 /*
914 * VScom PCI-800, as sold on http://www.swann.com.au/isp/titan.html.
915 * Some PLX chip. Note: This board has a software selectable(?)
916 * clock multiplier which this driver doesn't support, so you'll
917 * have to use an appropriately scaled baud rate when talking to
918 * the card.
919 */
920 { /* "VScom PCI-800", */
921 { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_1076, 0x10b5, 0x1076 },
922 { 0xffff, 0xffff, 0xffff, 0xffff },
923 {
924 { PUC_PORT_COM, 0x18, 0x0000 },
925 { PUC_PORT_COM, 0x18, 0x0008 },
926 { PUC_PORT_COM, 0x18, 0x0010 },
927 { PUC_PORT_COM, 0x18, 0x0018 },
928 { PUC_PORT_COM, 0x18, 0x0020 },
929 { PUC_PORT_COM, 0x18, 0x0028 },
930 { PUC_PORT_COM, 0x18, 0x0030 },
931 { PUC_PORT_COM, 0x18, 0x0038 },
932 },
933 },
934
935 /*
936 * VScom PCI 011H, 1 lpt.
937 */
938 { /* "VScom PCI-011H", */
939 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_VSCOM_PCI011H, 0, 0 },
940 { 0xffff, 0xffff, 0, 0 },
941 {
942 { PUC_PORT_LPT, 0x10, 0x0000 },
943 },
944 },
945
946 /*
947 * VScom PCI x10H, 1 lpt.
948 * is the lpt part of VScom 110H, 210H, 410H
949 */
950 { /* "VScom PCI-x10H", */
951 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCIX10H, 0, 0 },
952 { 0xffff, 0xffff, 0, 0 },
953 {
954 { PUC_PORT_LPT, 0x10, 0x0000 },
955 },
956 },
957
958 /*
959 * VScom PCI 100H, little sister of 800H, 1 com.
960 * also com part of VScom 110H
961 * The one I have defaults to a frequency of 14.7456 MHz which is
962 * jumper J1 set to 2-3.
963 */
964 { /* "VScom PCI-100H", */
965 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI100H, 0, 0 },
966 { 0xffff, 0xffff, 0, 0 },
967 {
968 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
969 },
970 },
971
972 /*
973 * VScom PCI 200H, little sister of 800H, 2 com.
974 * also com part of VScom 210H
975 * The one I have defaults to a frequency of 14.7456 MHz which is
976 * jumper J1 set to 2-3.
977 */
978
979 { /* "VScom PCI-200H", */
980 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI200H, 0, 0 },
981 { 0xffff, 0xffff, 0, 0 },
982 {
983 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
984 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
985 },
986 },
987
988 /*
989 * VScom PCI 400H and 800H. Uses 4/8 16950 UART, behind a PCI chips
990 * that offers 4 com port on PCI device 0 (both 400H and 800H)
991 * and 4 on PCI device 1 (800H only). PCI device 0 has
992 * device ID 3 and PCI device 1 device ID 4. Uses a 14.7456 MHz crystal
993 * instead of the standard 1.8432MHz.
994 * There's a version with a jumper for selecting the crystal frequency,
995 * defaults to 8x as used here. The jumperless version uses 8x, too.
996 */
997 { /* "VScom PCI-400H/800H", */
998 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI800H_0, 0, 0 },
999 { 0xffff, 0xffff, 0, 0 },
1000 {
1001 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1002 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1003 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
1004 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
1005 },
1006 },
1007 { /* "VScom PCI-400H/800H", */
1008 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI800H_1, 0, 0 },
1009 { 0xffff, 0xffff, 0, 0 },
1010 {
1011 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1012 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1013 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
1014 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
1015 },
1016 },
1017
1018 /*
1019 * VScom PCI 200HV2, is 200H Version 2.
1020 * Sells as 200H
1021 */
1022 { /* "VScom PCI-200HV2", */
1023 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI200HV2, 0, 0 },
1024 { 0xffff, 0xffff, 0, 0 },
1025 {
1026 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1027 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1028 },
1029 },
1030
1031 /*
1032 * VScom PCI 010L
1033 * one lpt
1034 * untested
1035 */
1036 { /* "VScom PCI-010L", */
1037 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI010L, 0, 0 },
1038 { 0xffff, 0xffff, 0, 0 },
1039 {
1040 { PUC_PORT_LPT, 0x1c, 0x0000 },
1041 },
1042 },
1043
1044 /*
1045 * VScom PCI 100L
1046 * one com
1047 * The one I have defaults to a frequency of 14.7456 MHz which is
1048 * jumper J1 set to 2-3.
1049 */
1050 { /* "VScom PCI-100L", */
1051 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI100L, 0, 0 },
1052 { 0xffff, 0xffff, 0, 0 },
1053 {
1054 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1055 },
1056 },
1057
1058 /*
1059 * VScom PCI 110L
1060 * one com, one lpt
1061 * untested
1062 */
1063 { /* "VScom PCI-110L", */
1064 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI110L, 0, 0 },
1065 { 0xffff, 0xffff, 0, 0 },
1066 {
1067 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1068 { PUC_PORT_LPT, 0x1c, 0x0000 },
1069 },
1070 },
1071
1072 /*
1073 * VScom PCI-200L has 2 x 16550 UARTS.
1074 * The board has a jumper which allows you to select a clock speed
1075 * of either 14.7456MHz or 1.8432MHz. By default it runs at
1076 * the fast speed.
1077 */
1078 { /* "VScom PCI-200L with 2 x 16550 UARTS" */
1079 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI200L, 0, 0 },
1080 { 0xffff, 0xffff, 0, 0 },
1081 {
1082 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1083 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1084 },
1085 },
1086
1087 /*
1088 * VScom PCI-210L
1089 * Has a jumper for frequency selection, defaults to 8x as used here
1090 * two com, one lpt
1091 */
1092 { /* "VScom PCI-210L" */
1093 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI210L, 0, 0 },
1094 { 0xffff, 0xffff, 0, 0 },
1095 {
1096 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1097 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1098 { PUC_PORT_LPT, 0x1c, 0x0000 },
1099 },
1100 },
1101
1102 /*
1103 * VScom PCI 400L
1104 * Has a jumper for frequency selection, defaults to 8x as used here
1105 * This is equal to J1 in pos 2-3
1106 * VendorID mismatch with docs, should be 14d2 (oxford), is 10d2 (molex)
1107 */
1108 { /* "VScom PCI-400L", */
1109 { PCI_VENDOR_MOLEX, PCI_PRODUCT_MOLEX_VSCOM_PCI400L, 0, 0 },
1110 { 0xffff, 0xffff, 0, 0 },
1111 {
1112 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1113 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1114 { PUC_PORT_COM_MUL8, 0x20, 0x0000 },
1115 { PUC_PORT_COM_MUL8, 0x20, 0x0008 },
1116 },
1117 },
1118
1119 /*
1120 * VScom PCI 800L
1121 * Has a jumper for frequency selection, defaults to 8x as used here
1122 */
1123 { /* "VScom PCI-800L", */
1124 { PCI_VENDOR_OXFORD, PCI_PRODUCT_OXFORD_VSCOM_PCI800L, 0, 0 },
1125 { 0xffff, 0xffff, 0, 0 },
1126 {
1127 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1128 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1129 { PUC_PORT_COM_MUL8, 0x20, 0x0000 },
1130 { PUC_PORT_COM_MUL8, 0x20, 0x0008 },
1131 { PUC_PORT_COM_MUL8, 0x20, 0x0010 },
1132 { PUC_PORT_COM_MUL8, 0x20, 0x0018 },
1133 { PUC_PORT_COM_MUL8, 0x20, 0x0020 },
1134 { PUC_PORT_COM_MUL8, 0x20, 0x0028 },
1135 },
1136 },
1137
1138 /*
1139 * Exsys EX-41098
1140 */
1141 { /* "Exsys EX-41098", */
1142 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_EXSYS_EX41098, 0, 0 },
1143 { 0xffff, 0xffff, 0, 0 },
1144 {
1145 { PUC_PORT_COM, 0x10, 0x0000 },
1146 { PUC_PORT_COM, 0x10, 0x0008 },
1147 { PUC_PORT_COM, 0x10, 0x0010 },
1148 { PUC_PORT_COM, 0x10, 0x0018 },
1149 },
1150 },
1151
1152 /*
1153 * Boards with an Oxford Semiconductor chip.
1154 *
1155 * Oxford Semiconductor provides documentation for their chip at:
1156 * <URL:http://www.plxtech.com/products/uart/>
1157 *
1158 * As sold by Kouwell <URL:http://www.kouwell.com/>.
1159 * I/O Flex PCI I/O Card Model-223 with 4 serial and 1 parallel ports.
1160 */
1161
1162 /* Exsys EX-1372 (uses Oxford OX16PCI952 and a 8x clock) */
1163 { /* "Oxford Semiconductor OX16PCI952 UARTs", */
1164 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI952,
1165 PCI_VENDOR_OXFORD2, 0x0001 },
1166 { 0xffff, 0xffff, 0xffff, 0xffff },
1167 {
1168 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1169 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1170 },
1171 },
1172
1173 /* Oxford Semiconductor OX16PCI952 PCI `950 UARTs - 128 byte FIFOs */
1174 { /* "Oxford Semiconductor OX16PCI952 UARTs", */
1175 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI952, 0, 0 },
1176 { 0xffff, 0xffff, 0, 0 },
1177 {
1178 { PUC_PORT_COM, 0x10, 0x0000 },
1179 { PUC_PORT_COM, 0x14, 0x0000 },
1180 },
1181 },
1182
1183 /* Oxford Semiconductor OX16PCI952 PCI Parallel port */
1184 { /* "Oxford Semiconductor OX16PCI952 Parallel port", */
1185 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI952P, 0, 0 },
1186 { 0xffff, 0xffff, 0, 0 },
1187 {
1188 { PUC_PORT_LPT, 0x10, 0x0000 },
1189 },
1190 },
1191
1192 /* Oxford Semiconductor OXPCIE952 PCIE Parallel port */
1193 { /* "Oxford Semiconductor OXPCIE952 PCIE Parallel port", */
1194 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXPCIE952, 0, 0 },
1195 { 0xffff, 0xffff, 0, 0 },
1196 {
1197 { PUC_PORT_LPT, 0x10, 0x0000 },
1198 },
1199 },
1200
1201 /* SIIG 2050 (uses Oxford 16PCI954 and a 10x clock) */
1202 { /* "Oxford Semiconductor OX16PCI954 UARTs", */
1203 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,
1204 PCI_VENDOR_SIIG, PCI_PRODUCT_SIIG_2050 },
1205 { 0xffff, 0xffff, 0xffff, 0xffff },
1206 {
1207 { PUC_PORT_COM_MUL10, 0x10, 0x0000 },
1208 { PUC_PORT_COM_MUL10, 0x10, 0x0008 },
1209 { PUC_PORT_COM_MUL10, 0x10, 0x0010 },
1210 { PUC_PORT_COM_MUL10, 0x10, 0x0018 },
1211 },
1212 },
1213
1214 /* I-O DATA RSA-PCI2 (uses Oxford 16PCI954 and a 8x clock) */
1215 { /* "Oxford Semiconductor OX16PCI954 UARTs", */
1216 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954,
1217 PCI_VENDOR_IODATA, 0xc070 },
1218 { 0xffff, 0xffff, 0xffff, 0xffff },
1219 {
1220 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1221 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1222 },
1223 },
1224
1225 /* Oxford Semiconductor OX16PCI954 PCI UARTs */
1226 { /* "Oxford Semiconductor OX16PCI954 UARTs", */
1227 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954, 0, 0 },
1228 { 0xffff, 0xffff, 0, 0 },
1229 {
1230 { PUC_PORT_COM, 0x10, 0x0000 },
1231 { PUC_PORT_COM, 0x10, 0x0008 },
1232 { PUC_PORT_COM, 0x10, 0x0010 },
1233 { PUC_PORT_COM, 0x10, 0x0018 },
1234 },
1235 },
1236
1237 /* Commell MP-954GPS, GPS and 2 COM */
1238 { /* "Oxford Semiconductor OX16mPCI954 UARTs", */
1239 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXMPCI954, 0, 0 },
1240 { 0xffff, 0xffff, 0, 0 },
1241 {
1242 { PUC_PORT_COM_MUL4, 0x10, 0x0000 },
1243 { PUC_PORT_COM_MUL4, 0x10, 0x0008 },
1244 { PUC_PORT_COM_MUL4, 0x10, 0x0010 },
1245 },
1246 },
1247
1248 /* Oxford Semiconductor OX16PCI954K PCI UARTs */
1249 { /* "Oxford Semiconductor OX16PCI954K UARTs", */
1250 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954K, 0, 0 },
1251 { 0xffff, 0xffff, 0, 0 },
1252 {
1253 { PUC_PORT_COM, 0x10, 0x0000 },
1254 { PUC_PORT_COM, 0x14, 0x0000 },
1255 { PUC_PORT_COM, 0x18, 0x0000 },
1256 { PUC_PORT_COM, 0x1c, 0x0000 },
1257 },
1258 },
1259
1260 /* Oxford Semiconductor OX16PCI954 PCI Parallel port */
1261 { /* "Oxford Semiconductor OX16PCI954 Parallel port", */
1262 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954P, 0, 0 },
1263 { 0xffff, 0xffff, 0, 0 },
1264 {
1265 { PUC_PORT_LPT, 0x10, 0x0000 },
1266 },
1267 },
1268
1269 /* Oxford Semiconductor PCIE `950 UARTs - 128 byte FIFOs */
1270 { /* "Oxford Semiconductor PCIE UARTs", */
1271 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXPCIE952S, 0, 0 },
1272 { 0xffff, 0xffff, 0, 0 },
1273 {
1274 { PUC_PORT_COM, 0x10, 0x0000 },
1275 },
1276 },
1277
1278 /*
1279 * Brainboxes BB16PCI958.
1280 * Apparently based on an Oxford Semiconductor OX16PCI958 chip.
1281 */
1282 { /* "Brainboxes BB16PCI958 UARTs", */
1283 { PCI_VENDOR_BRAINBOXES, PCI_PRODUCT_BRAINBOXES_IS200_BB16PCI958,
1284 0, 0 },
1285 { 0xffff, 0xffff, 0, 0 },
1286 {
1287 { PUC_PORT_COM, 0x18, 0x0000 },
1288 { PUC_PORT_COM, 0x18, 0x0008 },
1289 },
1290 },
1291
1292 /*
1293 * NEC PK-UG-X001 K56flex PCI Modem card.
1294 * NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using.
1295 */
1296 { /* "NEC PK-UG-X001 K56flex PCI Modem", */
1297 { PCI_VENDOR_NEC, PCI_PRODUCT_NEC_MARTH, 0x1033, 0x8014 },
1298 { 0xffff, 0xffff, 0xffff, 0xffff },
1299 {
1300 { PUC_PORT_COM, 0x10, 0x0000 },
1301 },
1302 },
1303
1304 /* NEC PK-UG-X008 */
1305 { /* "NEC PK-UG-X008", */
1306 { PCI_VENDOR_NEC, PCI_PRODUCT_NEC_PKUG, 0x1033, 0x8012 },
1307 { 0xffff, 0xffff, 0xffff, 0xffff },
1308 {
1309 { PUC_PORT_COM, 0x10, 0x0000 },
1310 },
1311 },
1312
1313 /* Lava Computers 2SP-PCI (0x8000-0x8003) */
1314 { /* "Lava Computers 2SP-PCI parallel port", */
1315 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_TWOSP_1P, 0, 0 },
1316 { 0xffff, 0xfffc, 0, 0 },
1317 {
1318 { PUC_PORT_LPT, 0x10, 0x0000 },
1319 },
1320 },
1321
1322 /* Lava Computers 2SP-PCI and Quattro-PCI serial ports */
1323 { /* "Lava Computers dual serial port", */
1324 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_TWOSP_2S, 0, 0 },
1325 { 0xffff, 0xfffc, 0, 0 },
1326 {
1327 { PUC_PORT_COM, 0x10, 0x0000 },
1328 { PUC_PORT_COM, 0x14, 0x0000 },
1329 },
1330 },
1331
1332 /*
1333 * Lava Computers Quattro-PCI serial ports.
1334 * A second version of the Quattro-PCI with different PCI ids.
1335 */
1336 { /* "Lava Computers Quattro-PCI 4-port serial", */
1337 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_QUATTRO_AB2, 0, 0 },
1338 { 0xffff, 0xfffe, 0, 0 },
1339 {
1340 { PUC_PORT_COM, 0x10, 0x0000 },
1341 { PUC_PORT_COM, 0x14, 0x0000 },
1342 },
1343 },
1344
1345 /*
1346 * Lava Computers LavaPort-Dual and LavaPort-Quad 4*clock PCI
1347 * serial ports.
1348 */
1349 { /* "Lava Computers high-speed port", */
1350 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_LAVAPORT_0, 0, 0 },
1351 { 0xffff, 0xfffc, 0, 0 },
1352 {
1353 { PUC_PORT_COM_MUL4, 0x10, 0x0000 },
1354 { PUC_PORT_COM_MUL4, 0x14, 0x0000 },
1355 },
1356 },
1357
1358 /*
1359 * Lava Computers LavaPort-single serial port.
1360 */
1361 { /* "Lava Computers high-speed port", */
1362 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_LAVAPORT_2, 0, 0 },
1363 { 0xffff, 0xfffc, 0, 0 },
1364 {
1365 { PUC_PORT_COM_MUL4, 0x10, 0x0000 },
1366 },
1367 },
1368
1369 /* Lava Computers LavaPort-650 */
1370 { /* "Lava Computers high-speed port", */
1371 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_650, 0, 0 },
1372 { 0xffff, 0xfffc, 0, 0 },
1373 {
1374 { PUC_PORT_COM_MUL4, 0x10, 0x0000 },
1375 },
1376 },
1377
1378 /* Koutech IOFLEX-2S PCI Dual Port Serial, port 1 */
1379 { /* "Koutech IOFLEX-2S PCI Dual Port Serial, port 1", */
1380 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_IOFLEX_2S_0, 0, 0 },
1381 { 0xffff, 0xfffc, 0, 0 },
1382 {
1383 { PUC_PORT_COM, 0x10, 0x0000 },
1384 },
1385 },
1386
1387 /* Koutech IOFLEX-2S PCI Dual Port Serial, port 2 */
1388 { /* "Koutech IOFLEX-2S PCI Dual Port Serial, port 2", */
1389 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_IOFLEX_2S_1, 0, 0 },
1390 { 0xffff, 0xfffc, 0, 0 },
1391 {
1392 { PUC_PORT_COM, 0x10, 0x0000 },
1393 },
1394 },
1395
1396 /* Lava Computers Octopus-550 serial ports */
1397 { /* "Lava Computers Octopus-550 8-port serial", */
1398 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_OCTOPUS550_0, 0, 0 },
1399 { 0xffff, 0xfffc, 0, 0 },
1400 {
1401 { PUC_PORT_COM, 0x10, 0x0000 },
1402 { PUC_PORT_COM, 0x14, 0x0000 },
1403 { PUC_PORT_COM, 0x18, 0x0000 },
1404 { PUC_PORT_COM, 0x1c, 0x0000 },
1405 },
1406 },
1407
1408 /* Lava Computers Octopus-550 serial ports */
1409 { /* "Lava Computers Octopus-550 8-port serial", */
1410 { PCI_VENDOR_LAVA, PCI_PRODUCT_LAVA_OCTOPUS550_1, 0, 0 },
1411 { 0xffff, 0xfffc, 0, 0 },
1412 {
1413 { PUC_PORT_COM, 0x10, 0x0000 },
1414 { PUC_PORT_COM, 0x14, 0x0000 },
1415 { PUC_PORT_COM, 0x18, 0x0000 },
1416 { PUC_PORT_COM, 0x1c, 0x0000 },
1417 },
1418 },
1419
1420 /* US Robotics (3Com) PCI Modems */
1421 { /* "US Robotics (3Com) 3CP5610 PCI 16550 Modem", */
1422 { PCI_VENDOR_USR, PCI_PRODUCT_USR_3CP5610, 0, 0 },
1423 { 0xffff, 0xffff, 0, 0 },
1424 {
1425 { PUC_PORT_COM, 0x10, 0x0000 },
1426 },
1427 },
1428
1429 /* IBM 33L4618: AT&T/Lucent Venus Modem */
1430 { /* "IBM 33L4618: AT&T/Lucent Venus Modem", */
1431 /* "Actiontec 56K PCI Master" */
1432 { PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_VENUSMODEM, 0, 0 },
1433 { 0xffff, 0xffff, 0, 0 },
1434 {
1435 { PUC_PORT_COM, 0x18, 0x0008 },
1436 },
1437 },
1438
1439 /* Topic/SmartLink 5634PCV SurfRider */
1440 { /* "Topic/SmartLink 5634PCV SurfRider" */
1441 { PCI_VENDOR_TOPIC, PCI_PRODUCT_TOPIC_5634PCV, 0, 0 },
1442 { 0xffff, 0xffff, 0, 0 },
1443 {
1444 { PUC_PORT_COM, 0x10, 0x0000 },
1445 },
1446 },
1447
1448 /* SD-LAB PCI I/O Card 4S */
1449 { /* "Syba Tech Ltd. PCI-4S" */
1450 { PCI_VENDOR_SYBA, PCI_PRODUCT_SYBA_4S, 0, 0 },
1451 { 0xffff, 0xffff, 0, 0 },
1452 {
1453 { PUC_PORT_COM, 0x10, 0x03e8 },
1454 { PUC_PORT_COM, 0x10, 0x02e8 },
1455 { PUC_PORT_COM, 0x10, 0x03f8 },
1456 { PUC_PORT_COM, 0x10, 0x02f8 },
1457 },
1458 },
1459
1460 /* SD-LAB PCI I/O Card 4S2P */
1461 { /* "Syba Tech Ltd. PCI-4S2P-550-ECP" */
1462 { PCI_VENDOR_SYBA, PCI_PRODUCT_SYBA_4S2P, 0, 0 },
1463 { 0xffff, 0xffff, 0, 0 },
1464 {
1465 { PUC_PORT_COM, 0x10, 0x02e8 },
1466 { PUC_PORT_COM, 0x10, 0x02f8 },
1467 { PUC_PORT_LPT, 0x10, 0x0000 },
1468 { PUC_PORT_COM, 0x10, 0x03e8 },
1469 { PUC_PORT_COM, 0x10, 0x03f8 },
1470 { PUC_PORT_LPT, 0x10, 0x0000 },
1471 },
1472 },
1473
1474 /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
1475 { /* "Moxa Technologies, Industio CP-114" */
1476 { PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_CP114, 0, 0 },
1477 { 0xffff, 0xffff, 0, 0 },
1478 {
1479 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1480 { PUC_PORT_COM_MUL8, 0x18, 0x0008 },
1481 { PUC_PORT_COM_MUL8, 0x18, 0x0010 },
1482 { PUC_PORT_COM_MUL8, 0x18, 0x0018 },
1483 },
1484 },
1485
1486 /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232/422/485 */
1487 { /* "Moxa Technologies, SmartIO C104H/PCI" */
1488 { PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_C104H, 0, 0 },
1489 { 0xffff, 0xffff, 0, 0 },
1490 {
1491 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1492 { PUC_PORT_COM_MUL8, 0x18, 0x0008 },
1493 { PUC_PORT_COM_MUL8, 0x18, 0x0010 },
1494 { PUC_PORT_COM_MUL8, 0x18, 0x0018 },
1495 },
1496 },
1497
1498 /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1499 { /* "Moxa Technologies, SmartIO CP104UL/PCI" */
1500 { PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_CP104UL, 0, 0 },
1501 { 0xffff, 0xffff, 0, 0 },
1502 {
1503 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1504 { PUC_PORT_COM_MUL8, 0x18, 0x0008 },
1505 { PUC_PORT_COM_MUL8, 0x18, 0x0010 },
1506 { PUC_PORT_COM_MUL8, 0x18, 0x0018 },
1507 },
1508 },
1509
1510 /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1511 { /* "Moxa Technologies, SmartIO CP104JU/PCI" */
1512 { PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_CP104JU, 0, 0 },
1513 { 0xffff, 0xffff, 0, 0 },
1514 {
1515 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1516 { PUC_PORT_COM_MUL8, 0x18, 0x0008 },
1517 { PUC_PORT_COM_MUL8, 0x18, 0x0010 },
1518 { PUC_PORT_COM_MUL8, 0x18, 0x0018 },
1519 },
1520 },
1521
1522 /* Moxa Technologies Co., Ltd. PCI I/O Card 4S RS232 */
1523 { /* "Moxa Technologies, SmartIO CP104EL/PCI" */
1524 { PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_CP104EL, 0, 0 },
1525 { 0xffff, 0xffff, 0, 0 },
1526 {
1527 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1528 { PUC_PORT_COM_MUL8, 0x18, 0x0008 },
1529 { PUC_PORT_COM_MUL8, 0x18, 0x0010 },
1530 { PUC_PORT_COM_MUL8, 0x18, 0x0018 },
1531 },
1532 },
1533
1534 /* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1535 { /* "Moxa Technologies, Industio C168H" */
1536 { PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_C168H, 0, 0 },
1537 { 0xffff, 0xffff, 0, 0 },
1538 {
1539 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1540 { PUC_PORT_COM_MUL8, 0x18, 0x0008 },
1541 { PUC_PORT_COM_MUL8, 0x18, 0x0010 },
1542 { PUC_PORT_COM_MUL8, 0x18, 0x0018 },
1543 { PUC_PORT_COM_MUL8, 0x18, 0x0020 },
1544 { PUC_PORT_COM_MUL8, 0x18, 0x0028 },
1545 { PUC_PORT_COM_MUL8, 0x18, 0x0030 },
1546 { PUC_PORT_COM_MUL8, 0x18, 0x0038 },
1547 },
1548 },
1549
1550 /* Moxa Technologies Co., Ltd. PCI I/O Card 8S RS232 */
1551 { /* "Moxa Technologies, CP-168U" */
1552 { PCI_VENDOR_MOXA, PCI_PRODUCT_MOXA_CP168U, 0, 0 },
1553 { 0xffff, 0xffff, 0, 0 },
1554 {
1555 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1556 { PUC_PORT_COM_MUL8, 0x18, 0x0008 },
1557 { PUC_PORT_COM_MUL8, 0x18, 0x0010 },
1558 { PUC_PORT_COM_MUL8, 0x18, 0x0018 },
1559 { PUC_PORT_COM_MUL8, 0x18, 0x0020 },
1560 { PUC_PORT_COM_MUL8, 0x18, 0x0028 },
1561 { PUC_PORT_COM_MUL8, 0x18, 0x0030 },
1562 { PUC_PORT_COM_MUL8, 0x18, 0x0038 },
1563 },
1564 },
1565
1566 /* NetMos 1P PCI: 1P */
1567 { /* "NetMos NM9805 1284 Printer Port" */
1568 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9805, 0, 0 },
1569 { 0xffff, 0xffff, 0, 0 },
1570 {
1571 { PUC_PORT_LPT, 0x10, 0x0000 },
1572 },
1573 },
1574
1575 /* NetMos 1S PCI 16C650 : 1S */
1576 { /* "NetMos NM9835 UART" */
1577 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9835, 0x1000, 0x0001 },
1578 { 0xffff, 0xffff, 0xffff, 0xffff },
1579 {
1580 { PUC_PORT_COM, 0x10, 0x0000 },
1581 },
1582 },
1583
1584 /* NetMos 2S1P PCI 16C650 : 2S, 1P */
1585 { /* "NetMos NM9835 Dual UART and 1284 Printer port" */
1586 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9835, 0, 0 },
1587 { 0xffff, 0xffff, 0, 0 },
1588 {
1589 { PUC_PORT_COM, 0x10, 0x0000 },
1590 { PUC_PORT_COM, 0x14, 0x0000 },
1591 { PUC_PORT_LPT, 0x18, 0x0000 },
1592 },
1593 },
1594
1595 /* NetMos 4S PCI 16C650 : 4S, 0P */
1596 { /* "NetMos NM9845 Quad UART" */
1597 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9845, 0x1000, 0x0004 },
1598 { 0xffff, 0xffff, 0xffff, 0xffff },
1599 {
1600 { PUC_PORT_COM, 0x10, 0x0000 },
1601 { PUC_PORT_COM, 0x14, 0x0000 },
1602 { PUC_PORT_COM, 0x18, 0x0000 },
1603 { PUC_PORT_COM, 0x1c, 0x0000 },
1604 },
1605 },
1606
1607 /* NetMos 4S1P PCI 16C650 : 4S, 1P */
1608 { /* "NetMos NM9845 Quad UART and 1284 Printer port" */
1609 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9845, 0x1000, 0x0014 },
1610 { 0xffff, 0xffff, 0xffff, 0xffff },
1611 {
1612 { PUC_PORT_COM, 0x10, 0x0000 },
1613 { PUC_PORT_COM, 0x14, 0x0000 },
1614 { PUC_PORT_COM, 0x18, 0x0000 },
1615 { PUC_PORT_COM, 0x1c, 0x0000 },
1616 { PUC_PORT_LPT, 0x20, 0x0000 },
1617 },
1618 },
1619
1620 /* NetMos 6S PCI 16C650 : 6S, 0P */
1621 { /* "NetMos NM9845 6 UART" */
1622 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9845, 0x1000, 0x0006 },
1623 { 0xffff, 0xffff, 0xffff, 0xffff },
1624 {
1625 { PUC_PORT_COM, 0x10, 0x0000 },
1626 { PUC_PORT_COM, 0x14, 0x0000 },
1627 { PUC_PORT_COM, 0x18, 0x0000 },
1628 { PUC_PORT_COM, 0x1c, 0x0000 },
1629 { PUC_PORT_COM, 0x20, 0x0000 },
1630 { PUC_PORT_COM, 0x24, 0x0000 },
1631 },
1632 },
1633
1634 /* NetMos 2S PCI 16C650 : 2S */
1635 { /* "NetMos NM9845 Dual UART" */
1636 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9845, 0, 0 },
1637 { 0xffff, 0xffff, 0, 0 },
1638 {
1639 { PUC_PORT_COM, 0x10, 0x0000 },
1640 { PUC_PORT_COM, 0x14, 0x0000 },
1641 },
1642 },
1643
1644 /* NetMos 6S PCI 16C650 : 6S
1645 * Shows up as three PCI devices, two with a single serial
1646 * port and one with four serial ports (on a special ISA
1647 * extender chip).
1648 */
1649 { /* "NetMos NM9865 6 UART: 1 UART" */
1650 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000, 0x1000 },
1651 { 0xffff, 0xffff, 0xffff, 0xffff },
1652 {
1653 { PUC_PORT_COM, 0x10, 0x0000 },
1654 },
1655 },
1656 { /* "NetMos NM9865 6 UART: 4 UART ISA" */
1657 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000, 0x3004 },
1658 { 0xffff, 0xffff, 0xffff, 0xffff },
1659 {
1660 { PUC_PORT_COM, 0x10, 0x0000 },
1661 { PUC_PORT_COM, 0x14, 0x0000 },
1662 { PUC_PORT_COM, 0x18, 0x0000 },
1663 { PUC_PORT_COM, 0x1c, 0x0000 },
1664 },
1665 },
1666
1667 /* NetMos PCIe Peripheral Controller :UART part */
1668 { /* "NetMos NM9900 UART" */
1669 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9900, 0xa000, 0x1000 },
1670 { 0xffff, 0xffff, 0xffff, 0xffff },
1671 {
1672 { PUC_PORT_COM, 0x10, 0x0000 },
1673 },
1674 },
1675
1676 /* NetMos PCIe Peripheral Controller :UART part */
1677 { /* "NetMos NM9901 UART" */
1678 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9901, 0xa000, 0x1000 },
1679 { 0xffff, 0xffff, 0xffff, 0xffff },
1680 {
1681 { PUC_PORT_COM, 0x10, 0x0000 },
1682 },
1683 },
1684
1685 /* NetMos PCIe Peripheral Controller :parallel part */
1686 { /* "NetMos NM9901 UART" */
1687 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9901, 0xa000, 0x2000 },
1688 { 0xffff, 0xffff, 0xffff, 0xffff },
1689 {
1690 { PUC_PORT_LPT, 0x10, 0x0000 },
1691 },
1692 },
1693
1694 { /* NetMos NM9922: 2S */
1695 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9922, 0xa000, 0x1000 },
1696 { 0xffff, 0xffff, 0xffff, 0xffff },
1697 {
1698 { PUC_PORT_COM, 0x10, 0x0000 },
1699 },
1700 },
1701
1702 /*
1703 * Perle Speed8 LE.
1704 * Based on an Oxford Semiconductor OX16PCI954 chip, using the
1705 * 8-bit pass-through Local Bus function to hook up 4
1706 * additional UARTs.
1707 */
1708 { /* OX16PCI954 internal UARTs */
1709 { PCI_VENDOR_PERLE, PCI_PRODUCT_PERLE_SPEED8_LE,
1710 PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OX16PCI954 },
1711 { 0xffff, 0xffff, 0xffff, 0xffff },
1712 {
1713 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1714 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1715 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
1716 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
1717 },
1718 },
1719 { /* OX16PCI954 8-bit pass-through Local Bus */
1720 { PCI_VENDOR_PERLE, PCI_PRODUCT_PERLE_SPEED8_LE,
1721 PCI_VENDOR_OXFORD2, 0x9511 },
1722 { 0xffff, 0xffff, 0xffff, 0xffff },
1723 {
1724 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1725 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1726 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
1727 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
1728 },
1729 },
1730
1731 { /* Sunix 4018A : 2-port parallel */
1732 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_4018A, 0, 0 },
1733 { 0xffff, 0xffff, 0, 0 },
1734 {
1735 { PUC_PORT_LPT, 0x10, 0x0000 },
1736 { PUC_PORT_LPT, 0x18, 0x0000 },
1737 },
1738 },
1739
1740 /*
1741 * SUNIX 40XX series of serial/parallel combo cards.
1742 * Tested with 4055A and 4065A.
1743 */
1744 { /* SUNIX 400X 1P */
1745 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4000 },
1746 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1747 {
1748 { PUC_PORT_LPT, 0x10, 0x0000 },
1749 },
1750 },
1751
1752 { /* SUNIX 401X 2P */
1753 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4010 },
1754 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1755 {
1756 { PUC_PORT_LPT, 0x10, 0x0000 },
1757 { PUC_PORT_LPT, 0x18, 0x0000 },
1758 },
1759 },
1760
1761 { /* SUNIX 402X 1S */
1762 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4020 },
1763 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1764 {
1765 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1766 },
1767 },
1768
1769 { /* SUNIX 403X 2S */
1770 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4030 },
1771 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1772 {
1773 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1774 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1775 },
1776 },
1777
1778 { /* SUNIX 4036 2S */
1779 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x0002 },
1780 { 0xffff, 0xffff, 0xffff, 0xffff },
1781 {
1782 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1783 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1784 },
1785 },
1786
1787 { /* SUNIX 405X 4S */
1788 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4050 },
1789 { 0xffff, 0xffff, 0xffff, 0xe0f0 },
1790 {
1791 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1792 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1793 { PUC_PORT_COM, 0x14, 0x0000 },
1794 { PUC_PORT_COM, 0x14, 0x0008 },
1795 },
1796 },
1797
1798 { /* SUNIX 406X 8S */
1799 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x5066 },
1800 { 0xffff, 0xffff, 0xffff, 0xffff },
1801 {
1802 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1803 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1804 { PUC_PORT_COM, 0x14, 0x0000 },
1805 { PUC_PORT_COM, 0x14, 0x0008 },
1806 { PUC_PORT_COM, 0x18, 0x0000 },
1807 { PUC_PORT_COM, 0x1c, 0x0000 },
1808 { PUC_PORT_COM, 0x20, 0x0000 },
1809 { PUC_PORT_COM, 0x24, 0x0000 },
1810 },
1811 },
1812
1813 { /* SUNIX 406X 8S */
1814 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4060 },
1815 { 0xffff, 0xffff, 0xffff, 0xe0f0 },
1816 {
1817 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1818 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1819 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1820 { PUC_PORT_COM_MUL8, 0x14, 0x0008 },
1821 { PUC_PORT_COM_MUL8, 0x18, 0x0000 },
1822 { PUC_PORT_COM_MUL8, 0x1c, 0x0000 },
1823 { PUC_PORT_COM_MUL8, 0x20, 0x0000 },
1824 { PUC_PORT_COM_MUL8, 0x24, 0x0000 },
1825 },
1826 },
1827
1828 { /* SUNIX 407X 2S/1P */
1829 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4070 },
1830 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1831 {
1832 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1833 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1834 { PUC_PORT_LPT, 0x18, 0x0000 },
1835 },
1836 },
1837
1838 { /* SUNIX 408X 2S/2P */
1839 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4080 },
1840 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1841 {
1842 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1843 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1844 { PUC_PORT_LPT, 0x18, 0x0000 },
1845 { PUC_PORT_LPT, 0x20, 0x0000 },
1846 },
1847 },
1848
1849 { /* SUNIX 409X 4S/2P */
1850 { PCI_VENDOR_SUNIX, PCI_PRODUCT_SUNIX_40XX, 0x1409, 0x4090 },
1851 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1852 {
1853 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1854 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1855 { PUC_PORT_COM, 0x14, 0x0000 },
1856 { PUC_PORT_COM, 0x14, 0x0008 },
1857 { PUC_PORT_LPT, 0x18, 0x0000 },
1858 { PUC_PORT_LPT, 0x20, 0x0000 },
1859 },
1860 },
1861
1862 /*
1863 * SUNIX 50XX series of serial/parallel combo cards.
1864 * Tested with 5066A.
1865 */
1866 { /* SUNIX 5008 1P */
1867 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0100 },
1868 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1869 {
1870 { PUC_PORT_LPT, 0x14, 0x0000 },
1871 },
1872 },
1873
1874 { /* SUNIX 5016 16S */
1875 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0010 },
1876 { 0xffff, 0xffff, 0xffff, 0xffff },
1877 {
1878 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1879 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1880 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
1881 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
1882 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1883 { PUC_PORT_COM_MUL8, 0x14, 0x0008 },
1884 { PUC_PORT_COM_MUL8, 0x14, 0x0010 },
1885 { PUC_PORT_COM_MUL8, 0x14, 0x0018 },
1886 { PUC_PORT_COM_MUL8, 0x14, 0x0020 },
1887 { PUC_PORT_COM_MUL8, 0x14, 0x0028 },
1888 { PUC_PORT_COM_MUL8, 0x14, 0x0030 },
1889 { PUC_PORT_COM_MUL8, 0x14, 0x0038 },
1890 { PUC_PORT_COM_MUL8, 0x14, 0x0040 },
1891 { PUC_PORT_COM_MUL8, 0x14, 0x0048 },
1892 { PUC_PORT_COM_MUL8, 0x14, 0x0050 },
1893 { PUC_PORT_COM_MUL8, 0x14, 0x0058 },
1894 },
1895 },
1896
1897 { /* SUNIX 5027 1S */
1898 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0001 },
1899 { 0xffff, 0xffff, 0xffff, 0xffff },
1900 {
1901 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1902 },
1903 },
1904
1905 { /* SUNIX 5037 2S */
1906 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0002 },
1907 { 0xffff, 0xffff, 0xffff, 0xffff },
1908 {
1909 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1910 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1911 },
1912 },
1913
1914 { /* SUNIX 5056 4S */
1915 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0004 },
1916 { 0xffff, 0xffff, 0xffff, 0xffff },
1917 {
1918 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1919 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1920 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
1921 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
1922 },
1923 },
1924
1925 { /* SUNIX 5066 8S */
1926 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0008 },
1927 { 0xffff, 0xffff, 0xffff, 0xffff },
1928 {
1929 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1930 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1931 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
1932 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
1933 { PUC_PORT_COM_MUL8, 0x14, 0x0000 },
1934 { PUC_PORT_COM_MUL8, 0x14, 0x0008 },
1935 { PUC_PORT_COM_MUL8, 0x14, 0x0010 },
1936 { PUC_PORT_COM_MUL8, 0x14, 0x0018 },
1937 },
1938 },
1939
1940 { /* SUNIX 5069 1S / 1P */
1941 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0101 },
1942 { 0xffff, 0xffff, 0xffff, 0xeff0 },
1943 {
1944 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1945 { PUC_PORT_LPT, 0x14, 0x0000 },
1946 },
1947 },
1948
1949 { /* SUNIX 5079 2S / 1P */
1950 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0102 },
1951 { 0xffff, 0xffff, 0xffff, 0xffff },
1952 {
1953 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1954 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1955 { PUC_PORT_LPT, 0x14, 0x0000 },
1956 },
1957 },
1958
1959 { /* SUNIX 5099 4S / 1P */
1960 { PCI_VENDOR_SUNIX2, PCI_PRODUCT_SUNIX2_50XX, 0x1fd4, 0x0104 },
1961 { 0xffff, 0xffff, 0xffff, 0xffff },
1962 {
1963 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
1964 { PUC_PORT_COM_MUL8, 0x10, 0x0008 },
1965 { PUC_PORT_COM_MUL8, 0x10, 0x0010 },
1966 { PUC_PORT_COM_MUL8, 0x10, 0x0018 },
1967 { PUC_PORT_LPT, 0x14, 0x0000 },
1968 },
1969 },
1970
1971 /*
1972 * Boca Research Turbo Serial 654 (4 serial port) card.
1973 * Appears to be the same as Chase Research PLC PCI-FAST4 card,
1974 * same as Perle PCI-FAST4 Multi-Port serial card
1975 */
1976 { /* "Boca Turbo Serial 654 - IOP654" */
1977 { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9050, 0x12e0, 0x0031 },
1978 { 0xffff, 0xffff, 0xffff, 0xffff },
1979 {
1980 { PUC_PORT_COM_MUL4, 0x18, 0x0000 },
1981 { PUC_PORT_COM_MUL4, 0x18, 0x0008 },
1982 { PUC_PORT_COM_MUL4, 0x18, 0x0010 },
1983 { PUC_PORT_COM_MUL4, 0x18, 0x0018 },
1984 },
1985 },
1986
1987 /*
1988 * Boca Research Turbo Serial 658 (8 serial port) card.
1989 * Appears to be the same as Chase Research PLC PCI-FAST8 card
1990 * same as Perle PCI-FAST8 Multi-Port serial card
1991 */
1992 { /* "Boca Turbo Serial 658 - IOP658" */
1993 { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9050, 0x12e0, 0x0021 },
1994 { 0xffff, 0xffff, 0xffff, 0xffff },
1995 {
1996 { PUC_PORT_COM_MUL4, 0x18, 0x0000 },
1997 { PUC_PORT_COM_MUL4, 0x18, 0x0008 },
1998 { PUC_PORT_COM_MUL4, 0x18, 0x0010 },
1999 { PUC_PORT_COM_MUL4, 0x18, 0x0018 },
2000 { PUC_PORT_COM_MUL4, 0x18, 0x0020 },
2001 { PUC_PORT_COM_MUL4, 0x18, 0x0028 },
2002 { PUC_PORT_COM_MUL4, 0x18, 0x0030 },
2003 { PUC_PORT_COM_MUL4, 0x18, 0x0038 },
2004 },
2005 },
2006
2007 /* Cronyx Engineering Ltd. Omega-PCI (8 serial port) card. */
2008 { /* "Cronyx Omega-PCI" */
2009 { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_CRONYX_OMEGA, 0, 0 },
2010 { 0xffff, 0xffff, 0, 0 },
2011 {
2012 { PUC_PORT_COM, 0x18, 0x0000 },
2013 { PUC_PORT_COM, 0x18, 0x0008 },
2014 { PUC_PORT_COM, 0x18, 0x0010 },
2015 { PUC_PORT_COM, 0x18, 0x0018 },
2016 { PUC_PORT_COM, 0x18, 0x0020 },
2017 { PUC_PORT_COM, 0x18, 0x0028 },
2018 { PUC_PORT_COM, 0x18, 0x0030 },
2019 { PUC_PORT_COM, 0x18, 0x0038 },
2020 },
2021 },
2022
2023 /* PLX 9016 8 port serial card. (i.e. Syba) */
2024 { /* "PLX 9016 - Syba" */
2025 { PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9016, 0, 0 },
2026 { 0xffff, 0xffff, 0, 0 },
2027 {
2028 { PUC_PORT_COM_MUL4, 0x10, 0x0000 },
2029 { PUC_PORT_COM_MUL4, 0x10, 0x0008 },
2030 { PUC_PORT_COM_MUL4, 0x10, 0x0010 },
2031 { PUC_PORT_COM_MUL4, 0x10, 0x0018 },
2032 { PUC_PORT_COM_MUL4, 0x10, 0x0020 },
2033 { PUC_PORT_COM_MUL4, 0x10, 0x0028 },
2034 { PUC_PORT_COM_MUL4, 0x10, 0x0030 },
2035 { PUC_PORT_COM_MUL4, 0x10, 0x0038 },
2036 },
2037 },
2038
2039 /* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
2040 { /* "Avlab Low Profile PCI 4 Serial" */
2041 { PCI_VENDOR_AVLAB, PCI_PRODUCT_AVLAB_LPPCI4S_2, 0, 0 },
2042 { 0xffff, 0xffff, 0, 0 },
2043 {
2044 { PUC_PORT_COM, 0x10, 0x0000 },
2045 { PUC_PORT_COM, 0x14, 0x0000 },
2046 { PUC_PORT_COM, 0x18, 0x0000 },
2047 { PUC_PORT_COM, 0x1c, 0x0000 },
2048 },
2049 },
2050
2051 /* Avlab Technology, Inc. Low Profile PCI 4 Serial: 4S */
2052 { /* "Avlab Low Profile PCI 4 Serial" */
2053 { PCI_VENDOR_AVLAB, PCI_PRODUCT_AVLAB_LPPCI4S, 0, 0 },
2054 { 0xffff, 0xffff, 0, 0 },
2055 {
2056 { PUC_PORT_COM, 0x10, 0x0000 },
2057 { PUC_PORT_COM, 0x14, 0x0000 },
2058 { PUC_PORT_COM, 0x18, 0x0000 },
2059 { PUC_PORT_COM, 0x1c, 0x0000 },
2060 },
2061 },
2062
2063 /* Avlab Technology, Inc. PCI 2 Serial: 2S */
2064 { /* "Avlab PCI 2 Serial" */
2065 { PCI_VENDOR_AVLAB, PCI_PRODUCT_AVLAB_PCI2S, 0, 0 },
2066 { 0xffff, 0xffff, 0, 0 },
2067 {
2068 { PUC_PORT_COM, 0x10, 0x0000 },
2069 { PUC_PORT_COM, 0x14, 0x0000 },
2070 },
2071 },
2072
2073 /* Digi International Digi Neo 4 Serial */
2074 {
2075 { PCI_VENDOR_DIGI, PCI_PRODUCT_DIGI_NEO4, 0, 0 },
2076 { 0xffff, 0xffff, 0, 0 },
2077 {
2078 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
2079 { PUC_PORT_COM_MUL8, 0x10, 0x0200 },
2080 { PUC_PORT_COM_MUL8, 0x10, 0x0400 },
2081 { PUC_PORT_COM_MUL8, 0x10, 0x0600 },
2082 },
2083 },
2084
2085 /* Digi International Digi Neo 8 Serial */
2086 {
2087 { PCI_VENDOR_DIGI, PCI_PRODUCT_DIGI_NEO8, 0, 0 },
2088 { 0xffff, 0xffff, 0, 0 },
2089 {
2090 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
2091 { PUC_PORT_COM_MUL8, 0x10, 0x0200 },
2092 { PUC_PORT_COM_MUL8, 0x10, 0x0400 },
2093 { PUC_PORT_COM_MUL8, 0x10, 0x0600 },
2094 { PUC_PORT_COM_MUL8, 0x10, 0x0800 },
2095 { PUC_PORT_COM_MUL8, 0x10, 0x0a00 },
2096 { PUC_PORT_COM_MUL8, 0x10, 0x0c00 },
2097 { PUC_PORT_COM_MUL8, 0x10, 0x0e00 },
2098 },
2099 },
2100
2101 /* Digi International Digi Neo 8 PCIe Serial */
2102 {
2103 { PCI_VENDOR_DIGI, PCI_PRODUCT_DIGI_NEO8_PCIE, 0, 0 },
2104 { 0xffff, 0xffff, 0, 0 },
2105 {
2106 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
2107 { PUC_PORT_COM_MUL8, 0x10, 0x0200 },
2108 { PUC_PORT_COM_MUL8, 0x10, 0x0400 },
2109 { PUC_PORT_COM_MUL8, 0x10, 0x0600 },
2110 { PUC_PORT_COM_MUL8, 0x10, 0x0800 },
2111 { PUC_PORT_COM_MUL8, 0x10, 0x0a00 },
2112 { PUC_PORT_COM_MUL8, 0x10, 0x0c00 },
2113 { PUC_PORT_COM_MUL8, 0x10, 0x0e00 },
2114 },
2115 },
2116
2117 /*
2118 * Multi-Tech ISI5634PCI/4 4-port modem board.
2119 * Has a 4-channel Exar XR17C154 UART, but with bogus product ID in its
2120 * config EEPROM.
2121 */
2122 {
2123 { PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17C158, 0x2205, 0x2003 },
2124 { 0xffff, 0xffff, 0xffff, 0xffff },
2125 {
2126 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
2127 { PUC_PORT_COM_MUL8, 0x10, 0x0200 },
2128 { PUC_PORT_COM_MUL8, 0x10, 0x0400 },
2129 { PUC_PORT_COM_MUL8, 0x10, 0x0600 },
2130 },
2131 },
2132
2133 { /* EXAR XR17C152 Dual UART */
2134 { PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17C152, 0, 0 },
2135 { 0xffff, 0xffff, 0, 0 },
2136 {
2137 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
2138 { PUC_PORT_COM_MUL8, 0x10, 0x0200 },
2139 },
2140 },
2141
2142 { /* Exar XR17C154 Quad UART */
2143 { PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17C154, 0, 0 },
2144 { 0xffff, 0xffff, 0, 0 },
2145 {
2146 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
2147 { PUC_PORT_COM_MUL8, 0x10, 0x0200 },
2148 { PUC_PORT_COM_MUL8, 0x10, 0x0400 },
2149 { PUC_PORT_COM_MUL8, 0x10, 0x0600 },
2150 },
2151 },
2152
2153 { /* Exar XR17C158 Eight Channel UART */
2154 { PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17C158, 0, 0 },
2155 { 0xffff, 0xffff, 0, 0 },
2156 {
2157 { PUC_PORT_COM_MUL8, 0x10, 0x0000 },
2158 { PUC_PORT_COM_MUL8, 0x10, 0x0200 },
2159 { PUC_PORT_COM_MUL8, 0x10, 0x0400 },
2160 { PUC_PORT_COM_MUL8, 0x10, 0x0600 },
2161 { PUC_PORT_COM_MUL8, 0x10, 0x0800 },
2162 { PUC_PORT_COM_MUL8, 0x10, 0x0a00 },
2163 { PUC_PORT_COM_MUL8, 0x10, 0x0c00 },
2164 { PUC_PORT_COM_MUL8, 0x10, 0x0e00 },
2165 },
2166 },
2167
2168 { /* Exar XR17V352 Dual UART */
2169 { PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17V352, 0, 0 },
2170 { 0xffff, 0xffff, 0, 0 },
2171 {
2172 { PUC_PORT_COM_XR17V35X, 0x10, 0x0000 },
2173 { PUC_PORT_COM_XR17V35X, 0x10, 0x0400 },
2174 },
2175 },
2176
2177 { /* Exar XR17V354 Quad UART */
2178 { PCI_VENDOR_EXAR, PCI_PRODUCT_EXAR_XR17V354, 0, 0 },
2179 { 0xffff, 0xffff, 0, 0 },
2180 {
2181 { PUC_PORT_COM_XR17V35X, 0x10, 0x0000 },
2182 { PUC_PORT_COM_XR17V35X, 0x10, 0x0400 },
2183 { PUC_PORT_COM_XR17V35X, 0x10, 0x0800 },
2184 { PUC_PORT_COM_XR17V35X, 0x10, 0x0C00 },
2185 },
2186 },
2187
2188 { /* Dell DRAC 3 Virtual UART */
2189 { PCI_VENDOR_DELL, PCI_PRODUCT_DELL_DRAC_3_VUART, 0, 0 },
2190 { 0xffff, 0xffff, 0, 0 },
2191 {
2192 { PUC_PORT_COM_MUL128, 0x14, 0x0000 },
2193 },
2194 },
2195 { /* Dell DRAC 4 Virtual UART */
2196 { PCI_VENDOR_DELL, PCI_PRODUCT_DELL_DRAC_4_VUART, 0, 0 },
2197 { 0xffff, 0xffff, 0, 0 },
2198 {
2199 { PUC_PORT_COM_MUL128, 0x14, 0x0000 },
2200 },
2201 },
2202
2203 /*
2204 * Cardbus devices which can potentially show up because of
2205 * Expresscard adapters
2206 * XXX Keep this list synchronized with cardbus/com_cardbus.c
2207 */
2208
2209 { /* "", */
2210 { PCI_VENDOR_3COM, PCI_PRODUCT_3COM_GLOBALMODEM56,0, 0 },
2211 { 0xffff, 0xffff, 0, 0 },
2212 {
2213 { PUC_PORT_COM, 0x10, 0x0000 },
2214 },
2215 },
2216 { /* "", */
2217 { PCI_VENDOR_3COM, PCI_PRODUCT_3COM_MODEM56, 0, 0 },
2218 { 0xffff, 0xffff, 0, 0 },
2219 {
2220 { PUC_PORT_COM, 0x10, 0x0000 },
2221 },
2222 },
2223 { /* "", */
2224 { PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_SERIAL,0, 0 },
2225 { 0xffff, 0xffff, 0, 0 },
2226 {
2227 { PUC_PORT_COM, 0x10, 0x0000 },
2228 },
2229 },
2230 { /* "", */
2231 { PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_SERIAL_2,0, 0 },
2232 { 0xffff, 0xffff, 0, 0 },
2233 {
2234 { PUC_PORT_COM, 0x10, 0x0000 },
2235 },
2236 },
2237 { /* "", */
2238 { PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_SERIAL_GC,0, 0 },
2239 { 0xffff, 0xffff, 0, 0 },
2240 {
2241 { PUC_PORT_COM, 0x10, 0x0000 },
2242 },
2243 },
2244 { /* "", */
2245 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_MODEM56, 0, 0 },
2246 { 0xffff, 0xffff, 0, 0 },
2247 {
2248 { PUC_PORT_COM, 0x10, 0x0000 },
2249 },
2250 },
2251 { /* "", */
2252 { PCI_VENDOR_OXFORD2, PCI_PRODUCT_OXFORD2_OXCB950,0, 0 },
2253 { 0xffff, 0xffff, 0, 0 },
2254 {
2255 { PUC_PORT_COM, 0x10, 0x0000 },
2256 },
2257 },
2258 { /* "Xircom Cardbus 56K Modem", */
2259 { PCI_VENDOR_XIRCOM, PCI_PRODUCT_XIRCOM_MODEM_56K,0, 0 },
2260 { 0xffff, 0xffff, 0, 0 },
2261 {
2262 { PUC_PORT_COM, 0x10, 0x0000 },
2263 },
2264 },
2265 { /* "Xircom CBEM56G Modem", */
2266 { PCI_VENDOR_XIRCOM, PCI_PRODUCT_XIRCOM_CBEM56G, 0, 0 },
2267 { 0xffff, 0xffff, 0, 0 },
2268 {
2269 { PUC_PORT_COM, 0x10, 0x0000 },
2270 },
2271 },
2272 { /* "Xircom 56k Modem", */
2273 { PCI_VENDOR_XIRCOM, PCI_PRODUCT_XIRCOM_MODEM56, 0, 0 },
2274 { 0xffff, 0xffff, 0, 0 },
2275 {
2276 { PUC_PORT_COM, 0x10, 0x0000 },
2277 },
2278 },
2279 { /* "WinChipHead CH351 (2S)", */
2280 { PCI_VENDOR_WCH2, PCI_PRODUCT_WCH2_CH351, 0, 0 },
2281 { 0xffff, 0xffff, 0, 0 },
2282 {
2283 { PUC_PORT_COM, 0x10, 0x0000 },
2284 { PUC_PORT_COM, 0x14, 0x0000 },
2285 },
2286 },
2287 { /* "WinChipHead CH352", */
2288 { PCI_VENDOR_WCH, PCI_PRODUCT_WCH_CH352, 0, 0 },
2289 { 0xffff, 0xffff, 0, 0 },
2290 {
2291 { PUC_PORT_COM, 0x10, 0x0000 },
2292 { PUC_PORT_COM, 0x14, 0x0000 },
2293 },
2294 },
2295 { /* "WinChipHead CH382 (2S)", */
2296 { PCI_VENDOR_WCH2, PCI_PRODUCT_WCH2_CH382_1, 0, 0 },
2297 { 0xffff, 0xffff, 0, 0 },
2298 {
2299 { PUC_PORT_COM, 0x10, 0x00c0 },
2300 { PUC_PORT_COM, 0x10, 0x00c8 },
2301 },
2302 },
2303 { /* "WinChipHead CH382 (2S1P)", */
2304 { PCI_VENDOR_WCH2, PCI_PRODUCT_WCH2_CH382_2, 0, 0 },
2305 { 0xffff, 0xffff, 0, 0 },
2306 {
2307 { PUC_PORT_COM, 0x10, 0x00c0 },
2308 { PUC_PORT_COM, 0x10, 0x00c8 },
2309 },
2310 },
2311 { /* "TXIC TX382B (2S)", */
2312 { PCI_VENDOR_TXIC, PCI_PRODUCT_TXIC_TX382B, 0, 0 },
2313 { 0xffff, 0xffff, 0, 0 },
2314 {
2315 { PUC_PORT_COM, 0x10, 0x0000 },
2316 { PUC_PORT_COM, 0x14, 0x0000 },
2317 }
2318 },
2319 { /* "ASIX AX99100", */
2320 { PCI_VENDOR_ASIX, PCI_PRODUCT_ASIX_AX99100, 0, 0 },
2321 { 0xffff, 0xffff, 0, 0 },
2322 {
2323 { PUC_PORT_COM, 0x10, 0x0000 },
2324 }
2325 },
2326 { /* "NetMos NM9820 UART" */
2327 { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9820, 0, 0 },
2328 { 0xffff, 0xffff, 0, 0 },
2329 {
2330 { PUC_PORT_COM, 0x10, 0x0000 },
2331 },
2332 },
2333 { /* "MosChip MCS9865 Quad Serial Port" */
2334 { PCI_VENDOR_MOSCHIP, PCI_PRODUCT_MOSCHIP_MCS9865, 0x1000, 0x4 },
2335 { 0xffff, 0xffff, 0xffff, 0xffff },
2336 {
2337 { PUC_PORT_COM, 0x10, 0x0000 },
2338 { PUC_PORT_COM, 0x14, 0x0000 },
2339 { PUC_PORT_COM, 0x18, 0x0000 },
2340 { PUC_PORT_COM, 0x1c, 0x0000 },
2341 },
2342 },
2343 { /* "MosChip MCS9865 Dual Serial Port" */
2344 { PCI_VENDOR_MOSCHIP, PCI_PRODUCT_MOSCHIP_MCS9865, 0x1000, 0x2 },
2345 { 0xffff, 0xffff, 0xffff, 0xffff },
2346 {
2347 { PUC_PORT_COM, 0x10, 0x0000 },
2348 { PUC_PORT_COM, 0x14, 0x0000 },
2349 },
2350 },
2351 { /* "MosChip MCS9865 Single Serial Port" */
2352 { PCI_VENDOR_MOSCHIP, PCI_PRODUCT_MOSCHIP_MCS9865, 0x1000, 0x1 },
2353 { 0xffff, 0xffff, 0xffff, 0xffff },
2354 {
2355 { PUC_PORT_COM, 0x10, 0x0000 },
2356 },
2357 },
2358 { /* "Redhat QEMU PCI Serial" */
2359 { PCI_VENDOR_REDHAT, PCI_PRODUCT_REDHAT_SERIAL, 0x0000, 0x0000 },
2360 { 0xffff, 0xffff, 0x0000, 0x0000 },
2361 {
2362 { PUC_PORT_COM, 0x10, 0x0000 },
2363 },
2364 },
2365 { /* "Redhat QEMU PCI Serial 2x" */
2366 { PCI_VENDOR_REDHAT, PCI_PRODUCT_REDHAT_SERIAL2, 0x0000, 0x0000 },
2367 { 0xffff, 0xffff, 0x0000, 0x0000 },
2368 {
2369 { PUC_PORT_COM, 0x10, 0x0000 },
2370 { PUC_PORT_COM, 0x10, 0x0008 },
2371 },
2372 },
2373 { /* "Redhat QEMU PCI Serial 4x" */
2374 { PCI_VENDOR_REDHAT, PCI_PRODUCT_REDHAT_SERIAL4, 0x0000, 0x0000 },
2375 { 0xffff, 0xffff, 0x0000, 0x0000 },
2376 {
2377 { PUC_PORT_COM, 0x10, 0x0000 },
2378 { PUC_PORT_COM, 0x10, 0x0008 },
2379 { PUC_PORT_COM, 0x10, 0x0010 },
2380 { PUC_PORT_COM, 0x10, 0x0018 },
2381 },
2382 },
2383};
2384int puc_ndevs = nitems(puc_devs);