mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +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
1 changed files with 21 additions and 22 deletions
|
@ -231,12 +231,10 @@ static void bfin_serial_rx_chars(struct bfin_serial_port *uart)
|
|||
{
|
||||
struct tty_struct *tty = uart->port.info->tty;
|
||||
unsigned int status, ch, flg;
|
||||
static int in_break = 0;
|
||||
#ifdef CONFIG_KGDB_UART
|
||||
struct pt_regs *regs = get_irq_regs();
|
||||
#endif
|
||||
#ifdef BF533_FAMILY
|
||||
static int in_break = 0;
|
||||
#endif
|
||||
|
||||
status = UART_GET_LSR(uart);
|
||||
ch = UART_GET_CHAR(uart);
|
||||
|
@ -262,29 +260,30 @@ static void bfin_serial_rx_chars(struct bfin_serial_port *uart)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef BF533_FAMILY
|
||||
/* The BF533 family of processors have a nice misbehavior where
|
||||
* they continuously generate characters for a "single" break.
|
||||
* We have to basically ignore this flood until the "next" valid
|
||||
* character comes across. All other Blackfin families operate
|
||||
* properly though.
|
||||
*/
|
||||
if (in_break) {
|
||||
if (ch != 0) {
|
||||
in_break = 0;
|
||||
ch = UART_GET_CHAR(uart);
|
||||
if (bfin_revid() < 5)
|
||||
|
||||
if (ANOMALY_05000230) {
|
||||
/* The BF533 family of processors have a nice misbehavior where
|
||||
* they continuously generate characters for a "single" break.
|
||||
* We have to basically ignore this flood until the "next" valid
|
||||
* character comes across. All other Blackfin families operate
|
||||
* properly though.
|
||||
* Note: While Anomaly 05000230 does not directly address this,
|
||||
* the changes that went in for it also fixed this issue.
|
||||
*/
|
||||
if (in_break) {
|
||||
if (ch != 0) {
|
||||
in_break = 0;
|
||||
ch = UART_GET_CHAR(uart);
|
||||
if (bfin_revid() < 5)
|
||||
return;
|
||||
} else
|
||||
return;
|
||||
} else
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (status & BI) {
|
||||
#ifdef BF533_FAMILY
|
||||
in_break = 1;
|
||||
#endif
|
||||
if (ANOMALY_05000230)
|
||||
in_break = 1;
|
||||
uart->port.icount.brk++;
|
||||
if (uart_handle_break(&uart->port))
|
||||
goto ignore_char;
|
||||
|
|
Loading…
Reference in a new issue