lkml.org 
[lkml]   [2020]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/10] rpmsg: virtio: Add rpmsg channel device ops
    Date
    From: Arnaud Pouliquen <arnaud.pouliquen@st.com>

    Implement the create and release of the RPMsg channel
    for the RPMsg virtio bus.

    Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@st.com>
    [Moved function declaration above struct virtio_rpmsg_ops]
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    ---
    drivers/rpmsg/virtio_rpmsg_bus.c | 24 ++++++++++++++++++++++++
    1 file changed, 24 insertions(+)

    diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
    index e8d55c8b9cbf..e87cf0b79542 100644
    --- a/drivers/rpmsg/virtio_rpmsg_bus.c
    +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
    @@ -181,6 +181,9 @@ static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
    int len, u32 dst);
    static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src,
    u32 dst, void *data, int len);
    +static struct rpmsg_device *
    +__rpmsg_create_channel(struct virtproc_info *vrp,
    + struct rpmsg_channel_info *chinfo);

    static const struct rpmsg_endpoint_ops virtio_endpoint_ops = {
    .destroy_ept = virtio_rpmsg_destroy_ept,
    @@ -285,6 +288,25 @@ static struct rpmsg_endpoint *__rpmsg_create_ept(struct virtproc_info *vrp,
    return NULL;
    }

    +static struct rpmsg_device *
    +virtio_rpmsg_create_channel(struct rpmsg_device *rpdev,
    + struct rpmsg_channel_info *chinfo)
    +{
    + struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
    + struct virtproc_info *vrp = vch->vrp;
    +
    + return __rpmsg_create_channel(vrp, chinfo);
    +}
    +
    +static int virtio_rpmsg_release_channel(struct rpmsg_device *rpdev,
    + struct rpmsg_channel_info *chinfo)
    +{
    + struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
    + struct virtproc_info *vrp = vch->vrp;
    +
    + return rpmsg_unregister_device(&vrp->vdev->dev, chinfo);
    +}
    +
    static struct rpmsg_endpoint *virtio_rpmsg_create_ept(struct rpmsg_device *rpdev,
    rpmsg_rx_cb_t cb,
    void *priv,
    @@ -377,6 +399,8 @@ static int virtio_rpmsg_announce_destroy(struct rpmsg_device *rpdev)
    }

    static const struct rpmsg_device_ops virtio_rpmsg_ops = {
    + .create_channel = virtio_rpmsg_create_channel,
    + .release_channel = virtio_rpmsg_release_channel,
    .create_ept = virtio_rpmsg_create_ept,
    .announce_create = virtio_rpmsg_announce_create,
    .announce_destroy = virtio_rpmsg_announce_destroy,
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-09-22 02:11    [W:4.536 / U:0.264 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site