serial-tegra.c (9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e) serial-tegra.c (fd2b55f86b8b25afc5b6e7dff53dddb3fd0dd211)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * serial_tegra.c
4 *
5 * High-speed serial driver for NVIDIA Tegra SoCs
6 *
7 * Copyright (c) 2012-2019, NVIDIA CORPORATION. All rights reserved.
8 *

--- 420 unchanged lines hidden (view full) ---

429
430 tup->current_baud = baud;
431
432 /* wait two character intervals at new rate */
433 tegra_uart_wait_sym_time(tup, 2);
434 return 0;
435}
436
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * serial_tegra.c
4 *
5 * High-speed serial driver for NVIDIA Tegra SoCs
6 *
7 * Copyright (c) 2012-2019, NVIDIA CORPORATION. All rights reserved.
8 *

--- 420 unchanged lines hidden (view full) ---

429
430 tup->current_baud = baud;
431
432 /* wait two character intervals at new rate */
433 tegra_uart_wait_sym_time(tup, 2);
434 return 0;
435}
436
437static char tegra_uart_decode_rx_error(struct tegra_uart_port *tup,
437static u8 tegra_uart_decode_rx_error(struct tegra_uart_port *tup,
438 unsigned long lsr)
439{
438 unsigned long lsr)
439{
440 char flag = TTY_NORMAL;
440 u8 flag = TTY_NORMAL;
441
442 if (unlikely(lsr & TEGRA_UART_LSR_ANY)) {
443 if (lsr & UART_LSR_OE) {
444 /* Overrun error */
445 flag = TTY_OVERRUN;
446 tup->uport.icount.overrun++;
447 dev_dbg(tup->uport.dev, "Got overrun errors\n");
448 } else if (lsr & UART_LSR_PE) {

--- 188 unchanged lines hidden (view full) ---

637 uart_write_wakeup(&tup->uport);
638 tegra_uart_start_next_tx(tup);
639}
640
641static void tegra_uart_handle_rx_pio(struct tegra_uart_port *tup,
642 struct tty_port *port)
643{
644 do {
441
442 if (unlikely(lsr & TEGRA_UART_LSR_ANY)) {
443 if (lsr & UART_LSR_OE) {
444 /* Overrun error */
445 flag = TTY_OVERRUN;
446 tup->uport.icount.overrun++;
447 dev_dbg(tup->uport.dev, "Got overrun errors\n");
448 } else if (lsr & UART_LSR_PE) {

--- 188 unchanged lines hidden (view full) ---

637 uart_write_wakeup(&tup->uport);
638 tegra_uart_start_next_tx(tup);
639}
640
641static void tegra_uart_handle_rx_pio(struct tegra_uart_port *tup,
642 struct tty_port *port)
643{
644 do {
645 char flag = TTY_NORMAL;
646 unsigned long lsr = 0;
645 unsigned long lsr = 0;
647 unsigned char ch;
646 u8 ch, flag = TTY_NORMAL;
648
649 lsr = tegra_uart_read(tup, UART_LSR);
650 if (!(lsr & UART_LSR_DR))
651 break;
652
653 flag = tegra_uart_decode_rx_error(tup, lsr);
654 if (flag != TTY_NORMAL)
655 continue;

--- 1050 unchanged lines hidden ---
647
648 lsr = tegra_uart_read(tup, UART_LSR);
649 if (!(lsr & UART_LSR_DR))
650 break;
651
652 flag = tegra_uart_decode_rx_error(tup, lsr);
653 if (flag != TTY_NORMAL)
654 continue;

--- 1050 unchanged lines hidden ---