mirror of https://github.com/acidanthera/audk.git
EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with EFI 1.10 and UEFI 2.10. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6462 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
766f4bc137
commit
6f4ee195af
|
@ -24,44 +24,18 @@ Abstract:
|
||||||
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
#if (EFI_SPECIFICATION_VERSION < 0x00020000)
|
|
||||||
//
|
//
|
||||||
// EFI Specification extension on Media Device Path
|
// EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
|
||||||
|
// In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
|
||||||
|
// EFI 1.10 and UEFI 2.10.
|
||||||
//
|
//
|
||||||
#define MEDIA_FV_FILEPATH_DP 0x06
|
#define MEDIA_FV_FILEPATH_DP 0x06
|
||||||
typedef struct {
|
typedef struct {
|
||||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||||
EFI_GUID NameGuid;
|
EFI_GUID NameGuid;
|
||||||
} MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
|
} MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if (EFI_SPECIFICATION_VERSION == 0x00020000)
|
|
||||||
//
|
|
||||||
// For UEFI 2.0, use GUIDed PIWG device path to work-around EFI Specification extension on Media Device Path
|
|
||||||
//
|
|
||||||
typedef struct {
|
|
||||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
|
||||||
EFI_GUID PiwgSpecificDevicePath;
|
|
||||||
UINT32 Type;
|
|
||||||
} PIWG_DEVICE_PATH;
|
|
||||||
|
|
||||||
#define PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE 0x01
|
|
||||||
typedef struct {
|
|
||||||
PIWG_DEVICE_PATH Piwg;
|
|
||||||
EFI_GUID NameGuid;
|
|
||||||
} MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Place holder for a future extension
|
|
||||||
//
|
|
||||||
#define PIWG_MEDIA_FW_VOL_DEVICE_PATH_TYPE 0x02
|
|
||||||
typedef struct {
|
|
||||||
PIWG_DEVICE_PATH Piwg;
|
|
||||||
EFI_GUID VolumeGuid;
|
|
||||||
} MEDIA_FW_VOL_DEVICE_PATH;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (EFI_SPECIFICATION_VERSION > 0x00020000)
|
#if (EFI_SPECIFICATION_VERSION > 0x00020000)
|
||||||
//
|
//
|
||||||
// EFI Specification extension on Media Device Path was added to UEFI 2.1 specification,
|
// EFI Specification extension on Media Device Path was added to UEFI 2.1 specification,
|
||||||
|
|
|
@ -520,33 +520,16 @@ Returns:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
{
|
{
|
||||||
#if (EFI_SPECIFICATION_VERSION != 0x00020000)
|
|
||||||
//
|
//
|
||||||
// Use old Device Path
|
// EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
|
||||||
|
// In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
|
||||||
|
// EFI 1.10 and UEFI 2.10.
|
||||||
//
|
//
|
||||||
|
|
||||||
FvDevicePathNode->Header.Type = MEDIA_DEVICE_PATH;
|
FvDevicePathNode->Header.Type = MEDIA_DEVICE_PATH;
|
||||||
FvDevicePathNode->Header.SubType = MEDIA_FV_FILEPATH_DP;
|
FvDevicePathNode->Header.SubType = MEDIA_FV_FILEPATH_DP;
|
||||||
SetDevicePathNodeLength (&FvDevicePathNode->Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
SetDevicePathNodeLength (&FvDevicePathNode->Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
||||||
|
|
||||||
#else
|
|
||||||
//
|
|
||||||
// Use the new Device path that does not conflict with the UEFI 2.0
|
|
||||||
//
|
|
||||||
FvDevicePathNode->Piwg.Header.Type = MEDIA_DEVICE_PATH;
|
|
||||||
FvDevicePathNode->Piwg.Header.SubType = MEDIA_VENDOR_DP;
|
|
||||||
SetDevicePathNodeLength (&FvDevicePathNode->Piwg.Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the GUID for generic PIWG device paths
|
|
||||||
//
|
|
||||||
EfiCopyMem (&FvDevicePathNode->Piwg.PiwgSpecificDevicePath, &gEfiFrameworkDevicePathGuid, sizeof(EFI_GUID));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add in the FW Vol File Path PIWG defined inforation
|
|
||||||
//
|
|
||||||
FvDevicePathNode->Piwg.Type = PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
EfiCopyMem (&FvDevicePathNode->NameGuid, NameGuid, sizeof(EFI_GUID));
|
EfiCopyMem (&FvDevicePathNode->NameGuid, NameGuid, sizeof(EFI_GUID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -581,27 +564,15 @@ Returns:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
{
|
{
|
||||||
#if (EFI_SPECIFICATION_VERSION != 0x00020000)
|
|
||||||
//
|
//
|
||||||
// Use old Device Path
|
// EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
|
||||||
|
// In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
|
||||||
|
// EFI 1.10 and UEFI 2.10.
|
||||||
//
|
//
|
||||||
if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH &&
|
if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH &&
|
||||||
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
|
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
|
||||||
return &FvDevicePathNode->NameGuid;
|
return &FvDevicePathNode->NameGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
//
|
|
||||||
// Use the new Device path that does not conflict with the UEFI 2.0
|
|
||||||
//
|
|
||||||
if (DevicePathType (&FvDevicePathNode->Piwg.Header) == MEDIA_DEVICE_PATH &&
|
|
||||||
DevicePathSubType (&FvDevicePathNode->Piwg.Header) == MEDIA_VENDOR_DP) {
|
|
||||||
if (EfiCompareGuid (&gEfiFrameworkDevicePathGuid, &FvDevicePathNode->Piwg.PiwgSpecificDevicePath)) {
|
|
||||||
if (FvDevicePathNode->Piwg.Type == PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE) {
|
|
||||||
return &FvDevicePathNode->NameGuid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -297,29 +297,16 @@ GlueEfiGetNameGuidFromFwVolDevicePathNode (
|
||||||
{
|
{
|
||||||
ASSERT (FvDevicePathNode != NULL);
|
ASSERT (FvDevicePathNode != NULL);
|
||||||
|
|
||||||
#if (EFI_SPECIFICATION_VERSION != 0x00020000)
|
|
||||||
//
|
//
|
||||||
// Use old Device Path
|
// EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
|
||||||
|
// In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
|
||||||
|
// EFI 1.10 and UEFI 2.10.
|
||||||
//
|
//
|
||||||
if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH &&
|
if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH &&
|
||||||
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
|
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
|
||||||
return (EFI_GUID *) &FvDevicePathNode->NameGuid;
|
return (EFI_GUID *) &FvDevicePathNode->NameGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
//
|
|
||||||
// Use the new Device path that does not conflict with the UEFI 2.0
|
|
||||||
//
|
|
||||||
// check here : piwg or tiano
|
|
||||||
if (DevicePathType (&FvDevicePathNode->Piwg.Header) == MEDIA_DEVICE_PATH &&
|
|
||||||
DevicePathSubType (&FvDevicePathNode->Piwg.Header) == MEDIA_VENDOR_DP) {
|
|
||||||
if (CompareGuid (&gEfiFrameworkDevicePathGuid, &FvDevicePathNode->Piwg.PiwgSpecificDevicePath)) {
|
|
||||||
if (FvDevicePathNode->Piwg.Type == PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE) {
|
|
||||||
return (EFI_GUID *) &FvDevicePathNode->NameGuid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,34 +335,15 @@ GlueEfiInitializeFwVolDevicepathNode (
|
||||||
ASSERT (FvDevicePathNode != NULL);
|
ASSERT (FvDevicePathNode != NULL);
|
||||||
ASSERT (NameGuid != NULL);
|
ASSERT (NameGuid != NULL);
|
||||||
|
|
||||||
#if (EFI_SPECIFICATION_VERSION != 0x00020000)
|
|
||||||
//
|
//
|
||||||
// Use old Device Path
|
// EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
|
||||||
|
// In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
|
||||||
|
// EFI 1.10 and UEFI 2.10.
|
||||||
//
|
//
|
||||||
FvDevicePathNode->Header.Type = MEDIA_DEVICE_PATH;
|
FvDevicePathNode->Header.Type = MEDIA_DEVICE_PATH;
|
||||||
FvDevicePathNode->Header.SubType = MEDIA_FV_FILEPATH_DP;
|
FvDevicePathNode->Header.SubType = MEDIA_FV_FILEPATH_DP;
|
||||||
SetDevicePathNodeLength (&FvDevicePathNode->Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
SetDevicePathNodeLength (&FvDevicePathNode->Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
||||||
|
|
||||||
#else
|
|
||||||
//
|
|
||||||
// Use the new Device path that does not conflict with the UEFI 2.0
|
|
||||||
//
|
|
||||||
FvDevicePathNode->Piwg.Header.Type = MEDIA_DEVICE_PATH;
|
|
||||||
FvDevicePathNode->Piwg.Header.SubType = MEDIA_VENDOR_DP;
|
|
||||||
SetDevicePathNodeLength (&FvDevicePathNode->Piwg.Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the GUID for generic PIWG device paths
|
|
||||||
//
|
|
||||||
CopyGuid (&FvDevicePathNode->Piwg.PiwgSpecificDevicePath, &gEfiFrameworkDevicePathGuid);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add in the FW Vol File Path PIWG defined inforation
|
|
||||||
//
|
|
||||||
FvDevicePathNode->Piwg.Type = PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CopyGuid (&FvDevicePathNode->NameGuid, NameGuid);
|
CopyGuid (&FvDevicePathNode->NameGuid, NameGuid);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -617,33 +617,15 @@ Returns:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
{
|
{
|
||||||
#if (EFI_SPECIFICATION_VERSION != 0x00020000)
|
|
||||||
//
|
//
|
||||||
// Use old Device Path
|
// EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
|
||||||
|
// In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
|
||||||
|
// EFI 1.10 and UEFI 2.10.
|
||||||
//
|
//
|
||||||
FvDevicePathNode->Header.Type = MEDIA_DEVICE_PATH;
|
FvDevicePathNode->Header.Type = MEDIA_DEVICE_PATH;
|
||||||
FvDevicePathNode->Header.SubType = MEDIA_FV_FILEPATH_DP;
|
FvDevicePathNode->Header.SubType = MEDIA_FV_FILEPATH_DP;
|
||||||
SetDevicePathNodeLength (&FvDevicePathNode->Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
SetDevicePathNodeLength (&FvDevicePathNode->Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
||||||
|
|
||||||
#else
|
|
||||||
//
|
|
||||||
// Use the new Device path that does not conflict with the UEFI 2.0
|
|
||||||
//
|
|
||||||
FvDevicePathNode->Piwg.Header.Type = MEDIA_DEVICE_PATH;
|
|
||||||
FvDevicePathNode->Piwg.Header.SubType = MEDIA_VENDOR_DP;
|
|
||||||
SetDevicePathNodeLength (&FvDevicePathNode->Piwg.Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the GUID for generic PIWG device paths
|
|
||||||
//
|
|
||||||
EfiCopyMem (&FvDevicePathNode->Piwg.PiwgSpecificDevicePath, &gEfiFrameworkDevicePathGuid, sizeof(EFI_GUID));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add in the FW Vol File Path PIWG defined inforation
|
|
||||||
//
|
|
||||||
FvDevicePathNode->Piwg.Type = PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
EfiCopyMem (&FvDevicePathNode->NameGuid, NameGuid, sizeof(EFI_GUID));
|
EfiCopyMem (&FvDevicePathNode->NameGuid, NameGuid, sizeof(EFI_GUID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -678,28 +660,16 @@ Returns:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
{
|
{
|
||||||
#if (EFI_SPECIFICATION_VERSION != 0x00020000)
|
|
||||||
//
|
//
|
||||||
// Use old Device Path
|
// EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
|
||||||
|
// In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
|
||||||
|
// EFI 1.10 and UEFI 2.10.
|
||||||
//
|
//
|
||||||
if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH &&
|
if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH &&
|
||||||
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
|
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
|
||||||
return &FvDevicePathNode->NameGuid;
|
return &FvDevicePathNode->NameGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
return NULL;
|
||||||
//
|
|
||||||
// Use the new Device path that does not conflict with the UEFI 2.0
|
|
||||||
//
|
|
||||||
if (DevicePathType (&FvDevicePathNode->Piwg.Header) == MEDIA_DEVICE_PATH &&
|
|
||||||
DevicePathSubType (&FvDevicePathNode->Piwg.Header) == MEDIA_VENDOR_DP) {
|
|
||||||
if (EfiCompareGuid (&gEfiFrameworkDevicePathGuid, &FvDevicePathNode->Piwg.PiwgSpecificDevicePath)) {
|
|
||||||
if (FvDevicePathNode->Piwg.Type == PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE) {
|
|
||||||
return &FvDevicePathNode->NameGuid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue