diff --git a/drivers/firmware/rockchip_sip.c b/drivers/firmware/rockchip_sip.c index bb861c658d11..698f35fe7d70 100644 --- a/drivers/firmware/rockchip_sip.c +++ b/drivers/firmware/rockchip_sip.c @@ -127,6 +127,14 @@ struct arm_smccc_res sip_smc_mcu_el3fiq(u32 arg0, u32 arg1, u32 arg2) return __invoke_sip_fn_smc(SIP_MCU_EL3FIQ_CFG, arg0, arg1, arg2); } +struct arm_smccc_res sip_smc_vpu_reset(u32 arg0, u32 arg1, u32 arg2) +{ + struct arm_smccc_res res; + + res = __invoke_sip_fn_smc(PSCI_SIP_VPU_RESET, arg0, arg1, arg2); + return res; +} + /************************** fiq debugger **************************************/ #ifdef CONFIG_ARM64 #define SIP_UARTDBG_FN SIP_UARTDBG_CFG64 diff --git a/include/linux/rockchip/rockchip_sip.h b/include/linux/rockchip/rockchip_sip.h index 1353cac74eb9..1a6b50212e77 100644 --- a/include/linux/rockchip/rockchip_sip.h +++ b/include/linux/rockchip/rockchip_sip.h @@ -30,6 +30,7 @@ #define SIP_SHARE_MEM 0x82000009 #define SIP_SIP_VERSION 0x8200000a #define SIP_REMOTECTL_CFG 0x8200000b +#define PSCI_SIP_VPU_RESET 0x8200000c /* Rockchip Sip version */ #define SIP_IMPLEMENT_V1 (1) @@ -106,6 +107,7 @@ struct arm_smccc_res sip_smc_dram(u32 arg0, u32 arg1, u32 arg2); struct arm_smccc_res sip_smc_request_share_mem(u32 page_num, share_page_type_t page_type); struct arm_smccc_res sip_smc_mcu_el3fiq(u32 arg0, u32 arg1, u32 arg2); +struct arm_smccc_res sip_smc_vpu_reset(u32 arg0, u32 arg1, u32 arg2); int sip_smc_set_suspend_mode(u32 ctrl, u32 config1, u32 config2); int sip_smc_virtual_poweroff(void); @@ -156,6 +158,13 @@ static inline struct arm_smccc_res sip_smc_mcu_el3fiq return tmp; } +static inline struct arm_smccc_res +sip_smc_vpu_reset(u32 arg0, u32 arg1, u32 arg2) +{ + struct arm_smccc_res tmp = {0}; + return tmp; +} + static inline int sip_smc_set_suspend_mode(u32 ctrl, u32 config1, u32 config2) { return 0;