diff --git a/drivers/rpmsg/rpmsg.c b/drivers/rpmsg/rpmsg.c index 9c0fb6c03c5..f2c9f444696 100644 --- a/drivers/rpmsg/rpmsg.c +++ b/drivers/rpmsg/rpmsg.c @@ -24,6 +24,7 @@ #include +#include #include #include #include @@ -455,8 +456,21 @@ void rpmsg_device_destory(FAR struct rpmsg_s *rpmsg) int rpmsg_register(FAR const char *path, FAR struct rpmsg_s *rpmsg, FAR const struct rpmsg_ops_s *ops) { + struct metal_init_params params = METAL_INIT_DEFAULTS; + static bool onceinit = false; int ret; + if (!onceinit) + { + ret = metal_init(¶ms); + if (ret < 0) + { + return ret; + } + + onceinit = true; + } + ret = register_driver(path, &g_rpmsg_dev_ops, 0222, rpmsg); if (ret < 0) { diff --git a/drivers/rptun/rptun.c b/drivers/rptun/rptun.c index ac62c0d1e3c..82e60b076bd 100644 --- a/drivers/rptun/rptun.c +++ b/drivers/rptun/rptun.c @@ -971,25 +971,12 @@ static metal_phys_addr_t rptun_da_to_pa(FAR struct rptun_dev_s *dev, int rptun_initialize(FAR struct rptun_dev_s *dev) { - struct metal_init_params params = METAL_INIT_DEFAULTS; FAR struct rptun_priv_s *priv; - static bool onceinit = false; FAR char *argv[3]; char arg1[32]; char name[32]; int ret; - if (!onceinit) - { - ret = metal_init(¶ms); - if (ret < 0) - { - return ret; - } - - onceinit = true; - } - priv = kmm_zalloc(sizeof(struct rptun_priv_s)); if (priv == NULL) {