xref: /openbmc/linux/arch/arm/mach-zynq/common.h (revision 0beb2bd3)
1b85a3ef4SJohn Linn /*
2b85a3ef4SJohn Linn  * This file contains common function prototypes to avoid externs
3b85a3ef4SJohn Linn  * in the c files.
4b85a3ef4SJohn Linn  *
5b85a3ef4SJohn Linn  *  Copyright (C) 2011 Xilinx
6b85a3ef4SJohn Linn  *
7b85a3ef4SJohn Linn  * This software is licensed under the terms of the GNU General Public
8b85a3ef4SJohn Linn  * License version 2, as published by the Free Software Foundation, and
9b85a3ef4SJohn Linn  * may be copied, distributed, and modified under those terms.
10b85a3ef4SJohn Linn  *
11b85a3ef4SJohn Linn  * This program is distributed in the hope that it will be useful,
12b85a3ef4SJohn Linn  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13b85a3ef4SJohn Linn  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14b85a3ef4SJohn Linn  * GNU General Public License for more details.
15b85a3ef4SJohn Linn  */
16b85a3ef4SJohn Linn 
17b85a3ef4SJohn Linn #ifndef __MACH_ZYNQ_COMMON_H__
18b85a3ef4SJohn Linn #define __MACH_ZYNQ_COMMON_H__
19b85a3ef4SJohn Linn 
206a37ff38SSoren Brinkmann void zynq_secondary_startup(void);
216a37ff38SSoren Brinkmann 
2264b889b3SMichal Simek extern int zynq_slcr_init(void);
23016f4dcaSMichal Simek extern int zynq_early_slcr_init(void);
2496790f0aSMichal Simek extern void zynq_slcr_system_reset(void);
25aa7eb2bbSMichal Simek extern void zynq_slcr_cpu_stop(int cpu);
26aa7eb2bbSMichal Simek extern void zynq_slcr_cpu_start(int cpu);
2700f7dc63SMichal Simek extern u32 zynq_slcr_get_device_id(void);
28aa7eb2bbSMichal Simek 
29aa7eb2bbSMichal Simek #ifdef CONFIG_SMP
30aa7eb2bbSMichal Simek extern void secondary_startup(void);
31aa7eb2bbSMichal Simek extern char zynq_secondary_trampoline;
32aa7eb2bbSMichal Simek extern char zynq_secondary_trampoline_jump;
33aa7eb2bbSMichal Simek extern char zynq_secondary_trampoline_end;
348bd26e3aSPaul Gortmaker extern int zynq_cpun_start(u32 address, int cpu);
35aa7eb2bbSMichal Simek extern struct smp_operations zynq_smp_ops __initdata;
36aa7eb2bbSMichal Simek #endif
3764b889b3SMichal Simek 
38732078c3SMichal Simek extern void __iomem *zynq_scu_base;
39732078c3SMichal Simek 
40c7c28b0fSMichal Simek /* Hotplug */
41c7c28b0fSMichal Simek extern void zynq_platform_cpu_die(unsigned int cpu);
42c7c28b0fSMichal Simek 
430beb2bd3SSoren Brinkmann void zynq_pm_late_init(void);
440beb2bd3SSoren Brinkmann 
45ae88b85eSSoren Brinkmann static inline void zynq_core_pm_init(void)
46ae88b85eSSoren Brinkmann {
47ae88b85eSSoren Brinkmann 	/* A9 clock gating */
48ae88b85eSSoren Brinkmann 	asm volatile ("mrc  p15, 0, r12, c15, c0, 0\n"
49ae88b85eSSoren Brinkmann 		      "orr  r12, r12, #1\n"
50ae88b85eSSoren Brinkmann 		      "mcr  p15, 0, r12, c15, c0, 0\n"
51ae88b85eSSoren Brinkmann 		      : /* no outputs */
52ae88b85eSSoren Brinkmann 		      : /* no inputs */
53ae88b85eSSoren Brinkmann 		      : "r12");
54ae88b85eSSoren Brinkmann }
55ae88b85eSSoren Brinkmann 
56b85a3ef4SJohn Linn #endif
57