diff options
author | Frédéric Brière <fbriere@fbriere.net> | 2011-05-29 15:08:04 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-06-07 12:35:57 -0400 |
commit | b9b24558f7d36c550b5cf0b550a8926f8c03cdbd (patch) | |
tree | 35bf3afc3ff13a8f09e1d45af7d25dd19ad2e53c /drivers/parport | |
parent | 5bf8f501e05930364b345ed8710c5b1a13207134 (diff) |
parport/serial: add support for Timedia/SUNIX cards to parport_serial
Timedia/SUNIX PCI cards with both serial and parallel ports are
currently supported by 8250_pci and parport_pc individually. Moving
that support into parport_serial allows using both types of ports at the
same time.
This was successfully tested with a SUNIX 4079T.
Signed-off-by: Frédéric Brière <fbriere@fbriere.net>
Acked-by: Alan Cox <alan@linux.intel.com>
Cc: linux-serial@vger.kernel.org
Cc: linux-parport@lists.infradead.org
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/parport')
-rw-r--r-- | drivers/parport/parport_pc.c | 54 | ||||
-rw-r--r-- | drivers/parport/parport_serial.c | 163 |
2 files changed, 163 insertions, 54 deletions
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c index f330338c2f22..d1cdb9449f84 100644 --- a/drivers/parport/parport_pc.c +++ b/drivers/parport/parport_pc.c | |||
@@ -2864,24 +2864,6 @@ enum parport_pc_pci_cards { | |||
2864 | lava_parallel_dual_b, | 2864 | lava_parallel_dual_b, |
2865 | boca_ioppar, | 2865 | boca_ioppar, |
2866 | plx_9050, | 2866 | plx_9050, |
2867 | timedia_4078a, | ||
2868 | timedia_4079h, | ||
2869 | timedia_4085h, | ||
2870 | timedia_4088a, | ||
2871 | timedia_4089a, | ||
2872 | timedia_4095a, | ||
2873 | timedia_4096a, | ||
2874 | timedia_4078u, | ||
2875 | timedia_4079a, | ||
2876 | timedia_4085u, | ||
2877 | timedia_4079r, | ||
2878 | timedia_4079s, | ||
2879 | timedia_4079d, | ||
2880 | timedia_4079e, | ||
2881 | timedia_4079f, | ||
2882 | timedia_9079a, | ||
2883 | timedia_9079b, | ||
2884 | timedia_9079c, | ||
2885 | timedia_4006a, | 2867 | timedia_4006a, |
2886 | timedia_4014, | 2868 | timedia_4014, |
2887 | timedia_4008a, | 2869 | timedia_4008a, |
@@ -2940,24 +2922,6 @@ static struct parport_pc_pci { | |||
2940 | /* lava_parallel_dual_b */ { 1, { { 0, -1 }, } }, | 2922 | /* lava_parallel_dual_b */ { 1, { { 0, -1 }, } }, |
2941 | /* boca_ioppar */ { 1, { { 0, -1 }, } }, | 2923 | /* boca_ioppar */ { 1, { { 0, -1 }, } }, |
2942 | /* plx_9050 */ { 2, { { 4, -1 }, { 5, -1 }, } }, | 2924 | /* plx_9050 */ { 2, { { 4, -1 }, { 5, -1 }, } }, |
2943 | /* timedia_4078a */ { 1, { { 2, -1 }, } }, | ||
2944 | /* timedia_4079h */ { 1, { { 2, 3 }, } }, | ||
2945 | /* timedia_4085h */ { 2, { { 2, -1 }, { 4, -1 }, } }, | ||
2946 | /* timedia_4088a */ { 2, { { 2, 3 }, { 4, 5 }, } }, | ||
2947 | /* timedia_4089a */ { 2, { { 2, 3 }, { 4, 5 }, } }, | ||
2948 | /* timedia_4095a */ { 2, { { 2, 3 }, { 4, 5 }, } }, | ||
2949 | /* timedia_4096a */ { 2, { { 2, 3 }, { 4, 5 }, } }, | ||
2950 | /* timedia_4078u */ { 1, { { 2, -1 }, } }, | ||
2951 | /* timedia_4079a */ { 1, { { 2, 3 }, } }, | ||
2952 | /* timedia_4085u */ { 2, { { 2, -1 }, { 4, -1 }, } }, | ||
2953 | /* timedia_4079r */ { 1, { { 2, 3 }, } }, | ||
2954 | /* timedia_4079s */ { 1, { { 2, 3 }, } }, | ||
2955 | /* timedia_4079d */ { 1, { { 2, 3 }, } }, | ||
2956 | /* timedia_4079e */ { 1, { { 2, 3 }, } }, | ||
2957 | /* timedia_4079f */ { 1, { { 2, 3 }, } }, | ||
2958 | /* timedia_9079a */ { 1, { { 2, 3 }, } }, | ||
2959 | /* timedia_9079b */ { 1, { { 2, 3 }, } }, | ||
2960 | /* timedia_9079c */ { 1, { { 2, 3 }, } }, | ||
2961 | /* timedia_4006a */ { 1, { { 0, -1 }, } }, | 2925 | /* timedia_4006a */ { 1, { { 0, -1 }, } }, |
2962 | /* timedia_4014 */ { 2, { { 0, -1 }, { 2, -1 }, } }, | 2926 | /* timedia_4014 */ { 2, { { 0, -1 }, { 2, -1 }, } }, |
2963 | /* timedia_4008a */ { 1, { { 0, 1 }, } }, | 2927 | /* timedia_4008a */ { 1, { { 0, 1 }, } }, |
@@ -3019,24 +2983,6 @@ static const struct pci_device_id parport_pc_pci_tbl[] = { | |||
3019 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, | 2983 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, |
3020 | PCI_SUBVENDOR_ID_EXSYS, PCI_SUBDEVICE_ID_EXSYS_4014, 0, 0, plx_9050 }, | 2984 | PCI_SUBVENDOR_ID_EXSYS, PCI_SUBDEVICE_ID_EXSYS_4014, 0, 0, plx_9050 }, |
3021 | /* PCI_VENDOR_ID_TIMEDIA/SUNIX has many differing cards ...*/ | 2985 | /* PCI_VENDOR_ID_TIMEDIA/SUNIX has many differing cards ...*/ |
3022 | { 0x1409, 0x7168, 0x1409, 0x4078, 0, 0, timedia_4078a }, | ||
3023 | { 0x1409, 0x7168, 0x1409, 0x4079, 0, 0, timedia_4079h }, | ||
3024 | { 0x1409, 0x7168, 0x1409, 0x4085, 0, 0, timedia_4085h }, | ||
3025 | { 0x1409, 0x7168, 0x1409, 0x4088, 0, 0, timedia_4088a }, | ||
3026 | { 0x1409, 0x7168, 0x1409, 0x4089, 0, 0, timedia_4089a }, | ||
3027 | { 0x1409, 0x7168, 0x1409, 0x4095, 0, 0, timedia_4095a }, | ||
3028 | { 0x1409, 0x7168, 0x1409, 0x4096, 0, 0, timedia_4096a }, | ||
3029 | { 0x1409, 0x7168, 0x1409, 0x5078, 0, 0, timedia_4078u }, | ||
3030 | { 0x1409, 0x7168, 0x1409, 0x5079, 0, 0, timedia_4079a }, | ||
3031 | { 0x1409, 0x7168, 0x1409, 0x5085, 0, 0, timedia_4085u }, | ||
3032 | { 0x1409, 0x7168, 0x1409, 0x6079, 0, 0, timedia_4079r }, | ||
3033 | { 0x1409, 0x7168, 0x1409, 0x7079, 0, 0, timedia_4079s }, | ||
3034 | { 0x1409, 0x7168, 0x1409, 0x8079, 0, 0, timedia_4079d }, | ||
3035 | { 0x1409, 0x7168, 0x1409, 0x9079, 0, 0, timedia_4079e }, | ||
3036 | { 0x1409, 0x7168, 0x1409, 0xa079, 0, 0, timedia_4079f }, | ||
3037 | { 0x1409, 0x7168, 0x1409, 0xb079, 0, 0, timedia_9079a }, | ||
3038 | { 0x1409, 0x7168, 0x1409, 0xc079, 0, 0, timedia_9079b }, | ||
3039 | { 0x1409, 0x7168, 0x1409, 0xd079, 0, 0, timedia_9079c }, | ||
3040 | { 0x1409, 0x7268, 0x1409, 0x0101, 0, 0, timedia_4006a }, | 2986 | { 0x1409, 0x7268, 0x1409, 0x0101, 0, 0, timedia_4006a }, |
3041 | { 0x1409, 0x7268, 0x1409, 0x0102, 0, 0, timedia_4014 }, | 2987 | { 0x1409, 0x7268, 0x1409, 0x0102, 0, 0, timedia_4014 }, |
3042 | { 0x1409, 0x7268, 0x1409, 0x0103, 0, 0, timedia_4008a }, | 2988 | { 0x1409, 0x7268, 0x1409, 0x0103, 0, 0, timedia_4008a }, |
diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c index 342a3de6c674..e9c32274df3f 100644 --- a/drivers/parport/parport_serial.c +++ b/drivers/parport/parport_serial.c | |||
@@ -44,6 +44,24 @@ enum parport_pc_pci_cards { | |||
44 | siig_2p1s_20x, | 44 | siig_2p1s_20x, |
45 | siig_1s1p_20x, | 45 | siig_1s1p_20x, |
46 | siig_2s1p_20x, | 46 | siig_2s1p_20x, |
47 | timedia_4078a, | ||
48 | timedia_4079h, | ||
49 | timedia_4085h, | ||
50 | timedia_4088a, | ||
51 | timedia_4089a, | ||
52 | timedia_4095a, | ||
53 | timedia_4096a, | ||
54 | timedia_4078u, | ||
55 | timedia_4079a, | ||
56 | timedia_4085u, | ||
57 | timedia_4079r, | ||
58 | timedia_4079s, | ||
59 | timedia_4079d, | ||
60 | timedia_4079e, | ||
61 | timedia_4079f, | ||
62 | timedia_9079a, | ||
63 | timedia_9079b, | ||
64 | timedia_9079c, | ||
47 | }; | 65 | }; |
48 | 66 | ||
49 | /* each element directly indexed from enum list, above */ | 67 | /* each element directly indexed from enum list, above */ |
@@ -109,6 +127,24 @@ static struct parport_pc_pci cards[] __devinitdata = { | |||
109 | /* siig_2p1s_20x */ { 2, { { 1, 2 }, { 3, 4 }, } }, | 127 | /* siig_2p1s_20x */ { 2, { { 1, 2 }, { 3, 4 }, } }, |
110 | /* siig_1s1p_20x */ { 1, { { 1, 2 }, } }, | 128 | /* siig_1s1p_20x */ { 1, { { 1, 2 }, } }, |
111 | /* siig_2s1p_20x */ { 1, { { 2, 3 }, } }, | 129 | /* siig_2s1p_20x */ { 1, { { 2, 3 }, } }, |
130 | /* timedia_4078a */ { 1, { { 2, -1 }, } }, | ||
131 | /* timedia_4079h */ { 1, { { 2, 3 }, } }, | ||
132 | /* timedia_4085h */ { 2, { { 2, -1 }, { 4, -1 }, } }, | ||
133 | /* timedia_4088a */ { 2, { { 2, 3 }, { 4, 5 }, } }, | ||
134 | /* timedia_4089a */ { 2, { { 2, 3 }, { 4, 5 }, } }, | ||
135 | /* timedia_4095a */ { 2, { { 2, 3 }, { 4, 5 }, } }, | ||
136 | /* timedia_4096a */ { 2, { { 2, 3 }, { 4, 5 }, } }, | ||
137 | /* timedia_4078u */ { 1, { { 2, -1 }, } }, | ||
138 | /* timedia_4079a */ { 1, { { 2, 3 }, } }, | ||
139 | /* timedia_4085u */ { 2, { { 2, -1 }, { 4, -1 }, } }, | ||
140 | /* timedia_4079r */ { 1, { { 2, 3 }, } }, | ||
141 | /* timedia_4079s */ { 1, { { 2, 3 }, } }, | ||
142 | /* timedia_4079d */ { 1, { { 2, 3 }, } }, | ||
143 | /* timedia_4079e */ { 1, { { 2, 3 }, } }, | ||
144 | /* timedia_4079f */ { 1, { { 2, 3 }, } }, | ||
145 | /* timedia_9079a */ { 1, { { 2, 3 }, } }, | ||
146 | /* timedia_9079b */ { 1, { { 2, 3 }, } }, | ||
147 | /* timedia_9079c */ { 1, { { 2, 3 }, } }, | ||
112 | }; | 148 | }; |
113 | 149 | ||
114 | static struct pci_device_id parport_serial_pci_tbl[] = { | 150 | static struct pci_device_id parport_serial_pci_tbl[] = { |
@@ -188,6 +224,25 @@ static struct pci_device_id parport_serial_pci_tbl[] = { | |||
188 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_20x }, | 224 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_20x }, |
189 | { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2S1P_20x_850, | 225 | { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2S1P_20x_850, |
190 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_20x }, | 226 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_20x }, |
227 | /* PCI_VENDOR_ID_TIMEDIA/SUNIX has many differing cards ...*/ | ||
228 | { 0x1409, 0x7168, 0x1409, 0x4078, 0, 0, timedia_4078a }, | ||
229 | { 0x1409, 0x7168, 0x1409, 0x4079, 0, 0, timedia_4079h }, | ||
230 | { 0x1409, 0x7168, 0x1409, 0x4085, 0, 0, timedia_4085h }, | ||
231 | { 0x1409, 0x7168, 0x1409, 0x4088, 0, 0, timedia_4088a }, | ||
232 | { 0x1409, 0x7168, 0x1409, 0x4089, 0, 0, timedia_4089a }, | ||
233 | { 0x1409, 0x7168, 0x1409, 0x4095, 0, 0, timedia_4095a }, | ||
234 | { 0x1409, 0x7168, 0x1409, 0x4096, 0, 0, timedia_4096a }, | ||
235 | { 0x1409, 0x7168, 0x1409, 0x5078, 0, 0, timedia_4078u }, | ||
236 | { 0x1409, 0x7168, 0x1409, 0x5079, 0, 0, timedia_4079a }, | ||
237 | { 0x1409, 0x7168, 0x1409, 0x5085, 0, 0, timedia_4085u }, | ||
238 | { 0x1409, 0x7168, 0x1409, 0x6079, 0, 0, timedia_4079r }, | ||
239 | { 0x1409, 0x7168, 0x1409, 0x7079, 0, 0, timedia_4079s }, | ||
240 | { 0x1409, 0x7168, 0x1409, 0x8079, 0, 0, timedia_4079d }, | ||
241 | { 0x1409, 0x7168, 0x1409, 0x9079, 0, 0, timedia_4079e }, | ||
242 | { 0x1409, 0x7168, 0x1409, 0xa079, 0, 0, timedia_4079f }, | ||
243 | { 0x1409, 0x7168, 0x1409, 0xb079, 0, 0, timedia_9079a }, | ||
244 | { 0x1409, 0x7168, 0x1409, 0xc079, 0, 0, timedia_9079b }, | ||
245 | { 0x1409, 0x7168, 0x1409, 0xd079, 0, 0, timedia_9079c }, | ||
191 | 246 | ||
192 | { 0, } /* terminate list */ | 247 | { 0, } /* terminate list */ |
193 | }; | 248 | }; |
@@ -297,6 +352,114 @@ static struct pciserial_board pci_parport_serial_boards[] __devinitdata = { | |||
297 | .base_baud = 921600, | 352 | .base_baud = 921600, |
298 | .uart_offset = 8, | 353 | .uart_offset = 8, |
299 | }, | 354 | }, |
355 | [timedia_4078a] = { | ||
356 | .flags = FL_BASE0|FL_BASE_BARS, | ||
357 | .num_ports = 1, | ||
358 | .base_baud = 921600, | ||
359 | .uart_offset = 8, | ||
360 | }, | ||
361 | [timedia_4079h] = { | ||
362 | .flags = FL_BASE0|FL_BASE_BARS, | ||
363 | .num_ports = 1, | ||
364 | .base_baud = 921600, | ||
365 | .uart_offset = 8, | ||
366 | }, | ||
367 | [timedia_4085h] = { | ||
368 | .flags = FL_BASE0|FL_BASE_BARS, | ||
369 | .num_ports = 1, | ||
370 | .base_baud = 921600, | ||
371 | .uart_offset = 8, | ||
372 | }, | ||
373 | [timedia_4088a] = { | ||
374 | .flags = FL_BASE0|FL_BASE_BARS, | ||
375 | .num_ports = 1, | ||
376 | .base_baud = 921600, | ||
377 | .uart_offset = 8, | ||
378 | }, | ||
379 | [timedia_4089a] = { | ||
380 | .flags = FL_BASE0|FL_BASE_BARS, | ||
381 | .num_ports = 1, | ||
382 | .base_baud = 921600, | ||
383 | .uart_offset = 8, | ||
384 | }, | ||
385 | [timedia_4095a] = { | ||
386 | .flags = FL_BASE0|FL_BASE_BARS, | ||
387 | .num_ports = 1, | ||
388 | .base_baud = 921600, | ||
389 | .uart_offset = 8, | ||
390 | }, | ||
391 | [timedia_4096a] = { | ||
392 | .flags = FL_BASE0|FL_BASE_BARS, | ||
393 | .num_ports = 1, | ||
394 | .base_baud = 921600, | ||
395 | .uart_offset = 8, | ||
396 | }, | ||
397 | [timedia_4078u] = { | ||
398 | .flags = FL_BASE0|FL_BASE_BARS, | ||
399 | .num_ports = 1, | ||
400 | .base_baud = 921600, | ||
401 | .uart_offset = 8, | ||
402 | }, | ||
403 | [timedia_4079a] = { | ||
404 | .flags = FL_BASE0|FL_BASE_BARS, | ||
405 | .num_ports = 1, | ||
406 | .base_baud = 921600, | ||
407 | .uart_offset = 8, | ||
408 | }, | ||
409 | [timedia_4085u] = { | ||
410 | .flags = FL_BASE0|FL_BASE_BARS, | ||
411 | .num_ports = 1, | ||
412 | .base_baud = 921600, | ||
413 | .uart_offset = 8, | ||
414 | }, | ||
415 | [timedia_4079r] = { | ||
416 | .flags = FL_BASE0|FL_BASE_BARS, | ||
417 | .num_ports = 1, | ||
418 | .base_baud = 921600, | ||
419 | .uart_offset = 8, | ||
420 | }, | ||
421 | [timedia_4079s] = { | ||
422 | .flags = FL_BASE0|FL_BASE_BARS, | ||
423 | .num_ports = 1, | ||
424 | .base_baud = 921600, | ||
425 | .uart_offset = 8, | ||
426 | }, | ||
427 | [timedia_4079d] = { | ||
428 | .flags = FL_BASE0|FL_BASE_BARS, | ||
429 | .num_ports = 1, | ||
430 | .base_baud = 921600, | ||
431 | .uart_offset = 8, | ||
432 | }, | ||
433 | [timedia_4079e] = { | ||
434 | .flags = FL_BASE0|FL_BASE_BARS, | ||
435 | .num_ports = 1, | ||
436 | .base_baud = 921600, | ||
437 | .uart_offset = 8, | ||
438 | }, | ||
439 | [timedia_4079f] = { | ||
440 | .flags = FL_BASE0|FL_BASE_BARS, | ||
441 | .num_ports = 1, | ||
442 | .base_baud = 921600, | ||
443 | .uart_offset = 8, | ||
444 | }, | ||
445 | [timedia_9079a] = { | ||
446 | .flags = FL_BASE0|FL_BASE_BARS, | ||
447 | .num_ports = 1, | ||
448 | .base_baud = 921600, | ||
449 | .uart_offset = 8, | ||
450 | }, | ||
451 | [timedia_9079b] = { | ||
452 | .flags = FL_BASE0|FL_BASE_BARS, | ||
453 | .num_ports = 1, | ||
454 | .base_baud = 921600, | ||
455 | .uart_offset = 8, | ||
456 | }, | ||
457 | [timedia_9079c] = { | ||
458 | .flags = FL_BASE0|FL_BASE_BARS, | ||
459 | .num_ports = 1, | ||
460 | .base_baud = 921600, | ||
461 | .uart_offset = 8, | ||
462 | }, | ||
300 | }; | 463 | }; |
301 | 464 | ||
302 | struct parport_serial_private { | 465 | struct parport_serial_private { |