summaryrefslogtreecommitdiff
path: root/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Library/ConfigBlockLib.h
blob: b9675be4d01c43ace1371e0d7157f1aae2040373 (plain)
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
/** @file
  Header file for Config Block Lib implementation.

  Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>

  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 _CONFIG_BLOCK_LIB_H_
#define _CONFIG_BLOCK_LIB_H_

/**
  Create config block table

  @param[in]     NumberOfBlocks            Number of Config Blocks.

  @retval        Size                      Size of Config Block Table Header and Offset Table.

**/
UINT32
EFIAPI
GetSizeOfConfigBlockTableHeaders (
  IN     UINT16    NumberOfBlocks
  );

/**
  Create config block table

  @param[out]  ConfigBlockTableAddress      On return, points to a pointer to the beginning of Config Block Table Address.
  @param[in]   NumberOfBlocks               Number of Config Blocks.
  @param[in]   TotalSize                    Max size to be allocated for the Config Block Table.

  @retval      EFI_INVALID_PARAMETER        Invalid Parameter.
  @retval      EFI_OUT_OF_RESOURCES         Out of resources.
  @retval      EFI_SUCCESS                  Successfully created Config Block Table at ConfigBlockTableAddress.

**/
EFI_STATUS
EFIAPI
CreateConfigBlockTable (
  OUT    VOID      **ConfigBlockTableAddress,
  IN     UINT16    NumberOfBlocks,
  IN     UINT32    TotalSize
  );

/**
  Add config block into config block table structure.

  @param[in]  ConfigBlockTableAddress      A pointer to the beginning of Config Block Table Address.
  @param[out] ConfigBlockAddress           On return, points to a pointer to the beginning of Config Block Address.

  @retval     EFI_OUT_OF_RESOURCES         Config Block Table is full and cannot add new Config Block or
                                           Config Block Offset Table is full and cannot add new Config Block.
  @retval     EFI_SUCCESS                  Successfully added Config Block.

**/
EFI_STATUS
EFIAPI
AddConfigBlock (
  IN     VOID      *ConfigBlockTableAddress,
  OUT    VOID      **ConfigBlockAddress
  );

/**
  Retrieve a specific Config Block data by GUID.

  @param[in]   ConfigBlockTableAddress     A pointer to the beginning of Config Block Table Address.
  @param[in]   ConfigBlockGuid             A pointer to the GUID uses to search specific Config Block.
  @param[out]  ConfigBlockAddress          On return, points to a pointer to the beginning of Config Block Address.

  @retval      EFI_NOT_FOUND               Could not find the Config Block.
  @retval      EFI_SUCCESS                 Config Block found and return.

**/
EFI_STATUS
EFIAPI
GetConfigBlock (
  IN     VOID      *ConfigBlockTableAddress,
  IN     EFI_GUID  *ConfigBlockGuid,
  OUT    VOID      **ConfigBlockAddress
  );

#endif // _CONFIG_BLOCK_LIB_H_