#include <metal/device.h>#include <openamp/open_amp.h>#include <openamp/virtio.h>#include <openamp/virtio_mmio.h>#include <openamp/virtqueue.h>#include <stdbool.h>Typedefs | |
| typedef void(* | virtio_mmio_vq_callback) (void *) |
Functions | |
| void | virtio_mmio_isr (struct virtio_device *vdev) |
| VIRTIO MMIO interrupt service routine. | |
| static int | virtio_mmio_create_virtqueues (struct virtio_device *vdev, unsigned int flags, unsigned int nvqs, const char *names[], vq_callback callbacks[], void *callback_args[]) |
| static void | virtio_mmio_write32 (struct virtio_device *vdev, int offset, uint32_t value) |
| static uint32_t | virtio_mmio_read32 (struct virtio_device *vdev, int offset) |
| static uint8_t | virtio_mmio_read8 (struct virtio_device *vdev, int offset) |
| static void | virtio_mmio_set_status (struct virtio_device *vdev, uint8_t status) |
| static uint8_t | virtio_mmio_get_status (struct virtio_device *vdev) |
| static void | virtio_mmio_write_config (struct virtio_device *vdev, uint32_t offset, void *dst, int length) |
| static void | virtio_mmio_read_config (struct virtio_device *vdev, uint32_t offset, void *dst, int length) |
| static uint32_t | _virtio_mmio_get_features (struct virtio_device *vdev, int idx) |
| static uint32_t | virtio_mmio_get_features (struct virtio_device *vdev) |
| static void | _virtio_mmio_set_features (struct virtio_device *vdev, uint32_t features, int idx) |
| static void | virtio_mmio_set_features (struct virtio_device *vdev, uint32_t features) |
| static void | virtio_mmio_reset_device (struct virtio_device *vdev) |
| static void | virtio_mmio_notify (struct virtqueue *vq) |
| static int | virtio_mmio_get_metal_io (struct virtio_device *vdev, uintptr_t virt_mem_ptr, uintptr_t cfg_mem_ptr) |
| uint32_t | virtio_mmio_get_max_elem (struct virtio_device *vdev, int idx) |
| int | virtio_mmio_device_init (struct virtio_mmio_device *vmdev, uintptr_t virt_mem_ptr, uintptr_t cfg_mem_ptr, void *user_data) |
| VIRTIO MMIO device initialization. | |
| void | virtio_mmio_register_device (struct virtio_device *vdev, int vq_num, struct virtqueue **vqs) |
| Register a VIRTIO device with the VIRTIO stack. | |
| struct virtqueue * | virtio_mmio_setup_virtqueue (struct virtio_device *vdev, unsigned int idx, struct virtqueue *vq, void(*cb)(void *), void *cb_arg, const char *vq_name) |
| Setup a virtqueue structure. | |
Variables | |
| const struct virtio_dispatch | virtio_mmio_dispatch |
| typedef void(* virtio_mmio_vq_callback) (void *) |
|
static |
|
static |
|
static |
| int virtio_mmio_device_init | ( | struct virtio_mmio_device * | vmdev, |
| uintptr_t | virt_mem_ptr, | ||
| uintptr_t | cfg_mem_ptr, | ||
| void * | user_data ) |
VIRTIO MMIO device initialization.
| vmdev | Pointer to virtio_mmio_device structure. |
| virt_mem_ptr | Guest virtio (shared) memory base address (virtual). |
| cfg_mem_ptr | Virtio device configuration memory base address (virtual). |
| user_data | Pointer to custom user data. |
|
static |
| uint32_t virtio_mmio_get_max_elem | ( | struct virtio_device * | vdev, |
| int | idx ) |
|
static |
|
static |
| void virtio_mmio_isr | ( | struct virtio_device * | vdev | ) |
VIRTIO MMIO interrupt service routine.
| vdev | Pointer to virtio_device structure. |
|
static |
|
inlinestatic |
|
inlinestatic |
|
static |
| void virtio_mmio_register_device | ( | struct virtio_device * | vdev, |
| int | vq_num, | ||
| struct virtqueue ** | vqs ) |
Register a VIRTIO device with the VIRTIO stack.
| vdev | Pointer to device structure. |
| vq_num | Number of virtqueues the device uses. |
| vqs | Array of pointers to vthe virtqueues used by the device. |
|
static |
|
static |
|
inlinestatic |
| struct virtqueue * virtio_mmio_setup_virtqueue | ( | struct virtio_device * | vdev, |
| unsigned int | idx, | ||
| struct virtqueue * | vq, | ||
| void(* | cb )(void *), | ||
| void * | cb_arg, | ||
| const char * | vq_name ) |
Setup a virtqueue structure.
| vdev | Pointer to device structure. |
| idx | Index of the virtqueue. |
| vq | Pointer to virtqueue structure. |
| cb | Pointer to virtqueue callback. Can be NULL. |
| cb_arg | Argument for the virtqueue callback. |
| vq_name | Name of the virtqueue. |
|
inlinestatic |
|
static |
| const struct virtio_dispatch virtio_mmio_dispatch |