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

From: [email-masked] (Yixun Lan)
Date: Fri, 20 Oct 2017 16:32:27 +0800

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:
> > 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 .

> > 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 <[email-masked]>
> > 
> > ---
> > 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 <[email-masked]>
> 
> _______________________________________________
> 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