/** @file | |
Private definitions of the VirtIo 1.0 driver. | |
Copyright (C) 2016, Red Hat, Inc. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _VIRTIO_1_0_DXE_H_ | |
#define _VIRTIO_1_0_DXE_H_ | |
#include <Protocol/PciIo.h> | |
#include <Protocol/VirtioDevice.h> | |
#define VIRTIO_1_0_SIGNATURE SIGNATURE_32 ('V', 'I', 'O', '1') | |
// | |
// Type of the PCI BAR that contains a VirtIo 1.0 config structure. | |
// | |
typedef enum { | |
Virtio10BarTypeMem, | |
Virtio10BarTypeIo | |
} VIRTIO_1_0_BAR_TYPE; | |
// | |
// The type below defines the access to a VirtIo 1.0 config structure. | |
// | |
typedef struct { | |
BOOLEAN Exists; // The device exposes this structure | |
VIRTIO_1_0_BAR_TYPE BarType; | |
UINT8 Bar; | |
UINT32 Offset; // Offset into BAR where structure starts | |
UINT32 Length; // Length of structure in BAR. | |
} VIRTIO_1_0_CONFIG; | |
typedef struct { | |
UINT32 Signature; | |
VIRTIO_DEVICE_PROTOCOL VirtIo; | |
EFI_PCI_IO_PROTOCOL *PciIo; | |
UINT64 OriginalPciAttributes; | |
VIRTIO_1_0_CONFIG CommonConfig; // Common settings | |
VIRTIO_1_0_CONFIG NotifyConfig; // Notifications | |
UINT32 NotifyOffsetMultiplier; | |
VIRTIO_1_0_CONFIG SpecificConfig; // Device specific settings | |
} VIRTIO_1_0_DEV; | |
#define VIRTIO_1_0_FROM_VIRTIO_DEVICE(Device) \ | |
CR (Device, VIRTIO_1_0_DEV, VirtIo, VIRTIO_1_0_SIGNATURE) | |
#endif // _VIRTIO_1_0_DXE_H_ |