aboutsummaryrefslogtreecommitdiff
path: root/drivers/auth
diff options
context:
space:
mode:
authorSoby Mathew <soby.mathew@arm.com>2017-06-05 15:55:59 +0100
committerSoby Mathew <soby.mathew@arm.com>2017-06-28 15:58:06 +0100
commitfd2b42f4aee116e47044840eca3817af3248ea84 (patch)
tree3b79f7ac919aa904a615cdc0a922d83d6c5bb12f /drivers/auth
parente60f2af9499e33583e920e72b463b58bce0c31ee (diff)
downloadtrusted-firmware-a-fd2b42f4aee116e47044840eca3817af3248ea84.tar.gz
Do basic CryptoCell LCS check
This patch implements the basic lifecycle state check when CryptoCell SBROM is initialized. Currently the check ensures that if the lifecycle state is Security Disabled (SD), the boot process does not proceed further. Change-Id: I5101335453cd3ea413e97bcfb9138a96c05e1aea Signed-off-by: Soby Mathew <soby.mathew@arm.com>
Diffstat (limited to 'drivers/auth')
-rw-r--r--drivers/auth/cryptocell/cryptocell_crypto.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/auth/cryptocell/cryptocell_crypto.c b/drivers/auth/cryptocell/cryptocell_crypto.c
index bf7dff4ac2..05462bea12 100644
--- a/drivers/auth/cryptocell/cryptocell_crypto.c
+++ b/drivers/auth/cryptocell/cryptocell_crypto.c
@@ -55,6 +55,7 @@
static void init(void)
{
CCError_t ret;
+ uint32_t lcs;
/* Initialize CC SBROM */
ret = CC_BsvSbromInit((uintptr_t)PLAT_CRYPTOCELL_BASE);
@@ -62,6 +63,19 @@ static void init(void)
ERROR("CryptoCell CC_BsvSbromInit() error %x\n", ret);
panic();
}
+
+ /* Initialize lifecycle state */
+ ret = CC_BsvLcsGetAndInit((uintptr_t)PLAT_CRYPTOCELL_BASE, &lcs);
+ if (ret != CC_OK) {
+ ERROR("CryptoCell CC_BsvLcsGetAndInit() error %x\n", ret);
+ panic();
+ }
+
+ /* If the lifecyclestate is `SD`, then stop further execution */
+ if (lcs == CC_BSV_SECURITY_DISABLED_LCS) {
+ ERROR("CryptoCell LCS is security-disabled\n");
+ panic();
+ }
}
/*