1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
|
/** @file
Firmeware Volume BLock Service Library
Copyright (c) 2006 - 2007, Intel Corporation.<BR>
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef __EDK_FVB_SERVICE_LIB_H__
#define __EDK_FVB_SERVICE_LIB_H__
/**
Reads specified number of bytes into a buffer from the specified block
@param[in] Instance The FV instance to be read from
@param[in] Lba The logical block address to be read from
@param[in] Offset Offset into the block at which to begin reading
@param[in,out] NumBytes Pointer that on input contains the total size of
the buffer. On output, it contains the total number
of bytes read
@param[in] Buffer Pointer to a caller allocated buffer that will be
used to hold the data read
@retval EFI_EFI_SUCCESS Buffer contains data read from FVB
@retval EFI_INVALID_PARAMETER invalid parameter
**/
EFI_STATUS
EfiFvbReadBlock (
IN UINTN Instance,
IN EFI_LBA Lba,
IN UINTN Offset,
IN OUT UINTN *NumBytes,
IN UINT8 *Buffer
);
/**
Writes specified number of bytes from the input buffer to the block
@param[in] Instance The FV instance to be read from
@param[in] Lba The logical block address to be write to
@param[in] Offset Offset into the block at which to begin writing
@param[in,out] NumBytes Pointer that on input contains the total size of
the buffer. On output, it contains the total number
of bytes actually written.
@param[in] Buffer Pointer to a caller allocated buffer that contains
the source for the write
@retval EFI_EFI_SUCCESS Buffer written to FVB
@retval EFI_INVALID_PARAMETER invalid parameter
**/
EFI_STATUS
EfiFvbWriteBlock (
IN UINTN Instance,
IN EFI_LBA Lba,
IN UINTN Offset,
IN OUT UINTN *NumBytes,
IN UINT8 *Buffer
);
/**
Erases and initializes a firmware volume block
@param[in] Instance The FV instance to be erased
@param[in] Lba The logical block address to be erased
@retval EFI_EFI_SUCCESS Lba was erased
@retval EFI_INVALID_PARAMETER invalid parameter
**/
EFI_STATUS
EfiFvbEraseBlock (
IN UINTN Instance,
IN EFI_LBA Lba
);
/**
Retrieves attributes, insures positive polarity of attribute bits, returns
resulting attributes in output parameter
@param[in] Instance The FV instance
@param[out] Attributes The FV instance whose attributes is going to be
returned
@retval EFI_EFI_SUCCESS Valid Attributes were returned
@retval EFI_INVALID_PARAMETER invalid parameter
**/
EFI_STATUS
EfiFvbGetVolumeAttributes (
IN UINTN Instance,
OUT EFI_FVB_ATTRIBUTES *Attributes
);
/**
Modifies the current settings of the firmware volume according to the
input parameter, and returns the new setting of the volume
@param[in] Instance The FV instance
@param[in] Attributes On input, it is a pointer to EFI_FVB_ATTRIBUTES
containing the desired firmware volume settings.
On successful return, it contains the new settings
of the firmware volume
@retval EFI_EFI_SUCCESS Attributes were updated
@retval EFI_INVALID_PARAMETER invalid parameter
**/
EFI_STATUS
EfiFvbSetVolumeAttributes (
IN UINTN Instance,
IN OUT EFI_FVB_ATTRIBUTES *Attributes
);
/**
Retrieves the physical address of a memory mapped FV
@param[in] Instance The FV instance
@param[out] BaseAddress Pointer to a caller allocated EFI_PHYSICAL_ADDRESS
that on successful return, contains the base address
of the firmware volume.
@retval EFI_EFI_SUCCESS BaseAddress was returned
@retval EFI_INVALID_PARAMETER invalid parameter
**/
EFI_STATUS
EfiFvbGetPhysicalAddress (
IN UINTN Instance,
OUT EFI_PHYSICAL_ADDRESS *BaseAddress
);
/**
Retrieve the size of a logical block
@param[in] Instance The FV instance
@param[in] Lba Indicates which block to return the size for.
@param[out] BlockSizze A pointer to a caller allocated UINTN in which
the size of the block is returned
@param[out] NumOfBlocks a pointer to a caller allocated UINTN in which the
number of consecutive blocks starting with Lba is
returned. All blocks in this range have a size of
BlockSize
@retval EFI_EFI_SUCCESS BlockSize and NumOfBlocks returned
@retval EFI_INVALID_PARAMETER invalid parameter
**/
EFI_STATUS
EfiFvbGetBlockSize (
IN UINTN Instance,
IN EFI_LBA Lba,
OUT UINTN *BlockSize,
OUT UINTN *NumOfBlocks
);
/**
Erases and initializes a specified range of a firmware volume
@param[in] Instance The FV instance
@param[in] StartLba The starting logical block index to be erased
@param[in] OffsetStartLba Offset into the starting block at which to
begin erasing
@param[in] LastLba The last logical block index to be erased
@param[in] OffsetLastLba Offset into the last block at which to end erasing
@retval EFI_EFI_SUCCESS Range was erased
@retval EFI_INVALID_PARAMETER invalid parameter
@retval EFI_UNSUPPORTED Range can not be erased
**/
EFI_STATUS
EfiFvbEraseCustomBlockRange (
IN UINTN Instance,
IN EFI_LBA StartLba,
IN UINTN OffsetStartLba,
IN EFI_LBA LastLba,
IN UINTN OffsetLastLba
);
#endif
|