blob: 355f2a07857100596a51c55b61a8fff8bc1ca66b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/** @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_
|