linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiada Wang <jiada_wang@mentor.com>
To: <gregkh@linuxfoundation.org>, <jslaby@suse.cz>,
	<linux-serial@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Cc: <jiada_wang@mentor.com>, <anton_bondarenko@mentor.com>,
	<dirk.behme@de.bosch.com>
Subject: [PATCH v1 06/15] serial: imx: unmap scatter gather list in imx_flush_buffer
Date: Tue, 9 Dec 2014 18:11:27 +0900	[thread overview]
Message-ID: <1418116296-12082-7-git-send-email-jiada_wang@mentor.com> (raw)
In-Reply-To: <1418116296-12082-1-git-send-email-jiada_wang@mentor.com>

From: Dirk Behme <dirk.behme@de.bosch.com>

First, reformat the code to exit immediately. This allows us to add
more code in more readable format.

In case the TX DMA was still running, remove and disable it's resources.

Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com>
---
 drivers/tty/serial/imx.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index a0bfccf..e53a058 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -1302,10 +1302,17 @@ static void imx_shutdown(struct uart_port *port)
 static void imx_flush_buffer(struct uart_port *port)
 {
 	struct imx_port *sport = (struct imx_port *)port;
+	struct scatterlist *sgl = &sport->tx_sgl[0];
 
-	if (sport->dma_is_enabled) {
-		sport->tx_bytes = 0;
-		dmaengine_terminate_all(sport->dma_chan_tx);
+	if (!sport->dma_chan_tx)
+		return;
+
+	sport->tx_bytes = 0;
+	dmaengine_terminate_all(sport->dma_chan_tx);
+	if (sport->dma_is_txing) {
+		dma_unmap_sg(sport->port.dev, sgl, sport->dma_tx_nents,
+			     DMA_TO_DEVICE);
+		sport->dma_is_txing = false;
 	}
 }
 
-- 
1.9.3


  parent reply	other threads:[~2014-12-09  9:25 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-09  9:11 [PATCH v1 00/15] serial: imx: misc fix and features Jiada Wang
2014-12-09  9:11 ` [PATCH v1 01/15] serial: imx: add CREAD flag support Jiada Wang
2014-12-09  9:11 ` [PATCH v1 02/15] serial: imx: use locking to stop concurrent access of UCR1 Jiada Wang
2014-12-09  9:11 ` [PATCH v1 03/15] serial: imx: remove unneeded imx_transmit_buffer() from imx_start_tx() Jiada Wang
2014-12-09  9:11 ` [PATCH v1 04/15] serial: imx: TX DMA: clean up sg initialization Jiada Wang
2014-12-09  9:11 ` [PATCH v1 05/15] serial: imx: unmap sg in case of dmaengine_prep_slave_sg() failure Jiada Wang
2014-12-09  9:11 ` Jiada Wang [this message]
2014-12-09  9:11 ` [PATCH v1 07/15] serial: imx: use dma_is_txing to synchronize dma_tx_callback and imx_dma_tx Jiada Wang
2014-12-09  9:11 ` [PATCH v1 08/15] Revert "serial: imx: always wake up the processes in the TX callback" Jiada Wang
2014-12-09  9:11 ` [PATCH v1 09/15] serial: imx: call imx_dma_tx() again in dma_tx_callback Jiada Wang
2014-12-09  9:11 ` [PATCH v1 10/15] serial: imx: disable TDMAEN in imx_flush_buffer() Jiada Wang
2014-12-09  9:11 ` [PATCH v1 11/15] serial: imx: initialized DMA w/o HW flow enabled Jiada Wang
2015-04-09 12:00   ` Sebastian Andrzej Siewior
2015-04-13  7:40     ` jiwang
2015-04-13  8:06       ` Sebastian Andrzej Siewior
2015-04-17  9:18         ` jiwang
2015-04-17 10:31           ` Sebastian Andrzej Siewior
2015-05-06 16:08           ` Nicolae Rosia
2015-05-06 16:12             ` Sebastian Andrzej Siewior
2015-05-06 16:46               ` Nicolae Rosia
2015-05-06 17:30                 ` Sebastian Andrzej Siewior
2015-05-07 13:55                   ` Nicolae Rosia
2015-05-07 13:58                     ` Sebastian Andrzej Siewior
2014-12-09  9:11 ` [PATCH v1 12/15] serial: imx: start rx_dma once RXFIFO is not empty Jiada Wang
2014-12-09  9:11 ` [PATCH v1 13/15] serial: imx: Enable UCR4_OREN in startup interface Jiada Wang
2014-12-09  9:11 ` [PATCH v1 14/15] serial: imx: Fix issue in software flow control Jiada Wang
2014-12-09  9:11 ` [PATCH v1 15/15] serial: imx: Support sw flow control in DMA mode Jiada Wang

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=1418116296-12082-7-git-send-email-jiada_wang@mentor.com \
    --to=jiada_wang@mentor.com \
    --cc=anton_bondarenko@mentor.com \
    --cc=dirk.behme@de.bosch.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jslaby@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).