From: shijie8@gmail.com (Huang Shijie)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/3] serial: mxs: enable the DMA only when the RTS/CTS is valid
Date: Sat, 3 Aug 2013 10:09:14 -0400 [thread overview]
Message-ID: <1375538956-15862-2-git-send-email-shijie8@gmail.com> (raw)
In-Reply-To: <1375538956-15862-1-git-send-email-shijie8@gmail.com>
From: Huang Shijie <b32955@freescale.com>
The original DMA support works only when RTS/CTS is enabled.
(see the "e800163 serial: mxs-auart: add the DMA support for mx28")
But after several patches, DMA support has lost this limit.
(see the "bcc20f9 serial: mxs-auart: move to use generic DMA helper")
So an UART without the RTS/CTS lines may also enables the DMA support,
in which case the UART may gets unpredictable results.
This patch adds an optional property for the UART DT node
which indicates the UART has RTS and CTS lines, and it also means you
enable the DMA support for this UART.
This patch also adds a macro MXS_AUART_RTSCTS, and uses it to check
RTS/CTS before we enable the DMA for the UART.
Cc: stable at vger.kernel.org
Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Huang Shijie <shijie8@gmail.com>
---
.../bindings/tty/serial/fsl-mxs-auart.txt | 4 ++++
drivers/tty/serial/mxs-auart.c | 7 ++++++-
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
index 2c00ec6..59a40f1 100644
--- a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
+++ b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
@@ -10,6 +10,10 @@ Required properties:
Refer to dma.txt and fsl-mxs-dma.txt for details.
- dma-names: "rx" for RX channel, "tx" for TX channel.
+Optional properties:
+- fsl,uart-has-rtscts : Indicate the UART has RTS and CTS lines,
+ it also means you enable the DMA support for this UART.
+
Example:
auart0: serial at 8006a000 {
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index 736e95c..eac7b58 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -137,6 +137,7 @@ struct mxs_auart_port {
#define MXS_AUART_DMA_ENABLED 0x2
#define MXS_AUART_DMA_TX_SYNC 2 /* bit 2 */
#define MXS_AUART_DMA_RX_READY 3 /* bit 3 */
+#define MXS_AUART_RTSCTS 4 /* bit 4 */
unsigned long flags;
unsigned int ctrl;
enum mxs_auart_type devtype;
@@ -639,7 +640,8 @@ static void mxs_auart_settermios(struct uart_port *u,
* we can only implement the DMA support for auart
* in mx28.
*/
- if (is_imx28_auart(s) && (s->flags & MXS_AUART_DMA_CONFIG)) {
+ if (is_imx28_auart(s) && (s->flags & MXS_AUART_DMA_CONFIG)
+ && test_bit(MXS_AUART_RTSCTS, &s->flags)) {
if (!mxs_auart_dma_init(s))
/* enable DMA tranfer */
ctrl2 |= AUART_CTRL2_TXDMAE | AUART_CTRL2_RXDMAE
@@ -1009,6 +1011,9 @@ static int serial_mxs_probe_dt(struct mxs_auart_port *s,
s->flags |= MXS_AUART_DMA_CONFIG;
+ if (of_get_property(np, "fsl,uart-has-rtscts", NULL))
+ set_bit(MXS_AUART_RTSCTS, &s->flags);
+
return 0;
}
--
1.7.4.4
next prev parent reply other threads:[~2013-08-03 14:09 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-03 14:09 [PATCH v3 0/3] serial: mxs-auart: add RTS/CTS check for DMA support Huang Shijie
2013-08-03 14:09 ` Huang Shijie [this message]
2013-08-05 7:02 ` [PATCH v3 1/3] serial: mxs: enable the DMA only when the RTS/CTS is valid Greg KH
2013-08-03 14:09 ` [PATCH v3 2/3] serial: mxs: remove the MXS_AUART_DMA_CONFIG Huang Shijie
2013-08-03 14:09 ` [PATCH v3 3/3] ARM: dts: imx28-evk: add the RTS/CTS property for auart0 Huang Shijie
2013-08-05 6:24 ` [PATCH v3 0/3] serial: mxs-auart: add RTS/CTS check for DMA support Shawn Guo
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=1375538956-15862-2-git-send-email-shijie8@gmail.com \
--to=shijie8@gmail.com \
--cc=linux-arm-kernel@lists.infradead.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).