mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-22 20:38:03 +00:00
feat(mediatek): add smcc call for MSDC
Some registers of MSDC need to be set in ATF, so we add MSDC drivers. Signed-off-by: Bo-Chen Chen <rex-bc.chen@mediatek.com> Change-Id: Idde51a136ad08dbaece0bdaa804b934fca7046b6
This commit is contained in:
parent
3bdd9a24e9
commit
4dbe24cf7d
8 changed files with 65 additions and 2 deletions
13
plat/mediatek/drivers/msdc/mt8186/mt_msdc_priv.h
Normal file
13
plat/mediatek/drivers/msdc/mt8186/mt_msdc_priv.h
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, MediaTek Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MT_MSDC_PRIV_H
|
||||||
|
#define MT_MSDC_PRIV_H
|
||||||
|
|
||||||
|
#define MSDC_CQHCI_CFG 0x808
|
||||||
|
#define MSDC_CQHCI_CRYPTO_ENABLE BIT(1)
|
||||||
|
|
||||||
|
#endif
|
19
plat/mediatek/drivers/msdc/mt_msdc.c
Normal file
19
plat/mediatek/drivers/msdc/mt_msdc.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, MediaTek Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <common/debug.h>
|
||||||
|
#include <lib/mmio.h>
|
||||||
|
#include <mt_msdc.h>
|
||||||
|
#include <platform_def.h>
|
||||||
|
|
||||||
|
uint64_t msdc_smc_dispatcher(uint64_t arg0, uint64_t arg1,
|
||||||
|
uint64_t arg2, uint64_t arg3)
|
||||||
|
{
|
||||||
|
INFO("[%s] msdc setup call from kernel\n", __func__);
|
||||||
|
mmio_setbits_32(MSDC0_BASE + MSDC_CQHCI_CFG, MSDC_CQHCI_CRYPTO_ENABLE);
|
||||||
|
|
||||||
|
return 0L;
|
||||||
|
}
|
15
plat/mediatek/drivers/msdc/mt_msdc.h
Normal file
15
plat/mediatek/drivers/msdc/mt_msdc.h
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, MediaTek Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MT_MSDC_H
|
||||||
|
#define MT_MSDC_H
|
||||||
|
|
||||||
|
#include <mt_msdc_priv.h>
|
||||||
|
|
||||||
|
uint64_t msdc_smc_dispatcher(uint64_t arg0, uint64_t arg1,
|
||||||
|
uint64_t arg2, uint64_t arg3);
|
||||||
|
|
||||||
|
#endif
|
|
@ -11,6 +11,7 @@
|
||||||
#define MTK_SIP_SMC_FROM_NS_EL1_TABLE(_func) \
|
#define MTK_SIP_SMC_FROM_NS_EL1_TABLE(_func) \
|
||||||
_func(MTK_SIP_KERNEL_TIME_SYNC, 0x202) \
|
_func(MTK_SIP_KERNEL_TIME_SYNC, 0x202) \
|
||||||
_func(MTK_SIP_KERNEL_DFD, 0x205) \
|
_func(MTK_SIP_KERNEL_DFD, 0x205) \
|
||||||
|
_func(MTK_SIP_KERNEL_MSDC, 0x273) \
|
||||||
_func(MTK_SIP_VCORE_CONTROL, 0x506) \
|
_func(MTK_SIP_VCORE_CONTROL, 0x506) \
|
||||||
_func(MTK_SIP_IOMMU_CONTROL, 0x514) \
|
_func(MTK_SIP_IOMMU_CONTROL, 0x514) \
|
||||||
_func(MTK_SIP_APUSYS_CONTROL, 0x51E) \
|
_func(MTK_SIP_APUSYS_CONTROL, 0x51E) \
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021, MediaTek Inc. All rights reserved.
|
* Copyright (c) 2021-2022, MediaTek Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -10,6 +10,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Plat SiP function constants
|
* Plat SiP function constants
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#define MTK_PLAT_SIP_NUM_CALLS (4)
|
#define MTK_PLAT_SIP_NUM_CALLS (6)
|
||||||
|
|
||||||
#endif /* PLAT_SIP_CALLS_H */
|
#endif /* PLAT_SIP_CALLS_H */
|
||||||
|
|
|
@ -71,6 +71,11 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#define EMI_MPU_BASE (IO_PHYS + 0x0021B000)
|
#define EMI_MPU_BASE (IO_PHYS + 0x0021B000)
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* MSDC related constants
|
||||||
|
******************************************************************************/
|
||||||
|
#define MSDC0_BASE (IO_PHYS + 0x01230000)
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* GIC-600 & interrupt handling related constants
|
* GIC-600 & interrupt handling related constants
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
|
|
||||||
#include <common/debug.h>
|
#include <common/debug.h>
|
||||||
#include <common/runtime_svc.h>
|
#include <common/runtime_svc.h>
|
||||||
|
#include <lib/mmio.h>
|
||||||
|
#include <mt_msdc.h>
|
||||||
#include <mt_spm_vcorefs.h>
|
#include <mt_spm_vcorefs.h>
|
||||||
#include <mtk_sip_svc.h>
|
#include <mtk_sip_svc.h>
|
||||||
#include <plat_dfd.h>
|
#include <plat_dfd.h>
|
||||||
|
@ -33,6 +35,11 @@ uintptr_t mediatek_plat_sip_handler(uint32_t smc_fid,
|
||||||
ret = dfd_smc_dispatcher(x1, x2, x3, x4);
|
ret = dfd_smc_dispatcher(x1, x2, x3, x4);
|
||||||
SMC_RET1(handle, ret);
|
SMC_RET1(handle, ret);
|
||||||
break;
|
break;
|
||||||
|
case MTK_SIP_KERNEL_MSDC_AARCH32:
|
||||||
|
case MTK_SIP_KERNEL_MSDC_AARCH64:
|
||||||
|
ret = msdc_smc_dispatcher(x1, x2, x3, x4);
|
||||||
|
SMC_RET1(handle, ret);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ERROR("%s: unhandled SMC (0x%x)\n", __func__, smc_fid);
|
ERROR("%s: unhandled SMC (0x%x)\n", __func__, smc_fid);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -12,6 +12,8 @@ PLAT_INCLUDES := -I${MTK_PLAT}/common/ \
|
||||||
-I${MTK_PLAT}/drivers/gic600/ \
|
-I${MTK_PLAT}/drivers/gic600/ \
|
||||||
-I${MTK_PLAT}/drivers/gpio/ \
|
-I${MTK_PLAT}/drivers/gpio/ \
|
||||||
-I${MTK_PLAT}/drivers/lpm/ \
|
-I${MTK_PLAT}/drivers/lpm/ \
|
||||||
|
-I${MTK_PLAT}/drivers/msdc/ \
|
||||||
|
-I${MTK_PLAT}/drivers/msdc/${PLAT} \
|
||||||
-I${MTK_PLAT}/drivers/pmic_wrap/ \
|
-I${MTK_PLAT}/drivers/pmic_wrap/ \
|
||||||
-I${MTK_PLAT}/drivers/timer/ \
|
-I${MTK_PLAT}/drivers/timer/ \
|
||||||
-I${MTK_PLAT}/drivers/uart/ \
|
-I${MTK_PLAT}/drivers/uart/ \
|
||||||
|
@ -53,6 +55,7 @@ BL31_SOURCES += common/desc_image_load.c \
|
||||||
${MTK_PLAT}/drivers/gic600/mt_gic_v3.c \
|
${MTK_PLAT}/drivers/gic600/mt_gic_v3.c \
|
||||||
${MTK_PLAT}/drivers/gpio/mtgpio_common.c \
|
${MTK_PLAT}/drivers/gpio/mtgpio_common.c \
|
||||||
${MTK_PLAT}/drivers/lpm/mt_lp_rm.c \
|
${MTK_PLAT}/drivers/lpm/mt_lp_rm.c \
|
||||||
|
${MTK_PLAT}/drivers/msdc/mt_msdc.c \
|
||||||
${MTK_PLAT}/drivers/pmic_wrap/pmic_wrap_init.c \
|
${MTK_PLAT}/drivers/pmic_wrap/pmic_wrap_init.c \
|
||||||
${MTK_PLAT}/drivers/rtc/rtc_common.c \
|
${MTK_PLAT}/drivers/rtc/rtc_common.c \
|
||||||
${MTK_PLAT}/drivers/timer/mt_timer.c \
|
${MTK_PLAT}/drivers/timer/mt_timer.c \
|
||||||
|
|
Loading…
Add table
Reference in a new issue