stm32-bsec-optee-ta.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. #if IS_ENABLED(CONFIG_NVMEM_STM32_BSEC_OPTEE_TA)
  8. /**
  9. * stm32_bsec_optee_ta_open() - initialize the STM32 BSEC TA
  10. * @ctx: the OP-TEE context on success
  11. *
  12. * Return:
  13. * On success, 0. On failure, -errno.
  14. */
  15. int stm32_bsec_optee_ta_open(struct tee_context **ctx);
  16. /**
  17. * stm32_bsec_optee_ta_close() - release the STM32 BSEC TA
  18. * @ctx: the OP-TEE context
  19. *
  20. * This function used to clean the OP-TEE resources initialized in
  21. * stm32_bsec_optee_ta_open(); it can be used as callback to
  22. * devm_add_action_or_reset()
  23. */
  24. void stm32_bsec_optee_ta_close(void *ctx);
  25. /**
  26. * stm32_bsec_optee_ta_read() - nvmem read access using TA client driver
  27. * @ctx: the OP-TEE context provided by stm32_bsec_optee_ta_open
  28. * @offset: nvmem offset
  29. * @buf: buffer to fill with nvem values
  30. * @bytes: number of bytes to read
  31. *
  32. * Return:
  33. * On success, 0. On failure, -errno.
  34. */
  35. int stm32_bsec_optee_ta_read(struct tee_context *ctx, unsigned int offset,
  36. void *buf, size_t bytes);
  37. /**
  38. * stm32_bsec_optee_ta_write() - nvmem write access using TA client driver
  39. * @ctx: the OP-TEE context provided by stm32_bsec_optee_ta_open
  40. * @lower: number of lower OTP, not protected by ECC
  41. * @offset: nvmem offset
  42. * @buf: buffer with nvem values
  43. * @bytes: number of bytes to write
  44. *
  45. * Return:
  46. * On success, 0. On failure, -errno.
  47. */
  48. int stm32_bsec_optee_ta_write(struct tee_context *ctx, unsigned int lower,
  49. unsigned int offset, void *buf, size_t bytes);
  50. #else
  51. static inline int stm32_bsec_optee_ta_open(struct tee_context **ctx)
  52. {
  53. return -EOPNOTSUPP;
  54. }
  55. static inline void stm32_bsec_optee_ta_close(void *ctx)
  56. {
  57. }
  58. static inline int stm32_bsec_optee_ta_read(struct tee_context *ctx,
  59. unsigned int offset, void *buf,
  60. size_t bytes)
  61. {
  62. return -EOPNOTSUPP;
  63. }
  64. static inline int stm32_bsec_optee_ta_write(struct tee_context *ctx,
  65. unsigned int lower,
  66. unsigned int offset, void *buf,
  67. size_t bytes)
  68. {
  69. return -EOPNOTSUPP;
  70. }
  71. #endif /* CONFIG_NVMEM_STM32_BSEC_OPTEE_TA */