11994e562SJavier Almansa Sobrino/* 2*89dba82dSBoyan Karatotev * Copyright (c) 2020-2025, Arm Limited. All rights reserved. 31994e562SJavier Almansa Sobrino * 41994e562SJavier Almansa Sobrino * SPDX-License-Identifier: BSD-3-Clause 51994e562SJavier Almansa Sobrino */ 61994e562SJavier Almansa Sobrino 71994e562SJavier Almansa Sobrino#include <arch.h> 81994e562SJavier Almansa Sobrino#include <asm_macros.S> 91994e562SJavier Almansa Sobrino#include <common/bl_common.h> 101994e562SJavier Almansa Sobrino#include <generic.h> 111994e562SJavier Almansa Sobrino#include <cpu_macros.S> 121994e562SJavier Almansa Sobrino#include <plat_macros.S> 131994e562SJavier Almansa Sobrino 14*89dba82dSBoyan Karatotevcpu_reset_prologue generic 15*89dba82dSBoyan Karatotev 161994e562SJavier Almansa Sobrino /* --------------------------------------------- 171994e562SJavier Almansa Sobrino * Disable L1 data cache and unified L2 cache 181994e562SJavier Almansa Sobrino * --------------------------------------------- 191994e562SJavier Almansa Sobrino */ 201994e562SJavier Almansa Sobrinofunc generic_disable_dcache 211994e562SJavier Almansa Sobrino mrs x1, sctlr_el3 221994e562SJavier Almansa Sobrino bic x1, x1, #SCTLR_C_BIT 231994e562SJavier Almansa Sobrino msr sctlr_el3, x1 241994e562SJavier Almansa Sobrino isb 251994e562SJavier Almansa Sobrino ret 261994e562SJavier Almansa Sobrinoendfunc generic_disable_dcache 271994e562SJavier Almansa Sobrino 281994e562SJavier Almansa Sobrinofunc generic_core_pwr_dwn 291994e562SJavier Almansa Sobrino mov x18, x30 301994e562SJavier Almansa Sobrino 311994e562SJavier Almansa Sobrino /* --------------------------------------------- 321994e562SJavier Almansa Sobrino * Turn off caches. 331994e562SJavier Almansa Sobrino * --------------------------------------------- 341994e562SJavier Almansa Sobrino */ 351994e562SJavier Almansa Sobrino bl generic_disable_dcache 361994e562SJavier Almansa Sobrino 371994e562SJavier Almansa Sobrino /* --------------------------------------------- 381994e562SJavier Almansa Sobrino * Flush L1 caches. 391994e562SJavier Almansa Sobrino * --------------------------------------------- 401994e562SJavier Almansa Sobrino */ 411994e562SJavier Almansa Sobrino mov x0, #DCCISW 421994e562SJavier Almansa Sobrino bl dcsw_op_level1 431994e562SJavier Almansa Sobrino 441994e562SJavier Almansa Sobrino ret x18 451994e562SJavier Almansa Sobrinoendfunc generic_core_pwr_dwn 461994e562SJavier Almansa Sobrino 471994e562SJavier Almansa Sobrinofunc generic_cluster_pwr_dwn 481994e562SJavier Almansa Sobrino mov x18, x30 491994e562SJavier Almansa Sobrino 501994e562SJavier Almansa Sobrino /* --------------------------------------------- 511994e562SJavier Almansa Sobrino * Turn off caches. 521994e562SJavier Almansa Sobrino * --------------------------------------------- 531994e562SJavier Almansa Sobrino */ 541994e562SJavier Almansa Sobrino bl generic_disable_dcache 551994e562SJavier Almansa Sobrino 561994e562SJavier Almansa Sobrino /* --------------------------------------------- 571994e562SJavier Almansa Sobrino * Flush L1 caches. 581994e562SJavier Almansa Sobrino * --------------------------------------------- 591994e562SJavier Almansa Sobrino */ 601994e562SJavier Almansa Sobrino mov x0, #DCCISW 611994e562SJavier Almansa Sobrino bl dcsw_op_level1 621994e562SJavier Almansa Sobrino 631994e562SJavier Almansa Sobrino /* --------------------------------------------- 641994e562SJavier Almansa Sobrino * Disable the optional ACP. 651994e562SJavier Almansa Sobrino * --------------------------------------------- 661994e562SJavier Almansa Sobrino */ 671994e562SJavier Almansa Sobrino bl plat_disable_acp 681994e562SJavier Almansa Sobrino 691994e562SJavier Almansa Sobrino /* --------------------------------------------- 701994e562SJavier Almansa Sobrino * Flush L2 caches. 711994e562SJavier Almansa Sobrino * --------------------------------------------- 721994e562SJavier Almansa Sobrino */ 731994e562SJavier Almansa Sobrino mov x0, #DCCISW 741994e562SJavier Almansa Sobrino bl dcsw_op_level2 751994e562SJavier Almansa Sobrino 761994e562SJavier Almansa Sobrino ret x18 771994e562SJavier Almansa Sobrino 781994e562SJavier Almansa Sobrinoendfunc generic_cluster_pwr_dwn 791994e562SJavier Almansa Sobrino 801994e562SJavier Almansa Sobrino/* --------------------------------------------- 811994e562SJavier Almansa Sobrino * Unimplemented functions. 821994e562SJavier Almansa Sobrino * --------------------------------------------- 831994e562SJavier Almansa Sobrino */ 841994e562SJavier Almansa Sobrino.equ generic_cpu_reg_dump, 0 850d020822SBoyan Karatotev 860d020822SBoyan Karatotevcpu_reset_func_start generic 870d020822SBoyan Karatotevcpu_reset_func_end generic 881994e562SJavier Almansa Sobrino 891994e562SJavier Almansa Sobrinodeclare_cpu_ops generic, AARCH64_GENERIC_MIDR, \ 901994e562SJavier Almansa Sobrino generic_reset_func, \ 911994e562SJavier Almansa Sobrino generic_core_pwr_dwn, \ 921994e562SJavier Almansa Sobrino generic_cluster_pwr_dwn 93