From 4aa3f7ddffffd4b95120d3892dd58b67021a69ac Mon Sep 17 00:00:00 2001 From: Olivier Dufour Date: Fri, 18 Jan 2013 09:04:43 +0100 Subject: cleo/uboot/cpu/spc300: split serial setbrg, refs #1325 --- cleopatre/u-boot-1.1.6/cpu/spc300/serial.c | 18 ++++++++++++++---- cleopatre/u-boot-1.1.6/include/common.h | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'cleopatre') diff --git a/cleopatre/u-boot-1.1.6/cpu/spc300/serial.c b/cleopatre/u-boot-1.1.6/cpu/spc300/serial.c index 0046d9b5fe..1323886350 100644 --- a/cleopatre/u-boot-1.1.6/cpu/spc300/serial.c +++ b/cleopatre/u-boot-1.1.6/cpu/spc300/serial.c @@ -45,12 +45,22 @@ void serial_setbrg (void) baudrate = CONFIG_BAUDRATE; baud_divisor = (get_master_clock((gd_t*)gd) + 8*baudrate) / (16 * baudrate); - writel(readl(UART_LCR_1) | 0x80, UART_LCR_1); - writel(baud_divisor & 0x00ff, UART_DLL_1); - writel((baud_divisor & 0xff00) >> 8, UART_DLH_1); - writel(readl(UART_LCR_1) & ~0x80, UART_LCR_1); + serial_setdivisor ((uint32_t)baud_divisor); } /* serial_setbrg */ +/** + * Function: serial_setdivisor + * Parameters: uint32_t divisor + * Purpose: write baud divisor in UART registers + * Return value: void + */ +void serial_setdivisor (uint32_t divisor) +{ + writel(readl(UART_LCR_1) | 0x80, UART_LCR_1); + writel(divisor & 0x00ff, UART_DLL_1); + writel((divisor & 0xff00) >> 8, UART_DLH_1); + writel(readl(UART_LCR_1) & ~0x80, UART_LCR_1); +} /* serial_setdivisor */ /** * Function: serial_init diff --git a/cleopatre/u-boot-1.1.6/include/common.h b/cleopatre/u-boot-1.1.6/include/common.h index 349d5cf726..7001526d38 100644 --- a/cleopatre/u-boot-1.1.6/include/common.h +++ b/cleopatre/u-boot-1.1.6/include/common.h @@ -414,6 +414,7 @@ void reset_cpu (ulong addr); int serial_init (void); void serial_addr (unsigned int); void serial_setbrg (void); +void serial_setdivisor (uint32_t); void serial_putc (const char); void serial_putc_raw(const char); void serial_puts (const char *); -- cgit v1.2.3