blob: 7cc001382632de7894d43d682608e3f38b45b2fe [file] [log] [blame]
Yann Gautier52448ab2019-01-17 14:53:24 +01001/*
Patrick Delaunaye720b5b2022-12-14 13:45:04 +01002 * Copyright (c) 2016-2024, STMicroelectronics - All Rights Reserved
Yann Gautier52448ab2019-01-17 14:53:24 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Yann Gautier52448ab2019-01-17 14:53:24 +01007
8#include <common/debug.h>
9#include <drivers/st/bsec.h>
Nicolas Le Bayon97287cd2019-05-20 18:35:02 +020010#include <drivers/st/bsec2_reg.h>
Yann Gautier52448ab2019-01-17 14:53:24 +010011
Patrick Delaunaye720b5b2022-12-14 13:45:04 +010012#include <platform_def.h>
Yann Gautier52448ab2019-01-17 14:53:24 +010013#include <stm32mp1_smc.h>
14
15#include "bsec_svc.h"
16
17uint32_t bsec_main(uint32_t x1, uint32_t x2, uint32_t x3,
18 uint32_t *ret_otp_value)
19{
20 uint32_t result;
21 uint32_t tmp_data = 0U;
22
23 switch (x1) {
24 case STM32_SMC_READ_SHADOW:
25 result = bsec_read_otp(ret_otp_value, x2);
26 break;
27 case STM32_SMC_PROG_OTP:
28 *ret_otp_value = 0U;
29 result = bsec_program_otp(x3, x2);
30 break;
31 case STM32_SMC_WRITE_SHADOW:
Nicolas Le Bayon152897d2020-01-14 14:03:39 +010032 *ret_otp_value = 0U;
Yann Gautier52448ab2019-01-17 14:53:24 +010033 result = bsec_write_otp(x3, x2);
34 break;
35 case STM32_SMC_READ_OTP:
Nicolas Le Bayon152897d2020-01-14 14:03:39 +010036 *ret_otp_value = 0U;
Yann Gautier52448ab2019-01-17 14:53:24 +010037 result = bsec_read_otp(&tmp_data, x2);
38 if (result != BSEC_OK) {
39 break;
40 }
41
Patrick Delaunaye720b5b2022-12-14 13:45:04 +010042 result = bsec_shadow_read_otp(ret_otp_value, x2);
Yann Gautier52448ab2019-01-17 14:53:24 +010043 if (result != BSEC_OK) {
44 break;
45 }
46
47 result = bsec_write_otp(tmp_data, x2);
48 break;
49
50 default:
Nicolas Le Bayon152897d2020-01-14 14:03:39 +010051 return STM32_SMC_INVALID_PARAMS;
Yann Gautier52448ab2019-01-17 14:53:24 +010052 }
53
Nicolas Le Bayon152897d2020-01-14 14:03:39 +010054 return (result == BSEC_OK) ? STM32_SMC_OK : STM32_SMC_FAILED;
Yann Gautier52448ab2019-01-17 14:53:24 +010055}