3 Internal definitions for the VirtIo MMIO Device driver
5 Copyright (C) 2013, ARM Ltd
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
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.
17 #ifndef _VIRTIO_MMIO_DEVICE_INTERNAL_H_
18 #define _VIRTIO_MMIO_DEVICE_INTERNAL_H_
20 #include <Protocol/VirtioDevice.h>
22 #include <IndustryStandard/Virtio.h>
24 #include <Library/DebugLib.h>
25 #include <Library/IoLib.h>
26 #include <Library/UefiLib.h>
27 #include <Library/VirtioMmioDeviceLib.h>
29 #define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O')
33 VIRTIO_DEVICE_PROTOCOL VirtioDevice
;
34 PHYSICAL_ADDRESS BaseAddress
;
37 #define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \
38 CR (Device, VIRTIO_MMIO_DEVICE, VirtioDevice, VIRTIO_MMIO_DEVICE_SIGNATURE)
40 #define VIRTIO_CFG_WRITE(Device, Offset, Val) \
41 (MmioWrite32 (Device->BaseAddress + (Offset), Val))
42 #define VIRTIO_CFG_READ(Device, Offset) \
43 (MmioRead32 (Device->BaseAddress + (Offset)))
47 VirtioMmioDeviceRead (
48 IN VIRTIO_DEVICE_PROTOCOL
*This
,
57 VirtioMmioDeviceWrite (
58 IN VIRTIO_DEVICE_PROTOCOL
*This
,
66 VirtioMmioGetDeviceFeatures (
67 IN VIRTIO_DEVICE_PROTOCOL
*This
,
68 OUT UINT32
*DeviceFeatures
73 VirtioMmioGetQueueAddress (
74 IN VIRTIO_DEVICE_PROTOCOL
*This
,
75 OUT UINT32
*QueueAddress
80 VirtioMmioGetQueueSize (
81 IN VIRTIO_DEVICE_PROTOCOL
*This
,
82 OUT UINT16
*QueueNumMax
87 VirtioMmioGetDeviceStatus (
88 IN VIRTIO_DEVICE_PROTOCOL
*This
,
89 OUT UINT8
*DeviceStatus
94 VirtioMmioSetQueueSize (
95 VIRTIO_DEVICE_PROTOCOL
*This
,
101 VirtioMmioSetDeviceStatus (
102 VIRTIO_DEVICE_PROTOCOL
*This
,
108 VirtioMmioSetQueueNotify (
109 VIRTIO_DEVICE_PROTOCOL
*This
,
115 VirtioMmioSetQueueSel (
116 VIRTIO_DEVICE_PROTOCOL
*This
,
121 VirtioMmioSetQueueAddress (
122 VIRTIO_DEVICE_PROTOCOL
*This
,
128 VirtioMmioSetQueueAlignment (
129 VIRTIO_DEVICE_PROTOCOL
*This
,
135 VirtioMmioSetPageSize (
136 VIRTIO_DEVICE_PROTOCOL
*This
,
142 VirtioMmioSetGuestFeatures (
143 VIRTIO_DEVICE_PROTOCOL
*This
,
147 #endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_