summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/imx
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-11-08 08:42:33 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-11-08 08:43:27 +0100
commitfdf0e55cf929aba409e19c4692a73b6522f2a51e (patch)
tree7af5f868f5a70b3a1f8d9bb0cae537406d784c33 /c/src/lib/libbsp/arm/imx
parentbsp/imx: Better utilize UART transmit FIFO (diff)
downloadrtems-fdf0e55cf929aba409e19c4692a73b6522f2a51e.tar.bz2
bsp/imx: Add UART baud change
Update #3090.
Diffstat (limited to 'c/src/lib/libbsp/arm/imx')
-rw-r--r--c/src/lib/libbsp/arm/imx/console/console-config.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/imx/console/console-config.c b/c/src/lib/libbsp/arm/imx/console/console-config.c
index 5cceb9c8e9..0731446f08 100644
--- a/c/src/lib/libbsp/arm/imx/console/console-config.c
+++ b/c/src/lib/libbsp/arm/imx/console/console-config.c
@@ -23,6 +23,7 @@
#include <bsp/fdt.h>
#include <bsp/irq.h>
+#include <arm/freescale/imx/imx_ccmvar.h>
#include <arm/freescale/imx/imx_uartreg.h>
#include <libfdt.h>
@@ -192,6 +193,24 @@ static bool imx_uart_set_attributes(
const struct termios *term
)
{
+ imx_uart_context *ctx;
+ volatile imx_uart *regs;
+ uint32_t ufcr;
+ uint32_t baud;
+
+ ctx = (imx_uart_context *) base;
+ regs = imx_uart_get_regs(&ctx->base);
+
+ baud = rtems_termios_baud_to_number(term->c_ospeed);
+
+ if (baud != 0) {
+ ufcr = regs->ufcr;
+ ufcr = IMX_UART_UFCR_RFDIV_SET(ufcr, 0x5);
+ regs->ufcr = ufcr;
+ regs->ubir = 15;
+ regs->ubmr = imx_ccm_uart_hz() / baud - 1;
+ }
+
return true;
}