Commit | Line | Data |
---|---|---|
6a0bc352 PD |
1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* | |
3 | * OP-TEE STM32MP BSEC PTA interface, used by STM32 ROMEM driver | |
4 | * | |
5 | * Copyright (C) 2022, STMicroelectronics - All Rights Reserved | |
6 | */ | |
7 | ||
8 | #if IS_ENABLED(CONFIG_NVMEM_STM32_BSEC_OPTEE_TA) | |
9 | /** | |
10 | * stm32_bsec_optee_ta_open() - initialize the STM32 BSEC TA | |
11 | * @ctx: the OP-TEE context on success | |
12 | * | |
13 | * Return: | |
14 | * On success, 0. On failure, -errno. | |
15 | */ | |
16 | int stm32_bsec_optee_ta_open(struct tee_context **ctx); | |
17 | ||
18 | /** | |
19 | * stm32_bsec_optee_ta_close() - release the STM32 BSEC TA | |
20 | * @ctx: the OP-TEE context | |
21 | * | |
22 | * This function used to clean the OP-TEE resources initialized in | |
23 | * stm32_bsec_optee_ta_open(); it can be used as callback to | |
24 | * devm_add_action_or_reset() | |
25 | */ | |
26 | void stm32_bsec_optee_ta_close(void *ctx); | |
27 | ||
28 | /** | |
29 | * stm32_bsec_optee_ta_read() - nvmem read access using TA client driver | |
30 | * @ctx: the OP-TEE context provided by stm32_bsec_optee_ta_open | |
31 | * @offset: nvmem offset | |
32 | * @buf: buffer to fill with nvem values | |
33 | * @bytes: number of bytes to read | |
34 | * | |
35 | * Return: | |
36 | * On success, 0. On failure, -errno. | |
37 | */ | |
38 | int stm32_bsec_optee_ta_read(struct tee_context *ctx, unsigned int offset, | |
39 | void *buf, size_t bytes); | |
40 | ||
41 | /** | |
42 | * stm32_bsec_optee_ta_write() - nvmem write access using TA client driver | |
43 | * @ctx: the OP-TEE context provided by stm32_bsec_optee_ta_open | |
44 | * @lower: number of lower OTP, not protected by ECC | |
45 | * @offset: nvmem offset | |
46 | * @buf: buffer with nvem values | |
47 | * @bytes: number of bytes to write | |
48 | * | |
49 | * Return: | |
50 | * On success, 0. On failure, -errno. | |
51 | */ | |
52 | int stm32_bsec_optee_ta_write(struct tee_context *ctx, unsigned int lower, | |
53 | unsigned int offset, void *buf, size_t bytes); | |
54 | ||
55 | #else | |
56 | ||
57 | static inline int stm32_bsec_optee_ta_open(struct tee_context **ctx) | |
58 | { | |
59 | return -EOPNOTSUPP; | |
60 | } | |
61 | ||
62 | static inline void stm32_bsec_optee_ta_close(void *ctx) | |
63 | { | |
64 | } | |
65 | ||
66 | static inline int stm32_bsec_optee_ta_read(struct tee_context *ctx, | |
67 | unsigned int offset, void *buf, | |
68 | size_t bytes) | |
69 | { | |
70 | return -EOPNOTSUPP; | |
71 | } | |
72 | ||
73 | static inline int stm32_bsec_optee_ta_write(struct tee_context *ctx, | |
74 | unsigned int lower, | |
75 | unsigned int offset, void *buf, | |
76 | size_t bytes) | |
77 | { | |
78 | return -EOPNOTSUPP; | |
79 | } | |
80 | #endif /* CONFIG_NVMEM_STM32_BSEC_OPTEE_TA */ |