From 239e19e391bfecd6e5322ca4f2bfc637c9d29547 Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Tue, 3 Jan 2017 21:29:52 -0600 Subject: [PATCH] BdsBoot: add boot menu text for eMMC/SD, NVMe devices Signed-off-by: Matt DeVillier --- .../Include/Library/GenericBdsLib.h | 3 ++ .../Library/GenericBdsLib/BdsBoot.c | 54 +++++++++++++++++-- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/IntelFrameworkModulePkg/Include/Library/GenericBdsLib.h b/IntelFrameworkModulePkg/Include/Library/GenericBdsLib.h index c0bb371a9d..dbc1b164da 100644 --- a/IntelFrameworkModulePkg/Include/Library/GenericBdsLib.h +++ b/IntelFrameworkModulePkg/Include/Library/GenericBdsLib.h @@ -821,6 +821,9 @@ SetupResetReminder ( #define BDS_EFI_MESSAGE_USB_DEVICE_BOOT 0x0305 // Type 03; Sub-Type 05 #define BDS_EFI_MESSAGE_SATA_BOOT 0x0312 // Type 03; Sub-Type 18 #define BDS_EFI_MESSAGE_MAC_BOOT 0x030b // Type 03; Sub-Type 11 +#define BDS_EFI_MESSAGE_SD_BOOT 0x030c // Type 03; Sub-Type 12 +#define BDS_EFI_MESSAGE_EMMC_BOOT 0x030d // Type 03; Sub-Type 13 +#define BDS_EFI_MESSAGE_NVME_BOOT 0x030e // Type 03; Sub-Type 14 #define BDS_EFI_MESSAGE_MISC_BOOT 0x03FF /// diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c index 178679ffb8..2cc29760c5 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c @@ -3128,8 +3128,10 @@ BdsLibEnumerateAllBootOption ( UINT16 HarddriveNumber; UINT16 CdromNumber; UINT16 UsbNumber; + UINT16 SdNumber; UINT16 MiscNumber; UINT16 ScsiNumber; + UINT16 NvmeNumber; UINT16 NonBlockNumber; UINTN NumberBlockIoHandles; EFI_HANDLE *BlockIoHandles; @@ -3162,8 +3164,10 @@ BdsLibEnumerateAllBootOption ( HarddriveNumber = 0; CdromNumber = 0; UsbNumber = 0; + SdNumber = 0; MiscNumber = 0; ScsiNumber = 0; + NvmeNumber = 0; PlatLang = NULL; LastLang = NULL; ZeroMem (Buffer, sizeof (Buffer)); @@ -3306,16 +3310,44 @@ BdsLibEnumerateAllBootOption ( ScsiNumber++; break; - case BDS_EFI_MESSAGE_MISC_BOOT: - default: + case BDS_EFI_MESSAGE_EMMC_BOOT: if (MiscNumber != 0) { - UnicodeSPrint (Buffer, sizeof (Buffer), L"%s %d", BdsLibGetStringById (STRING_TOKEN (STR_DESCRIPTION_MISC)), MiscNumber); + UnicodeSPrint (Buffer, sizeof (Buffer), L"EFI eMMC Device %d", MiscNumber); } else { - UnicodeSPrint (Buffer, sizeof (Buffer), L"%s", BdsLibGetStringById (STRING_TOKEN (STR_DESCRIPTION_MISC))); + UnicodeSPrint (Buffer, sizeof (Buffer), L"EFI eMMC Device"); } BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer); MiscNumber++; break; + + case BDS_EFI_MESSAGE_SD_BOOT: + if (SdNumber != 0) { + UnicodeSPrint (Buffer, sizeof (Buffer), L"EFI SD Device %d", SdNumber); + } else { + UnicodeSPrint (Buffer, sizeof (Buffer), L"EFI SD Device"); + } + BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer); + SdNumber++; + break; + + case BDS_EFI_MESSAGE_NVME_BOOT: + if (NvmeNumber != 0) { + UnicodeSPrint (Buffer, sizeof (Buffer), L"EFI NVMe Device %d", NvmeNumber); + } else { + UnicodeSPrint (Buffer, sizeof (Buffer), L"EFI NVMe Device"); + } + BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer); + NvmeNumber++; + break; + + case BDS_EFI_MESSAGE_MISC_BOOT: + default: + if (MiscNumber == 0) { + UnicodeSPrint (Buffer, sizeof (Buffer), L"EFI eMMC Device"); + BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer); + } + MiscNumber++; + break; } } } @@ -3960,8 +3992,20 @@ BdsGetBootTypeFromDevicePath ( BootType = BDS_EFI_MESSAGE_MAC_BOOT; break; + case MSG_EMMC_DP: + BootType = BDS_EFI_MESSAGE_EMMC_BOOT; + break; + + case MSG_SD_DP: + BootType = BDS_EFI_MESSAGE_SD_BOOT; + break; + + case MSG_NVME_NAMESPACE_DP: + BootType = BDS_EFI_MESSAGE_NVME_BOOT; + break; + default: - BootType = BDS_EFI_MESSAGE_MISC_BOOT; + BootType = DevicePathSubType (TempDevicePath); break; } return BootType;