blob: a5b0f6adc3a3b334db1e63a5792e98b7b2fe8c1b [file] [log] [blame]
Imre Kis64476932020-11-23 03:15:47 +01001/* SPDX-License-Identifier: BSD-3-Clause */
2/*
3 * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
4 */
5
6#ifndef LIBSP_INCLUDE_SP_RXTX_H_
7#define LIBSP_INCLUDE_SP_RXTX_H_
8
9/**
10 * @file sp_rxtx.h
11 * @brief The functions of this file provide a higher API for the FF-A RXTX
12 * buffer handling.
13 */
14
15#include "sp_api_defines.h"
16#include "sp_api_types.h"
17#include <stddef.h>
18#include <stdint.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24/**
25 * @brief Maps the RX/TX buffer pair in the callee's translation regime.
26 *
27 * @param[in] tx_buffer The transmit buffer
28 * @param[in] rx_buffer The receive buffer
29 * @param[in] size The buffer size
30 *
31 * @return The SP API result
32 */
33sp_result sp_rxtx_buffer_map(void *tx_buffer, const void *rx_buffer,
34 size_t size);
35
36/**
37 * @brief Unmaps the RX/TX buffer pair in the callee's translation regime.
38 *
39 * @return The SP API result
40 */
41sp_result sp_rxtx_buffer_unmap(void);
42
43/**
44 * @brief Queries the required alignment boundary of the RXTX buffers.
45 *
46 * @param[out] alignment The minimal buffer size and alignment boundary
47 *
48 * @return The SP API result
49 */
50sp_result sp_rxtx_buffer_alignment_boundary_get(uintptr_t *alignment);
51
52/**
53 * @brief Queries the RX buffer's address and size.
54 *
55 * @param[out] buffer The buffer address
56 * @param[out] size The buffer size
57 *
58 * @return The SP API result
59 */
60sp_result sp_rxtx_buffer_rx_get(const void **buffer, size_t *size);
61
62/**
63 * @brief Queries the TX buffer's address and size.
64 *
65 * @param buffer The buffer address
66 * @param size The buffer size
67 *
68 * @return The SP API result
69 */
70sp_result sp_rxtx_buffer_tx_get(void **buffer, size_t *size);
71
72#ifdef __cplusplus
73}
74#endif
75
76#endif /* LIBSP_INCLUDE_SP_RXTX_H_ */