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:
qwang12 2008-11-11 22:42:28 +00:00
parent 766f4bc137
commit 6f4ee195af
4 changed files with 23 additions and 140 deletions

View File

@ -24,44 +24,18 @@ Abstract:
#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
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
EFI_GUID NameGuid;
} 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)
//
// EFI Specification extension on Media Device Path was added to UEFI 2.1 specification,

View File

@ -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.SubType = MEDIA_FV_FILEPATH_DP;
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));
}
@ -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 &&
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
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;
}

View File

@ -297,29 +297,16 @@ GlueEfiGetNameGuidFromFwVolDevicePathNode (
{
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 &&
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
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;
}
@ -348,34 +335,15 @@ GlueEfiInitializeFwVolDevicepathNode (
ASSERT (FvDevicePathNode != 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.SubType = MEDIA_FV_FILEPATH_DP;
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);
}

View File

@ -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.SubType = MEDIA_FV_FILEPATH_DP;
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));
}
@ -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 &&
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {
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;
}