diff options
Diffstat (limited to 'drivers/tty/serial/8250/8250_pci.c')
-rw-r--r-- | drivers/tty/serial/8250/8250_pci.c | 49 |
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 | |||
1544 | static 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 | |||
1543 | static void intel_mid_set_termios_50M(struct uart_port *p, | 1551 | static 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 | |||
1649 | static 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 | |||
1639 | static int | 1668 | static int |
1640 | pci_omegapci_setup(struct serial_private *priv, | 1669 | pci_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, |