diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c index d7ae310573..73c4e0f362 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c @@ -25,8 +25,6 @@ Revision History #include "HiiDatabase.h" -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ - /** Calculate the number of Unicode characters of the incoming Configuration string, not including NULL terminator. @@ -447,8 +445,6 @@ OutputConfigBody ( } -#endif - /** Adjusts the size of a previously allocated buffer. @@ -660,8 +656,6 @@ HiiConfigRoutingExtractConfig ( OUT EFI_STRING *Results ) { -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ - HII_DATABASE_PRIVATE_DATA *Private; EFI_STRING StringPtr; EFI_STRING ConfigRequest; @@ -678,6 +672,15 @@ HiiConfigRoutingExtractConfig ( UINTN RemainSize; EFI_STRING TmpPtr; + // + // For size reduction, please define PcdSupportFullConfigRoutingProtocol + // as FALSE. But this renders the system to not 100% compliant with + // UEFI 2.1. Use this with caution. + // + if (!FeaturePcdGet (PcdSupportFullConfigRoutingProtocol)) { + return EFI_UNSUPPORTED; + } + if (This == NULL || Progress == NULL || Results == NULL) { return EFI_INVALID_PARAMETER; } @@ -826,9 +829,6 @@ HiiConfigRoutingExtractConfig ( } return EFI_SUCCESS; -#else - return EFI_UNSUPPORTED; -#endif } @@ -862,8 +862,6 @@ HiiConfigRoutingExportConfig ( OUT EFI_STRING *Results ) { -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ - EFI_STATUS Status; HII_DATABASE_PRIVATE_DATA *Private; LIST_ENTRY StorageListHdr; @@ -881,6 +879,15 @@ HiiConfigRoutingExportConfig ( EFI_STRING AccessResults; UINTN TmpSize; + // + // For size reduction, please define PcdSupportFullConfigRoutingProtocol + // as FALSE. But this renders the system to not 100% compliant with + // UEFI 2.1. Use this with caution. + // + if (!FeaturePcdGet (PcdSupportFullConfigRoutingProtocol)) { + return EFI_UNSUPPORTED; + } + if (This == NULL || Results == NULL) { return EFI_INVALID_PARAMETER; } @@ -1050,9 +1057,6 @@ HiiConfigRoutingExportConfig ( } return EFI_SUCCESS; -#else - return EFI_UNSUPPORTED; -#endif } @@ -1089,8 +1093,6 @@ HiiConfigRoutingRouteConfig ( OUT EFI_STRING *Progress ) { -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ - HII_DATABASE_PRIVATE_DATA *Private; EFI_STRING StringPtr; EFI_STRING ConfigResp; @@ -1106,6 +1108,15 @@ HiiConfigRoutingRouteConfig ( UINTN RemainSize; EFI_STRING TmpPtr; + // + // For size reduction, please define PcdSupportFullConfigRoutingProtocol + // as FALSE. But this renders the system to not 100% compliant with + // UEFI 2.1. Use this with caution. + // + if (!FeaturePcdGet (PcdSupportFullConfigRoutingProtocol)) { + return EFI_UNSUPPORTED; + } + if (This == NULL || Progress == NULL) { return EFI_INVALID_PARAMETER; } @@ -1240,9 +1251,6 @@ HiiConfigRoutingRouteConfig ( } return EFI_SUCCESS; -#else - return EFI_UNSUPPORTED; -#endif } @@ -1761,8 +1769,6 @@ HiiGetAltCfg ( OUT EFI_STRING *AltCfgResp ) { -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ - EFI_STATUS Status; EFI_STRING StringPtr; EFI_STRING HdrStart; @@ -1778,6 +1784,15 @@ HiiGetAltCfg ( BOOLEAN NameFlag; BOOLEAN PathFlag; + // + // For size reduction, please define PcdSupportFullConfigRoutingProtocol + // as FALSE. But this renders the system to not 100% compliant with + // UEFI 2.1. Use this with caution. + // + if (!FeaturePcdGet (PcdSupportFullConfigRoutingProtocol)) { + return EFI_UNSUPPORTED; + } + HdrStart = NULL; HdrEnd = NULL; GuidStr = NULL; @@ -1945,10 +1960,6 @@ Exit: return Status; -#else - return EFI_UNSUPPORTED; -#endif - } diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h index ac88b86d07..ad016c3d44 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h @@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include +#include #define HII_DATABASE_NOTIFY_GUID \ { \ @@ -241,9 +242,7 @@ typedef struct _HII_DATABASE_PRIVATE_DATA { LIST_ENTRY DatabaseList; LIST_ENTRY DatabaseNotifyList; EFI_HII_FONT_PROTOCOL HiiFont; -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ EFI_HII_IMAGE_PROTOCOL HiiImage; -#endif EFI_HII_STRING_PROTOCOL HiiString; EFI_HII_DATABASE_PROTOCOL HiiDatabase; EFI_HII_CONFIG_ROUTING_PROTOCOL ConfigRouting; diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf index 5bdc604700..29cd5b4cc7 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf @@ -70,7 +70,10 @@ gEfiHiiFontProtocolGuid gEfiHiiConfigAccessProtocolGuid - +[FeaturePcd.common] + gEfiMdeModulePkgTokenSpaceGuid.PcdSupportHiiImageProtocol + gEfiMdeModulePkgTokenSpaceGuid.PcdSupportFullConfigRoutingProtocol + [Depex] TRUE diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c index c7ffdfe77c..b55898de5a 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c @@ -48,15 +48,13 @@ STATIC HII_DATABASE_PRIVATE_DATA mPrivate = { HiiGetGlyph, HiiGetFontInfo }, -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ { - HiiNewImage, - HiiGetImage, - HiiSetImage, - HiiDrawImage, - HiiDrawImageId + NULL, + NULL, + NULL, + NULL, + NULL }, -#endif { HiiNewString, HiiGetString, @@ -104,6 +102,14 @@ STATIC HII_DATABASE_PRIVATE_DATA mPrivate = { NULL }; +GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_HII_IMAGE_PROTOCOL mImageProtocol = { + HiiNewImage, + HiiGetImage, + HiiSetImage, + HiiDrawImage, + HiiDrawImageId +}; + /** The default event handler for gHiiKeyboardLayoutChanged event group. @@ -180,21 +186,35 @@ InitializeHiiDatabase ( } Handle = NULL; - return gBS->InstallMultipleProtocolInterfaces ( - &Handle, - &gEfiHiiFontProtocolGuid, - &mPrivate.HiiFont, -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ - &gEfiHiiImageProtocolGuid, - &mPrivate.HiiImage, -#endif - &gEfiHiiStringProtocolGuid, - &mPrivate.HiiString, - &gEfiHiiDatabaseProtocolGuid, - &mPrivate.HiiDatabase, - &gEfiHiiConfigRoutingProtocolGuid, - &mPrivate.ConfigRouting, - NULL - ); + Status = gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEfiHiiFontProtocolGuid, + &mPrivate.HiiFont, + &gEfiHiiStringProtocolGuid, + &mPrivate.HiiString, + &gEfiHiiDatabaseProtocolGuid, + &mPrivate.HiiDatabase, + &gEfiHiiConfigRoutingProtocolGuid, + &mPrivate.ConfigRouting, + NULL + ); + + if (EFI_ERROR (Status)) { + return Status; + } + + if (FeaturePcdGet (PcdSupportHiiImageProtocol)) { + CopyMem (&mPrivate.HiiImage, &mImageProtocol, sizeof (mImageProtocol)); + + Status = gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEfiHiiImageProtocolGuid, + &mPrivate.HiiImage, + NULL + ); + + } + + return Status; } diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c b/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c index 8bba0fc21f..e570913c6f 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c @@ -16,7 +16,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include "HiiDatabase.h" -#ifndef _DISABLE_UNUSED_HII_PROTOCOLS_ /** Get the imageid of last image block: EFI_HII_IIBT_END_BLOCK when input @@ -1499,5 +1498,3 @@ HiiDrawImageId ( return Status; } -#endif -