3 Internal definitions for the VirtIo PCI Device driver
5 Copyright (C) 2013, ARM Ltd
7 This program and the accompanying materials are licensed and made available
8 under the terms and conditions of the BSD License which accompanies this
9 distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
13 WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #ifndef _VIRTIO_PCI_DEVICE_DXE_H_
18 #define _VIRTIO_PCI_DEVICE_DXE_H_
20 #include <Protocol/ComponentName.h>
21 #include <Protocol/DriverBinding.h>
22 #include <Protocol/PciIo.h>
23 #include <Protocol/VirtioDevice.h>
25 #include <IndustryStandard/Virtio.h>
27 #define VIRTIO_PCI_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'P', 'C', 'I')
31 VIRTIO_DEVICE_PROTOCOL VirtioDevice
;
32 EFI_PCI_IO_PROTOCOL
*PciIo
;
33 UINT64 OriginalPciAttributes
;
34 UINT32 DeviceSpecificConfigurationOffset
;
37 #define VIRTIO_PCI_DEVICE_FROM_VIRTIO_DEVICE(Device) \
38 CR (Device, VIRTIO_PCI_DEVICE, VirtioDevice, VIRTIO_PCI_DEVICE_SIGNATURE)
44 IN VIRTIO_PCI_DEVICE
*Dev
,
54 IN VIRTIO_PCI_DEVICE
*Dev
,
60 /********************************************
61 * PCI Functions for VIRTIO_DEVICE_PROTOCOL
62 *******************************************/
66 IN VIRTIO_DEVICE_PROTOCOL
*This
,
75 VirtioPciDeviceWrite (
76 IN VIRTIO_DEVICE_PROTOCOL
*This
,
84 VirtioPciGetDeviceFeatures (
85 IN VIRTIO_DEVICE_PROTOCOL
*This
,
86 OUT UINT32
*DeviceFeatures
91 VirtioPciGetQueueAddress (
92 IN VIRTIO_DEVICE_PROTOCOL
*This
,
93 OUT UINT32
*QueueAddress
98 VirtioPciGetQueueSize (
99 IN VIRTIO_DEVICE_PROTOCOL
*This
,
100 OUT UINT16
*QueueNumMax
105 VirtioPciSetQueueAlignment (
106 VIRTIO_DEVICE_PROTOCOL
*This
,
112 VirtioPciSetPageSize (
113 VIRTIO_DEVICE_PROTOCOL
*This
,
119 VirtioPciGetDeviceStatus (
120 IN VIRTIO_DEVICE_PROTOCOL
*This
,
121 OUT UINT8
*DeviceStatus
126 VirtioPciSetGuestFeatures (
127 IN VIRTIO_DEVICE_PROTOCOL
*This
,
133 VirtioPciSetQueueAddress (
134 VIRTIO_DEVICE_PROTOCOL
*This
,
140 VirtioPciSetQueueSel (
141 VIRTIO_DEVICE_PROTOCOL
*This
,
147 VirtioPciSetQueueNotify (
148 VIRTIO_DEVICE_PROTOCOL
*This
,
154 VirtioPciSetQueueSize (
155 VIRTIO_DEVICE_PROTOCOL
*This
,
161 VirtioPciSetDeviceStatus (
162 VIRTIO_DEVICE_PROTOCOL
*This
,
166 #endif // _VIRTIO_PCI_DEVICE_DXE_H_