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
,
130 IN UINT64 RingBaseShift
135 VirtioPciSetQueueSel (
136 IN VIRTIO_DEVICE_PROTOCOL
*This
,
142 VirtioPciSetQueueNotify (
143 IN VIRTIO_DEVICE_PROTOCOL
*This
,
149 VirtioPciSetQueueSize (
150 IN VIRTIO_DEVICE_PROTOCOL
*This
,
156 VirtioPciSetDeviceStatus (
157 IN VIRTIO_DEVICE_PROTOCOL
*This
,
158 IN UINT8 DeviceStatus
163 VirtioPciAllocateSharedPages (
164 IN VIRTIO_DEVICE_PROTOCOL
*This
,
166 OUT VOID
**HostAddress
171 VirtioPciFreeSharedPages (
172 IN VIRTIO_DEVICE_PROTOCOL
*This
,
179 VirtioPciMapSharedBuffer (
180 IN VIRTIO_DEVICE_PROTOCOL
*This
,
181 IN VIRTIO_MAP_OPERATION Operation
,
182 IN VOID
*HostAddress
,
183 IN OUT UINTN
*NumberOfBytes
,
184 OUT EFI_PHYSICAL_ADDRESS
*DeviceAddress
,
190 VirtioPciUnmapSharedBuffer (
191 IN VIRTIO_DEVICE_PROTOCOL
*This
,
194 #endif // _VIRTIO_PCI_DEVICE_DXE_H_