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

Neil Armstrong narmstrong at baylibre.com
Fri Oct 20 01:48:38 PDT 2017


I Yixun,

On 20/10/2017 10:32, Yixun Lan wrote:
> 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?

I was not aware greg applied it, no need to amen anything, ignore my tag.

Neil

> 
> 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 <dlan at gentoo.org>
>>>
>>> ---
>>> 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 <narmstrong at baylibre.com>
>>
>> _______________________________________________
>> linux-amlogic mailing list
>> linux-amlogic at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-amlogic
> 





More information about the linux-amlogic mailing list