blob: fbbd757eccc63c2f93019aa32a5b2d9e403b4d89 [file] [log] [blame]
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +01001/*
Tamas Kaman262dc7b2019-03-20 13:37:12 +01002 * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#ifndef __TFM_PLATFORM_API__
9#define __TFM_PLATFORM_API__
10
11#include <limits.h>
Tamas Kaman262dc7b2019-03-20 13:37:12 +010012#include <stdbool.h>
Miklos Balintc7b1b6c2019-04-24 12:38:36 +020013#include <stdint.h>
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010014#include "tfm_api.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20/**
21 * \brief TFM secure partition platform API version
22 */
23#define TFM_PLATFORM_API_VERSION_MAJOR (0)
Miklos Balintc7b1b6c2019-04-24 12:38:36 +020024#define TFM_PLATFORM_API_VERSION_MINOR (3)
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010025
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010026/*!
27 * \enum tfm_platform_err_t
28 *
29 * \brief Platform service error types
30 *
31 */
32enum tfm_platform_err_t {
33 TFM_PLATFORM_ERR_SUCCESS = 0,
Mate Toth-Pal8af8b032019-07-18 10:49:00 +020034 TFM_PLATFORM_ERR_SYSTEM_ERROR,
Tamas Kaman262dc7b2019-03-20 13:37:12 +010035 TFM_PLATFORM_ERR_INVALID_PARAM,
Miklos Balintc7b1b6c2019-04-24 12:38:36 +020036 TFM_PLATFORM_ERR_NOT_SUPPORTED,
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010037
38 /* Following entry is only to ensure the error code of int size */
39 TFM_PLATFORM_ERR_FORCE_INT_SIZE = INT_MAX
40};
41
Miklos Balintc7b1b6c2019-04-24 12:38:36 +020042typedef int32_t tfm_platform_ioctl_req_t;
43
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010044/*!
45 * \brief Resets the system.
46 *
47 * \return Returns values as specified by the \ref tfm_platform_err_t
48 */
49enum tfm_platform_err_t tfm_platform_system_reset(void);
50
Tamas Kaman262dc7b2019-03-20 13:37:12 +010051/*!
Miklos Balintc7b1b6c2019-04-24 12:38:36 +020052 * \brief Performs a platform-specific service
Tamas Kaman262dc7b2019-03-20 13:37:12 +010053 *
Miklos Balintc7b1b6c2019-04-24 12:38:36 +020054 * \param[in] request Request identifier (valid values vary
Tamas Kaman262dc7b2019-03-20 13:37:12 +010055 * based on the platform)
Miklos Balintc7b1b6c2019-04-24 12:38:36 +020056 * \param[in] input Input buffer to the requested service (or NULL)
57 * \param[in,out] output Output buffer to the requested service (or NULL)
Tamas Kaman262dc7b2019-03-20 13:37:12 +010058 *
59 * \return Returns values as specified by the \ref tfm_platform_err_t
60 */
Miklos Balintc7b1b6c2019-04-24 12:38:36 +020061enum tfm_platform_err_t tfm_platform_ioctl(tfm_platform_ioctl_req_t request,
62 psa_invec *input,
63 psa_outvec *output);
Tamas Kaman262dc7b2019-03-20 13:37:12 +010064
65
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010066#ifdef __cplusplus
67}
68#endif
69
70#endif /* __TFM_PLATFORM_API__ */