]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h
OvmfPkg/VirtioLib: take VirtIo instance in VirtioRingInit/VirtioRingUninit
[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
OM
7\r
8 This program and the accompanying materials are licensed and made available\r
9 under the terms and conditions of the BSD License which accompanies this\r
10 distribution. The full text of the license may be found at\r
11 http://opensource.org/licenses/bsd-license.php\r
12\r
13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
14 WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
15\r
16**/\r
17\r
18#ifndef _VIRTIO_PCI_DEVICE_DXE_H_\r
19#define _VIRTIO_PCI_DEVICE_DXE_H_\r
20\r
21#include <Protocol/ComponentName.h>\r
22#include <Protocol/DriverBinding.h>\r
23#include <Protocol/PciIo.h>\r
24#include <Protocol/VirtioDevice.h>\r
25\r
26#include <IndustryStandard/Virtio.h>\r
27\r
28#define VIRTIO_PCI_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'P', 'C', 'I')\r
29\r
30typedef struct {\r
31 UINT32 Signature;\r
32 VIRTIO_DEVICE_PROTOCOL VirtioDevice;\r
33 EFI_PCI_IO_PROTOCOL *PciIo;\r
34 UINT64 OriginalPciAttributes;\r
35 UINT32 DeviceSpecificConfigurationOffset;\r
36} VIRTIO_PCI_DEVICE;\r
37\r
38#define VIRTIO_PCI_DEVICE_FROM_VIRTIO_DEVICE(Device) \\r
39 CR (Device, VIRTIO_PCI_DEVICE, VirtioDevice, VIRTIO_PCI_DEVICE_SIGNATURE)\r
40\r
41\r
42EFI_STATUS\r
43EFIAPI\r
44VirtioPciIoRead (\r
45 IN VIRTIO_PCI_DEVICE *Dev,\r
46 IN UINTN FieldOffset,\r
47 IN UINTN FieldSize,\r
48 IN UINTN BufferSize,\r
49 OUT VOID *Buffer\r
50 );\r
51\r
52EFI_STATUS\r
53EFIAPI\r
54VirtioPciIoWrite (\r
55 IN VIRTIO_PCI_DEVICE *Dev,\r
56 IN UINTN FieldOffset,\r
57 IN UINTN FieldSize,\r
58 IN UINT64 Value\r
59 );\r
60\r
61/********************************************\r
62 * PCI Functions for VIRTIO_DEVICE_PROTOCOL\r
63 *******************************************/\r
64EFI_STATUS\r
65EFIAPI\r
66VirtioPciDeviceRead (\r
67 IN VIRTIO_DEVICE_PROTOCOL *This,\r
68 IN UINTN FieldOffset,\r
69 IN UINTN FieldSize,\r
70 IN UINTN BufferSize,\r
71 OUT VOID *Buffer\r
72 );\r
73\r
74EFI_STATUS\r
75EFIAPI\r
76VirtioPciDeviceWrite (\r
77 IN VIRTIO_DEVICE_PROTOCOL *This,\r
78 IN UINTN FieldOffset,\r
79 IN UINTN FieldSize,\r
80 IN UINT64 Value\r
81 );\r
82\r
83EFI_STATUS\r
84EFIAPI\r
85VirtioPciGetDeviceFeatures (\r
86 IN VIRTIO_DEVICE_PROTOCOL *This,\r
bc8fde6f 87 OUT UINT64 *DeviceFeatures\r
3bb56c06
OM
88 );\r
89\r
3bb56c06
OM
90EFI_STATUS\r
91EFIAPI\r
92VirtioPciGetQueueSize (\r
93 IN VIRTIO_DEVICE_PROTOCOL *This,\r
94 OUT UINT16 *QueueNumMax\r
95 );\r
96\r
97EFI_STATUS\r
98EFIAPI\r
99VirtioPciSetQueueAlignment (\r
e5251fec
BS
100 IN VIRTIO_DEVICE_PROTOCOL *This,\r
101 IN UINT32 Alignment\r
3bb56c06
OM
102 );\r
103\r
104EFI_STATUS\r
105EFIAPI\r
106VirtioPciSetPageSize (\r
e5251fec
BS
107 IN VIRTIO_DEVICE_PROTOCOL *This,\r
108 IN UINT32 PageSize\r
3bb56c06
OM
109 );\r
110\r
111EFI_STATUS\r
112EFIAPI\r
113VirtioPciGetDeviceStatus (\r
114 IN VIRTIO_DEVICE_PROTOCOL *This,\r
115 OUT UINT8 *DeviceStatus\r
116 );\r
117\r
118EFI_STATUS\r
119EFIAPI\r
120VirtioPciSetGuestFeatures (\r
121 IN VIRTIO_DEVICE_PROTOCOL *This,\r
bc8fde6f 122 IN UINT64 Features\r
3bb56c06
OM
123 );\r
124\r
125EFI_STATUS\r
126EFIAPI\r
127VirtioPciSetQueueAddress (\r
07af4eee
LE
128 IN VIRTIO_DEVICE_PROTOCOL *This,\r
129 IN VRING *Ring\r
3bb56c06
OM
130 );\r
131\r
132EFI_STATUS\r
133EFIAPI\r
134VirtioPciSetQueueSel (\r
e5251fec
BS
135 IN VIRTIO_DEVICE_PROTOCOL *This,\r
136 IN UINT16 Sel\r
3bb56c06
OM
137 );\r
138\r
139EFI_STATUS\r
140EFIAPI\r
141VirtioPciSetQueueNotify (\r
e5251fec
BS
142 IN VIRTIO_DEVICE_PROTOCOL *This,\r
143 IN UINT16 Index\r
3bb56c06
OM
144 );\r
145\r
146EFI_STATUS\r
147EFIAPI\r
148VirtioPciSetQueueSize (\r
e5251fec
BS
149 IN VIRTIO_DEVICE_PROTOCOL *This,\r
150 IN UINT16 Size\r
3bb56c06
OM
151 );\r
152\r
153EFI_STATUS\r
154EFIAPI\r
155VirtioPciSetDeviceStatus (\r
e5251fec
BS
156 IN VIRTIO_DEVICE_PROTOCOL *This,\r
157 IN UINT8 DeviceStatus\r
3bb56c06
OM
158 );\r
159\r
4157b841
BS
160EFI_STATUS\r
161EFIAPI\r
162VirtioPciAllocateSharedPages (\r
163 IN VIRTIO_DEVICE_PROTOCOL *This,\r
164 IN UINTN NumPages,\r
165 OUT VOID **HostAddress\r
166 );\r
167\r
168VOID\r
169EFIAPI\r
170VirtioPciFreeSharedPages (\r
171 IN VIRTIO_DEVICE_PROTOCOL *This,\r
172 IN UINTN NumPages,\r
173 IN VOID *HostAddress\r
174 );\r
175\r
176EFI_STATUS\r
177EFIAPI\r
178VirtioPciMapSharedBuffer (\r
179 IN VIRTIO_DEVICE_PROTOCOL *This,\r
180 IN VIRTIO_MAP_OPERATION Operation,\r
181 IN VOID *HostAddress,\r
182 IN OUT UINTN *NumberOfBytes,\r
183 OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,\r
184 OUT VOID **Mapping\r
185 );\r
186\r
187EFI_STATUS\r
188EFIAPI\r
189VirtioPciUnmapSharedBuffer (\r
190 IN VIRTIO_DEVICE_PROTOCOL *This,\r
191 IN VOID *Mapping\r
192 );\r
3bb56c06 193#endif // _VIRTIO_PCI_DEVICE_DXE_H_\r