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 Sobrinofunc generic_core_pwr_dwn 171994e562SJavier Almansa Sobrino mov x18, x30 181994e562SJavier Almansa Sobrino 191994e562SJavier Almansa Sobrino /* --------------------------------------------- 201994e562SJavier Almansa Sobrino * Flush L1 caches. 211994e562SJavier Almansa Sobrino * --------------------------------------------- 221994e562SJavier Almansa Sobrino */ 231994e562SJavier Almansa Sobrino mov x0, #DCCISW 241994e562SJavier Almansa Sobrino bl dcsw_op_level1 251994e562SJavier Almansa Sobrino 261994e562SJavier Almansa Sobrino ret x18 271994e562SJavier Almansa Sobrinoendfunc generic_core_pwr_dwn 281994e562SJavier Almansa Sobrino 291994e562SJavier Almansa Sobrinofunc generic_cluster_pwr_dwn 301994e562SJavier Almansa Sobrino mov x18, x30 311994e562SJavier Almansa Sobrino 321994e562SJavier Almansa Sobrino /* --------------------------------------------- 331994e562SJavier Almansa Sobrino * Flush L1 caches. 341994e562SJavier Almansa Sobrino * --------------------------------------------- 351994e562SJavier Almansa Sobrino */ 361994e562SJavier Almansa Sobrino mov x0, #DCCISW 371994e562SJavier Almansa Sobrino bl dcsw_op_level1 381994e562SJavier Almansa Sobrino 391994e562SJavier Almansa Sobrino /* --------------------------------------------- 401994e562SJavier Almansa Sobrino * Disable the optional ACP. 411994e562SJavier Almansa Sobrino * --------------------------------------------- 421994e562SJavier Almansa Sobrino */ 431994e562SJavier Almansa Sobrino bl plat_disable_acp 441994e562SJavier Almansa Sobrino 451994e562SJavier Almansa Sobrino /* --------------------------------------------- 461994e562SJavier Almansa Sobrino * Flush L2 caches. 471994e562SJavier Almansa Sobrino * --------------------------------------------- 481994e562SJavier Almansa Sobrino */ 491994e562SJavier Almansa Sobrino mov x0, #DCCISW 501994e562SJavier Almansa Sobrino bl dcsw_op_level2 511994e562SJavier Almansa Sobrino 521994e562SJavier Almansa Sobrino ret x18 531994e562SJavier Almansa Sobrino 541994e562SJavier Almansa Sobrinoendfunc generic_cluster_pwr_dwn 551994e562SJavier Almansa Sobrino 561994e562SJavier Almansa Sobrino/* --------------------------------------------- 571994e562SJavier Almansa Sobrino * Unimplemented functions. 581994e562SJavier Almansa Sobrino * --------------------------------------------- 591994e562SJavier Almansa Sobrino */ 601994e562SJavier Almansa Sobrino.equ generic_cpu_reg_dump, 0 610d020822SBoyan Karatotev 620d020822SBoyan Karatotevcpu_reset_func_start generic 630d020822SBoyan Karatotevcpu_reset_func_end generic 641994e562SJavier Almansa Sobrino 651994e562SJavier Almansa Sobrinodeclare_cpu_ops generic, AARCH64_GENERIC_MIDR, \ 661994e562SJavier Almansa Sobrino generic_reset_func, \ 671994e562SJavier Almansa Sobrino generic_core_pwr_dwn, \ 681994e562SJavier Almansa Sobrino generic_cluster_pwr_dwn 69