Zephyr Project API  3.1.0
A Scalable Open Source RTOS
ipc_static_vrings.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021 Carlo Caione <ccaione@baylibre.com>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_IPC_SERVICE_IPC_STATIC_VRINGS_H_
8#define ZEPHYR_INCLUDE_IPC_SERVICE_IPC_STATIC_VRINGS_H_
9
11#include <openamp/open_amp.h>
12#include <metal/device.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
25#define VRING_COUNT (2)
26
28#define VRING_ALIGNMENT CONFIG_IPC_SERVICE_STATIC_VRINGS_ALIGNMENT
29
39typedef void (*ipc_notify_cb)(struct virtqueue *vq, void *priv);
40
47 struct virtio_device vdev;
48
50 metal_phys_addr_t shm_physmap[1];
51
53 struct metal_device shm_device;
54
57
60
63
65 size_t vring_size;
66
69
71 size_t shm_size;
72
74 struct metal_io_region *shm_io;
75
77 struct virtio_vring_info rvrings[VRING_COUNT];
78
80 struct virtqueue *vq[VRING_COUNT];
81
83 void *priv;
84
87};
88
101int ipc_static_vrings_init(struct ipc_static_vrings *vr, unsigned int role);
102
107#ifdef __cplusplus
108}
109#endif
110
111#endif /* ZEPHYR_INCLUDE_IPC_SERVICE_IPC_STATIC_VRINGS_H_ */
#define VRING_COUNT
Definition: ipc_static_vrings.h:25
int ipc_static_vrings_init(struct ipc_static_vrings *vr, unsigned int role)
Init the static VRINGs.
void(* ipc_notify_cb)(struct virtqueue *vq, void *priv)
Define the notify callback.
Definition: ipc_static_vrings.h:39
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:105
Static VRINGs structure.
Definition: ipc_static_vrings.h:45
ipc_notify_cb notify_cb
Definition: ipc_static_vrings.h:86
struct virtio_device vdev
Definition: ipc_static_vrings.h:47
struct metal_device shm_device
Definition: ipc_static_vrings.h:53
struct metal_io_region * shm_io
Definition: ipc_static_vrings.h:74
void * priv
Definition: ipc_static_vrings.h:83
uintptr_t rx_addr
Definition: ipc_static_vrings.h:62
uintptr_t tx_addr
Definition: ipc_static_vrings.h:59
size_t shm_size
Definition: ipc_static_vrings.h:71
struct virtqueue * vq[(2)]
Definition: ipc_static_vrings.h:80
size_t vring_size
Definition: ipc_static_vrings.h:65
struct virtio_vring_info rvrings[(2)]
Definition: ipc_static_vrings.h:77
uintptr_t shm_addr
Definition: ipc_static_vrings.h:68
metal_phys_addr_t shm_physmap[1]
Definition: ipc_static_vrings.h:50
uintptr_t status_reg_addr
Definition: ipc_static_vrings.h:56