aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/8250/8250_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/tty/serial/8250/8250_pci.c')
-rw-r--r--drivers/tty/serial/8250/8250_pci.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index 0be8dd84f9dc..98e5a6d9cfef 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -1540,6 +1540,14 @@ static void intel_mid_set_termios(struct uart_port *p,
1540 1540
1541 serial8250_do_set_termios(p, termios, old); 1541 serial8250_do_set_termios(p, termios, old);
1542} 1542}
1543
1544static void intel_mid_set_termios_38_4M(struct uart_port *p,
1545 struct ktermios *termios,
1546 struct ktermios *old)
1547{
1548 intel_mid_set_termios(p, termios, old, 38400000);
1549}
1550
1543static void intel_mid_set_termios_50M(struct uart_port *p, 1551static void intel_mid_set_termios_50M(struct uart_port *p,
1544 struct ktermios *termios, 1552 struct ktermios *termios,
1545 struct ktermios *old) 1553 struct ktermios *old)
@@ -1636,6 +1644,27 @@ static int pnw_serial_setup(struct serial_private *priv,
1636 return intel_mid_serial_setup(priv, board, port, idx, index, dma_dev); 1644 return intel_mid_serial_setup(priv, board, port, idx, index, dma_dev);
1637} 1645}
1638 1646
1647#define PCI_DEVICE_ID_INTEL_TNG_UART 0x1191
1648
1649static int tng_serial_setup(struct serial_private *priv,
1650 const struct pciserial_board *board,
1651 struct uart_8250_port *port, int idx)
1652{
1653 struct pci_dev *pdev = priv->dev;
1654 struct pci_dev *dma_dev;
1655 int index = PCI_FUNC(pdev->devfn);
1656
1657 /* Currently no support for HSU port0 */
1658 if (index-- == 0)
1659 return -ENODEV;
1660
1661 dma_dev = pci_get_slot(pdev->bus, PCI_DEVFN(5, 0));
1662
1663 port->port.set_termios = intel_mid_set_termios_38_4M;
1664
1665 return intel_mid_serial_setup(priv, board, port, idx, index, dma_dev);
1666}
1667
1639static int 1668static int
1640pci_omegapci_setup(struct serial_private *priv, 1669pci_omegapci_setup(struct serial_private *priv,
1641 const struct pciserial_board *board, 1670 const struct pciserial_board *board,
@@ -2114,6 +2143,13 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
2114 }, 2143 },
2115 { 2144 {
2116 .vendor = PCI_VENDOR_ID_INTEL, 2145 .vendor = PCI_VENDOR_ID_INTEL,
2146 .device = PCI_DEVICE_ID_INTEL_TNG_UART,
2147 .subvendor = PCI_ANY_ID,
2148 .subdevice = PCI_ANY_ID,
2149 .setup = tng_serial_setup,
2150 },
2151 {
2152 .vendor = PCI_VENDOR_ID_INTEL,
2117 .device = PCI_DEVICE_ID_INTEL_BSW_UART1, 2153 .device = PCI_DEVICE_ID_INTEL_BSW_UART1,
2118 .subvendor = PCI_ANY_ID, 2154 .subvendor = PCI_ANY_ID,
2119 .subdevice = PCI_ANY_ID, 2155 .subdevice = PCI_ANY_ID,
@@ -2990,6 +3026,7 @@ enum pci_board_num_t {
2990 pbn_ce4100_1_115200, 3026 pbn_ce4100_1_115200,
2991 pbn_byt, 3027 pbn_byt,
2992 pbn_pnw, 3028 pbn_pnw,
3029 pbn_tng,
2993 pbn_qrk, 3030 pbn_qrk,
2994 pbn_omegapci, 3031 pbn_omegapci,
2995 pbn_NETMOS9900_2s_115200, 3032 pbn_NETMOS9900_2s_115200,
@@ -3761,6 +3798,11 @@ static struct pciserial_board pci_boards[] = {
3761 .num_ports = 1, 3798 .num_ports = 1,
3762 .base_baud = 115200, 3799 .base_baud = 115200,
3763 }, 3800 },
3801 [pbn_tng] = {
3802 .flags = FL_BASE0,
3803 .num_ports = 1,
3804 .base_baud = 1843200,
3805 },
3764 [pbn_qrk] = { 3806 [pbn_qrk] = {
3765 .flags = FL_BASE0, 3807 .flags = FL_BASE0,
3766 .num_ports = 1, 3808 .num_ports = 1,
@@ -5507,6 +5549,13 @@ static struct pci_device_id serial_pci_tbl[] = {
5507 pbn_pnw}, 5549 pbn_pnw},
5508 5550
5509 /* 5551 /*
5552 * Intel Tangier
5553 */
5554 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TNG_UART,
5555 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
5556 pbn_tng},
5557
5558 /*
5510 * Intel Quark x1000 5559 * Intel Quark x1000
5511 */ 5560 */
5512 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_QRK_UART, 5561 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_QRK_UART,