diff --git a/subsys/ipc/rpmsg_service/rpmsg_backend.c b/subsys/ipc/rpmsg_service/rpmsg_backend.c index b3f428e011c..4a35880f36d 100644 --- a/subsys/ipc/rpmsg_service/rpmsg_backend.c +++ b/subsys/ipc/rpmsg_service/rpmsg_backend.c @@ -13,7 +13,6 @@ #include #include -#include #define LOG_MODULE_NAME rpmsg_backend LOG_MODULE_REGISTER(LOG_MODULE_NAME, CONFIG_RPMSG_SERVICE_LOG_LEVEL); @@ -61,25 +60,7 @@ static const struct device *const ipm_handle = #endif static metal_phys_addr_t shm_physmap[] = { SHM_START_ADDR }; -static struct metal_device shm_device = { - .name = SHM_DEVICE_NAME, - .bus = NULL, - .num_regions = 1, - { - { - .virt = (void *) SHM_START_ADDR, - .physmap = shm_physmap, - .size = SHM_SIZE, - .page_shift = 0xffffffff, - .page_mask = 0xffffffff, - .mem_flags = 0, - .ops = { NULL }, - }, - }, - .node = { NULL }, - .irq_num = 0, - .irq_info = NULL -}; +static struct metal_io_region shm_io; static struct virtio_vring_info rvrings[2] = { [0] = { @@ -184,7 +165,6 @@ int rpmsg_backend_init(struct metal_io_region **io, struct virtio_device *vdev) { int32_t err; struct metal_init_params metal_params = METAL_INIT_DEFAULTS; - struct metal_device *device; /* Start IPM workqueue */ k_work_queue_start(&ipm_work_q, ipm_stack_area, @@ -202,23 +182,9 @@ int rpmsg_backend_init(struct metal_io_region **io, struct virtio_device *vdev) return err; } - err = metal_register_generic_device(&shm_device); - if (err) { - LOG_ERR("Couldn't register shared memory device: %d", err); - return err; - } - - err = metal_device_open("generic", SHM_DEVICE_NAME, &device); - if (err) { - LOG_ERR("metal_device_open failed: %d", err); - return err; - } - - *io = metal_device_io_region(device, 0); - if (!*io) { - LOG_ERR("metal_device_io_region failed to get region"); - return err; - } + /* declare shared memory region */ + metal_io_init(&shm_io, (void *)SHM_START_ADDR, shm_physmap, SHM_SIZE, -1, 0, NULL); + *io = &shm_io; /* IPM setup */ #if defined(CONFIG_RPMSG_SERVICE_DUAL_IPM_SUPPORT)