1'-------------------------------------------------------------------------------
2' Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
3'
4' SPDX-License-Identifier: BSD-3-Clause
5'
6'-------------------------------------------------------------------------------
7
8@startuml
9
10class ffa_internal_api {
11  .. SVC call ..
12  + ffa_svc()
13}
14
15package "FF-A layer" {
16  class ffa_api {
17    .. Setup and discovery interfaces ..
18    + ffa_version()
19    + ffa_features()
20    + ffa_rx_release()
21    + ffa_rxtx_map()
22    + ffa_rxtx_unmap()
23    + ffa_partition_info_get()
24    + ffa_id_get()
25
26    .. CPU cycle management interfaces ..
27    + ffa_msg_wait()
28
29    .. Messaging interfaces ..
30    + ffa_msg_send_direct_req()
31    + ffa_msg_send_direct_resp()
32
33    .. Memory management interfaces ..
34    + ffa_mem_donate()
35    + ffa_mem_donate_rxtx()
36    + ffa_mem_lend()
37    + ffa_mem_lend_rxtx()
38    + ffa_mem_share()
39    + ffa_mem_share_rxtx()
40    + ffa_mem_retrieve_req()
41    + ffa_mem_retrieve_req_rxtx()
42    + ffa_mem_relinquish()
43    + ffa_mem_reclaim()
44
45    .. Interrupt handler definition ..
46    + ffa_interrupt_handler()
47  }
48
49  class ffa_memory_descriptors {
50    .. Transaction buffer handling ..
51    + ffa_init_mem_transaction_buffer()
52
53    .. Transaction descriptor ..
54    + ffa_init_mem_transaction_desc()
55    + ffa_get_mem_transaction_desc()
56
57    .. Memory access descriptor ..
58    + ffa_reserve_mem_access_desc()
59    + ffa_add_mem_access_desc()
60    + ffa_get_mem_access_desc_count()
61    + ffa_get_mem_access_desc()
62
63    .. Memory region ..
64    + ffa_add_memory_region()
65    + ffa_get_memory_region()
66  }
67}
68
69package "SP layer" {
70  class sp_rxtx {
71    .. RXTX buffer handling ..
72    + sp_rxtx_buffer_map()
73    + sp_rxtx_buffer_unmap()
74    + sp_rxtx_buffer_alignment_boundary_get()
75    + sp_rxtx_buffer_rx_get()
76    + sp_rxtx_buffer_tx_get()
77  }
78
79  class sp_memory_management {
80    .. Donate ..
81    + sp_memory_donate()
82    + sp_memory_donate_dynamic()
83    + sp_memory_donate_dynamic_is_supported()
84
85    .. Lend ..
86    + sp_memory_lend()
87    + sp_memory_lend_dynamic()
88    + sp_memory_lend_dynamic_is_supported()
89
90    .. Share ..
91    + sp_memory_share()
92    + sp_memory_share_dynamic()
93    + sp_memory_share_dynamic_is_supported()
94
95    .. Retrieve ..
96    + sp_memory_retrieve()
97    + sp_memory_retrieve_dynamic()
98    + sp_memory_retrieve_dynamic_is_supported()
99
100    .. Relinquish ..
101    + sp_memory_relinquish()
102
103    .. Reclaim ..
104    + sp_memory_reclaim()
105  }
106}
107
108
109ffa_api -left-> ffa_internal_api
110
111ffa_api -[hidden]-> ffa_memory_descriptors
112
113sp_rxtx -left-> ffa_api
114sp_memory_management --> ffa_api
115sp_memory_management -left-> ffa_memory_descriptors
116sp_memory_management -up-> sp_rxtx
117
118@enduml
119