Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
7fb3a70b
Unverified
Commit
7fb3a70b
authored
Jun 19, 2018
by
Dimitris Papastamos
Committed by
GitHub
Jun 19, 2018
Browse files
Merge pull request #1418 from antonio-nino-diaz-arm/an/arm-multi-console
plat/arm: Migrate AArch64 port to the multi console driver
parents
c0b7606f
88a0523e
Changes
14
Hide whitespace changes
Inline
Side-by-side
include/drivers/console.h
View file @
7fb3a70b
...
@@ -16,9 +16,9 @@
...
@@ -16,9 +16,9 @@
#define CONSOLE_T_FLUSH (U(4) * REGSZ)
#define CONSOLE_T_FLUSH (U(4) * REGSZ)
#define CONSOLE_T_DRVDATA (U(5) * REGSZ)
#define CONSOLE_T_DRVDATA (U(5) * REGSZ)
#define CONSOLE_FLAG_BOOT
BIT(
0)
#define CONSOLE_FLAG_BOOT
(U(1) <<
0)
#define CONSOLE_FLAG_RUNTIME
BIT(
1)
#define CONSOLE_FLAG_RUNTIME
(U(1) <<
1)
#define CONSOLE_FLAG_CRASH
BIT(
2)
#define CONSOLE_FLAG_CRASH
(U(1) <<
2)
/* Bits 3 to 7 reserved for additional scopes in future expansion. */
/* Bits 3 to 7 reserved for additional scopes in future expansion. */
#define CONSOLE_FLAG_SCOPE_MASK ((U(1) << 8) - 1)
#define CONSOLE_FLAG_SCOPE_MASK ((U(1) << 8) - 1)
/* Bits 8 to 31 reserved for non-scope use in future expansion. */
/* Bits 8 to 31 reserved for non-scope use in future expansion. */
...
...
include/plat/arm/board/common/board_arm_def.h
View file @
7fb3a70b
...
@@ -89,7 +89,7 @@
...
@@ -89,7 +89,7 @@
#if TRUSTED_BOARD_BOOT
#if TRUSTED_BOARD_BOOT
# define PLAT_ARM_MAX_BL2_SIZE 0x1E000
# define PLAT_ARM_MAX_BL2_SIZE 0x1E000
#else
#else
# define PLAT_ARM_MAX_BL2_SIZE 0x1
0
000
# define PLAT_ARM_MAX_BL2_SIZE 0x1
1
000
#endif
#endif
/*
/*
...
...
include/plat/arm/common/plat_arm.h
View file @
7fb3a70b
...
@@ -155,6 +155,12 @@ struct tzc_dmc500_driver_data;
...
@@ -155,6 +155,12 @@ struct tzc_dmc500_driver_data;
void
arm_tzc_dmc500_setup
(
struct
tzc_dmc500_driver_data
*
plat_driver_data
,
void
arm_tzc_dmc500_setup
(
struct
tzc_dmc500_driver_data
*
plat_driver_data
,
const
arm_tzc_regions_info_t
*
tzc_regions
);
const
arm_tzc_regions_info_t
*
tzc_regions
);
/* Console utility functions */
void
arm_console_boot_init
(
void
);
void
arm_console_boot_end
(
void
);
void
arm_console_runtime_init
(
void
);
void
arm_console_runtime_end
(
void
);
/* Systimer utility function */
/* Systimer utility function */
void
arm_configure_sys_timer
(
void
);
void
arm_configure_sys_timer
(
void
);
...
...
plat/arm/common/aarch64/arm_helpers.S
View file @
7fb3a70b
...
@@ -8,9 +8,9 @@
...
@@ -8,9 +8,9 @@
.
weak
plat_arm_calc_core_pos
.
weak
plat_arm_calc_core_pos
.
weak
plat_my_core_pos
.
weak
plat_my_core_pos
.
globl
plat_crash_console_init
.
weak
plat_crash_console_init
.
globl
plat_crash_console_putc
.
weak
plat_crash_console_putc
.
globl
plat_crash_console_flush
.
weak
plat_crash_console_flush
.
globl
platform_mem_init
.
globl
platform_mem_init
...
@@ -50,7 +50,7 @@ func plat_crash_console_init
...
@@ -50,7 +50,7 @@ func plat_crash_console_init
mov_imm
x0
,
PLAT_ARM_CRASH_UART_BASE
mov_imm
x0
,
PLAT_ARM_CRASH_UART_BASE
mov_imm
x1
,
PLAT_ARM_CRASH_UART_CLK_IN_HZ
mov_imm
x1
,
PLAT_ARM_CRASH_UART_CLK_IN_HZ
mov_imm
x2
,
ARM_CONSOLE_BAUDRATE
mov_imm
x2
,
ARM_CONSOLE_BAUDRATE
b
console_core_init
b
console_
pl011_
core_init
endfunc
plat_crash_console_init
endfunc
plat_crash_console_init
/
*
---------------------------------------------
/
*
---------------------------------------------
...
@@ -62,7 +62,7 @@ endfunc plat_crash_console_init
...
@@ -62,7 +62,7 @@ endfunc plat_crash_console_init
*/
*/
func
plat_crash_console_putc
func
plat_crash_console_putc
mov_imm
x1
,
PLAT_ARM_CRASH_UART_BASE
mov_imm
x1
,
PLAT_ARM_CRASH_UART_BASE
b
console_core_putc
b
console_
pl011_
core_putc
endfunc
plat_crash_console_putc
endfunc
plat_crash_console_putc
/
*
---------------------------------------------
/
*
---------------------------------------------
...
@@ -75,7 +75,7 @@ endfunc plat_crash_console_putc
...
@@ -75,7 +75,7 @@ endfunc plat_crash_console_putc
*/
*/
func
plat_crash_console_flush
func
plat_crash_console_flush
mov_imm
x0
,
PLAT_ARM_CRASH_UART_BASE
mov_imm
x0
,
PLAT_ARM_CRASH_UART_BASE
b
console_core_flush
b
console_
pl011_
core_flush
endfunc
plat_crash_console_flush
endfunc
plat_crash_console_flush
/
*
---------------------------------------------------------------------
/
*
---------------------------------------------------------------------
...
...
plat/arm/common/arm_bl1_setup.c
View file @
7fb3a70b
...
@@ -9,7 +9,6 @@
...
@@ -9,7 +9,6 @@
#include <arm_xlat_tables.h>
#include <arm_xlat_tables.h>
#include <bl1.h>
#include <bl1.h>
#include <bl_common.h>
#include <bl_common.h>
#include <console.h>
#include <plat_arm.h>
#include <plat_arm.h>
#include <platform.h>
#include <platform.h>
#include <platform_def.h>
#include <platform_def.h>
...
@@ -45,8 +44,7 @@ void arm_bl1_early_platform_setup(void)
...
@@ -45,8 +44,7 @@ void arm_bl1_early_platform_setup(void)
#endif
#endif
/* Initialize the console to provide early debug support */
/* Initialize the console to provide early debug support */
console_init
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
arm_console_boot_init
();
ARM_CONSOLE_BAUDRATE
);
/* Allow BL1 to see the whole Trusted RAM */
/* Allow BL1 to see the whole Trusted RAM */
bl1_tzram_layout
.
total_base
=
ARM_BL_RAM_BASE
;
bl1_tzram_layout
.
total_base
=
ARM_BL_RAM_BASE
;
...
...
plat/arm/common/arm_bl2_el3_setup.c
View file @
7fb3a70b
/*
/*
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2017
-2018
, ARM Limited and Contributors. All rights reserved.
*
*
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
*/
#include <console.h>
#include <generic_delay_timer.h>
#include <generic_delay_timer.h>
#include <plat_arm.h>
#include <plat_arm.h>
#include <platform.h>
#include <platform.h>
...
@@ -21,8 +20,7 @@ static meminfo_t bl2_el3_tzram_layout;
...
@@ -21,8 +20,7 @@ static meminfo_t bl2_el3_tzram_layout;
void
arm_bl2_el3_early_platform_setup
(
void
)
void
arm_bl2_el3_early_platform_setup
(
void
)
{
{
/* Initialize the console to provide early debug support */
/* Initialize the console to provide early debug support */
console_init
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
arm_console_boot_init
();
ARM_CONSOLE_BAUDRATE
);
/*
/*
* Allow BL2 to see the whole Trusted RAM. This is determined
* Allow BL2 to see the whole Trusted RAM. This is determined
...
...
plat/arm/common/arm_bl2_setup.c
View file @
7fb3a70b
...
@@ -8,7 +8,6 @@
...
@@ -8,7 +8,6 @@
#include <arm_def.h>
#include <arm_def.h>
#include <assert.h>
#include <assert.h>
#include <bl_common.h>
#include <bl_common.h>
#include <console.h>
#include <debug.h>
#include <debug.h>
#include <desc_image_load.h>
#include <desc_image_load.h>
#include <generic_delay_timer.h>
#include <generic_delay_timer.h>
...
@@ -176,8 +175,7 @@ struct entry_point_info *bl2_plat_get_bl31_ep_info(void)
...
@@ -176,8 +175,7 @@ struct entry_point_info *bl2_plat_get_bl31_ep_info(void)
void
arm_bl2_early_platform_setup
(
uintptr_t
tb_fw_config
,
meminfo_t
*
mem_layout
)
void
arm_bl2_early_platform_setup
(
uintptr_t
tb_fw_config
,
meminfo_t
*
mem_layout
)
{
{
/* Initialize the console to provide early debug support */
/* Initialize the console to provide early debug support */
console_init
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
arm_console_boot_init
();
ARM_CONSOLE_BAUDRATE
);
/* Setup the BL2 memory layout */
/* Setup the BL2 memory layout */
bl2_tzram_layout
=
*
mem_layout
;
bl2_tzram_layout
=
*
mem_layout
;
...
...
plat/arm/common/arm_bl2u_setup.c
View file @
7fb3a70b
...
@@ -7,7 +7,6 @@
...
@@ -7,7 +7,6 @@
#include <arch_helpers.h>
#include <arch_helpers.h>
#include <arm_def.h>
#include <arm_def.h>
#include <bl_common.h>
#include <bl_common.h>
#include <console.h>
#include <generic_delay_timer.h>
#include <generic_delay_timer.h>
#include <plat_arm.h>
#include <plat_arm.h>
#include <platform_def.h>
#include <platform_def.h>
...
@@ -36,8 +35,8 @@ void bl2u_platform_setup(void)
...
@@ -36,8 +35,8 @@ void bl2u_platform_setup(void)
void
arm_bl2u_early_platform_setup
(
meminfo_t
*
mem_layout
,
void
*
plat_info
)
void
arm_bl2u_early_platform_setup
(
meminfo_t
*
mem_layout
,
void
*
plat_info
)
{
{
/* Initialize the console to provide early debug support */
/* Initialize the console to provide early debug support */
console_init
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
arm_
console_
boot_
init
(
);
ARM_CONSOLE_BAUDRATE
);
generic_delay_timer_init
();
generic_delay_timer_init
();
}
}
...
...
plat/arm/common/arm_bl31_setup.c
View file @
7fb3a70b
...
@@ -78,8 +78,7 @@ void arm_bl31_early_platform_setup(bl31_params_t *from_bl2, uintptr_t soc_fw_con
...
@@ -78,8 +78,7 @@ void arm_bl31_early_platform_setup(bl31_params_t *from_bl2, uintptr_t soc_fw_con
#endif
#endif
{
{
/* Initialize the console to provide early debug support */
/* Initialize the console to provide early debug support */
console_init
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
arm_console_boot_init
();
ARM_CONSOLE_BAUDRATE
);
#if RESET_TO_BL31
#if RESET_TO_BL31
/* There are no parameters from BL2 if BL31 is a reset vector */
/* There are no parameters from BL2 if BL31 is a reset vector */
...
@@ -249,12 +248,18 @@ void arm_bl31_platform_setup(void)
...
@@ -249,12 +248,18 @@ void arm_bl31_platform_setup(void)
/*******************************************************************************
/*******************************************************************************
* Perform any BL31 platform runtime setup prior to BL31 exit common to ARM
* Perform any BL31 platform runtime setup prior to BL31 exit common to ARM
* standard platforms
* standard platforms
* Perform BL31 platform setup
******************************************************************************/
******************************************************************************/
void
arm_bl31_plat_runtime_setup
(
void
)
void
arm_bl31_plat_runtime_setup
(
void
)
{
{
#if MULTI_CONSOLE_API
console_switch_state
(
CONSOLE_FLAG_RUNTIME
);
#else
console_uninit
();
#endif
/* Initialize the runtime console */
/* Initialize the runtime console */
console_init
(
PLAT_ARM_BL31_RUN_UART_BASE
,
PLAT_ARM_BL31_RUN_UART_CLK_IN_HZ
,
arm_console_runtime_init
();
ARM_CONSOLE_BAUDRATE
);
}
}
void
bl31_platform_setup
(
void
)
void
bl31_platform_setup
(
void
)
...
...
plat/arm/common/arm_common.mk
View file @
7fb3a70b
...
@@ -125,6 +125,11 @@ SEPARATE_CODE_AND_RODATA := 1
...
@@ -125,6 +125,11 @@ SEPARATE_CODE_AND_RODATA := 1
# Enable new version of image loading on ARM platforms
# Enable new version of image loading on ARM platforms
LOAD_IMAGE_V2
:=
1
LOAD_IMAGE_V2
:=
1
# Use the multi console API, which is only available for AArch64 for now
ifeq
(${ARCH}, aarch64)
MULTI_CONSOLE_API
:=
1
endif
# Use generic OID definition (tbbr_oid.h)
# Use generic OID definition (tbbr_oid.h)
USE_TBBR_DEFS
:=
1
USE_TBBR_DEFS
:=
1
...
@@ -141,7 +146,8 @@ PLAT_INCLUDES += -Iinclude/plat/arm/common/aarch64
...
@@ -141,7 +146,8 @@ PLAT_INCLUDES += -Iinclude/plat/arm/common/aarch64
endif
endif
PLAT_BL_COMMON_SOURCES
+=
plat/arm/common/
${ARCH}
/arm_helpers.S
\
PLAT_BL_COMMON_SOURCES
+=
plat/arm/common/
${ARCH}
/arm_helpers.S
\
plat/arm/common/arm_common.c
plat/arm/common/arm_common.c
\
plat/arm/common/arm_console.c
ifeq
(${ARM_XLAT_TABLES_LIB_V1}, 1)
ifeq
(${ARM_XLAT_TABLES_LIB_V1}, 1)
PLAT_BL_COMMON_SOURCES
+=
lib/xlat_tables/xlat_tables_common.c
\
PLAT_BL_COMMON_SOURCES
+=
lib/xlat_tables/xlat_tables_common.c
\
...
...
plat/arm/common/arm_console.c
0 → 100644
View file @
7fb3a70b
/*
* 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 <pl011.h>
#include <plat_arm.h>
#include <platform_def.h>
/*******************************************************************************
* Functions that set up the console
******************************************************************************/
#if MULTI_CONSOLE_API
static
console_pl011_t
arm_boot_console
;
static
console_pl011_t
arm_runtime_console
;
#endif
/* Initialize the console to provide early debug support */
void
arm_console_boot_init
(
void
)
{
#if MULTI_CONSOLE_API
int
rc
=
console_pl011_register
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
ARM_CONSOLE_BAUDRATE
,
&
arm_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
(
&
arm_boot_console
.
console
,
CONSOLE_FLAG_BOOT
);
#else
(
void
)
console_init
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
ARM_CONSOLE_BAUDRATE
);
#endif
/* MULTI_CONSOLE_API */
}
void
arm_console_boot_end
(
void
)
{
(
void
)
console_flush
();
#if MULTI_CONSOLE_API
(
void
)
console_unregister
(
&
arm_boot_console
.
console
);
#else
console_uninit
();
#endif
/* MULTI_CONSOLE_API */
}
/* Initialize the runtime console */
void
arm_console_runtime_init
(
void
)
{
#if MULTI_CONSOLE_API
int
rc
=
console_pl011_register
(
PLAT_ARM_BL31_RUN_UART_BASE
,
PLAT_ARM_BL31_RUN_UART_CLK_IN_HZ
,
ARM_CONSOLE_BAUDRATE
,
&
arm_runtime_console
);
if
(
rc
==
0
)
panic
();
console_set_scope
(
&
arm_runtime_console
.
console
,
CONSOLE_FLAG_RUNTIME
);
#else
(
void
)
console_init
(
PLAT_ARM_BL31_RUN_UART_BASE
,
PLAT_ARM_BL31_RUN_UART_CLK_IN_HZ
,
ARM_CONSOLE_BAUDRATE
);
#endif
/* MULTI_CONSOLE_API */
}
void
arm_console_runtime_end
(
void
)
{
(
void
)
console_flush
();
#if MULTI_CONSOLE_API
(
void
)
console_unregister
(
&
arm_runtime_console
.
console
);
#else
console_uninit
();
#endif
/* MULTI_CONSOLE_API */
}
plat/arm/common/arm_pm.c
View file @
7fb3a70b
/*
/*
* Copyright (c) 2015-201
7
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-201
8
, ARM Limited and Contributors. All rights reserved.
*
*
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
*/
...
@@ -8,7 +8,6 @@
...
@@ -8,7 +8,6 @@
#include <arm_def.h>
#include <arm_def.h>
#include <arm_gic.h>
#include <arm_gic.h>
#include <assert.h>
#include <assert.h>
#include <console.h>
#include <errno.h>
#include <errno.h>
#include <plat_arm.h>
#include <plat_arm.h>
#include <platform.h>
#include <platform.h>
...
@@ -159,6 +158,12 @@ void arm_system_pwr_domain_save(void)
...
@@ -159,6 +158,12 @@ void arm_system_pwr_domain_save(void)
plat_arm_gic_save
();
plat_arm_gic_save
();
/*
* Unregister console now so that it is not registered for a second
* time during resume.
*/
arm_console_runtime_end
();
/*
/*
* All the other peripheral which are configured by ARM TF are
* All the other peripheral which are configured by ARM TF are
* re-initialized on resume from system suspend. Hence we
* re-initialized on resume from system suspend. Hence we
...
@@ -174,8 +179,8 @@ void arm_system_pwr_domain_save(void)
...
@@ -174,8 +179,8 @@ void arm_system_pwr_domain_save(void)
*****************************************************************************/
*****************************************************************************/
void
arm_system_pwr_domain_resume
(
void
)
void
arm_system_pwr_domain_resume
(
void
)
{
{
console_init
(
PLAT_ARM_BL31_RUN_UART_BASE
,
PLAT_ARM_BL31_RUN_UART_CLK_IN_HZ
,
/* Initialize the console */
ARM_CONSOLE_BAUDRATE
);
arm_console_runtime_init
(
);
/* Assert system power domain is available on the platform */
/* Assert system power domain is available on the platform */
assert
(
PLAT_MAX_PWR_LVL
>=
ARM_PWR_LVL2
);
assert
(
PLAT_MAX_PWR_LVL
>=
ARM_PWR_LVL2
);
...
...
plat/arm/common/tsp/arm_tsp_setup.c
View file @
7fb3a70b
/*
/*
* Copyright (c) 2015-201
6
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015-201
8
, ARM Limited and Contributors. All rights reserved.
*
*
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
*/
...
@@ -7,6 +7,8 @@
...
@@ -7,6 +7,8 @@
#include <arm_def.h>
#include <arm_def.h>
#include <bl_common.h>
#include <bl_common.h>
#include <console.h>
#include <console.h>
#include <debug.h>
#include <pl011.h>
#include <plat_arm.h>
#include <plat_arm.h>
#include <platform_def.h>
#include <platform_def.h>
#include <platform_tsp.h>
#include <platform_tsp.h>
...
@@ -22,14 +24,30 @@
...
@@ -22,14 +24,30 @@
/*******************************************************************************
/*******************************************************************************
* Initialize the UART
* Initialize the UART
******************************************************************************/
******************************************************************************/
#if MULTI_CONSOLE_API
static
console_pl011_t
arm_tsp_runtime_console
;
#endif
void
arm_tsp_early_platform_setup
(
void
)
void
arm_tsp_early_platform_setup
(
void
)
{
{
#if MULTI_CONSOLE_API
/*
/*
* Initialize a different console than already in use to display
* Initialize a different console than already in use to display
* messages from TSP
* messages from TSP
*/
*/
int
rc
=
console_pl011_register
(
PLAT_ARM_TSP_UART_BASE
,
PLAT_ARM_TSP_UART_CLK_IN_HZ
,
ARM_CONSOLE_BAUDRATE
,
&
arm_tsp_runtime_console
);
if
(
rc
==
0
)
panic
();
console_set_scope
(
&
arm_tsp_runtime_console
.
console
,
CONSOLE_FLAG_BOOT
|
CONSOLE_FLAG_RUNTIME
);
#else
console_init
(
PLAT_ARM_TSP_UART_BASE
,
PLAT_ARM_TSP_UART_CLK_IN_HZ
,
console_init
(
PLAT_ARM_TSP_UART_BASE
,
PLAT_ARM_TSP_UART_CLK_IN_HZ
,
ARM_CONSOLE_BAUDRATE
);
ARM_CONSOLE_BAUDRATE
);
#endif
/* MULTI_CONSOLE_API */
}
}
void
tsp_early_platform_setup
(
void
)
void
tsp_early_platform_setup
(
void
)
...
...
plat/common/plat_bl1_common.c
View file @
7fb3a70b
...
@@ -107,7 +107,8 @@ int bl1_plat_handle_post_image_load(unsigned int image_id)
...
@@ -107,7 +107,8 @@ int bl1_plat_handle_post_image_load(unsigned int image_id)
#if LOAD_IMAGE_V2
#if LOAD_IMAGE_V2
bl2_tzram_layout
=
(
meminfo_t
*
)
bl1_tzram_layout
->
total_base
;
bl2_tzram_layout
=
(
meminfo_t
*
)
bl1_tzram_layout
->
total_base
;
#else
#else
bl2_tzram_layout
=
(
meminfo_t
*
)
bl1_tzram_layout
->
free_base
;
bl2_tzram_layout
=
(
meminfo_t
*
)
round_up
(
bl1_tzram_layout
->
free_base
,
sizeof
(
uint64_t
));
#endif
/* LOAD_IMAGE_V2 */
#endif
/* LOAD_IMAGE_V2 */
#if !ERROR_DEPRECATED
#if !ERROR_DEPRECATED
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment