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:
parent
67b74d3dc9
commit
232f5b213a
1 changed files with 21 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue