summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gabeblack@chromium.org>2013-06-29 23:20:14 -0700
committerRonald G. Minnich <rminnich@gmail.com>2013-07-01 21:31:46 +0200
commit595ab4f955c98ee486cde7adc1af4eb56cebe569 (patch)
treeb4bd4fa3c71ecb2bd676d45b76c881aa1a52d377
parent94f631cdc9805d61071c29d25a0af9ddea174c22 (diff)
downloadcoreboot-595ab4f955c98ee486cde7adc1af4eb56cebe569.tar.xz
beaglebone: Enable the clocks and pins for the configured UART.
Set up the pinmux to enable the pins and the clocks for whichever UART is currently configured. Change-Id: Iac13f16d9d84320555b99734ea83eafd0a2803fe Signed-off-by: Gabe Black <gabeblack@chromium.org> Reviewed-on: http://review.coreboot.org/3573 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
-rw-r--r--src/mainboard/ti/beaglebone/bootblock.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mainboard/ti/beaglebone/bootblock.c b/src/mainboard/ti/beaglebone/bootblock.c
index fbe73eac31..6c7d132500 100644
--- a/src/mainboard/ti/beaglebone/bootblock.c
+++ b/src/mainboard/ti/beaglebone/bootblock.c
@@ -21,10 +21,13 @@
#include <types.h>
#include <uart.h>
#include <console/console.h>
+#include <cpu/ti/am335x/pinmux.h>
void bootblock_mainboard_init(void);
void bootblock_mainboard_init(void)
{
+ void *uart_clock_ctrl = NULL;
+
/* Enable the GPIO module */
writel((0x2 << 0) | (1 << 18), (uint32_t *)(0x44e00000 + 0xac));
@@ -38,6 +41,29 @@ void bootblock_mainboard_init(void)
clrbits_le32((uint32_t *)(0x4804c000 + 0x13c), 0xf << 21);
setbits_le32((uint32_t *)(0x4804c000 + 0x13c), 0x5 << 21);
+ /* Set up the UART we're going to use */
+ if (CONFIG_CONSOLE_SERIAL_UART0) {
+ am335x_pinmux_uart0();
+ uart_clock_ctrl = (void *)(uintptr_t)(0x44e00400 + 0xb4);
+ } else if (CONFIG_CONSOLE_SERIAL_UART1) {
+ am335x_pinmux_uart1();
+ uart_clock_ctrl = (void *)(uintptr_t)(0x44e00000 + 0x6c);
+ } else if (CONFIG_CONSOLE_SERIAL_UART2) {
+ am335x_pinmux_uart2();
+ uart_clock_ctrl = (void *)(uintptr_t)(0x44e00000 + 0x70);
+ } else if (CONFIG_CONSOLE_SERIAL_UART3) {
+ am335x_pinmux_uart3();
+ uart_clock_ctrl = (void *)(uintptr_t)(0x44e00000 + 0x74);
+ } else if (CONFIG_CONSOLE_SERIAL_UART4) {
+ am335x_pinmux_uart4();
+ uart_clock_ctrl = (void *)(uintptr_t)(0x44e00000 + 0x78);
+ } else if (CONFIG_CONSOLE_SERIAL_UART5) {
+ am335x_pinmux_uart5();
+ uart_clock_ctrl = (void *)(uintptr_t)(0x44e00000 + 0x38);
+ }
+ if (uart_clock_ctrl)
+ writel(0x2, uart_clock_ctrl);
+
/* Start monotonic timer */
//rtc_start();