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)
39 IN VIRTIO_PCI_DEVICE
*Dev
,
49 IN VIRTIO_PCI_DEVICE
*Dev
,
55 /********************************************
56 * PCI Functions for VIRTIO_DEVICE_PROTOCOL
57 *******************************************/
61 IN VIRTIO_DEVICE_PROTOCOL
*This
,
70 VirtioPciDeviceWrite (
71 IN VIRTIO_DEVICE_PROTOCOL
*This
,
79 VirtioPciGetDeviceFeatures (
80 IN VIRTIO_DEVICE_PROTOCOL
*This
,
81 OUT UINT64
*DeviceFeatures
86 VirtioPciGetQueueSize (
87 IN VIRTIO_DEVICE_PROTOCOL
*This
,
88 OUT UINT16
*QueueNumMax
93 VirtioPciSetQueueAlignment (
94 IN VIRTIO_DEVICE_PROTOCOL
*This
,
100 VirtioPciSetPageSize (
101 IN VIRTIO_DEVICE_PROTOCOL
*This
,
107 VirtioPciGetDeviceStatus (
108 IN VIRTIO_DEVICE_PROTOCOL
*This
,
109 OUT UINT8
*DeviceStatus
114 VirtioPciSetGuestFeatures (
115 IN VIRTIO_DEVICE_PROTOCOL
*This
,
121 VirtioPciSetQueueAddress (
122 IN VIRTIO_DEVICE_PROTOCOL
*This
,
124 IN UINT64 RingBaseShift
129 VirtioPciSetQueueSel (
130 IN VIRTIO_DEVICE_PROTOCOL
*This
,
136 VirtioPciSetQueueNotify (
137 IN VIRTIO_DEVICE_PROTOCOL
*This
,
143 VirtioPciSetQueueSize (
144 IN VIRTIO_DEVICE_PROTOCOL
*This
,
150 VirtioPciSetDeviceStatus (
151 IN VIRTIO_DEVICE_PROTOCOL
*This
,
152 IN UINT8 DeviceStatus
157 VirtioPciAllocateSharedPages (
158 IN VIRTIO_DEVICE_PROTOCOL
*This
,
160 OUT VOID
**HostAddress
165 VirtioPciFreeSharedPages (
166 IN VIRTIO_DEVICE_PROTOCOL
*This
,
173 VirtioPciMapSharedBuffer (
174 IN VIRTIO_DEVICE_PROTOCOL
*This
,
175 IN VIRTIO_MAP_OPERATION Operation
,
176 IN VOID
*HostAddress
,
177 IN OUT UINTN
*NumberOfBytes
,
178 OUT EFI_PHYSICAL_ADDRESS
*DeviceAddress
,
184 VirtioPciUnmapSharedBuffer (
185 IN VIRTIO_DEVICE_PROTOCOL
*This
,
188 #endif // _VIRTIO_PCI_DEVICE_DXE_H_