Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1204213

[PATCH RFC] serial: mxs-auart: fix baud rate range

From Stefan Wahren <stefan.wahren@i2se.com>
Newsgroups linux.kernel
Subject [PATCH RFC] serial: mxs-auart: fix baud rate range
Date 2015-08-10 14:20 +0200
Message-ID <pVUdA-62u-27@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


Currently mxs-auart doesn't care correctly about the baud rate divisor.
According to reference manual the baud rate divisor must be between
0x000000EC and 0x003FFFC0. So calculate the possible baud rate range
and use it for uart_get_baud_rate().

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
---
 drivers/tty/serial/mxs-auart.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Here is a userspace application to test the new baud rate range:

https://gist.github.com/lategoodbye/f2d76134aa6c404cd92c

diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index 13cf773..afe617c 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -659,7 +659,7 @@ static void mxs_auart_settermios(struct uart_port *u,
 {
 	struct mxs_auart_port *s = to_auart_port(u);
 	u32 bm, ctrl, ctrl2, div;
-	unsigned int cflag, baud;
+	unsigned int cflag, baud, baud_min, baud_max;
 
 	cflag = termios->c_cflag;
 
@@ -752,7 +752,9 @@ static void mxs_auart_settermios(struct uart_port *u,
 	}
 
 	/* set baud rate */
-	baud = uart_get_baud_rate(u, termios, old, 0, u->uartclk);
+	baud_min = u->uartclk * 32 / 0x3fffc0;
+	baud_max = u->uartclk * 32 / 0xec;
+	baud = uart_get_baud_rate(u, termios, old, baud_min, baud_max);
 	div = u->uartclk * 32 / baud;
 	ctrl |= AUART_LINECTRL_BAUD_DIVFRAC(div & 0x3F);
 	ctrl |= AUART_LINECTRL_BAUD_DIVINT(div >> 6);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

[PATCH RFC] serial: mxs-auart: fix baud rate range Stefan Wahren <stefan.wahren@i2se.com> - 2015-08-10 14:20 +0200
  Re: [PATCH RFC] serial: mxs-auart: fix baud rate range Fabio Estevam <festevam@gmail.com> - 2015-08-10 14:30 +0200
    Re: [PATCH RFC] serial: mxs-auart: fix baud rate range Janusz Użycki <j.uzycki@elpromaelectronics.com> - 2015-08-10 19:10 +0200
      Re: [PATCH RFC] serial: mxs-auart: fix baud rate range Stefan Wahren <stefan.wahren@i2se.com> - 2015-08-11 09:20 +0200

csiph-web