Lines Matching +full:max +full:- +full:channels +full:- +full:clocked

1 // SPDX-License-Identifier: GPL-2.0
3 * Probe module for 8250/16550-type PCI serial ports.
31 * > 0 - number of ports
32 * = 0 - use board->num_ports
33 * < 0 - error
83 "Please send the output of lspci -vv, this\n" in moan_device()
86 "modem board to <linux-serial@vger.kernel.org>.\n", in moan_device()
87 str, dev->vendor, dev->device, in moan_device()
88 dev->subsystem_vendor, dev->subsystem_device); in moan_device()
95 return serial8250_pci_setup_port(priv->dev, port, bar, offset, regshift); in setup_port()
99 * ADDI-DATA GmbH communication cards <info@addi-data.com>
105 unsigned int bar = 0, offset = board->first_offset; in addidata_apci7800_setup()
106 bar = FL_GET_BASE(board->flags); in addidata_apci7800_setup()
109 offset += idx * board->uart_offset; in addidata_apci7800_setup()
112 offset += ((idx - 2) * board->uart_offset); in addidata_apci7800_setup()
115 offset += ((idx - 4) * board->uart_offset); in addidata_apci7800_setup()
118 offset += ((idx - 6) * board->uart_offset); in addidata_apci7800_setup()
121 return setup_port(priv, port, bar, offset, board->reg_shift); in addidata_apci7800_setup()
126 * Not that ugly ;) -- HW
132 unsigned int bar, offset = board->first_offset; in afavlab_setup()
134 bar = FL_GET_BASE(board->flags); in afavlab_setup()
139 offset += (idx - 4) * board->uart_offset; in afavlab_setup()
142 return setup_port(priv, port, bar, offset, board->reg_shift); in afavlab_setup()
147 * different versions. N-class, L2000 and A500 have two Diva chips, each
156 switch (dev->subsystem_device) { in pci_hp_diva_init()
187 unsigned int offset = board->first_offset; in pci_hp_diva_setup()
188 unsigned int bar = FL_GET_BASE(board->flags); in pci_hp_diva_setup()
190 switch (priv->dev->subsystem_device) { in pci_hp_diva_setup()
205 offset += idx * board->uart_offset; in pci_hp_diva_setup()
207 return setup_port(priv, port, bar, offset, board->reg_shift); in pci_hp_diva_setup()
217 if (!(dev->subsystem_device & 0x1000)) in pci_inteli960ni_init()
218 return -ENODEV; in pci_inteli960ni_init()
224 return -ENODEV; in pci_inteli960ni_init()
246 if (dev->vendor == PCI_VENDOR_ID_PANACOM || in pci_plx9050_init()
247 dev->subsystem_vendor == PCI_SUBVENDOR_ID_EXSYS) in pci_plx9050_init()
250 if ((dev->vendor == PCI_VENDOR_ID_PLX) && in pci_plx9050_init()
251 (dev->device == PCI_DEVICE_ID_PLX_ROMULUS)) in pci_plx9050_init()
266 return -ENOMEM; in pci_plx9050_init()
351 /* SBS Technologies Inc. PMC-OCTPRO and P-OCTAL cards */
356 unsigned int bar, offset = board->first_offset; in sbs_setup()
361 /* first four channels map to 0, 0x100, 0x200, 0x300 */ in sbs_setup()
362 offset += idx * board->uart_offset; in sbs_setup()
364 /* last four channels map to 0x1000, 0x1100, 0x1200, 0x1300 */ in sbs_setup()
365 offset += idx * board->uart_offset + 0xC00; in sbs_setup()
366 } else /* we have only 8 ports on PMC-OCTALPRO */ in sbs_setup()
369 return setup_port(priv, port, bar, offset, board->reg_shift); in sbs_setup()
379 /* global control register offset for SBS PMC-OctalPro */
389 return -ENOMEM; in sbs_init()
390 /* Set bit-4 Control Register (UART RESET) in to reset the uarts */ in sbs_init()
395 /* Set bit-2 (INTENABLE) of Control Register */ in sbs_init()
403 * Disables the global interrupt of PMC-OctalPro
419 * the UART clocking frequency. Each UART can be clocked independently
422 * version of serial driver doesn't support differently clocked UART's
432 * - 10x cards have control registers in IO and/or memory space;
433 * - 20x cards have control registers in standard PCI configuration space.
439 * 16954 quad UART PCI chip clocked by 18.432 MHz quartz.
452 switch (dev->device & 0xfff8) { in pci_siig10x_init()
466 return -ENOMEM; in pci_siig10x_init()
486 if (((dev->device & 0xfffc) == PCI_DEVICE_ID_SIIG_2S_20x) || in pci_siig20x_init()
487 ((dev->device & 0xfffc) == PCI_DEVICE_ID_SIIG_2S1P_20x)) { in pci_siig20x_init()
496 unsigned int type = dev->device & 0xff00; in pci_siig_init()
504 return -ENODEV; in pci_siig_init()
511 unsigned int bar = FL_GET_BASE(board->flags) + idx, offset = 0; in pci_siig_setup()
515 offset = (idx - 4) * 8; in pci_siig_setup()
570 * (0,2,3,5,6: serial only -- 7,8,9: serial + parallel) in pci_timedia_probe()
572 if ((dev->subsystem_device & 0x00f0) >= 0x70) { in pci_timedia_probe()
574 dev->subsystem_device); in pci_timedia_probe()
575 return -ENODEV; in pci_timedia_probe()
589 if (dev->subsystem_device == ids[j]) in pci_timedia_init()
597 * Ugh, this is ugly as all hell --- TYT
604 unsigned int bar = 0, offset = board->first_offset; in pci_timedia_setup()
611 offset = board->uart_offset; in pci_timedia_setup()
618 offset = board->uart_offset; in pci_timedia_setup()
624 bar = idx - 2; in pci_timedia_setup()
627 return setup_port(priv, port, bar, offset, board->reg_shift); in pci_timedia_setup()
638 unsigned int bar, offset = board->first_offset; in titan_400l_800l_setup()
649 offset = (idx - 2) * board->uart_offset; in titan_400l_800l_setup()
652 return setup_port(priv, port, bar, offset, board->reg_shift); in titan_400l_800l_setup()
673 return -ENOMEM; in pci_ni8420_init()
704 return -ENOMEM; in pci_ni8430_init()
711 pcibios_resource_to_bus(dev->bus, &region, &dev->resource[bar]); in pci_ni8430_init()
739 struct pci_dev *dev = priv->dev; in pci_ni8430_setup()
741 unsigned int bar, offset = board->first_offset; in pci_ni8430_setup()
743 if (idx >= board->num_ports) in pci_ni8430_setup()
746 bar = FL_GET_BASE(board->flags); in pci_ni8430_setup()
747 offset += idx * board->uart_offset; in pci_ni8430_setup()
751 return -ENOMEM; in pci_ni8430_setup()
759 return setup_port(priv, port, bar, offset, board->reg_shift); in pci_ni8430_setup()
768 if ((priv->dev->device != PCI_DEVICE_ID_NETMOS_9865) && in pci_netmos_9900_setup()
769 (priv->dev->subsystem_device & 0xff00) == 0x3000) { in pci_netmos_9900_setup()
775 return setup_port(priv, port, bar, 0, board->reg_shift); in pci_netmos_9900_setup()
784 * 9900 has varying capabilities and can cascade to sub-controllers
791 unsigned int c = dev->class; in pci_netmos_9900_numports()
800 if ((pi == 0) && (dev->device == PCI_DEVICE_ID_NETMOS_9900)) { in pci_netmos_9900_numports()
807 sub_serports = dev->subsystem_device & 0xf; in pci_netmos_9900_numports()
822 unsigned int num_serial = dev->subsystem_device & 0xf; in pci_netmos_init()
824 if ((dev->device == PCI_DEVICE_ID_NETMOS_9901) || in pci_netmos_init()
825 (dev->device == PCI_DEVICE_ID_NETMOS_9865)) in pci_netmos_init()
828 if (dev->subsystem_vendor == PCI_VENDOR_ID_IBM && in pci_netmos_init()
829 dev->subsystem_device == 0x0299) in pci_netmos_init()
832 switch (dev->device) { /* FALLTHROUGH on all */ in pci_netmos_init()
846 return -ENODEV; in pci_netmos_init()
871 /* I/O space size (bits 26-24; 8 bytes = 011b) */
873 /* I/O space size (bits 26-24; 32 bytes = 101b) */
888 /* search for the base-ioport */ in pci_ite887x_init()
893 /* write POSIO0R - speed | size | ioport */ in pci_ite887x_init()
897 /* write INTCBAR - ioport */ in pci_ite887x_init()
905 release_region(iobase->start, ITE_887x_IOSIZE); in pci_ite887x_init()
911 return -ENODEV; in pci_ite887x_init()
915 type = inb(iobase->start + 0x18) & 0x0f; in pci_ite887x_init()
933 ret = -ENODEV; in pci_ite887x_init()
955 miscr &= ~(0xf << (12 - 4 * i)); in pci_ite887x_init()
957 miscr |= 1 << (23 - i); in pci_ite887x_init()
964 release_region(iobase->start, ITE_887x_IOSIZE); in pci_ite887x_init()
973 /* the ioport is bit 0-15 in POSIO0R */ in pci_ite887x_exit()
989 if (dev->vendor == PCI_VENDOR_ID_OXSEMI && in pci_oxsemi_tornado_p()
990 (dev->device & 0xf000) != 0xc000) in pci_oxsemi_tornado_p()
994 if (dev->vendor == PCI_VENDOR_ID_ENDRUN && in pci_oxsemi_tornado_p()
995 (dev->device & 0xf000) != 0xe000) in pci_oxsemi_tornado_p()
1015 return -ENOMEM; in pci_oxsemi_tornado_init()
1023 dev->vendor == PCI_VENDOR_ID_ENDRUN ? in pci_oxsemi_tornado_init()
1030 /* Tornado-specific constants for the TCR and CPR registers; see below. */
1048 * unsigned 16-bit integer.
1062 * divisor required would be out of its unsigned 16-bit integer range.
1065 * 4-bit value of the oversampling rate and the 9-bit value of the clock
1110 unsigned int sclk = port->uartclk * 2; in pci_oxsemi_tornado_get_divisor()
1120 if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST) { in pci_oxsemi_tornado_get_divisor()
1121 unsigned int cust_div = port->custom_divisor; in pci_oxsemi_tornado_get_divisor()
1142 srem = spre - srem; in pci_oxsemi_tornado_get_divisor()
1205 * For Tornado devices we force MCR[7] set for the Divide-by-M N/8 baud rate
1213 up->mcr |= UART_MCR_CLKSEL; in pci_oxsemi_tornado_set_mctrl()
1225 struct pci_dev *dev = priv->dev; in pci_oxsemi_tornado_setup()
1228 up->port.flags |= UPF_FULL_PROBE; in pci_oxsemi_tornado_setup()
1229 up->port.get_divisor = pci_oxsemi_tornado_get_divisor; in pci_oxsemi_tornado_setup()
1230 up->port.set_divisor = pci_oxsemi_tornado_set_divisor; in pci_oxsemi_tornado_setup()
1231 up->port.set_mctrl = pci_oxsemi_tornado_set_mctrl; in pci_oxsemi_tornado_setup()
1278 unsigned long base = port->port.iobase; in pci_quatech_rqopr()
1290 unsigned long base = port->port.iobase; in pci_quatech_wqopr()
1302 unsigned long base = port->port.iobase; in pci_quatech_rqmcr()
1318 unsigned long base = port->port.iobase; in pci_quatech_wqmcr()
1332 unsigned long base = port->port.iobase; in pci_quatech_has_qmcr()
1356 return -EINVAL; in pci_quatech_test()
1360 return -EINVAL; in pci_quatech_test()
1364 return -EINVAL; in pci_quatech_test()
1368 return -EINVAL; in pci_quatech_test()
1440 amcc = match->driver_data; in pci_quatech_init()
1442 pci_err(dev, "unknown port type '0x%04X'.\n", dev->device); in pci_quatech_init()
1463 port->port.iobase = pci_resource_start(priv->dev, FL_GET_BASE(board->flags)); in pci_quatech_setup()
1465 port->port.uartclk = pci_quatech_clock(port); in pci_quatech_setup()
1468 pci_warn(priv->dev, "software control of RS422 features not currently supported.\n"); in pci_quatech_setup()
1476 unsigned int bar, offset = board->first_offset, maxnr; in pci_default_setup()
1478 bar = FL_GET_BASE(board->flags); in pci_default_setup()
1479 if (board->flags & FL_BASE_BARS) in pci_default_setup()
1482 offset += idx * board->uart_offset; in pci_default_setup()
1484 maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) >> in pci_default_setup()
1485 (board->reg_shift + 3); in pci_default_setup()
1487 if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr) in pci_default_setup()
1490 return setup_port(priv, port, bar, offset, board->reg_shift); in pci_default_setup()
1500 ret = setup_port(priv, port, idx, 0, board->reg_shift); in ce4100_serial_setup()
1501 port->port.iotype = UPIO_MEM32; in ce4100_serial_setup()
1502 port->port.type = PORT_XSCALE; in ce4100_serial_setup()
1503 port->port.flags = (port->port.flags | UPF_FIXED_PORT | UPF_FIXED_TYPE); in ce4100_serial_setup()
1504 port->port.regshift = 2; in ce4100_serial_setup()
1524 port->port.type = PORT_BRCM_TRUMANAGE; in pci_brcm_trumanage_setup()
1525 port->port.flags = (port->port.flags | UPF_FIXED_PORT | UPF_FIXED_TYPE); in pci_brcm_trumanage_setup()
1538 struct pci_dev *pci_dev = to_pci_dev(port->dev); in pci_fintek_rs485_config()
1540 u8 *index = (u8 *) port->private_data; in pci_fintek_rs485_config()
1544 if (rs485->flags & SER_RS485_ENABLED) { in pci_fintek_rs485_config()
1548 if (rs485->flags & SER_RS485_RTS_ON_SEND) { in pci_fintek_rs485_config()
1574 struct pci_dev *pdev = priv->dev; in pci_fintek_setup()
1586 port->port.iotype = UPIO_PORT; in pci_fintek_setup()
1587 port->port.iobase = iobase; in pci_fintek_setup()
1588 port->port.rs485_config = pci_fintek_rs485_config; in pci_fintek_setup()
1589 port->port.rs485_supported = pci_fintek_rs485_supported; in pci_fintek_setup()
1591 data = devm_kzalloc(&pdev->dev, sizeof(u8), GFP_KERNEL); in pci_fintek_setup()
1593 return -ENOMEM; in pci_fintek_setup()
1597 port->port.private_data = data; in pci_fintek_setup()
1613 return -ENODEV; in pci_fintek_init()
1615 switch (dev->device) { in pci_fintek_init()
1618 max_port = dev->device & 0xff; in pci_fintek_init()
1624 return -EINVAL; in pci_fintek_init()
1642 /* Select 128-byte FIFO and 8x FIFO threshold */ in pci_fintek_init()
1653 pci_write_config_byte(dev, config_base + 0x06, dev->irq); in pci_fintek_init()
1668 struct f815xxa_data *data = p->private_data; in f815xxa_mem_serial_out()
1671 spin_lock_irqsave(&data->lock, flags); in f815xxa_mem_serial_out()
1672 writeb(value, p->membase + offset); in f815xxa_mem_serial_out()
1673 readb(p->membase + UART_SCR); /* Dummy read for flush pcie tx queue */ in f815xxa_mem_serial_out()
1674 spin_unlock_irqrestore(&data->lock, flags); in f815xxa_mem_serial_out()
1681 struct pci_dev *pdev = priv->dev; in pci_fintek_f815xxa_setup()
1684 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in pci_fintek_f815xxa_setup()
1686 return -ENOMEM; in pci_fintek_f815xxa_setup()
1688 data->idx = idx; in pci_fintek_f815xxa_setup()
1689 spin_lock_init(&data->lock); in pci_fintek_f815xxa_setup()
1691 port->port.private_data = data; in pci_fintek_f815xxa_setup()
1692 port->port.iotype = UPIO_MEM; in pci_fintek_f815xxa_setup()
1693 port->port.flags |= UPF_IOREMAP; in pci_fintek_f815xxa_setup()
1694 port->port.mapbase = pci_resource_start(pdev, 0) + 8 * idx; in pci_fintek_f815xxa_setup()
1695 port->port.serial_out = f815xxa_mem_serial_out; in pci_fintek_f815xxa_setup()
1706 return -ENODEV; in pci_fintek_f815xxa_init()
1708 switch (dev->device) { in pci_fintek_f815xxa_init()
1711 max_port = dev->device & 0xff; in pci_fintek_f815xxa_init()
1717 return -EINVAL; in pci_fintek_f815xxa_init()
1727 /* Select 128-byte FIFO and 8x FIFO threshold */ in pci_fintek_f815xxa_init()
1741 port->port.quirks |= UPQ_NO_TXEN_TEST; in skip_tx_en_setup()
1742 pci_dbg(priv->dev, in skip_tx_en_setup()
1744 priv->dev->vendor, priv->dev->device, in skip_tx_en_setup()
1745 priv->dev->subsystem_vendor, priv->dev->subsystem_device); in skip_tx_en_setup()
1773 * that instead. up->ier should be the same value as what is in kt_serial_in()
1776 val = inb(p->iobase + offset); in kt_serial_in()
1779 val = up->ier; in kt_serial_in()
1788 port->port.flags |= UPF_BUG_THRE; in kt_serial_setup()
1789 port->port.serial_in = kt_serial_in; in kt_serial_setup()
1790 port->port.handle_break = kt_handle_break; in kt_serial_setup()
1797 return -ENODEV; in pci_eg20t_init()
1808 port->port.flags |= UPF_FIXED_TYPE; in pci_wch_ch353_setup()
1809 port->port.type = PORT_16550A; in pci_wch_ch353_setup()
1818 port->port.flags |= UPF_FIXED_TYPE; in pci_wch_ch355_setup()
1819 port->port.type = PORT_16550A; in pci_wch_ch355_setup()
1828 port->port.flags |= UPF_FIXED_TYPE; in pci_wch_ch38x_setup()
1829 port->port.type = PORT_16850; in pci_wch_ch38x_setup()
1843 switch (dev->device) { in pci_wch_ch38x_init()
1848 return -EINVAL; in pci_wch_ch38x_init()
1874 port->port.flags |= UPF_FIXED_TYPE; in pci_sunix_setup()
1875 port->port.type = PORT_SUNIX; in pci_sunix_setup()
1879 offset = idx * board->uart_offset; in pci_sunix_setup()
1882 idx -= 4; in pci_sunix_setup()
1884 offset = idx * 64 + offset * board->uart_offset; in pci_sunix_setup()
1895 unsigned int bar = FL_GET_BASE(board->flags); in pci_moxa_setup()
1898 if (board->num_ports == 4 && idx == 3) in pci_moxa_setup()
1899 offset = 7 * board->uart_offset; in pci_moxa_setup()
1901 offset = idx * board->uart_offset; in pci_moxa_setup()
1974 /* Unknown vendors/cards - this should not be in linux/pci_ids.h */
1988 * ADDI-DATA GmbH communication cards <info@addi-data.com>
1998 * AFAVLAB cards - these may be called via parport_serial
2268 * SBS Technologies, Inc., PMC-OCTALPRO 232
2280 * SBS Technologies, Inc., PMC-OCTALPRO 422
2292 * SBS Technologies, Inc., P-Octal 232
2304 * SBS Technologies, Inc., P-Octal 422
2316 * SIIG cards - these may be called via parport_serial
2384 * Netmos cards - these may be called via parport_serial
2433 * Brainboxes devices - all Oxsemi based
2652 * Cronyx Omega PCI (PLX-chip based)
2834 if (quirk_id_matches(quirk->vendor, dev->vendor) && in find_quirk()
2835 quirk_id_matches(quirk->device, dev->device) && in find_quirk()
2836 quirk_id_matches(quirk->subvendor, dev->subsystem_vendor) && in find_quirk()
2837 quirk_id_matches(quirk->subdevice, dev->subsystem_device)) in find_quirk()
2956 * Board-specific versions.
3010 * uart_offset - the space between channels
3011 * reg_shift - describes how the UART registers are mapped
3013 * For example IER register on SBS, Inc. PMC-OctPro is located at
3445 * Entries following this are board-specific.
3449 * Panacom - IOMEM
3473 /* I think this entry is broken - the first_offset looks wrong --rmk */
3525 * Max 256 ports.
3545 * Computone - uses IOMEM.
3579 * PA Semi PWRficient PA6T-1682M on-chip UART
3618 * ADDI-DATA GmbH PCI-Express communication cards <info@addi-data.com>
3807 { PCI_VDEVICE(MOTOROLA, 0x3052), }, /* Motorola Si3052-based modem */
3808 { PCI_DEVICE(0x1543, 0x3052), }, /* Si3052-based modem, default IDs */
3810 /* multi-io cards handled by parport_serial */
3859 if ((((dev->class >> 8) != PCI_CLASS_COMMUNICATION_SERIAL) && in serial_pci_is_class_communication()
3860 ((dev->class >> 8) != PCI_CLASS_COMMUNICATION_MULTISERIAL) && in serial_pci_is_class_communication()
3861 ((dev->class >> 8) != PCI_CLASS_COMMUNICATION_MODEM)) || in serial_pci_is_class_communication()
3862 (dev->class & 0xff) > 6) in serial_pci_is_class_communication()
3863 return -ENODEV; in serial_pci_is_class_communication()
3871 * serial specs. Returns 0 on success, -ENODEV on failure.
3876 int num_iomem, num_port, first_port = -1, i; in serial_pci_guess_board()
3886 if ((dev->class >> 8) == PCI_CLASS_COMMUNICATION_MULTISERIAL) in serial_pci_guess_board()
3887 return -ENODEV; in serial_pci_guess_board()
3893 if (first_port == -1) in serial_pci_guess_board()
3906 board->flags = first_port; in serial_pci_guess_board()
3907 board->num_ports = pci_resource_len(dev, first_port) / 8; in serial_pci_guess_board()
3916 first_port = -1; in serial_pci_guess_board()
3921 (first_port == -1 || (first_port + num_port) == i)) { in serial_pci_guess_board()
3923 if (first_port == -1) in serial_pci_guess_board()
3929 board->flags = first_port | FL_BASE_BARS; in serial_pci_guess_board()
3930 board->num_ports = num_port; in serial_pci_guess_board()
3934 return -ENODEV; in serial_pci_guess_board()
3942 board->num_ports == guessed->num_ports && in serial_pci_matches()
3943 board->base_baud == guessed->base_baud && in serial_pci_matches()
3944 board->uart_offset == guessed->uart_offset && in serial_pci_matches()
3945 board->reg_shift == guessed->reg_shift && in serial_pci_matches()
3946 board->first_offset == guessed->first_offset; in serial_pci_matches()
3957 nr_ports = board->num_ports; in pciserial_init_ports()
3965 * Run the new-style initialization function. in pciserial_init_ports()
3967 * <0 - error in pciserial_init_ports()
3968 * 0 - use board->num_ports in pciserial_init_ports()
3969 * >0 - number of ports in pciserial_init_ports()
3971 if (quirk->init) { in pciserial_init_ports()
3972 rc = quirk->init(dev); in pciserial_init_ports()
3983 priv = ERR_PTR(-ENOMEM); in pciserial_init_ports()
3987 priv->dev = dev; in pciserial_init_ports()
3988 priv->quirk = quirk; in pciserial_init_ports()
3992 uart.port.uartclk = board->base_baud * 16; in pciserial_init_ports()
3994 if (board->flags & FL_NOIRQ) { in pciserial_init_ports()
3998 pci_dbg(dev, "Using MSI(-X) interrupts\n"); in pciserial_init_ports()
4015 uart.port.dev = &dev->dev; in pciserial_init_ports()
4018 if (quirk->setup(priv, board, &uart, i)) in pciserial_init_ports()
4024 priv->line[i] = serial8250_register_8250_port(&uart); in pciserial_init_ports()
4025 if (priv->line[i] < 0) { in pciserial_init_ports()
4029 uart.port.iotype, priv->line[i]); in pciserial_init_ports()
4033 priv->nr = i; in pciserial_init_ports()
4034 priv->board = board; in pciserial_init_ports()
4038 if (quirk->exit) in pciserial_init_ports()
4039 quirk->exit(dev); in pciserial_init_ports()
4050 for (i = 0; i < priv->nr; i++) in pciserial_detach_ports()
4051 serial8250_unregister_port(priv->line[i]); in pciserial_detach_ports()
4056 quirk = find_quirk(priv->dev); in pciserial_detach_ports()
4057 if (quirk->exit) in pciserial_detach_ports()
4058 quirk->exit(priv->dev); in pciserial_detach_ports()
4072 for (i = 0; i < priv->nr; i++) in pciserial_suspend_ports()
4073 if (priv->line[i] >= 0) in pciserial_suspend_ports()
4074 serial8250_suspend_port(priv->line[i]); in pciserial_suspend_ports()
4079 if (priv->quirk->exit) in pciserial_suspend_ports()
4080 priv->quirk->exit(priv->dev); in pciserial_suspend_ports()
4091 if (priv->quirk->init) in pciserial_resume_ports()
4092 priv->quirk->init(priv->dev); in pciserial_resume_ports()
4094 for (i = 0; i < priv->nr; i++) in pciserial_resume_ports()
4095 if (priv->line[i] >= 0) in pciserial_resume_ports()
4096 serial8250_resume_port(priv->line[i]); in pciserial_resume_ports()
4115 if (quirk->probe) { in pciserial_init_one()
4116 rc = quirk->probe(dev); in pciserial_init_one()
4121 if (ent->driver_data >= ARRAY_SIZE(pci_boards)) { in pciserial_init_one()
4122 pci_err(dev, "invalid driver_data: %ld\n", ent->driver_data); in pciserial_init_one()
4123 return -EINVAL; in pciserial_init_one()
4126 board = &pci_boards[ent->driver_data]; in pciserial_init_one()
4130 if (exclude->driver_data) in pciserial_init_one()
4132 (const char *)exclude->driver_data); in pciserial_init_one()
4133 return -ENODEV; in pciserial_init_one()
4141 if (ent->driver_data == pbn_default) { in pciserial_init_one()
4204 * The device may have been disabled. Re-enable it. in pciserial_resume_one()
4209 pci_err(pdev, "Unable to re-enable ports, trying to continue.\n"); in pciserial_resume_one()
4346 /* Unknown card - subdevice 0x1584 */
4351 /* Unknown card - subdevice 0x1588 */
4647 { PCI_VENDOR_ID_MAINPINE, 0x4000, /* IQ Express 1 Port V.34 Super-G3 Fax */
4650 { PCI_VENDOR_ID_MAINPINE, 0x4000, /* IQ Express 2 Port V.34 Super-G3 Fax */
4653 { PCI_VENDOR_ID_MAINPINE, 0x4000, /* IQ Express 4 Port V.34 Super-G3 Fax */
4656 { PCI_VENDOR_ID_MAINPINE, 0x4000, /* IQ Express 8 Port V.34 Super-G3 Fax */
4661 * Digi/IBM PCIe 2-port Async EIA-232 Adapter utilizing OxSemi Tornado
4675 * SBS Technologies, Inc. P-Octal and PMC-OCTPRO cards,
4692 * Digitan DS560-558, from jimd@esoft.com
4968 * Dell Remote Access Card 4 - Tim_T_Murphy@Dell.com
4975 * Dell Remote Access Card III - Tim_T_Murphy@Dell.com
5002 * Xircom RBM56G cardbus modem - Dirk Arnold (temp entry)
5064 * IntaShield IS-100
5070 * IntaShield IS-200
5076 * IntaShield IS-400
5082 * IntaShield IX-100
5089 * IntaShield IX-200
5096 * IntaShield IX-400
5104 * Brainboxes UC-101
5111 * Brainboxes UC-235/246
5122 * Brainboxes UC-253/UC-734
5129 * Brainboxes UC-260/271/701/756
5140 * Brainboxes UC-268
5147 * Brainboxes UC-275/279
5154 * Brainboxes UC-302
5169 * Brainboxes UC-310
5176 * Brainboxes UC-313
5191 * Brainboxes UC-320/324
5198 * Brainboxes UC-346
5209 * Brainboxes UC-357
5224 * Brainboxes UC-368
5231 * Brainboxes UC-420
5238 * Brainboxes UC-607
5253 * Brainboxes UC-836
5260 * Brainboxes UP-189
5275 * Brainboxes UP-200
5290 * Brainboxes UP-869
5305 * Brainboxes UP-880
5320 * Brainboxes PX-101
5331 * Brainboxes PX-235/246
5342 * Brainboxes PX-203/PX-257
5353 * Brainboxes PX-260/PX-701
5360 * Brainboxes PX-275/279
5367 * Brainboxes PX-310
5374 * Brainboxes PX-313
5381 * Brainboxes PX-320/324/PX-376/PX-387
5388 * Brainboxes PX-335/346
5395 * Brainboxes PX-368
5402 * Brainboxes PX-420
5413 * Brainboxes PX-475
5420 * Brainboxes PX-803/PX-857
5435 * Brainboxes PX-820
5446 * Brainboxes PX-846
5458 * Perle PCI-RAS cards
5580 * PA Semi PA6T-1682M on-chip UART
5703 * ADDI-DATA GmbH communication cards <info@addi-data.com>
5903 * AgeStar as-prs2-009
5955 /* MKS Tenta SCOM-080x serial cards */
6020 new = pciserial_init_ports(dev, priv->board); in serial8250_io_resume()