diff options
-rw-r--r-- | drivers/tty/serial/8250/8250.c | 4 | ||||
-rw-r--r-- | drivers/tty/serial/8250/8250_pci.c | 17 | ||||
-rw-r--r-- | include/linux/serial_core.h | 1 |
3 files changed, 2 insertions, 20 deletions
diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c index 5b149b466ec8..56492d208a7a 100644 --- a/drivers/tty/serial/8250/8250.c +++ b/drivers/tty/serial/8250/8250.c | |||
@@ -1572,13 +1572,11 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) | |||
1572 | do { | 1572 | do { |
1573 | struct uart_8250_port *up; | 1573 | struct uart_8250_port *up; |
1574 | struct uart_port *port; | 1574 | struct uart_port *port; |
1575 | bool skip; | ||
1576 | 1575 | ||
1577 | up = list_entry(l, struct uart_8250_port, list); | 1576 | up = list_entry(l, struct uart_8250_port, list); |
1578 | port = &up->port; | 1577 | port = &up->port; |
1579 | skip = pass_counter && up->port.flags & UPF_IIR_ONCE; | ||
1580 | 1578 | ||
1581 | if (!skip && port->handle_irq(port)) { | 1579 | if (port->handle_irq(port)) { |
1582 | handled = 1; | 1580 | handled = 1; |
1583 | end = NULL; | 1581 | end = NULL; |
1584 | } else if (end == NULL) | 1582 | } else if (end == NULL) |
diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c index 1d4ccf8c8874..105dcfbd3d33 100644 --- a/drivers/tty/serial/8250/8250_pci.c +++ b/drivers/tty/serial/8250/8250_pci.c | |||
@@ -1092,14 +1092,6 @@ static int skip_tx_en_setup(struct serial_private *priv, | |||
1092 | return pci_default_setup(priv, board, port, idx); | 1092 | return pci_default_setup(priv, board, port, idx); |
1093 | } | 1093 | } |
1094 | 1094 | ||
1095 | static int kt_serial_setup(struct serial_private *priv, | ||
1096 | const struct pciserial_board *board, | ||
1097 | struct uart_port *port, int idx) | ||
1098 | { | ||
1099 | port->flags |= UPF_IIR_ONCE; | ||
1100 | return skip_tx_en_setup(priv, board, port, idx); | ||
1101 | } | ||
1102 | |||
1103 | static int pci_eg20t_init(struct pci_dev *dev) | 1095 | static int pci_eg20t_init(struct pci_dev *dev) |
1104 | { | 1096 | { |
1105 | #if defined(CONFIG_SERIAL_PCH_UART) || defined(CONFIG_SERIAL_PCH_UART_MODULE) | 1097 | #if defined(CONFIG_SERIAL_PCH_UART) || defined(CONFIG_SERIAL_PCH_UART_MODULE) |
@@ -1118,6 +1110,7 @@ pci_xr17c154_setup(struct serial_private *priv, | |||
1118 | return pci_default_setup(priv, board, port, idx); | 1110 | return pci_default_setup(priv, board, port, idx); |
1119 | } | 1111 | } |
1120 | 1112 | ||
1113 | /* This should be in linux/pci_ids.h */ | ||
1121 | #define PCI_VENDOR_ID_SBSMODULARIO 0x124B | 1114 | #define PCI_VENDOR_ID_SBSMODULARIO 0x124B |
1122 | #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B | 1115 | #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B |
1123 | #define PCI_DEVICE_ID_OCTPRO 0x0001 | 1116 | #define PCI_DEVICE_ID_OCTPRO 0x0001 |
@@ -1147,7 +1140,6 @@ pci_xr17c154_setup(struct serial_private *priv, | |||
1147 | #define PCI_DEVICE_ID_OXSEMI_16PCI958 0x9538 | 1140 | #define PCI_DEVICE_ID_OXSEMI_16PCI958 0x9538 |
1148 | #define PCIE_DEVICE_ID_NEO_2_OX_IBM 0x00F6 | 1141 | #define PCIE_DEVICE_ID_NEO_2_OX_IBM 0x00F6 |
1149 | #define PCI_DEVICE_ID_PLX_CRONYX_OMEGA 0xc001 | 1142 | #define PCI_DEVICE_ID_PLX_CRONYX_OMEGA 0xc001 |
1150 | #define PCI_DEVICE_ID_INTEL_PATSBURG_KT 0x1d3d | ||
1151 | 1143 | ||
1152 | /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ | 1144 | /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ |
1153 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 | 1145 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 |
@@ -1232,13 +1224,6 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { | |||
1232 | .subdevice = PCI_ANY_ID, | 1224 | .subdevice = PCI_ANY_ID, |
1233 | .setup = ce4100_serial_setup, | 1225 | .setup = ce4100_serial_setup, |
1234 | }, | 1226 | }, |
1235 | { | ||
1236 | .vendor = PCI_VENDOR_ID_INTEL, | ||
1237 | .device = PCI_DEVICE_ID_INTEL_PATSBURG_KT, | ||
1238 | .subvendor = PCI_ANY_ID, | ||
1239 | .subdevice = PCI_ANY_ID, | ||
1240 | .setup = kt_serial_setup, | ||
1241 | }, | ||
1242 | /* | 1227 | /* |
1243 | * ITE | 1228 | * ITE |
1244 | */ | 1229 | */ |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index f51bf2e70c69..882f1d61aa56 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -357,7 +357,6 @@ struct uart_port { | |||
357 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) | 357 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) |
358 | #define UPF_SHARE_IRQ ((__force upf_t) (1 << 24)) | 358 | #define UPF_SHARE_IRQ ((__force upf_t) (1 << 24)) |
359 | #define UPF_EXAR_EFR ((__force upf_t) (1 << 25)) | 359 | #define UPF_EXAR_EFR ((__force upf_t) (1 << 25)) |
360 | #define UPF_IIR_ONCE ((__force upf_t) (1 << 26)) | ||
361 | /* The exact UART type is known and should not be probed. */ | 360 | /* The exact UART type is known and should not be probed. */ |
362 | #define UPF_FIXED_TYPE ((__force upf_t) (1 << 27)) | 361 | #define UPF_FIXED_TYPE ((__force upf_t) (1 << 27)) |
363 | #define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28)) | 362 | #define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28)) |