From eb6f6367f51a68f596b1efdfce19f77dd8ad4746 Mon Sep 17 00:00:00 2001 From: Alvin Park Date: Fri, 28 Aug 2020 17:31:22 +0900 Subject: [PATCH] serial: tegra: clear tx_in_progress in flush func Cleared tx_in_progress when tegra_uart_flush_buffer is called. If tegra_uart_flush_buffer is called before complete to transmit through DMA, next transmit could not be started because tx_in_progress is not cleared. Bug 3098159 Change-Id: I4b6b001314479313d7854d04a10d8394357a37cf Signed-off-by: Alvin Park Reviewed-on: https://git-master.nvidia.com/r/c/linux-4.9/+/2405363 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: automaticguardword Reviewed-by: Hardik T Shah Reviewed-by: Phoenix Jung Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions Signed-off-by: CTCaer --- drivers/tty/serial/serial-tegra.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/serial-tegra.c b/drivers/tty/serial/serial-tegra.c index 1183ca54ab92..b61cacd0829e 100644 --- a/drivers/tty/serial/serial-tegra.c +++ b/drivers/tty/serial/serial-tegra.c @@ -4,7 +4,7 @@ * * High-speed serial driver for NVIDIA Tegra SoCs * - * Copyright (c) 2012-2019, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2012-2020, NVIDIA CORPORATION. All rights reserved. * * Author: Laxman Dewangan */ @@ -1260,8 +1260,10 @@ static void tegra_uart_flush_buffer(struct uart_port *u) struct tegra_uart_port *tup = to_tegra_uport(u); tup->tx_bytes = 0; - if (tup->tx_dma_chan) + if (tup->tx_dma_chan) { dmaengine_terminate_all(tup->tx_dma_chan); + tup->tx_in_progress = 0; + } } static void tegra_uart_shutdown(struct uart_port *u)