1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 *  Copyright (c) 2012 Samsung Electronics.
4 *
5 * Exynos - SMC Call
6 */
7
8#ifndef __ASM_ARCH_EXYNOS_SMC_H
9#define __ASM_ARCH_EXYNOS_SMC_H
10
11#define SMC_CMD_INIT		(-1)
12#define SMC_CMD_INFO		(-2)
13/* For Power Management */
14#define SMC_CMD_SLEEP		(-3)
15#define SMC_CMD_CPU1BOOT	(-4)
16#define SMC_CMD_CPU0AFTR	(-5)
17#define SMC_CMD_SAVE		(-6)
18#define SMC_CMD_SHUTDOWN	(-7)
19/* For CP15 Access */
20#define SMC_CMD_C15RESUME	(-11)
21/* For L2 Cache Access */
22#define SMC_CMD_L2X0CTRL	(-21)
23#define SMC_CMD_L2X0SETUP1	(-22)
24#define SMC_CMD_L2X0SETUP2	(-23)
25#define SMC_CMD_L2X0INVALL	(-24)
26#define SMC_CMD_L2X0DEBUG	(-25)
27
28/* For Accessing CP15/SFR (General) */
29#define SMC_CMD_REG		(-101)
30
31/* defines for SMC_CMD_REG */
32#define SMC_REG_CLASS_SFR_W	(0x1 << 30)
33#define SMC_REG_ID_SFR_W(addr)	(SMC_REG_CLASS_SFR_W | ((addr) >> 2))
34
35#ifndef __ASSEMBLY__
36
37extern void exynos_smc(u32 cmd, u32 arg1, u32 arg2, u32 arg3);
38
39#endif /* __ASSEMBLY__ */
40
41/* op type for SMC_CMD_SAVE and SMC_CMD_SHUTDOWN */
42#define OP_TYPE_CORE		0x0
43#define OP_TYPE_CLUSTER		0x1
44
45/* Power State required for SMC_CMD_SAVE and SMC_CMD_SHUTDOWN */
46#define SMC_POWERSTATE_IDLE	0x1
47
48#endif
49