]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c
Per UEFI spec, on CallBack action EFI_BROWSER_ACTION_CHANGING, the return value of...
[mirror_edk2.git] / MdeModulePkg / Universal / PlatformDriOverrideDxe / PlatDriOverrideDxe.c
index 865ff3265b112c44d6bebcccdb172750a0b81cc8..ab8a000f1360916ae4a421974b99934f4a3e0cbf 100644 (file)
@@ -61,7 +61,6 @@ extern UINT8  PlatDriOverrideDxeStrings[];
 //\r
 // module global data\r
 //\r
-EFI_GUID                     mPlatformOverridesManagerGuid = PLAT_OVER_MNGR_GUID;\r
 CHAR16                       mVariableName[] = L"Data";\r
 LIST_ENTRY                   mMappingDataBase = INITIALIZE_LIST_HEAD_VARIABLE (mMappingDataBase);\r
 BOOLEAN                      mEnvironmentVariableRead = FALSE;\r
@@ -92,7 +91,7 @@ HII_VENDOR_DEVICE_PATH  mHiiVendorDevicePath = {
         (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)\r
       }\r
     },\r
-    EFI_CALLER_ID_GUID\r
+    PLAT_OVER_MNGR_GUID\r
   },\r
   {\r
     END_DEVICE_PATH_TYPE,\r
@@ -400,7 +399,7 @@ UpdateDeviceSelectPage (
   //\r
   HiiUpdateForm (\r
     Private->RegisteredHandle,\r
-    &mPlatformOverridesManagerGuid,\r
+    &gPlatformOverridesManagerGuid,\r
     FORM_ID_DEVICE,\r
     StartOpCodeHandle, // Label FORM_ID_DEVICE\r
     EndOpCodeHandle    // LABEL_END\r
@@ -531,7 +530,7 @@ UpdateDeviceSelectPage (
   //\r
   HiiUpdateForm (\r
     Private->RegisteredHandle,\r
-    &mPlatformOverridesManagerGuid,\r
+    &gPlatformOverridesManagerGuid,\r
     FORM_ID_DEVICE,\r
     StartOpCodeHandle, // Label FORM_ID_DEVICE\r
     EndOpCodeHandle    // LABEL_END\r
@@ -693,7 +692,7 @@ UpdateBindingDriverSelectPage (
   //\r
   HiiUpdateForm (\r
     Private->RegisteredHandle,\r
-    &mPlatformOverridesManagerGuid,\r
+    &gPlatformOverridesManagerGuid,\r
     FORM_ID_DRIVER,\r
     StartOpCodeHandle,\r
     EndOpCodeHandle\r
@@ -860,7 +859,7 @@ UpdateBindingDriverSelectPage (
   //\r
   HiiUpdateForm (\r
     Private->RegisteredHandle,\r
-    &mPlatformOverridesManagerGuid,\r
+    &gPlatformOverridesManagerGuid,\r
     FORM_ID_DRIVER,\r
     StartOpCodeHandle, // Label FORM_ID_DRIVER\r
     EndOpCodeHandle    // LABEL_END\r
@@ -937,7 +936,7 @@ UpdatePrioritySelectPage (
   //\r
   HiiUpdateForm (\r
     Private->RegisteredHandle,\r
-    &mPlatformOverridesManagerGuid,\r
+    &gPlatformOverridesManagerGuid,\r
     FORM_ID_ORDER,\r
     StartOpCodeHandle,\r
     EndOpCodeHandle\r
@@ -1060,7 +1059,7 @@ UpdatePrioritySelectPage (
   //\r
   HiiUpdateForm (\r
     Private->RegisteredHandle,\r
-    &mPlatformOverridesManagerGuid,\r
+    &gPlatformOverridesManagerGuid,\r
     FORM_ID_ORDER,\r
     StartOpCodeHandle, // Label FORM_ID_ORDER\r
     EndOpCodeHandle    // LABEL_END\r
@@ -1172,7 +1171,7 @@ PlatOverMngrExtractConfig (
   }\r
 \r
   *Progress = Request;\r
-  if ((Request != NULL) && !HiiIsConfigHdrMatch (Request, &mPlatformOverridesManagerGuid, mVariableName)) {\r
+  if ((Request != NULL) && !HiiIsConfigHdrMatch (Request, &gPlatformOverridesManagerGuid, mVariableName)) {\r
     return EFI_NOT_FOUND;\r
   }\r
 \r
@@ -1190,7 +1189,7 @@ PlatOverMngrExtractConfig (
     // Allocate and fill a buffer large enough to hold the <ConfigHdr> template\r
     // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator\r
     //\r
-    ConfigRequestHdr = HiiConstructConfigHdr (&mPlatformOverridesManagerGuid, mVariableName, Private->DriverHandle);\r
+    ConfigRequestHdr = HiiConstructConfigHdr (&gPlatformOverridesManagerGuid, mVariableName, Private->DriverHandle);\r
     Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16);\r
     ConfigRequest = AllocateZeroPool (Size);\r
     ASSERT (ConfigRequest != NULL);\r
@@ -1263,14 +1262,14 @@ PlatOverMngrRouteConfig (
   }\r
   *Progress = Configuration;\r
 \r
-  if (!HiiIsConfigHdrMatch (Configuration, &mPlatformOverridesManagerGuid, mVariableName)) {\r
+  if (!HiiIsConfigHdrMatch (Configuration, &gPlatformOverridesManagerGuid, mVariableName)) {\r
     return EFI_NOT_FOUND;\r
   }\r
   \r
   *Progress = Configuration + StrLen (Configuration);\r
   Private    = EFI_CALLBACK_INFO_FROM_THIS (This);\r
   FakeNvData = &Private->FakeNvData;\r
-  if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
+  if (!HiiGetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
     //\r
     // FakeNvData can't be got from SetupBrowser, which doesn't need to be set.\r
     //\r
@@ -1335,17 +1334,25 @@ PlatOverMngrCallback (
   EFI_INPUT_KEY                             Key;\r
   PLAT_OVER_MNGR_DATA                       *FakeNvData;\r
 \r
+  if ((Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_CHANGED)) {\r
+    //\r
+    // All other action return unsupported.\r
+    //\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
+  FakeNvData = &Private->FakeNvData;\r
+  if (!HiiGetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
   if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
-    Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
-    FakeNvData = &Private->FakeNvData;\r
-    if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
-      return EFI_NOT_FOUND;\r
+    if (Value == NULL) {\r
+      return EFI_INVALID_PARAMETER;\r
     }\r
-\r
-    if (KeyValue == KEY_VALUE_DEVICE_REFRESH ||\r
-        KeyValue == KEY_VALUE_DEVICE_FILTER ||\r
-        KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS\r
-        ) {\r
+    \r
+    if (KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS) {\r
       UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
       //\r
       // Update page title string\r
@@ -1381,15 +1388,6 @@ PlatOverMngrCallback (
       }\r
     }\r
 \r
-    if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) {\r
-      Status = CommintChanges (Private, KeyValue, FakeNvData);\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-      if (EFI_ERROR (Status)) {\r
-        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
-        return EFI_DEVICE_ERROR;\r
-      }\r
-    }\r
-\r
     if (KeyValue == KEY_VALUE_DEVICE_CLEAR) {\r
       //\r
       // Deletes all environment variable(s) that contain the override mappings info\r
@@ -1398,18 +1396,40 @@ PlatOverMngrCallback (
       Status = SaveOverridesMapping (&mMappingDataBase);\r
       UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
     }\r
-    //\r
-    // Pass changed uncommitted data back to Form Browser\r
-    //\r
-    HiiSetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
+  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+    switch (KeyValue) {\r
+    case KEY_VALUE_DEVICE_REFRESH:\r
+    case KEY_VALUE_DEVICE_FILTER:\r
+      UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
+      //\r
+      // Update page title string\r
+      //\r
+      NewStringToken = STRING_TOKEN (STR_TITLE);\r
+      if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) {\r
+        ASSERT (FALSE);\r
+      }\r
+    break;\r
+    \r
+    case KEY_VALUE_ORDER_SAVE_AND_EXIT:\r
+      Status = CommintChanges (Private, KeyValue, FakeNvData);\r
+      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+      if (EFI_ERROR (Status)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
+        return EFI_DEVICE_ERROR;\r
+      }\r
+    break;\r
 \r
-    return EFI_SUCCESS;\r
-  } \r
+    default:\r
+    break;\r
+    }\r
+  }\r
 \r
   //\r
-  // All other action return unsupported.\r
+  // Pass changed uncommitted data back to Form Browser\r
   //\r
-  return EFI_UNSUPPORTED;\r
+  HiiSetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
+\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 /**\r
@@ -1429,10 +1449,9 @@ PlatOverMngrCallback (
                                  returned in DriverImageHandle.\r
   @retval EFI_NOT_FOUND          A driver override for ControllerHandle was not\r
                                  found.\r
-  @retval EFI_INVALID_PARAMETER  The handle specified by ControllerHandle is not a\r
-                                 valid handle. DriverImageHandle is not a handle\r
-                                 that was returned on a previous  call to\r
-                                 GetDriver().\r
+  @retval EFI_INVALID_PARAMETER  The handle specified by ControllerHandle is NULL.\r
+                                 DriverImageHandle is not a handle that was returned\r
+                                 on a previous  call to GetDriver().\r
 \r
 **/\r
 EFI_STATUS\r
@@ -1625,7 +1644,7 @@ PlatDriOverrideDxeInit (
   // Publish our HII data\r
   //\r
   mCallbackInfo->RegisteredHandle = HiiAddPackages (\r
-                                     &mPlatformOverridesManagerGuid,\r
+                                     &gPlatformOverridesManagerGuid,\r
                                      mCallbackInfo->DriverHandle,\r
                                      VfrBin,\r
                                      PlatDriOverrideDxeStrings,\r