xref: /arm-trusted-firmware/plat/qti/common/src/aarch64/qti_kryo4_gold.S (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu/*
2*91f16700Schasinglulu * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
4*91f16700Schasinglulu *
5*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause
6*91f16700Schasinglulu */
7*91f16700Schasinglulu
8*91f16700Schasinglulu#include <arch.h>
9*91f16700Schasinglulu#include <asm_macros.S>
10*91f16700Schasinglulu#include <cpu_macros.S>
11*91f16700Schasinglulu
12*91f16700Schasinglulu#include <plat_macros.S>
13*91f16700Schasinglulu#include <qti_cpu.h>
14*91f16700Schasinglulu
15*91f16700Schasinglulu	.p2align 3
16*91f16700Schasinglulu
17*91f16700Schasinglulu/* -------------------------------------------------
18*91f16700Schasinglulu * The CPU Ops reset function for Kryo-3 Gold
19*91f16700Schasinglulu * -------------------------------------------------
20*91f16700Schasinglulu */
21*91f16700Schasinglulufunc qti_kryo4_gold_reset_func
22*91f16700Schasinglulu#if IMAGE_BL31 && WORKAROUND_CVE_2017_5715
23*91f16700Schasinglulu	adr	x0, wa_cve_2017_5715_bpiall_vbar
24*91f16700Schasinglulu	msr	vbar_el3, x0
25*91f16700Schasinglulu	isb
26*91f16700Schasinglulu#endif
27*91f16700Schasinglulu
28*91f16700Schasinglulu	mov	x19, x30
29*91f16700Schasinglulu
30*91f16700Schasinglulu	bl	qtiseclib_kryo4_gold_reset_asm
31*91f16700Schasinglulu	mov	x30, x19
32*91f16700Schasinglulu	b	cortex_a76_reset_func
33*91f16700Schasinglulu
34*91f16700Schasingluluendfunc qti_kryo4_gold_reset_func
35*91f16700Schasinglulu
36*91f16700Schasinglulu/* -------------------------------------------------------
37*91f16700Schasinglulu * The CPU Ops cluster power down function for Kryo-3 Gold
38*91f16700Schasinglulu * -------------------------------------------------------
39*91f16700Schasinglulu */
40*91f16700Schasinglulufunc qti_kryo4_gold_cluster_pwr_dwn
41*91f16700Schasinglulu	ret
42*91f16700Schasingluluendfunc qti_kryo4_gold_cluster_pwr_dwn
43*91f16700Schasinglulu
44*91f16700Schasinglulu#if REPORT_ERRATA
45*91f16700Schasinglulu/*
46*91f16700Schasinglulu * Errata printing function for Kryo4 Gold. Must follow AAPCS.
47*91f16700Schasinglulu */
48*91f16700Schasinglulufunc qti_kryo4_gold_errata_report
49*91f16700Schasinglulu	/* TODO : Need to add support. Required only for debug bl31 image.*/
50*91f16700Schasinglulu	ret
51*91f16700Schasingluluendfunc qti_kryo4_gold_errata_report
52*91f16700Schasinglulu#endif
53*91f16700Schasinglulu
54*91f16700Schasinglulu/* ---------------------------------------------
55*91f16700Schasinglulu * This function provides kryo4_gold specific
56*91f16700Schasinglulu * register information for crash reporting.
57*91f16700Schasinglulu * It needs to return with x6 pointing to
58*91f16700Schasinglulu * a list of register names in ASCII and
59*91f16700Schasinglulu * x8 - x15 having values of registers to be
60*91f16700Schasinglulu * reported.
61*91f16700Schasinglulu * ---------------------------------------------
62*91f16700Schasinglulu */
63*91f16700Schasinglulu.section .rodata.qti_kryo4_gold_regs, "aS"
64*91f16700Schasingluluqti_kryo4_gold_regs:  /* The ASCII list of register names to be reported */
65*91f16700Schasinglulu	.asciz	""
66*91f16700Schasinglulu
67*91f16700Schasinglulufunc qti_kryo4_gold_cpu_reg_dump
68*91f16700Schasinglulu	adr	x6, qti_kryo4_gold_regs
69*91f16700Schasinglulu	ret
70*91f16700Schasingluluendfunc qti_kryo4_gold_cpu_reg_dump
71*91f16700Schasinglulu
72*91f16700Schasingluludeclare_cpu_ops_wa	qti_kryo4_gold, QTI_KRYO4_GOLD_MIDR,	\
73*91f16700Schasinglulu		qti_kryo4_gold_reset_func,		\
74*91f16700Schasinglulu		CPU_NO_EXTRA1_FUNC,		\
75*91f16700Schasinglulu		cortex_a76_disable_wa_cve_2018_3639,	\
76*91f16700Schasinglulu		cortex_a76_core_pwr_dwn,	\
77*91f16700Schasinglulu		qti_kryo4_gold_cluster_pwr_dwn
78