diff options
Diffstat (limited to 'core/arch/arm/plat-vexpress/main.c')
-rw-r--r-- | core/arch/arm/plat-vexpress/main.c | 39 |
1 files changed, 8 insertions, 31 deletions
diff --git a/core/arch/arm/plat-vexpress/main.c b/core/arch/arm/plat-vexpress/main.c index 85ed9ee..44eef24 100644 --- a/core/arch/arm/plat-vexpress/main.c +++ b/core/arch/arm/plat-vexpress/main.c @@ -55,7 +55,7 @@ static void main_fiq(void); static const struct thread_handlers handlers = { .std_smc = tee_entry_std, .fast_smc = tee_entry_fast, - .fiq = main_fiq, + .nintr = main_fiq, #if defined(CFG_WITH_ARM_TRUSTED_FW) .cpu_on = cpu_on_handler, .cpu_off = pm_do_nothing, @@ -74,6 +74,7 @@ static const struct thread_handlers handlers = { }; static struct gic_data gic_data; +static struct pl011_data console_data __early_bss; register_phys_mem(MEM_AREA_IO_SEC, CONSOLE_UART_BASE, PL011_REG_SIZE); @@ -116,44 +117,20 @@ static void main_fiq(void) gic_it_handle(&gic_data); } -static vaddr_t console_base(void) -{ - static void *va; - - if (cpu_mmu_enabled()) { - if (!va) - va = phys_to_virt(CONSOLE_UART_BASE, MEM_AREA_IO_SEC); - return (vaddr_t)va; - } - return CONSOLE_UART_BASE; -} - void console_init(void) { - pl011_init(console_base(), CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); -} - -void console_putc(int ch) -{ - vaddr_t base = console_base(); - - if (ch == '\n') - pl011_putc('\r', base); - pl011_putc(ch, base); -} - -void console_flush(void) -{ - pl011_flush(console_base()); + pl011_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, + CONSOLE_BAUDRATE); + register_serial_console(&console_data.chip); } #ifdef IT_CONSOLE_UART static enum itr_return console_itr_cb(struct itr_handler *h __unused) { - paddr_t uart_base = console_base(); + struct serial_chip *cons = &console_data.chip; - while (pl011_have_rx_data(uart_base)) { - int ch __maybe_unused = pl011_getchar(uart_base); + while (cons->ops->have_rx_data(cons)) { + int ch __maybe_unused = cons->ops->getchar(cons); DMSG("cpu %zu: got 0x%x", get_core_pos(), ch); } |