From: Raviteja Narayanam <raviteja.narayanam@xilinx.com> To: linux-serial@vger.kernel.org Cc: gregkh@linuxfoundation.org, jslaby@suse.com, michal.simek@xilinx.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, git@xilinx.com, Raviteja Narayanam <raviteja.narayanam@xilinx.com> Subject: [PATCH v2 1/2] serial: uartps: Wait for tx_empty in console setup Date: Thu, 9 Apr 2020 11:56:02 +0530 [thread overview] Message-ID: <1586413563-29125-2-git-send-email-raviteja.narayanam@xilinx.com> (raw) In-Reply-To: <1586413563-29125-1-git-send-email-raviteja.narayanam@xilinx.com> On some platforms, the log is corrupted while console is being registered. It is observed that when set_termios is called, there are still some bytes in the FIFO to be transmitted. So, wait for tx_empty inside cdns_uart_console_setup before calling set_termios. Signed-off-by: Raviteja Narayanam <raviteja.narayanam@xilinx.com> --- drivers/tty/serial/xilinx_uartps.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c index 6b26f76..0bf946b 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -1260,6 +1260,7 @@ static int cdns_uart_console_setup(struct console *co, char *options) int bits = 8; int parity = 'n'; int flow = 'n'; + unsigned long time_out; if (!port->membase) { pr_debug("console on " CDNS_UART_TTY_NAME "%i not present\n", @@ -1270,6 +1271,13 @@ static int cdns_uart_console_setup(struct console *co, char *options) if (options) uart_parse_options(options, &baud, &parity, &bits, &flow); + /* Wait for tx_empty before setting up the console */ + time_out = jiffies + usecs_to_jiffies(TX_TIMEOUT); + + while (time_before(jiffies, time_out) && + cdns_uart_tx_empty(port) != TIOCSER_TEMT) + cpu_relax(); + return uart_set_options(port, co, baud, parity, bits, flow); } #endif /* CONFIG_SERIAL_XILINX_PS_UART_CONSOLE */ -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Raviteja Narayanam <raviteja.narayanam@xilinx.com> To: linux-serial@vger.kernel.org Cc: Raviteja Narayanam <raviteja.narayanam@xilinx.com>, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, michal.simek@xilinx.com, git@xilinx.com, jslaby@suse.com, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 1/2] serial: uartps: Wait for tx_empty in console setup Date: Thu, 9 Apr 2020 11:56:02 +0530 [thread overview] Message-ID: <1586413563-29125-2-git-send-email-raviteja.narayanam@xilinx.com> (raw) In-Reply-To: <1586413563-29125-1-git-send-email-raviteja.narayanam@xilinx.com> On some platforms, the log is corrupted while console is being registered. It is observed that when set_termios is called, there are still some bytes in the FIFO to be transmitted. So, wait for tx_empty inside cdns_uart_console_setup before calling set_termios. Signed-off-by: Raviteja Narayanam <raviteja.narayanam@xilinx.com> --- drivers/tty/serial/xilinx_uartps.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c index 6b26f76..0bf946b 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -1260,6 +1260,7 @@ static int cdns_uart_console_setup(struct console *co, char *options) int bits = 8; int parity = 'n'; int flow = 'n'; + unsigned long time_out; if (!port->membase) { pr_debug("console on " CDNS_UART_TTY_NAME "%i not present\n", @@ -1270,6 +1271,13 @@ static int cdns_uart_console_setup(struct console *co, char *options) if (options) uart_parse_options(options, &baud, &parity, &bits, &flow); + /* Wait for tx_empty before setting up the console */ + time_out = jiffies + usecs_to_jiffies(TX_TIMEOUT); + + while (time_before(jiffies, time_out) && + cdns_uart_tx_empty(port) != TIOCSER_TEMT) + cpu_relax(); + return uart_set_options(port, co, baud, parity, bits, flow); } #endif /* CONFIG_SERIAL_XILINX_PS_UART_CONSOLE */ -- 2.7.4 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-04-09 6:27 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-09 6:26 [PATCH v2 0/2] serial: uartps: Add tx_empty checks Raviteja Narayanam 2020-04-09 6:26 ` Raviteja Narayanam 2020-04-09 6:26 ` Raviteja Narayanam [this message] 2020-04-09 6:26 ` [PATCH v2 1/2] serial: uartps: Wait for tx_empty in console setup Raviteja Narayanam 2020-04-09 6:26 ` [PATCH v2 2/2] serial: uartps: Use cdns_uart_tx_empty in console_write Raviteja Narayanam 2020-04-09 6:26 ` Raviteja Narayanam 2020-04-13 10:00 ` [PATCH v2 0/2] serial: uartps: Add tx_empty checks Shubhrajyoti Datta 2020-04-13 10:00 ` Shubhrajyoti Datta
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1586413563-29125-2-git-send-email-raviteja.narayanam@xilinx.com \ --to=raviteja.narayanam@xilinx.com \ --cc=git@xilinx.com \ --cc=gregkh@linuxfoundation.org \ --cc=jslaby@suse.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=michal.simek@xilinx.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.