1 /*
2  * Copyright (c) 2021-2023, Arm Limited and Contributors. All rights reserved.
3  * Copyright (c) 2021-2023, Linaro Limited. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 #ifndef OPENAMP_MESSENGER_H
8 #define OPENAMP_MESSENGER_H
9 
10 #include <stddef.h>
11 #include <stdint.h>
12 
13 struct openamp_messenger;
14 
15 struct openamp_platform_ops {
16 	int (*transport_init)(struct openamp_messenger *openamp);
17 	int (*transport_deinit)(struct openamp_messenger *openamp);
18 	int (*transport_notify)(struct openamp_messenger *openamp);
19 	int (*transport_receive)(struct openamp_messenger *openamp);
20 	int (*platform_init)(struct openamp_messenger *openamp);
21 	int (*platform_deinit)(struct openamp_messenger *openamp);
22 	int (*platform_call_begin)(struct openamp_messenger *openamp,
23 				   uint8_t **req_buf, size_t req_len);
24 	int (*platform_call_invoke)(struct openamp_messenger *openamp,
25 				    uint8_t **resp_buf, size_t *resp_len);
26 	int (*platform_call_end)(struct openamp_messenger *openamp);
27 	void *(*platform_virt_to_phys)(struct openamp_messenger *openamp,
28 				       void *va);
29 	void *(*platform_phys_to_virt)(struct openamp_messenger *openamp,
30 				       void *pa);
31 };
32 
33 #endif
34