OpenAMP Library
Functions | Variables
remoteproc_virtio.c File Reference
#include <openamp/remoteproc.h>
#include <openamp/remoteproc_virtio.h>
#include <openamp/virtqueue.h>
#include <metal/cpu.h>
#include <metal/utilities.h>
#include <metal/alloc.h>

Functions

static void rproc_virtio_virtqueue_notify (struct virtqueue *vq)
 
static unsigned char rproc_virtio_get_status (struct virtio_device *vdev)
 
static void rproc_virtio_set_status (struct virtio_device *vdev, unsigned char status)
 
static uint32_t rproc_virtio_get_dfeatures (struct virtio_device *vdev)
 
static uint32_t rproc_virtio_get_features (struct virtio_device *vdev)
 
static void rproc_virtio_set_features (struct virtio_device *vdev, uint32_t features)
 
static uint32_t rproc_virtio_negotiate_features (struct virtio_device *vdev, uint32_t features)
 
static void rproc_virtio_read_config (struct virtio_device *vdev, uint32_t offset, void *dst, int length)
 
static void rproc_virtio_write_config (struct virtio_device *vdev, uint32_t offset, void *src, int length)
 
static void rproc_virtio_reset_device (struct virtio_device *vdev)
 
struct virtio_devicerproc_virtio_create_vdev (unsigned int role, unsigned int notifyid, void *rsc, struct metal_io_region *rsc_io, void *priv, rpvdev_notify_func notify, virtio_dev_reset_cb rst_cb)
 Create rproc virtio vdev. More...
 
void rproc_virtio_remove_vdev (struct virtio_device *vdev)
 Remove rproc virtio vdev. More...
 
int rproc_virtio_init_vring (struct virtio_device *vdev, unsigned int index, unsigned int notifyid, void *va, struct metal_io_region *io, unsigned int num_descs, unsigned int align)
 Initialize rproc virtio vring. More...
 
int rproc_virtio_notified (struct virtio_device *vdev, uint32_t notifyid)
 remoteproc virtio is got notified More...
 
void rproc_virtio_wait_remote_ready (struct virtio_device *vdev)
 Blocking function, waiting for the remote core is ready to start communications. More...
 

Variables

static const struct virtio_dispatch remoteproc_virtio_dispatch_funcs
 

Function Documentation

◆ rproc_virtio_create_vdev()

struct virtio_device* rproc_virtio_create_vdev ( unsigned int  role,
unsigned int  notifyid,
void *  rsc,
struct metal_io_region *  rsc_io,
void *  priv,
rpvdev_notify_func  notify,
virtio_dev_reset_cb  rst_cb 
)

Create rproc virtio vdev.

Parameters
roleVIRTIO_DEV_DRIVER or VIRTIO_DEV_DEVICE
notifyidVirtio device notification id
rscPointer to the virtio device resource
rsc_ioPointer to the virtio device resource I/O region
privPointer to the private data
notifyvdev and virtqueue notification function
rst_cbReset virtio device callback
Returns
pointer to the created virtio device for success, NULL for failure.

◆ rproc_virtio_get_dfeatures()

static uint32_t rproc_virtio_get_dfeatures ( struct virtio_device vdev)
static

◆ rproc_virtio_get_features()

static uint32_t rproc_virtio_get_features ( struct virtio_device vdev)
static

◆ rproc_virtio_get_status()

static unsigned char rproc_virtio_get_status ( struct virtio_device vdev)
static

◆ rproc_virtio_init_vring()

int rproc_virtio_init_vring ( struct virtio_device vdev,
unsigned int  index,
unsigned int  notifyid,
void *  va,
struct metal_io_region *  io,
unsigned int  num_descs,
unsigned int  align 
)

Initialize rproc virtio vring.

Parameters
vdevPointer to the virtio device
indexvring index in the virtio device
notifyidremoteproc vring notification id
vavring virtual address
ioPointer to vring I/O region
num_descsNumber of descriptors
alignvring alignment
Returns
0 for success, negative value for failure.

◆ rproc_virtio_negotiate_features()

static uint32_t rproc_virtio_negotiate_features ( struct virtio_device vdev,
uint32_t  features 
)
static

◆ rproc_virtio_notified()

int rproc_virtio_notified ( struct virtio_device vdev,
uint32_t  notifyid 
)

remoteproc virtio is got notified

Parameters
vdevPointer to the virtio device
notifyidNotify id
Returns
0 for successful, negative value for failure

◆ rproc_virtio_read_config()

static void rproc_virtio_read_config ( struct virtio_device vdev,
uint32_t  offset,
void *  dst,
int  length 
)
static

◆ rproc_virtio_remove_vdev()

void rproc_virtio_remove_vdev ( struct virtio_device vdev)

Remove rproc virtio vdev.

Parameters
vdevPointer to the virtio device

◆ rproc_virtio_reset_device()

static void rproc_virtio_reset_device ( struct virtio_device vdev)
static

◆ rproc_virtio_set_features()

static void rproc_virtio_set_features ( struct virtio_device vdev,
uint32_t  features 
)
static

◆ rproc_virtio_set_status()

static void rproc_virtio_set_status ( struct virtio_device vdev,
unsigned char  status 
)
static

◆ rproc_virtio_virtqueue_notify()

static void rproc_virtio_virtqueue_notify ( struct virtqueue vq)
static

◆ rproc_virtio_wait_remote_ready()

void rproc_virtio_wait_remote_ready ( struct virtio_device vdev)

Blocking function, waiting for the remote core is ready to start communications.

Parameters
vdevPointer to the virtio device
Returns
true when remote processor is ready.

◆ rproc_virtio_write_config()

static void rproc_virtio_write_config ( struct virtio_device vdev,
uint32_t  offset,
void *  src,
int  length 
)
static

Variable Documentation

◆ remoteproc_virtio_dispatch_funcs

const struct virtio_dispatch remoteproc_virtio_dispatch_funcs
static
Initial value:
= {
.get_status = rproc_virtio_get_status,
.get_features = rproc_virtio_get_features,
.read_config = rproc_virtio_read_config,
.set_status = rproc_virtio_set_status,
.set_features = rproc_virtio_set_features,
.negotiate_features = rproc_virtio_negotiate_features,
.write_config = rproc_virtio_write_config,
.reset_device = rproc_virtio_reset_device,
}
static void rproc_virtio_virtqueue_notify(struct virtqueue *vq)
Definition: remoteproc_virtio.c:19
static void rproc_virtio_set_status(struct virtio_device *vdev, unsigned char status)
Definition: remoteproc_virtio.c:49
static void rproc_virtio_read_config(struct virtio_device *vdev, uint32_t offset, void *dst, int length)
Definition: remoteproc_virtio.c:128
static void rproc_virtio_set_features(struct virtio_device *vdev, uint32_t features)
Definition: remoteproc_virtio.c:101
static unsigned char rproc_virtio_get_status(struct virtio_device *vdev)
Definition: remoteproc_virtio.c:33
static uint32_t rproc_virtio_negotiate_features(struct virtio_device *vdev, uint32_t features)
Definition: remoteproc_virtio.c:117
static void rproc_virtio_write_config(struct virtio_device *vdev, uint32_t offset, void *src, int length)
Definition: remoteproc_virtio.c:148
static uint32_t rproc_virtio_get_features(struct virtio_device *vdev)
Definition: remoteproc_virtio.c:82
static void rproc_virtio_reset_device(struct virtio_device *vdev)
Definition: remoteproc_virtio.c:169