X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FPlatformDriOverrideDxe%2FPlatDriOverrideDxe.c;h=1c2b02f5a909e60ea39ef43c57fe19c6907c7daa;hp=2a684c99dd0f8da79df72ae53b2c86ed8b8056fd;hb=bf4a3dbd4751b6411bdfc98bf3ac2c4f928bdfdf;hpb=284ee2e829ab2453293b7dc4539727ad6c047163 diff --git a/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c index 2a684c99dd..1c2b02f5a9 100644 --- a/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c +++ b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c @@ -13,7 +13,7 @@ 4. It save all the mapping info in NV variables which will be consumed by platform override protocol driver to publish the platform override protocol. -Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.
+Copyright (c) 2007 - 2012, Intel Corporation. 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 @@ -61,7 +61,6 @@ extern UINT8 PlatDriOverrideDxeStrings[]; // // module global data // -EFI_GUID mPlatformOverridesManagerGuid = PLAT_OVER_MNGR_GUID; CHAR16 mVariableName[] = L"Data"; LIST_ENTRY mMappingDataBase = INITIALIZE_LIST_HEAD_VARIABLE (mMappingDataBase); BOOLEAN mEnvironmentVariableRead = FALSE; @@ -92,7 +91,7 @@ HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath = { (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) } }, - EFI_CALLER_ID_GUID + PLAT_OVER_MNGR_GUID }, { END_DEVICE_PATH_TYPE, @@ -186,7 +185,7 @@ GetComponentNameWorker ( // // Find the best matching language. // - Language = GetEfiGlobalVariable (VariableName); + GetEfiGlobalVariable2 (VariableName, &Language, NULL); BestLanguage = GetBestLanguage ( ComponentName->SupportedLanguages, (BOOLEAN) (ProtocolGuid == &gEfiComponentNameProtocolGuid), @@ -400,7 +399,7 @@ UpdateDeviceSelectPage ( // HiiUpdateForm ( Private->RegisteredHandle, - &mPlatformOverridesManagerGuid, + &gPlatformOverridesManagerGuid, FORM_ID_DEVICE, StartOpCodeHandle, // Label FORM_ID_DEVICE EndOpCodeHandle // LABEL_END @@ -531,7 +530,7 @@ UpdateDeviceSelectPage ( // HiiUpdateForm ( Private->RegisteredHandle, - &mPlatformOverridesManagerGuid, + &gPlatformOverridesManagerGuid, FORM_ID_DEVICE, StartOpCodeHandle, // Label FORM_ID_DEVICE EndOpCodeHandle // LABEL_END @@ -693,7 +692,7 @@ UpdateBindingDriverSelectPage ( // HiiUpdateForm ( Private->RegisteredHandle, - &mPlatformOverridesManagerGuid, + &gPlatformOverridesManagerGuid, FORM_ID_DRIVER, StartOpCodeHandle, EndOpCodeHandle @@ -860,7 +859,7 @@ UpdateBindingDriverSelectPage ( // HiiUpdateForm ( Private->RegisteredHandle, - &mPlatformOverridesManagerGuid, + &gPlatformOverridesManagerGuid, FORM_ID_DRIVER, StartOpCodeHandle, // Label FORM_ID_DRIVER EndOpCodeHandle // LABEL_END @@ -937,7 +936,7 @@ UpdatePrioritySelectPage ( // HiiUpdateForm ( Private->RegisteredHandle, - &mPlatformOverridesManagerGuid, + &gPlatformOverridesManagerGuid, FORM_ID_ORDER, StartOpCodeHandle, EndOpCodeHandle @@ -1060,7 +1059,7 @@ UpdatePrioritySelectPage ( // HiiUpdateForm ( Private->RegisteredHandle, - &mPlatformOverridesManagerGuid, + &gPlatformOverridesManagerGuid, FORM_ID_ORDER, StartOpCodeHandle, // Label FORM_ID_ORDER EndOpCodeHandle // LABEL_END @@ -1172,7 +1171,7 @@ PlatOverMngrExtractConfig ( } *Progress = Request; - if ((Request != NULL) && !HiiIsConfigHdrMatch (Request, &mPlatformOverridesManagerGuid, mVariableName)) { + if ((Request != NULL) && !HiiIsConfigHdrMatch (Request, &gPlatformOverridesManagerGuid, mVariableName)) { return EFI_NOT_FOUND; } @@ -1190,7 +1189,7 @@ PlatOverMngrExtractConfig ( // Allocate and fill a buffer large enough to hold the template // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator // - ConfigRequestHdr = HiiConstructConfigHdr (&mPlatformOverridesManagerGuid, mVariableName, Private->DriverHandle); + ConfigRequestHdr = HiiConstructConfigHdr (&gPlatformOverridesManagerGuid, mVariableName, Private->DriverHandle); Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); ConfigRequest = AllocateZeroPool (Size); ASSERT (ConfigRequest != NULL); @@ -1263,14 +1262,14 @@ PlatOverMngrRouteConfig ( } *Progress = Configuration; - if (!HiiIsConfigHdrMatch (Configuration, &mPlatformOverridesManagerGuid, mVariableName)) { + if (!HiiIsConfigHdrMatch (Configuration, &gPlatformOverridesManagerGuid, mVariableName)) { return EFI_NOT_FOUND; } *Progress = Configuration + StrLen (Configuration); Private = EFI_CALLBACK_INFO_FROM_THIS (This); FakeNvData = &Private->FakeNvData; - if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) { + if (!HiiGetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) { // // FakeNvData can't be got from SetupBrowser, which doesn't need to be set. // @@ -1335,17 +1334,25 @@ PlatOverMngrCallback ( EFI_INPUT_KEY Key; PLAT_OVER_MNGR_DATA *FakeNvData; + if ((Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_CHANGED)) { + // + // All other action return unsupported. + // + return EFI_UNSUPPORTED; + } + + Private = EFI_CALLBACK_INFO_FROM_THIS (This); + FakeNvData = &Private->FakeNvData; + if (!HiiGetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) { + return EFI_NOT_FOUND; + } + if (Action == EFI_BROWSER_ACTION_CHANGING) { - Private = EFI_CALLBACK_INFO_FROM_THIS (This); - FakeNvData = &Private->FakeNvData; - if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) { - return EFI_NOT_FOUND; + if (Value == NULL) { + return EFI_INVALID_PARAMETER; } - - if (KeyValue == KEY_VALUE_DEVICE_REFRESH || - KeyValue == KEY_VALUE_DEVICE_FILTER || - KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS - ) { + + if (KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS) { UpdateDeviceSelectPage (Private, KeyValue, FakeNvData); // // Update page title string @@ -1381,15 +1388,6 @@ PlatOverMngrCallback ( } } - if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) { - Status = CommintChanges (Private, KeyValue, FakeNvData); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; - if (EFI_ERROR (Status)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL); - return EFI_DEVICE_ERROR; - } - } - if (KeyValue == KEY_VALUE_DEVICE_CLEAR) { // // Deletes all environment variable(s) that contain the override mappings info @@ -1398,18 +1396,40 @@ PlatOverMngrCallback ( Status = SaveOverridesMapping (&mMappingDataBase); UpdateDeviceSelectPage (Private, KeyValue, FakeNvData); } - // - // Pass changed uncommitted data back to Form Browser - // - HiiSetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL); + } else if (Action == EFI_BROWSER_ACTION_CHANGED) { + switch (KeyValue) { + case KEY_VALUE_DEVICE_REFRESH: + case KEY_VALUE_DEVICE_FILTER: + UpdateDeviceSelectPage (Private, KeyValue, FakeNvData); + // + // Update page title string + // + NewStringToken = STRING_TOKEN (STR_TITLE); + if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) { + ASSERT (FALSE); + } + break; + + case KEY_VALUE_ORDER_SAVE_AND_EXIT: + Status = CommintChanges (Private, KeyValue, FakeNvData); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; + if (EFI_ERROR (Status)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL); + return EFI_DEVICE_ERROR; + } + break; - return EFI_SUCCESS; - } + default: + break; + } + } // - // All other action return unsupported. + // Pass changed uncommitted data back to Form Browser // - return EFI_UNSUPPORTED; + HiiSetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL); + + return EFI_SUCCESS; } /** @@ -1624,7 +1644,7 @@ PlatDriOverrideDxeInit ( // Publish our HII data // mCallbackInfo->RegisteredHandle = HiiAddPackages ( - &mPlatformOverridesManagerGuid, + &gPlatformOverridesManagerGuid, mCallbackInfo->DriverHandle, VfrBin, PlatDriOverrideDxeStrings,