1 #ifndef __HISI_IPC_H__
2 #define __HISI_IPC_H__
3 
4 #define HISI_IPC_CORE_ACPU		0x0
5 
6 #define HISI_IPC_MCU_INT_SRC_ACPU0_PD	10
7 #define HISI_IPC_MCU_INT_SRC_ACPU1_PD	11
8 #define HISI_IPC_MCU_INT_SRC_ACPU2_PD	12
9 #define HISI_IPC_MCU_INT_SRC_ACPU3_PD	13
10 #define HISI_IPC_MCU_INT_SRC_ACPU_PD 	16
11 #define HISI_IPC_MCU_INT_SRC_ACPU4_PD	26
12 #define HISI_IPC_MCU_INT_SRC_ACPU5_PD	27
13 #define HISI_IPC_MCU_INT_SRC_ACPU6_PD	28
14 #define HISI_IPC_MCU_INT_SRC_ACPU7_PD	29
15 
16 #define HISI_IPC_SEM_CPUIDLE		27
17 #define HISI_IPC_INT_SRC_NUM		32
18 
19 #define HISI_IPC_PM_ON			0
20 #define HISI_IPC_PM_OFF			1
21 
22 #define HISI_IPC_OK			(0)
23 #define HISI_IPC_ERROR			(-1)
24 
25 #define HISI_IPC_BASE_ADDR		(0xF7510000)
26 #define HISI_IPC_CPU_RAW_INT_ADDR	(0xF7510420)
27 #define HISI_IPC_ACPU_CTRL(i)		(0xF7510800 + (i << 3))
28 
29 void hisi_ipc_spin_lock(unsigned int signal);
30 void hisi_ipc_spin_unlock(unsigned int signal);
31 void hisi_ipc_cpu_on(unsigned int cpu, unsigned int cluster);
32 void hisi_ipc_cpu_off(unsigned int cpu, unsigned int cluster);
33 void hisi_ipc_cpu_suspend(unsigned int cpu, unsigned int cluster);
34 void hisi_ipc_cluster_on(unsigned int cpu, unsigned int cluster);
35 void hisi_ipc_cluster_off(unsigned int cpu, unsigned int cluster);
36 void hisi_ipc_cluster_suspend(unsigned int cpu, unsigned int cluster);
37 void hisi_ipc_psci_system_off(void);
38 int hisi_ipc_init(void);
39 
40 #endif
41