]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h
MdeModulePkg: Add missing instances for build only
[mirror_edk2.git] / OvmfPkg / VirtioPciDeviceDxe / VirtioPciDevice.h
CommitLineData
3bb56c06
OM
1/** @file\r
2\r
3 Internal definitions for the VirtIo PCI Device driver\r
4\r
5 Copyright (C) 2013, ARM Ltd\r
4157b841 6 Copyright (c) 2017, AMD Inc, All rights reserved.<BR>\r
3bb56c06 7\r
b26f0cf9 8 SPDX-License-Identifier: BSD-2-Clause-Patent\r
3bb56c06
OM
9\r
10**/\r
11\r
12#ifndef _VIRTIO_PCI_DEVICE_DXE_H_\r
13#define _VIRTIO_PCI_DEVICE_DXE_H_\r
14\r
15#include <Protocol/ComponentName.h>\r
16#include <Protocol/DriverBinding.h>\r
17#include <Protocol/PciIo.h>\r
18#include <Protocol/VirtioDevice.h>\r
19\r
20#include <IndustryStandard/Virtio.h>\r
21\r
22#define VIRTIO_PCI_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'P', 'C', 'I')\r
23\r
24typedef struct {\r
25 UINT32 Signature;\r
26 VIRTIO_DEVICE_PROTOCOL VirtioDevice;\r
27 EFI_PCI_IO_PROTOCOL *PciIo;\r
28 UINT64 OriginalPciAttributes;\r
29 UINT32 DeviceSpecificConfigurationOffset;\r
30} VIRTIO_PCI_DEVICE;\r
31\r
32#define VIRTIO_PCI_DEVICE_FROM_VIRTIO_DEVICE(Device) \\r
33 CR (Device, VIRTIO_PCI_DEVICE, VirtioDevice, VIRTIO_PCI_DEVICE_SIGNATURE)\r
34\r
35\r
36EFI_STATUS\r
37EFIAPI\r
38VirtioPciIoRead (\r
39 IN VIRTIO_PCI_DEVICE *Dev,\r
40 IN UINTN FieldOffset,\r
41 IN UINTN FieldSize,\r
42 IN UINTN BufferSize,\r
43 OUT VOID *Buffer\r
44 );\r
45\r
46EFI_STATUS\r
47EFIAPI\r
48VirtioPciIoWrite (\r
49 IN VIRTIO_PCI_DEVICE *Dev,\r
50 IN UINTN FieldOffset,\r
51 IN UINTN FieldSize,\r
52 IN UINT64 Value\r
53 );\r
54\r
55/********************************************\r
56 * PCI Functions for VIRTIO_DEVICE_PROTOCOL\r
57 *******************************************/\r
58EFI_STATUS\r
59EFIAPI\r
60VirtioPciDeviceRead (\r
61 IN VIRTIO_DEVICE_PROTOCOL *This,\r
62 IN UINTN FieldOffset,\r
63 IN UINTN FieldSize,\r
64 IN UINTN BufferSize,\r
65 OUT VOID *Buffer\r
66 );\r
67\r
68EFI_STATUS\r
69EFIAPI\r
70VirtioPciDeviceWrite (\r
71 IN VIRTIO_DEVICE_PROTOCOL *This,\r
72 IN UINTN FieldOffset,\r
73 IN UINTN FieldSize,\r
74 IN UINT64 Value\r
75 );\r
76\r
77EFI_STATUS\r
78EFIAPI\r
79VirtioPciGetDeviceFeatures (\r
80 IN VIRTIO_DEVICE_PROTOCOL *This,\r
bc8fde6f 81 OUT UINT64 *DeviceFeatures\r
3bb56c06
OM
82 );\r
83\r
3bb56c06
OM
84EFI_STATUS\r
85EFIAPI\r
86VirtioPciGetQueueSize (\r
87 IN VIRTIO_DEVICE_PROTOCOL *This,\r
88 OUT UINT16 *QueueNumMax\r
89 );\r
90\r
91EFI_STATUS\r
92EFIAPI\r
93VirtioPciSetQueueAlignment (\r
e5251fec
BS
94 IN VIRTIO_DEVICE_PROTOCOL *This,\r
95 IN UINT32 Alignment\r
3bb56c06
OM
96 );\r
97\r
98EFI_STATUS\r
99EFIAPI\r
100VirtioPciSetPageSize (\r
e5251fec
BS
101 IN VIRTIO_DEVICE_PROTOCOL *This,\r
102 IN UINT32 PageSize\r
3bb56c06
OM
103 );\r
104\r
105EFI_STATUS\r
106EFIAPI\r
107VirtioPciGetDeviceStatus (\r
108 IN VIRTIO_DEVICE_PROTOCOL *This,\r
109 OUT UINT8 *DeviceStatus\r
110 );\r
111\r
112EFI_STATUS\r
113EFIAPI\r
114VirtioPciSetGuestFeatures (\r
115 IN VIRTIO_DEVICE_PROTOCOL *This,\r
bc8fde6f 116 IN UINT64 Features\r
3bb56c06
OM
117 );\r
118\r
119EFI_STATUS\r
120EFIAPI\r
121VirtioPciSetQueueAddress (\r
07af4eee 122 IN VIRTIO_DEVICE_PROTOCOL *This,\r
53a4c604
BS
123 IN VRING *Ring,\r
124 IN UINT64 RingBaseShift\r
3bb56c06
OM
125 );\r
126\r
127EFI_STATUS\r
128EFIAPI\r
129VirtioPciSetQueueSel (\r
e5251fec
BS
130 IN VIRTIO_DEVICE_PROTOCOL *This,\r
131 IN UINT16 Sel\r
3bb56c06
OM
132 );\r
133\r
134EFI_STATUS\r
135EFIAPI\r
136VirtioPciSetQueueNotify (\r
e5251fec
BS
137 IN VIRTIO_DEVICE_PROTOCOL *This,\r
138 IN UINT16 Index\r
3bb56c06
OM
139 );\r
140\r
141EFI_STATUS\r
142EFIAPI\r
143VirtioPciSetQueueSize (\r
e5251fec
BS
144 IN VIRTIO_DEVICE_PROTOCOL *This,\r
145 IN UINT16 Size\r
3bb56c06
OM
146 );\r
147\r
148EFI_STATUS\r
149EFIAPI\r
150VirtioPciSetDeviceStatus (\r
e5251fec
BS
151 IN VIRTIO_DEVICE_PROTOCOL *This,\r
152 IN UINT8 DeviceStatus\r
3bb56c06
OM
153 );\r
154\r
4157b841
BS
155EFI_STATUS\r
156EFIAPI\r
157VirtioPciAllocateSharedPages (\r
158 IN VIRTIO_DEVICE_PROTOCOL *This,\r
159 IN UINTN NumPages,\r
160 OUT VOID **HostAddress\r
161 );\r
162\r
163VOID\r
164EFIAPI\r
165VirtioPciFreeSharedPages (\r
166 IN VIRTIO_DEVICE_PROTOCOL *This,\r
167 IN UINTN NumPages,\r
168 IN VOID *HostAddress\r
169 );\r
170\r
171EFI_STATUS\r
172EFIAPI\r
173VirtioPciMapSharedBuffer (\r
174 IN VIRTIO_DEVICE_PROTOCOL *This,\r
175 IN VIRTIO_MAP_OPERATION Operation,\r
176 IN VOID *HostAddress,\r
177 IN OUT UINTN *NumberOfBytes,\r
178 OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,\r
179 OUT VOID **Mapping\r
180 );\r
181\r
182EFI_STATUS\r
183EFIAPI\r
184VirtioPciUnmapSharedBuffer (\r
185 IN VIRTIO_DEVICE_PROTOCOL *This,\r
186 IN VOID *Mapping\r
187 );\r
3bb56c06 188#endif // _VIRTIO_PCI_DEVICE_DXE_H_\r