hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
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
/** @file
  uba central config database PPI
 
  @copyright
  Copyright 2012 - 2021 Intel Corporation. <BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/
 
#ifndef _UBA_CONFIG_DATABASE_PPI_H_
#define _UBA_CONFIG_DATABASE_PPI_H_
 
// {C1176733-159F-42d5-BCB9-320660B17310}
#define UBA_CONFIG_DATABASE_PPI_GUID \
  { 0xc1176733, 0x159f, 0x42d5, { 0xbc, 0xb9, 0x32, 0x6, 0x60, 0xb1, 0x73, 0x10 } }
 
typedef struct _UBA_CONFIG_DATABASE_PPI UBA_CONFIG_DATABASE_PPI;
 
#define UBA_CONFIG_PPI_VERSION    01
#define UBA_CONFIG_PPI_SIGNATURE  SIGNATURE_32('U', 'S', 'K', 'U')
 
//
// Functions
//
 
/**
  Set board's GUID and user friendly name by BoardId.
 
  If the BoardId is not exist in database, it will create a new platform.
 
  @param This                   uba Ppi instance.
  @param BoardId           The platform type, same define as Platform.h.
  @param BoardGuid             The GUID for this platform.
  @param BoardName           The user friendly name for this platform.
 
  @retval EFI_ALREADY_STARTED   Create new for an exist platform.
  @retval EFI_OUT_OF_RESOURCES  Resource not enough.
  @retval EFI_NOT_FOUND         Platform not found.
  @retval EFI_SUCCESS           Operation success.
 
**/
typedef
EFI_STATUS
(EFIAPI *PEI_UBA_CONFIG_INIT_BOARD) (
  IN  UBA_CONFIG_DATABASE_PPI             *This,
  IN  UINT32                              BoardId,
  IN  EFI_GUID                            *BoardGuid,    OPTIONAL
  IN  CHAR8                               *BoardName     OPTIONAL
  );
 
/**
  Get board's GUID and user friendly name by BoardId.
 
  This is used when you need a BoardGuid to Add/Get platform data
 
  Core will create a new platform for you if the BoardId is not
  recorded in database, and assgin a unique GUID for this platform.
 
  @param This                   uba Ppi instance.
  @param BoardId           The platform type, same define as Platform.h.
  @param BoardGuid             The GUID for this platform.
  @param BoardName           The user friendly name for this platform.
 
  @retval EFI_ALREADY_STARTED   Create new for an exist platform.
  @retval EFI_OUT_OF_RESOURCES  Resource not enough.
  @retval EFI_NOT_FOUND         Platform not found.
  @retval EFI_SUCCESS           Operation success.
 
**/
typedef
EFI_STATUS
(EFIAPI *PEI_UBA_CONFIG_GET_BOARD) (
  IN  UBA_CONFIG_DATABASE_PPI             *This,
  OUT  UINT32                             *BoardId,
  OUT EFI_GUID                            *BoardGuid,    OPTIONAL
  OUT CHAR8                               *BoardName     OPTIONAL
  );
 
/**
  Add configuration data to uba configuration database.
 
  @param This                   uba Ppi instance.
  @param BoardGuid             The GUID for this platform.
  @param ResId                  The configuration data resource id.
  @param Data                   The data buffer pointer.
  @param DataSize               Size of data want to add into database.
 
  @retval EFI_INVALID_PARAMETER Required parameters not correct.
  @retval EFI_OUT_OF_RESOURCES  Resource not enough.
  @retval EFI_NOT_FOUND         Platform not found.
  @retval EFI_SUCCESS           Operation success.
 
**/
typedef
EFI_STATUS
(EFIAPI *PEI_UBA_CONFIG_ADD_DATA) (
  IN  UBA_CONFIG_DATABASE_PPI         *This,
  IN  EFI_GUID                        *ResId,
  IN  VOID                            *Data,
  IN  UINTN                           DataSize
  );
 
/**
  Get configuration data from uba configuration database.
 
  @param This                   uba Ppi instance.
  @param ResId                  The configuration data resource id.
  @param Data                   The data buffer pointer.
  @param DataSize               IN:Size of data want to get, OUT: Size of data in database.
 
  @retval EFI_INVALID_PARAMETER Required parameters not correct.
  @retval EFI_BUFFER_TOO_SMALL  The DataSize of Data buffer is too small to get this configuration data
  @retval EFI_OUT_OF_RESOURCES  Resource not enough.
  @retval EFI_NOT_FOUND         Platform or data not found.
  @retval EFI_SUCCESS           Operation success.
 
**/
typedef
EFI_STATUS
(EFIAPI *PEI_UBA_CONFIG_GET_DATA) (
  IN  UBA_CONFIG_DATABASE_PPI         *This,
  IN  EFI_GUID                        *ResId,
  OUT VOID                            *Data,
  IN  OUT UINTN                       *DataSize
  );
 
 
//
// Multi Sku config database PPI
//
struct _UBA_CONFIG_DATABASE_PPI {
  UINT32                             Signature;
  UINT32                             Version;
 
  PEI_UBA_CONFIG_INIT_BOARD          InitSku;
  PEI_UBA_CONFIG_GET_BOARD           GetSku;
 
  PEI_UBA_CONFIG_ADD_DATA            AddData;
  PEI_UBA_CONFIG_GET_DATA            GetData;
};
 
extern EFI_GUID gUbaConfigDatabasePpiGuid;
 
#endif // _UBA_CONFIG_DATABASE_PPI_H_