All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
To: Bjorn Andersson <bjorn.andersson@linaro.org>,
	Ohad Ben-Cohen <ohad@wizery.com>,
	Mathieu Poirier <mathieu.poirier@linaro.org>,
	Andy Gross <agross@kernel.org>
Cc: <linux-remoteproc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-stm32@st-md-mailman.stormreply.com>,
	<linux-arm-msm@vger.kernel.org>, <arnaud.pouliquen@foss.st.com>
Subject: [PATCH v3 11/15] rpmsg: ctrl: introduce RPMSG_CREATE_DEV_IOCTL
Date: Thu, 4 Feb 2021 09:45:30 +0100	[thread overview]
Message-ID: <20210204084534.10516-12-arnaud.pouliquen@foss.st.com> (raw)
In-Reply-To: <20210204084534.10516-1-arnaud.pouliquen@foss.st.com>

Implement the RPMSG_CREATE_DEV_IOCTL to allow the user application to
initiate a communication through a new RPMsg channel.
This Ioctl can be used to instantiate a local RPMsg device.
Depending on the back-end implementation, a NS announcement can be sent
to the remote processor.

Suggested-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
---
 drivers/rpmsg/rpmsg_ctrl.c | 21 +++++++++++++++++----
 include/uapi/linux/rpmsg.h |  5 +++++
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/drivers/rpmsg/rpmsg_ctrl.c b/drivers/rpmsg/rpmsg_ctrl.c
index f9b90e927fff..88eae475ef33 100644
--- a/drivers/rpmsg/rpmsg_ctrl.c
+++ b/drivers/rpmsg/rpmsg_ctrl.c
@@ -70,9 +70,7 @@ static long rpmsg_ctrl_ioctl(struct file *fp, unsigned int cmd, unsigned long ar
 	void __user *argp = (void __user *)arg;
 	struct rpmsg_endpoint_info eptinfo;
 	struct rpmsg_channel_info chinfo;
-
-	if (cmd != RPMSG_CREATE_EPT_IOCTL)
-		return -EINVAL;
+	struct rpmsg_device *newch;
 
 	if (copy_from_user(&eptinfo, argp, sizeof(eptinfo)))
 		return -EFAULT;
@@ -82,7 +80,22 @@ static long rpmsg_ctrl_ioctl(struct file *fp, unsigned int cmd, unsigned long ar
 	chinfo.src = eptinfo.src;
 	chinfo.dst = eptinfo.dst;
 
-	return rpmsg_chrdev_create_eptdev(ctrldev->rpdev, &ctrldev->dev, chinfo);
+	switch (cmd) {
+	case RPMSG_CREATE_EPT_IOCTL:
+		return rpmsg_chrdev_create_eptdev(ctrldev->rpdev, &ctrldev->dev, chinfo);
+
+	case RPMSG_CREATE_DEV_IOCTL:
+		newch = rpmsg_create_channel(ctrldev->rpdev, &chinfo);
+		if (!newch) {
+			dev_err(&ctrldev->dev, "rpmsg_create_channel failed\n");
+			return -ENXIO;
+		}
+		return 0;
+
+	default:
+		return -EINVAL;
+	}
+
 };
 
 static const struct file_operations rpmsg_ctrl_fops = {
diff --git a/include/uapi/linux/rpmsg.h b/include/uapi/linux/rpmsg.h
index f5ca8740f3fb..f9d5a74e7801 100644
--- a/include/uapi/linux/rpmsg.h
+++ b/include/uapi/linux/rpmsg.h
@@ -33,4 +33,9 @@ struct rpmsg_endpoint_info {
  */
 #define RPMSG_DESTROY_EPT_IOCTL	_IO(0xb5, 0x2)
 
+/**
+ * Instantiate a rpmsg service device.
+ */
+#define RPMSG_CREATE_DEV_IOCTL	_IOW(0xb5, 0x3, struct rpmsg_endpoint_info)
+
 #endif
-- 
2.17.1


  parent reply	other threads:[~2021-02-04  8:47 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-04  8:45 [PATCH v3 00/15] introduce a generic IOCTL interface for RPMsg channels management Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 01/15] rpmsg: char: rename rpmsg_char_init to rpmsg_chrdev_init Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 02/15] rpmsg: move RPMSG_ADDR_ANY in user API and document the API Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 03/15] rpmsg: char: export eptdev create an destroy functions Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 04/15] rpmsg: char: dissociate the control device from the rpmsg class Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 05/15] rpmsg: move the rpmsg control device from rpmsg_char to rpmsg_ctrl Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 06/15] rpmsg: update rpmsg_chrdev_register_device function Arnaud Pouliquen
2021-02-04 12:44   ` kernel test robot
2021-02-04 12:44     ` kernel test robot
2021-02-04 15:11     ` Arnaud POULIQUEN
2021-02-04 16:53       ` Mathieu Poirier
2021-02-04 16:53         ` Mathieu Poirier
2021-02-05  8:21         ` Arnaud POULIQUEN
2021-02-04  8:45 ` [PATCH v3 07/15] rpmsg: virtio: probe the rpmsg_ctrl device Arnaud Pouliquen
2021-02-04 11:35   ` kernel test robot
2021-02-04 11:35     ` kernel test robot
2021-02-04  8:45 ` [PATCH v3 08/15] rpmsg: glink: add sendto and trysendto ops Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 09/15] rpmsg: smd: " Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 10/15] rpmsg: char: use sendto to specify the message destination address Arnaud Pouliquen
2021-02-04  8:45 ` Arnaud Pouliquen [this message]
2021-02-04  8:45 ` [PATCH v3 12/15] rpmsg: char: introduce __rpmsg_chrdev_create_eptdev function Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 13/15] rpmsg: char: introduce a RPMsg driver for the RPmsg char device Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 14/15] rpmsg: char: no dynamic endpoint management for the default one Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 15/15] rpmsg: char: return an error if device already open Arnaud Pouliquen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210204084534.10516-12-arnaud.pouliquen@foss.st.com \
    --to=arnaud.pouliquen@foss.st.com \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=ohad@wizery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.