aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial/8250_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial/8250_pci.c')
-rw-r--r--drivers/serial/8250_pci.c51
1 files changed, 31 insertions, 20 deletions
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
index de54bdc5398b..356f5556759a 100644
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -389,6 +389,9 @@ static void __devexit sbs_exit(struct pci_dev *dev)
389 * - 10x cards have control registers in IO and/or memory space; 389 * - 10x cards have control registers in IO and/or memory space;
390 * - 20x cards have control registers in standard PCI configuration space. 390 * - 20x cards have control registers in standard PCI configuration space.
391 * 391 *
392 * There are also Quartet Serial cards which use Oxford Semiconductor
393 * 16954 quad UART PCI chip clocked by 18.432 MHz quartz.
394 *
392 * Note: some SIIG cards are probed by the parport_serial object. 395 * Note: some SIIG cards are probed by the parport_serial object.
393 */ 396 */
394 397
@@ -1026,6 +1029,8 @@ enum pci_board_num_t {
1026 pbn_b0_2_921600, 1029 pbn_b0_2_921600,
1027 pbn_b0_4_921600, 1030 pbn_b0_4_921600,
1028 1031
1032 pbn_b0_4_1152000,
1033
1029 pbn_b0_bt_1_115200, 1034 pbn_b0_bt_1_115200,
1030 pbn_b0_bt_2_115200, 1035 pbn_b0_bt_2_115200,
1031 pbn_b0_bt_8_115200, 1036 pbn_b0_bt_8_115200,
@@ -1158,6 +1163,12 @@ static struct pci_board pci_boards[] __devinitdata = {
1158 .base_baud = 921600, 1163 .base_baud = 921600,
1159 .uart_offset = 8, 1164 .uart_offset = 8,
1160 }, 1165 },
1166 [pbn_b0_4_1152000] = {
1167 .flags = FL_BASE0,
1168 .num_ports = 4,
1169 .base_baud = 1152000,
1170 .uart_offset = 8,
1171 },
1161 1172
1162 [pbn_b0_bt_1_115200] = { 1173 [pbn_b0_bt_1_115200] = {
1163 .flags = FL_BASE0|FL_BASE_BARS, 1174 .flags = FL_BASE0|FL_BASE_BARS,
@@ -1755,33 +1766,30 @@ pciserial_init_one(struct pci_dev *dev, const struct pci_device_id *ent)
1755static void __devexit pciserial_remove_one(struct pci_dev *dev) 1766static void __devexit pciserial_remove_one(struct pci_dev *dev)
1756{ 1767{
1757 struct serial_private *priv = pci_get_drvdata(dev); 1768 struct serial_private *priv = pci_get_drvdata(dev);
1769 struct pci_serial_quirk *quirk;
1770 int i;
1758 1771
1759 pci_set_drvdata(dev, NULL); 1772 pci_set_drvdata(dev, NULL);
1760 1773
1761 if (priv) { 1774 for (i = 0; i < priv->nr; i++)
1762 struct pci_serial_quirk *quirk; 1775 serial8250_unregister_port(priv->line[i]);
1763 int i;
1764
1765 for (i = 0; i < priv->nr; i++)
1766 serial8250_unregister_port(priv->line[i]);
1767 1776
1768 for (i = 0; i < PCI_NUM_BAR_RESOURCES; i++) { 1777 for (i = 0; i < PCI_NUM_BAR_RESOURCES; i++) {
1769 if (priv->remapped_bar[i]) 1778 if (priv->remapped_bar[i])
1770 iounmap(priv->remapped_bar[i]); 1779 iounmap(priv->remapped_bar[i]);
1771 priv->remapped_bar[i] = NULL; 1780 priv->remapped_bar[i] = NULL;
1772 } 1781 }
1773 1782
1774 /* 1783 /*
1775 * Find the exit quirks. 1784 * Find the exit quirks.
1776 */ 1785 */
1777 quirk = find_quirk(dev); 1786 quirk = find_quirk(dev);
1778 if (quirk->exit) 1787 if (quirk->exit)
1779 quirk->exit(dev); 1788 quirk->exit(dev);
1780 1789
1781 pci_disable_device(dev); 1790 pci_disable_device(dev);
1782 1791
1783 kfree(priv); 1792 kfree(priv);
1784 }
1785} 1793}
1786 1794
1787static int pciserial_suspend_one(struct pci_dev *dev, pm_message_t state) 1795static int pciserial_suspend_one(struct pci_dev *dev, pm_message_t state)
@@ -1978,6 +1986,9 @@ static struct pci_device_id serial_pci_tbl[] = {
1978 PCI_VENDOR_ID_SPECIALIX, PCI_SUBDEVICE_ID_SPECIALIX_SPEED4, 0, 0, 1986 PCI_VENDOR_ID_SPECIALIX, PCI_SUBDEVICE_ID_SPECIALIX_SPEED4, 0, 0,
1979 pbn_b0_4_921600 }, 1987 pbn_b0_4_921600 },
1980 { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954, 1988 { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954,
1989 PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL, 0, 0,
1990 pbn_b0_4_1152000 },
1991 { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954,
1981 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1992 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
1982 pbn_b0_4_115200 }, 1993 pbn_b0_4_115200 },
1983 { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952, 1994 { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952,