Skip to content

Commit dd919df

Browse files
rpmsg: merge rpmsg_register_endpoint into rpmsg_init_ept
so the service which use preserved address could call rpmsg_init_ept Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
1 parent 28102d3 commit dd919df

4 files changed

Lines changed: 21 additions & 20 deletions

File tree

lib/include/openamp/rpmsg.h

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -271,25 +271,20 @@ static inline int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept,
271271
* remoteproc address, endpoint callback, and destroy endpoint callback.
272272
*
273273
* @ept: pointer to rpmsg endpoint
274+
* @rdev: pointer to the rpmsg device
274275
* @name: service name associated to the endpoint
275276
* @src: local address of the endpoint
276277
* @dest: target address of the endpoint
277278
* @cb: endpoint callback
278279
* @ns_unbind_cb: end point service unbind callback, called when remote ept is
279280
* destroyed.
280281
*/
281-
static inline void rpmsg_init_ept(struct rpmsg_endpoint *ept,
282-
const char *name,
283-
uint32_t src, uint32_t dest,
284-
rpmsg_ept_cb cb,
285-
rpmsg_ns_unbind_cb ns_unbind_cb)
286-
{
287-
strncpy(ept->name, name ? name : "", sizeof(ept->name));
288-
ept->addr = src;
289-
ept->dest_addr = dest;
290-
ept->cb = cb;
291-
ept->ns_unbind_cb = ns_unbind_cb;
292-
}
282+
void rpmsg_init_ept(struct rpmsg_endpoint *ept,
283+
struct rpmsg_device *rdev,
284+
const char *name,
285+
uint32_t src, uint32_t dest,
286+
rpmsg_ept_cb cb,
287+
rpmsg_ns_unbind_cb ns_unbind_cb);
293288

294289
/**
295290
* rpmsg_create_ept - create rpmsg endpoint and register it to rpmsg device

lib/rpmsg/rpmsg.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,16 +182,26 @@ static void rpmsg_unregister_endpoint(struct rpmsg_endpoint *ept)
182182
return;
183183

184184
rdev = ept->rdev;
185+
ept->rdev = NULL;
185186

186187
if (ept->addr != RPMSG_ADDR_ANY)
187188
rpmsg_release_address(rdev->bitmap, RPMSG_ADDR_BMP_SIZE,
188189
ept->addr);
189190
metal_list_del(&ept->node);
190191
}
191192

192-
void rpmsg_register_endpoint(struct rpmsg_device *rdev,
193-
struct rpmsg_endpoint *ept)
193+
void rpmsg_init_ept(struct rpmsg_endpoint *ept,
194+
struct rpmsg_device *rdev,
195+
const char *name,
196+
uint32_t src, uint32_t dest,
197+
rpmsg_ept_cb cb,
198+
rpmsg_ns_unbind_cb ns_unbind_cb)
194199
{
200+
strncpy(ept->name, name ? name : "", sizeof(ept->name));
201+
ept->addr = src;
202+
ept->dest_addr = dest;
203+
ept->cb = cb;
204+
ept->ns_unbind_cb = ns_unbind_cb;
195205
ept->rdev = rdev;
196206
metal_list_add_tail(&rdev->endpoints, &ept->node);
197207
}
@@ -224,8 +234,7 @@ int rpmsg_create_ept(struct rpmsg_endpoint *ept, struct rpmsg_device *rdev,
224234
addr = rpmsg_get_address(rdev->bitmap, RPMSG_ADDR_BMP_SIZE);
225235
}
226236

227-
rpmsg_init_ept(ept, name, addr, dest, cb, unbind_cb);
228-
rpmsg_register_endpoint(rdev, ept);
237+
rpmsg_init_ept(ept, rdev, name, addr, dest, cb, unbind_cb);
229238

230239
if (rdev->support_ns && ept->dest_addr == RPMSG_ADDR_ANY) {
231240
/* Send NS announcement to remote processor */

lib/rpmsg/rpmsg_internal.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,6 @@ int rpmsg_send_ns_message(struct rpmsg_endpoint *ept, unsigned long flags);
9292
struct rpmsg_endpoint *rpmsg_get_endpoint(struct rpmsg_device *rvdev,
9393
const char *name, uint32_t addr,
9494
uint32_t dest_addr);
95-
void rpmsg_register_endpoint(struct rpmsg_device *rdev,
96-
struct rpmsg_endpoint *ept);
9795

9896
static inline struct rpmsg_endpoint *
9997
rpmsg_get_ept_from_addr(struct rpmsg_device *rdev, uint32_t addr)

lib/rpmsg/rpmsg_virtio.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -636,10 +636,9 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev,
636636
* service announcement feature.
637637
*/
638638
if (rdev->support_ns) {
639-
rpmsg_init_ept(&rdev->ns_ept, "NS",
639+
rpmsg_init_ept(&rdev->ns_ept, rdev, "NS",
640640
RPMSG_NS_EPT_ADDR, RPMSG_NS_EPT_ADDR,
641641
rpmsg_virtio_ns_callback, NULL);
642-
rpmsg_register_endpoint(rdev, &rdev->ns_ept);
643642
}
644643

645644
#ifndef VIRTIO_SLAVE_ONLY

0 commit comments

Comments
 (0)