/** @file

  Definitions for the VirtIo MMIO Device Library

  Copyright (C) 2013, ARM Ltd

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#pragma once

/**

  Initialize VirtIo Device and Install VIRTIO_DEVICE_PROTOCOL protocol

  @param[in] BaseAddress  Base Address of the VirtIo MMIO Device

  @param[in] Handle       Handle of the device the driver should be attached
                          to.

  @retval EFI_SUCCESS           The VirtIo Device has been installed
                                successfully.

  @retval EFI_OUT_OF_RESOURCES  The function failed to allocate memory required
                                by the Virtio MMIO device initialization.

  @retval EFI_UNSUPPORTED       BaseAddress does not point to a VirtIo MMIO
                                device.

  @return                       Status code returned by InstallProtocolInterface
                                Boot Service function.

**/
EFI_STATUS
VirtioMmioInstallDevice (
  IN PHYSICAL_ADDRESS  BaseAddress,
  IN EFI_HANDLE        Handle
  );

/**

  Uninstall the VirtIo Device

  @param[in] Handle       Handle of the device where the VirtIo Device protocol
                          should have been installed.

  @retval EFI_SUCCESS     The device has been un-initialized successfully.

  @return                 Status code returned by UninstallProtocolInterface
                          Boot Service function.

**/
EFI_STATUS
VirtioMmioUninstallDevice (
  IN EFI_HANDLE  Handle
  );
