rk3288: Move UART initialization to bootblock_mainboard_early_init()

This patch uses the new bootblock_mainboard_early_init() hook to run the
UART pinmuxing on rk3288-based boards before initializing the console.
This allows us to get rid of the hacky second console_init() call in
bootblock_soc_init(). We can also simplify the pinmux selection a bit
since we know that a given board always uses the same UART (still keep
an assert around to be sure, though).

BRANCH=None
BUG=chrome-os-partner:32123
TEST=Booted on Pinky.

Change-Id: I3da8b0e4bd609f33cedd934ce51cb20b1190024b
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: caabda8fc1ddb4805d86fd9a0d5d2f3cf738bfaf
Original-Change-Id: Ia56c0599a15f966d087ca39181bfe23abd262e72
Original-Signed-off-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/231942
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/9604
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Julius Werner 2014-11-25 13:36:17 -08:00 committed by Patrick Georgi
parent f1e321001d
commit df5bf2b796
4 changed files with 30 additions and 11 deletions

View File

@ -19,6 +19,7 @@
*/ */
#include <arch/io.h> #include <arch/io.h>
#include <assert.h>
#include <bootblock_common.h> #include <bootblock_common.h>
#include <delay.h> #include <delay.h>
#include <soc/clock.h> #include <soc/clock.h>
@ -31,6 +32,15 @@
#include "board.h" #include "board.h"
void bootblock_mainboard_early_init()
{
if (IS_ENABLED(CONFIG_CONSOLE_SERIAL_UART)) {
assert(CONFIG_CONSOLE_SERIAL_UART_ADDRESS == UART2_BASE);
writel(IOMUX_UART2, &rk3288_grf->iomux_uart2);
}
}
void bootblock_mainboard_init(void) void bootblock_mainboard_init(void)
{ {
/* Up VDD_CPU (BUCK1) to 1.4V to support max CPU frequency (1.8GHz). */ /* Up VDD_CPU (BUCK1) to 1.4V to support max CPU frequency (1.8GHz). */

View File

@ -19,6 +19,7 @@
*/ */
#include <arch/io.h> #include <arch/io.h>
#include <assert.h>
#include <bootblock_common.h> #include <bootblock_common.h>
#include <delay.h> #include <delay.h>
#include <soc/clock.h> #include <soc/clock.h>
@ -31,6 +32,15 @@
#include "board.h" #include "board.h"
void bootblock_mainboard_early_init()
{
if (IS_ENABLED(CONFIG_CONSOLE_SERIAL_UART)) {
assert(CONFIG_CONSOLE_SERIAL_UART_ADDRESS == UART2_BASE);
writel(IOMUX_UART2, &rk3288_grf->iomux_uart2);
}
}
void bootblock_mainboard_init(void) void bootblock_mainboard_init(void)
{ {
/* Up VDD_CPU (BUCK1) to 1.4V to support max CPU frequency (1.8GHz). */ /* Up VDD_CPU (BUCK1) to 1.4V to support max CPU frequency (1.8GHz). */

View File

@ -19,6 +19,7 @@
*/ */
#include <arch/io.h> #include <arch/io.h>
#include <assert.h>
#include <bootblock_common.h> #include <bootblock_common.h>
#include <delay.h> #include <delay.h>
#include <soc/clock.h> #include <soc/clock.h>
@ -31,6 +32,15 @@
#include "board.h" #include "board.h"
void bootblock_mainboard_early_init()
{
if (IS_ENABLED(CONFIG_CONSOLE_SERIAL_UART)) {
assert(CONFIG_CONSOLE_SERIAL_UART_ADDRESS == UART2_BASE);
writel(IOMUX_UART2, &rk3288_grf->iomux_uart2);
}
}
void bootblock_mainboard_init(void) void bootblock_mainboard_init(void)
{ {
/* Up VDD_CPU (BUCK1) to 1.4V to support max CPU frequency (1.8GHz). */ /* Up VDD_CPU (BUCK1) to 1.4V to support max CPU frequency (1.8GHz). */

View File

@ -31,17 +31,6 @@ static void bootblock_soc_init(void)
{ {
rk3288_init_timer(); rk3288_init_timer();
if (IS_ENABLED(CONFIG_DRIVERS_UART)) {
switch (CONFIG_CONSOLE_SERIAL_UART_ADDRESS) {
case UART2_BASE:
writel(IOMUX_UART2, &rk3288_grf->iomux_uart2);
break;
default:
die("TODO: Handle setup for console UART if needed");
}
console_init();
}
rkclk_init(); rkclk_init();
mmu_init(); mmu_init();