From 96b0596ea25e1f03b862a5bfaa92add6c3e51a33 Mon Sep 17 00:00:00 2001 From: Yann Gautier Date: Thu, 20 May 2021 10:32:22 +0200 Subject: [PATCH] feat(smccc): add bit definition for SMCCC_ARCH_SOC_ID The definitions of SMCCC_ARCH_SOC_ID SoC version return bits are defined in SMC Calling Convention [1]. Add the masks and shifts for JEP-106 bank index, JEP-106 identification code, and Implementation defined SoC ID. Add a macro to easily set JEP-106 fields. [1] https://developer.arm.com/documentation/den0028/latest/ Signed-off-by: Yann Gautier Change-Id: Iecbd09f6de6728de89dc746d2d1981a5a97a8ab7 --- include/lib/smccc.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/include/lib/smccc.h b/include/lib/smccc.h index 470317dd0..deaeb1d1d 100644 --- a/include/lib/smccc.h +++ b/include/lib/smccc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-2021, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -50,6 +50,23 @@ #define GET_SMC_OEN(id) (((id) >> FUNCID_OEN_SHIFT) & \ FUNCID_OEN_MASK) +/******************************************************************************* + * SMCCC_ARCH_SOC_ID SoC version & revision bit definition + ******************************************************************************/ +#define SOC_ID_JEP_106_BANK_IDX_MASK GENMASK_32(30, 24) +#define SOC_ID_JEP_106_BANK_IDX_SHIFT U(24) +#define SOC_ID_JEP_106_ID_CODE_MASK GENMASK_32(23, 16) +#define SOC_ID_JEP_106_ID_CODE_SHIFT U(16) +#define SOC_ID_IMPL_DEF_MASK GENMASK_32(15, 0) +#define SOC_ID_IMPL_DEF_SHIFT U(0) +#define SOC_ID_SET_JEP_106(bkid, mfid) ((((bkid) << SOC_ID_JEP_106_BANK_IDX_SHIFT) & \ + SOC_ID_JEP_106_BANK_IDX_MASK) | \ + (((mfid) << SOC_ID_JEP_106_ID_CODE_SHIFT) & \ + SOC_ID_JEP_106_ID_CODE_MASK)) + +#define SOC_ID_REV_MASK GENMASK_32(30, 0) +#define SOC_ID_REV_SHIFT U(0) + /******************************************************************************* * Owning entity number definitions inside the function id as per the SMC * calling convention -- GitLab