mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-20 16:30:53 +00:00
Blackfin serial driver: pending a unique anomaly id, tie the break flood issue to ANOMALY_05000230
pending a unique anomaly id, tie the break flood issue to ANOMALY_05000230 as when that was fixed, the fallout also fixed the break flood Signed-off-by: Mike Frysinger <michael.frysinger@analog.com> Signed-off-by: Bryan Wu <bryan.wu@analog.com>
This commit is contained in:
parent
85a75996ed
commit
bbf275f092
@ -231,12 +231,10 @@ static void bfin_serial_rx_chars(struct bfin_serial_port *uart)
|
|||||||
{
|
{
|
||||||
struct tty_struct *tty = uart->port.info->tty;
|
struct tty_struct *tty = uart->port.info->tty;
|
||||||
unsigned int status, ch, flg;
|
unsigned int status, ch, flg;
|
||||||
|
static int in_break = 0;
|
||||||
#ifdef CONFIG_KGDB_UART
|
#ifdef CONFIG_KGDB_UART
|
||||||
struct pt_regs *regs = get_irq_regs();
|
struct pt_regs *regs = get_irq_regs();
|
||||||
#endif
|
#endif
|
||||||
#ifdef BF533_FAMILY
|
|
||||||
static int in_break = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
status = UART_GET_LSR(uart);
|
status = UART_GET_LSR(uart);
|
||||||
ch = UART_GET_CHAR(uart);
|
ch = UART_GET_CHAR(uart);
|
||||||
@ -262,29 +260,30 @@ static void bfin_serial_rx_chars(struct bfin_serial_port *uart)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BF533_FAMILY
|
if (ANOMALY_05000230) {
|
||||||
/* The BF533 family of processors have a nice misbehavior where
|
/* The BF533 family of processors have a nice misbehavior where
|
||||||
* they continuously generate characters for a "single" break.
|
* they continuously generate characters for a "single" break.
|
||||||
* We have to basically ignore this flood until the "next" valid
|
* We have to basically ignore this flood until the "next" valid
|
||||||
* character comes across. All other Blackfin families operate
|
* character comes across. All other Blackfin families operate
|
||||||
* properly though.
|
* properly though.
|
||||||
*/
|
* Note: While Anomaly 05000230 does not directly address this,
|
||||||
if (in_break) {
|
* the changes that went in for it also fixed this issue.
|
||||||
if (ch != 0) {
|
*/
|
||||||
in_break = 0;
|
if (in_break) {
|
||||||
ch = UART_GET_CHAR(uart);
|
if (ch != 0) {
|
||||||
if (bfin_revid() < 5)
|
in_break = 0;
|
||||||
|
ch = UART_GET_CHAR(uart);
|
||||||
|
if (bfin_revid() < 5)
|
||||||
|
return;
|
||||||
|
} else
|
||||||
return;
|
return;
|
||||||
} else
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (status & BI) {
|
if (status & BI) {
|
||||||
#ifdef BF533_FAMILY
|
if (ANOMALY_05000230)
|
||||||
in_break = 1;
|
in_break = 1;
|
||||||
#endif
|
|
||||||
uart->port.icount.brk++;
|
uart->port.icount.brk++;
|
||||||
if (uart_handle_break(&uart->port))
|
if (uart_handle_break(&uart->port))
|
||||||
goto ignore_char;
|
goto ignore_char;
|
||||||
|
Loading…
Reference in New Issue
Block a user