diff options
author | Dan Williams <dan.j.williams@intel.com> | 2012-04-06 14:49:44 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-04-09 13:34:52 -0400 |
commit | 49b532f96fda23663f8be35593d1c1372c0f91e0 (patch) | |
tree | 778aacfa431d612f03a136847a0ebe84a9ffe82a /drivers/tty/serial/8250/8250_pci.c | |
parent | 3579812373aba92b2f3b632bdf99329bc3c05d62 (diff) |
Revert "serial/8250_pci: setup-quirk workaround for the kt serial controller"
This reverts commit 448ac154c957c4580531fa0c8f2045816fe2f0e7.
The semantic of UPF_IIR_ONCE is only guaranteed to workaround the race
condition in the kt serial's iir register if the only source of
interrupts is THRE (fifo-empty) events. An modem status event at the
wrong time can again cause an iir read to drop the 'empty' status
leading to a hang. So, revert this in preparation for using the
existing "I don't trust my iir register" workaround in the 8250 core
(UART_BUG_THRE).
[stable: 3.3.x]
Cc: stable <stable@vger.kernel.org>
Acked-by: Alan Cox <alan@linux.intel.com>
Cc: Sudhakar Mamillapalli <sudhakar@fb.com>
Reported-by: Nhan H Mai <nhan.h.mai@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/8250/8250_pci.c')
-rw-r--r-- | drivers/tty/serial/8250/8250_pci.c | 17 |
1 files changed, 1 insertions, 16 deletions
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 | */ |