xref: /openbmc/linux/arch/arm/mach-zynq/common.h (revision 9c92ab61)
19c92ab61SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2b85a3ef4SJohn Linn /*
3b85a3ef4SJohn Linn  * This file contains common function prototypes to avoid externs
4b85a3ef4SJohn Linn  * in the c files.
5b85a3ef4SJohn Linn  *
6b85a3ef4SJohn Linn  *  Copyright (C) 2011 Xilinx
7b85a3ef4SJohn Linn  */
8b85a3ef4SJohn Linn 
9b85a3ef4SJohn Linn #ifndef __MACH_ZYNQ_COMMON_H__
10b85a3ef4SJohn Linn #define __MACH_ZYNQ_COMMON_H__
11b85a3ef4SJohn Linn 
1264b889b3SMichal Simek extern int zynq_slcr_init(void);
13016f4dcaSMichal Simek extern int zynq_early_slcr_init(void);
14aa7eb2bbSMichal Simek extern void zynq_slcr_cpu_stop(int cpu);
15aa7eb2bbSMichal Simek extern void zynq_slcr_cpu_start(int cpu);
1650c7960aSSoren Brinkmann extern bool zynq_slcr_cpu_state_read(int cpu);
1750c7960aSSoren Brinkmann extern void zynq_slcr_cpu_state_write(int cpu, bool die);
1800f7dc63SMichal Simek extern u32 zynq_slcr_get_device_id(void);
19aa7eb2bbSMichal Simek 
20aa7eb2bbSMichal Simek #ifdef CONFIG_SMP
21aa7eb2bbSMichal Simek extern char zynq_secondary_trampoline;
22aa7eb2bbSMichal Simek extern char zynq_secondary_trampoline_jump;
23aa7eb2bbSMichal Simek extern char zynq_secondary_trampoline_end;
248bd26e3aSPaul Gortmaker extern int zynq_cpun_start(u32 address, int cpu);
2575305275SMasahiro Yamada extern const struct smp_operations zynq_smp_ops;
26aa7eb2bbSMichal Simek #endif
2764b889b3SMichal Simek 
28732078c3SMichal Simek extern void __iomem *zynq_scu_base;
29732078c3SMichal Simek 
300beb2bd3SSoren Brinkmann void zynq_pm_late_init(void);
310beb2bd3SSoren Brinkmann 
zynq_core_pm_init(void)32ae88b85eSSoren Brinkmann static inline void zynq_core_pm_init(void)
33ae88b85eSSoren Brinkmann {
34ae88b85eSSoren Brinkmann 	/* A9 clock gating */
35ae88b85eSSoren Brinkmann 	asm volatile ("mrc  p15, 0, r12, c15, c0, 0\n"
36ae88b85eSSoren Brinkmann 		      "orr  r12, r12, #1\n"
37ae88b85eSSoren Brinkmann 		      "mcr  p15, 0, r12, c15, c0, 0\n"
38ae88b85eSSoren Brinkmann 		      : /* no outputs */
39ae88b85eSSoren Brinkmann 		      : /* no inputs */
40ae88b85eSSoren Brinkmann 		      : "r12");
41ae88b85eSSoren Brinkmann }
42ae88b85eSSoren Brinkmann 
43b85a3ef4SJohn Linn #endif
44