]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[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
ac0a286f 22#define VIRTIO_PCI_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'P', 'C', 'I')\r
3bb56c06
OM
23\r
24typedef struct {\r
ac0a286f
MK
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
3bb56c06
OM
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
3bb56c06
OM
35EFI_STATUS\r
36EFIAPI\r
37VirtioPciIoRead (\r
ac0a286f
MK
38 IN VIRTIO_PCI_DEVICE *Dev,\r
39 IN UINTN FieldOffset,\r
40 IN UINTN FieldSize,\r
41 IN UINTN BufferSize,\r
42 OUT VOID *Buffer\r
3bb56c06
OM
43 );\r
44\r
45EFI_STATUS\r
46EFIAPI\r
47VirtioPciIoWrite (\r
ac0a286f
MK
48 IN VIRTIO_PCI_DEVICE *Dev,\r
49 IN UINTN FieldOffset,\r
50 IN UINTN FieldSize,\r
51 IN UINT64 Value\r
3bb56c06
OM
52 );\r
53\r
54/********************************************\r
55 * PCI Functions for VIRTIO_DEVICE_PROTOCOL\r
56 *******************************************/\r
57EFI_STATUS\r
58EFIAPI\r
59VirtioPciDeviceRead (\r
ac0a286f
MK
60 IN VIRTIO_DEVICE_PROTOCOL *This,\r
61 IN UINTN FieldOffset,\r
62 IN UINTN FieldSize,\r
63 IN UINTN BufferSize,\r
64 OUT VOID *Buffer\r
3bb56c06
OM
65 );\r
66\r
67EFI_STATUS\r
68EFIAPI\r
69VirtioPciDeviceWrite (\r
ac0a286f
MK
70 IN VIRTIO_DEVICE_PROTOCOL *This,\r
71 IN UINTN FieldOffset,\r
72 IN UINTN FieldSize,\r
73 IN UINT64 Value\r
3bb56c06
OM
74 );\r
75\r
76EFI_STATUS\r
77EFIAPI\r
78VirtioPciGetDeviceFeatures (\r
ac0a286f
MK
79 IN VIRTIO_DEVICE_PROTOCOL *This,\r
80 OUT UINT64 *DeviceFeatures\r
3bb56c06
OM
81 );\r
82\r
3bb56c06
OM
83EFI_STATUS\r
84EFIAPI\r
85VirtioPciGetQueueSize (\r
86 IN VIRTIO_DEVICE_PROTOCOL *This,\r
87 OUT UINT16 *QueueNumMax\r
88 );\r
89\r
90EFI_STATUS\r
91EFIAPI\r
92VirtioPciSetQueueAlignment (\r
ac0a286f
MK
93 IN VIRTIO_DEVICE_PROTOCOL *This,\r
94 IN UINT32 Alignment\r
3bb56c06
OM
95 );\r
96\r
97EFI_STATUS\r
98EFIAPI\r
99VirtioPciSetPageSize (\r
ac0a286f
MK
100 IN VIRTIO_DEVICE_PROTOCOL *This,\r
101 IN UINT32 PageSize\r
3bb56c06
OM
102 );\r
103\r
104EFI_STATUS\r
105EFIAPI\r
106VirtioPciGetDeviceStatus (\r
107 IN VIRTIO_DEVICE_PROTOCOL *This,\r
108 OUT UINT8 *DeviceStatus\r
109 );\r
110\r
111EFI_STATUS\r
112EFIAPI\r
113VirtioPciSetGuestFeatures (\r
114 IN VIRTIO_DEVICE_PROTOCOL *This,\r
ac0a286f 115 IN UINT64 Features\r
3bb56c06
OM
116 );\r
117\r
118EFI_STATUS\r
119EFIAPI\r
120VirtioPciSetQueueAddress (\r
07af4eee 121 IN VIRTIO_DEVICE_PROTOCOL *This,\r
53a4c604
BS
122 IN VRING *Ring,\r
123 IN UINT64 RingBaseShift\r
3bb56c06
OM
124 );\r
125\r
126EFI_STATUS\r
127EFIAPI\r
128VirtioPciSetQueueSel (\r
ac0a286f
MK
129 IN VIRTIO_DEVICE_PROTOCOL *This,\r
130 IN UINT16 Sel\r
3bb56c06
OM
131 );\r
132\r
133EFI_STATUS\r
134EFIAPI\r
135VirtioPciSetQueueNotify (\r
ac0a286f
MK
136 IN VIRTIO_DEVICE_PROTOCOL *This,\r
137 IN UINT16 Index\r
3bb56c06
OM
138 );\r
139\r
140EFI_STATUS\r
141EFIAPI\r
142VirtioPciSetQueueSize (\r
ac0a286f
MK
143 IN VIRTIO_DEVICE_PROTOCOL *This,\r
144 IN UINT16 Size\r
3bb56c06
OM
145 );\r
146\r
147EFI_STATUS\r
148EFIAPI\r
149VirtioPciSetDeviceStatus (\r
ac0a286f
MK
150 IN VIRTIO_DEVICE_PROTOCOL *This,\r
151 IN UINT8 DeviceStatus\r
3bb56c06
OM
152 );\r
153\r
4157b841
BS
154EFI_STATUS\r
155EFIAPI\r
156VirtioPciAllocateSharedPages (\r
ac0a286f
MK
157 IN VIRTIO_DEVICE_PROTOCOL *This,\r
158 IN UINTN NumPages,\r
159 OUT VOID **HostAddress\r
4157b841
BS
160 );\r
161\r
162VOID\r
163EFIAPI\r
164VirtioPciFreeSharedPages (\r
ac0a286f
MK
165 IN VIRTIO_DEVICE_PROTOCOL *This,\r
166 IN UINTN NumPages,\r
167 IN VOID *HostAddress\r
4157b841
BS
168 );\r
169\r
170EFI_STATUS\r
171EFIAPI\r
172VirtioPciMapSharedBuffer (\r
ac0a286f
MK
173 IN VIRTIO_DEVICE_PROTOCOL *This,\r
174 IN VIRTIO_MAP_OPERATION Operation,\r
175 IN VOID *HostAddress,\r
176 IN OUT UINTN *NumberOfBytes,\r
177 OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,\r
178 OUT VOID **Mapping\r
4157b841
BS
179 );\r
180\r
181EFI_STATUS\r
182EFIAPI\r
183VirtioPciUnmapSharedBuffer (\r
ac0a286f
MK
184 IN VIRTIO_DEVICE_PROTOCOL *This,\r
185 IN VOID *Mapping\r
4157b841 186 );\r
ac0a286f 187\r
3bb56c06 188#endif // _VIRTIO_PCI_DEVICE_DXE_H_\r