]> git.proxmox.com Git - mirror_edk2.git/blob - OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h
OvmfPkg: QemuFlashFvbServicesRuntimeDxe: rewrap source code to 79 chars
[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 EFI_LOCK FvbDevLock;
34 UINTN FvBase[2];
35 UINTN NumOfBlocks;
36 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;
37 } EFI_FW_VOL_INSTANCE;
38
39 typedef struct {
40 UINT32 NumFv;
41 EFI_FW_VOL_INSTANCE *FvInstance[2];
42 UINT8 *FvbScratchSpace[2];
43 } ESAL_FWB_GLOBAL;
44
45 //
46 // Fvb Protocol instance data
47 //
48 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
49 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
50
51 #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
52 FvbExtension, FVB_DEVICE_SIGNATURE)
53
54 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
55
56 typedef struct {
57 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;
58 EFI_DEVICE_PATH_PROTOCOL EndDevPath;
59 } FV_PIWG_DEVICE_PATH;
60
61 typedef struct {
62 MEMMAP_DEVICE_PATH MemMapDevPath;
63 EFI_DEVICE_PATH_PROTOCOL EndDevPath;
64 } FV_MEMMAP_DEVICE_PATH;
65
66 typedef struct {
67 UINTN Signature;
68 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
69 UINTN Instance;
70 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;
71 } EFI_FW_VOL_BLOCK_DEVICE;
72
73 EFI_STATUS
74 GetFvbInfo (
75 IN UINT64 FvLength,
76 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
77 );
78
79 EFI_STATUS
80 FvbSetVolumeAttributes (
81 IN UINTN Instance,
82 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
83 IN ESAL_FWB_GLOBAL *Global,
84 IN BOOLEAN Virtual
85 );
86
87 EFI_STATUS
88 FvbGetVolumeAttributes (
89 IN UINTN Instance,
90 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
91 IN ESAL_FWB_GLOBAL *Global,
92 IN BOOLEAN Virtual
93 );
94
95 EFI_STATUS
96 FvbGetPhysicalAddress (
97 IN UINTN Instance,
98 OUT EFI_PHYSICAL_ADDRESS *Address,
99 IN ESAL_FWB_GLOBAL *Global,
100 IN BOOLEAN Virtual
101 );
102
103 EFI_STATUS
104 EFIAPI
105 FvbInitialize (
106 IN EFI_HANDLE ImageHandle,
107 IN EFI_SYSTEM_TABLE *SystemTable
108 );
109
110
111 VOID
112 EFIAPI
113 FvbClassAddressChangeEvent (
114 IN EFI_EVENT Event,
115 IN VOID *Context
116 );
117
118 EFI_STATUS
119 FvbGetLbaAddress (
120 IN UINTN Instance,
121 IN EFI_LBA Lba,
122 OUT UINTN *LbaAddress,
123 OUT UINTN *LbaLength,
124 OUT UINTN *NumOfBlocks,
125 IN ESAL_FWB_GLOBAL *Global,
126 IN BOOLEAN Virtual
127 );
128
129 //
130 // Protocol APIs
131 //
132 EFI_STATUS
133 EFIAPI
134 FvbProtocolGetAttributes (
135 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
136 OUT EFI_FVB_ATTRIBUTES_2 *Attributes
137 );
138
139 EFI_STATUS
140 EFIAPI
141 FvbProtocolSetAttributes (
142 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
143 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
144 );
145
146 EFI_STATUS
147 EFIAPI
148 FvbProtocolGetPhysicalAddress (
149 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
150 OUT EFI_PHYSICAL_ADDRESS *Address
151 );
152
153 EFI_STATUS
154 EFIAPI
155 FvbProtocolGetBlockSize (
156 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
157 IN CONST EFI_LBA Lba,
158 OUT UINTN *BlockSize,
159 OUT UINTN *NumOfBlocks
160 );
161
162 EFI_STATUS
163 EFIAPI
164 FvbProtocolRead (
165 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
166 IN CONST EFI_LBA Lba,
167 IN CONST UINTN Offset,
168 IN OUT UINTN *NumBytes,
169 IN UINT8 *Buffer
170 );
171
172 EFI_STATUS
173 EFIAPI
174 FvbProtocolWrite (
175 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
176 IN EFI_LBA Lba,
177 IN UINTN Offset,
178 IN OUT UINTN *NumBytes,
179 IN UINT8 *Buffer
180 );
181
182 EFI_STATUS
183 EFIAPI
184 FvbProtocolEraseBlocks (
185 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
186 ...
187 );
188
189 #endif