diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-12 09:26:51 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-13 11:36:37 +0100 |
commit | 73719950c03ab8e15a8f65a9ee96ad299e01d149 (patch) | |
tree | cb52725531bf6c97c815f15abf438c50eb46137f /c/src | |
parent | termios: Implement tcflush() (diff) | |
download | rtems-73719950c03ab8e15a8f65a9ee96ad299e01d149.tar.bz2 |
bsp/lpc32xx: Fix console baud configuration
Diffstat (limited to 'c/src')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/configure.ac | 23 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/console/console-config.c | 60 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c | 29 |
3 files changed, 64 insertions, 48 deletions
diff --git a/c/src/lib/libbsp/arm/lpc32xx/configure.ac b/c/src/lib/libbsp/arm/lpc32xx/configure.ac index 6af65292f1..06be1da217 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/configure.ac +++ b/c/src/lib/libbsp/arm/lpc32xx/configure.ac @@ -43,24 +43,33 @@ RTEMS_BSPOPTS_HELP([LPC32XX_UART_1_BAUD],[baud for UART 1]) RTEMS_BSPOPTS_SET([LPC32XX_UART_2_BAUD],[*],[]) RTEMS_BSPOPTS_HELP([LPC32XX_UART_2_BAUD],[baud for UART 2]) +RTEMS_BSPOPTS_SET([LPC32XX_UART_3_BAUD],[*],[115200]) +RTEMS_BSPOPTS_HELP([LPC32XX_UART_3_BAUD],[baud for UART 3]) + +RTEMS_BSPOPTS_SET([LPC32XX_UART_4_BAUD],[*],[115200]) +RTEMS_BSPOPTS_HELP([LPC32XX_UART_4_BAUD],[baud for UART 4]) + +RTEMS_BSPOPTS_SET([LPC32XX_UART_5_BAUD],[*],[115200]) +RTEMS_BSPOPTS_HELP([LPC32XX_UART_5_BAUD],[baud for UART 5]) + +RTEMS_BSPOPTS_SET([LPC32XX_UART_6_BAUD],[*],[115200]) +RTEMS_BSPOPTS_HELP([LPC32XX_UART_6_BAUD],[baud for UART 6]) + RTEMS_BSPOPTS_SET([LPC32XX_UART_7_BAUD],[*],[]) RTEMS_BSPOPTS_HELP([LPC32XX_UART_7_BAUD],[baud for UART 7]) -RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_U3CLK],[*],[]) +RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_U3CLK],[*],[0x00001386]) RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_U3CLK],[clock configuration for UART 3]) -RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_U4CLK],[*],[]) +RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_U4CLK],[*],[0x00001386]) RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_U4CLK],[clock configuration for UART 4]) -RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_U5CLK],[*],[0x00001386U]) +RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_U5CLK],[*],[0x00001386]) RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_U5CLK],[clock configuration for UART 5]) -RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_U6CLK],[*],[]) +RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_U6CLK],[*],[0x00001386]) RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_U6CLK],[clock configuration for UART 6]) -RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_UART_CLKMODE],[*],[0x00000200U]) -RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_UART_CLKMODE],[clock mode configuration for UARTs]) - RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_MMU],[*],[]) RTEMS_BSPOPTS_HELP([LPC32XX_DISABLE_MMU],[disable MMU]) diff --git a/c/src/lib/libbsp/arm/lpc32xx/console/console-config.c b/c/src/lib/libbsp/arm/lpc32xx/console/console-config.c index d70f93ecd8..2428697604 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/console/console-config.c +++ b/c/src/lib/libbsp/arm/lpc32xx/console/console-config.c @@ -42,10 +42,40 @@ static void lpc32xx_uart_set_register(uint32_t addr, uint8_t i, uint8_t val) reg [i] = val; } +#ifdef LPC32XX_UART_3_BAUD + static bool lpc32xx_uart_probe_3(int minor) + { + LPC32XX_UARTCLK_CTRL |= 1U << 0; + LPC32XX_U3CLK = LPC32XX_CONFIG_U3CLK; + + return true; + } +#endif + +#ifdef LPC32XX_UART_4_BAUD + static bool lpc32xx_uart_probe_4(int minor) + { + LPC32XX_UARTCLK_CTRL |= 1U << 1; + LPC32XX_U4CLK = LPC32XX_CONFIG_U4CLK; + + return true; + } +#endif + +#ifdef LPC32XX_UART_6_BAUD + static bool lpc32xx_uart_probe_6(int minor) + { + LPC32XX_UARTCLK_CTRL |= 1U << 3; + LPC32XX_U6CLK = LPC32XX_CONFIG_U6CLK; + + return true; + } +#endif + /* FIXME: Console selection */ console_tbl Console_Configuration_Ports [] = { - #ifdef LPC32XX_CONFIG_U5CLK + #ifdef LPC32XX_UART_5_BAUD { .sDeviceName = "/dev/ttyS5", .deviceType = SERIAL_NS16550, @@ -54,7 +84,7 @@ console_tbl Console_Configuration_Ports [] = { .pDeviceFlow = NULL, .ulMargin = 16, .ulHysteresis = 8, - .pDeviceParams = (void *) 1, + .pDeviceParams = (void *) LPC32XX_UART_5_BAUD, .ulCtrlPort1 = LPC32XX_BASE_UART_5, .ulCtrlPort2 = 0, .ulDataPort = LPC32XX_BASE_UART_5, @@ -62,20 +92,20 @@ console_tbl Console_Configuration_Ports [] = { .setRegister = lpc32xx_uart_set_register, .getData = NULL, .setData = NULL, - .ulClock = 16, + .ulClock = 16 * LPC32XX_UART_5_BAUD, .ulIntVector = LPC32XX_IRQ_UART_5 }, #endif - #ifdef LPC32XX_CONFIG_U3CLK + #ifdef LPC32XX_UART_3_BAUD { .sDeviceName = "/dev/ttyS3", .deviceType = SERIAL_NS16550, .pDeviceFns = &ns16550_fns, - .deviceProbe = NULL, + .deviceProbe = lpc32xx_uart_probe_3, .pDeviceFlow = NULL, .ulMargin = 16, .ulHysteresis = 8, - .pDeviceParams = (void *) 1, + .pDeviceParams = (void *) LPC32XX_UART_3_BAUD, .ulCtrlPort1 = LPC32XX_BASE_UART_3, .ulCtrlPort2 = 0, .ulDataPort = LPC32XX_BASE_UART_3, @@ -83,20 +113,20 @@ console_tbl Console_Configuration_Ports [] = { .setRegister = lpc32xx_uart_set_register, .getData = NULL, .setData = NULL, - .ulClock = 16, + .ulClock = 16 * LPC32XX_UART_3_BAUD, .ulIntVector = LPC32XX_IRQ_UART_3 }, #endif - #ifdef LPC32XX_CONFIG_U4CLK + #ifdef LPC32XX_UART_4_BAUD { .sDeviceName = "/dev/ttyS4", .deviceType = SERIAL_NS16550, .pDeviceFns = &ns16550_fns, - .deviceProbe = NULL, + .deviceProbe = lpc32xx_uart_probe_4, .pDeviceFlow = NULL, .ulMargin = 16, .ulHysteresis = 8, - .pDeviceParams = (void *) 1, + .pDeviceParams = (void *) LPC32XX_UART_4_BAUD, .ulCtrlPort1 = LPC32XX_BASE_UART_4, .ulCtrlPort2 = 0, .ulDataPort = LPC32XX_BASE_UART_4, @@ -104,20 +134,20 @@ console_tbl Console_Configuration_Ports [] = { .setRegister = lpc32xx_uart_set_register, .getData = NULL, .setData = NULL, - .ulClock = 16, + .ulClock = 16 * LPC32XX_UART_4_BAUD, .ulIntVector = LPC32XX_IRQ_UART_4 }, #endif - #ifdef LPC32XX_CONFIG_U6CLK + #ifdef LPC32XX_UART_6_BAUD { .sDeviceName = "/dev/ttyS6", .deviceType = SERIAL_NS16550, .pDeviceFns = &ns16550_fns, - .deviceProbe = NULL, + .deviceProbe = lpc32xx_uart_probe_6, .pDeviceFlow = NULL, .ulMargin = 16, .ulHysteresis = 8, - .pDeviceParams = (void *) 1, + .pDeviceParams = (void *) LPC32XX_UART_6_BAUD, .ulCtrlPort1 = LPC32XX_BASE_UART_6, .ulCtrlPort2 = 0, .ulDataPort = LPC32XX_BASE_UART_6, @@ -125,7 +155,7 @@ console_tbl Console_Configuration_Ports [] = { .setRegister = lpc32xx_uart_set_register, .getData = NULL, .setData = NULL, - .ulClock = 16, + .ulClock = 16 * LPC32XX_UART_6_BAUD, .ulIntVector = LPC32XX_IRQ_UART_6 }, #endif diff --git a/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c b/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c index e1b79ebf90..21b49de53e 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c +++ b/c/src/lib/libbsp/arm/lpc32xx/startup/bspstarthooks.c @@ -263,35 +263,12 @@ static BSP_START_TEXT_SECTION void stop_dma_activities(void) static BSP_START_TEXT_SECTION void setup_uarts(void) { - uint32_t uartclk_ctrl = 0; - - #ifdef LPC32XX_CONFIG_U3CLK - uartclk_ctrl |= 1U << 0; - LPC32XX_U3CLK = LPC32XX_CONFIG_U3CLK; - #endif - #ifdef LPC32XX_CONFIG_U4CLK - uartclk_ctrl |= 1U << 1; - LPC32XX_U4CLK = LPC32XX_CONFIG_U4CLK; - #endif - #ifdef LPC32XX_CONFIG_U5CLK - uartclk_ctrl |= 1U << 2; - LPC32XX_U5CLK = LPC32XX_CONFIG_U5CLK; - #endif - #ifdef LPC32XX_CONFIG_U6CLK - uartclk_ctrl |= 1U << 3; - LPC32XX_U6CLK = LPC32XX_CONFIG_U6CLK; - #endif - - #ifdef LPC32XX_CONFIG_UART_CLKMODE - LPC32XX_UART_CLKMODE = LPC32XX_CONFIG_UART_CLKMODE; - #endif - - LPC32XX_UARTCLK_CTRL = uartclk_ctrl; LPC32XX_UART_CTRL = 0x0; LPC32XX_UART_LOOP = 0x0; - #ifdef LPC32XX_CONFIG_U5CLK - /* Clock is already set in LPC32XX_U5CLK */ + #ifdef LPC32XX_UART_5_BAUD + LPC32XX_UARTCLK_CTRL |= 1U << 2; + LPC32XX_U5CLK = LPC32XX_CONFIG_U5CLK; BSP_CONSOLE_UART_INIT(0x01); #endif } |