foundation-armv8: Implement proper pl011 UART initialization

BUG=None
BRANCH=none
TEST=Ran image in foundation model
Signed-off-by: Marcelo Povoa <marcelogp@chromium.org>

Change-Id: I4e86f6251196d1b4d5e43bc6fd7297cf9624c2ab
Reviewed-on: https://chromium-review.googlesource.com/185272
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Reviewed-by: David Hendricks <dhendrix@chromium.org>
Tested-by: Marcelo Póvoa <marcelogp@chromium.org>
Commit-Queue: Marcelo Póvoa <marcelogp@chromium.org>
This commit is contained in:
Marcelo Povoa 2014-02-06 15:17:37 -08:00 committed by chrome-internal-fetch
commit 232f5b213a

View file

@ -16,16 +16,29 @@
#include <console/console.h>
#include <uart.h>
static void pl011_init_dev(void) {
#define FOUNDATION_UART0_IO_ADDRESS (0x1C090000)
#define PL011_UARTCR_OFFSET (0x030)
static void pl011_init_dev(void)
{
static volatile uint32_t *uartcr_address =
(uint32_t *)(FOUNDATION_UART0_IO_ADDRESS + PL011_UARTCR_OFFSET);
/* Enable TX and UART */
*uartcr_address = *uartcr_address | (1 << 8) | (1 << 0);
}
static void pl011_uart_tx_byte(unsigned char data) {
static volatile unsigned int *uart0_address = (void *)0;
static void pl011_uart_tx_byte(uint8_t data)
{
static volatile uint32_t *uart0_address =
(uint32_t *)FOUNDATION_UART0_IO_ADDRESS;
*uart0_address = (unsigned int)data;
*uart0_address = (uint32_t)data;
}
static void pl011_uart_tx_flush(void) {
static void pl011_uart_tx_flush(void)
{
}
#if !defined(__PRE_RAM__)
@ -38,7 +51,7 @@ static const struct console_driver pl011_uart_console __console = {
uint32_t uartmem_getbaseaddr(void)
{
return 0;
return FOUNDATION_UART0_IO_ADDRESS;
}
#else
@ -52,7 +65,8 @@ void uart_tx_byte(unsigned char data)
pl011_uart_tx_byte(data);
}
void uart_tx_flush(void) {
void uart_tx_flush(void)
{
pl011_uart_tx_flush();
}
#endif