mirror of https://github.com/acidanthera/audk.git
MdePkg: Add BMC device path definition and its node/text conversion
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17985 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
c8c2815802
commit
624f017e17
|
@ -171,6 +171,26 @@ typedef struct {
|
||||||
UINT32 ControllerNumber;
|
UINT32 ControllerNumber;
|
||||||
} CONTROLLER_DEVICE_PATH;
|
} CONTROLLER_DEVICE_PATH;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// BMC Device Path SubType.
|
||||||
|
///
|
||||||
|
#define HW_BMC_DP 0x06
|
||||||
|
|
||||||
|
///
|
||||||
|
/// BMC Device Path.
|
||||||
|
///
|
||||||
|
typedef struct {
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||||
|
///
|
||||||
|
/// Interface Type.
|
||||||
|
///
|
||||||
|
UINT8 InterfaceType;
|
||||||
|
///
|
||||||
|
/// Base Address.
|
||||||
|
///
|
||||||
|
UINT8 BaseAddress[8];
|
||||||
|
} BMC_DEVICE_PATH;
|
||||||
|
|
||||||
///
|
///
|
||||||
/// ACPI Device Paths.
|
/// ACPI Device Paths.
|
||||||
///
|
///
|
||||||
|
@ -1186,6 +1206,7 @@ typedef union {
|
||||||
VENDOR_DEVICE_PATH Vendor;
|
VENDOR_DEVICE_PATH Vendor;
|
||||||
|
|
||||||
CONTROLLER_DEVICE_PATH Controller;
|
CONTROLLER_DEVICE_PATH Controller;
|
||||||
|
BMC_DEVICE_PATH Bmc;
|
||||||
ACPI_HID_DEVICE_PATH Acpi;
|
ACPI_HID_DEVICE_PATH Acpi;
|
||||||
ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;
|
ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;
|
||||||
ACPI_ADR_DEVICE_PATH AcpiAdr;
|
ACPI_ADR_DEVICE_PATH AcpiAdr;
|
||||||
|
@ -1241,6 +1262,7 @@ typedef union {
|
||||||
VENDOR_DEVICE_PATH *Vendor;
|
VENDOR_DEVICE_PATH *Vendor;
|
||||||
|
|
||||||
CONTROLLER_DEVICE_PATH *Controller;
|
CONTROLLER_DEVICE_PATH *Controller;
|
||||||
|
BMC_DEVICE_PATH *Bmc;
|
||||||
ACPI_HID_DEVICE_PATH *Acpi;
|
ACPI_HID_DEVICE_PATH *Acpi;
|
||||||
ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
|
ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
|
||||||
ACPI_ADR_DEVICE_PATH *AcpiAdr;
|
ACPI_ADR_DEVICE_PATH *AcpiAdr;
|
||||||
|
|
|
@ -793,6 +793,40 @@ DevPathFromTextCtrl (
|
||||||
return (EFI_DEVICE_PATH_PROTOCOL *) Controller;
|
return (EFI_DEVICE_PATH_PROTOCOL *) Controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Converts a text device path node to BMC device path structure.
|
||||||
|
|
||||||
|
@param TextDeviceNode The input Text device path node.
|
||||||
|
|
||||||
|
@return A pointer to the newly-created BMC device path structure.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *
|
||||||
|
DevPathFromTextBmc (
|
||||||
|
IN CHAR16 *TextDeviceNode
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CHAR16 *InterfaceTypeStr;
|
||||||
|
CHAR16 *BaseAddressStr;
|
||||||
|
BMC_DEVICE_PATH *BmcDp;
|
||||||
|
|
||||||
|
InterfaceTypeStr = GetNextParamStr (&TextDeviceNode);
|
||||||
|
BaseAddressStr = GetNextParamStr (&TextDeviceNode);
|
||||||
|
BmcDp = (BMC_DEVICE_PATH *) CreateDeviceNode (
|
||||||
|
HARDWARE_DEVICE_PATH,
|
||||||
|
HW_BMC_DP,
|
||||||
|
(UINT16) sizeof (BMC_DEVICE_PATH)
|
||||||
|
);
|
||||||
|
|
||||||
|
BmcDp->InterfaceType = (UINT8) Strtoi (InterfaceTypeStr);
|
||||||
|
WriteUnaligned64 (
|
||||||
|
(UINT64 *) (&BmcDp->BaseAddress),
|
||||||
|
StrHexToUint64 (BaseAddressStr)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (EFI_DEVICE_PATH_PROTOCOL *) BmcDp;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Converts a generic ACPI text device path node to ACPI device path structure.
|
Converts a generic ACPI text device path node to ACPI device path structure.
|
||||||
|
|
||||||
|
@ -3423,6 +3457,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
|
||||||
{L"MemoryMapped", DevPathFromTextMemoryMapped },
|
{L"MemoryMapped", DevPathFromTextMemoryMapped },
|
||||||
{L"VenHw", DevPathFromTextVenHw },
|
{L"VenHw", DevPathFromTextVenHw },
|
||||||
{L"Ctrl", DevPathFromTextCtrl },
|
{L"Ctrl", DevPathFromTextCtrl },
|
||||||
|
{L"Bmc", DevPathFromTextBmc },
|
||||||
|
|
||||||
{L"AcpiPath", DevPathFromTextAcpiPath },
|
{L"AcpiPath", DevPathFromTextAcpiPath },
|
||||||
{L"Acpi", DevPathFromTextAcpi },
|
{L"Acpi", DevPathFromTextAcpi },
|
||||||
|
|
|
@ -306,6 +306,38 @@ DevPathToTextController (
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Converts a BMC device path structure to its string representative.
|
||||||
|
|
||||||
|
@param Str The string representative of input device.
|
||||||
|
@param DevPath The input device path structure.
|
||||||
|
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
|
||||||
|
of the display node is used, where applicable. If DisplayOnly
|
||||||
|
is FALSE, then the longer text representation of the display node
|
||||||
|
is used.
|
||||||
|
@param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
|
||||||
|
representation for a device node can be used, where applicable.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
DevPathToTextBmc (
|
||||||
|
IN OUT POOL_PRINT *Str,
|
||||||
|
IN VOID *DevPath,
|
||||||
|
IN BOOLEAN DisplayOnly,
|
||||||
|
IN BOOLEAN AllowShortcuts
|
||||||
|
)
|
||||||
|
{
|
||||||
|
BMC_DEVICE_PATH *Bmc;
|
||||||
|
|
||||||
|
Bmc = DevPath;
|
||||||
|
UefiDevicePathLibCatPrint (
|
||||||
|
Str,
|
||||||
|
L"Bmc(0x%x,0x%lx)",
|
||||||
|
Bmc->InterfaceType,
|
||||||
|
ReadUnaligned64 ((UINT64 *) (&Bmc->BaseAddress))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Converts a ACPI device path structure to its string representative.
|
Converts a ACPI device path structure to its string representative.
|
||||||
|
|
||||||
|
@ -2089,6 +2121,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib
|
||||||
{HARDWARE_DEVICE_PATH, HW_MEMMAP_DP, DevPathToTextMemMap },
|
{HARDWARE_DEVICE_PATH, HW_MEMMAP_DP, DevPathToTextMemMap },
|
||||||
{HARDWARE_DEVICE_PATH, HW_VENDOR_DP, DevPathToTextVendor },
|
{HARDWARE_DEVICE_PATH, HW_VENDOR_DP, DevPathToTextVendor },
|
||||||
{HARDWARE_DEVICE_PATH, HW_CONTROLLER_DP, DevPathToTextController },
|
{HARDWARE_DEVICE_PATH, HW_CONTROLLER_DP, DevPathToTextController },
|
||||||
|
{HARDWARE_DEVICE_PATH, HW_BMC_DP, DevPathToTextBmc },
|
||||||
{ACPI_DEVICE_PATH, ACPI_DP, DevPathToTextAcpi },
|
{ACPI_DEVICE_PATH, ACPI_DP, DevPathToTextAcpi },
|
||||||
{ACPI_DEVICE_PATH, ACPI_EXTENDED_DP, DevPathToTextAcpiEx },
|
{ACPI_DEVICE_PATH, ACPI_EXTENDED_DP, DevPathToTextAcpiEx },
|
||||||
{ACPI_DEVICE_PATH, ACPI_ADR_DP, DevPathToTextAcpiAdr },
|
{ACPI_DEVICE_PATH, ACPI_ADR_DP, DevPathToTextAcpiAdr },
|
||||||
|
|
Loading…
Reference in New Issue