From 23d64dda6b61f86cdeac40b465144845f60406f4 Mon Sep 17 00:00:00 2001 From: vanjeff Date: Tue, 8 Apr 2008 09:34:21 +0000 Subject: 1.Port Platform driver override protocol utility application in MdeModulePkg.dsc. 2.Update PlatDriOverLib library to use EFI Loaded Image Device Path Protocol to avoid "reconnect -r" issue for Platform driver override utility application. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5006 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Application/PlatOverMngr/PlatOverMngr.h | 184 +++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.h (limited to 'MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.h') diff --git a/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.h b/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.h new file mode 100644 index 0000000000..2c19effb24 --- /dev/null +++ b/MdeModulePkg/Application/PlatOverMngr/PlatOverMngr.h @@ -0,0 +1,184 @@ +/** @file + +Copyright (c) 2007 - 2008, 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: + + PlatOverMngr.h + +Abstract: + + Function prototype for platform driver override manager driver + +**/ + +#ifndef _PLAT_OVER_MNGR_H_ +#define _PLAT_OVER_MNGR_H_ + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MIN_ALIGNMENT_SIZE 4 +#define ALIGN_SIZE(a) ((a % MIN_ALIGNMENT_SIZE) ? MIN_ALIGNMENT_SIZE - (a % MIN_ALIGNMENT_SIZE) : 0) + + +#define EFI_CALLBACK_INFO_SIGNATURE EFI_SIGNATURE_32 ('C', 'l', 'b', 'k') +#define EFI_CALLBACK_INFO_FROM_THIS(a) CR (a, EFI_CALLBACK_INFO, ConfigAccess, EFI_CALLBACK_INFO_SIGNATURE) +#define MAX_CHOICE_NUM 0x100 +#define UPDATE_DATA_SIZE 0x1000 + + +extern UINT8 VfrBin[]; + +extern UINT8 PlatOverMngrStrings[]; + +// +// Following definition is the same as in vfr file +// +#define PLAT_OVER_MNGR_GUID \ + { \ + 0x8614567d, 0x35be, 0x4415, 0x8d, 0x88, 0xbd, 0x7d, 0xc, 0x9c, 0x70, 0xc0 \ + } + +typedef struct { + UINT8 DriSelection[100]; + UINT8 DriOrder[100]; + UINT8 PciDeviceFilter; +} PLAT_OVER_MNGR_DATA; + +#define FORM_ID_DEVICE 0x1234 +#define FORM_ID_DRIVER 0x1200 +#define FORM_ID_ORDER 0x1500 + +#define KEY_VALUE_DEVICE_OFFSET 0x0100 +#define KEY_VALUE_DEVICE_MAX 0x04ff + +#define QUESTION_ID_OFFSET 0x0500 + +#define KEY_VALUE_DEVICE_REFRESH 0x1234 +#define KEY_VALUE_DEVICE_FILTER 0x1235 +#define KEY_VALUE_DEVICE_CLEAR 0x1236 + +#define KEY_VALUE_DRIVER_GOTO_PREVIOUS 0x1300 +#define KEY_VALUE_DRIVER_GOTO_ORDER 0x1301 + +#define KEY_VALUE_ORDER_GOTO_PREVIOUS 0x2000 +#define KEY_VALUE_ORDER_SAVE_AND_EXIT 0x1800 + +#define VARSTORE_ID_PLAT_OVER_MNGR 0x1000 + +// +// Question Id start from 1, so define an offset for it +// +#define VAR_OFFSET(Field) ((UINTN) &(((PLAT_OVER_MNGR_DATA *) 0)->Field)) + +#define DRIVER_SELECTION_VAR_OFFSET (VAR_OFFSET (DriSelection)) +#define DRIVER_ORDER_VAR_OFFSET (VAR_OFFSET (DriOrder)) + +#define DRIVER_SELECTION_QUESTION_ID (VAR_OFFSET (DriSelection) + QUESTION_ID_OFFSET) +#define DRIVER_ORDER_QUESTION_ID (VAR_OFFSET (DriOrder) + QUESTION_ID_OFFSET) + +typedef struct { + UINTN Signature; + + EFI_HANDLE DriverHandle; + EFI_HII_HANDLE RegisteredHandle; + PLAT_OVER_MNGR_DATA FakeNvData; + + EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting; + + EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; +} EFI_CALLBACK_INFO; + +typedef struct { + EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration; + EFI_HANDLE DriverImageHandle; + EFI_HANDLE ControllerHandle; + EFI_HANDLE ChildControllerHandle; + // + // To avoid created string leak in Hii database, use this token to reuse every token created by the driver + // + EFI_STRING_ID DescriptionToken; +} CFG_PROTOCOL_INVOKER_CHOICE; + +EFI_STATUS +EFIAPI +PlatOverMngrExtractConfig ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results + ); + +EFI_STATUS +EFIAPI +PlatOverMngrRouteConfig ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress + ); + +EFI_STATUS +EFIAPI +PlatOverMngrCallback ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID KeyValue, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + ); + +CHAR16 * +GetImageName ( + IN EFI_LOADED_IMAGE_PROTOCOL *Image + ); + +CHAR16 * +DevicePathToStr ( + EFI_DEVICE_PATH_PROTOCOL *DevPath + ); + + +EFI_DEVICE_PATH_PROTOCOL * +UnpackDevicePath ( + IN EFI_DEVICE_PATH_PROTOCOL *DevPath + ); + +#endif -- cgit v1.2.3