forked from Imagelibrary/rtems
bsp/lpc32xx: Fix console baud configuration
This commit is contained in:
@@ -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])
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user