162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * This file contains common function prototypes to avoid externs
462306a36Sopenharmony_ci * in the c files.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci *  Copyright (C) 2011 Xilinx
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#ifndef __MACH_ZYNQ_COMMON_H__
1062306a36Sopenharmony_ci#define __MACH_ZYNQ_COMMON_H__
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciextern int zynq_slcr_init(void);
1362306a36Sopenharmony_ciextern int zynq_early_slcr_init(void);
1462306a36Sopenharmony_ciextern void zynq_slcr_cpu_stop(int cpu);
1562306a36Sopenharmony_ciextern void zynq_slcr_cpu_start(int cpu);
1662306a36Sopenharmony_ciextern bool zynq_slcr_cpu_state_read(int cpu);
1762306a36Sopenharmony_ciextern void zynq_slcr_cpu_state_write(int cpu, bool die);
1862306a36Sopenharmony_ciextern u32 zynq_slcr_get_device_id(void);
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#ifdef CONFIG_SMP
2162306a36Sopenharmony_ciextern char zynq_secondary_trampoline;
2262306a36Sopenharmony_ciextern char zynq_secondary_trampoline_jump;
2362306a36Sopenharmony_ciextern char zynq_secondary_trampoline_end;
2462306a36Sopenharmony_ciextern int zynq_cpun_start(u32 address, int cpu);
2562306a36Sopenharmony_ciextern const struct smp_operations zynq_smp_ops;
2662306a36Sopenharmony_ci#endif
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciextern void __iomem *zynq_scu_base;
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_civoid zynq_pm_late_init(void);
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_cistatic inline void zynq_core_pm_init(void)
3362306a36Sopenharmony_ci{
3462306a36Sopenharmony_ci	/* A9 clock gating */
3562306a36Sopenharmony_ci	asm volatile ("mrc  p15, 0, r12, c15, c0, 0\n"
3662306a36Sopenharmony_ci		      "orr  r12, r12, #1\n"
3762306a36Sopenharmony_ci		      "mcr  p15, 0, r12, c15, c0, 0\n"
3862306a36Sopenharmony_ci		      : /* no outputs */
3962306a36Sopenharmony_ci		      : /* no inputs */
4062306a36Sopenharmony_ci		      : "r12");
4162306a36Sopenharmony_ci}
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci#endif
44