]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h
OvmfPkg: VIRTIO_DEVICE_PROTOCOL: widen the Features bitmap to 64 bits
[mirror_edk2.git] / OvmfPkg / Library / VirtioMmioDeviceLib / VirtioMmioDevice.h
CommitLineData
6fb4e772
OM
1/** @file\r
2\r
3 Internal definitions for the VirtIo MMIO Device driver\r
4\r
5 Copyright (C) 2013, ARM Ltd\r
6\r
7 This program and the accompanying materials are licensed and made available\r
8 under the terms and conditions of the BSD License which accompanies this\r
9 distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11\r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
13 WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/\r
16\r
17#ifndef _VIRTIO_MMIO_DEVICE_INTERNAL_H_\r
18#define _VIRTIO_MMIO_DEVICE_INTERNAL_H_\r
19\r
20#include <Protocol/VirtioDevice.h>\r
21\r
22#include <IndustryStandard/Virtio.h>\r
23\r
24#include <Library/DebugLib.h>\r
25#include <Library/IoLib.h>\r
26#include <Library/UefiLib.h>\r
27#include <Library/VirtioMmioDeviceLib.h>\r
28\r
29#define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O')\r
30\r
31typedef struct {\r
32 UINT32 Signature;\r
33 VIRTIO_DEVICE_PROTOCOL VirtioDevice;\r
34 PHYSICAL_ADDRESS BaseAddress;\r
35} VIRTIO_MMIO_DEVICE;\r
36\r
37#define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \\r
38 CR (Device, VIRTIO_MMIO_DEVICE, VirtioDevice, VIRTIO_MMIO_DEVICE_SIGNATURE)\r
39\r
40#define VIRTIO_CFG_WRITE(Device, Offset, Val) \\r
41 (MmioWrite32 (Device->BaseAddress + (Offset), Val))\r
42#define VIRTIO_CFG_READ(Device, Offset) \\r
43 (MmioRead32 (Device->BaseAddress + (Offset)))\r
44\r
45EFI_STATUS\r
46EFIAPI\r
47VirtioMmioDeviceRead (\r
48 IN VIRTIO_DEVICE_PROTOCOL *This,\r
49 IN UINTN FieldOFfset,\r
50 IN UINTN FieldSize,\r
51 IN UINTN BufferSize,\r
52 OUT VOID* Buffer\r
53 );\r
54\r
55EFI_STATUS\r
56EFIAPI\r
57VirtioMmioDeviceWrite (\r
58 IN VIRTIO_DEVICE_PROTOCOL *This,\r
59 IN UINTN FieldOffset,\r
60 IN UINTN FieldSize,\r
61 IN UINT64 Value\r
62 );\r
63\r
64EFI_STATUS\r
65EFIAPI\r
66VirtioMmioGetDeviceFeatures (\r
67 IN VIRTIO_DEVICE_PROTOCOL *This,\r
bc8fde6f 68 OUT UINT64 *DeviceFeatures\r
6fb4e772
OM
69 );\r
70\r
71EFI_STATUS\r
72EFIAPI\r
73VirtioMmioGetQueueAddress (\r
74 IN VIRTIO_DEVICE_PROTOCOL *This,\r
75 OUT UINT32 *QueueAddress\r
76 );\r
77\r
78EFI_STATUS\r
79EFIAPI\r
80VirtioMmioGetQueueSize (\r
81 IN VIRTIO_DEVICE_PROTOCOL *This,\r
82 OUT UINT16 *QueueNumMax\r
83 );\r
84\r
85EFI_STATUS\r
86EFIAPI\r
87VirtioMmioGetDeviceStatus (\r
88 IN VIRTIO_DEVICE_PROTOCOL *This,\r
89 OUT UINT8 *DeviceStatus\r
90 );\r
91\r
92EFI_STATUS\r
93EFIAPI\r
94VirtioMmioSetQueueSize (\r
95 VIRTIO_DEVICE_PROTOCOL *This,\r
96 UINT16 QueueSize\r
97 );\r
98\r
99EFI_STATUS\r
100EFIAPI\r
101VirtioMmioSetDeviceStatus (\r
102 VIRTIO_DEVICE_PROTOCOL *This,\r
103 UINT8 DeviceStatus\r
104 );\r
105\r
106EFI_STATUS\r
107EFIAPI\r
108VirtioMmioSetQueueNotify (\r
109 VIRTIO_DEVICE_PROTOCOL *This,\r
110 UINT16 QueueNotify\r
111 );\r
112\r
113EFI_STATUS\r
114EFIAPI\r
115VirtioMmioSetQueueSel (\r
116 VIRTIO_DEVICE_PROTOCOL *This,\r
117 UINT16 Sel\r
118 );\r
119\r
120EFI_STATUS\r
121VirtioMmioSetQueueAddress (\r
122 VIRTIO_DEVICE_PROTOCOL *This,\r
123 UINT32 Address\r
124 );\r
125\r
126EFI_STATUS\r
127EFIAPI\r
128VirtioMmioSetQueueAlignment (\r
129 VIRTIO_DEVICE_PROTOCOL *This,\r
130 UINT32 Alignment\r
131 );\r
132\r
133EFI_STATUS\r
134EFIAPI\r
135VirtioMmioSetPageSize (\r
136 VIRTIO_DEVICE_PROTOCOL *This,\r
137 UINT32 PageSize\r
138 );\r
139\r
140EFI_STATUS\r
141EFIAPI\r
142VirtioMmioSetGuestFeatures (\r
143 VIRTIO_DEVICE_PROTOCOL *This,\r
bc8fde6f 144 UINT64 Features\r
6fb4e772
OM
145 );\r
146\r
147#endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_\r