]> git.proxmox.com Git - mirror_edk2.git/blob - OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h
OvmfPkg: QemuFlashFvbServicesRuntimeDxe: remove FvbDevLock field
[mirror_edk2.git] / OvmfPkg / QemuFlashFvbServicesRuntimeDxe / FwBlockService.h
1 /**@file
2
3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4
5 This program and the accompanying materials are licensed and made available
6 under the terms and conditions of the BSD License which accompanies this
7 distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 Module Name:
14
15 FwBlockService.h
16
17 Abstract:
18
19 Firmware volume block driver for Intel Firmware Hub (FWH) device
20
21 **/
22
23 #ifndef _FW_BLOCK_SERVICE_H
24 #define _FW_BLOCK_SERVICE_H
25
26 //
27 // BugBug: Add documentation here for data structure!!!!
28 //
29 #define FVB_PHYSICAL 0
30 #define FVB_VIRTUAL 1
31
32 typedef struct {
33 UINTN FvBase[2];
34 UINTN NumOfBlocks;
35 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;
36 } EFI_FW_VOL_INSTANCE;
37
38 typedef struct {
39 UINT32 NumFv;
40 EFI_FW_VOL_INSTANCE *FvInstance[2];
41 UINT8 *FvbScratchSpace[2];
42 } ESAL_FWB_GLOBAL;
43
44 //
45 // Fvb Protocol instance data
46 //
47 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
48 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
49
50 #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
51 FvbExtension, FVB_DEVICE_SIGNATURE)
52
53 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
54
55 typedef struct {
56 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;
57 EFI_DEVICE_PATH_PROTOCOL EndDevPath;
58 } FV_PIWG_DEVICE_PATH;
59
60 typedef struct {
61 MEMMAP_DEVICE_PATH MemMapDevPath;
62 EFI_DEVICE_PATH_PROTOCOL EndDevPath;
63 } FV_MEMMAP_DEVICE_PATH;
64
65 typedef struct {
66 UINTN Signature;
67 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
68 UINTN Instance;
69 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;
70 } EFI_FW_VOL_BLOCK_DEVICE;
71
72 EFI_STATUS
73 GetFvbInfo (
74 IN UINT64 FvLength,
75 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
76 );
77
78 EFI_STATUS
79 FvbSetVolumeAttributes (
80 IN UINTN Instance,
81 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
82 IN ESAL_FWB_GLOBAL *Global,
83 IN BOOLEAN Virtual
84 );
85
86 EFI_STATUS
87 FvbGetVolumeAttributes (
88 IN UINTN Instance,
89 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
90 IN ESAL_FWB_GLOBAL *Global,
91 IN BOOLEAN Virtual
92 );
93
94 EFI_STATUS
95 FvbGetPhysicalAddress (
96 IN UINTN Instance,
97 OUT EFI_PHYSICAL_ADDRESS *Address,
98 IN ESAL_FWB_GLOBAL *Global,
99 IN BOOLEAN Virtual
100 );
101
102 EFI_STATUS
103 EFIAPI
104 FvbInitialize (
105 IN EFI_HANDLE ImageHandle,
106 IN EFI_SYSTEM_TABLE *SystemTable
107 );
108
109
110 VOID
111 EFIAPI
112 FvbClassAddressChangeEvent (
113 IN EFI_EVENT Event,
114 IN VOID *Context
115 );
116
117 EFI_STATUS
118 FvbGetLbaAddress (
119 IN UINTN Instance,
120 IN EFI_LBA Lba,
121 OUT UINTN *LbaAddress,
122 OUT UINTN *LbaLength,
123 OUT UINTN *NumOfBlocks,
124 IN ESAL_FWB_GLOBAL *Global,
125 IN BOOLEAN Virtual
126 );
127
128 //
129 // Protocol APIs
130 //
131 EFI_STATUS
132 EFIAPI
133 FvbProtocolGetAttributes (
134 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
135 OUT EFI_FVB_ATTRIBUTES_2 *Attributes
136 );
137
138 EFI_STATUS
139 EFIAPI
140 FvbProtocolSetAttributes (
141 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
142 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
143 );
144
145 EFI_STATUS
146 EFIAPI
147 FvbProtocolGetPhysicalAddress (
148 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
149 OUT EFI_PHYSICAL_ADDRESS *Address
150 );
151
152 EFI_STATUS
153 EFIAPI
154 FvbProtocolGetBlockSize (
155 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
156 IN CONST EFI_LBA Lba,
157 OUT UINTN *BlockSize,
158 OUT UINTN *NumOfBlocks
159 );
160
161 EFI_STATUS
162 EFIAPI
163 FvbProtocolRead (
164 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
165 IN CONST EFI_LBA Lba,
166 IN CONST UINTN Offset,
167 IN OUT UINTN *NumBytes,
168 IN UINT8 *Buffer
169 );
170
171 EFI_STATUS
172 EFIAPI
173 FvbProtocolWrite (
174 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
175 IN EFI_LBA Lba,
176 IN UINTN Offset,
177 IN OUT UINTN *NumBytes,
178 IN UINT8 *Buffer
179 );
180
181 EFI_STATUS
182 EFIAPI
183 FvbProtocolEraseBlocks (
184 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
185 ...
186 );
187
188 #endif