This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 8e799ff8236ee04ce50ee2e6ad3cb0882e8ed83e
Author: wangyongrong <[email protected]>
AuthorDate: Thu Jun 27 16:09:25 2024 +0800

    rpmsg: upgrade API passing on parameters with the upgrade of OpenAMP
    
    All the rpmsg transport layer and rpmsg services sync the API
    with new OpenAMP
    
    Signed-off-by: wangyongrong <[email protected]>
---
 drivers/misc/rpmsgblk.c           |  2 +-
 drivers/rpmsg/rpmsg.c             | 12 --------
 drivers/rpmsg/rpmsg_port.c        | 59 ++++++++++++++++++++-------------------
 drivers/rpmsg/rpmsg_router_edge.c | 59 ++++++++++++++++++++-------------------
 drivers/rpmsg/rpmsg_router_hub.c  |  8 +++---
 drivers/rpmsg/rpmsg_virtio.c      | 14 ----------
 drivers/rptun/rptun.c             | 14 ----------
 fs/rpmsgfs/rpmsgfs_server.c       |  4 +--
 include/nuttx/rpmsg/rpmsg.h       |  7 -----
 9 files changed, 68 insertions(+), 111 deletions(-)

diff --git a/drivers/misc/rpmsgblk.c b/drivers/misc/rpmsgblk.c
index 28e2638b09..70dc9a5ee9 100644
--- a/drivers/misc/rpmsgblk.c
+++ b/drivers/misc/rpmsgblk.c
@@ -614,7 +614,7 @@ static int rpmsgblk_mmc_multi_cmd_ioctl(FAR struct inode 
*inode,
 
   msglen = sizeof(*msg) + arglen - 1;
   rsplen += sizeof(*msg) - 1;
-  if (MAX(msglen, rsplen) > rpmsg_get_tx_buffer_size(priv->ept.rdev))
+  if (MAX(msglen, rsplen) > rpmsg_get_tx_buffer_size(&priv->ept))
     {
       int ret = 0;
 
diff --git a/drivers/rpmsg/rpmsg.c b/drivers/rpmsg/rpmsg.c
index 9af3cf6944..6db73ba676 100644
--- a/drivers/rpmsg/rpmsg.c
+++ b/drivers/rpmsg/rpmsg.c
@@ -207,18 +207,6 @@ FAR const char *rpmsg_get_cpuname(FAR struct rpmsg_device 
*rdev)
   return rpmsg ? rpmsg->ops->get_cpuname(rpmsg) : NULL;
 }
 
-int rpmsg_get_tx_buffer_size(FAR struct rpmsg_device *rdev)
-{
-  FAR struct rpmsg_s *rpmsg = rpmsg_get_by_rdev(rdev);
-  return rpmsg ? rpmsg->ops->get_tx_buffer_size(rpmsg) : -EINVAL;
-}
-
-int rpmsg_get_rx_buffer_size(FAR struct rpmsg_device *rdev)
-{
-  FAR struct rpmsg_s *rpmsg = rpmsg_get_by_rdev(rdev);
-  return rpmsg ? rpmsg->ops->get_rx_buffer_size(rpmsg) : -EINVAL;
-}
-
 int rpmsg_register_callback(FAR void *priv,
                             rpmsg_dev_cb_t device_created,
                             rpmsg_dev_cb_t device_destroy,
diff --git a/drivers/rpmsg/rpmsg_port.c b/drivers/rpmsg/rpmsg_port.c
index b0deb58458..0e9233fbed 100644
--- a/drivers/rpmsg/rpmsg_port.c
+++ b/drivers/rpmsg/rpmsg_port.c
@@ -48,8 +48,6 @@
 static FAR const char *
 rpmsg_port_get_local_cpuname(FAR struct rpmsg_s *rpmsg);
 static FAR const char *rpmsg_port_get_cpuname(FAR struct rpmsg_s *rpmsg);
-static int rpmsg_port_get_tx_buffer_size(FAR struct rpmsg_s *rpmsg);
-static int rpmsg_port_get_rx_buffer_size(FAR struct rpmsg_s *rpmsg);
 static void rpmsg_port_dump(FAR struct rpmsg_s *rpmsg);
 
 /****************************************************************************
@@ -65,8 +63,6 @@ static const struct rpmsg_ops_s g_rpmsg_port_ops =
   rpmsg_port_dump,
   rpmsg_port_get_local_cpuname,
   rpmsg_port_get_cpuname,
-  rpmsg_port_get_tx_buffer_size,
-  rpmsg_port_get_rx_buffer_size,
 };
 
 /****************************************************************************
@@ -372,6 +368,32 @@ static int rpmsg_port_release_tx_buffer(FAR struct 
rpmsg_device *rdev,
   return RPMSG_SUCCESS;
 }
 
+/****************************************************************************
+ * Name: rpmsg_port_get_tx_buffer_size
+ ****************************************************************************/
+
+static int rpmsg_port_get_tx_buffer_size(FAR struct rpmsg_device *rdev)
+{
+  FAR struct rpmsg_port_s *port =
+    metal_container_of(rdev, struct rpmsg_port_s, rdev);
+
+  return port->txq.len - sizeof(struct rpmsg_port_header_s) -
+         sizeof(struct rpmsg_hdr);
+}
+
+/****************************************************************************
+ * Name: rpmsg_port_get_rx_buffer_size
+ ****************************************************************************/
+
+static int rpmsg_port_get_rx_buffer_size(FAR struct rpmsg_device *rdev)
+{
+  FAR struct rpmsg_port_s *port =
+    metal_container_of(rdev, struct rpmsg_port_s, rdev);
+
+  return port->rxq.len - sizeof(struct rpmsg_port_header_s) -
+         sizeof(struct rpmsg_hdr);
+}
+
 /****************************************************************************
  * Name: rpmsg_port_rx_callback
  ****************************************************************************/
@@ -540,30 +562,6 @@ static FAR const char *rpmsg_port_get_cpuname(FAR struct 
rpmsg_s *rpmsg)
   return port->cpuname;
 }
 
-/****************************************************************************
- * Name: rpmsg_port_get_tx_buffer_size
- ****************************************************************************/
-
-static int rpmsg_port_get_tx_buffer_size(FAR struct rpmsg_s *rpmsg)
-{
-  FAR struct rpmsg_port_s *port = (FAR struct rpmsg_port_s *)rpmsg;
-
-  return port->txq.len - sizeof(struct rpmsg_port_header_s) -
-         sizeof(struct rpmsg_hdr);
-}
-
-/****************************************************************************
- * Name: rpmsg_port_get_rx_buffer_size
- ****************************************************************************/
-
-static int rpmsg_port_get_rx_buffer_size(FAR struct rpmsg_s *rpmsg)
-{
-  FAR struct rpmsg_port_s *port = (FAR struct rpmsg_port_s *)rpmsg;
-
-  return port->rxq.len - sizeof(struct rpmsg_port_header_s) -
-         sizeof(struct rpmsg_hdr);
-}
-
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -604,6 +602,8 @@ int rpmsg_port_initialize(FAR struct rpmsg_port_s *port,
   rdev->ops.get_tx_payload_buffer = rpmsg_port_get_tx_payload_buffer;
   rdev->ops.send_offchannel_nocopy = rpmsg_port_send_offchannel_nocopy;
   rdev->ops.release_tx_buffer = rpmsg_port_release_tx_buffer;
+  rdev->ops.get_rx_buffer_size = rpmsg_port_get_rx_buffer_size;
+  rdev->ops.get_tx_buffer_size = rpmsg_port_get_tx_buffer_size;
 
   metal_list_init(&rdev->endpoints);
 
@@ -611,7 +611,8 @@ int rpmsg_port_initialize(FAR struct rpmsg_port_s *port,
   rdev->support_ns = true;
 
   rpmsg_register_endpoint(rdev, &rdev->ns_ept, "NS", RPMSG_NS_EPT_ADDR,
-                          RPMSG_NS_EPT_ADDR, rpmsg_port_ns_callback, NULL);
+                          RPMSG_NS_EPT_ADDR, rpmsg_port_ns_callback, NULL,
+                          port);
   port->ops->register_callback(port, rpmsg_port_rx_callback);
 
   return 0;
diff --git a/drivers/rpmsg/rpmsg_router_edge.c 
b/drivers/rpmsg/rpmsg_router_edge.c
index 9874e8c9a3..fccdb68904 100644
--- a/drivers/rpmsg/rpmsg_router_edge.c
+++ b/drivers/rpmsg/rpmsg_router_edge.c
@@ -85,8 +85,11 @@ static FAR const char *
 rpmsg_router_edge_get_local_cpuname(FAR struct rpmsg_s *rpmsg);
 static FAR const char *
 rpmsg_router_edge_get_cpuname(FAR struct rpmsg_s *rpmsg);
-static int rpmsg_router_edge_get_tx_buffer_size(FAR struct rpmsg_s *rpmsg);
-static int rpmsg_router_edge_get_rx_buffer_size(FAR struct rpmsg_s *rpmsg);
+
+static int
+rpmsg_router_edge_get_rx_buffer_size(FAR struct rpmsg_device *rdev);
+static int
+rpmsg_router_edge_get_tx_buffer_size(FAR struct rpmsg_device *rdev);
 
 /****************************************************************************
  * Private Data
@@ -101,8 +104,6 @@ static const struct rpmsg_ops_s g_rpmsg_router_edge_ops =
   NULL,
   rpmsg_router_edge_get_local_cpuname,
   rpmsg_router_edge_get_cpuname,
-  rpmsg_router_edge_get_tx_buffer_size,
-  rpmsg_router_edge_get_rx_buffer_size,
 };
 
 /****************************************************************************
@@ -135,30 +136,6 @@ rpmsg_router_edge_get_cpuname(FAR struct rpmsg_s *rpmsg)
   return edge->remotecpu;
 }
 
-/****************************************************************************
- * Name: rpmsg_router_edge_get_tx_buffer_size
- ****************************************************************************/
-
-static int rpmsg_router_edge_get_tx_buffer_size(FAR struct rpmsg_s *rpmsg)
-{
-  FAR struct rpmsg_router_edge_s *edge =
-      (FAR struct rpmsg_router_edge_s *)rpmsg;
-
-  return edge->tx_len;
-}
-
-/****************************************************************************
- * Name: rpmsg_router_edge_get_rx_buffer_size
- ****************************************************************************/
-
-static int rpmsg_router_edge_get_rx_buffer_size(FAR struct rpmsg_s *rpmsg)
-{
-  FAR struct rpmsg_router_edge_s *edge =
-      (FAR struct rpmsg_router_edge_s *)rpmsg;
-
-  return edge->rx_len;
-}
-
 /****************************************************************************
  * Name: rpmsg_router_edge_get_tx_payload_buffer
  ****************************************************************************/
@@ -255,6 +232,30 @@ static int rpmsg_router_edge_send_nocopy(FAR struct 
rpmsg_device *rdev,
   return hubdev->ops.send_offchannel_nocopy(hubdev, src, dst, data, len);
 }
 
+/****************************************************************************
+ * Name: rpmsg_router_edge_get_rx_buffer_size
+ ****************************************************************************/
+
+static int
+rpmsg_router_edge_get_rx_buffer_size(FAR struct rpmsg_device *rdev)
+{
+  FAR struct rpmsg_router_edge_s *edge = rpmsg_router_edge_from_rdev(rdev);
+
+  return edge->rx_len;
+}
+
+/****************************************************************************
+ * Name: rpmsg_router_edge_get_tx_buffer_size
+ ****************************************************************************/
+
+static int
+rpmsg_router_edge_get_tx_buffer_size(FAR struct rpmsg_device *rdev)
+{
+  FAR struct rpmsg_router_edge_s *edge = rpmsg_router_edge_from_rdev(rdev);
+
+  return edge->tx_len;
+}
+
 /****************************************************************************
  * Name: rpmsg_router_edge_cb
  *
@@ -608,6 +609,8 @@ rpmsg_router_edge_create(FAR struct rpmsg_device *hubdev,
   rdev->ops.send_offchannel_nocopy = rpmsg_router_edge_send_nocopy;
   rdev->ops.send_offchannel_raw = rpmsg_router_edge_send_offchannel_raw;
   rdev->ops.get_tx_payload_buffer = rpmsg_router_edge_get_tx_payload_buffer;
+  rdev->ops.get_rx_buffer_size = rpmsg_router_edge_get_rx_buffer_size;
+  rdev->ops.get_tx_buffer_size = rpmsg_router_edge_get_tx_buffer_size;
 
   metal_list_init(&rdev->endpoints);
   rdev->support_ack = true;
diff --git a/drivers/rpmsg/rpmsg_router_hub.c b/drivers/rpmsg/rpmsg_router_hub.c
index 78080e1ee5..a150c719d9 100644
--- a/drivers/rpmsg/rpmsg_router_hub.c
+++ b/drivers/rpmsg/rpmsg_router_hub.c
@@ -322,10 +322,10 @@ static void rpmsg_router_bound(FAR struct rpmsg_endpoint 
*ept)
   for (i = 0; i < 2; i++)
     {
       msg.cmd = RPMSG_ROUTER_CREATE;
-      msg.tx_len = MIN(rpmsg_get_rx_buffer_size(hub->ept[i].rdev),
-                       rpmsg_get_tx_buffer_size(hub->ept[1 - i].rdev));
-      msg.rx_len = MIN(rpmsg_get_tx_buffer_size(hub->ept[i].rdev),
-                       rpmsg_get_rx_buffer_size(hub->ept[1 - i].rdev));
+      msg.tx_len = MIN(rpmsg_get_rx_buffer_size(&hub->ept[i]),
+                       rpmsg_get_tx_buffer_size(&hub->ept[1 - i]));
+      msg.rx_len = MIN(rpmsg_get_tx_buffer_size(&hub->ept[i]),
+                       rpmsg_get_rx_buffer_size(&hub->ept[1 - i]));
       strlcpy(msg.cpuname, hub->cpuname[i], sizeof(msg.cpuname));
       ret = rpmsg_send(&hub->ept[i], &msg, sizeof(msg));
       DEBUGASSERT(ret >= 0);
diff --git a/drivers/rpmsg/rpmsg_virtio.c b/drivers/rpmsg/rpmsg_virtio.c
index 890180c594..1f8b1bb6f6 100644
--- a/drivers/rpmsg/rpmsg_virtio.c
+++ b/drivers/rpmsg/rpmsg_virtio.c
@@ -74,8 +74,6 @@ static void rpmsg_virtio_dump(FAR struct rpmsg_s *rpmsg);
 static FAR const char *
 rpmsg_virtio_get_local_cpuname(FAR struct rpmsg_s *rpmsg);
 static FAR const char *rpmsg_virtio_get_cpuname(FAR struct rpmsg_s *rpmsg);
-static int rpmsg_virtio_get_tx_buffer_size(FAR struct rpmsg_s *rpmsg);
-static int rpmsg_virtio_get_rx_buffer_size_(FAR struct rpmsg_s *rpmsg);
 
 static int rpmsg_virtio_create_virtqueues_(FAR struct virtio_device *vdev,
                                            unsigned int flags,
@@ -102,8 +100,6 @@ static const struct rpmsg_ops_s g_rpmsg_virtio_ops =
   .dump               = rpmsg_virtio_dump,
   .get_local_cpuname  = rpmsg_virtio_get_local_cpuname,
   .get_cpuname        = rpmsg_virtio_get_cpuname,
-  .get_tx_buffer_size = rpmsg_virtio_get_tx_buffer_size,
-  .get_rx_buffer_size = rpmsg_virtio_get_rx_buffer_size_,
 };
 
 static const struct virtio_dispatch g_rpmsg_virtio_dispatch =
@@ -429,16 +425,6 @@ static FAR const char *rpmsg_virtio_get_cpuname(FAR struct 
rpmsg_s *rpmsg)
   return RPMSG_VIRTIO_GET_CPUNAME(priv->dev);
 }
 
-static int rpmsg_virtio_get_tx_buffer_size(FAR struct rpmsg_s *rpmsg)
-{
-  return rpmsg_virtio_get_buffer_size(rpmsg->rdev);
-}
-
-static int rpmsg_virtio_get_rx_buffer_size_(FAR struct rpmsg_s *rpmsg)
-{
-  return rpmsg_virtio_get_rx_buffer_size(rpmsg->rdev);
-}
-
 static void rpmsg_virtio_wakeup_rx(FAR struct rpmsg_virtio_priv_s *priv)
 {
   int semcount;
diff --git a/drivers/rptun/rptun.c b/drivers/rptun/rptun.c
index 144bae67a4..e6a23d1620 100644
--- a/drivers/rptun/rptun.c
+++ b/drivers/rptun/rptun.c
@@ -129,8 +129,6 @@ static void rptun_panic(FAR struct rpmsg_s *rpmsg);
 static void rptun_dump(FAR struct rpmsg_s *rpmsg);
 static FAR const char *rptun_get_local_cpuname(FAR struct rpmsg_s *rpmsg);
 static FAR const char *rptun_get_cpuname(FAR struct rpmsg_s *rpmsg);
-static int rptun_get_tx_buffer_size(FAR struct rpmsg_s *rpmsg);
-static int rptun_get_rx_buffer_size(FAR struct rpmsg_s *rpmsg);
 
 /****************************************************************************
  * Private Data
@@ -167,8 +165,6 @@ static const struct rpmsg_ops_s g_rptun_rpmsg_ops =
   rptun_dump,
   rptun_get_local_cpuname,
   rptun_get_cpuname,
-  rptun_get_tx_buffer_size,
-  rptun_get_rx_buffer_size,
 };
 
 /****************************************************************************
@@ -769,16 +765,6 @@ static FAR const char *rptun_get_cpuname(FAR struct 
rpmsg_s *rpmsg)
   return RPTUN_GET_CPUNAME(priv->dev);
 }
 
-static int rptun_get_tx_buffer_size(FAR struct rpmsg_s *rpmsg)
-{
-  return rpmsg_virtio_get_buffer_size(rpmsg->rdev);
-}
-
-static int rptun_get_rx_buffer_size(FAR struct rpmsg_s *rpmsg)
-{
-  return rpmsg_virtio_get_rx_buffer_size(rpmsg->rdev);
-}
-
 static int rptun_dev_start(FAR struct remoteproc *rproc)
 {
   FAR struct rptun_priv_s *priv = rproc->priv;
diff --git a/fs/rpmsgfs/rpmsgfs_server.c b/fs/rpmsgfs/rpmsgfs_server.c
index 7fa9cd76f5..b3f8fbd8a8 100644
--- a/fs/rpmsgfs/rpmsgfs_server.c
+++ b/fs/rpmsgfs/rpmsgfs_server.c
@@ -616,8 +616,8 @@ static int rpmsgfs_readdir_handler(FAR struct 
rpmsg_endpoint *ept,
       entry = readdir(dir);
       if (entry)
         {
-          size = MIN(rpmsg_get_tx_buffer_size(ept->rdev),
-                     rpmsg_get_rx_buffer_size(ept->rdev));
+          size = MIN(rpmsg_get_tx_buffer_size(ept),
+                     rpmsg_get_rx_buffer_size(ept));
           size = MIN(size - len, strlen(entry->d_name) + 1);
           msg->type = entry->d_type;
           strlcpy(msg->name, entry->d_name, size);
diff --git a/include/nuttx/rpmsg/rpmsg.h b/include/nuttx/rpmsg/rpmsg.h
index 08435ef95f..b41a439bad 100644
--- a/include/nuttx/rpmsg/rpmsg.h
+++ b/include/nuttx/rpmsg/rpmsg.h
@@ -65,8 +65,6 @@ struct rpmsg_s
  * wait: wait sem.
  * post: post sem.
  * get_cpuname: get cpu name.
- * get_tx_buffer_size: get tx buffer size.
- * get_rx_buffer_size: get rx buffer size.
  */
 
 struct rpmsg_ops_s
@@ -78,8 +76,6 @@ struct rpmsg_ops_s
   CODE void (*dump)(FAR struct rpmsg_s *rpmsg);
   CODE FAR const char *(*get_local_cpuname)(FAR struct rpmsg_s *rpmsg);
   CODE FAR const char *(*get_cpuname)(FAR struct rpmsg_s *rpmsg);
-  CODE int (*get_tx_buffer_size)(FAR struct rpmsg_s *rpmsg);
-  CODE int (*get_rx_buffer_size)(FAR struct rpmsg_s *rpmsg);
 };
 
 CODE typedef void (*rpmsg_dev_cb_t)(FAR struct rpmsg_device *rdev,
@@ -109,9 +105,6 @@ int rpmsg_post(FAR struct rpmsg_endpoint *ept, FAR sem_t 
*sem);
 FAR const char *rpmsg_get_local_cpuname(FAR struct rpmsg_device *rdev);
 FAR const char *rpmsg_get_cpuname(FAR struct rpmsg_device *rdev);
 
-int rpmsg_get_tx_buffer_size(FAR struct rpmsg_device *rdev);
-int rpmsg_get_rx_buffer_size(FAR struct rpmsg_device *rdev);
-
 int rpmsg_register_callback(FAR void *priv,
                             rpmsg_dev_cb_t device_created,
                             rpmsg_dev_cb_t device_destroy,

Reply via email to