diff --git a/drivers/rptun/rptun.c b/drivers/rptun/rptun.c index 0a8a2ffed3e..8bf8b602915 100644 --- a/drivers/rptun/rptun.c +++ b/drivers/rptun/rptun.c @@ -112,6 +112,7 @@ static int rptun_mmap(FAR struct remoteproc *rproc, FAR metal_phys_addr_t *pa, FAR metal_phys_addr_t *da, FAR void **va, size_t size, unsigned int attribute, FAR struct metal_io_region **io_); +static int rptun_config(struct remoteproc *rproc, void *data); static int rptun_start(FAR struct remoteproc *rproc); static int rptun_stop(FAR struct remoteproc *rproc); static int rptun_notify(FAR struct remoteproc *rproc, uint32_t id); @@ -147,6 +148,7 @@ static struct remoteproc_ops g_rptun_ops = .init = rptun_init, .remove = rptun_remove, .mmap = rptun_mmap, + .config = rptun_config, .start = rptun_start, .stop = rptun_stop, .notify = rptun_notify, @@ -269,6 +271,18 @@ static int rptun_mmap(FAR struct remoteproc *rproc, return 0; } +static int rptun_config(struct remoteproc *rproc, void *data) +{ + struct rptun_priv_s *priv = rproc->priv; + + if (RPTUN_IS_MASTER(priv->dev)) + { + return RPTUN_CONFIG(priv->dev, data); + } + + return 0; +} + static int rptun_start(FAR struct remoteproc *rproc) { FAR struct rptun_priv_s *priv = rproc->priv; diff --git a/include/nuttx/rptun/rptun.h b/include/nuttx/rptun/rptun.h index 31be2d45df1..8772171910f 100644 --- a/include/nuttx/rptun/rptun.h +++ b/include/nuttx/rptun/rptun.h @@ -156,6 +156,22 @@ #define RPTUN_IS_MASTER(d) ((d)->ops->is_master(d)) +/**************************************************************************** + * Name: RPTUN_CONFIG + * + * Description: + * CONFIG remote cpu + * + * Input Parameters: + * dev - Device-specific state data + * data - Device-specific private data + * + * Returned Value: + * OK unless an error occurs. Then a negated errno value is returned + * + ****************************************************************************/ +#define RPTUN_CONFIG(d, p) ((d)->ops->config(d, p)) + /**************************************************************************** * Name: RPTUN_START * @@ -276,6 +292,7 @@ struct rptun_ops_s CODE bool (*is_autostart)(FAR struct rptun_dev_s *dev); CODE bool (*is_master)(FAR struct rptun_dev_s *dev); + CODE int (*config)(struct rptun_dev_s *dev, void *data); CODE int (*start)(FAR struct rptun_dev_s *dev); CODE int (*stop)(FAR struct rptun_dev_s *dev); CODE int (*notify)(FAR struct rptun_dev_s *dev, uint32_t vqid);