rpmsg: rpmsg_send() operations takes rpmsg_endpoint
The rpmsg_send() operations has been taking a rpmsg_device, but this forces users of secondary rpmsg_endpoints to use the rpmsg_sendto() interface - by extracting source and destination from the given data structures. If we instead pass the rpmsg_endpoint to these functions a service can use rpmsg_sendto() to respond to messages, even on secondary endpoints. In addition this would allow us to support operations on multiple channels in future backends that does not support off-channel operations. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
@@ -379,10 +379,10 @@ static int rpmsg_dev_probe(struct device *dev)
|
||||
struct rpmsg_ns_msg nsm;
|
||||
|
||||
strncpy(nsm.name, rpdev->id.name, RPMSG_NAME_SIZE);
|
||||
nsm.addr = rpdev->src;
|
||||
nsm.addr = rpdev->ept->addr;
|
||||
nsm.flags = RPMSG_NS_CREATE;
|
||||
|
||||
err = rpmsg_sendto(rpdev, &nsm, sizeof(nsm), RPMSG_NS_ADDR);
|
||||
err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR);
|
||||
if (err)
|
||||
dev_err(dev, "failed to announce service %d\n", err);
|
||||
}
|
||||
@@ -407,7 +407,7 @@ static int rpmsg_dev_remove(struct device *dev)
|
||||
nsm.addr = rpdev->src;
|
||||
nsm.flags = RPMSG_NS_DESTROY;
|
||||
|
||||
err = rpmsg_sendto(rpdev, &nsm, sizeof(nsm), RPMSG_NS_ADDR);
|
||||
err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR);
|
||||
if (err)
|
||||
dev_err(dev, "failed to announce service %d\n", err);
|
||||
}
|
||||
|
Reference in New Issue
Block a user