7#ifndef ZEPHYR_INCLUDE_RPMSG_MULTIPLE_INSTANCE_H_
8#define ZEPHYR_INCLUDE_RPMSG_MULTIPLE_INSTANCE_H_
10#include <openamp/open_amp.h>
12#include <metal/device.h>
13#include <metal/alloc.h>
25#define VDEV_START_ADDR CONFIG_RPMSG_MULTI_INSTANCE_SHM_BASE_ADDRESS
26#define VDEV_SIZE CONFIG_RPMSG_MULTI_INSTANCE_SHM_SIZE
28#define SHM_START_ADDR VDEV_START_ADDR
29#define SHM_SIZE VDEV_SIZE
31#define VRING_ALIGNMENT (4)
32#define VDEV_STATUS_SIZE (0x4)
62 struct rpmsg_endpoint
ep;
110 struct virtqueue *
vq[2];
struct z_thread_stack_element k_thread_stack_t
Typedef of struct z_thread_stack_element.
Definition: arch_interface.h:44
void
Definition: eswifi_shell.c:15
int rpmsg_mi_send(struct rpmsg_mi_ept *ept, const void *data, size_t len)
Send data using given IPC endpoint.
int rpmsg_mi_ept_register(struct rpmsg_mi_ctx *ctx, struct rpmsg_mi_ept *ept, struct rpmsg_mi_ept_cfg *cfg)
Register IPC endpoint.
int rpmsg_mi_ctx_init(struct rpmsg_mi_ctx *ctx, const struct rpmsg_mi_ctx_cfg *cfg)
Initialization of RPMsg instance.
struct _slist sys_slist_t
Definition: slist.h:40
struct _snode sys_snode_t
Definition: slist.h:33
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:75
Runtime device structure (in ROM) per driver instance.
Definition: device.h:367
A structure used to hold work until it can be processed.
Definition: kernel.h:3770
A structure used to submit work.
Definition: kernel.h:3623
Event callback structure.
Definition: rpmsg_multi_instance.h:39
void(* received)(const void *data, size_t len, void *priv)
New packet arrived.
Definition: rpmsg_multi_instance.h:52
void(* bound)(void *priv)
Bind was successful.
Definition: rpmsg_multi_instance.h:44
Configuration of the RPMsg instance.
Definition: rpmsg_multi_instance.h:132
struct rpmsg_mi_ctx_shm_cfg * shm
Definition: rpmsg_multi_instance.h:159
size_t ipm_stack_size
Definition: rpmsg_multi_instance.h:141
const char * ipm_rx_name
Definition: rpmsg_multi_instance.h:153
unsigned int ipm_tx_id
Definition: rpmsg_multi_instance.h:156
const char * ipm_tx_name
Definition: rpmsg_multi_instance.h:150
k_thread_stack_t * ipm_stack_area
Definition: rpmsg_multi_instance.h:138
const char * name
Definition: rpmsg_multi_instance.h:135
const char * ipm_thread_name
Definition: rpmsg_multi_instance.h:147
int ipm_work_q_prio
Definition: rpmsg_multi_instance.h:144
Definition: rpmsg_multi_instance.h:120
size_t size
Definition: rpmsg_multi_instance.h:125
uintptr_t addr
Definition: rpmsg_multi_instance.h:122
unsigned int instance
Definition: rpmsg_multi_instance.h:128
Struct describing the context of the RPMsg instance.
Definition: rpmsg_multi_instance.h:91
struct rpmsg_device * rdev
Definition: rpmsg_multi_instance.h:108
sys_slist_t endpoints
Definition: rpmsg_multi_instance.h:117
uintptr_t vring_tx_addr
Definition: rpmsg_multi_instance.h:114
struct metal_io_region * shm_io
Definition: rpmsg_multi_instance.h:102
struct virtio_vring_info rvrings[2]
Definition: rpmsg_multi_instance.h:111
const struct device * ipm_tx_handle
Definition: rpmsg_multi_instance.h:96
const struct device * ipm_rx_handle
Definition: rpmsg_multi_instance.h:97
unsigned int ipm_tx_id
Definition: rpmsg_multi_instance.h:99
struct rpmsg_virtio_shm_pool shpool
Definition: rpmsg_multi_instance.h:107
struct rpmsg_virtio_device rvdev
Definition: rpmsg_multi_instance.h:106
const char * name
Definition: rpmsg_multi_instance.h:92
uintptr_t vring_rx_addr
Definition: rpmsg_multi_instance.h:115
struct k_work ipm_work
Definition: rpmsg_multi_instance.h:94
struct virtqueue * vq[2]
Definition: rpmsg_multi_instance.h:110
struct k_work_q ipm_work_q
Definition: rpmsg_multi_instance.h:93
metal_phys_addr_t shm_physmap[1]
Definition: rpmsg_multi_instance.h:104
struct metal_device shm_device
Definition: rpmsg_multi_instance.h:103
struct virtio_device vdev
Definition: rpmsg_multi_instance.h:112
uintptr_t shm_status_reg_addr
Definition: rpmsg_multi_instance.h:101
Endpoint configuration.
Definition: rpmsg_multi_instance.h:78
void * priv
Definition: rpmsg_multi_instance.h:87
struct rpmsg_mi_cb * cb
Definition: rpmsg_multi_instance.h:84
const char * name
Definition: rpmsg_multi_instance.h:81
Endpoint instance.
Definition: rpmsg_multi_instance.h:56
sys_snode_t node
Definition: rpmsg_multi_instance.h:74
struct rpmsg_endpoint ep
Definition: rpmsg_multi_instance.h:62
const char * name
Definition: rpmsg_multi_instance.h:59
struct rpmsg_mi_cb * cb
Definition: rpmsg_multi_instance.h:65
void * priv
Definition: rpmsg_multi_instance.h:68
volatile bool bound
Definition: rpmsg_multi_instance.h:71
static fdata_t data[2]
Definition: test_fifo_contexts.c:15