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 UINT64
*DeviceFeatures
73 VirtioMmioGetQueueSize (
74 IN VIRTIO_DEVICE_PROTOCOL
*This
,
75 OUT UINT16
*QueueNumMax
80 VirtioMmioGetDeviceStatus (
81 IN VIRTIO_DEVICE_PROTOCOL
*This
,
82 OUT UINT8
*DeviceStatus
87 VirtioMmioSetQueueSize (
88 VIRTIO_DEVICE_PROTOCOL
*This
,
94 VirtioMmioSetDeviceStatus (
95 VIRTIO_DEVICE_PROTOCOL
*This
,
101 VirtioMmioSetQueueNotify (
102 VIRTIO_DEVICE_PROTOCOL
*This
,
108 VirtioMmioSetQueueSel (
109 VIRTIO_DEVICE_PROTOCOL
*This
,
114 VirtioMmioSetQueueAddress (
115 IN VIRTIO_DEVICE_PROTOCOL
*This
,
121 VirtioMmioSetQueueAlignment (
122 VIRTIO_DEVICE_PROTOCOL
*This
,
128 VirtioMmioSetPageSize (
129 VIRTIO_DEVICE_PROTOCOL
*This
,
135 VirtioMmioSetGuestFeatures (
136 VIRTIO_DEVICE_PROTOCOL
*This
,
140 #endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_