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
16b05e94
Unverified
Commit
16b05e94
authored
Mar 08, 2018
by
davidcunado-arm
Committed by
GitHub
Mar 08, 2018
Browse files
Merge pull request #1303 from soby-mathew/sm/fix_juno_fwu
Juno: Fixes for firmware update
parents
bf35944b
7b56928a
Changes
10
Hide whitespace changes
Inline
Side-by-side
plat/arm/board/common/board_css_common.c
View file @
16b05e94
...
...
@@ -14,7 +14,7 @@
#ifdef IMAGE_BL1
const
mmap_region_t
plat_arm_mmap
[]
=
{
ARM_MAP_SHARED_RAM
,
V2M_MAP_FLASH0_R
O
,
V2M_MAP_FLASH0_R
W
,
V2M_MAP_IOFPGA
,
CSS_MAP_DEVICE
,
SOC_CSS_MAP_DEVICE
,
...
...
@@ -28,7 +28,7 @@ const mmap_region_t plat_arm_mmap[] = {
#ifdef IMAGE_BL2
const
mmap_region_t
plat_arm_mmap
[]
=
{
ARM_MAP_SHARED_RAM
,
V2M_MAP_FLASH0_R
O
,
V2M_MAP_FLASH0_R
W
,
#ifdef PLAT_ARM_MEM_PROT_ADDR
ARM_V2M_MAP_MEM_PROTECT
,
#endif
...
...
plat/arm/board/fvp/fvp_bl1_setup.c
View file @
16b05e94
...
...
@@ -30,16 +30,3 @@ void bl1_early_platform_setup(void)
*/
fvp_interconnect_enable
();
}
/*******************************************************************************
* The following function checks if Firmware update is needed,
* by checking if TOC in FIP image is valid or not.
******************************************************************************/
unsigned
int
bl1_plat_get_next_image_id
(
void
)
{
if
(
!
arm_io_is_toc_valid
())
return
NS_BL1U_IMAGE_ID
;
return
BL2_IMAGE_ID
;
}
plat/arm/board/fvp/platform.mk
View file @
16b05e94
...
...
@@ -124,7 +124,6 @@ BL1_SOURCES += drivers/io/io_semihosting.c \
lib/semihosting/
${ARCH}
/semihosting_call.S
\
plat/arm/board/fvp/
${ARCH}
/fvp_helpers.S
\
plat/arm/board/fvp/fvp_bl1_setup.c
\
plat/arm/board/fvp/fvp_err.c
\
plat/arm/board/fvp/fvp_io_storage.c
\
plat/arm/board/fvp/fvp_trusted_boot.c
\
${FVP_CPU_LIBS}
\
...
...
@@ -135,7 +134,6 @@ BL2_SOURCES += drivers/io/io_semihosting.c \
lib/semihosting/semihosting.c
\
lib/semihosting/
${ARCH}
/semihosting_call.S
\
plat/arm/board/fvp/fvp_bl2_setup.c
\
plat/arm/board/fvp/fvp_err.c
\
plat/arm/board/fvp/fvp_io_storage.c
\
plat/arm/board/fvp/fvp_trusted_boot.c
\
${FVP_SECURITY_SOURCES}
...
...
plat/arm/board/juno/juno_bl1_setup.c
View file @
16b05e94
...
...
@@ -12,31 +12,8 @@
#include <tbbr_img_def.h>
#include <v2m_def.h>
#define RESET_REASON_WDOG_RESET (0x2)
void
juno_reset_to_aarch32_state
(
void
);
/*******************************************************************************
* The following function checks if Firmware update is needed,
* by checking if TOC in FIP image is valid or watchdog reset happened.
******************************************************************************/
unsigned
int
bl1_plat_get_next_image_id
(
void
)
{
unsigned
int
*
reset_flags_ptr
=
(
unsigned
int
*
)
SSC_GPRETN
;
unsigned
int
*
nv_flags_ptr
=
(
unsigned
int
*
)
(
V2M_SYSREGS_BASE
+
V2M_SYS_NVFLAGS
);
/*
* Check if TOC is invalid or watchdog reset happened.
*/
if
((
arm_io_is_toc_valid
()
!=
1
)
||
((
*
reset_flags_ptr
&
RESET_REASON_WDOG_RESET
)
&&
((
*
nv_flags_ptr
==
-
EAUTH
)
||
(
*
nv_flags_ptr
==
-
ENOENT
))))
return
NS_BL1U_IMAGE_ID
;
return
BL2_IMAGE_ID
;
}
/*******************************************************************************
* On JUNO update the arg2 with address of SCP_BL2U image info.
******************************************************************************/
...
...
plat/arm/board/juno/juno_err.c
deleted
100644 → 0
View file @
bf35944b
/*
* Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <arch_helpers.h>
#include <errno.h>
#include <platform.h>
#include <v2m_def.h>
#define V2M_SYS_NVFLAGS_ADDR (V2M_SYSREGS_BASE + V2M_SYS_NVFLAGS)
/*
* Juno error handler
*/
void
plat_error_handler
(
int
err
)
{
uint32_t
*
flags_ptr
=
(
uint32_t
*
)
V2M_SYS_NVFLAGS_ADDR
;
/* Propagate the err code in the NV-flags register */
*
flags_ptr
=
err
;
/* Loop until the watchdog resets the system */
for
(;;)
wfi
();
}
plat/arm/board/juno/platform.mk
View file @
16b05e94
...
...
@@ -49,12 +49,10 @@ BL1_SOURCES += lib/cpus/aarch64/cortex_a53.S \
lib/cpus/aarch64/cortex_a57.S
\
lib/cpus/aarch64/cortex_a72.S
\
plat/arm/board/juno/juno_bl1_setup.c
\
plat/arm/board/juno/juno_err.c
\
${JUNO_INTERCONNECT_SOURCES}
\
${JUNO_SECURITY_SOURCES}
BL2_SOURCES
+=
plat/arm/board/juno/juno_err.c
\
plat/arm/board/juno/juno_bl2_setup.c
\
BL2_SOURCES
+=
plat/arm/board/juno/juno_bl2_setup.c
\
${JUNO_SECURITY_SOURCES}
BL2U_SOURCES
+=
${JUNO_SECURITY_SOURCES}
...
...
plat/arm/common/arm_bl1_setup.c
View file @
16b05e94
...
...
@@ -145,3 +145,15 @@ void bl1_plat_prepare_exit(entry_point_info_t *ep_info)
sev
();
#endif
}
/*******************************************************************************
* The following function checks if Firmware update is needed,
* by checking if TOC in FIP image is valid or not.
******************************************************************************/
unsigned
int
bl1_plat_get_next_image_id
(
void
)
{
if
(
!
arm_io_is_toc_valid
())
return
NS_BL1U_IMAGE_ID
;
return
BL2_IMAGE_ID
;
}
plat/arm/common/arm_bl2u_setup.c
View file @
16b05e94
...
...
@@ -8,6 +8,7 @@
#include <arm_def.h>
#include <bl_common.h>
#include <console.h>
#include <generic_delay_timer.h>
#include <plat_arm.h>
#include <platform_def.h>
#include <platform.h>
...
...
@@ -37,6 +38,7 @@ void arm_bl2u_early_platform_setup(meminfo_t *mem_layout, void *plat_info)
/* Initialize the console to provide early debug support */
console_init
(
PLAT_ARM_BOOT_UART_BASE
,
PLAT_ARM_BOOT_UART_CLK_IN_HZ
,
ARM_CONSOLE_BAUDRATE
);
generic_delay_timer_init
();
}
/*******************************************************************************
...
...
plat/arm/common/arm_common.mk
View file @
16b05e94
...
...
@@ -137,6 +137,7 @@ BL1_SOURCES += drivers/arm/sp805/sp805.c \
drivers/io/io_storage.c
\
plat/arm/common/arm_bl1_setup.c
\
plat/arm/common/arm_dyn_cfg.c
\
plat/arm/common/arm_err.c
\
plat/arm/common/arm_io_storage.c
ifdef
EL3_PAYLOAD_BASE
# Need the arm_program_trusted_mailbox() function to release secondary CPUs from
...
...
@@ -150,6 +151,7 @@ BL2_SOURCES += drivers/delay_timer/delay_timer.c \
drivers/io/io_memmap.c
\
drivers/io/io_storage.c
\
plat/arm/common/arm_bl2_setup.c
\
plat/arm/common/arm_err.c
\
plat/arm/common/arm_io_storage.c
# Add `libfdt` and Arm common helpers required for Dynamic Config
...
...
plat/arm/
board/fvp/fvp
_err.c
→
plat/arm/
common/arm
_err.c
View file @
16b05e94
...
...
@@ -6,6 +6,7 @@
#include <arch_helpers.h>
#include <board_arm_def.h>
#include <console.h>
#include <debug.h>
#include <errno.h>
#include <norflash.h>
...
...
@@ -13,7 +14,7 @@
#include <stdint.h>
/*
*
FVP
error handler
*
ARM common implementation for
error handler
*/
void
plat_error_handler
(
int
err
)
{
...
...
@@ -26,7 +27,7 @@ void plat_error_handler(int err)
INFO
(
"Erasing FIP ToC from flash...
\n
"
);
nor_unlock
(
PLAT_ARM_FIP_BASE
);
ret
=
nor_word_program
(
PLAT_ARM_FIP_BASE
,
0
);
if
(
ret
)
{
if
(
ret
!=
0
)
{
ERROR
(
"Cannot erase ToC
\n
"
);
}
else
{
INFO
(
"Done
\n
"
);
...
...
@@ -37,6 +38,8 @@ void plat_error_handler(int err)
break
;
}
(
void
)
console_flush
();
/* Loop until the watchdog resets the system */
for
(;;)
wfi
();
...
...
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