+INLINE void uart_hw_config(void)
+{
+ unsigned long div, baud = CONFIG_KDEBUG_BAUDRATE;
+ bool hi_speed = false;
+
+ if (baud * 16 > CPU_FREQ)
+ {
+ hi_speed = true;
+ baud /= 2;
+ }
+ div = (CPU_FREQ * 8 / baud + 1) / 2;
+
+ lm3s_uartDisable(UART_BASE);
+ if (hi_speed)
+ HWREG(UART_BASE + UART_O_CTL) |= UART_CTL_HSE;
+ else
+ HWREG(UART_BASE + UART_O_CTL) &= ~UART_CTL_HSE;
+ /* Set the baud rate */
+ HWREG(UART_BASE + UART_O_IBRD) = div / 64;
+ HWREG(UART_BASE + UART_O_FBRD) = div % 64;
+ /* Set word lenght and parity */
+ HWREG(UART_BASE + UART_O_LCRH) = UART_LCRH_WLEN_8;
+ lm3s_uartClear(UART_BASE);
+ lm3s_uartEnable(UART_BASE);
+}