diff options
Diffstat (limited to 'include/linux/rockchip/psci.h')
-rw-r--r-- | include/linux/rockchip/psci.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/include/linux/rockchip/psci.h b/include/linux/rockchip/psci.h new file mode 100644 index 000000000000..870da27edf65 --- /dev/null +++ b/include/linux/rockchip/psci.h @@ -0,0 +1,76 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __ROCKCHIP_PSCI_H +#define __ROCKCHIP_PSCI_H + +#define SEC_REG_RD (0x0) +#define SEC_REG_WR (0x1) + +/* + * trust firmware verison + */ +#define RKTF_VER_MAJOR(ver) (((ver) >> 16) & 0xffff) +#define RKTF_VER_MINOR(ver) ((ver) & 0xffff) + +/* + * pcsi smc funciton id + */ +#define PSCI_SIP_RKTF_VER (0x82000001) +#define PSCI_SIP_ACCESS_REG (0x82000002) +#define PSCI_SIP_ACCESS_REG64 (0xc2000002) +#define PSCI_SIP_SUSPEND_WR_CTRBITS (0x82000003) +#define PSCI_SIP_PENDING_CPUS (0x82000004) +#define PSCI_SIP_UARTDBG_CFG (0x82000005) +#define PSCI_SIP_UARTDBG_CFG64 (0xc2000005) +#define PSCI_SIP_EL3FIQ_CFG (0x82000006) +#define PSCI_SIP_SMEM_CONFIG (0x82000007) + +/* + * pcsi smc funciton err code + */ +#define PSCI_SMC_FUNC_UNK 0xffffffff + +/* + * define PSCI_SIP_UARTDBG_CFG call type + */ +#define UARTDBG_CFG_INIT 0xf0 +#define UARTDBG_CFG_OSHDL_TO_OS 0xf1 +#define UARTDBG_CFG_OSHDL_CPUSW 0xf3 +#define UARTDBG_CFG_OSHDL_DEBUG_ENABLE 0xf4 +#define UARTDBG_CFG_OSHDL_DEBUG_DISABLE 0xf5 + +/* + * rockchip psci function call interface + */ + +u32 rockchip_psci_smc_read(u32 function_id, u32 arg0, u32 arg1, u32 arg2, + u32 *val); +u32 rockchip_psci_smc_write(u32 function_id, u32 arg0, u32 arg1, u32 arg2); + +u32 rockchip_psci_smc_get_tf_ver(void); +u32 rockchip_secure_reg_read(u32 addr_phy); +u32 rockchip_secure_reg_write(u32 addr_phy, u32 val); + +#ifdef CONFIG_ARM64 +u32 rockchip_psci_smc_write64(u64 function_id, u64 arg0, u64 arg1, u64 arg2); +u32 rockchip_psci_smc_read64(u64 function_id, u64 arg0, u64 arg1, u64 arg2, + u64 *val); +u64 rockchip_secure_reg_read64(u64 addr_phy); +u32 rockchip_secure_reg_write64(u64 addr_phy, u64 val); + +void psci_fiq_debugger_uart_irq_tf_cb(u64 sp_el1, u64 offset); +#endif + +u32 psci_fiq_debugger_switch_cpu(u32 cpu); +void psci_fiq_debugger_uart_irq_tf_init(u32 irq_id, void *callback); +void psci_fiq_debugger_enable_debug(bool val); + +#if defined(CONFIG_ARM_PSCI) || defined(CONFIG_ARM64) +u32 psci_set_memory_secure(bool val); +#else +static inline u32 psci_set_memory_secure(bool val) +{ + return 0; +} +#endif + +#endif /* __ROCKCHIP_PSCI_H */ |