bsp/lpc32xx: Fix console baud configuration

This commit is contained in:
Sebastian Huber
2012-12-12 09:26:51 +01:00
parent b0da579608
commit 73719950c0
3 changed files with 64 additions and 48 deletions

View File

@@ -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])

View File

@@ -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

View File

@@ -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
}