12 #ifndef _RPMSG_VIRTIO_H_
13 #define _RPMSG_VIRTIO_H_
16 #include <metal/mutex.h>
20 #if defined __cplusplus
25 #ifndef RPMSG_BUFFER_SIZE
26 #define RPMSG_BUFFER_SIZE (512)
30 #define VIRTIO_RPMSG_F_NS 0
83 #define RPMSG_REMOTE VIRTIO_DEV_DEVICE
84 #define RPMSG_HOST VIRTIO_DEV_DRIVER
86 #define RPMSG_SLAVE deprecated_rpmsg_slave()
87 #define RPMSG_MASTER deprecated_rpmsg_master()
101 static inline unsigned int
118 static inline uint32_t
126 uint32_t offset,
void *dst,
int length)
133 uint32_t offset,
void *dst,
int length)
140 int flags,
unsigned int nvqs,
183 struct metal_io_region *shm_io,
221 struct metal_io_region *shm_io,
245 void *shbuf,
size_t size);
280 #if defined __cplusplus
void(* rpmsg_ns_bind_cb)(struct rpmsg_device *rdev, const char *name, uint32_t dest)
Definition: rpmsg.h:54
static void rpmsg_virtio_read_config(struct rpmsg_virtio_device *rvdev, uint32_t offset, void *dst, int length)
Definition: rpmsg_virtio.h:125
int rpmsg_init_vdev_with_config(struct rpmsg_virtio_device *rvdev, struct virtio_device *vdev, rpmsg_ns_bind_cb ns_bind_cb, struct metal_io_region *shm_io, struct rpmsg_virtio_shm_pool *shpool, const struct rpmsg_virtio_config *config)
Initialize rpmsg virtio device with config.
Definition: rpmsg_virtio.c:695
static uint32_t rpmsg_virtio_get_features(struct rpmsg_virtio_device *rvdev)
Definition: rpmsg_virtio.h:119
static __deprecated int deprecated_rpmsg_master(void)
Definition: rpmsg_virtio.h:89
metal_weak void * rpmsg_virtio_shm_pool_get_buffer(struct rpmsg_virtio_shm_pool *shpool, size_t size)
Get buffer in the shared memory pool.
Definition: rpmsg_virtio.c:56
#define RPMSG_REMOTE
Definition: rpmsg_virtio.h:83
static struct rpmsg_device * rpmsg_virtio_get_rpmsg_device(struct rpmsg_virtio_device *rvdev)
Get RPMsg device from RPMsg virtio device.
Definition: rpmsg_virtio.h:255
static int rpmsg_virtio_create_virtqueues(struct rpmsg_virtio_device *rvdev, int flags, unsigned int nvqs, const char *names[], vq_callback *callbacks)
Definition: rpmsg_virtio.h:139
static unsigned int rpmsg_virtio_get_role(struct rpmsg_virtio_device *rvdev)
Definition: rpmsg_virtio.h:102
static uint8_t rpmsg_virtio_get_status(struct rpmsg_virtio_device *rvdev)
Definition: rpmsg_virtio.h:113
void rpmsg_virtio_init_shm_pool(struct rpmsg_virtio_shm_pool *shpool, void *shbuf, size_t size)
Initialize default shared buffers pool.
Definition: rpmsg_virtio.c:70
void rpmsg_deinit_vdev(struct rpmsg_virtio_device *rvdev)
Deinitialize rpmsg virtio device.
Definition: rpmsg_virtio.c:860
int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, struct virtio_device *vdev, rpmsg_ns_bind_cb ns_bind_cb, struct metal_io_region *shm_io, struct rpmsg_virtio_shm_pool *shpool)
Initialize rpmsg virtio device.
Definition: rpmsg_virtio.c:685
#define RPMSG_HOST
Definition: rpmsg_virtio.h:84
static __deprecated int deprecated_rpmsg_slave(void)
Definition: rpmsg_virtio.h:95
static void rpmsg_virtio_set_status(struct rpmsg_virtio_device *rvdev, uint8_t status)
Definition: rpmsg_virtio.h:107
int rpmsg_virtio_get_buffer_size(struct rpmsg_device *rdev)
Get rpmsg virtio buffer size.
Definition: rpmsg_virtio.c:671
static void rpmsg_virtio_write_config(struct rpmsg_virtio_device *rvdev, uint32_t offset, void *dst, int length)
Definition: rpmsg_virtio.h:132
Definition: rpmsg_virtio.h:54
bool split_shpool
Definition: rpmsg_virtio.h:57
uint32_t h2r_buf_size
Definition: rpmsg_virtio.h:55
uint32_t r2h_buf_size
Definition: rpmsg_virtio.h:56
Definition: rpmsg_virtio.h:72
struct virtio_device * vdev
Definition: rpmsg_virtio.h:75
struct metal_io_region * shbuf_io
Definition: rpmsg_virtio.h:78
struct rpmsg_virtio_shm_pool * shpool
Definition: rpmsg_virtio.h:79
struct virtqueue * rvq
Definition: rpmsg_virtio.h:76
struct virtqueue * svq
Definition: rpmsg_virtio.h:77
struct rpmsg_device rdev
Definition: rpmsg_virtio.h:73
struct rpmsg_virtio_config config
Definition: rpmsg_virtio.h:74
struct metal_list reclaimer
Definition: rpmsg_virtio.h:80
Definition: rpmsg_virtio.h:38
size_t size
Definition: rpmsg_virtio.h:41
size_t avail
Definition: rpmsg_virtio.h:40
void * base
Definition: rpmsg_virtio.h:39
unsigned int role
Definition: virtio.h:124
const struct virtio_dispatch * func
Definition: virtio.h:126
void(* read_config)(struct virtio_device *dev, uint32_t offset, void *dst, int length)
Definition: virtio.h:159
uint8_t(* get_status)(struct virtio_device *dev)
Definition: virtio.h:147
uint32_t(* get_features)(struct virtio_device *dev)
Definition: virtio.h:149
void(* set_status)(struct virtio_device *dev, uint8_t status)
Definition: virtio.h:148
void(* write_config)(struct virtio_device *dev, uint32_t offset, void *src, int length)
Definition: virtio.h:161
Definition: virtqueue.h:60
int virtio_create_virtqueues(struct virtio_device *vdev, unsigned int flags, unsigned int nvqs, const char *names[], vq_callback callbacks[])
Definition: virtio.c:86
void(* vq_callback)(struct virtqueue *)
Definition: virtqueue.h:112