mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 22:44:27 +08:00
serial: 8250_omap: Fix Errata i2310 with RX FIFO level check
commitc128a1b052
upstream. Errata i2310[0] says, Erroneous timeout can be triggered, if this Erroneous interrupt is not cleared then it may leads to storm of interrupts. Commit9d141c1e61
("serial: 8250_omap: Implementation of Errata i2310") which added the workaround but missed ensuring RX FIFO is really empty before applying the errata workaround as recommended in the errata text. Fix this by adding back check for UART_OMAP_RX_LVL to be 0 for workaround to take effect. [0] https://www.ti.com/lit/pdf/sprz536 page 23 Fixes:9d141c1e61
("serial: 8250_omap: Implementation of Errata i2310") Cc: stable@vger.kernel.org Reported-by: Vignesh Raghavendra <vigneshr@ti.com> Closes: https://lore.kernel.org/all/e96d0c55-0b12-4cbf-9d23-48963543de49@ti.com/ Signed-off-by: Udit Kumar <u-kumar1@ti.com> Link: https://lore.kernel.org/r/20240625160725.2102194-1-u-kumar1@ti.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
633c861c0e
commit
18630d83b7
@ -655,7 +655,8 @@ static irqreturn_t omap8250_irq(int irq, void *dev_id)
|
||||
* https://www.ti.com/lit/pdf/sprz536
|
||||
*/
|
||||
if (priv->habit & UART_RX_TIMEOUT_QUIRK &&
|
||||
(iir & UART_IIR_RX_TIMEOUT) == UART_IIR_RX_TIMEOUT) {
|
||||
(iir & UART_IIR_RX_TIMEOUT) == UART_IIR_RX_TIMEOUT &&
|
||||
serial_port_in(port, UART_OMAP_RX_LVL) == 0) {
|
||||
unsigned char efr2, timeout_h, timeout_l;
|
||||
|
||||
efr2 = serial_in(up, UART_OMAP_EFR2);
|
||||
|
Loading…
Reference in New Issue
Block a user