/** @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_
