From 74a3460039854aa5694b8fae79af558b81d32e27 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Wang Date: Thu, 27 Aug 2020 13:48:48 +0800 Subject: [PATCH] mediatek: Add jedec info Add jedec info for mt8173, mt8183, and mt8192. [1] http://www.softnology.biz/pdf/JEP106AV.pdf Signed-off-by: Hsin-Yi Wang Change-Id: Iab36fd580131f0b09b27223fba0e9d1e187d9196 --- plat/mediatek/common/mtk_plat_common.c | 32 +++++++++++++++++++++ plat/mediatek/common/mtk_plat_common.h | 3 ++ plat/mediatek/mt8173/include/platform_def.h | 2 ++ plat/mediatek/mt8183/include/platform_def.h | 2 ++ plat/mediatek/mt8192/include/platform_def.h | 2 ++ 5 files changed, 41 insertions(+) diff --git a/plat/mediatek/common/mtk_plat_common.c b/plat/mediatek/common/mtk_plat_common.c index a07a2981a..f57e4357d 100644 --- a/plat/mediatek/common/mtk_plat_common.c +++ b/plat/mediatek/common/mtk_plat_common.c @@ -10,8 +10,10 @@ #include #include #include +#include #include #include +#include #include #include @@ -116,3 +118,33 @@ uint32_t plat_get_spsr_for_bl33_entry(void) spsr = SPSR_MODE32(mode, 0, ee, daif); return spsr; } + +/***************************************************************************** + * plat_is_smccc_feature_available() - This function checks whether SMCCC + * feature is availabile for platform. + * @fid: SMCCC function id + * + * Return SMC_OK if SMCCC feature is available and SMC_ARCH_CALL_NOT_SUPPORTED + * otherwise. + *****************************************************************************/ +int32_t plat_is_smccc_feature_available(u_register_t fid) +{ + switch (fid) { + case SMCCC_ARCH_SOC_ID: + return SMC_ARCH_CALL_SUCCESS; + default: + return SMC_ARCH_CALL_NOT_SUPPORTED; + } +} + +int32_t plat_get_soc_version(void) +{ + uint32_t manfid = (JEDEC_MTK_BKID << 24U) | (JEDEC_MTK_MFID << 16U); + + return (int32_t)(manfid | (SOC_CHIP_ID & 0xFFFFU)); +} + +int32_t plat_get_soc_revision(void) +{ + return 0; +} diff --git a/plat/mediatek/common/mtk_plat_common.h b/plat/mediatek/common/mtk_plat_common.h index 55f4c516e..919c17358 100644 --- a/plat/mediatek/common/mtk_plat_common.h +++ b/plat/mediatek/common/mtk_plat_common.h @@ -18,6 +18,9 @@ #define LINUX_KERNEL_32 0 #define SMC32_PARAM_MASK (0xFFFFFFFF) +#define JEDEC_MTK_BKID U(4) +#define JEDEC_MTK_MFID U(0x26) + struct atf_arg_t { unsigned int atf_magic; unsigned int tee_support; diff --git a/plat/mediatek/mt8173/include/platform_def.h b/plat/mediatek/mt8173/include/platform_def.h index 22129db13..d34042218 100644 --- a/plat/mediatek/mt8173/include/platform_def.h +++ b/plat/mediatek/mt8173/include/platform_def.h @@ -51,6 +51,8 @@ PLATFORM_CLUSTER_COUNT + \ PLATFORM_CORE_COUNT) +#define SOC_CHIP_ID U(0x8173) + /******************************************************************************* * Platform memory map related constants ******************************************************************************/ diff --git a/plat/mediatek/mt8183/include/platform_def.h b/plat/mediatek/mt8183/include/platform_def.h index 49a0f805e..25ccfbc52 100644 --- a/plat/mediatek/mt8183/include/platform_def.h +++ b/plat/mediatek/mt8183/include/platform_def.h @@ -279,6 +279,8 @@ INTR_PROP_DESC(MT_IRQ_SEC_SGI_7, GIC_HIGHEST_SEC_PRIORITY, grp, \ PLATFORM_CLUSTER_COUNT + \ PLATFORM_CORE_COUNT) +#define SOC_CHIP_ID U(0x8183) + /******************************************************************************* * Platform memory map related constants ******************************************************************************/ diff --git a/plat/mediatek/mt8192/include/platform_def.h b/plat/mediatek/mt8192/include/platform_def.h index e1f0faf60..f68015a97 100644 --- a/plat/mediatek/mt8192/include/platform_def.h +++ b/plat/mediatek/mt8192/include/platform_def.h @@ -59,6 +59,8 @@ #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER0_CORE_COUNT) #define PLATFORM_MAX_CPUS_PER_CLUSTER U(8) +#define SOC_CHIP_ID U(0x8192) + /******************************************************************************* * Platform memory map related constants ******************************************************************************/