// SPDX-License-Identifier: BSD-2-Clause /* * Copyright (c) 2015, Linaro Limited * Copyright (c) 2017, Socionext Inc. */ #include #include #include #include #include #include #include #include #include register_phys_mem_pgdir(MEM_AREA_IO_SEC, ROUNDDOWN(CONSOLE_UART_BASE, CORE_MMU_PGDIR_SIZE), CORE_MMU_PGDIR_SIZE); register_phys_mem_pgdir(MEM_AREA_IO_SEC, ROUNDDOWN(GIC_BASE, CORE_MMU_PGDIR_SIZE), CORE_MMU_PGDIR_SIZE); register_phys_mem_pgdir(MEM_AREA_IO_SEC, ROUNDDOWN(GIC_BASE + GICD_OFFSET, CORE_MMU_PGDIR_SIZE), CORE_MMU_PGDIR_SIZE); #ifdef DRAM0_BASE register_ddr(DRAM0_BASE, DRAM0_SIZE); #endif #ifdef DRAM1_BASE register_ddr(DRAM1_BASE, DRAM1_SIZE); #endif static struct gic_data gic_data; static struct serial8250_uart_data console_data; void main_init_gic(void) { vaddr_t gicc_base, gicd_base; gicc_base = (vaddr_t)phys_to_virt(GIC_BASE + GICC_OFFSET, MEM_AREA_IO_SEC, CORE_MMU_PGDIR_SIZE); gicd_base = (vaddr_t)phys_to_virt(GIC_BASE + GICD_OFFSET, MEM_AREA_IO_SEC, CORE_MMU_PGDIR_SIZE); gic_init_base_addr(&gic_data, gicc_base, gicd_base); itr_init(&gic_data.chip); } void itr_core_handler(void) { gic_it_handle(&gic_data); } void console_init(void) { /* Init UART */ serial8250_uart_init(&console_data, CONSOLE_UART_BASE, CONSOLE_UART_CLK_IN_HZ, CONSOLE_BAUDRATE); /* Register console */ register_serial_console(&console_data.chip); }