diff options
-rw-r--r-- | include/plat/marvell/a8k/common/plat_marvell.h | 6 | ||||
-rw-r--r-- | lib/cpus/aarch64/dsu_helpers.S | 24 | ||||
-rw-r--r-- | plat/marvell/common/marvell_bl31_setup.c | 14 |
3 files changed, 30 insertions, 14 deletions
diff --git a/include/plat/marvell/a8k/common/plat_marvell.h b/include/plat/marvell/a8k/common/plat_marvell.h index aad5da79..81cbf387 100644 --- a/include/plat/marvell/a8k/common/plat_marvell.h +++ b/include/plat/marvell/a8k/common/plat_marvell.h @@ -67,8 +67,10 @@ uint32_t marvell_get_spsr_for_bl32_entry(void); uint32_t marvell_get_spsr_for_bl33_entry(void); /* BL31 utility functions */ -void marvell_bl31_early_platform_setup(bl31_params_t *from_bl2, - void *plat_params_from_bl2); +void marvell_bl31_early_platform_setup(struct bl31_params *from_bl2, + uintptr_t soc_fw_config, + uintptr_t hw_config, + void *plat_params_from_bl2); void marvell_bl31_platform_setup(void); void marvell_bl31_plat_runtime_setup(void); void marvell_bl31_plat_arch_setup(void); diff --git a/lib/cpus/aarch64/dsu_helpers.S b/lib/cpus/aarch64/dsu_helpers.S index 293ed24b..152a3da2 100644 --- a/lib/cpus/aarch64/dsu_helpers.S +++ b/lib/cpus/aarch64/dsu_helpers.S @@ -8,15 +8,19 @@ #include <dsu_def.h> #include <errata_report.h> -/* - * DSU erratum 936184 - * Check the DSU variant, revision and configuration to determine if the - * erratum applies. This erratum was fixed in r2p0. +/* ----------------------------------------------------------------------- + * DSU erratum 936184 check function + * Checks the DSU variant, revision and configuration to determine if + * the erratum applies. Erratum applies if ACP interface is present + * in the DSU and revision-variant < r2p0. + * + * The erratum was fixed in r2p0. * * This function is called from both assembly and C environment. So it * follows AAPCS. * * Clobbers: x0-x3 + * ----------------------------------------------------------------------- */ .globl check_errata_dsu_936184 .globl errata_dsu_936184_wa @@ -25,7 +29,7 @@ func check_errata_dsu_936184 mov x2, #ERRATA_NOT_APPLIES mov x3, #ERRATA_APPLIES - /* Erratum applies only if ACP interface is present in DSU */ + /* Erratum applies only if DSU has the ACP interface */ mov x0, x2 mrs x1, CLUSTERCFR_EL1 ubfx x1, x1, #CLUSTERCFR_ACP_SHIFT, #1 @@ -44,8 +48,14 @@ func check_errata_dsu_936184 ret endfunc check_errata_dsu_936184 +/* -------------------------------------------------- + * Errata Workaround for DSU erratum #936184. + * + * Can clobber only: x0-x17 + * -------------------------------------------------- + */ func errata_dsu_936184_wa - mov x20, x30 + mov x17, x30 bl check_errata_dsu_936184 cbz x0, 1f @@ -56,5 +66,5 @@ func errata_dsu_936184_wa msr CLUSTERACTLR_EL1, x0 isb 1: - ret x20 + ret x17 endfunc errata_dsu_936184_wa diff --git a/plat/marvell/common/marvell_bl31_setup.c b/plat/marvell/common/marvell_bl31_setup.c index a74816b7..f3818767 100644 --- a/plat/marvell/common/marvell_bl31_setup.c +++ b/plat/marvell/common/marvell_bl31_setup.c @@ -35,7 +35,7 @@ static entry_point_info_t bl32_image_ep_info; static entry_point_info_t bl33_image_ep_info; /* Weak definitions may be overridden in specific ARM standard platform */ -#pragma weak bl31_early_platform_setup +#pragma weak bl31_early_platform_setup2 #pragma weak bl31_platform_setup #pragma weak bl31_plat_arch_setup #pragma weak bl31_plat_get_next_image_ep_info @@ -69,7 +69,9 @@ entry_point_info_t *bl31_plat_get_next_image_ep_info(uint32_t type) ***************************************************************************** */ void marvell_bl31_early_platform_setup(bl31_params_t *from_bl2, - void *plat_params_from_bl2) + uintptr_t soc_fw_config, + uintptr_t hw_config, + void *plat_params_from_bl2) { /* Initialize the console to provide early debug support */ console_init(PLAT_MARVELL_BOOT_UART_BASE, @@ -130,10 +132,12 @@ void marvell_bl31_early_platform_setup(bl31_params_t *from_bl2, #endif } -void bl31_early_platform_setup(bl31_params_t *from_bl2, - void *plat_params_from_bl2) +void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, + u_register_t arg2, u_register_t arg3) + { - marvell_bl31_early_platform_setup(from_bl2, plat_params_from_bl2); + marvell_bl31_early_platform_setup((void *)arg0, arg1, arg2, + (void *)arg3); #ifdef USE_CCI /* |