xref: /rk3399_ARM-atf/lib/cpus/errata_common.c (revision 79629b1a79bd1ee254077d4e76fea05ba73b9bab)
1 /*
2  * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 /* Runtime C routines for errata workarounds and common routines */
8 
9 #include <arch.h>
10 #include <arch_helpers.h>
11 #include <cortex_a520.h>
12 #include <cortex_x4.h>
13 #include <lib/cpus/cpu_ops.h>
14 #include <lib/cpus/errata.h>
15 
16 #if ERRATA_A520_2938996 || ERRATA_X4_2726228
17 unsigned int check_if_affected_core(void)
18 {
19 	uint32_t midr_val = read_midr();
20 	long rev_var  = cpu_get_rev_var();
21 
22 	if (EXTRACT_PARTNUM(midr_val) == EXTRACT_PARTNUM(CORTEX_A520_MIDR)) {
23 		return check_erratum_cortex_a520_2938996(rev_var);
24 	} else if (EXTRACT_PARTNUM(midr_val) == EXTRACT_PARTNUM(CORTEX_X4_MIDR)) {
25 		return check_erratum_cortex_x4_2726228(rev_var);
26 	}
27 
28 	return ERRATA_NOT_APPLIES;
29 }
30 #endif
31