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