VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h@ 102466

Last change on this file since 102466 was 99404, checked in by vboxsync, 23 months ago

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette