xref: /rk3399_ARM-atf/plat/qti/common/src/aarch64/qti_kryo6_gold.S (revision cc4f3838633e8faab00323228140c025d173ae00)
146ee50e0SSaurabh Gorecha/*
2*3fb52e41SRyan Everett * Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved.
346ee50e0SSaurabh Gorecha * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
446ee50e0SSaurabh Gorecha *
546ee50e0SSaurabh Gorecha * SPDX-License-Identifier: BSD-3-Clause
646ee50e0SSaurabh Gorecha */
746ee50e0SSaurabh Gorecha
846ee50e0SSaurabh Gorecha#include <arch.h>
946ee50e0SSaurabh Gorecha#include <asm_macros.S>
1046ee50e0SSaurabh Gorecha#include <cpu_macros.S>
1146ee50e0SSaurabh Gorecha
1246ee50e0SSaurabh Gorecha#include <plat_macros.S>
1346ee50e0SSaurabh Gorecha#include <qti_cpu.h>
1446ee50e0SSaurabh Gorecha
1546ee50e0SSaurabh Gorecha	.p2align 3
1646ee50e0SSaurabh Gorecha
1746ee50e0SSaurabh Gorecha/* -------------------------------------------------
1846ee50e0SSaurabh Gorecha * The CPU Ops reset function for Kryo-3 Gold
1946ee50e0SSaurabh Gorecha * -------------------------------------------------
2046ee50e0SSaurabh Gorecha */
2146ee50e0SSaurabh Gorechafunc qti_kryo6_gold_reset_func
2246ee50e0SSaurabh Gorecha#if IMAGE_BL31 && WORKAROUND_CVE_2017_5715
2346ee50e0SSaurabh Gorecha	adr	x0, wa_cve_2017_5715_bpiall_vbar
2446ee50e0SSaurabh Gorecha	msr	vbar_el3, x0
2546ee50e0SSaurabh Gorecha	isb
2646ee50e0SSaurabh Gorecha#endif
2746ee50e0SSaurabh Gorecha
2846ee50e0SSaurabh Gorecha	mov	x19, x30
2946ee50e0SSaurabh Gorecha
3046ee50e0SSaurabh Gorecha	bl	qtiseclib_kryo6_gold_reset_asm
316cc743cfSSaurabh Gorecha	mov	x30, x19
326cc743cfSSaurabh Gorecha	b	cortex_a78_reset_func
3346ee50e0SSaurabh Gorecha
3446ee50e0SSaurabh Gorechaendfunc qti_kryo6_gold_reset_func
3546ee50e0SSaurabh Gorecha
3646ee50e0SSaurabh Gorecha/* -------------------------------------------------------
3746ee50e0SSaurabh Gorecha * The CPU Ops cluster power down function for Kryo-3 Gold
3846ee50e0SSaurabh Gorecha * -------------------------------------------------------
3946ee50e0SSaurabh Gorecha */
4046ee50e0SSaurabh Gorechafunc qti_kryo6_gold_cluster_pwr_dwn
4146ee50e0SSaurabh Gorecha	ret
4246ee50e0SSaurabh Gorechaendfunc qti_kryo6_gold_cluster_pwr_dwn
4346ee50e0SSaurabh Gorecha
4446ee50e0SSaurabh Gorecha/* ---------------------------------------------
4546ee50e0SSaurabh Gorecha * This function provides kryo4_gold specific
4646ee50e0SSaurabh Gorecha * register information for crash reporting.
4746ee50e0SSaurabh Gorecha * It needs to return with x6 pointing to
4846ee50e0SSaurabh Gorecha * a list of register names in ASCII and
4946ee50e0SSaurabh Gorecha * x8 - x15 having values of registers to be
5046ee50e0SSaurabh Gorecha * reported.
5146ee50e0SSaurabh Gorecha * ---------------------------------------------
5246ee50e0SSaurabh Gorecha */
5346ee50e0SSaurabh Gorecha.section .rodata.qti_kryo4_gold_regs, "aS"
5446ee50e0SSaurabh Gorechaqti_kryo6_gold_regs:  /* The ASCII list of register names to be reported */
5546ee50e0SSaurabh Gorecha	.asciz	""
5646ee50e0SSaurabh Gorecha
5746ee50e0SSaurabh Gorechafunc qti_kryo6_gold_cpu_reg_dump
5846ee50e0SSaurabh Gorecha	adr	x6, qti_kryo6_gold_regs
5946ee50e0SSaurabh Gorecha	ret
6046ee50e0SSaurabh Gorechaendfunc qti_kryo6_gold_cpu_reg_dump
6146ee50e0SSaurabh Gorecha
6246ee50e0SSaurabh Gorechadeclare_cpu_ops	qti_kryo6_gold, QTI_KRYO6_GOLD_MIDR,	\
6346ee50e0SSaurabh Gorecha		qti_kryo6_gold_reset_func,		\
646cc743cfSSaurabh Gorecha		cortex_a78_core_pwr_dwn,	\
6546ee50e0SSaurabh Gorecha		qti_kryo6_gold_cluster_pwr_dwn
66