VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h

Last change on this file was 99404, checked in by vboxsync, 2 years ago

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

  • Property svn:eol-style set to native
File size: 3.9 KB
Line 
1/** @file
2
3 Internal definitions for the VirtIo MMIO Device driver
4
5 Copyright (C) 2013, ARM Ltd
6 Copyright (C) 2017, AMD Inc. All rights reserved.<BR>
7
8 SPDX-License-Identifier: BSD-2-Clause-Patent
9
10**/
11
12#ifndef _VIRTIO_MMIO_DEVICE_INTERNAL_H_
13#define _VIRTIO_MMIO_DEVICE_INTERNAL_H_
14
15#include <Protocol/VirtioDevice.h>
16
17#include <IndustryStandard/Virtio.h>
18
19#include <Library/DebugLib.h>
20#include <Library/IoLib.h>
21#include <Library/UefiLib.h>
22#include <Library/VirtioMmioDeviceLib.h>
23#include <Library/MemoryAllocationLib.h>
24
25#define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O')
26#define VIRTIO_MMIO_DEVICE_VERSION_0_95 1
27#define VIRTIO_MMIO_DEVICE_VERSION_1_00 2
28
29typedef struct {
30 UINT32 Signature;
31 UINT32 Version;
32 UINT16 QueueNum;
33 VIRTIO_DEVICE_PROTOCOL VirtioDevice;
34 PHYSICAL_ADDRESS BaseAddress;
35} VIRTIO_MMIO_DEVICE;
36
37#define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \
38 CR (Device, VIRTIO_MMIO_DEVICE, VirtioDevice, VIRTIO_MMIO_DEVICE_SIGNATURE)
39
40#define VIRTIO_CFG_WRITE(Device, Offset, Val) \
41 (MmioWrite32 (Device->BaseAddress + (Offset), Val))
42#define VIRTIO_CFG_READ(Device, Offset) \
43 (MmioRead32 (Device->BaseAddress + (Offset)))
44
45EFI_STATUS
46EFIAPI
47VirtioMmioDeviceRead (
48 IN VIRTIO_DEVICE_PROTOCOL *This,
49 IN UINTN FieldOFfset,
50 IN UINTN FieldSize,
51 IN UINTN BufferSize,
52 OUT VOID *Buffer
53 );
54
55EFI_STATUS
56EFIAPI
57VirtioMmioDeviceWrite (
58 IN VIRTIO_DEVICE_PROTOCOL *This,
59 IN UINTN FieldOffset,
60 IN UINTN FieldSize,
61 IN UINT64 Value
62 );
63
64EFI_STATUS
65EFIAPI
66VirtioMmioGetDeviceFeatures (
67 IN VIRTIO_DEVICE_PROTOCOL *This,
68 OUT UINT64 *DeviceFeatures
69 );
70
71EFI_STATUS
72EFIAPI
73VirtioMmioGetQueueSize (
74 IN VIRTIO_DEVICE_PROTOCOL *This,
75 OUT UINT16 *QueueNumMax
76 );
77
78EFI_STATUS
79EFIAPI
80VirtioMmioGetDeviceStatus (
81 IN VIRTIO_DEVICE_PROTOCOL *This,
82 OUT UINT8 *DeviceStatus
83 );
84
85EFI_STATUS
86EFIAPI
87VirtioMmioSetQueueSize (
88 IN VIRTIO_DEVICE_PROTOCOL *This,
89 IN UINT16 QueueSize
90 );
91
92EFI_STATUS
93EFIAPI
94VirtioMmioSetDeviceStatus (
95 IN VIRTIO_DEVICE_PROTOCOL *This,
96 IN UINT8 DeviceStatus
97 );
98
99EFI_STATUS
100EFIAPI
101VirtioMmioSetQueueNotify (
102 IN VIRTIO_DEVICE_PROTOCOL *This,
103 IN UINT16 QueueNotify
104 );
105
106EFI_STATUS
107EFIAPI
108VirtioMmioSetQueueSel (
109 IN VIRTIO_DEVICE_PROTOCOL *This,
110 IN UINT16 Sel
111 );
112
113EFI_STATUS
114EFIAPI
115VirtioMmioSetQueueAddress (
116 IN VIRTIO_DEVICE_PROTOCOL *This,
117 IN VRING *Ring,
118 IN UINT64 RingBaseShift
119 );
120
121EFI_STATUS
122EFIAPI
123VirtioMmioSetQueueAlignment (
124 IN VIRTIO_DEVICE_PROTOCOL *This,
125 IN UINT32 Alignment
126 );
127
128EFI_STATUS
129EFIAPI
130VirtioMmioSetPageSize (
131 IN VIRTIO_DEVICE_PROTOCOL *This,
132 IN UINT32 PageSize
133 );
134
135EFI_STATUS
136EFIAPI
137VirtioMmioSetGuestFeatures (
138 IN VIRTIO_DEVICE_PROTOCOL *This,
139 IN UINT64 Features
140 );
141
142EFI_STATUS
143EFIAPI
144VirtioMmioAllocateSharedPages (
145 IN VIRTIO_DEVICE_PROTOCOL *This,
146 IN UINTN NumPages,
147 OUT VOID **HostAddress
148 );
149
150VOID
151EFIAPI
152VirtioMmioFreeSharedPages (
153 IN VIRTIO_DEVICE_PROTOCOL *This,
154 IN UINTN NumPages,
155 IN VOID *HostAddress
156 );
157
158EFI_STATUS
159EFIAPI
160VirtioMmioMapSharedBuffer (
161 IN VIRTIO_DEVICE_PROTOCOL *This,
162 IN VIRTIO_MAP_OPERATION Operation,
163 IN VOID *HostAddress,
164 IN OUT UINTN *NumberOfBytes,
165 OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
166 OUT VOID **Mapping
167 );
168
169EFI_STATUS
170EFIAPI
171VirtioMmioUnmapSharedBuffer (
172 IN VIRTIO_DEVICE_PROTOCOL *This,
173 IN VOID *Mapping
174 );
175
176#endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette