|
|
@ -17,6 +17,60 @@ |
|
|
|
#error "cortex_a78c must be compiled with HW_ASSISTED_COHERENCY enabled" |
|
|
|
#endif |
|
|
|
|
|
|
|
/* -------------------------------------------------- |
|
|
|
* Errata Workaround for A78C Erratum 1827430. |
|
|
|
* This applies to revision r0p0 of the Cortex A78C |
|
|
|
* processor and is fixed in r0p1. |
|
|
|
* x0: variant[4:7] and revision[0:3] of current cpu. |
|
|
|
* Shall clobber: x0-x17 |
|
|
|
* -------------------------------------------------- |
|
|
|
*/ |
|
|
|
func errata_a78c_1827430_wa |
|
|
|
mov x17, x30 |
|
|
|
bl check_errata_1827430 |
|
|
|
cbz x0, 1f |
|
|
|
|
|
|
|
/* Disable allocation of splintered pages in the L2 TLB */ |
|
|
|
mrs x1, CORTEX_A78C_CPUECTLR_EL1 |
|
|
|
orr x1, x1, CORTEX_A78C_CPUECTLR_EL1_MM_ASP_EN |
|
|
|
msr CORTEX_A78C_CPUECTLR_EL1, x1 |
|
|
|
1: |
|
|
|
ret x17 |
|
|
|
endfunc errata_a78c_1827430_wa |
|
|
|
|
|
|
|
func check_errata_1827430 |
|
|
|
/* Applies to revision r0p0 only */ |
|
|
|
mov x1, #0x00 |
|
|
|
b cpu_rev_var_ls |
|
|
|
endfunc check_errata_1827430 |
|
|
|
|
|
|
|
/* -------------------------------------------------- |
|
|
|
* Errata Workaround for A78C Erratum 1827440. |
|
|
|
* This applies to revision r0p0 of the Cortex A78C |
|
|
|
* processor and is fixed in r0p1. |
|
|
|
* x0: variant[4:7] and revision[0:3] of current cpu. |
|
|
|
* Shall clobber: x0-x17 |
|
|
|
* -------------------------------------------------- |
|
|
|
*/ |
|
|
|
func errata_a78c_1827440_wa |
|
|
|
mov x17, x30 |
|
|
|
bl check_errata_1827440 |
|
|
|
cbz x0, 1f |
|
|
|
|
|
|
|
/* Force Atomic Store to WB memory be done in L1 data cache */ |
|
|
|
mrs x1, CORTEX_A78C_CPUACTLR2_EL1 |
|
|
|
orr x1, x1, #BIT(2) |
|
|
|
msr CORTEX_A78C_CPUACTLR2_EL1, x1 |
|
|
|
1: |
|
|
|
ret x17 |
|
|
|
endfunc errata_a78c_1827440_wa |
|
|
|
|
|
|
|
func check_errata_1827440 |
|
|
|
/* Applies to revision r0p0 only */ |
|
|
|
mov x1, #0x00 |
|
|
|
b cpu_rev_var_ls |
|
|
|
endfunc check_errata_1827440 |
|
|
|
|
|
|
|
/* -------------------------------------------------- |
|
|
|
* Errata Workaround for Cortex A78C Erratum 2376749. |
|
|
|
* This applies to revision r0p1 and r0p2 of the A78C |
|
|
@ -225,6 +279,16 @@ func cortex_a78c_reset_func |
|
|
|
bl cpu_get_rev_var |
|
|
|
mov x18, x0 |
|
|
|
|
|
|
|
#if ERRATA_A78C_1827430 |
|
|
|
mov x0, x18 |
|
|
|
bl errata_a78c_1827430_wa |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ERRATA_A78C_1827440 |
|
|
|
mov x0, x18 |
|
|
|
bl errata_a78c_1827440_wa |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ERRATA_A78C_2132064 |
|
|
|
mov x0, x18 |
|
|
|
bl errata_a78c_2132064_wa |
|
|
@ -299,6 +363,8 @@ func cortex_a78c_errata_report |
|
|
|
* Report all errata. The revision-variant information is passed to |
|
|
|
* checking functions of each errata. |
|
|
|
*/ |
|
|
|
report_errata ERRATA_A78C_1827430, cortex_a78c, 1827430 |
|
|
|
report_errata ERRATA_A78C_1827440, cortex_a78c, 1827440 |
|
|
|
report_errata ERRATA_A78C_2132064, cortex_a78c, 2132064 |
|
|
|
report_errata ERRATA_A78C_2242638, cortex_a78c, 2242638 |
|
|
|
report_errata ERRATA_A78C_2376749, cortex_a78c, 2376749 |
|
|
|