• Arnaud Pouliquen's avatar
    rpmsg: char: Add possibility to use default endpoint of the rpmsg device · bea9b79c
    Arnaud Pouliquen authored
    Current implementation create/destroy a new endpoint on each
    rpmsg_eptdev_open/rpmsg_eptdev_release calls.
    
    For a rpmsg device created by the NS announcement a default endpoint is created.
    In this case we have to reuse the default rpmsg device endpoint associated to
    the channel instead of creating a new one.
    
    This patch prepares the introduction of a rpmsg channel device for the
    char device. The rpmsg channel device will require a default endpoint to
    communicate to the remote processor.
    
    Add the default_ept field in rpmsg_eptdev structure.This pointer
    determines the behavior on rpmsg_eptdev_open and rpmsg_eptdev_release call.
    
    - If default_ept == NULL:
      Use the legacy behavior by creating a new endpoint each time
      rpmsg_eptdev_open is called and release it when rpmsg_eptdev_release
      is called on /dev/rpmsgX device open/close.
    
    - If default_ept is set:
      use the rpmsg device default endpoint for the communication.
    
    Add protection in rpmsg_eptdev_ioctl to prevent to destroy a default endpoint.
    Signed-off-by: default avatarArnaud Pouliquen <arnaud.pouliquen@foss.st.com>
    Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20220124102524.295783-10-arnaud.pouliquen@foss.st.com
    bea9b79c
rpmsg_char.c 10.5 KB