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