These header files are intentionally minimal, and intentionally kept apart
from the VirtIo 0.9.5 headers.

Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
Cc: Jordan Justen <jordan.l.jus...@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <ler...@redhat.com>
---
 OvmfPkg/Include/IndustryStandard/Virtio10.h    | 81 ++++++++++++++++++++
 OvmfPkg/Include/IndustryStandard/Virtio10Net.h | 31 ++++++++
 2 files changed, 112 insertions(+)

diff --git a/OvmfPkg/Include/IndustryStandard/Virtio10.h 
b/OvmfPkg/Include/IndustryStandard/Virtio10.h
new file mode 100644
index 000000000000..722475c4ea55
--- /dev/null
+++ b/OvmfPkg/Include/IndustryStandard/Virtio10.h
@@ -0,0 +1,81 @@
+/** @file
+  Definitions from the VirtIo 1.0 specification (csprd05).
+
+  Copyright (C) 2016, Red Hat, Inc.
+
+  This program and the accompanying materials are licensed and made available
+  under the terms and conditions of the BSD License which accompanies this
+  distribution. The full text of the license may be found at
+  http://opensource.org/licenses/bsd-license.php
+
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
+  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+**/
+
+#ifndef _VIRTIO_1_0_H_
+#define _VIRTIO_1_0_H_
+
+#include <Base.h>
+
+//
+// Structures for parsing the VirtIo 1.0 specific PCI capabilities from the
+// config space
+//
+#pragma pack (1)
+typedef struct {
+  UINT8 CapId;   // Capability identifier (generic)
+  UINT8 CapNext; // Link to next capability (generic)
+} VIRTIO_PCI_CAP_LINK;
+
+typedef struct {
+  UINT8  ConfigType; // Identifies the specific VirtIo 1.0 config structure
+  UINT8  Bar;        // The BAR that contains the structure
+  UINT8  Padding[3];
+  UINT32 Offset;     // Offset within Bar until the start of the structure
+  UINT32 Length;     // Length of the structure
+} VIRTIO_PCI_CAP;
+#pragma pack ()
+
+//
+// Values for the VIRTIO_PCI_CAP.ConfigType field
+//
+#define VIRTIO_PCI_CAP_COMMON_CFG 1 // Common configuration
+#define VIRTIO_PCI_CAP_NOTIFY_CFG 2 // Notifications
+#define VIRTIO_PCI_CAP_DEVICE_CFG 4 // Device specific configuration
+
+//
+// Structure pointed-to by Bar and Offset in VIRTIO_PCI_CAP when ConfigType is
+// VIRTIO_PCI_CAP_COMMON_CFG
+//
+#pragma pack (1)
+typedef struct {
+  UINT32 DeviceFeatureSelect;
+  UINT32 DeviceFeature;
+  UINT32 DriverFeatureSelect;
+  UINT32 DriverFeature;
+  UINT16 MsixConfig;
+  UINT16 NumQueues;
+  UINT8  DeviceStatus;
+  UINT8  ConfigGeneration;
+  UINT16 QueueSelect;
+  UINT16 QueueSize;
+  UINT16 QueueMsixVector;
+  UINT16 QueueEnable;
+  UINT16 QueueNotifyOff;
+  UINT64 QueueDesc;
+  UINT64 QueueAvail;
+  UINT64 QueueUsed;
+} VIRTIO_PCI_COMMON_CFG;
+#pragma pack ()
+
+//
+// VirtIo 1.0 device status bits
+//
+#define VSTAT_FEATURES_OK BIT3
+
+//
+// VirtIo 1.0 reserved (device-independent) feature bits
+//
+#define VIRTIO_F_VERSION_1 BIT32
+
+#endif // _VIRTIO_1_0_H_
diff --git a/OvmfPkg/Include/IndustryStandard/Virtio10Net.h 
b/OvmfPkg/Include/IndustryStandard/Virtio10Net.h
new file mode 100644
index 000000000000..2befc661dc62
--- /dev/null
+++ b/OvmfPkg/Include/IndustryStandard/Virtio10Net.h
@@ -0,0 +1,31 @@
+/** @file
+  Definitions from the VirtIo 1.0 specification (csprd05), specifically for the
+  network device.
+
+  Copyright (C) 2016, Red Hat, Inc.
+
+  This program and the accompanying materials are licensed and made available
+  under the terms and conditions of the BSD License which accompanies this
+  distribution. The full text of the license may be found at
+  http://opensource.org/licenses/bsd-license.php
+
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
+  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+**/
+
+#ifndef _VIRTIO_1_0_NET_H_
+#define _VIRTIO_1_0_NET_H_
+
+#include <IndustryStandard/VirtioNet.h>
+
+//
+// VirtIo 1.0 packet header
+//
+#pragma pack (1)
+typedef struct {
+  VIRTIO_NET_REQ Legacy;
+  UINT16         NumBuffers;
+} VIRTIO_1_0_NET_REQ;
+#pragma pack ()
+
+#endif // _VIRTIO_1_0_NET_H_
-- 
1.8.3.1


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to