diff options
author | Ira W. Snyder <iws@ovro.caltech.edu> | 2009-12-21 19:26:45 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-02 17:43:08 -0500 |
commit | ac6ec5b1de5d1d5afcbe88d73c05df71dca0ac39 (patch) | |
tree | 4a850ab01492dafc82a94cccac9790bd8be0f32a | |
parent | de538eb3441e8b9f7aedb3a37e46c005538451dc (diff) |
serial: 8250_pci: add support for MCS9865 / SYBA 6x Serial Port Card
This patch is heavily based on an earlier patch found on the linux-serial
mailing list [1], written by Darius Augulis.
The previous incarnation of this patch only supported a 2x serial port
card. I have added support for my SYBA 6x serial port card, and tested on
x86.
[1]: http://marc.info/?l=linux-serial&m=124975806304760
Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
Cc: Darius Augulis <augulis.darius@gmail.com>
Cc: Greg KH <greg@kroah.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/parport/parport_pc.c | 6 | ||||
-rw-r--r-- | drivers/serial/8250_pci.c | 22 | ||||
-rw-r--r-- | include/linux/pci_ids.h | 1 |
3 files changed, 28 insertions, 1 deletions
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c index ad113b0f62db..0950fa40684f 100644 --- a/drivers/parport/parport_pc.c +++ b/drivers/parport/parport_pc.c | |||
@@ -2908,6 +2908,7 @@ enum parport_pc_pci_cards { | |||
2908 | netmos_9805, | 2908 | netmos_9805, |
2909 | netmos_9815, | 2909 | netmos_9815, |
2910 | netmos_9901, | 2910 | netmos_9901, |
2911 | netmos_9865, | ||
2911 | quatech_sppxp100, | 2912 | quatech_sppxp100, |
2912 | }; | 2913 | }; |
2913 | 2914 | ||
@@ -2989,6 +2990,7 @@ static struct parport_pc_pci { | |||
2989 | /* netmos_9805 */ { 1, { { 0, -1 }, } }, | 2990 | /* netmos_9805 */ { 1, { { 0, -1 }, } }, |
2990 | /* netmos_9815 */ { 2, { { 0, -1 }, { 2, -1 }, } }, | 2991 | /* netmos_9815 */ { 2, { { 0, -1 }, { 2, -1 }, } }, |
2991 | /* netmos_9901 */ { 1, { { 0, -1 }, } }, | 2992 | /* netmos_9901 */ { 1, { { 0, -1 }, } }, |
2993 | /* netmos_9865 */ { 1, { { 0, -1 }, } }, | ||
2992 | /* quatech_sppxp100 */ { 1, { { 0, 1 }, } }, | 2994 | /* quatech_sppxp100 */ { 1, { { 0, 1 }, } }, |
2993 | }; | 2995 | }; |
2994 | 2996 | ||
@@ -3092,6 +3094,10 @@ static const struct pci_device_id parport_pc_pci_tbl[] = { | |||
3092 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9815 }, | 3094 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9815 }, |
3093 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9901, | 3095 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9901, |
3094 | 0xA000, 0x2000, 0, 0, netmos_9901 }, | 3096 | 0xA000, 0x2000, 0, 0, netmos_9901 }, |
3097 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865, | ||
3098 | 0xA000, 0x1000, 0, 0, netmos_9865 }, | ||
3099 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865, | ||
3100 | 0xA000, 0x2000, 0, 0, netmos_9865 }, | ||
3095 | /* Quatech SPPXP-100 Parallel port PCI ExpressCard */ | 3101 | /* Quatech SPPXP-100 Parallel port PCI ExpressCard */ |
3096 | { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_SPPXP_100, | 3102 | { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_SPPXP_100, |
3097 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, quatech_sppxp100 }, | 3103 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, quatech_sppxp100 }, |
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index b28af13c45a1..8b18c3ce3898 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
@@ -760,7 +760,8 @@ static int pci_netmos_init(struct pci_dev *dev) | |||
760 | /* subdevice 0x00PS means <P> parallel, <S> serial */ | 760 | /* subdevice 0x00PS means <P> parallel, <S> serial */ |
761 | unsigned int num_serial = dev->subsystem_device & 0xf; | 761 | unsigned int num_serial = dev->subsystem_device & 0xf; |
762 | 762 | ||
763 | if (dev->device == PCI_DEVICE_ID_NETMOS_9901) | 763 | if ((dev->device == PCI_DEVICE_ID_NETMOS_9901) || |
764 | (dev->device == PCI_DEVICE_ID_NETMOS_9865)) | ||
764 | return 0; | 765 | return 0; |
765 | if (dev->subsystem_vendor == PCI_VENDOR_ID_IBM && | 766 | if (dev->subsystem_vendor == PCI_VENDOR_ID_IBM && |
766 | dev->subsystem_device == 0x0299) | 767 | dev->subsystem_device == 0x0299) |
@@ -1479,6 +1480,7 @@ enum pci_board_num_t { | |||
1479 | 1480 | ||
1480 | pbn_b0_bt_1_115200, | 1481 | pbn_b0_bt_1_115200, |
1481 | pbn_b0_bt_2_115200, | 1482 | pbn_b0_bt_2_115200, |
1483 | pbn_b0_bt_4_115200, | ||
1482 | pbn_b0_bt_8_115200, | 1484 | pbn_b0_bt_8_115200, |
1483 | 1485 | ||
1484 | pbn_b0_bt_1_460800, | 1486 | pbn_b0_bt_1_460800, |
@@ -1703,6 +1705,12 @@ static struct pciserial_board pci_boards[] __devinitdata = { | |||
1703 | .base_baud = 115200, | 1705 | .base_baud = 115200, |
1704 | .uart_offset = 8, | 1706 | .uart_offset = 8, |
1705 | }, | 1707 | }, |
1708 | [pbn_b0_bt_4_115200] = { | ||
1709 | .flags = FL_BASE0|FL_BASE_BARS, | ||
1710 | .num_ports = 4, | ||
1711 | .base_baud = 115200, | ||
1712 | .uart_offset = 8, | ||
1713 | }, | ||
1706 | [pbn_b0_bt_8_115200] = { | 1714 | [pbn_b0_bt_8_115200] = { |
1707 | .flags = FL_BASE0|FL_BASE_BARS, | 1715 | .flags = FL_BASE0|FL_BASE_BARS, |
1708 | .num_ports = 8, | 1716 | .num_ports = 8, |
@@ -3649,6 +3657,18 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
3649 | 0, 0, pbn_b0_1_115200 }, | 3657 | 0, 0, pbn_b0_1_115200 }, |
3650 | 3658 | ||
3651 | /* | 3659 | /* |
3660 | * Best Connectivity PCI Multi I/O cards | ||
3661 | */ | ||
3662 | |||
3663 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865, | ||
3664 | 0xA000, 0x1000, | ||
3665 | 0, 0, pbn_b0_1_115200 }, | ||
3666 | |||
3667 | { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865, | ||
3668 | 0xA000, 0x3004, | ||
3669 | 0, 0, pbn_b0_bt_4_115200 }, | ||
3670 | |||
3671 | /* | ||
3652 | * These entries match devices with class COMMUNICATION_SERIAL, | 3672 | * These entries match devices with class COMMUNICATION_SERIAL, |
3653 | * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL | 3673 | * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL |
3654 | */ | 3674 | */ |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 0be824320580..3ec4003f5e64 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -2697,6 +2697,7 @@ | |||
2697 | #define PCI_DEVICE_ID_NETMOS_9835 0x9835 | 2697 | #define PCI_DEVICE_ID_NETMOS_9835 0x9835 |
2698 | #define PCI_DEVICE_ID_NETMOS_9845 0x9845 | 2698 | #define PCI_DEVICE_ID_NETMOS_9845 0x9845 |
2699 | #define PCI_DEVICE_ID_NETMOS_9855 0x9855 | 2699 | #define PCI_DEVICE_ID_NETMOS_9855 0x9855 |
2700 | #define PCI_DEVICE_ID_NETMOS_9865 0x9865 | ||
2700 | #define PCI_DEVICE_ID_NETMOS_9901 0x9901 | 2701 | #define PCI_DEVICE_ID_NETMOS_9901 0x9901 |
2701 | 2702 | ||
2702 | #define PCI_VENDOR_ID_3COM_2 0xa727 | 2703 | #define PCI_VENDOR_ID_3COM_2 0xa727 |