mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 01:24:27 +00:00
fix(plat/st): correct BSEC error code management
BSEC services should return SMC error codes as other IDs (defined in stm32mp1_smc.h) and not BSEC driver ones. So that non-secure caller is able to treat them correctly. In global SMC handler, unknown ID should also return a value from this definition list, and not the generic one, which seems not well adapted for our needs. Two unsigned values initializations are also changed from 0 to 0U. Change-Id: Ib6fd3866a748cefad1d13d48f7be38241621023e Signed-off-by: Yann Gautier <yann.gautier@st.com> Signed-off-by: Nicolas Le Bayon <nicolas.le.bayon@st.com>
This commit is contained in:
parent
a4bcfe94e7
commit
72c7884092
3 changed files with 14 additions and 9 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2019, STMicroelectronics - All Rights Reserved
|
||||
* Copyright (c) 2016-2021, STMicroelectronics - All Rights Reserved
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -58,4 +58,10 @@
|
|||
#define STM32_SMC_WRITE_SHADOW 0x03
|
||||
#define STM32_SMC_READ_OTP 0x04
|
||||
|
||||
/* SMC error codes */
|
||||
#define STM32_SMC_OK 0x00000000U
|
||||
#define STM32_SMC_NOT_SUPPORTED 0xFFFFFFFFU
|
||||
#define STM32_SMC_FAILED 0xFFFFFFFEU
|
||||
#define STM32_SMC_INVALID_PARAMS 0xFFFFFFFDU
|
||||
|
||||
#endif /* STM32MP1_SMC_H */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2019, STMicroelectronics - All Rights Reserved
|
||||
* Copyright (c) 2016-2021, STMicroelectronics - All Rights Reserved
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -28,11 +28,11 @@ uint32_t bsec_main(uint32_t x1, uint32_t x2, uint32_t x3,
|
|||
result = bsec_program_otp(x3, x2);
|
||||
break;
|
||||
case STM32_SMC_WRITE_SHADOW:
|
||||
*ret_otp_value = 0;
|
||||
*ret_otp_value = 0U;
|
||||
result = bsec_write_otp(x3, x2);
|
||||
break;
|
||||
case STM32_SMC_READ_OTP:
|
||||
*ret_otp_value = 0;
|
||||
*ret_otp_value = 0U;
|
||||
result = bsec_read_otp(&tmp_data, x2);
|
||||
if (result != BSEC_OK) {
|
||||
break;
|
||||
|
@ -52,9 +52,8 @@ uint32_t bsec_main(uint32_t x1, uint32_t x2, uint32_t x3,
|
|||
break;
|
||||
|
||||
default:
|
||||
result = BSEC_ERROR;
|
||||
break;
|
||||
return STM32_SMC_INVALID_PARAMS;
|
||||
}
|
||||
|
||||
return result;
|
||||
return (result == BSEC_OK) ? STM32_SMC_OK : STM32_SMC_FAILED;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014-2019, STMicroelectronics - All Rights Reserved
|
||||
* Copyright (c) 2014-2021, STMicroelectronics - All Rights Reserved
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -75,7 +75,7 @@ static uintptr_t stm32mp1_svc_smc_handler(uint32_t smc_fid, u_register_t x1,
|
|||
|
||||
default:
|
||||
WARN("Unimplemented STM32MP1 Service Call: 0x%x\n", smc_fid);
|
||||
ret1 = SMC_UNK;
|
||||
ret1 = STM32_SMC_NOT_SUPPORTED;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue