提交 c3c00b6f 编写于 作者: D Daniel Thompson 提交者: Greg Kroah-Hartman

serial: st-asc: Fix SysRq char handling

This driver, like several others, uses the upper bits of the character
to track both real and dummy state. Unfortunately it neglects to mask
these bits properly when passing the character data around. This means
neither break detection nor sysrq character handling work correctly.

This patch adds the requires masking and has been tested to confirm
that it correctly handles magic sysrq sequences on ST's B2020 board.
Signed-off-by: NDaniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 2f310b8e
...@@ -295,7 +295,7 @@ static void asc_receive_chars(struct uart_port *port) ...@@ -295,7 +295,7 @@ static void asc_receive_chars(struct uart_port *port)
status & ASC_STA_OE) { status & ASC_STA_OE) {
if (c & ASC_RXBUF_FE) { if (c & ASC_RXBUF_FE) {
if (c == ASC_RXBUF_FE) { if (c == (ASC_RXBUF_FE | ASC_RXBUF_DUMMY_RX)) {
port->icount.brk++; port->icount.brk++;
if (uart_handle_break(port)) if (uart_handle_break(port))
continue; continue;
...@@ -325,7 +325,7 @@ static void asc_receive_chars(struct uart_port *port) ...@@ -325,7 +325,7 @@ static void asc_receive_chars(struct uart_port *port)
flag = TTY_FRAME; flag = TTY_FRAME;
} }
if (uart_handle_sysrq_char(port, c)) if (uart_handle_sysrq_char(port, c & 0xff))
continue; continue;
uart_insert_char(port, c, ASC_RXBUF_DUMMY_OE, c & 0xff, flag); uart_insert_char(port, c, ASC_RXBUF_DUMMY_OE, c & 0xff, flag);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册