• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   Private definitions of the VirtIo 1.0 driver.
3 
4   Copyright (C) 2016, Red Hat, Inc.
5 
6   This program and the accompanying materials are licensed and made available
7   under the terms and conditions of the BSD License which accompanies this
8   distribution. The full text of the license may be found at
9   http://opensource.org/licenses/bsd-license.php
10 
11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
12   WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 **/
14 
15 #ifndef _VIRTIO_1_0_DXE_H_
16 #define _VIRTIO_1_0_DXE_H_
17 
18 #include <Protocol/PciIo.h>
19 #include <Protocol/VirtioDevice.h>
20 
21 #define VIRTIO_1_0_SIGNATURE SIGNATURE_32 ('V', 'I', 'O', '1')
22 
23 //
24 // Type of the PCI BAR that contains a VirtIo 1.0 config structure.
25 //
26 typedef enum {
27   Virtio10BarTypeMem,
28   Virtio10BarTypeIo
29 } VIRTIO_1_0_BAR_TYPE;
30 
31 //
32 // The type below defines the access to a VirtIo 1.0 config structure.
33 //
34 typedef struct {
35   BOOLEAN             Exists;  // The device exposes this structure
36   VIRTIO_1_0_BAR_TYPE BarType;
37   UINT8               Bar;
38   UINT32              Offset;  // Offset into BAR where structure starts
39   UINT32              Length;  // Length of structure in BAR.
40 } VIRTIO_1_0_CONFIG;
41 
42 typedef struct {
43   UINT32                 Signature;
44   VIRTIO_DEVICE_PROTOCOL VirtIo;
45   EFI_PCI_IO_PROTOCOL    *PciIo;
46   UINT64                 OriginalPciAttributes;
47   VIRTIO_1_0_CONFIG      CommonConfig;           // Common settings
48   VIRTIO_1_0_CONFIG      NotifyConfig;           // Notifications
49   UINT32                 NotifyOffsetMultiplier;
50   VIRTIO_1_0_CONFIG      SpecificConfig;         // Device specific settings
51 } VIRTIO_1_0_DEV;
52 
53 #define VIRTIO_1_0_FROM_VIRTIO_DEVICE(Device) \
54           CR (Device, VIRTIO_1_0_DEV, VirtIo, VIRTIO_1_0_SIGNATURE)
55 
56 #endif // _VIRTIO_1_0_DXE_H_
57