OcConfigurationLib.h 48.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/** @file
  Copyright (C) 2019, vit9696. All rights reserved.

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

18
#include <Library/DebugLib.h>
19
#include <Library/OcSerializeLib.h>
20
#include <Library/OcBootManagementLib.h>
21

22 23 24 25 26 27 28
/**
  ACPI section
**/

///
/// ACPI added tables.
///
29 30 31 32 33 34
#define OC_ACPI_ADD_ENTRY_FIELDS(_, __) \
  _(BOOLEAN                     , Enabled          ,     , FALSE   , () ) \
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , Path             ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) )
  OC_DECLARE (OC_ACPI_ADD_ENTRY)

35
#define OC_ACPI_ADD_ARRAY_FIELDS(_, __) \
36
  OC_ARRAY (OC_ACPI_ADD_ENTRY, _, __)
37 38 39
  OC_DECLARE (OC_ACPI_ADD_ARRAY)

///
40
/// ACPI table deletion.
41
///
42
#define OC_ACPI_DELETE_ENTRY_FIELDS(_, __) \
V
vit9696 已提交
43
  _(BOOLEAN                     , All              ,     , FALSE   , () ) \
44 45
  _(BOOLEAN                     , Enabled          ,     , FALSE   , () ) \
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
46 47 48
  _(UINT8                       , OemTableId       , [8] , {0}     , () ) \
  _(UINT32                      , TableLength      ,     , 0       , () ) \
  _(UINT8                       , TableSignature   , [4] , {0}     , () )
49
  OC_DECLARE (OC_ACPI_DELETE_ENTRY)
50

51 52 53
#define OC_ACPI_DELETE_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_ACPI_DELETE_ENTRY, _, __)
  OC_DECLARE (OC_ACPI_DELETE_ARRAY)
54 55 56 57 58 59

///
/// ACPI patches.
///
#define OC_ACPI_PATCH_ENTRY_FIELDS(_, __) \
  _(UINT32                      , Count            ,     , 0                           , ()                   ) \
60 61
  _(BOOLEAN                     , Enabled          ,     , FALSE                       , ()                   ) \
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
62
  _(OC_DATA                     , Find             ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
63 64
  _(OC_STRING                   , Base             ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(UINT32                      , BaseSkip         ,     , 0                           , ()                   ) \
65
  _(UINT32                      , Limit            ,     , 0                           , ()                   ) \
66 67 68
  _(OC_DATA                     , Mask             ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
  _(OC_DATA                     , Replace          ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
  _(OC_DATA                     , ReplaceMask      ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
  _(UINT8                       , OemTableId       , [8] , {0}                         , ()                   ) \
  _(UINT32                      , TableLength      ,     , 0                           , ()                   ) \
  _(UINT8                       , TableSignature   , [4] , {0}                         , ()                   ) \
  _(UINT32                      , Skip             ,     , 0                           , ()                   )
  OC_DECLARE (OC_ACPI_PATCH_ENTRY)

#define OC_ACPI_PATCH_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_ACPI_PATCH_ENTRY, _, __)
  OC_DECLARE (OC_ACPI_PATCH_ARRAY)

///
/// ACPI quirks.
///
#define OC_ACPI_QUIRKS_FIELDS(_, __) \
  _(BOOLEAN                     , FadtEnableReset     ,     , FALSE  , ()) \
  _(BOOLEAN                     , NormalizeHeaders    ,     , FALSE  , ()) \
85
  _(BOOLEAN                     , RebaseRegions       ,     , FALSE  , ()) \
V
vit9696 已提交
86
  _(BOOLEAN                     , ResetHwSig          ,     , FALSE  , ()) \
87
  _(BOOLEAN                     , ResetLogoStatus     ,     , FALSE  , ())
88 89 90 91
  OC_DECLARE (OC_ACPI_QUIRKS)

#define OC_ACPI_CONFIG_FIELDS(_, __) \
  _(OC_ACPI_ADD_ARRAY         , Add              ,     , OC_CONSTR2 (OC_ACPI_ADD_ARRAY, _, __)     , OC_DESTR (OC_ACPI_ADD_ARRAY)) \
92
  _(OC_ACPI_DELETE_ARRAY      , Delete           ,     , OC_CONSTR2 (OC_ACPI_DELETE_ARRAY, _, __)  , OC_DESTR (OC_ACPI_DELETE_ARRAY)) \
93 94 95 96
  _(OC_ACPI_PATCH_ARRAY       , Patch            ,     , OC_CONSTR2 (OC_ACPI_PATCH_ARRAY, _, __)   , OC_DESTR (OC_ACPI_PATCH_ARRAY)) \
  _(OC_ACPI_QUIRKS            , Quirks           ,     , OC_CONSTR2 (OC_ACPI_QUIRKS, _, __)        , OC_DESTR (OC_ACPI_QUIRKS))
  OC_DECLARE (OC_ACPI_CONFIG)

97 98 99 100
/**
  Apple bootloader section
**/

101 102 103 104 105 106 107 108 109 110
#define OC_BOOTER_WL_ENTRY_FIELDS(_, __) \
  _(UINT64                      , Address          ,     , 0       , () ) \
  _(BOOLEAN                     , Enabled          ,     , FALSE   , () ) \
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) )
  OC_DECLARE (OC_BOOTER_WL_ENTRY)

#define OC_BOOTER_WL_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_BOOTER_WL_ENTRY, _, __)
  OC_DECLARE (OC_BOOTER_WL_ARRAY)

111 112 113 114 115 116 117 118 119
///
/// Bootloader patches.
///
#define OC_BOOTER_PATCH_ENTRY_FIELDS(_, __) \
  _(OC_STRING                   , Arch             ,     , OC_STRING_CONSTR ("Any", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(UINT32                      , Count            ,     , 0                           , ()                   ) \
  _(BOOLEAN                     , Enabled          ,     , FALSE                       , ()                   ) \
  _(OC_DATA                     , Find             ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
120
  _(OC_STRING                   , Identifier       ,     , OC_STRING_CONSTR ("Any", _, __), OC_DESTR (OC_STRING) ) \
121 122 123 124 125 126 127 128 129 130 131 132 133 134
  _(OC_DATA                     , Mask             ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
  _(OC_DATA                     , Replace          ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
  _(OC_DATA                     , ReplaceMask      ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
  _(UINT32                      , Limit            ,     , 0                           , ()                   ) \
  _(UINT32                      , Skip             ,     , 0                           , ()                   )
  OC_DECLARE (OC_BOOTER_PATCH_ENTRY)

#define OC_BOOTER_PATCH_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_BOOTER_PATCH_ENTRY, _, __)
  OC_DECLARE (OC_BOOTER_PATCH_ARRAY)

///
/// Apple bootloader quirks.
///
135
#define OC_BOOTER_QUIRKS_FIELDS(_, __) \
136
  _(BOOLEAN                     , AllowRelocationBlock      ,     , FALSE  , ()) \
137
  _(BOOLEAN                     , AvoidRuntimeDefrag        ,     , FALSE  , ()) \
138
  _(BOOLEAN                     , DevirtualiseMmio          ,     , FALSE  , ()) \
139
  _(BOOLEAN                     , DisableSingleUser         ,     , FALSE  , ()) \
140 141 142 143
  _(BOOLEAN                     , DisableVariableWrite      ,     , FALSE  , ()) \
  _(BOOLEAN                     , DiscardHibernateMap       ,     , FALSE  , ()) \
  _(BOOLEAN                     , EnableSafeModeSlide       ,     , FALSE  , ()) \
  _(BOOLEAN                     , EnableWriteUnprotector    ,     , FALSE  , ()) \
144
  _(BOOLEAN                     , ForceBooterSignature      ,     , FALSE  , ()) \
145
  _(BOOLEAN                     , ForceExitBootServices     ,     , FALSE  , ()) \
146
  _(BOOLEAN                     , ProtectMemoryRegions      ,     , FALSE  , ()) \
147 148
  _(BOOLEAN                     , ProtectSecureBoot         ,     , FALSE  , ()) \
  _(BOOLEAN                     , ProtectUefiServices       ,     , FALSE  , ()) \
149
  _(BOOLEAN                     , ProvideCustomSlide        ,     , FALSE  , ()) \
150
  _(UINT8                       , ProvideMaxSlide           ,     , 0      , ()) \
151
  _(BOOLEAN                     , RebuildAppleMemoryMap     ,     , FALSE  , ()) \
152
  _(BOOLEAN                     , SetupVirtualMap           ,     , FALSE  , ()) \
153 154
  _(BOOLEAN                     , SignalAppleOS             ,     , FALSE  , ()) \
  _(BOOLEAN                     , SyncRuntimePermissions    ,     , FALSE  , ())
155 156 157 158 159 160
  OC_DECLARE (OC_BOOTER_QUIRKS)

///
/// Apple bootloader section.
///
#define OC_BOOTER_CONFIG_FIELDS(_, __) \
161
  _(OC_BOOTER_WL_ARRAY          , MmioWhitelist    ,     , OC_CONSTR2 (OC_BOOTER_WL_ARRAY, _, __)      , OC_DESTR (OC_BOOTER_WL_ARRAY)) \
162
  _(OC_BOOTER_PATCH_ARRAY       , Patch            ,     , OC_CONSTR2 (OC_BOOTER_PATCH_ARRAY, _, __)   , OC_DESTR (OC_BOOTER_PATCH_ARRAY)) \
163 164 165
  _(OC_BOOTER_QUIRKS            , Quirks           ,     , OC_CONSTR2 (OC_BOOTER_QUIRKS, _, __)        , OC_DESTR (OC_BOOTER_QUIRKS))
  OC_DECLARE (OC_BOOTER_CONFIG)

166 167 168 169 170 171 172
/**
  DeviceProperties section
**/

///
/// Device properties is an associative map of devices with their property key value maps.
///
173
#define OC_DEV_PROP_ADD_MAP_FIELDS(_, __) \
174
  OC_MAP (OC_STRING, OC_ASSOC, _, __)
175 176
  OC_DECLARE (OC_DEV_PROP_ADD_MAP)

177
#define OC_DEV_PROP_DELETE_ENTRY_FIELDS(_, __) \
178
  OC_ARRAY (OC_STRING, _, __)
179
  OC_DECLARE (OC_DEV_PROP_DELETE_ENTRY)
180

181 182 183
#define OC_DEV_PROP_DELETE_MAP_FIELDS(_, __) \
  OC_MAP (OC_STRING, OC_DEV_PROP_DELETE_ENTRY, _, __)
  OC_DECLARE (OC_DEV_PROP_DELETE_MAP)
184

185
#define OC_DEV_PROP_CONFIG_FIELDS(_, __) \
186 187
  _(OC_DEV_PROP_ADD_MAP       , Add              ,     , OC_CONSTR2 (OC_DEV_PROP_ADD_MAP, _, __)    , OC_DESTR (OC_DEV_PROP_ADD_MAP)) \
  _(OC_DEV_PROP_DELETE_MAP    , Delete           ,     , OC_CONSTR2 (OC_DEV_PROP_DELETE_MAP, _, __) , OC_DESTR (OC_DEV_PROP_DELETE_MAP))
188
  OC_DECLARE (OC_DEV_PROP_CONFIG)
189

190 191 192 193 194 195 196 197
/**
  KernelSpace section
**/

///
/// KernelSpace kext adds.
///
#define OC_KERNEL_ADD_ENTRY_FIELDS(_, __) \
198
  _(BOOLEAN                     , Enabled          ,     , FALSE                       , ()                   ) \
199
  _(OC_STRING                   , Arch             ,     , OC_STRING_CONSTR ("Any", _, __), OC_DESTR (OC_STRING) ) \
200
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
201 202
  _(OC_STRING                   , MaxKernel        ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , MinKernel        ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
203
  _(OC_STRING                   , Identifier       ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
204
  _(OC_STRING                   , BundlePath       ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
205 206 207 208 209 210
  _(OC_STRING                   , ExecutablePath   ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , PlistPath        ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(UINT8 *                     , ImageData        ,     , NULL                        , OcFreePointer        ) \
  _(UINT32                      , ImageDataSize    ,     , 0                           , ()                   ) \
  _(CHAR8 *                     , PlistData        ,     , NULL                        , OcFreePointer        ) \
  _(UINT32                      , PlistDataSize    ,     , 0                           , ()                   )
211 212 213 214 215 216 217 218 219 220
  OC_DECLARE (OC_KERNEL_ADD_ENTRY)

#define OC_KERNEL_ADD_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_KERNEL_ADD_ENTRY, _, __)
  OC_DECLARE (OC_KERNEL_ADD_ARRAY)

///
/// KernelSpace kext blocks.
///
#define OC_KERNEL_BLOCK_ENTRY_FIELDS(_, __) \
221
  _(BOOLEAN                     , Enabled          ,     , FALSE                       , ()                   ) \
222
  _(OC_STRING                   , Arch             ,     , OC_STRING_CONSTR ("Any", _, __), OC_DESTR (OC_STRING) ) \
223
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
224
  _(OC_STRING                   , Identifier       ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
225 226
  _(OC_STRING                   , MaxKernel        ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , MinKernel        ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) )
227 228 229 230 231 232
  OC_DECLARE (OC_KERNEL_BLOCK_ENTRY)

#define OC_KERNEL_BLOCK_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_KERNEL_BLOCK_ENTRY, _, __)
  OC_DECLARE (OC_KERNEL_BLOCK_ARRAY)

233 234 235 236
///
/// Kernel emulation preferences.
///
#define OC_KERNEL_EMULATE_FIELDS(_,__) \
237 238 239 240 241
  _(UINT32                      , Cpuid1Data          , [4] , {0}                         , () ) \
  _(UINT32                      , Cpuid1Mask          , [4] , {0}                         , () ) \
  _(BOOLEAN                     , DummyPowerManagement,     , FALSE                       , () ) \
  _(OC_STRING                   , MaxKernel           ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , MinKernel           ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) )
242 243
  OC_DECLARE (OC_KERNEL_EMULATE)

244 245 246 247 248 249 250
///
/// KernelSpace forced loaded kexts.
///
#define OC_KERNEL_FORCE_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_KERNEL_ADD_ENTRY, _, __)
  OC_DECLARE (OC_KERNEL_FORCE_ARRAY)

251 252 253 254
///
/// KernelSpace patches.
///
#define OC_KERNEL_PATCH_ENTRY_FIELDS(_, __) \
255
  _(OC_STRING                   , Arch             ,     , OC_STRING_CONSTR ("Any", _, __), OC_DESTR (OC_STRING) ) \
256
  _(OC_STRING                   , Base             ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
257
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
258
  _(UINT32                      , Count            ,     , 0                           , ()                   ) \
259
  _(BOOLEAN                     , Enabled          ,     , FALSE                       , ()                   ) \
260
  _(OC_DATA                     , Find             ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
261
  _(OC_STRING                   , Identifier       ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
262
  _(OC_DATA                     , Mask             ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
263 264
  _(OC_STRING                   , MaxKernel        ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , MinKernel        ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
265 266
  _(OC_DATA                     , Replace          ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
  _(OC_DATA                     , ReplaceMask      ,     , OC_EDATA_CONSTR (_, __)     , OC_DESTR (OC_DATA)   ) \
267 268
  _(UINT32                      , Limit            ,     , 0                           , ()                   ) \
  _(UINT32                      , Skip             ,     , 0                           , ()                   )
269 270 271 272 273 274 275 276 277 278
  OC_DECLARE (OC_KERNEL_PATCH_ENTRY)

#define OC_KERNEL_PATCH_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_KERNEL_PATCH_ENTRY, _, __)
  OC_DECLARE (OC_KERNEL_PATCH_ARRAY)

///
/// KernelSpace quirks.
///
#define OC_KERNEL_QUIRKS_FIELDS(_, __) \
279
  _(INT64                       , SetApfsTrimTimeout          ,     , -1     , ()) \
280
  _(BOOLEAN                     , AppleCpuPmCfgLock           ,     , FALSE  , ()) \
281
  _(BOOLEAN                     , AppleXcpmCfgLock            ,     , FALSE  , ()) \
282
  _(BOOLEAN                     , AppleXcpmExtraMsrs          ,     , FALSE  , ()) \
283
  _(BOOLEAN                     , AppleXcpmForceBoost         ,     , FALSE  , ()) \
284
  _(BOOLEAN                     , CustomSmbiosGuid            ,     , FALSE  , ()) \
285
  _(BOOLEAN                     , DisableIoMapper             ,     , FALSE  , ()) \
286
  _(BOOLEAN                     , DisableLinkeditJettison     ,     , FALSE  , ()) \
287
  _(BOOLEAN                     , DisableRtcChecksum          ,     , FALSE  , ()) \
288
  _(BOOLEAN                     , ExtendBTFeatureFlags        ,     , FALSE  , ()) \
289
  _(BOOLEAN                     , ExternalDiskIcons           ,     , FALSE  , ()) \
290
  _(BOOLEAN                     , ForceSecureBootScheme       ,     , FALSE  , ()) \
291
  _(BOOLEAN                     , IncreasePciBarSize          ,     , FALSE  , ()) \
292
  _(BOOLEAN                     , LapicKernelPanic            ,     , FALSE  , ()) \
293
  _(BOOLEAN                     , LegacyCommpage              ,     , FALSE  , ()) \
294
  _(BOOLEAN                     , PanicNoKextDump             ,     , FALSE  , ()) \
295
  _(BOOLEAN                     , PowerTimeoutKernelPanic     ,     , FALSE  , ()) \
296
  _(BOOLEAN                     , ThirdPartyDrives            ,     , FALSE  , ()) \
297
  _(BOOLEAN                     , XhciPortLimit               ,     , FALSE  , ())
298 299
  OC_DECLARE (OC_KERNEL_QUIRKS)

300 301 302 303 304 305 306 307 308
///
/// KernelSpace operation scheme.
///
#define OC_KERNEL_SCHEME_FIELDS(_, __) \
  _(OC_STRING                   , KernelArch       ,     , OC_STRING_CONSTR ("Auto", _, __), OC_DESTR (OC_STRING)) \
  _(OC_STRING                   , KernelCache      ,     , OC_STRING_CONSTR ("Auto", _, __), OC_DESTR (OC_STRING)) \
  _(BOOLEAN                     , FuzzyMatch       ,     , FALSE  , ())
  OC_DECLARE (OC_KERNEL_SCHEME)

309 310 311
#define OC_KERNEL_CONFIG_FIELDS(_, __) \
  _(OC_KERNEL_ADD_ARRAY         , Add              ,     , OC_CONSTR2 (OC_KERNEL_ADD_ARRAY, _, __)     , OC_DESTR (OC_KERNEL_ADD_ARRAY)) \
  _(OC_KERNEL_BLOCK_ARRAY       , Block            ,     , OC_CONSTR2 (OC_KERNEL_BLOCK_ARRAY, _, __)   , OC_DESTR (OC_KERNEL_BLOCK_ARRAY)) \
312
  _(OC_KERNEL_EMULATE           , Emulate          ,     , OC_CONSTR2 (OC_KERNEL_EMULATE, _, __)       , OC_DESTR (OC_KERNEL_EMULATE)) \
313
  _(OC_KERNEL_FORCE_ARRAY       , Force            ,     , OC_CONSTR2 (OC_KERNEL_FORCE_ARRAY, _, __)   , OC_DESTR (OC_KERNEL_FORCE_ARRAY)) \
314
  _(OC_KERNEL_PATCH_ARRAY       , Patch            ,     , OC_CONSTR2 (OC_KERNEL_PATCH_ARRAY, _, __)   , OC_DESTR (OC_KERNEL_PATCH_ARRAY)) \
315 316
  _(OC_KERNEL_QUIRKS            , Quirks           ,     , OC_CONSTR2 (OC_KERNEL_QUIRKS, _, __)        , OC_DESTR (OC_KERNEL_QUIRKS)) \
  _(OC_KERNEL_SCHEME            , Scheme           ,     , OC_CONSTR2 (OC_KERNEL_SCHEME, _, __)        , OC_DESTR (OC_KERNEL_SCHEME))
317 318
  OC_DECLARE (OC_KERNEL_CONFIG)

319 320 321 322
/**
  Misc section
**/

323
#define OC_MISC_BLESS_ARRAY_FIELDS(_, __) \
324
  OC_ARRAY (OC_STRING, _, __)
325
  OC_DECLARE (OC_MISC_BLESS_ARRAY)
326

327
#define OC_MISC_BOOT_FIELDS(_, __) \
328 329
  _(OC_STRING                   , PickerMode                  ,     , OC_STRING_CONSTR ("Builtin", _, __) , OC_DESTR (OC_STRING)) \
  _(OC_STRING                   , HibernateMode               ,     , OC_STRING_CONSTR ("None", _, __)    , OC_DESTR (OC_STRING)) \
330 331
  _(OC_STRING                   , LauncherOption              ,     , OC_STRING_CONSTR ("Disabled", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , LauncherPath                ,     , OC_STRING_CONSTR ("Default", _, __) , OC_DESTR (OC_STRING) ) \
V
vit9696 已提交
332
  _(UINT32                      , ConsoleAttributes           ,     , 0                                   , ())                   \
333
  _(UINT32                      , PickerAttributes            ,     , 0                                   , ())                   \
334
  _(OC_STRING                   , PickerVariant               ,     , OC_STRING_CONSTR ("Auto", _, __)    , OC_DESTR (OC_STRING)) \
335 336
  _(UINT32                      , TakeoffDelay                ,     , 0                                   , ())                   \
  _(UINT32                      , Timeout                     ,     , 0                                   , ())                   \
337
  _(BOOLEAN                     , PickerAudioAssist           ,     , FALSE                               , ())                   \
338
  _(BOOLEAN                     , HideAuxiliary               ,     , FALSE                               , ())                   \
339 340
  _(BOOLEAN                     , PollAppleHotKeys            ,     , FALSE                               , ())                   \
  _(BOOLEAN                     , ShowPicker                  ,     , FALSE                               , ())
341 342
  OC_DECLARE (OC_MISC_BOOT)

343
#define OC_MISC_DEBUG_FIELDS(_, __) \
344
  _(UINT64                      , DisplayLevel                ,     , 0            , ()) \
345 346 347
  _(UINT32                      , DisplayDelay                ,     , 0            , ()) \
  _(UINT32                      , Target                      ,     , 0            , ()) \
  _(BOOLEAN                     , AppleDebug                  ,     , FALSE        , ()) \
348
  _(BOOLEAN                     , ApplePanic                  ,     , FALSE        , ()) \
349
  _(BOOLEAN                     , DisableWatchDog             ,     , FALSE        , ()) \
350
  _(BOOLEAN                     , SerialInit                  ,     , FALSE        , ()) \
351
  _(BOOLEAN                     , SysReport                   ,     , FALSE        , ())
352 353
  OC_DECLARE (OC_MISC_DEBUG)

354 355 356
#define OCS_EXPOSE_BOOT_PATH   1U
#define OCS_EXPOSE_VERSION_VAR 2U
#define OCS_EXPOSE_VERSION_UI  4U
357
#define OCS_EXPOSE_OEM_INFO    8U
358
#define OCS_EXPOSE_VERSION     (OCS_EXPOSE_VERSION_VAR | OCS_EXPOSE_VERSION_UI)
359 360 361
#define OCS_EXPOSE_ALL_BITS (\
  OCS_EXPOSE_BOOT_PATH  | OCS_EXPOSE_VERSION_VAR | \
  OCS_EXPOSE_VERSION_UI | OCS_EXPOSE_OEM_INFO)
362

363 364 365 366 367 368
typedef enum {
  OcsVaultOptional = 0,
  OcsVaultBasic    = 1,
  OcsVaultSecure   = 2,
} OCS_VAULT_MODE;

369
#define OC_MISC_SECURITY_FIELDS(_, __) \
370
  _(OC_STRING                   , Vault                       ,      , OC_STRING_CONSTR ("Secure", _, __), OC_DESTR (OC_STRING) ) \
371
  _(OC_STRING                   , DmgLoading                  ,      , OC_STRING_CONSTR ("Signed", _, __), OC_DESTR (OC_STRING) ) \
372
  _(UINT32                      , ScanPolicy                  ,      , OC_SCAN_DEFAULT_POLICY  , ()) \
373
  _(UINT32                      , ExposeSensitiveData         ,      , OCS_EXPOSE_VERSION      , ()) \
374
  _(BOOLEAN                     , AllowNvramReset             ,      , FALSE                   , ()) \
375
  _(BOOLEAN                     , AllowSetDefault             ,      , FALSE                   , ()) \
376
  _(BOOLEAN                     , AuthRestart                 ,      , FALSE                   , ()) \
377
  _(BOOLEAN                     , BlacklistAppleUpdate        ,      , FALSE                   , ()) \
378 379 380
  _(BOOLEAN                     , EnablePassword              ,      , FALSE                   , ()) \
  _(UINT8                       , PasswordHash                , [64] , {0}                     , ()) \
  _(OC_DATA                     , PasswordSalt                ,      , OC_EDATA_CONSTR (_, __) , OC_DESTR (OC_DATA)) \
381 382
  _(OC_STRING                   , SecureBootModel             ,      , OC_STRING_CONSTR ("Default", _, __), OC_DESTR (OC_STRING) ) \
  _(UINT64                      , ApECID                      ,      , 0                       , ()) \
383
  _(UINT64                      , HaltLevel                   ,      , 0x80000000              , ())
384 385
  OC_DECLARE (OC_MISC_SECURITY)

386
#define OC_MISC_TOOLS_ENTRY_FIELDS(_, __) \
387
  _(OC_STRING                   , Arguments        ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
388
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
389
  _(BOOLEAN                     , Auxiliary        ,     , FALSE                       , ()                   ) \
390
  _(BOOLEAN                     , Enabled          ,     , FALSE                       , ()                   ) \
391 392
  _(BOOLEAN                     , RealPath         ,     , FALSE                       , ()                   ) \
  _(BOOLEAN                     , TextMode         ,     , FALSE                       , ()                   ) \
393 394 395 396 397 398 399 400
  _(OC_STRING                   , Name             ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , Path             ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) )
  OC_DECLARE (OC_MISC_TOOLS_ENTRY)

#define OC_MISC_TOOLS_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_MISC_TOOLS_ENTRY, _, __)
  OC_DECLARE (OC_MISC_TOOLS_ARRAY)

401
#define OC_MISC_CONFIG_FIELDS(_, __) \
402
  _(OC_MISC_BLESS_ARRAY        , BlessOverride   ,     , OC_CONSTR2 (OC_MISC_BLESS_ARRAY, _, __)  , OC_DESTR (OC_MISC_BLESS_ARRAY)) \
403 404 405 406 407
  _(OC_MISC_BOOT               , Boot            ,     , OC_CONSTR2 (OC_MISC_BOOT, _, __)         , OC_DESTR (OC_MISC_BOOT)) \
  _(OC_MISC_DEBUG              , Debug           ,     , OC_CONSTR2 (OC_MISC_DEBUG, _, __)        , OC_DESTR (OC_MISC_DEBUG)) \
  _(OC_MISC_SECURITY           , Security        ,     , OC_CONSTR2 (OC_MISC_SECURITY, _, __)     , OC_DESTR (OC_MISC_SECURITY)) \
  _(OC_MISC_TOOLS_ARRAY        , Entries         ,     , OC_CONSTR2 (OC_MISC_TOOLS_ARRAY, _, __)  , OC_DESTR (OC_MISC_TOOLS_ARRAY)) \
  _(OC_MISC_TOOLS_ARRAY        , Tools           ,     , OC_CONSTR2 (OC_MISC_TOOLS_ARRAY, _, __)  , OC_DESTR (OC_MISC_TOOLS_ARRAY))
408 409
  OC_DECLARE (OC_MISC_CONFIG)

V
vit9696 已提交
410 411 412 413 414 415 416 417 418 419 420
/**
  NVRAM section
**/

///
/// NVRAM values is an associative map of GUIDS with their property key value maps.
///
#define OC_NVRAM_ADD_MAP_FIELDS(_, __) \
  OC_MAP (OC_STRING, OC_ASSOC, _, __)
  OC_DECLARE (OC_NVRAM_ADD_MAP)

421
#define OC_NVRAM_DELETE_ENTRY_FIELDS(_, __) \
V
vit9696 已提交
422
  OC_ARRAY (OC_STRING, _, __)
423
  OC_DECLARE (OC_NVRAM_DELETE_ENTRY)
V
vit9696 已提交
424

425 426 427
#define OC_NVRAM_DELETE_MAP_FIELDS(_, __) \
  OC_MAP (OC_STRING, OC_NVRAM_DELETE_ENTRY, _, __)
  OC_DECLARE (OC_NVRAM_DELETE_MAP)
V
vit9696 已提交
428

429 430 431 432 433 434 435 436
#define OC_NVRAM_LEGACY_ENTRY_FIELDS(_, __) \
  OC_ARRAY (OC_STRING, _, __)
  OC_DECLARE (OC_NVRAM_LEGACY_ENTRY)

#define OC_NVRAM_LEGACY_MAP_FIELDS(_, __) \
  OC_MAP (OC_STRING, OC_NVRAM_LEGACY_ENTRY, _, __)
  OC_DECLARE (OC_NVRAM_LEGACY_MAP)

V
vit9696 已提交
437 438
#define OC_NVRAM_CONFIG_FIELDS(_, __) \
  _(OC_NVRAM_ADD_MAP           , Add               ,     , OC_CONSTR2 (OC_NVRAM_ADD_MAP, _, __)        , OC_DESTR (OC_NVRAM_ADD_MAP)) \
439
  _(OC_NVRAM_DELETE_MAP        , Delete            ,     , OC_CONSTR2 (OC_NVRAM_DELETE_MAP, _, __)     , OC_DESTR (OC_NVRAM_DELETE_MAP)) \
440
  _(OC_NVRAM_LEGACY_MAP        , Legacy            ,     , OC_CONSTR2 (OC_NVRAM_LEGACY_MAP, _, __)     , OC_DESTR (OC_NVRAM_LEGACY_MAP)) \
441 442
  _(BOOLEAN                    , LegacyEnable      ,     , FALSE                                       , () ) \
  _(BOOLEAN                    , LegacyOverwrite   ,     , FALSE                                       , () ) \
443
  _(BOOLEAN                    , WriteFlash        ,     , FALSE                                       , () )
V
vit9696 已提交
444 445
  OC_DECLARE (OC_NVRAM_CONFIG)

446 447 448 449 450
/**
  Platform information configuration
**/

#define OC_PLATFORM_GENERIC_CONFIG_FIELDS(_, __) \
451 452
  _(OC_STRING                   , SystemProductName  ,     , OC_STRING_CONSTR ("", _, __)                 , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , SystemSerialNumber ,     , OC_STRING_CONSTR ("", _, __)                 , OC_DESTR (OC_STRING) ) \
453
  _(OC_STRING                   , SystemUuid         ,     , OC_STRING_CONSTR ("", _, __)                 , OC_DESTR (OC_STRING) ) \
454
  _(OC_STRING                   , Mlb                ,     , OC_STRING_CONSTR ("", _, __)                 , OC_DESTR (OC_STRING) ) \
455
  _(OC_STRING                   , SystemMemoryStatus ,     , OC_STRING_CONSTR ("Auto", _, __)             , OC_DESTR (OC_STRING) ) \
456
  _(UINT16                      , ProcessorType      ,     , 0                                            , () )                   \
457
  _(UINT8                       , Rom                , [6] , {0}                                          , () )                   \
458
  _(BOOLEAN                     , SpoofVendor        ,     , FALSE                                        , () )                   \
459 460
  _(BOOLEAN                     , AdviseWindows      ,     , FALSE                                        , () )                   \
  _(BOOLEAN                     , MaxBIOSVersion     ,     , FALSE                                        , () )
461 462 463 464 465 466 467 468 469 470 471 472 473
  OC_DECLARE (OC_PLATFORM_GENERIC_CONFIG)

#define OC_PLATFORM_DATA_HUB_CONFIG_FIELDS(_, __) \
  _(OC_STRING                   , PlatformName        ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , SystemProductName   ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , SystemSerialNumber  ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , SystemUuid          ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , BoardProduct        ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(UINT8                       , BoardRevision       , [1] , {0}                              , () )                   \
  _(UINT64                      , StartupPowerEvents  ,     , 0                                , () )                   \
  _(UINT64                      , InitialTSC          ,     , 0                                , () )                   \
  _(UINT64                      , FSBFrequency        ,     , 0                                , () )                   \
  _(UINT64                      , ARTFrequency        ,     , 0                                , () )                   \
474
  _(UINT32                      , DevicePathsSupported,     , 0                                , () )                   \
475 476 477 478 479
  _(UINT8                       , SmcRevision         , [6] , {0}                              , () )                   \
  _(UINT8                       , SmcBranch           , [8] , {0}                              , () )                   \
  _(UINT8                       , SmcPlatform         , [8] , {0}                              , () )
  OC_DECLARE (OC_PLATFORM_DATA_HUB_CONFIG)

J
John Davis 已提交
480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505
#define OC_PLATFORM_MEMORY_DEVICE_ENTRY_FIELDS(_, __) \
  _(UINT32                      , Size                ,     , 0                                  , () )                   \
  _(UINT16                      , Speed               ,     , 0                                  , () )                   \
  _(OC_STRING                   , DeviceLocator       ,     , OC_STRING_CONSTR ("Unknown", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , BankLocator         ,     , OC_STRING_CONSTR ("Unknown", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , Manufacturer        ,     , OC_STRING_CONSTR ("Unknown", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , SerialNumber        ,     , OC_STRING_CONSTR ("Unknown", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , AssetTag            ,     , OC_STRING_CONSTR ("Unknown", _, __), OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , PartNumber          ,     , OC_STRING_CONSTR ("Unknown", _, __), OC_DESTR (OC_STRING) )
  OC_DECLARE (OC_PLATFORM_MEMORY_DEVICE_ENTRY)

#define OC_PLATFORM_MEMORY_DEVICES_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_PLATFORM_MEMORY_DEVICE_ENTRY, _, __)
  OC_DECLARE (OC_PLATFORM_MEMORY_DEVICES_ARRAY)

#define OC_PLATFORM_MEMORY_CONFIG_FIELDS(_, __) \
  _(UINT8                           , FormFactor     ,     , 0x2                                                 , () ) \
  _(UINT8                           , Type           ,     , 0x2                                                 , () ) \
  _(UINT16                          , TypeDetail     ,     , 0x4                                                 , () ) \
  _(UINT16                          , TotalWidth     ,     , 0xFFFF                                              , () ) \
  _(UINT16                          , DataWidth      ,     , 0xFFFF                                              , () ) \
  _(UINT8                           , ErrorCorrection,     , 0x3                                                 , () ) \
  _(UINT64                          , MaxCapacity    ,     , 0                                                   , () ) \
  _(OC_PLATFORM_MEMORY_DEVICES_ARRAY, Devices        ,     , OC_CONSTR3 (OC_PLATFORM_MEMORY_DEVICES_ARRAY, _, __), OC_DESTR (OC_PLATFORM_MEMORY_DEVICES_ARRAY))
  OC_DECLARE (OC_PLATFORM_MEMORY_CONFIG)

506
#define OC_PLATFORM_NVRAM_CONFIG_FIELDS(_, __) \
507 508
  _(OC_STRING                   , Bid                   ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                   , Mlb                   ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
509
  _(OC_STRING                   , SystemSerialNumber    ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
510
  _(OC_STRING                   , SystemUuid            ,     , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
511 512 513
  _(UINT8                       , Rom                   , [6] , {0}                              , ()                   ) \
  _(UINT64                      , FirmwareFeatures      ,     , 0                                , ()                   ) \
  _(UINT64                      , FirmwareFeaturesMask  ,     , 0                                , ()                   )
514 515
  OC_DECLARE (OC_PLATFORM_NVRAM_CONFIG)

516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535
#define OC_PLATFORM_SMBIOS_CONFIG_FIELDS(_, __) \
  _(OC_STRING                    , BIOSVendor            ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , BIOSVersion           ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , BIOSReleaseDate       ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , SystemManufacturer    ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , SystemProductName     ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , SystemVersion         ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , SystemSerialNumber    ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , SystemUuid            ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , SystemSKUNumber       ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , SystemFamily          ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , BoardManufacturer     ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , BoardProduct          ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , BoardVersion          ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , BoardSerialNumber     ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , BoardAssetTag         ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(UINT8                        , BoardType             ,  , 0                                , ()                   ) \
  _(OC_STRING                    , BoardLocationInChassis,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , ChassisManufacturer   ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(UINT8                        , ChassisType           ,  , 0                                , ()                   ) \
536 537 538
  _(OC_STRING                    , ChassisVersion        ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , ChassisSerialNumber   ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
  _(OC_STRING                    , ChassisAssetTag       ,  , OC_STRING_CONSTR ("", _, __)     , OC_DESTR (OC_STRING) ) \
539
  _(UINT32                       , PlatformFeature       ,  , 0xFFFFFFFFU                      , ()                   ) \
540 541
  _(UINT64                       , FirmwareFeatures      ,  , 0                                , ()                   ) \
  _(UINT64                       , FirmwareFeaturesMask  ,  , 0                                , ()                   ) \
542
  _(UINT8                        , SmcVersion            , [16] , {0}                          , ()                   ) \
J
John Davis 已提交
543
  _(UINT16                       , ProcessorType         ,  , 0                                , ()                   )
544 545 546
  OC_DECLARE (OC_PLATFORM_SMBIOS_CONFIG)

#define OC_PLATFORM_CONFIG_FIELDS(_, __) \
547 548 549 550 551 552 553 554 555 556 557 558
  _(BOOLEAN                     , Automatic          ,     , FALSE                                           , ()) \
  _(BOOLEAN                     , CustomMemory       ,     , FALSE                                           , ()) \
  _(BOOLEAN                     , UpdateDataHub      ,     , FALSE                                           , ()) \
  _(BOOLEAN                     , UpdateNvram        ,     , FALSE                                           , ()) \
  _(BOOLEAN                     , UpdateSmbios       ,     , FALSE                                           , ()) \
  _(BOOLEAN                     , UseRawUuidEncoding ,     , FALSE                                           , ()) \
  _(OC_STRING                   , UpdateSmbiosMode   ,     , OC_STRING_CONSTR ("Create", _, __)              , OC_DESTR (OC_STRING) ) \
  _(OC_PLATFORM_GENERIC_CONFIG  , Generic            ,     , OC_CONSTR2 (OC_PLATFORM_GENERIC_CONFIG, _, __)  , OC_DESTR (OC_PLATFORM_GENERIC_CONFIG)) \
  _(OC_PLATFORM_DATA_HUB_CONFIG , DataHub            ,     , OC_CONSTR2 (OC_PLATFORM_DATA_HUB_CONFIG, _, __) , OC_DESTR (OC_PLATFORM_DATA_HUB_CONFIG)) \
  _(OC_PLATFORM_MEMORY_CONFIG   , Memory             ,     , OC_CONSTR2 (OC_PLATFORM_MEMORY_CONFIG, _, __)   , OC_DESTR (OC_PLATFORM_MEMORY_CONFIG)) \
  _(OC_PLATFORM_NVRAM_CONFIG    , Nvram              ,     , OC_CONSTR2 (OC_PLATFORM_NVRAM_CONFIG, _, __)    , OC_DESTR (OC_PLATFORM_NVRAM_CONFIG)) \
  _(OC_PLATFORM_SMBIOS_CONFIG   , Smbios             ,     , OC_CONSTR2 (OC_PLATFORM_SMBIOS_CONFIG, _, __)   , OC_DESTR (OC_PLATFORM_SMBIOS_CONFIG))
559 560
  OC_DECLARE (OC_PLATFORM_CONFIG)

561 562 563 564 565 566 567 568 569 570 571 572

/**
  Uefi section
**/

///
/// Drivers is a sorted array of strings containing driver paths.
///
#define OC_UEFI_DRIVER_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_STRING, _, __)
  OC_DECLARE (OC_UEFI_DRIVER_ARRAY)

V
vit9696 已提交
573 574 575 576 577 578
///
/// APFS is a set of options for APFS file system support.
///
#define OC_UEFI_APFS_FIELDS(_, __) \
  _(UINT64                      , MinVersion         ,     , 0                             , ()) \
  _(UINT32                      , MinDate            ,     , 0                             , ()) \
579
  _(BOOLEAN                     , EnableJumpstart    ,     , FALSE                         , ()) \
580
  _(BOOLEAN                     , GlobalConnect      ,     , FALSE                         , ()) \
V
vit9696 已提交
581 582
  _(BOOLEAN                     , HideVerbose        ,     , FALSE                         , ()) \
  _(BOOLEAN                     , JumpstartHotPlug   ,     , FALSE                         , ())
V
vit9696 已提交
583 584
  OC_DECLARE (OC_UEFI_APFS)

585 586 587 588
///
/// Audio is a set of options for sound configuration.
///
#define OC_UEFI_AUDIO_FIELDS(_, __) \
589 590 591 592 593 594 595
  _(OC_STRING                   , AudioDevice        ,     , OC_STRING_CONSTR ("", _, __)      , OC_DESTR (OC_STRING)) \
  _(OC_STRING                   , PlayChime          ,     , OC_STRING_CONSTR ("Auto", _, __)  , OC_DESTR (OC_STRING)) \
  _(UINT32                      , SetupDelay         ,     , 0                                 , ()) \
  _(UINT16                      , VolumeAmplifier    ,     , 0                                 , ()) \
  _(BOOLEAN                     , AudioSupport       ,     , FALSE                             , ()) \
  _(UINT8                       , AudioCodec         ,     , 0                                 , ()) \
  _(UINT8                       , AudioOut           ,     , 0                                 , ()) \
596 597
  _(UINT8                       , MinimumVolume      ,     , 0                                 , ()) \
  _(BOOLEAN                     , ResetTrafficClass  ,     , FALSE                             , ())
598 599
  OC_DECLARE (OC_UEFI_AUDIO)

D
Download-Fritz 已提交
600 601 602 603
///
/// Input is a set of options to support advanced input.
///
#define OC_UEFI_INPUT_FIELDS(_, __) \
604 605 606 607 608
  _(OC_STRING                   , KeySupportMode     ,     , OC_STRING_CONSTR ("Auto", _, __)  , OC_DESTR (OC_STRING)) \
  _(OC_STRING                   , PointerSupportMode ,     , OC_STRING_CONSTR ("", _, __)      , OC_DESTR (OC_STRING)) \
  _(UINT32                      , TimerResolution    ,     , 0                                 , ()) \
  _(UINT8                       , KeyForgetThreshold ,     , 0                                 , ()) \
  _(BOOLEAN                     , KeySupport         ,     , FALSE                             , ()) \
M
MikeBeaton 已提交
609
  _(BOOLEAN                     , KeySkipFirstDelay  ,     , FALSE                             , ()) \
610 611 612
  _(BOOLEAN                     , KeyFiltering       ,     , FALSE                             , ()) \
  _(BOOLEAN                     , KeySwap            ,     , FALSE                             , ()) \
  _(BOOLEAN                     , PointerSupport     ,     , FALSE                             , ())
V
vit9696 已提交
613
  OC_DECLARE (OC_UEFI_INPUT)
D
Download-Fritz 已提交
614

615
///
V
vit9696 已提交
616
/// Output is a set of options to support advanced output.
617 618 619 620 621 622 623 624 625 626
///
#define OC_UEFI_OUTPUT_FIELDS(_, __) \
  _(OC_STRING                   , ConsoleMode                 ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING)) \
  _(OC_STRING                   , Resolution                  ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING)) \
  _(OC_STRING                   , TextRenderer                ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING)) \
  _(BOOLEAN                     , IgnoreTextInGraphics        ,     , FALSE  , ()) \
  _(BOOLEAN                     , ClearScreenOnModeSwitch     ,     , FALSE  , ()) \
  _(BOOLEAN                     , ProvideConsoleGop           ,     , FALSE  , ()) \
  _(BOOLEAN                     , ReplaceTabWithSpace         ,     , FALSE  , ()) \
  _(BOOLEAN                     , ReconnectOnResChange        ,     , FALSE  , ()) \
627
  _(BOOLEAN                     , SanitiseClearScreen         ,     , FALSE  , ()) \
628
  _(BOOLEAN                     , UgaPassThrough              ,     , FALSE  , ()) \
629
  _(BOOLEAN                     , GopPassThrough              ,     , FALSE  , ()) \
630 631
  _(BOOLEAN                     , DirectGopRendering          ,     , FALSE  , ()) \
  _(BOOLEAN                     , ForceResolution             ,     , FALSE  , ())
V
vit9696 已提交
632
  OC_DECLARE (OC_UEFI_OUTPUT)
633

634 635 636
///
/// Prefer own protocol implementation for these protocols.
///
637
#define OC_UEFI_PROTOCOL_OVERRIDES_FIELDS(_, __) \
638
  _(BOOLEAN                     , AppleAudio                  ,     , FALSE  , ()) \
639
  _(BOOLEAN                     , AppleBootPolicy             ,     , FALSE  , ()) \
640
  _(BOOLEAN                     , AppleDebugLog               ,     , FALSE  , ()) \
641
  _(BOOLEAN                     , AppleEvent                  ,     , FALSE  , ()) \
642
  _(BOOLEAN                     , AppleFramebufferInfo        ,     , FALSE  , ()) \
643
  _(BOOLEAN                     , AppleImageConversion        ,     , FALSE  , ()) \
644
  _(BOOLEAN                     , AppleImg4Verification       ,     , FALSE  , ()) \
645
  _(BOOLEAN                     , AppleKeyMap                 ,     , FALSE  , ()) \
646
  _(BOOLEAN                     , AppleRtcRam                 ,     , FALSE  , ()) \
647
  _(BOOLEAN                     , AppleSecureBoot             ,     , FALSE  , ()) \
648
  _(BOOLEAN                     , AppleSmcIo                  ,     , FALSE  , ()) \
649
  _(BOOLEAN                     , AppleUserInterfaceTheme     ,     , FALSE  , ()) \
650
  _(BOOLEAN                     , DataHub                     ,     , FALSE  , ()) \
651 652 653
  _(BOOLEAN                     , DeviceProperties            ,     , FALSE  , ()) \
  _(BOOLEAN                     , FirmwareVolume              ,     , FALSE  , ()) \
  _(BOOLEAN                     , HashServices                ,     , FALSE  , ()) \
654
  _(BOOLEAN                     , OSInfo                      ,     , FALSE  , ()) \
655
  _(BOOLEAN                     , UnicodeCollation            ,     , FALSE  , ())
656
  OC_DECLARE (OC_UEFI_PROTOCOL_OVERRIDES)
657 658

///
659
/// Quirks is a set of hacks for different types of firmware.
660 661
///
#define OC_UEFI_QUIRKS_FIELDS(_, __) \
662
  _(UINT32                      , ExitBootServicesDelay       ,     , 0      , ()) \
663
  _(UINT32                      , TscSyncTimeout              ,     , 0      , ()) \
664
  _(BOOLEAN                     , ActivateHpetSupport         ,     , FALSE  , ()) \
665
  _(BOOLEAN                     , DisableSecurityPolicy       ,     , FALSE  , ()) \
666 667 668
  _(BOOLEAN                     , IgnoreInvalidFlexRatio      ,     , FALSE  , ()) \
  _(BOOLEAN                     , ReleaseUsbOwnership         ,     , FALSE  , ()) \
  _(BOOLEAN                     , RequestBootVarRouting       ,     , FALSE  , ()) \
669
  _(BOOLEAN                     , UnblockFsConnect            ,     , FALSE  , ())
670 671
  OC_DECLARE (OC_UEFI_QUIRKS)

672 673 674 675 676 677 678
///
/// Reserved memory entries adds.
///
#define OC_UEFI_RSVD_ENTRY_FIELDS(_, __) \
  _(UINT64                      , Address          ,     , 0       , () ) \
  _(UINT64                      , Size             ,     , 0       , () ) \
  _(BOOLEAN                     , Enabled          ,     , FALSE   , () ) \
679
  _(OC_STRING                   , Type             ,     , OC_STRING_CONSTR ("Reserved", _, __), OC_DESTR (OC_STRING) ) \
680 681 682 683 684 685 686
  _(OC_STRING                   , Comment          ,     , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING) )
  OC_DECLARE (OC_UEFI_RSVD_ENTRY)

#define OC_UEFI_RSVD_ARRAY_FIELDS(_, __) \
  OC_ARRAY (OC_UEFI_RSVD_ENTRY, _, __)
  OC_DECLARE (OC_UEFI_RSVD_ARRAY)

687 688 689 690
///
/// Uefi contains firmware tweaks and extra drivers.
///
#define OC_UEFI_CONFIG_FIELDS(_, __) \
691 692 693 694 695 696 697 698 699
  _(BOOLEAN                     , ConnectDrivers    ,     , FALSE                                          , ()) \
  _(OC_UEFI_APFS                , Apfs              ,     , OC_CONSTR2 (OC_UEFI_APFS, _, __)               , OC_DESTR (OC_UEFI_APFS)) \
  _(OC_UEFI_AUDIO               , Audio             ,     , OC_CONSTR2 (OC_UEFI_AUDIO, _, __)              , OC_DESTR (OC_UEFI_AUDIO)) \
  _(OC_UEFI_DRIVER_ARRAY        , Drivers           ,     , OC_CONSTR2 (OC_UEFI_DRIVER_ARRAY, _, __)       , OC_DESTR (OC_UEFI_DRIVER_ARRAY)) \
  _(OC_UEFI_INPUT               , Input             ,     , OC_CONSTR2 (OC_UEFI_INPUT, _, __)              , OC_DESTR (OC_UEFI_INPUT)) \
  _(OC_UEFI_OUTPUT              , Output            ,     , OC_CONSTR2 (OC_UEFI_OUTPUT, _, __)             , OC_DESTR (OC_UEFI_OUTPUT)) \
  _(OC_UEFI_PROTOCOL_OVERRIDES  , ProtocolOverrides ,     , OC_CONSTR2 (OC_UEFI_PROTOCOL_OVERRIDES, _, __) , OC_DESTR (OC_UEFI_PROTOCOL_OVERRIDES)) \
  _(OC_UEFI_QUIRKS              , Quirks            ,     , OC_CONSTR2 (OC_UEFI_QUIRKS, _, __)             , OC_DESTR (OC_UEFI_QUIRKS)) \
  _(OC_UEFI_RSVD_ARRAY          , ReservedMemory    ,     , OC_CONSTR2 (OC_UEFI_RSVD_ARRAY, _, __)         , OC_DESTR (OC_UEFI_RSVD_ARRAY))
700 701 702 703 704 705 706
  OC_DECLARE (OC_UEFI_CONFIG)

/**
  Root configuration
**/

#define OC_GLOBAL_CONFIG_FIELDS(_, __) \
707
  _(OC_ACPI_CONFIG              , Acpi              ,     , OC_CONSTR1 (OC_ACPI_CONFIG, _, __)      , OC_DESTR (OC_ACPI_CONFIG)) \
708
  _(OC_BOOTER_CONFIG            , Booter            ,     , OC_CONSTR1 (OC_BOOTER_CONFIG, _, __)    , OC_DESTR (OC_BOOTER_CONFIG)) \
709
  _(OC_DEV_PROP_CONFIG          , DeviceProperties  ,     , OC_CONSTR1 (OC_DEV_PROP_CONFIG, _, __)  , OC_DESTR (OC_DEV_PROP_CONFIG)) \
710
  _(OC_KERNEL_CONFIG            , Kernel            ,     , OC_CONSTR1 (OC_KERNEL_CONFIG, _, __)    , OC_DESTR (OC_KERNEL_CONFIG)) \
711
  _(OC_MISC_CONFIG              , Misc              ,     , OC_CONSTR1 (OC_MISC_CONFIG, _, __)      , OC_DESTR (OC_MISC_CONFIG)) \
V
vit9696 已提交
712
  _(OC_NVRAM_CONFIG             , Nvram             ,     , OC_CONSTR1 (OC_NVRAM_CONFIG, _, __)     , OC_DESTR (OC_NVRAM_CONFIG)) \
713
  _(OC_PLATFORM_CONFIG          , PlatformInfo      ,     , OC_CONSTR1 (OC_PLATFORM_CONFIG, _, __)  , OC_DESTR (OC_PLATFORM_CONFIG)) \
714 715 716
  _(OC_UEFI_CONFIG              , Uefi              ,     , OC_CONSTR1 (OC_UEFI_CONFIG, _, __)      , OC_DESTR (OC_UEFI_CONFIG))
  OC_DECLARE (OC_GLOBAL_CONFIG)

717 718 719
/**
  Initialize configuration with plist data.

720 721 722 723
  @param[out]     Config      Configuration structure.
  @param[in]      Buffer      Configuration buffer in plist format.
  @param[in]      Size        Configuration buffer size.
  @param[in,out]  ErrorCount  Errors detected duing initialisation. Optional.
724 725 726 727 728

  @retval  EFI_SUCCESS on success
**/
EFI_STATUS
OcConfigurationInit (
729 730 731 732
      OUT  OC_GLOBAL_CONFIG   *Config,
  IN       VOID               *Buffer,
  IN       UINT32             Size,
  IN  OUT  UINT32             *ErrorCount  OPTIONAL
733 734 735 736 737 738 739 740 741 742 743 744
  );

/**
  Free configuration structure.

  @param[in,out]  Config   Configuration structure.
**/
VOID
OcConfigurationFree (
  IN OUT OC_GLOBAL_CONFIG   *Config
  );

745
#endif // OC_CONFIGURATION_LIB_H