Thread (4 messages) 4 messages, 2 authors, 2017-10-20

[PATCH v2] serial: meson: add Magic SysRq support

From: Yixun Lan <hidden>
Date: 2017-10-20 08:32:44
Also in: linux-amlogic, linux-serial, lkml

Hi Greg-KH

I think you've already accepted this patch (and merged into your git repo)

so, is it possible for you to amend the commit message? or do you want me
to send a PATCH v3 then?


On 10:10 Fri 20 Oct     , Neil Armstrong wrote:
Hi Yixun,

On 06/09/2017 15:52, Yixun Lan wrote:
quoted
This dirver try to implement the Magic SysRq support[1] for
Amlogic Inc's meson platfo
Please fix these typos.
oops, not sure why this line is broken..

s/platfo/platform./
and should squash next line .
quoted
From the hardware perspective, the UART IP can't detect the 'BREAK' command
clearly via the status register. Instead, we rely on the combination of
'FRAME_ERR bit && ch == 0', and it works fine.

[1] Documentation/admin-guide/sysrq.rst

Signed-off-by: Yixun Lan <redacted>

---
Changes since v1 at [0]:
- add changelog & a few more comments

[0] https://patchwork.kernel.org/patch/9728475/
---
 drivers/tty/serial/meson_uart.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uart.c
index 42e4a4c7597f..3fea24bafd80 100644
--- a/drivers/tty/serial/meson_uart.c
+++ b/drivers/tty/serial/meson_uart.c
@@ -14,6 +14,10 @@
  *
  */
 
+#if defined(CONFIG_SERIAL_MESON_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
+#define SUPPORT_SYSRQ
+#endif
+
 #include <linux/clk.h>
 #include <linux/console.h>
 #include <linux/delay.h>
@@ -183,12 +187,12 @@ static void meson_receive_chars(struct uart_port *port)
 {
 	struct tty_port *tport = &port->state->port;
 	char flag;
-	u32 status, ch, mode;
+	u32 ostatus, status, ch, mode;
 
 	do {
 		flag = TTY_NORMAL;
 		port->icount.rx++;
-		status = readl(port->membase + AML_UART_STATUS);
+		ostatus = status = readl(port->membase + AML_UART_STATUS);
 
 		if (status & AML_UART_ERR) {
 			if (status & AML_UART_TX_FIFO_WERR)
@@ -216,6 +220,16 @@ static void meson_receive_chars(struct uart_port *port)
 		ch = readl(port->membase + AML_UART_RFIFO);
 		ch &= 0xff;
 
+		if ((ostatus & AML_UART_FRAME_ERR) && (ch == 0)) {
+			port->icount.brk++;
+			flag = TTY_BREAK;
+			if (uart_handle_break(port))
+				continue;
+		}
+
+		if (uart_handle_sysrq_char(port, ch))
+			continue;
+
 		if ((status & port->ignore_status_mask) == 0)
 			tty_insert_flip_char(tport, ch, flag);
 
Reviewed-by: Neil Armstrong <redacted>

_______________________________________________
linux-amlogic mailing list
linux-amlogic at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
-- 
Yixun Lan (dlan)
Gentoo Linux Developer
GPG Key ID AABEFD55
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help