diff options
author | Simon Glass <sjg@chromium.org> | 2014-09-04 16:27:32 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2014-09-10 13:00:01 -0600 |
commit | fa54eb12431efa845bc5692347ee3a7f39d897bc (patch) | |
tree | aae0a0df851969d36a34df8b18879e03cb6aedfc /drivers/serial/ns16550.c | |
parent | 2a9ae6e02f190e8c83450aab9099a9fb5ec48cc9 (diff) | |
download | u-boot-imx-fa54eb12431efa845bc5692347ee3a7f39d897bc.zip u-boot-imx-fa54eb12431efa845bc5692347ee3a7f39d897bc.tar.gz u-boot-imx-fa54eb12431efa845bc5692347ee3a7f39d897bc.tar.bz2 |
dm: serial: Move baud rate calculation to ns16550.c
Move the function that calculates the baud rate divisor into ns16550.c so
it can be used by that file.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/serial/ns16550.c')
-rw-r--r-- | drivers/serial/ns16550.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c index 079f67d..3f5f4ef 100644 --- a/drivers/serial/ns16550.c +++ b/drivers/serial/ns16550.c @@ -4,7 +4,7 @@ * modified to use CONFIG_SYS_ISA_MEM and new defines */ -#include <config.h> +#include <common.h> #include <ns16550.h> #include <watchdog.h> #include <linux/types.h> @@ -45,6 +45,22 @@ #define CONFIG_SYS_NS16550_IER 0x00 #endif /* CONFIG_SYS_NS16550_IER */ +int ns16550_calc_divisor(NS16550_t port, int clock, int baudrate) +{ + const unsigned int mode_x_div = 16; + +#ifdef CONFIG_OMAP1510 + /* If can't cleanly clock 115200 set div to 1 */ + if ((clock == 12000000) && (baudrate == 115200)) { + port->osc_12m_sel = OSC_12M_SEL; /* enable 6.5 * divisor */ + return 1; /* return 1 for base divisor */ + } + port->osc_12m_sel = 0; /* clear if previsouly set */ +#endif + + return DIV_ROUND_CLOSEST(clock, mode_x_div * baudrate); +} + void NS16550_init(NS16550_t com_port, int baud_divisor) { #if (defined(CONFIG_SPL_BUILD) && defined(CONFIG_OMAP34XX)) |