summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
diff options
context:
space:
mode:
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2009-04-22 03:18:37 +0000
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2009-04-22 03:18:37 +0000
commit0a1147ed7a578b8dcc4552d4da3efb9a48cea812 (patch)
tree7dfdf2d08350c9cc8837901ce3b8d48b7ae3b3cf /MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
parent96f99e1df863aea8dc8ecadb29e799545c9d1924 (diff)
downloadedk2-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.c62
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;
}
//