2121#include "rsc_table.h"
2222#include "metal/sys.h"
2323#include "metal/device.h"
24+
25+ /* Private includes ----------------------------------------------------------*/
26+ /* USER CODE BEGIN Includes */
27+
28+ /* USER CODE END Includes */
29+
30+
2431/* Private define ------------------------------------------------------------*/
32+ /* USER CODE BEGIN Define */
33+
34+ /* USER CODE END Define */
2535
2636#define SHM_DEVICE_NAME "STM32_SHM"
2737
28- /* Globals */
38+ /* Private macro -------------------------------------------------------------*/
39+ /* USER CODE BEGIN PM */
40+
41+ /* USER CODE END PM */
42+
43+
44+ /* Private variables ---------------------------------------------------------*/
45+ /* USER CODE BEGIN PV */
46+
47+ /* USER CODE END PV */
2948
3049static struct metal_io_region * shm_io ;
3150static struct metal_io_region * rsc_io ;
@@ -48,14 +67,23 @@ struct metal_device shm_device = {
4867 .irq_info = NULL
4968};
5069
70+ /* Private functions ---------------------------------------------------------*/
71+ /* USER CODE BEGIN PFP */
72+
73+ /* USER CODE END PFP */
74+
5175static int OPENAMP_shmem_init (int RPMsgRole )
5276{
5377 int status = 0 ;
54- struct metal_device * device ;
78+ struct metal_device * device = NULL ;
5579 struct metal_init_params metal_params = METAL_INIT_DEFAULTS ;
56- void * rsc_tab_addr ;
57- int rsc_size ;
80+ void * rsc_tab_addr = NULL ;
81+ int rsc_size = 0 ;
5882
83+
84+ /* USER CODE BEGIN PRE_LIB_METAL_INIT */
85+
86+ /* USER CODE END PRE_LIB_METAL_INIT */
5987 metal_init (& metal_params );
6088
6189 status = metal_register_generic_device (& shm_device );
@@ -72,11 +100,18 @@ static int OPENAMP_shmem_init(int RPMsgRole)
72100 metal_io_init (& device -> regions [0 ], (void * )SHM_START_ADDRESS , & shm_physmap ,
73101 SHM_SIZE , -1 , 0 , NULL );
74102
103+ /* USER CODE BEGIN PRE_SHM_IO_INIT */
104+
105+ /* USER CODE END PRE_SHM_IO_INIT */
75106 shm_io = metal_device_io_region (device , 0 );
76107 if (shm_io == NULL ) {
77108 return -1 ;
78109 }
79110
111+ /* USER CODE BEGIN POST_SHM_IO_INIT */
112+
113+ /* USER CODE END POST_SHM_IO_INIT */
114+
80115 /* Initialize resources table variables */
81116 resource_table_init (RPMsgRole , & rsc_tab_addr , & rsc_size );
82117 rsc_table = (struct shared_resource_table * )rsc_tab_addr ;
@@ -85,23 +120,38 @@ static int OPENAMP_shmem_init(int RPMsgRole)
85120 return -1 ;
86121 }
87122
123+ /* USER CODE BEGIN POST_RSC_TABLE_INIT */
124+
125+ /* USER CODE END POST_RSC_TABLE_INIT */
126+
88127 metal_io_init (& device -> regions [1 ], rsc_table ,
89128 (metal_phys_addr_t * )rsc_table , rsc_size , -1U , 0 , NULL );
90129
130+ /* USER CODE BEGIN POST_METAL_IO_INIT */
131+
132+ /* USER CODE END POST_METAL_IO_INIT */
91133 rsc_io = metal_device_io_region (device , 1 );
92134 if (rsc_io == NULL ) {
93135 return -1 ;
94136 }
95137
138+ /* USER CODE BEGIN POST_RSC_IO_INIT */
139+
140+ /* USER CODE END POST_RSC_IO_INIT */
96141 return 0 ;
97142}
98143
99144int MX_OPENAMP_Init (int RPMsgRole , rpmsg_ns_bind_cb ns_bind_cb )
100145{
101- struct fw_rsc_vdev_vring * vring_rsc ;
102- struct virtio_device * vdev ;
146+ struct fw_rsc_vdev_vring * vring_rsc = NULL ;
147+ struct virtio_device * vdev = NULL ;
103148 int status = 0 ;
104149
150+
151+ /* USER CODE BEGIN MAILBOX_Init */
152+
153+ /* USER CODE END MAIL_BOX_Init */
154+
105155 MAILBOX_Init ();
106156
107157 /* Libmetal Initilalization */
@@ -111,14 +161,22 @@ int MX_OPENAMP_Init(int RPMsgRole, rpmsg_ns_bind_cb ns_bind_cb)
111161 return status ;
112162 }
113163
164+ /* USER CODE BEGIN PRE_VIRTIO_INIT */
165+
166+ /* USER CODE END PRE_VIRTIO_INIT */
114167 vdev = rproc_virtio_create_vdev (RPMsgRole , VDEV_ID , & rsc_table -> vdev ,
115168 rsc_io , NULL , MAILBOX_Notify , NULL );
116169 if (vdev == NULL )
117170 {
118171 return -1 ;
119172 }
120173
174+
121175 rproc_virtio_wait_remote_ready (vdev );
176+
177+ /* USER CODE BEGIN POST_VIRTIO_INIT */
178+
179+ /* USER CODE END POST_VIRTIO_INIT */
122180 vring_rsc = & rsc_table -> vring0 ;
123181 status = rproc_virtio_init_vring (vdev , 0 , vring_rsc -> notifyid ,
124182 (void * )vring_rsc -> da , shm_io ,
@@ -127,6 +185,11 @@ int MX_OPENAMP_Init(int RPMsgRole, rpmsg_ns_bind_cb ns_bind_cb)
127185 {
128186 return status ;
129187 }
188+
189+
190+ /* USER CODE BEGIN POST_VRING0_INIT */
191+
192+ /* USER CODE END POST_VRING0_INIT */
130193 vring_rsc = & rsc_table -> vring1 ;
131194 status = rproc_virtio_init_vring (vdev , 1 , vring_rsc -> notifyid ,
132195 (void * )vring_rsc -> da , shm_io ,
@@ -136,42 +199,93 @@ int MX_OPENAMP_Init(int RPMsgRole, rpmsg_ns_bind_cb ns_bind_cb)
136199 return status ;
137200 }
138201
202+ /* USER CODE BEGIN POST_VRING1_INIT */
203+
204+ /* USER CODE END POST_VRING1_INIT */
205+
139206 rpmsg_virtio_init_shm_pool (& shpool , (void * )VRING_BUFF_ADDRESS ,
140207 (size_t )SHM_SIZE );
141208 rpmsg_init_vdev (& rvdev , vdev , ns_bind_cb , shm_io , & shpool );
142209
210+ /* USER CODE BEGIN POST_RPMSG_INIT */
211+
212+ /* USER CODE END POST_RPMSG_INIT */
213+
143214 return 0 ;
144215}
145216
146217void OPENAMP_DeInit ()
147218{
219+
220+ /* USER CODE BEGIN PRE_OPENAMP_DEINIT */
221+
222+ /* USER CODE END PRE_OPENAMP_DEINIT */
223+
148224 rpmsg_deinit_vdev (& rvdev );
149225
150226 metal_finish ();
227+
228+ /* USER CODE BEGIN POST_OPENAMP_DEINIT */
229+
230+ /* USER CODE END POST_OPENAMP_DEINIT */
151231}
152232
153233void OPENAMP_init_ept (struct rpmsg_endpoint * ept )
154234{
235+ /* USER CODE BEGIN PRE_EP_INIT */
236+
237+ /* USER CODE END PRE_EP_INIT */
238+
155239 rpmsg_init_ept (ept , "" , RPMSG_ADDR_ANY , RPMSG_ADDR_ANY , NULL , NULL );
240+
241+ /* USER CODE BEGIN POST_EP_INIT */
242+
243+ /* USER CODE END POST_EP_INIT */
156244}
157245
158246int OPENAMP_create_endpoint (struct rpmsg_endpoint * ept , const char * name ,
159247 uint32_t dest , rpmsg_ept_cb cb ,
160248 rpmsg_ns_unbind_cb unbind_cb )
161249{
162- return rpmsg_create_ept (ept , & rvdev .rdev , name , RPMSG_ADDR_ANY , dest , cb ,
250+ int ret = 0 ;
251+ /* USER CODE BEGIN PRE_EP_CREATE */
252+
253+ /* USER CODE END PRE_EP_CREATE */
254+
255+ ret = rpmsg_create_ept (ept , & rvdev .rdev , name , RPMSG_ADDR_ANY , dest , cb ,
163256 unbind_cb );
257+
258+ /* USER CODE BEGIN POST_EP_CREATE */
259+
260+ /* USER CODE END POST_EP_CREATE */
261+ return ret ;
164262}
165263
166264void OPENAMP_check_for_message (void )
167265{
266+ /* USER CODE BEGIN MSG_CHECK */
267+
268+ /* USER CODE END MSG_CHECK */
168269 MAILBOX_Poll (rvdev .vdev );
169270}
170271
171272void OPENAMP_Wait_EndPointready (struct rpmsg_endpoint * rp_ept )
172273{
274+ /* USER CODE BEGIN EP_READY */
275+
276+ /* USER CODE END EP_READY */
277+
173278 while (!is_rpmsg_ept_ready (rp_ept ))
174- MAILBOX_Poll (rvdev .vdev );
279+ {
280+ /* USER CODE BEGIN 0 */
281+
282+ /* USER CODE END 0 */
283+ MAILBOX_Poll (rvdev .vdev );
284+
285+ /* USER CODE BEGIN 1 */
286+
287+ /* USER CODE END 1 */
288+ }
175289}
176290
177291/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
0 commit comments