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 This program and the accompanying materials are licensed and made available
9 under the terms and conditions of the BSD License which accompanies this
10 distribution. The full text of the license may be found at
11 http://opensource.org/licenses/bsd-license.php
13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
14 WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 #ifndef _VIRTIO_PCI_DEVICE_DXE_H_
19 #define _VIRTIO_PCI_DEVICE_DXE_H_
21 #include <Protocol/ComponentName.h>
22 #include <Protocol/DriverBinding.h>
23 #include <Protocol/PciIo.h>
24 #include <Protocol/VirtioDevice.h>
26 #include <IndustryStandard/Virtio.h>
28 #define VIRTIO_PCI_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'P', 'C', 'I')
32 VIRTIO_DEVICE_PROTOCOL VirtioDevice
;
33 EFI_PCI_IO_PROTOCOL
*PciIo
;
34 UINT64 OriginalPciAttributes
;
35 UINT32 DeviceSpecificConfigurationOffset
;
38 #define VIRTIO_PCI_DEVICE_FROM_VIRTIO_DEVICE(Device) \
39 CR (Device, VIRTIO_PCI_DEVICE, VirtioDevice, VIRTIO_PCI_DEVICE_SIGNATURE)
45 IN VIRTIO_PCI_DEVICE
*Dev
,
55 IN VIRTIO_PCI_DEVICE
*Dev
,
61 /********************************************
62 * PCI Functions for VIRTIO_DEVICE_PROTOCOL
63 *******************************************/
67 IN VIRTIO_DEVICE_PROTOCOL
*This
,
76 VirtioPciDeviceWrite (
77 IN VIRTIO_DEVICE_PROTOCOL
*This
,
85 VirtioPciGetDeviceFeatures (
86 IN VIRTIO_DEVICE_PROTOCOL
*This
,
87 OUT UINT64
*DeviceFeatures
92 VirtioPciGetQueueSize (
93 IN VIRTIO_DEVICE_PROTOCOL
*This
,
94 OUT UINT16
*QueueNumMax
99 VirtioPciSetQueueAlignment (
100 IN VIRTIO_DEVICE_PROTOCOL
*This
,
106 VirtioPciSetPageSize (
107 IN VIRTIO_DEVICE_PROTOCOL
*This
,
113 VirtioPciGetDeviceStatus (
114 IN VIRTIO_DEVICE_PROTOCOL
*This
,
115 OUT UINT8
*DeviceStatus
120 VirtioPciSetGuestFeatures (
121 IN VIRTIO_DEVICE_PROTOCOL
*This
,
127 VirtioPciSetQueueAddress (
128 IN VIRTIO_DEVICE_PROTOCOL
*This
,
134 VirtioPciSetQueueSel (
135 IN VIRTIO_DEVICE_PROTOCOL
*This
,
141 VirtioPciSetQueueNotify (
142 IN VIRTIO_DEVICE_PROTOCOL
*This
,
148 VirtioPciSetQueueSize (
149 IN VIRTIO_DEVICE_PROTOCOL
*This
,
155 VirtioPciSetDeviceStatus (
156 IN VIRTIO_DEVICE_PROTOCOL
*This
,
157 IN UINT8 DeviceStatus
162 VirtioPciAllocateSharedPages (
163 IN VIRTIO_DEVICE_PROTOCOL
*This
,
165 OUT VOID
**HostAddress
170 VirtioPciFreeSharedPages (
171 IN VIRTIO_DEVICE_PROTOCOL
*This
,
178 VirtioPciMapSharedBuffer (
179 IN VIRTIO_DEVICE_PROTOCOL
*This
,
180 IN VIRTIO_MAP_OPERATION Operation
,
181 IN VOID
*HostAddress
,
182 IN OUT UINTN
*NumberOfBytes
,
183 OUT EFI_PHYSICAL_ADDRESS
*DeviceAddress
,
189 VirtioPciUnmapSharedBuffer (
190 IN VIRTIO_DEVICE_PROTOCOL
*This
,
193 #endif // _VIRTIO_PCI_DEVICE_DXE_H_