diff options
author | lgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-04-22 03:18:37 +0000 |
---|---|---|
committer | lgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-04-22 03:18:37 +0000 |
commit | 0a1147ed7a578b8dcc4552d4da3efb9a48cea812 (patch) | |
tree | 7dfdf2d08350c9cc8837901ce3b8d48b7ae3b3cf /MdeModulePkg/Universal/SetupBrowserDxe/Setup.c | |
parent | 96f99e1df863aea8dc8ecadb29e799545c9d1924 (diff) | |
download | edk2-platforms-0a1147ed7a578b8dcc4552d4da3efb9a48cea812.tar.xz |
Update SetUp Browser doesn't set a default value to Numeric field per UEFI spec. And Update Setup Browser driver parse the introduced IFR FormSet classguid in UEFI2.1.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8146 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/SetupBrowserDxe/Setup.c')
-rw-r--r-- | MdeModulePkg/Universal/SetupBrowserDxe/Setup.c | 62 |
1 files changed, 38 insertions, 24 deletions
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c index f5963ce2fe..b66b9e1e19 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c @@ -29,8 +29,8 @@ EFI_HII_DATABASE_PROTOCOL *mHiiDatabase; EFI_HII_STRING_PROTOCOL *mHiiString;
EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRouting;
-BANNER_DATA *BannerData;
-EFI_HII_HANDLE FrontPageHandle;
+BANNER_DATA *gBannerData;
+EFI_HII_HANDLE gFrontPageHandle;
UINTN gClassOfVfr;
UINTN gFunctionKeySetting;
BOOLEAN gResetRequired;
@@ -268,7 +268,7 @@ SendForm ( InitializeBrowserStrings ();
gFunctionKeySetting = DEFAULT_FUNCTION_KEY_SETTING;
- gClassOfVfr = EFI_SETUP_APPLICATION_SUBCLASS;
+ gClassOfVfr = FORMSET_CLASS_PLATFORM_SETUP;
//
// Ensure we are in Text mode
@@ -564,8 +564,8 @@ InitializeSetup ( //
// Initialize Driver private data
//
- BannerData = AllocateZeroPool (sizeof (BANNER_DATA));
- ASSERT (BannerData != NULL);
+ gBannerData = AllocateZeroPool (sizeof (BANNER_DATA));
+ ASSERT (gBannerData != NULL);
//
// Install FormBrowser2 protocol
@@ -1874,21 +1874,16 @@ GetQuestionDefault ( // For Questions without default
//
switch (Question->Operand) {
- case EFI_IFR_NUMERIC_OP:
- //
- // Take minimal value as numeric's default value
- //
- HiiValue->Value.u64 = Question->Minimum;
- break;
-
case EFI_IFR_ONE_OF_OP:
//
// Take first oneof option as oneof's default value
//
- Link = GetFirstNode (&Question->OptionListHead);
- if (!IsNull (&Question->OptionListHead, Link)) {
- Option = QUESTION_OPTION_FROM_LINK (Link);
- CopyMem (HiiValue, &Option->Value, sizeof (EFI_HII_VALUE));
+ if (ValueToOption (Question, HiiValue) == NULL) {
+ Link = GetFirstNode (&Question->OptionListHead);
+ if (!IsNull (&Question->OptionListHead, Link)) {
+ Option = QUESTION_OPTION_FROM_LINK (Link);
+ CopyMem (HiiValue, &Option->Value, sizeof (EFI_HII_VALUE));
+ }
}
break;
@@ -1948,11 +1943,11 @@ ExtractFormDefault ( Link = GetNextNode (&Form->StatementListHead, Link);
//
- // If Question is suppressed, don't reset it to default
+ // If Question is disabled, don't reset it to default
//
- if (Question->SuppressExpression != NULL) {
- Status = EvaluateExpression (FormSet, Form, Question->SuppressExpression);
- if (!EFI_ERROR (Status) && Question->SuppressExpression->Result.Value.b) {
+ if (Question->DisableExpression != NULL) {
+ Status = EvaluateExpression (FormSet, Form, Question->DisableExpression);
+ if (!EFI_ERROR (Status) && Question->DisableExpression->Result.Value.b) {
continue;
}
}
@@ -2167,6 +2162,10 @@ GetIfrBinaryData ( BOOLEAN ReturnDefault;
UINT32 PackageListLength;
EFI_HII_PACKAGE_HEADER PackageHeader;
+ UINT8 Index;
+ UINT8 NumberOfClassGuid;
+ BOOLEAN IsSetupClassGuid;
+ EFI_GUID *ClassGuid;
OpCodeData = NULL;
Package = NULL;
@@ -2222,7 +2221,21 @@ GetIfrBinaryData ( // Check whether return default FormSet
//
if (ReturnDefault) {
- break;
+ //
+ // Check ClassGuid of formset OpCode
+ //
+ IsSetupClassGuid = FALSE;
+ NumberOfClassGuid = ((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3;
+ ClassGuid = (EFI_GUID *) (OpCodeData + sizeof (EFI_IFR_FORM_SET));
+ for (Index = 0; Index < NumberOfClassGuid; Index++) {
+ if (CompareGuid (ClassGuid + Index, &gEfiHiiPlatformSetupFormsetGuid)) {
+ IsSetupClassGuid = TRUE;
+ break;
+ }
+ }
+ if (IsSetupClassGuid) {
+ break;
+ }
}
//
@@ -2341,9 +2354,10 @@ InitializeFormSet ( return Status;
}
- gClassOfVfr = FormSet->SubClass;
- if (gClassOfVfr == EFI_FRONT_PAGE_SUBCLASS) {
- FrontPageHandle = FormSet->HiiHandle;
+ gClassOfVfr = FORMSET_CLASS_PLATFORM_SETUP;
+ if (FormSet->SubClass == EFI_FRONT_PAGE_SUBCLASS) {
+ gClassOfVfr = FORMSET_CLASS_FRONT_PAGE;
+ gFrontPageHandle = FormSet->HiiHandle;
}
//
|