diff options
author | Konstantin Porotchkin <kostap@marvell.com> | 2018-11-14 17:15:08 +0200 |
---|---|---|
committer | Konstantin Porotchkin <kostap@marvell.com> | 2018-11-15 13:42:45 +0200 |
commit | d7c4420cb8a745bf61c1de0df8858526002e16b0 (patch) | |
tree | 34c99fa20fa8a1b720c1263df6691dc5a45de365 /plat/marvell | |
parent | 076374c9b97d47b10ba5c6034817866c08d66ed4 (diff) |
plat/marvell: Migrate to multi-console API
Migrate Marvell platforms from legacy console API to
multi-console API.
Change-Id: I647f5f49148b463a257a747af05b5f0c967f267c
Signed-off-by: Konstantin Porotchkin <kostap@marvell.com>
Diffstat (limited to 'plat/marvell')
-rw-r--r-- | plat/marvell/a3700/common/a3700_common.mk | 3 | ||||
-rw-r--r-- | plat/marvell/a8k/common/a8k_common.mk | 1 | ||||
-rw-r--r-- | plat/marvell/a8k/common/ble/ble.mk | 5 | ||||
-rw-r--r-- | plat/marvell/a8k/common/ble/ble_main.c | 6 | ||||
-rw-r--r-- | plat/marvell/a8k/common/plat_pm.c | 7 | ||||
-rw-r--r-- | plat/marvell/common/aarch64/marvell_helpers.S | 21 | ||||
-rw-r--r-- | plat/marvell/common/marvell_bl1_setup.c | 4 | ||||
-rw-r--r-- | plat/marvell/common/marvell_bl2_setup.c | 4 | ||||
-rw-r--r-- | plat/marvell/common/marvell_bl31_setup.c | 10 | ||||
-rw-r--r-- | plat/marvell/common/marvell_common.mk | 5 | ||||
-rw-r--r-- | plat/marvell/common/marvell_console.c | 86 |
11 files changed, 122 insertions, 30 deletions
diff --git a/plat/marvell/a3700/common/a3700_common.mk b/plat/marvell/a3700/common/a3700_common.mk index 387562bc..3983c707 100644 --- a/plat/marvell/a3700/common/a3700_common.mk +++ b/plat/marvell/a3700/common/a3700_common.mk @@ -71,7 +71,6 @@ TIMBLDUARTARGS := $(MARVELL_SECURE_BOOT) UART $(IMAGESPATH) $(DOIMAGEPATH) $(CL $(DDR_TOPOLOGY) 0 0 $(DOIMAGE_CFG) $(TIMNCFG) $(TIMNSIG) 0 DOIMAGE_FLAGS := -r $(DOIMAGE_CFG) -v -D - # GICV3 $(eval $(call add_define,CONFIG_GICV3)) @@ -91,8 +90,8 @@ ATF_INCLUDES := -Iinclude/common/tbbr \ PLAT_INCLUDES := -I$(PLAT_FAMILY_BASE)/$(PLAT) \ -I$(PLAT_COMMON_BASE)/include \ -I$(PLAT_INCLUDE_BASE)/common \ - -I$(MARVELL_DRV_BASE)/uart \ -I$(MARVELL_DRV_BASE) \ + -Iinclude/drivers/marvell/uart \ -I$/drivers/arm/gic/common/ \ $(ATF_INCLUDES) diff --git a/plat/marvell/a8k/common/a8k_common.mk b/plat/marvell/a8k/common/a8k_common.mk index a589004b..6136a1f5 100644 --- a/plat/marvell/a8k/common/a8k_common.mk +++ b/plat/marvell/a8k/common/a8k_common.mk @@ -25,7 +25,6 @@ $(eval $(call add_define,BL31_CACHE_DISABLE)) $(eval $(call add_define,PCI_EP_SUPPORT)) $(eval $(call assert_boolean,PCI_EP_SUPPORT)) - AP_NUM := 1 $(eval $(call add_define,AP_NUM)) diff --git a/plat/marvell/a8k/common/ble/ble.mk b/plat/marvell/a8k/common/ble/ble.mk index a76083eb..5f24ced2 100644 --- a/plat/marvell/a8k/common/ble/ble.mk +++ b/plat/marvell/a8k/common/ble/ble.mk @@ -12,8 +12,9 @@ PLAT_MARVELL = plat/marvell BLE_SOURCES += $(BLE_PATH)/ble_main.c \ $(BLE_PATH)/ble_mem.S \ - drivers/delay_timer/delay_timer.c \ - $(PLAT_MARVELL)/common/plat_delay_timer.c + drivers/delay_timer/delay_timer.c \ + $(PLAT_MARVELL)/common/plat_delay_timer.c \ + $(PLAT_MARVELL)/common/marvell_console.c PLAT_INCLUDES += -I$(MV_DDR_PATH) \ -I$(CURDIR)/include/ \ diff --git a/plat/marvell/a8k/common/ble/ble_main.c b/plat/marvell/a8k/common/ble/ble_main.c index e52c738d..b04e8b7a 100644 --- a/plat/marvell/a8k/common/ble/ble_main.c +++ b/plat/marvell/a8k/common/ble/ble_main.c @@ -35,13 +35,11 @@ int exec_ble_main(int bootrom_flags) * initialize the console and prints will be ignored */ if ((bootrom_flags & BR_FLAG_SILENT) == 0) - console_init(PLAT_MARVELL_BOOT_UART_BASE, - PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, - MARVELL_CONSOLE_BAUDRATE); + marvell_console_boot_init(); NOTICE("Starting binary extension\n"); - /* initiliaze time (for delay functionality) */ + /* initialize time (for delay functionality) */ plat_delay_timer_init(); ble_plat_setup(&skip); diff --git a/plat/marvell/a8k/common/plat_pm.c b/plat/marvell/a8k/common/plat_pm.c index 0c74b2fe..1b68d076 100644 --- a/plat/marvell/a8k/common/plat_pm.c +++ b/plat/marvell/a8k/common/plat_pm.c @@ -19,7 +19,6 @@ #include <plat_marvell.h> #include <platform.h> #include <plat_pm_trace.h> -#include <platform.h> #define MVEBU_PRIVATE_UID_REG 0x30 #define MVEBU_RFU_GLOBL_SW_RST 0x84 @@ -614,6 +613,8 @@ static void a8k_pwr_domain_suspend(const psci_power_state_t *target_state) INFO("Suspending to RAM\n"); + marvell_console_runtime_end(); + /* Prevent interrupts from spuriously waking up this cpu */ gicv2_cpuif_disable(); @@ -687,9 +688,7 @@ static void a8k_pwr_domain_suspend_finish( /* Initialize the console to provide * early debug support */ - console_init(PLAT_MARVELL_BOOT_UART_BASE, - PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, - MARVELL_CONSOLE_BAUDRATE); + marvell_console_runtime_init(); bl31_plat_arch_setup(); marvell_bl31_platform_setup(); diff --git a/plat/marvell/common/aarch64/marvell_helpers.S b/plat/marvell/common/aarch64/marvell_helpers.S index 128c3ab6..fbd19cb6 100644 --- a/plat/marvell/common/aarch64/marvell_helpers.S +++ b/plat/marvell/common/aarch64/marvell_helpers.S @@ -65,7 +65,11 @@ func plat_crash_console_init mov_imm x0, PLAT_MARVELL_CRASH_UART_BASE mov_imm x1, PLAT_MARVELL_CRASH_UART_CLK_IN_HZ mov_imm x2, MARVELL_CONSOLE_BAUDRATE - b console_core_init +#ifdef PLAT_a3700 + b console_a3700_core_init +#else + b console_16550_core_init +#endif endfunc plat_crash_console_init /* --------------------------------------------- @@ -77,7 +81,12 @@ endfunc plat_crash_console_init */ func plat_crash_console_putc mov_imm x1, PLAT_MARVELL_CRASH_UART_BASE - b console_core_putc +#ifdef PLAT_a3700 + + b console_a3700_core_putc +#else + b console_16550_core_putc +#endif endfunc plat_crash_console_putc /* --------------------------------------------- @@ -85,12 +94,16 @@ endfunc plat_crash_console_putc * Function to force a write of all buffered * data that hasn't been output. * Out : return -1 on error else return 0. - * Clobber list : x0, x1 + * Clobber list : r0 * --------------------------------------------- */ func plat_crash_console_flush mov_imm x0, PLAT_MARVELL_CRASH_UART_BASE - b console_core_flush +#ifdef PLAT_a3700 + b console_a3700_core_flush +#else + b console_16550_core_flush +#endif endfunc plat_crash_console_flush /* --------------------------------------------------------------------- diff --git a/plat/marvell/common/marvell_bl1_setup.c b/plat/marvell/common/marvell_bl1_setup.c index 4e1b256b..c96f0067 100644 --- a/plat/marvell/common/marvell_bl1_setup.c +++ b/plat/marvell/common/marvell_bl1_setup.c @@ -35,9 +35,7 @@ meminfo_t *bl1_plat_sec_mem_layout(void) void marvell_bl1_early_platform_setup(void) { /* Initialize the console to provide early debug support */ - console_init(PLAT_MARVELL_BOOT_UART_BASE, - PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, - MARVELL_CONSOLE_BAUDRATE); + marvell_console_boot_init(); /* Allow BL1 to see the whole Trusted RAM */ bl1_ram_layout.total_base = MARVELL_BL_RAM_BASE; diff --git a/plat/marvell/common/marvell_bl2_setup.c b/plat/marvell/common/marvell_bl2_setup.c index d33aba47..883336f0 100644 --- a/plat/marvell/common/marvell_bl2_setup.c +++ b/plat/marvell/common/marvell_bl2_setup.c @@ -40,9 +40,7 @@ meminfo_t *bl2_plat_sec_mem_layout(void) void marvell_bl2_early_platform_setup(meminfo_t *mem_layout) { /* Initialize the console to provide early debug support */ - console_init(PLAT_MARVELL_BOOT_UART_BASE, - PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, - MARVELL_CONSOLE_BAUDRATE); + marvell_console_boot_init(); /* Setup the BL2 memory layout */ bl2_tzram_layout = *mem_layout; diff --git a/plat/marvell/common/marvell_bl31_setup.c b/plat/marvell/common/marvell_bl31_setup.c index da91b560..3b1a6f13 100644 --- a/plat/marvell/common/marvell_bl31_setup.c +++ b/plat/marvell/common/marvell_bl31_setup.c @@ -74,9 +74,7 @@ void marvell_bl31_early_platform_setup(void *from_bl2, void *plat_params_from_bl2) { /* Initialize the console to provide early debug support */ - console_init(PLAT_MARVELL_BOOT_UART_BASE, - PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, - MARVELL_CONSOLE_BAUDRATE); + marvell_console_boot_init(); #if RESET_TO_BL31 /* There are no parameters from BL2 if BL31 is a reset vector */ @@ -190,10 +188,10 @@ void marvell_bl31_platform_setup(void) */ void marvell_bl31_plat_runtime_setup(void) { + console_switch_state(CONSOLE_FLAG_RUNTIME); + /* Initialize the runtime console */ - console_init(PLAT_MARVELL_BL31_RUN_UART_BASE, - PLAT_MARVELL_BL31_RUN_UART_CLK_IN_HZ, - MARVELL_CONSOLE_BAUDRATE); + marvell_console_runtime_init(); } void bl31_platform_setup(void) diff --git a/plat/marvell/common/marvell_common.mk b/plat/marvell/common/marvell_common.mk index 3a6bb033..fb6fbb58 100644 --- a/plat/marvell/common/marvell_common.mk +++ b/plat/marvell/common/marvell_common.mk @@ -11,6 +11,8 @@ include $(MARVELL_PLAT_BASE)/marvell.mk VERSION_STRING +=(Marvell-${SUBVERSION}) +MULTI_CONSOLE_API := 1 + SEPARATE_CODE_AND_RODATA := 1 # flag to switch from PLL to ARO @@ -28,7 +30,8 @@ PLAT_INCLUDES += -I. -Iinclude/common -Iinclude/common/tbbr \ PLAT_BL_COMMON_SOURCES += lib/xlat_tables/xlat_tables_common.c \ lib/xlat_tables/aarch64/xlat_tables.c \ $(MARVELL_PLAT_BASE)/common/aarch64/marvell_common.c \ - $(MARVELL_PLAT_BASE)/common/aarch64/marvell_helpers.S + $(MARVELL_PLAT_BASE)/common/aarch64/marvell_helpers.S \ + $(MARVELL_COMMON_BASE)/marvell_console.c BL1_SOURCES += drivers/delay_timer/delay_timer.c \ drivers/io/io_fip.c \ diff --git a/plat/marvell/common/marvell_console.c b/plat/marvell/common/marvell_console.c new file mode 100644 index 00000000..eba106dc --- /dev/null +++ b/plat/marvell/common/marvell_console.c @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#include <assert.h> +#include <console.h> +#include <debug.h> +#include <plat_marvell.h> +#include <platform_def.h> + +#ifdef PLAT_a3700 +#include <a3700_console.h> + +static console_a3700_t marvell_boot_console; +static console_a3700_t marvell_runtime_console; +#else +#include <uart_16550.h> + +static console_16550_t marvell_boot_console; +static console_16550_t marvell_runtime_console; +#endif + +/******************************************************************************* + * Functions that set up the console + ******************************************************************************/ + +/* Initialize the console to provide early debug support */ +void marvell_console_boot_init(void) +{ + int rc = +#ifdef PLAT_a3700 + console_a3700_register( +#else + console_16550_register( +#endif + PLAT_MARVELL_BOOT_UART_BASE, + PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, + MARVELL_CONSOLE_BAUDRATE, + &marvell_boot_console); + if (rc == 0) { + /* + * The crash console doesn't use the multi console API, it uses + * the core console functions directly. It is safe to call panic + * and let it print debug information. + */ + panic(); + } + + console_set_scope(&marvell_boot_console.console, + CONSOLE_FLAG_BOOT); +} + +void marvell_console_boot_end(void) +{ + (void)console_flush(); + + (void)console_unregister(&marvell_boot_console.console); +} + +/* Initialize the runtime console */ +void marvell_console_runtime_init(void) +{ + int rc = +#ifdef PLAT_a3700 + console_a3700_register( +#else + console_16550_register( +#endif + PLAT_MARVELL_BOOT_UART_BASE, + PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, + MARVELL_CONSOLE_BAUDRATE, + &marvell_runtime_console); + if (rc == 0) + panic(); + + console_set_scope(&marvell_runtime_console.console, + CONSOLE_FLAG_RUNTIME); +} + +void marvell_console_runtime_end(void) +{ + (void)console_flush(); + + (void)console_unregister(&marvell_runtime_console.console); +} |