1/** @file
2
3  Definitions for the VirtIo MMIO Device Library
4
5  Copyright (C) 2013, ARM Ltd
6
7  This program and the accompanying materials are licensed and made available
8  under the terms and conditions of the BSD License which accompanies this
9  distribution. The full text of the license may be found at
10  http://opensource.org/licenses/bsd-license.php
11
12  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
13  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15**/
16
17#ifndef _VIRTIO_MMIO_DEVICE_LIB_H_
18#define _VIRTIO_MMIO_DEVICE_LIB_H_
19
20/**
21
22  Initialize VirtIo Device and Install VIRTIO_DEVICE_PROTOCOL protocol
23
24  @param[in] BaseAddress  Base Address of the VirtIo MMIO Device
25
26  @param[in] Handle       Handle of the device the driver should be attached
27                          to.
28
29  @retval EFI_SUCCESS           The VirtIo Device has been installed
30                                successfully.
31
32  @retval EFI_OUT_OF_RESOURCES  The function failed to allocate memory required
33                                by the Virtio MMIO device initialization.
34
35  @retval EFI_UNSUPPORTED       BaseAddress does not point to a VirtIo MMIO
36                                device.
37
38  @return                       Status code returned by InstallProtocolInterface
39                                Boot Service function.
40
41**/
42EFI_STATUS
43VirtioMmioInstallDevice (
44  IN PHYSICAL_ADDRESS       BaseAddress,
45  IN EFI_HANDLE             Handle
46  );
47
48/**
49
50  Uninstall the VirtIo Device
51
52  @param[in] Handle       Handle of the device where the VirtIo Device protocol
53                          should have been installed.
54
55  @retval EFI_SUCCESS     The device has been un-initialized successfully.
56
57  @return                 Status code returned by UninstallProtocolInterface
58                          Boot Service function.
59
60**/
61EFI_STATUS
62VirtioMmioUninstallDevice (
63  IN EFI_HANDLE             Handle
64  );
65
66#endif // _VIRTIO_MMIO_DEVICE_LIB_H_
67