mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-24 19:40:21 +09:00
firmware: rockchip_sip: support the MCU config
Signed-off-by: shengfei Xu <xsf@rock-chips.com> Change-Id: Id92dd91cd410207d3858be84e5b64409eca1f976
This commit is contained in:
@@ -627,6 +627,16 @@ int sip_hdcpkey_init(u32 hdcp_id)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sip_hdcpkey_init);
|
||||
|
||||
int sip_smc_mcu_config(unsigned long mcu_id,
|
||||
unsigned long func,
|
||||
unsigned long arg2)
|
||||
{
|
||||
struct arm_smccc_res res;
|
||||
|
||||
res = __invoke_sip_fn_smc(SIP_MCU_CFG, mcu_id, func, arg2);
|
||||
return res.a0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sip_smc_mcu_config);
|
||||
/******************************************************************************/
|
||||
#ifdef CONFIG_ARM
|
||||
static __init int sip_firmware_init(void)
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#define SIP_HDCP_CONFIG 0x82000025
|
||||
#define SIP_WDT_CFG 0x82000026
|
||||
#define SIP_HDMIRX_CFG 0x82000027
|
||||
#define SIP_MCU_CFG 0x82000028
|
||||
|
||||
#define TRUSTED_OS_HDCPKEY_INIT 0xB7000003
|
||||
|
||||
@@ -118,6 +119,28 @@
|
||||
/* wakeup state */
|
||||
#define REMOTECTL_PWRKEY_WAKEUP 0xdeadbeaf
|
||||
|
||||
/* SIP_MCU_CFG child configs, MCU ID */
|
||||
enum {
|
||||
RK_BUS_MCU,
|
||||
RK_PMU_MCU,
|
||||
RK_DDR_MCU,
|
||||
RK_NPU_MCU,
|
||||
};
|
||||
|
||||
#define RK_SIP_MCU_ID(type, id) ((type) << 8 | id)
|
||||
|
||||
#define RK_SIP_CFG_BUSMCU_0_ID RK_SIP_MCU_ID(RK_BUS_MCU, 0)
|
||||
#define RK_SIP_CFG_BUSMCU_1_ID RK_SIP_MCU_ID(RK_BUS_MCU, 1)
|
||||
#define RK_SIP_CFG_PMUMCU_0_ID RK_SIP_MCU_ID(RK_PMU_MCU, 0)
|
||||
#define RK_SIP_CFG_DDRMCU_0_ID RK_SIP_MCU_ID(RK_DDR_MCU, 0)
|
||||
#define RK_SIP_CFG_NPUMCU_0_ID RK_SIP_MCU_ID(RK_NPU_MCU, 0)
|
||||
|
||||
/* SIP_MCU_CFG child configs */
|
||||
#define CONFIG_MCU_CODE_START_ADDR 0x01
|
||||
#define CONFIG_MCU_EXPERI_START_ADDR 0x02
|
||||
#define CONFIG_MCU_SRAM_START_ADDR 0x03
|
||||
#define CONFIG_MCU_EXSRAM_START_ADDR 0x04
|
||||
|
||||
struct dram_addrmap_info {
|
||||
u64 ch_mask[2];
|
||||
u64 bk_mask[4];
|
||||
@@ -251,6 +274,7 @@ 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_hdmirx_config(u32 sub_func, u32 arg1, u32 arg2, u32 arg3);
|
||||
int sip_hdcpkey_init(u32 hdcp_id);
|
||||
int sip_smc_mcu_config(unsigned long mcu_id, unsigned long func, unsigned long arg2);
|
||||
#else
|
||||
static inline struct arm_smccc_res sip_smc_get_atf_version(void)
|
||||
{
|
||||
@@ -407,6 +431,13 @@ static inline int sip_hdcpkey_init(u32 hdcp_id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sip_smc_mcu_config(unsigned long mcu_id,
|
||||
unsigned long func,
|
||||
unsigned long arg2)
|
||||
{
|
||||
return SIP_RET_NOT_SUPPORTED;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 32-bit OP-TEE context, never change order of members! */
|
||||
|
||||
Reference in New Issue
Block a user