Vishal Bhoj | 82c8071 | 2015-12-15 21:13:33 +0530 | [diff] [blame^] | 1 | /** @file
|
| 2 |
|
| 3 | Internal definitions for the VirtIo MMIO Device driver
|
| 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_INTERNAL_H_
|
| 18 | #define _VIRTIO_MMIO_DEVICE_INTERNAL_H_
|
| 19 |
|
| 20 | #include <Protocol/VirtioDevice.h>
|
| 21 |
|
| 22 | #include <IndustryStandard/Virtio.h>
|
| 23 |
|
| 24 | #include <Library/DebugLib.h>
|
| 25 | #include <Library/IoLib.h>
|
| 26 | #include <Library/UefiLib.h>
|
| 27 | #include <Library/VirtioMmioDeviceLib.h>
|
| 28 |
|
| 29 | #define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O')
|
| 30 |
|
| 31 | typedef struct {
|
| 32 | UINT32 Signature;
|
| 33 | VIRTIO_DEVICE_PROTOCOL VirtioDevice;
|
| 34 | PHYSICAL_ADDRESS BaseAddress;
|
| 35 | } VIRTIO_MMIO_DEVICE;
|
| 36 |
|
| 37 | #define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \
|
| 38 | CR (Device, VIRTIO_MMIO_DEVICE, VirtioDevice, VIRTIO_MMIO_DEVICE_SIGNATURE)
|
| 39 |
|
| 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)))
|
| 44 |
|
| 45 | EFI_STATUS
|
| 46 | EFIAPI
|
| 47 | VirtioMmioDeviceRead (
|
| 48 | IN VIRTIO_DEVICE_PROTOCOL *This,
|
| 49 | IN UINTN FieldOFfset,
|
| 50 | IN UINTN FieldSize,
|
| 51 | IN UINTN BufferSize,
|
| 52 | OUT VOID* Buffer
|
| 53 | );
|
| 54 |
|
| 55 | EFI_STATUS
|
| 56 | EFIAPI
|
| 57 | VirtioMmioDeviceWrite (
|
| 58 | IN VIRTIO_DEVICE_PROTOCOL *This,
|
| 59 | IN UINTN FieldOffset,
|
| 60 | IN UINTN FieldSize,
|
| 61 | IN UINT64 Value
|
| 62 | );
|
| 63 |
|
| 64 | EFI_STATUS
|
| 65 | EFIAPI
|
| 66 | VirtioMmioGetDeviceFeatures (
|
| 67 | IN VIRTIO_DEVICE_PROTOCOL *This,
|
| 68 | OUT UINT32 *DeviceFeatures
|
| 69 | );
|
| 70 |
|
| 71 | EFI_STATUS
|
| 72 | EFIAPI
|
| 73 | VirtioMmioGetQueueAddress (
|
| 74 | IN VIRTIO_DEVICE_PROTOCOL *This,
|
| 75 | OUT UINT32 *QueueAddress
|
| 76 | );
|
| 77 |
|
| 78 | EFI_STATUS
|
| 79 | EFIAPI
|
| 80 | VirtioMmioGetQueueSize (
|
| 81 | IN VIRTIO_DEVICE_PROTOCOL *This,
|
| 82 | OUT UINT16 *QueueNumMax
|
| 83 | );
|
| 84 |
|
| 85 | EFI_STATUS
|
| 86 | EFIAPI
|
| 87 | VirtioMmioGetDeviceStatus (
|
| 88 | IN VIRTIO_DEVICE_PROTOCOL *This,
|
| 89 | OUT UINT8 *DeviceStatus
|
| 90 | );
|
| 91 |
|
| 92 | EFI_STATUS
|
| 93 | EFIAPI
|
| 94 | VirtioMmioSetQueueSize (
|
| 95 | VIRTIO_DEVICE_PROTOCOL *This,
|
| 96 | UINT16 QueueSize
|
| 97 | );
|
| 98 |
|
| 99 | EFI_STATUS
|
| 100 | EFIAPI
|
| 101 | VirtioMmioSetDeviceStatus (
|
| 102 | VIRTIO_DEVICE_PROTOCOL *This,
|
| 103 | UINT8 DeviceStatus
|
| 104 | );
|
| 105 |
|
| 106 | EFI_STATUS
|
| 107 | EFIAPI
|
| 108 | VirtioMmioSetQueueNotify (
|
| 109 | VIRTIO_DEVICE_PROTOCOL *This,
|
| 110 | UINT16 QueueNotify
|
| 111 | );
|
| 112 |
|
| 113 | EFI_STATUS
|
| 114 | EFIAPI
|
| 115 | VirtioMmioSetQueueSel (
|
| 116 | VIRTIO_DEVICE_PROTOCOL *This,
|
| 117 | UINT16 Sel
|
| 118 | );
|
| 119 |
|
| 120 | EFI_STATUS
|
| 121 | VirtioMmioSetQueueAddress (
|
| 122 | VIRTIO_DEVICE_PROTOCOL *This,
|
| 123 | UINT32 Address
|
| 124 | );
|
| 125 |
|
| 126 | EFI_STATUS
|
| 127 | EFIAPI
|
| 128 | VirtioMmioSetQueueAlignment (
|
| 129 | VIRTIO_DEVICE_PROTOCOL *This,
|
| 130 | UINT32 Alignment
|
| 131 | );
|
| 132 |
|
| 133 | EFI_STATUS
|
| 134 | EFIAPI
|
| 135 | VirtioMmioSetPageSize (
|
| 136 | VIRTIO_DEVICE_PROTOCOL *This,
|
| 137 | UINT32 PageSize
|
| 138 | );
|
| 139 |
|
| 140 | EFI_STATUS
|
| 141 | EFIAPI
|
| 142 | VirtioMmioSetGuestFeatures (
|
| 143 | VIRTIO_DEVICE_PROTOCOL *This,
|
| 144 | UINT32 Features
|
| 145 | );
|
| 146 |
|
| 147 | #endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_
|