3 Internal definitions for the VirtIo PCI Device driver
5 Copyright (C) 2013, ARM Ltd
6 Copyright (c) 2017, AMD Inc, All rights reserved.<BR>
8 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #ifndef _VIRTIO_PCI_DEVICE_DXE_H_
13 #define _VIRTIO_PCI_DEVICE_DXE_H_
15 #include <Protocol/ComponentName.h>
16 #include <Protocol/DriverBinding.h>
17 #include <Protocol/PciIo.h>
18 #include <Protocol/VirtioDevice.h>
20 #include <IndustryStandard/Virtio.h>
22 #define VIRTIO_PCI_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'P', 'C', 'I')
26 VIRTIO_DEVICE_PROTOCOL VirtioDevice
;
27 EFI_PCI_IO_PROTOCOL
*PciIo
;
28 UINT64 OriginalPciAttributes
;
29 UINT32 DeviceSpecificConfigurationOffset
;
32 #define VIRTIO_PCI_DEVICE_FROM_VIRTIO_DEVICE(Device) \
33 CR (Device, VIRTIO_PCI_DEVICE, VirtioDevice, VIRTIO_PCI_DEVICE_SIGNATURE)
38 IN VIRTIO_PCI_DEVICE
*Dev
,
48 IN VIRTIO_PCI_DEVICE
*Dev
,
54 /********************************************
55 * PCI Functions for VIRTIO_DEVICE_PROTOCOL
56 *******************************************/
60 IN VIRTIO_DEVICE_PROTOCOL
*This
,
69 VirtioPciDeviceWrite (
70 IN VIRTIO_DEVICE_PROTOCOL
*This
,
78 VirtioPciGetDeviceFeatures (
79 IN VIRTIO_DEVICE_PROTOCOL
*This
,
80 OUT UINT64
*DeviceFeatures
85 VirtioPciGetQueueSize (
86 IN VIRTIO_DEVICE_PROTOCOL
*This
,
87 OUT UINT16
*QueueNumMax
92 VirtioPciSetQueueAlignment (
93 IN VIRTIO_DEVICE_PROTOCOL
*This
,
99 VirtioPciSetPageSize (
100 IN VIRTIO_DEVICE_PROTOCOL
*This
,
106 VirtioPciGetDeviceStatus (
107 IN VIRTIO_DEVICE_PROTOCOL
*This
,
108 OUT UINT8
*DeviceStatus
113 VirtioPciSetGuestFeatures (
114 IN VIRTIO_DEVICE_PROTOCOL
*This
,
120 VirtioPciSetQueueAddress (
121 IN VIRTIO_DEVICE_PROTOCOL
*This
,
123 IN UINT64 RingBaseShift
128 VirtioPciSetQueueSel (
129 IN VIRTIO_DEVICE_PROTOCOL
*This
,
135 VirtioPciSetQueueNotify (
136 IN VIRTIO_DEVICE_PROTOCOL
*This
,
142 VirtioPciSetQueueSize (
143 IN VIRTIO_DEVICE_PROTOCOL
*This
,
149 VirtioPciSetDeviceStatus (
150 IN VIRTIO_DEVICE_PROTOCOL
*This
,
151 IN UINT8 DeviceStatus
156 VirtioPciAllocateSharedPages (
157 IN VIRTIO_DEVICE_PROTOCOL
*This
,
159 OUT VOID
**HostAddress
164 VirtioPciFreeSharedPages (
165 IN VIRTIO_DEVICE_PROTOCOL
*This
,
172 VirtioPciMapSharedBuffer (
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
,
183 VirtioPciUnmapSharedBuffer (
184 IN VIRTIO_DEVICE_PROTOCOL
*This
,
188 #endif // _VIRTIO_PCI_DEVICE_DXE_H_