summaryrefslogtreecommitdiff
path: root/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr
diff options
context:
space:
mode:
authorbbahnsen <bbahnsen@6f19259b-4bc3-4df7-8a09-765794883524>2006-04-21 22:54:32 +0000
committerbbahnsen <bbahnsen@6f19259b-4bc3-4df7-8a09-765794883524>2006-04-21 22:54:32 +0000
commit878ddf1fc3540a715f63594ed22b6929e881afb4 (patch)
treec56c44dac138137b510e1fba7c3efe5e4d84bea2 /EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr
downloadedk2-878ddf1fc3540a715f63594ed22b6929e881afb4.zip
edk2-878ddf1fc3540a715f63594ed22b6929e881afb4.tar.gz
edk2-878ddf1fc3540a715f63594ed22b6929e881afb4.tar.bz2
Initial import.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr')
-rw-r--r--EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c482
-rw-r--r--EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.h59
-rw-r--r--EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManagerStrings.unibin0 -> 4232 bytes
-rw-r--r--EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManagerVfr.Vfr75
4 files changed, 616 insertions, 0 deletions
diff --git a/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c
new file mode 100644
index 0000000..0e73a4e
--- /dev/null
+++ b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.c
@@ -0,0 +1,482 @@
+/*++
+
+Copyright (c) 2006, 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
+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.
+
+Module Name:
+
+ DeviceManager.c
+
+Abstract:
+
+ The platform device manager reference implement
+
+--*/
+#include "DeviceManager.h"
+
+STATIC UINT16 mTokenCount;
+EFI_FRONTPAGE_CALLBACK_INFO FPCallbackInfo;
+extern UINTN gCallbackKey;
+extern EFI_FORM_BROWSER_PROTOCOL *gBrowser;
+extern EFI_GUID gBdsStringPackGuid;
+extern BOOLEAN gConnectAllHappened;
+
+STRING_REF gStringTokenTable[] = {
+ STR_VIDEO_DEVICE,
+ STR_NETWORK_DEVICE,
+ STR_INPUT_DEVICE,
+ STR_ON_BOARD_DEVICE,
+ STR_OTHER_DEVICE,
+ STR_EMPTY_STRING,
+ 0xFFFF
+};
+
+EFI_STATUS
+EFIAPI
+DeviceManagerCallbackRoutine (
+ IN EFI_FORM_CALLBACK_PROTOCOL *This,
+ IN UINT16 KeyValue,
+ IN EFI_IFR_DATA_ARRAY *DataArray,
+ OUT EFI_HII_CALLBACK_PACKET **Packet
+ )
+/*++
+
+Routine Description:
+
+ This is the function that is called to provide results data to the driver. This data
+ consists of a unique key which is used to identify what data is either being passed back
+ or being asked for.
+
+Arguments:
+
+ KeyValue - A unique value which is sent to the original exporting driver so that it
+ can identify the type of data to expect. The format of the data tends to
+ vary based on the op-code that geerated the callback.
+
+ Data - A pointer to the data being sent to the original exporting driver.
+
+Returns:
+
+--*/
+{
+ //
+ // The KeyValue corresponds in this case to the handle which was requested to be displayed
+ //
+ EFI_FRONTPAGE_CALLBACK_INFO *CallbackInfo;
+
+ CallbackInfo = EFI_FP_CALLBACK_DATA_FROM_THIS (This);
+ switch (KeyValue) {
+ case 0x2000:
+ CallbackInfo->Data.VideoBIOS = (UINT8) (UINTN) (((EFI_IFR_DATA_ENTRY *)(DataArray + 1))->Data);
+ gRT->SetVariable (
+ L"VBIOS",
+ &gEfiGlobalVariableGuid,
+ EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
+ sizeof (UINT8),
+ &CallbackInfo->Data.VideoBIOS
+ );
+ break;
+
+ default:
+ break;
+ }
+
+ gCallbackKey = KeyValue;
+ return EFI_SUCCESS;
+}
+
+EFI_STATUS
+InitializeDeviceManager (
+ VOID
+ )
+/*++
+
+Routine Description:
+
+ Initialize HII information for the FrontPage
+
+Arguments:
+ None
+
+Returns:
+
+--*/
+{
+ EFI_STATUS Status;
+ EFI_HII_PACKAGES *PackageList;
+ EFI_HII_UPDATE_DATA *UpdateData;
+
+ //
+ // Allocate space for creation of UpdateData Buffer
+ //
+ UpdateData = AllocateZeroPool (0x1000);
+ ASSERT (UpdateData != NULL);
+
+ PackageList = PreparePackages (1, &gBdsStringPackGuid, DeviceManagerVfrBin);
+ Status = Hii->NewPack (Hii, PackageList, &FPCallbackInfo.DevMgrHiiHandle);
+ gBS->FreePool (PackageList);
+
+ //
+ // This example does not implement worker functions for the NV accessor functions. Only a callback evaluator
+ //
+ FPCallbackInfo.Signature = EFI_FP_CALLBACK_DATA_SIGNATURE;
+ FPCallbackInfo.DevMgrCallback.NvRead = NULL;
+ FPCallbackInfo.DevMgrCallback.NvWrite = NULL;
+ FPCallbackInfo.DevMgrCallback.Callback = DeviceManagerCallbackRoutine;
+
+ //
+ // Install protocol interface
+ //
+ FPCallbackInfo.CallbackHandle = NULL;
+
+ Status = gBS->InstallProtocolInterface (
+ &FPCallbackInfo.CallbackHandle,
+ &gEfiFormCallbackProtocolGuid,
+ EFI_NATIVE_INTERFACE,
+ &FPCallbackInfo.DevMgrCallback
+ );
+
+ ASSERT_EFI_ERROR (Status);
+
+ //
+ // Flag update pending in FormSet
+ //
+ UpdateData->FormSetUpdate = TRUE;
+ //
+ // Register CallbackHandle data for FormSet
+ //
+ UpdateData->FormCallbackHandle = (EFI_PHYSICAL_ADDRESS) (UINTN) FPCallbackInfo.CallbackHandle;
+ //
+ // Simply registering the callback handle
+ //
+ Hii->UpdateForm (Hii, FPCallbackInfo.DevMgrHiiHandle, (EFI_FORM_LABEL) 0x0000, TRUE, UpdateData);
+
+ gBS->FreePool (UpdateData);
+ return Status;
+}
+
+EFI_STATUS
+CallDeviceManager (
+ VOID
+ )
+/*++
+
+Routine Description:
+
+ Call the browser and display the device manager
+
+Arguments:
+
+ None
+
+Returns:
+ EFI_SUCCESS - Operation is successful.
+ EFI_INVALID_PARAMETER - If the inputs to SendForm function is not valid.
+
+--*/
+{
+ EFI_STATUS Status;
+ UINTN BufferSize;
+ UINTN Count;
+ EFI_HII_HANDLE Index;
+ UINT8 *Buffer;
+ EFI_IFR_FORM_SET *FormSetData;
+ CHAR16 *String;
+ UINTN StringLength;
+ EFI_HII_UPDATE_DATA *UpdateData;
+ STRING_REF Token;
+ STRING_REF TokenHelp;
+ IFR_OPTION *IfrOptionList;
+ UINT8 *VideoOption;
+ UINTN VideoOptionSize;
+ EFI_HII_HANDLE *HiiHandles;
+ UINT16 HandleBufferLength;
+
+ IfrOptionList = NULL;
+ VideoOption = NULL;
+ HandleBufferLength = 0;
+
+ //
+ // Connect all prior to entering the platform setup menu.
+ //
+ if (!gConnectAllHappened) {
+ BdsLibConnectAllDriversToAllControllers ();
+ gConnectAllHappened = TRUE;
+ }
+ //
+ // Allocate space for creation of UpdateData Buffer
+ //
+ UpdateData = AllocateZeroPool (0x1000);
+ ASSERT (UpdateData != NULL);
+
+ Status = EFI_SUCCESS;
+ Buffer = NULL;
+ FormSetData = NULL;
+ gCallbackKey = 0;
+ if (mTokenCount == 0) {
+ Hii->NewString (Hii, NULL, FPCallbackInfo.DevMgrHiiHandle, &mTokenCount, L" ");
+ }
+
+ Token = mTokenCount;
+ TokenHelp = (UINT16) (Token + 1);
+
+ //
+ // Reset the menu
+ //
+ for (Index = 0, Count = 1; Count < 0x10000; Count <<= 1, Index++) {
+ //
+ // We will strip off all previous menu entries
+ //
+ UpdateData->DataCount = 0xFF;
+
+ //
+ // Erase entries on this label
+ //
+ Hii->UpdateForm (Hii, FPCallbackInfo.DevMgrHiiHandle, (EFI_FORM_LABEL) Count, FALSE, UpdateData);
+
+ //
+ // Did we reach the end of the Token Table?
+ //
+ if (gStringTokenTable[Index] == 0xFFFF) {
+ break;
+ }
+
+ CreateSubTitleOpCode (gStringTokenTable[Index], &UpdateData->Data);
+ //
+ // Add a single menu item - in this case a subtitle for the device type
+ //
+ UpdateData->DataCount = 1;
+
+ //
+ // Add default title for this label
+ //
+ Hii->UpdateForm (Hii, FPCallbackInfo.DevMgrHiiHandle, (EFI_FORM_LABEL) Count, TRUE, UpdateData);
+ }
+ //
+ // Add a space and an exit string. Remember since we add things at the label and push other things beyond the
+ // label down, we add this in reverse order
+ //
+ CreateSubTitleOpCode (STRING_TOKEN (STR_EXIT_STRING), &UpdateData->Data);
+ Hii->UpdateForm (Hii, FPCallbackInfo.DevMgrHiiHandle, (EFI_FORM_LABEL) Count, TRUE, UpdateData);
+ CreateSubTitleOpCode (STR_EMPTY_STRING, &UpdateData->Data);
+ Hii->UpdateForm (Hii, FPCallbackInfo.DevMgrHiiHandle, (EFI_FORM_LABEL) Count, TRUE, UpdateData);
+
+ HiiHandles = AllocateZeroPool (HandleBufferLength);
+ Hii->FindHandles (Hii, &HandleBufferLength, HiiHandles);
+
+ for (Index = 1, BufferSize = 0; Index < HandleBufferLength; Index++) {
+ //
+ // Am not initializing Buffer since the first thing checked is the size
+ // this way I can get the real buffersize in the smallest code size
+ //
+ Status = Hii->GetForms (Hii, Index, 0, &BufferSize, Buffer);
+
+ if (Status != EFI_NOT_FOUND) {
+ //
+ // BufferSize should have the real size of the forms now
+ //
+ Buffer = AllocateZeroPool (BufferSize);
+ ASSERT (Buffer != NULL);
+
+ //
+ // Am not initializing Buffer since the first thing checked is the size
+ // this way I can get the real buffersize in the smallest code size
+ //
+ Status = Hii->GetForms (Hii, Index, 0, &BufferSize, Buffer);
+
+ //
+ // Skip EFI_HII_PACK_HEADER, advance to EFI_IFR_FORM_SET data.
+ //
+ FormSetData = (EFI_IFR_FORM_SET *) (Buffer + sizeof (EFI_HII_PACK_HEADER));
+
+ //
+ // If this formset belongs in the device manager, add it to the menu
+ //
+ if (FormSetData->Class != EFI_NON_DEVICE_CLASS) {
+
+ StringLength = 0x1000;
+ String = AllocateZeroPool (StringLength);
+ ASSERT (String != NULL);
+
+ Status = Hii->GetString (Hii, Index, FormSetData->FormSetTitle, TRUE, NULL, &StringLength, String);
+ Status = Hii->NewString (Hii, NULL, FPCallbackInfo.DevMgrHiiHandle, &Token, String);
+
+ //
+ // If token value exceeded real token value - we need to add a new token values
+ //
+ if (Status == EFI_INVALID_PARAMETER) {
+ Token = 0;
+ TokenHelp = 0;
+ Status = Hii->NewString (Hii, NULL, FPCallbackInfo.DevMgrHiiHandle, &Token, String);
+ }
+
+ StringLength = 0x1000;
+ if (FormSetData->Help == 0) {
+ TokenHelp = 0;
+ } else {
+ Status = Hii->GetString (Hii, Index, FormSetData->Help, TRUE, NULL, &StringLength, String);
+ if (StringLength == 0x02) {
+ TokenHelp = 0;
+ } else {
+ Status = Hii->NewString (Hii, NULL, FPCallbackInfo.DevMgrHiiHandle, &TokenHelp, String);
+ if (Status == EFI_INVALID_PARAMETER) {
+ TokenHelp = 0;
+ Status = Hii->NewString (Hii, NULL, FPCallbackInfo.DevMgrHiiHandle, &TokenHelp, String);
+ }
+ }
+ }
+
+ gBS->FreePool (String);
+
+ CreateGotoOpCode (
+ 0x1000, // Device Manager Page
+ Token, // Description String Token
+ TokenHelp, // Description Help String Token
+ EFI_IFR_FLAG_INTERACTIVE | EFI_IFR_FLAG_NV_ACCESS, // Flag designating callback is active
+ (UINT16) Index, // Callback key value
+ &UpdateData->Data // Buffer to fill with op-code
+ );
+
+ //
+ // In the off-chance that we have lots of extra tokens allocated to the DeviceManager
+ // this ensures we are fairly re-using the tokens instead of constantly growing the token
+ // storage for this one handle. If we incremented the token value beyond what it normally
+ // would use, we will fall back into the error path which seeds the token value with a 0
+ // so that we can correctly add a token value.
+ //
+ if (TokenHelp == 0) {
+ //
+ // Since we didn't add help, only advance Token by 1
+ //
+ Token++;
+ } else {
+ Token = (UINT16) (Token + 2);
+ TokenHelp = (UINT16) (TokenHelp + 2);
+ }
+ //
+ // This for loop basically will take the Class value which is a bitmask and
+ // update the form for every active bit. There will be a label at each bit
+ // location. So if someone had a device which a class of EFI_DISK_DEVICE_CLASS |
+ // EFI_ON_BOARD_DEVICE_CLASS, this routine will unwind that mask and drop the menu entry
+ // on each corresponding label.
+ //
+ for (Count = 1; Count < 0x10000; Count <<= 1) {
+ //
+ // This is an active bit, so update the form
+ //
+ if (FormSetData->Class & Count) {
+ Hii->UpdateForm (
+ Hii,
+ FPCallbackInfo.DevMgrHiiHandle,
+ (EFI_FORM_LABEL) (FormSetData->Class & Count),
+ TRUE,
+ UpdateData
+ );
+ }
+ }
+ }
+
+ BufferSize = 0;
+ //
+ // Reset Buffer pointer to original location
+ //
+ gBS->FreePool (Buffer);
+ }
+ }
+ //
+ // Add oneof for video BIOS selection
+ //
+ VideoOption = BdsLibGetVariableAndSize (
+ L"VBIOS",
+ &gEfiGlobalVariableGuid,
+ &VideoOptionSize
+ );
+ if (NULL == VideoOption) {
+ FPCallbackInfo.Data.VideoBIOS = 0;
+ } else {
+ FPCallbackInfo.Data.VideoBIOS = VideoOption[0];
+ gBS->FreePool (VideoOption);
+ }
+
+ ASSERT (FPCallbackInfo.Data.VideoBIOS <= 1);
+
+ Status = gBS->AllocatePool (EfiBootServicesData, 2 * sizeof (IFR_OPTION), &IfrOptionList);
+ if (IfrOptionList != NULL) {
+ IfrOptionList[0].Flags = EFI_IFR_FLAG_INTERACTIVE;
+ IfrOptionList[0].Key = SET_VIDEO_BIOS_TYPE_QUESTION_ID + 0x2000;
+ IfrOptionList[0].StringToken = STRING_TOKEN (STR_ONE_OF_PCI);
+ IfrOptionList[0].Value = 0;
+ IfrOptionList[0].OptionString = NULL;
+ IfrOptionList[1].Flags = EFI_IFR_FLAG_INTERACTIVE;
+ IfrOptionList[1].Key = SET_VIDEO_BIOS_TYPE_QUESTION_ID + 0x2000;
+ IfrOptionList[1].StringToken = STRING_TOKEN (STR_ONE_OF_AGP);
+ IfrOptionList[1].Value = 1;
+ IfrOptionList[1].OptionString = NULL;
+ IfrOptionList[FPCallbackInfo.Data.VideoBIOS].Flags |= EFI_IFR_FLAG_DEFAULT;
+
+ CreateOneOfOpCode (
+ SET_VIDEO_BIOS_TYPE_QUESTION_ID,
+ (UINT8) 1,
+ STRING_TOKEN (STR_ONE_OF_VBIOS),
+ STRING_TOKEN (STR_ONE_OF_VBIOS_HELP),
+ IfrOptionList,
+ 2,
+ &UpdateData->Data
+ );
+
+ UpdateData->DataCount = 4;
+ Hii->UpdateForm (Hii, FPCallbackInfo.DevMgrHiiHandle, (EFI_FORM_LABEL) EFI_VBIOS_CLASS, TRUE, UpdateData);
+ gBS->FreePool (IfrOptionList);
+ }
+
+ Status = gBrowser->SendForm (
+ gBrowser,
+ TRUE, // Use the database
+ &FPCallbackInfo.DevMgrHiiHandle, // The HII Handle
+ 1,
+ NULL,
+ FPCallbackInfo.CallbackHandle,
+ (UINT8 *) &FPCallbackInfo.Data,
+ NULL,
+ NULL
+ );
+
+ Hii->ResetStrings (Hii, FPCallbackInfo.DevMgrHiiHandle);
+
+ //
+ // We will have returned from processing a callback - user either hit ESC to exit, or selected
+ // a target to display
+ //
+ if (gCallbackKey != 0 && gCallbackKey < 0x2000) {
+ Status = gBrowser->SendForm (
+ gBrowser,
+ TRUE, // Use the database
+ (EFI_HII_HANDLE *) &gCallbackKey, // The HII Handle
+ 1,
+ NULL,
+ NULL, // This is the handle that the interface to the callback was installed on
+ NULL,
+ NULL,
+ NULL
+ );
+
+ //
+ // Force return to Device Manager
+ //
+ gCallbackKey = 4;
+ }
+
+ if (gCallbackKey >= 0x2000) {
+ gCallbackKey = 4;
+ }
+
+ gBS->FreePool (UpdateData);
+
+ return Status;
+}
diff --git a/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.h b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.h
new file mode 100644
index 0000000..dd6d935
--- /dev/null
+++ b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManager.h
@@ -0,0 +1,59 @@
+/*++
+
+Copyright (c) 2006, 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
+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.
+
+Module Name:
+
+ DeviceManager.c
+
+Abstract:
+
+ The platform device manager reference implement
+
+Revision History
+
+--*/
+
+#ifndef _DEVICE_MANAGER_H
+#define _DEVICE_MANAGER_H
+
+#include "Generic/FrontPage.h"
+
+#define EFI_NON_DEVICE_CLASS 0x00 // Useful when you do not want something in the Device Manager
+#define EFI_DISK_DEVICE_CLASS 0x01
+#define EFI_VIDEO_DEVICE_CLASS 0x02
+#define EFI_NETWORK_DEVICE_CLASS 0x04
+#define EFI_INPUT_DEVICE_CLASS 0x08
+#define EFI_ON_BOARD_DEVICE_CLASS 0x10
+#define EFI_OTHER_DEVICE_CLASS 0x20
+
+EFI_STATUS
+EFIAPI
+DeviceManagerCallbackRoutine (
+ IN EFI_FORM_CALLBACK_PROTOCOL *This,
+ IN UINT16 KeyValue,
+ IN EFI_IFR_DATA_ARRAY *DataArray,
+ OUT EFI_HII_CALLBACK_PACKET **Packet
+ )
+;
+
+EFI_STATUS
+InitializeDeviceManager (
+ VOID
+ )
+;
+
+EFI_STATUS
+CallDeviceManager (
+ VOID
+ )
+;
+
+#endif
diff --git a/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManagerStrings.uni b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManagerStrings.uni
new file mode 100644
index 0000000..f549ff2
--- /dev/null
+++ b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManagerStrings.uni
Binary files differ
diff --git a/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManagerVfr.Vfr b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManagerVfr.Vfr
new file mode 100644
index 0000000..5497c6d
--- /dev/null
+++ b/EdkNt32Pkg/Dxe/PlatformBds/Generic/DeviceMngr/DeviceManagerVfr.Vfr
@@ -0,0 +1,75 @@
+// *++
+//
+// Copyright (c) 2006, 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
+// 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.
+//
+// Module Name:
+//
+// DeviceManagerVfr.vfr
+//
+// Abstract:
+//
+// Device Manager formset.
+//
+// Revision History:
+//
+// --*/
+
+#include "BdsStrDefs.h"
+
+#define FORMSET_GUID { 0x3ebfa8e6, 0x511d, 0x4b5b, { 0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27 } }
+
+#define EFI_DISK_DEVICE_CLASS 0x01
+#define EFI_VIDEO_DEVICE_CLASS 0x02
+#define EFI_NETWORK_DEVICE_CLASS 0x04
+#define EFI_INPUT_DEVICE_CLASS 0x08
+#define EFI_ON_BOARD_DEVICE_CLASS 0x10
+#define EFI_OTHER_DEVICE_CLASS 0x20
+#define EFI_VBIOS_CLASS 0x40
+
+#define DEVICE_MANAGER_CLASS 0x0000
+#define FRONT_PAGE_SUBCLASS 0x0003
+
+formset
+ guid = FORMSET_GUID,
+ title = STRING_TOKEN(STR_DEVICE_MANAGER_TITLE),
+ help = STRING_TOKEN(STR_EMPTY_STRING),
+ class = DEVICE_MANAGER_CLASS,
+ subclass = FRONT_PAGE_SUBCLASS,
+
+ form formid = 0x1000,
+ title = STRING_TOKEN(STR_DEVICE_MANAGER_TITLE);
+
+ //
+ // This is where devices get added to the device manager hierarchy
+ //
+ subtitle text = STRING_TOKEN(STR_DISK_DEVICE);
+ label EFI_DISK_DEVICE_CLASS;
+
+ subtitle text = STRING_TOKEN(STR_VIDEO_DEVICE);
+ label EFI_VIDEO_DEVICE_CLASS;
+
+ subtitle text = STRING_TOKEN(STR_NETWORK_DEVICE);
+ label EFI_NETWORK_DEVICE_CLASS;
+
+ subtitle text = STRING_TOKEN(STR_INPUT_DEVICE);
+ label EFI_INPUT_DEVICE_CLASS;
+
+ subtitle text = STRING_TOKEN(STR_ON_BOARD_DEVICE);
+ label EFI_ON_BOARD_DEVICE_CLASS;
+
+ subtitle text = STRING_TOKEN(STR_OTHER_DEVICE);
+ label EFI_OTHER_DEVICE_CLASS;
+
+ subtitle text = STRING_TOKEN(STR_EMPTY_STRING);
+ label EFI_VBIOS_CLASS;
+
+ endform;
+endformset;
+