diff --git a/drivers/firmware/rockchip_sip.c b/drivers/firmware/rockchip_sip.c index b94967b1e365..760f4c3dbeb2 100644 --- a/drivers/firmware/rockchip_sip.c +++ b/drivers/firmware/rockchip_sip.c @@ -594,6 +594,16 @@ int sip_wdt_config(u32 sub_func, u32 arg1, u32 arg2, u32 arg3) } EXPORT_SYMBOL_GPL(sip_wdt_config); +int sip_hdcpkey_init(u32 hdcp_id) +{ + struct arm_smccc_res res; + + res = __invoke_sip_fn_smc(TRUSTED_OS_HDCPKEY_INIT, hdcp_id, 0, 0); + + return res.a0; +} +EXPORT_SYMBOL_GPL(sip_hdcpkey_init); + /******************************************************************************/ #ifdef CONFIG_ARM static __init int sip_firmware_init(void) diff --git a/include/linux/rockchip/rockchip_sip.h b/include/linux/rockchip/rockchip_sip.h index b9572da69053..7e2e5943a1a3 100644 --- a/include/linux/rockchip/rockchip_sip.h +++ b/include/linux/rockchip/rockchip_sip.h @@ -56,6 +56,8 @@ #define SIP_HDCP_CONFIG 0x82000025 #define SIP_WDT_CFG 0x82000026 +#define TRUSTED_OS_HDCPKEY_INIT 0xB7000003 + /* Rockchip Sip version */ #define SIP_IMPLEMENT_V1 (1) #define SIP_IMPLEMENT_V2 (2) @@ -233,6 +235,7 @@ int sip_fiq_debugger_is_enabled(void); int sip_fiq_debugger_sdei_get_event_id(u32 *fiq, u32 *sw_cpu, u32 *flag); int sip_fiq_control(u32 sub_func, u32 irq, unsigned long data); int sip_wdt_config(u32 sub_func, u32 arg1, u32 arg2, u32 arg3); +int sip_hdcpkey_init(u32 hdcp_id); #else static inline struct arm_smccc_res sip_smc_get_atf_version(void) { @@ -365,6 +368,11 @@ static inline int sip_wdt_config(u32 sub_func, { return 0; } + +static inline int sip_hdcpkey_init(u32 hdcp_id) +{ + return 0; +} #endif /* 32-bit OP-TEE context, never change order of members! */