Get current sub-string from a string list, before return\r
the list header is moved to next sub-string. The sub-string is separated\r
by the specified character. For example, the separator is ',', the string\r
- list is "2,0,3", it returns "2", the remain list move to "2,3"\r
+ list is "2,0,3", it returns "2", the remain list move to "0,3"\r
\r
Arguments:\r
List - A string list separated by the specified separator\r
STATIC\r
CHAR16 *\r
TrimHexStr (\r
- IN CHAR16 *Str\r
+ IN CHAR16 *Str,\r
+ OUT BOOLEAN *IsHex\r
)\r
/*++\r
\r
Routine Description:\r
- Skip the leading white space and '0x' or '0X' of a hex string\r
+ Skip the leading white space and '0x' or '0X' of a integer string\r
\r
Arguments:\r
- Str - The hex string\r
+ Str - The integer string\r
+ IsHex - 1: Hex string, 0: Decimal string\r
\r
Returns:\r
\r
--*/\r
{\r
+ *IsHex = FALSE;\r
+\r
//\r
// skip preceeding white space\r
//\r
//\r
if (*Str && (*Str == 'x' || *Str == 'X')) {\r
Str += 1;\r
+ *IsHex = TRUE;\r
}\r
\r
return Str;\r
//\r
Rvalue = 0;\r
Length = sizeof (UINTN);\r
- HexStringToBuf ((UINT8 *) &Rvalue, &Length, TrimHexStr (Str), NULL);\r
+ HexStringToBuf ((UINT8 *) &Rvalue, &Length, Str, NULL);\r
\r
return Rvalue;\r
}\r
\r
*Data = 0;\r
Length = sizeof (UINT64);\r
- HexStringToBuf ((UINT8 *) Data, &Length, TrimHexStr (Str), NULL);\r
+ HexStringToBuf ((UINT8 *) Data, &Length, Str, NULL);\r
}\r
\r
STATIC\r
UINTN\r
-Atoi (\r
+Dtoi (\r
IN CHAR16 *str\r
)\r
/*++\r
return Rvalue;\r
}\r
\r
+STATIC\r
+VOID\r
+Dtoi64 (\r
+ IN CHAR16 *str,\r
+ OUT UINT64 *Data\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Convert decimal string to uint\r
+\r
+Arguments:\r
+\r
+ Str - The string\r
+\r
+Returns:\r
+\r
+--*/\r
+{\r
+ UINT64 Rvalue;\r
+ CHAR16 Char;\r
+ UINT64 High;\r
+ UINT64 Low;\r
+\r
+ ASSERT (str != NULL);\r
+ ASSERT (Data != NULL);\r
+\r
+ //\r
+ // skip preceeding white space\r
+ //\r
+ while (*str && *str == ' ') {\r
+ str += 1;\r
+ }\r
+ //\r
+ // convert digits\r
+ //\r
+ Rvalue = 0;\r
+ Char = *(str++);\r
+ while (Char) {\r
+ if (Char >= '0' && Char <= '9') {\r
+ High = LShiftU64 (Rvalue, 3);\r
+ Low = LShiftU64 (Rvalue, 1);\r
+ Rvalue = High + Low + Char - '0';\r
+ } else {\r
+ break;\r
+ }\r
+\r
+ Char = *(str++);\r
+ }\r
+\r
+ *Data = Rvalue;\r
+}\r
+\r
+STATIC\r
+UINTN\r
+Strtoi (\r
+ IN CHAR16 *Str\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Convert integer string to uint.\r
+\r
+Arguments:\r
+\r
+ Str - The integer string. If leading with "0x" or "0X", it's heximal.\r
+\r
+Returns:\r
+\r
+--*/\r
+{\r
+ BOOLEAN IsHex;\r
+\r
+ Str = TrimHexStr (Str, &IsHex);\r
+\r
+ if (IsHex) {\r
+ return Xtoi (Str);\r
+ } else {\r
+ return Dtoi (Str);\r
+ }\r
+}\r
+\r
+STATIC\r
+VOID\r
+Strtoi64 (\r
+ IN CHAR16 *Str,\r
+ IN UINT64 *Data\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Convert integer string to 64 bit data.\r
+\r
+Arguments:\r
+\r
+ Str - The integer string. If leading with "0x" or "0X", it's heximal.\r
+\r
+Returns:\r
+\r
+--*/\r
+{\r
+ BOOLEAN IsHex;\r
+\r
+ Str = TrimHexStr (Str, &IsHex);\r
+\r
+ if (IsHex) {\r
+ Xtoi64 (Str, Data);\r
+ } else {\r
+ Dtoi64 (Str, Data);\r
+ }\r
+}\r
+\r
STATIC\r
EFI_STATUS \r
StrToBuf (\r
UINTN Index;\r
\r
for (Index = 0; Index < 4; Index++) {\r
- IPv4Addr->Addr[Index] = (UINT8) Atoi (SplitStr (Str, L'.'));\r
+ IPv4Addr->Addr[Index] = (UINT8) Dtoi (SplitStr (Str, L'.'));\r
}\r
}\r
\r
CHAR16 *DeviceStr;\r
PCI_DEVICE_PATH *Pci;\r
\r
- FunctionStr = GetNextParamStr (&TextDeviceNode);\r
DeviceStr = GetNextParamStr (&TextDeviceNode);\r
+ FunctionStr = GetNextParamStr (&TextDeviceNode);\r
Pci = (PCI_DEVICE_PATH *) CreateDeviceNode (\r
HARDWARE_DEVICE_PATH,\r
HW_PCI_DP,\r
sizeof (PCI_DEVICE_PATH)\r
);\r
\r
- Pci->Function = (UINT8) Xtoi (FunctionStr);\r
- Pci->Device = (UINT8) Xtoi (DeviceStr);\r
+ Pci->Function = (UINT8) Strtoi (FunctionStr);\r
+ Pci->Device = (UINT8) Strtoi (DeviceStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Pci;\r
}\r
sizeof (PCCARD_DEVICE_PATH)\r
);\r
\r
- Pccard->FunctionNumber = (UINT8) Xtoi (FunctionNumberStr);\r
+ Pccard->FunctionNumber = (UINT8) Strtoi (FunctionNumberStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Pccard;\r
}\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
+ CHAR16 *MemoryTypeStr;\r
CHAR16 *StartingAddressStr;\r
CHAR16 *EndingAddressStr;\r
MEMMAP_DEVICE_PATH *MemMap;\r
\r
+ MemoryTypeStr = GetNextParamStr (&TextDeviceNode);\r
StartingAddressStr = GetNextParamStr (&TextDeviceNode);\r
EndingAddressStr = GetNextParamStr (&TextDeviceNode);\r
MemMap = (MEMMAP_DEVICE_PATH *) CreateDeviceNode (\r
sizeof (MEMMAP_DEVICE_PATH)\r
);\r
\r
- MemMap->MemoryType = 0;\r
-\r
- Xtoi64 (StartingAddressStr, &MemMap->StartingAddress);\r
- Xtoi64 (EndingAddressStr, &MemMap->EndingAddress);\r
+ MemMap->MemoryType = (UINT32) Strtoi (MemoryTypeStr);\r
+ Strtoi64 (StartingAddressStr, &MemMap->StartingAddress);\r
+ Strtoi64 (EndingAddressStr, &MemMap->EndingAddress);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) MemMap;\r
}\r
HW_CONTROLLER_DP,\r
sizeof (CONTROLLER_DEVICE_PATH)\r
);\r
- Controller->ControllerNumber = (UINT32) Xtoi (ControllerStr);\r
+ Controller->ControllerNumber = (UINT32) Strtoi (ControllerStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Controller;\r
}\r
\r
STATIC\r
+VOID\r
+EisaIdFromText (\r
+ IN CHAR16 *Text,\r
+ OUT UINT32 *EisaId\r
+ )\r
+{\r
+ UINTN PnpId;\r
+\r
+ PnpId = Xtoi (Text + 3);\r
+ *EisaId = (((Text[0] - '@') & 0x1f) << 10) + \r
+ (((Text[1] - '@') & 0x1f) << 5) + \r
+ ((Text[2] - '@') & 0x1f) +\r
+ (UINT32) (PnpId << 16);\r
+}\r
+\r
EFI_DEVICE_PATH_PROTOCOL *\r
DevPathFromTextAcpi (\r
IN CHAR16 *TextDeviceNode\r
sizeof (ACPI_HID_DEVICE_PATH)\r
);\r
\r
- if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {\r
- HIDStr += 3;\r
- }\r
-\r
- Acpi->HID = EISA_PNP_ID (Xtoi (HIDStr));\r
- Acpi->UID = (UINT32) Xtoi (UIDStr);\r
+ EisaIdFromText (HIDStr, &Acpi->HID);\r
+ Acpi->UID = (UINT32) Strtoi (UIDStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Acpi;\r
}\r
EFI_DEVICE_PATH_PROTOCOL *\r
ConvertFromTextAcpi (\r
IN CHAR16 *TextDeviceNode,\r
- IN UINT32 Hid\r
+ IN UINT32 PnPId\r
)\r
{\r
CHAR16 *UIDStr;\r
sizeof (ACPI_HID_DEVICE_PATH)\r
);\r
\r
- Acpi->HID = Hid;\r
- Acpi->UID = (UINT32) Xtoi (UIDStr);\r
+ Acpi->HID = EFI_PNP_ID (PnPId);\r
+ Acpi->UID = (UINT32) Strtoi (UIDStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Acpi;\r
}\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
- return ConvertFromTextAcpi (TextDeviceNode, 0x0a0341d0);\r
+ return ConvertFromTextAcpi (TextDeviceNode, 0x0a03);\r
}\r
\r
STATIC\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
- return ConvertFromTextAcpi (TextDeviceNode, 0x060441d0);\r
+ return ConvertFromTextAcpi (TextDeviceNode, 0x0604);\r
}\r
\r
STATIC\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
- return ConvertFromTextAcpi (TextDeviceNode, 0x030141d0);\r
+ return ConvertFromTextAcpi (TextDeviceNode, 0x0301);\r
}\r
\r
STATIC\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
- return ConvertFromTextAcpi (TextDeviceNode, 0x050141d0);\r
+ return ConvertFromTextAcpi (TextDeviceNode, 0x0501);\r
}\r
\r
STATIC\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
- return ConvertFromTextAcpi (TextDeviceNode, 0x040141d0);\r
+ return ConvertFromTextAcpi (TextDeviceNode, 0x0401);\r
}\r
\r
STATIC\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
- CHAR16 *HIDStr;\r
- CHAR16 *CIDStr;\r
- CHAR16 *UIDStr;\r
- CHAR16 *HIDSTRStr;\r
- CHAR16 *CIDSTRStr;\r
- CHAR16 *UIDSTRStr;\r
- CHAR8 *AsciiStr;\r
- UINT16 Length;\r
- ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *AcpiExt;\r
+ CHAR16 *HIDStr;\r
+ CHAR16 *CIDStr;\r
+ CHAR16 *UIDStr;\r
+ CHAR16 *HIDSTRStr;\r
+ CHAR16 *CIDSTRStr;\r
+ CHAR16 *UIDSTRStr;\r
+ CHAR8 *AsciiStr;\r
+ UINT16 Length;\r
+ ACPI_EXTENDED_HID_DEVICE_PATH *AcpiEx;\r
\r
HIDStr = GetNextParamStr (&TextDeviceNode);\r
CIDStr = GetNextParamStr (&TextDeviceNode);\r
Length = (UINT16) (sizeof (ACPI_EXTENDED_HID_DEVICE_PATH) + StrLen (HIDSTRStr) + 1);\r
Length = (UINT16) (Length + StrLen (UIDSTRStr) + 1);\r
Length = (UINT16) (Length + StrLen (CIDSTRStr) + 1);\r
- AcpiExt = (ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *) CreateDeviceNode (\r
- ACPI_DEVICE_PATH,\r
- ACPI_EXTENDED_DP,\r
- Length\r
- );\r
-\r
- if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {\r
- HIDStr += 3;\r
- AcpiExt->HID = EISA_PNP_ID (Xtoi (HIDStr));\r
- } else {\r
- AcpiExt->HID = (UINT32) Xtoi (HIDStr);\r
- }\r
+ AcpiEx = (ACPI_EXTENDED_HID_DEVICE_PATH *) CreateDeviceNode (\r
+ ACPI_DEVICE_PATH,\r
+ ACPI_EXTENDED_DP,\r
+ Length\r
+ );\r
\r
- AcpiExt->UID = (UINT32) Xtoi (UIDStr);\r
- AcpiExt->CID = (UINT32) Xtoi (CIDStr);\r
+ EisaIdFromText (HIDStr, &AcpiEx->HID);\r
+ EisaIdFromText (CIDStr, &AcpiEx->CID);\r
+ AcpiEx->UID = (UINT32) Strtoi (UIDStr);\r
\r
- AsciiStr = AcpiExt->HidUidCidStr;\r
+ AsciiStr = (CHAR8 *) ((UINT8 *)AcpiEx + sizeof (ACPI_EXTENDED_HID_DEVICE_PATH));\r
StrToAscii (HIDSTRStr, &AsciiStr);\r
StrToAscii (UIDSTRStr, &AsciiStr);\r
StrToAscii (CIDSTRStr, &AsciiStr);\r
- \r
- return (EFI_DEVICE_PATH_PROTOCOL *) AcpiExt;\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) AcpiEx;\r
}\r
\r
STATIC\r
IN CHAR16 *TextDeviceNode\r
)\r
{\r
- CHAR16 *HIDStr;\r
- CHAR16 *CIDStr;\r
- CHAR16 *UIDSTRStr;\r
- CHAR8 *AsciiStr;\r
- UINT16 Length;\r
- ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *AcpiExt;\r
+ CHAR16 *HIDStr;\r
+ CHAR16 *CIDStr;\r
+ CHAR16 *UIDSTRStr;\r
+ CHAR8 *AsciiStr;\r
+ UINT16 Length;\r
+ ACPI_EXTENDED_HID_DEVICE_PATH *AcpiEx;\r
\r
HIDStr = GetNextParamStr (&TextDeviceNode);\r
CIDStr = GetNextParamStr (&TextDeviceNode);\r
UIDSTRStr = GetNextParamStr (&TextDeviceNode);\r
Length = (UINT16) (sizeof (ACPI_EXTENDED_HID_DEVICE_PATH) + StrLen (UIDSTRStr) + 3);\r
- AcpiExt = (ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *) CreateDeviceNode (\r
- ACPI_DEVICE_PATH,\r
- ACPI_EXTENDED_DP,\r
- Length\r
- );\r
-\r
- if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {\r
- HIDStr += 3;\r
- AcpiExt->HID = EISA_PNP_ID (Xtoi (HIDStr));\r
- } else {\r
- AcpiExt->HID = (UINT32) Xtoi (HIDStr);\r
- }\r
+ AcpiEx = (ACPI_EXTENDED_HID_DEVICE_PATH *) CreateDeviceNode (\r
+ ACPI_DEVICE_PATH,\r
+ ACPI_EXTENDED_DP,\r
+ Length\r
+ );\r
\r
- AcpiExt->UID = 0;\r
- AcpiExt->CID = (UINT32) Xtoi (CIDStr);\r
+ EisaIdFromText (HIDStr, &AcpiEx->HID);\r
+ EisaIdFromText (CIDStr, &AcpiEx->CID);\r
+ AcpiEx->UID = 0;\r
\r
- AsciiStr = AcpiExt->HidUidCidStr;\r
+ AsciiStr = (CHAR8 *) ((UINT8 *)AcpiEx + sizeof (ACPI_EXTENDED_HID_DEVICE_PATH));\r
//\r
// HID string is NULL\r
//\r
- *AsciiStr = 0;\r
+ *AsciiStr = '\0';\r
//\r
// Convert UID string\r
//\r
//\r
// CID string is NULL\r
//\r
- *AsciiStr = 0;\r
+ *AsciiStr = '\0';\r
\r
- return (EFI_DEVICE_PATH_PROTOCOL *) AcpiExt;\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) AcpiEx;\r
}\r
\r
STATIC\r
\r
Atapi->PrimarySecondary = (UINT8) ((StrCmp (PrimarySecondaryStr, L"Primary") == 0) ? 0 : 1);\r
Atapi->SlaveMaster = (UINT8) ((StrCmp (SlaveMasterStr, L"Master") == 0) ? 0 : 1);\r
- Atapi->Lun = (UINT16) Xtoi (LunStr);\r
+ Atapi->Lun = (UINT16) Strtoi (LunStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Atapi;\r
}\r
sizeof (SCSI_DEVICE_PATH)\r
);\r
\r
- Scsi->Pun = (UINT16) Xtoi (PunStr);\r
- Scsi->Lun = (UINT16) Xtoi (LunStr);\r
+ Scsi->Pun = (UINT16) Strtoi (PunStr);\r
+ Scsi->Lun = (UINT16) Strtoi (LunStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Scsi;\r
}\r
);\r
\r
Fibre->Reserved = 0;\r
- Xtoi64 (WWNStr, &Fibre->WWN);\r
- Xtoi64 (LunStr, &Fibre->Lun);\r
+ Strtoi64 (WWNStr, &Fibre->WWN);\r
+ Strtoi64 (LunStr, &Fibre->Lun);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Fibre;\r
}\r
sizeof (USB_DEVICE_PATH)\r
);\r
\r
- Usb->ParentPortNumber = (UINT8) Xtoi (PortStr);\r
- Usb->InterfaceNumber = (UINT8) Xtoi (InterfaceStr);\r
+ Usb->ParentPortNumber = (UINT8) Strtoi (PortStr);\r
+ Usb->InterfaceNumber = (UINT8) Strtoi (InterfaceStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Usb;\r
}\r
sizeof (I2O_DEVICE_PATH)\r
);\r
\r
- I2O->Tid = (UINT32) Xtoi (TIDStr);\r
+ I2O->Tid = (UINT32) Strtoi (TIDStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) I2O;\r
}\r
sizeof (INFINIBAND_DEVICE_PATH)\r
);\r
\r
- InfiniBand->ResourceFlags = (UINT32) Xtoi (FlagsStr);\r
+ InfiniBand->ResourceFlags = (UINT32) Strtoi (FlagsStr);\r
StrToGuid (GuidStr, &PortGid);\r
CopyMem (InfiniBand->PortGid, &PortGid, sizeof (EFI_GUID));\r
- Xtoi64 (SidStr, &InfiniBand->ServiceId);\r
- Xtoi64 (TidStr, &InfiniBand->TargetPortId);\r
- Xtoi64 (DidStr, &InfiniBand->DeviceId);\r
+ Strtoi64 (SidStr, &InfiniBand->ServiceId);\r
+ Strtoi64 (TidStr, &InfiniBand->TargetPortId);\r
+ Strtoi64 (DidStr, &InfiniBand->DeviceId);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) InfiniBand;\r
}\r
);\r
\r
CopyGuid (&Sas->Guid, &mEfiDevicePathMessagingSASGuid);\r
- Xtoi64 (AddressStr, &Sas->SasAddress);\r
- Xtoi64 (LunStr, &Sas->Lun);\r
- Sas->RelativeTargetPort = (UINT16) Xtoi (RTPStr);\r
- if (StrCmp (SASSATAStr, L"NoTopology") == 0)\r
- ;\r
- else {\r
+ Strtoi64 (AddressStr, &Sas->SasAddress);\r
+ Strtoi64 (LunStr, &Sas->Lun);\r
+ Sas->RelativeTargetPort = (UINT16) Strtoi (RTPStr);\r
+ if (StrCmp (SASSATAStr, L"NoTopology") != 0) {\r
if (StrCmp (DriveBayStr, L"0") == 0) {\r
Info |= 0x0001;\r
} else {\r
Info |= 0x0002;\r
- Info = (UINT16) (Info | (Xtoi (DriveBayStr) << 8));\r
+ Info = (UINT16) (Info | (Strtoi (DriveBayStr) << 8));\r
}\r
\r
if (StrCmp (SASSATAStr, L"SATA") == 0) {\r
}\r
\r
Sas->DeviceTopology = Info;\r
- Sas->Reserved = (UINT32) Xtoi (ReservedStr);\r
+ Sas->Reserved = (UINT32) Strtoi (ReservedStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Sas;\r
}\r
sizeof (MAC_ADDR_DEVICE_PATH)\r
);\r
\r
- MAC->IfType = (UINT8) Xtoi (IfTypeStr);\r
+ MAC->IfType = (UINT8) Strtoi (IfTypeStr);\r
\r
Length = sizeof (EFI_MAC_ADDRESS);\r
StrToBuf (&MAC->MacAddress.Addr[0], Length, AddressStr);\r
\r
StrToIPv4Addr (&LocalIPStr, &IPv4->LocalIpAddress);\r
\r
- IPv4->LocalPort = 0;\r
- IPv4->RemotePort = 0;\r
+ IPv4->LocalPort = 0;\r
+ IPv4->RemotePort = 0;\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) IPv4;\r
}\r
sizeof (UART_DEVICE_PATH)\r
);\r
\r
- Uart->BaudRate = (StrCmp (BaudStr, L"DEFAULT") == 0) ? 115200 : Atoi (BaudStr);\r
- Uart->DataBits = (UINT8) ((StrCmp (DataBitsStr, L"DEFAULT") == 0) ? 8 : Atoi (DataBitsStr));\r
+ Uart->BaudRate = (StrCmp (BaudStr, L"DEFAULT") == 0) ? 115200 : Dtoi (BaudStr);\r
+ Uart->DataBits = (UINT8) ((StrCmp (DataBitsStr, L"DEFAULT") == 0) ? 8 : Dtoi (DataBitsStr));\r
switch (*ParityStr) {\r
case L'D':\r
Uart->Parity = 0;\r
PIDStr = GetNextParamStr (&TextDeviceNode);\r
if (UsbClassText->ClassExist) {\r
ClassStr = GetNextParamStr (&TextDeviceNode);\r
- UsbClass->DeviceClass = (UINT8) Xtoi (ClassStr);\r
+ UsbClass->DeviceClass = (UINT8) Strtoi (ClassStr);\r
} else {\r
UsbClass->DeviceClass = UsbClassText->Class;\r
}\r
if (UsbClassText->SubClassExist) {\r
SubClassStr = GetNextParamStr (&TextDeviceNode);\r
- UsbClass->DeviceSubClass = (UINT8) Xtoi (SubClassStr);\r
+ UsbClass->DeviceSubClass = (UINT8) Strtoi (SubClassStr);\r
} else {\r
UsbClass->DeviceSubClass = UsbClassText->SubClass;\r
} \r
\r
ProtocolStr = GetNextParamStr (&TextDeviceNode);\r
\r
- UsbClass->VendorId = (UINT16) Xtoi (VIDStr);\r
- UsbClass->ProductId = (UINT16) Xtoi (PIDStr);\r
- UsbClass->DeviceProtocol = (UINT8) Xtoi (ProtocolStr);\r
+ UsbClass->VendorId = (UINT16) Strtoi (VIDStr);\r
+ UsbClass->ProductId = (UINT16) Strtoi (PIDStr);\r
+ UsbClass->DeviceProtocol = (UINT8) Strtoi (ProtocolStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) UsbClass;\r
}\r
CHAR16 *VIDStr;\r
CHAR16 *PIDStr;\r
CHAR16 *InterfaceNumStr;\r
+ CHAR16 *SerialNumberStr;\r
USB_WWID_DEVICE_PATH *UsbWwid;\r
\r
VIDStr = GetNextParamStr (&TextDeviceNode);\r
PIDStr = GetNextParamStr (&TextDeviceNode);\r
InterfaceNumStr = GetNextParamStr (&TextDeviceNode);\r
+ SerialNumberStr = GetNextParamStr (&TextDeviceNode);\r
UsbWwid = (USB_WWID_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_USB_WWID_DP,\r
- sizeof (USB_WWID_DEVICE_PATH)\r
+ (UINT16) (sizeof (USB_WWID_DEVICE_PATH) + StrSize (SerialNumberStr))\r
);\r
\r
- UsbWwid->VendorId = (UINT16) Xtoi (VIDStr);\r
- UsbWwid->ProductId = (UINT16) Xtoi (PIDStr);\r
- UsbWwid->InterfaceNumber = (UINT16) Xtoi (InterfaceNumStr);\r
+ UsbWwid->VendorId = (UINT16) Strtoi (VIDStr);\r
+ UsbWwid->ProductId = (UINT16) Strtoi (PIDStr);\r
+ UsbWwid->InterfaceNumber = (UINT16) Strtoi (InterfaceNumStr);\r
+ StrCpy ((CHAR16 *) ((UINT8 *) UsbWwid + sizeof (USB_WWID_DEVICE_PATH)), SerialNumberStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) UsbWwid;\r
}\r
LogicalUnit = (DEVICE_LOGICAL_UNIT_DEVICE_PATH *) CreateDeviceNode (\r
MESSAGING_DEVICE_PATH,\r
MSG_DEVICE_LOGICAL_UNIT_DP,\r
- sizeof (DEVICE_LOGICAL_UNIT_DEVICE_PATH)\r
+ (UINT16) sizeof (DEVICE_LOGICAL_UNIT_DEVICE_PATH)\r
);\r
\r
- LogicalUnit->Lun = (UINT8) Xtoi (LunStr);\r
+ LogicalUnit->Lun = (UINT8) Strtoi (LunStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) LogicalUnit;\r
}\r
CHAR16 *DataDigestStr;\r
CHAR16 *AuthenticationStr;\r
CHAR16 *ProtocolStr;\r
+ CHAR8 *AsciiStr;\r
ISCSI_DEVICE_PATH_WITH_NAME *iSCSI;\r
\r
NameStr = GetNextParamStr (&TextDeviceNode);\r
(UINT16) (sizeof (ISCSI_DEVICE_PATH_WITH_NAME) + StrLen (NameStr) * 2)\r
);\r
\r
- StrCpy (iSCSI->iSCSITargetName, NameStr);\r
- iSCSI->TargetPortalGroupTag = (UINT16) Xtoi (PortalGroupStr);\r
- Xtoi64 (LunStr, &iSCSI->Lun);\r
+ AsciiStr = iSCSI->iSCSITargetName;\r
+ StrToAscii (NameStr, &AsciiStr);\r
+\r
+ iSCSI->TargetPortalGroupTag = (UINT16) Strtoi (PortalGroupStr);\r
+ Strtoi64 (LunStr, &iSCSI->Lun);\r
\r
Options = 0x0000;\r
if (StrCmp (HeaderDigestStr, L"CRC32C") == 0) {\r
iSCSI->LoginOption = (UINT16) Options;\r
\r
iSCSI->NetworkProtocol = (UINT16) StrCmp (ProtocolStr, L"TCP");\r
- iSCSI->Reserved = (UINT16) 0;\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) iSCSI;\r
}\r
sizeof (HARDDRIVE_DEVICE_PATH)\r
);\r
\r
- Hd->PartitionNumber = (UINT32) Atoi (PartitionStr);\r
+ Hd->PartitionNumber = (UINT32) Dtoi (PartitionStr);\r
\r
ZeroMem (Hd->Signature, 16);\r
Hd->MBRType = (UINT8) 0;\r
\r
- if (StrCmp (TypeStr, L"None") == 0) {\r
- Hd->SignatureType = (UINT8) 0;\r
- } else if (StrCmp (TypeStr, L"MBR") == 0) {\r
+ if (StrCmp (TypeStr, L"MBR") == 0) {\r
Hd->SignatureType = SIGNATURE_TYPE_MBR;\r
Hd->MBRType = 0x01;\r
\r
- Signature32 = (UINT32) Xtoi (SignatureStr);\r
+ Signature32 = (UINT32) Strtoi (SignatureStr);\r
CopyMem (Hd->Signature, &Signature32, sizeof (UINT32));\r
- } else if (StrCmp (TypeStr, L"GUID") == 0) {\r
+ } else if (StrCmp (TypeStr, L"GPT") == 0) {\r
Hd->SignatureType = SIGNATURE_TYPE_GUID;\r
Hd->MBRType = 0x02;\r
\r
StrToGuid (SignatureStr, &SignatureGuid);\r
CopyMem (Hd->Signature, &SignatureGuid, sizeof (EFI_GUID));\r
} else {\r
- Hd->SignatureType = 0xff;\r
-\r
+ Hd->SignatureType = (UINT8) Strtoi (TypeStr);\r
}\r
\r
- Xtoi64 (StartStr, &Hd->PartitionStart);\r
- Xtoi64 (SizeStr, &Hd->PartitionSize);\r
+ Strtoi64 (StartStr, &Hd->PartitionStart);\r
+ Strtoi64 (SizeStr, &Hd->PartitionSize);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Hd;\r
}\r
sizeof (CDROM_DEVICE_PATH)\r
);\r
\r
- CDROM->BootEntry = (UINT32) Xtoi (EntryStr);\r
- Xtoi64 (StartStr, &CDROM->PartitionStart);\r
- Xtoi64 (SizeStr, &CDROM->PartitionSize);\r
+ CDROM->BootEntry = (UINT32) Strtoi (EntryStr);\r
+ Strtoi64 (StartStr, &CDROM->PartitionStart);\r
+ Strtoi64 (SizeStr, &CDROM->PartitionSize);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) CDROM;\r
}\r
return (EFI_DEVICE_PATH_PROTOCOL *) Media;\r
}\r
\r
+STATIC\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextFv (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *GuidStr;\r
+ MEDIA_FW_VOL_DEVICE_PATH *Fv;\r
+\r
+ GuidStr = GetNextParamStr (&TextDeviceNode);\r
+ Fv = (MEDIA_FW_VOL_DEVICE_PATH *) CreateDeviceNode (\r
+ MEDIA_DEVICE_PATH,\r
+ MEDIA_PIWG_FW_VOL_DP,\r
+ sizeof (MEDIA_FW_VOL_DEVICE_PATH)\r
+ );\r
+\r
+ StrToGuid (GuidStr, &Fv->FvName);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) Fv;\r
+}\r
+\r
+STATIC\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextFvFile (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *GuidStr;\r
+ MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvFile;\r
+\r
+ GuidStr = GetNextParamStr (&TextDeviceNode);\r
+ FvFile = (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *) CreateDeviceNode (\r
+ MEDIA_DEVICE_PATH,\r
+ MEDIA_PIWG_FW_FILE_DP,\r
+ sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH)\r
+ );\r
+\r
+ StrToGuid (GuidStr, &FvFile->FvFileName);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) FvFile;\r
+}\r
+\r
STATIC\r
EFI_DEVICE_PATH_PROTOCOL *\r
DevPathFromTextBBS (\r
CHAR16 *TypeStr;\r
CHAR16 *IdStr;\r
CHAR16 *FlagsStr;\r
- UINT8 *AsciiStr;\r
+ CHAR8 *AsciiStr;\r
BBS_BBS_DEVICE_PATH *Bbs;\r
\r
TypeStr = GetNextParamStr (&TextDeviceNode);\r
} else if (StrCmp (TypeStr, L"Network") == 0) {\r
Bbs->DeviceType = BBS_TYPE_EMBEDDED_NETWORK;\r
} else {\r
- Bbs->DeviceType = BBS_TYPE_UNKNOWN;\r
+ Bbs->DeviceType = (UINT16) Strtoi (TypeStr);\r
}\r
\r
- AsciiStr = (UINT8 *) Bbs->String;\r
- StrToAscii (IdStr, (CHAR8 **) &AsciiStr);\r
+ AsciiStr = Bbs->String;\r
+ StrToAscii (IdStr, &AsciiStr);\r
\r
- Bbs->StatusFlag = (UINT16) Xtoi (FlagsStr);\r
+ Bbs->StatusFlag = (UINT16) Strtoi (FlagsStr);\r
\r
return (EFI_DEVICE_PATH_PROTOCOL *) Bbs;\r
}\r
\r
+STATIC\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextSata (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ SATA_DEVICE_PATH *Sata;\r
+ CHAR16 *Param1;\r
+ CHAR16 *Param2;\r
+ CHAR16 *Param3;\r
+\r
+ //\r
+ // The PMPN is optional.\r
+ //\r
+ Param1 = GetNextParamStr (&TextDeviceNode);\r
+ Param2 = GetNextParamStr (&TextDeviceNode);\r
+ Param3 = NULL;\r
+ if (!IS_NULL (TextDeviceNode)) {\r
+ Param3 = GetNextParamStr (&TextDeviceNode);\r
+ }\r
+\r
+ Sata = (SATA_DEVICE_PATH *) CreateDeviceNode (\r
+ MESSAGING_DEVICE_PATH,\r
+ MSG_SATA_DP,\r
+ sizeof (SATA_DEVICE_PATH)\r
+ );\r
+ Sata->HbaPortNumber = (UINT16) Xtoi (Param1);\r
+ if (Param3 != NULL) {\r
+ Sata->PortMultiplierPort = (UINT16) Xtoi (Param2);\r
+ Param2 = Param3;\r
+ } else {\r
+ Sata->PortMultiplierPort = 0;\r
+ }\r
+ Sata->LogicalUnitNumber = (UINT16) Xtoi (Param2);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) Sata;\r
+}\r
+\r
GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE DevPathFromTextTable[] = {\r
{L"Pci", DevPathFromTextPci},\r
{L"PcCard", DevPathFromTextPcCard},\r
{L"CDROM", DevPathFromTextCDROM},\r
{L"VenMEDIA", DevPathFromTextVenMEDIA},\r
{L"Media", DevPathFromTextMedia},\r
+ {L"Fv", DevPathFromTextFv},\r
+ {L"FvFile", DevPathFromTextFvFile},\r
{L"BBS", DevPathFromTextBBS},\r
+ {L"Sata", DevPathFromTextSata},\r
{NULL, NULL}\r
};\r
\r
PCI_DEVICE_PATH *Pci;\r
\r
Pci = DevPath;\r
- CatPrint (Str, L"Pci(%x,%x)", Pci->Function, Pci->Device);\r
+ CatPrint (Str, L"Pci(0x%x,0x%x)", Pci->Device, Pci->Function);\r
}\r
\r
STATIC\r
PCCARD_DEVICE_PATH *Pccard;\r
\r
Pccard = DevPath;\r
- CatPrint (Str, L"PcCard(%x)", Pccard->FunctionNumber);\r
+ CatPrint (Str, L"PcCard(0x%x)", Pccard->FunctionNumber);\r
}\r
\r
STATIC\r
MemMap = DevPath;\r
CatPrint (\r
Str,\r
- L"MemoryMapped(%lx,%lx)",\r
+ L"MemoryMapped(0x%x,0x%lx,0x%lx)",\r
+ MemMap->MemoryType,\r
MemMap->StartingAddress,\r
MemMap->EndingAddress\r
);\r
VENDOR_DEVICE_PATH *Vendor;\r
CHAR16 *Type;\r
UINTN Index;\r
+ UINTN DataLength;\r
UINT32 FlowControlMap;\r
UINT16 Info;\r
\r
} else if (CompareGuid (&Vendor->Guid, &mEfiDevicePathMessagingSASGuid)) {\r
CatPrint (\r
Str,\r
- L"SAS(%lx,%lx,%x,",\r
+ L"SAS(0x%lx,0x%lx,0x%x,",\r
((SAS_DEVICE_PATH *) Vendor)->SasAddress,\r
((SAS_DEVICE_PATH *) Vendor)->Lun,\r
((SAS_DEVICE_PATH *) Vendor)->RelativeTargetPort\r
if ((Info & 0x0f) == 1) {\r
CatPrint (Str, L"0,");\r
} else {\r
- CatPrint (Str, L"%x,", (Info >> 8) & 0xff);\r
+ CatPrint (Str, L"0x%x,", (Info >> 8) & 0xff);\r
}\r
} else {\r
CatPrint (Str, L"0,0,0,0,");\r
}\r
\r
- CatPrint (Str, L"%x)", ((SAS_DEVICE_PATH *) Vendor)->Reserved);\r
+ CatPrint (Str, L"0x%x)", ((SAS_DEVICE_PATH *) Vendor)->Reserved);\r
return ;\r
} else if (CompareGuid (&Vendor->Guid, &gEfiDebugPortProtocolGuid)) {\r
CatPrint (Str, L"DebugPort()");\r
return ;\r
- } else {\r
- return ;\r
- //\r
- // reserved\r
- //\r
}\r
}\r
break;\r
break;\r
}\r
\r
- CatPrint (Str, L"Ven%s(%g,", Type, &Vendor->Guid);\r
- for (Index = 0; Index < DevicePathNodeLength (&Vendor->Header) - sizeof (VENDOR_DEVICE_PATH); Index++) {\r
- CatPrint (Str, L"%02x", ((VENDOR_DEVICE_PATH_WITH_DATA *) Vendor)->VendorDefinedData[Index]);\r
+ DataLength = DevicePathNodeLength (&Vendor->Header) - sizeof (VENDOR_DEVICE_PATH);\r
+ CatPrint (Str, L"Ven%s(%g", Type, &Vendor->Guid);\r
+ if (DataLength != 0) {\r
+ CatPrint (Str, L",");\r
+ for (Index = 0; Index < DataLength; Index++) {\r
+ CatPrint (Str, L"%02x", ((VENDOR_DEVICE_PATH_WITH_DATA *) Vendor)->VendorDefinedData[Index]);\r
+ }\r
}\r
\r
CatPrint (Str, L")");\r
Controller = DevPath;\r
CatPrint (\r
Str,\r
- L"Ctrl(%x)",\r
+ L"Ctrl(0x%x)",\r
Controller->ControllerNumber\r
);\r
}\r
\r
Acpi = DevPath;\r
if ((Acpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
- if (AllowShortcuts) {\r
- switch (EISA_ID_TO_NUM (Acpi->HID)) {\r
- case 0x0a03:\r
- CatPrint (Str, L"PciRoot(%x)", Acpi->UID);\r
- break;\r
-\r
- case 0x0604:\r
- CatPrint (Str, L"Floppy(%x)", Acpi->UID);\r
- break;\r
+ switch (EISA_ID_TO_NUM (Acpi->HID)) {\r
+ case 0x0a03:\r
+ CatPrint (Str, L"PciRoot(0x%x)", Acpi->UID);\r
+ break;\r
\r
- case 0x0301:\r
- CatPrint (Str, L"Keyboard(%x)", Acpi->UID);\r
- break;\r
+ case 0x0604:\r
+ CatPrint (Str, L"Floppy(0x%x)", Acpi->UID);\r
+ break;\r
\r
- case 0x0501:\r
- CatPrint (Str, L"Serial(%x)", Acpi->UID);\r
- break;\r
+ case 0x0301:\r
+ CatPrint (Str, L"Keyboard(0x%x)", Acpi->UID);\r
+ break;\r
\r
- case 0x0401:\r
- CatPrint (Str, L"ParallelPort(%x)", Acpi->UID);\r
- break;\r
+ case 0x0501:\r
+ CatPrint (Str, L"Serial(0x%x)", Acpi->UID);\r
+ break;\r
\r
- default:\r
- break;\r
- }\r
+ case 0x0401:\r
+ CatPrint (Str, L"ParallelPort(0x%x)", Acpi->UID);\r
+ break;\r
\r
- return ;\r
+ default:\r
+ CatPrint (Str, L"Acpi(PNP%04x,0x%x)", EISA_ID_TO_NUM (Acpi->HID), Acpi->UID);\r
+ break;\r
}\r
-\r
- CatPrint (Str, L"Acpi(PNP%04x,%x)", EISA_ID_TO_NUM (Acpi->HID), Acpi->UID);\r
} else {\r
- CatPrint (Str, L"Acpi(%08x,%x)", Acpi->HID, Acpi->UID);\r
+ CatPrint (Str, L"Acpi(0x%08x,0x%x)", Acpi->HID, Acpi->UID);\r
}\r
}\r
\r
-#define NextStrA(a) ((UINT8 *) (((UINT8 *) (a)) + AsciiStrLen ((CHAR8 *) (a)) + 1))\r
+STATIC\r
+VOID\r
+EisaIdToText (\r
+ IN UINT32 EisaId,\r
+ IN OUT CHAR16 *Text\r
+ )\r
+{\r
+ CHAR16 PnpIdStr[17];\r
+\r
+ //\r
+ //UnicodeSPrint ("%X", 0x0a03) => "0000000000000A03"\r
+ //\r
+ UnicodeSPrint (PnpIdStr, 17 * 2, L"%X", EisaId >> 16);\r
+\r
+ UnicodeSPrint (\r
+ Text,\r
+ 0,\r
+ L"%c%c%c%s",\r
+ '@' + ((EisaId >> 10) & 0x1f),\r
+ '@' + ((EisaId >> 5) & 0x1f),\r
+ '@' + ((EisaId >> 0) & 0x1f),\r
+ PnpIdStr + (16 - 4)\r
+ );\r
+}\r
\r
STATIC\r
VOID\r
-DevPathToTextExtAcpi (\r
+DevPathToTextAcpiEx (\r
IN OUT POOL_PRINT *Str,\r
IN VOID *DevPath,\r
IN BOOLEAN DisplayOnly,\r
IN BOOLEAN AllowShortcuts\r
)\r
{\r
- ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *AcpiExt;\r
- UINT8 *NextString;\r
+ ACPI_EXTENDED_HID_DEVICE_PATH *AcpiEx;\r
+ CHAR8 *HIDStr;\r
+ CHAR8 *UIDStr;\r
+ CHAR8 *CIDStr;\r
+ CHAR16 HIDText[11];\r
+ CHAR16 CIDText[11];\r
+\r
+ AcpiEx = DevPath;\r
+ HIDStr = (CHAR8 *) (((UINT8 *) AcpiEx) + sizeof (ACPI_EXTENDED_HID_DEVICE_PATH));\r
+ UIDStr = HIDStr + AsciiStrLen (HIDStr) + 1;\r
+ CIDStr = UIDStr + AsciiStrLen (UIDStr) + 1;\r
+\r
+ EisaIdToText (AcpiEx->HID, HIDText);\r
+ EisaIdToText (AcpiEx->CID, CIDText);\r
+\r
+ if ((*HIDStr == '\0') && (*CIDStr == '\0') && (AcpiEx->UID == 0)) {\r
+ //\r
+ // use AcpiExp()\r
+ //\r
+ CatPrint (\r
+ Str,\r
+ L"AcpiExp(%s,%s,%a)",\r
+ HIDText,\r
+ CIDText,\r
+ UIDStr\r
+ );\r
+ } else {\r
+ if (AllowShortcuts) {\r
+ //\r
+ // display only\r
+ //\r
+ if (AcpiEx->HID == 0) {\r
+ CatPrint (Str, L"AcpiEx(%a,", HIDStr);\r
+ } else {\r
+ CatPrint (Str, L"AcpiEx(%s,", HIDText);\r
+ }\r
\r
- AcpiExt = DevPath;\r
+ if (AcpiEx->UID == 0) {\r
+ CatPrint (Str, L"%a,", UIDStr);\r
+ } else {\r
+ CatPrint (Str, L"0x%x,", AcpiEx->UID);\r
+ }\r
\r
- if (AllowShortcuts) {\r
- NextString = NextStrA (AcpiExt->HidUidCidStr);\r
- if ((*(AcpiExt->HidUidCidStr) == '\0') &&\r
- (*(NextStrA (NextString)) == '\0') &&\r
- (AcpiExt->UID == 0)\r
- ) {\r
- if ((AcpiExt->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
- CatPrint (\r
- Str,\r
- L"AcpiExp(PNP%04x,%x,%a)",\r
- EISA_ID_TO_NUM (AcpiExt->HID),\r
- AcpiExt->CID,\r
- NextStrA (AcpiExt->HidUidCidStr)\r
- );\r
+ if (AcpiEx->CID == 0) {\r
+ CatPrint (Str, L"%a)", CIDStr);\r
} else {\r
- CatPrint (\r
- Str,\r
- L"AcpiExp(%08x,%x,%a)",\r
- AcpiExt->HID,\r
- AcpiExt->CID,\r
- NextStrA (AcpiExt->HidUidCidStr)\r
- );\r
+ CatPrint (Str, L"%s)", CIDText);\r
}\r
+ } else {\r
+ CatPrint (\r
+ Str,\r
+ L"AcpiEx(%s,%s,0x%x,%a,%a,%a)",\r
+ HIDText,\r
+ CIDText,\r
+ AcpiEx->UID,\r
+ HIDStr,\r
+ CIDStr,\r
+ UIDStr\r
+ );\r
}\r
- return ;\r
}\r
+}\r
\r
- NextString = NextStrA (AcpiExt->HidUidCidStr);\r
- NextString = NextStrA (NextString);\r
- if ((AcpiExt->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
- CatPrint (\r
- Str,\r
- L"AcpiEx(PNP%04x,%x,%x,%a,%a,%a)",\r
- EISA_ID_TO_NUM (AcpiExt->HID),\r
- AcpiExt->CID,\r
- AcpiExt->UID,\r
- AcpiExt->HidUidCidStr,\r
- NextString,\r
- NextStrA (AcpiExt->HidUidCidStr)\r
- );\r
- } else {\r
- CatPrint (\r
- Str,\r
- L"AcpiEx(%08x,%x,%x,%a,%a,%a)",\r
- AcpiExt->HID,\r
- AcpiExt->CID,\r
- AcpiExt->UID,\r
- AcpiExt->HidUidCidStr,\r
- NextString,\r
- NextStrA (AcpiExt->HidUidCidStr)\r
- );\r
+STATIC\r
+VOID\r
+DevPathToTextAcpiAdr (\r
+ IN OUT POOL_PRINT *Str,\r
+ IN VOID *DevPath,\r
+ IN BOOLEAN DisplayOnly,\r
+ IN BOOLEAN AllowShortcuts\r
+ )\r
+{\r
+ ACPI_ADR_DEVICE_PATH *AcpiAdr;\r
+ UINT16 Index;\r
+ UINT16 Length;\r
+ UINT16 AdditionalAdrCount;\r
+\r
+ AcpiAdr = DevPath;\r
+ Length = (UINT16) DevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL *) AcpiAdr);\r
+ AdditionalAdrCount = (UINT16) ((Length - 8) / 4);\r
+\r
+ CatPrint (Str, L"AcpiAdr(0x%x", AcpiAdr->ADR);\r
+ for (Index = 0; Index < AdditionalAdrCount; Index++) {\r
+ CatPrint (Str, L",0x%x", *(UINT32 *) ((UINT8 *) AcpiAdr + 8 + Index * 4));\r
}\r
+ CatPrint (Str, L")");\r
}\r
\r
STATIC\r
Atapi = DevPath;\r
\r
if (DisplayOnly) {\r
- CatPrint (Str, L"Ata(%x)", Atapi->Lun);\r
+ CatPrint (Str, L"Ata(0x%x)", Atapi->Lun);\r
} else {\r
CatPrint (\r
Str,\r
- L"Ata(%s,%s,%x)",\r
+ L"Ata(%s,%s,0x%x)",\r
Atapi->PrimarySecondary ? L"Secondary" : L"Primary",\r
Atapi->SlaveMaster ? L"Slave" : L"Master",\r
Atapi->Lun\r
SCSI_DEVICE_PATH *Scsi;\r
\r
Scsi = DevPath;\r
- CatPrint (Str, L"Scsi(%x,%x)", Scsi->Pun, Scsi->Lun);\r
+ CatPrint (Str, L"Scsi(0x%x,0x%x)", Scsi->Pun, Scsi->Lun);\r
}\r
\r
STATIC\r
FIBRECHANNEL_DEVICE_PATH *Fibre;\r
\r
Fibre = DevPath;\r
- CatPrint (Str, L"Fibre(%lx,%lx)", Fibre->WWN, Fibre->Lun);\r
+ CatPrint (Str, L"Fibre(0x%lx,0x%lx)", Fibre->WWN, Fibre->Lun);\r
}\r
\r
STATIC\r
F1394_DEVICE_PATH *F1394;\r
\r
F1394 = DevPath;\r
- CatPrint (Str, L"I1394(%lx)", F1394->Guid);\r
+ //\r
+ // Guid has format of IEEE-EUI64\r
+ //\r
+ CatPrint (Str, L"I1394(%016lx)", F1394->Guid);\r
}\r
\r
STATIC\r
USB_DEVICE_PATH *Usb;\r
\r
Usb = DevPath;\r
- CatPrint (Str, L"USB(%x,%x)", Usb->ParentPortNumber, Usb->InterfaceNumber);\r
+ CatPrint (Str, L"USB(0x%x,0x%x)", Usb->ParentPortNumber, Usb->InterfaceNumber);\r
}\r
\r
STATIC\r
)\r
{\r
USB_WWID_DEVICE_PATH *UsbWWId;\r
+ CHAR16 *SerialNumberStr;\r
+ CHAR16 *NewStr;\r
+ UINT16 Length;\r
\r
UsbWWId = DevPath;\r
+\r
+ SerialNumberStr = (CHAR16 *) ((UINT8 *) UsbWWId + sizeof (USB_WWID_DEVICE_PATH));\r
+ Length = (UINT16) ((DevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL *) UsbWWId) - sizeof (USB_WWID_DEVICE_PATH)) / sizeof (CHAR16));\r
+ if (SerialNumberStr [Length - 1] != 0) {\r
+ //\r
+ // In case no NULL terminator in SerialNumber, create a new one with NULL terminator\r
+ //\r
+ NewStr = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), SerialNumberStr);\r
+ NewStr [Length] = 0;\r
+ SerialNumberStr = NewStr;\r
+ }\r
+\r
CatPrint (\r
Str,\r
- L"UsbWwid(%x,%x,%x,\"WWID\")",\r
+ L"UsbWwid(0x%x,0x%x,0x%x,\"%s\")",\r
UsbWWId->VendorId,\r
UsbWWId->ProductId,\r
- UsbWWId->InterfaceNumber\r
+ UsbWWId->InterfaceNumber,\r
+ SerialNumberStr\r
);\r
}\r
\r
DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicalUnit;\r
\r
LogicalUnit = DevPath;\r
- CatPrint (Str, L"Unit(%x)", LogicalUnit->Lun);\r
+ CatPrint (Str, L"Unit(0x%x)", LogicalUnit->Lun);\r
}\r
\r
STATIC\r
)\r
{\r
USB_CLASS_DEVICE_PATH *UsbClass;\r
+ BOOLEAN IsKnownSubClass;\r
+\r
\r
UsbClass = DevPath;\r
\r
- if (AllowShortcuts == TRUE) {\r
- switch (UsbClass->DeviceClass) {\r
- case 1:\r
- CatPrint (\r
- Str,\r
- L"UsbAudio(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ IsKnownSubClass = TRUE;\r
+ switch (UsbClass->DeviceClass) {\r
+ case USB_CLASS_AUDIO:\r
+ CatPrint (Str, L"UsbAudio");\r
+ break;\r
\r
- case 2:\r
- CatPrint (\r
- Str,\r
- L"UsbCDCControl(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ case USB_CLASS_CDCCONTROL:\r
+ CatPrint (Str, L"UsbCDCControl");\r
+ break;\r
\r
- case 3:\r
- CatPrint (\r
- Str,\r
- L"UsbHID(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ case USB_CLASS_HID:\r
+ CatPrint (Str, L"UsbHID");\r
+ break;\r
\r
- case 6:\r
- CatPrint (\r
- Str,\r
- L"UsbImage(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ case USB_CLASS_IMAGE:\r
+ CatPrint (Str, L"UsbImage");\r
+ break;\r
\r
- case 7:\r
- CatPrint (\r
- Str,\r
- L"UsbPrinter(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ case USB_CLASS_PRINTER:\r
+ CatPrint (Str, L"UsbPrinter");\r
+ break;\r
\r
- case 8:\r
- CatPrint (\r
- Str,\r
- L"UsbMassStorage(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ case USB_CLASS_MASS_STORAGE:\r
+ CatPrint (Str, L"UsbMassStorage");\r
+ break;\r
\r
- case 9:\r
- CatPrint (\r
- Str,\r
- L"UsbHub(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ case USB_CLASS_HUB:\r
+ CatPrint (Str, L"UsbHub");\r
+ break;\r
\r
- case 10:\r
- CatPrint (\r
- Str,\r
- L"UsbCDCData(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ case USB_CLASS_CDCDATA:\r
+ CatPrint (Str, L"UsbCDCData");\r
+ break;\r
\r
- case 11:\r
- CatPrint (\r
- Str,\r
- L"UsbSmartCard(%x,%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
- UsbClass->DeviceProtocol\r
- );\r
- break;\r
+ case USB_CLASS_SMART_CARD:\r
+ CatPrint (Str, L"UsbSmartCard");\r
+ break;\r
\r
- case 14:\r
+ case USB_CLASS_VIDEO:\r
+ CatPrint (Str, L"UsbVideo");\r
+ break;\r
+\r
+ case USB_CLASS_DIAGNOSTIC:\r
+ CatPrint (Str, L"UsbDiagnostic");\r
+ break;\r
+\r
+ case USB_CLASS_WIRELESS:\r
+ CatPrint (Str, L"UsbWireless");\r
+ break;\r
+\r
+ default:\r
+ IsKnownSubClass = FALSE;\r
+ break;\r
+ }\r
+\r
+ if (IsKnownSubClass) {\r
+ CatPrint (\r
+ Str,\r
+ L"(0x%x,0x%x,0x%x,0x%x)",\r
+ UsbClass->VendorId,\r
+ UsbClass->ProductId,\r
+ UsbClass->DeviceSubClass,\r
+ UsbClass->DeviceProtocol\r
+ );\r
+ return;\r
+ }\r
+\r
+ if (UsbClass->DeviceClass == USB_CLASS_RESERVE) {\r
+ if (UsbClass->DeviceSubClass == USB_SUBCLASS_FW_UPDATE) {\r
CatPrint (\r
Str,\r
- L"UsbVideo(%x,%x,%x,%x)",\r
+ L"UsbDeviceFirmwareUpdate(0x%x,0x%x,0x%x)",\r
UsbClass->VendorId,\r
UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
UsbClass->DeviceProtocol\r
);\r
- break;\r
-\r
- case 220:\r
+ return;\r
+ } else if (UsbClass->DeviceSubClass == USB_SUBCLASS_IRDA_BRIDGE) {\r
CatPrint (\r
Str,\r
- L"UsbDiagnostic(%x,%x,%x,%x)",\r
+ L"UsbIrdaBridge(0x%x,0x%x,0x%x)",\r
UsbClass->VendorId,\r
UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
UsbClass->DeviceProtocol\r
);\r
- break;\r
-\r
- case 224:\r
+ return;\r
+ } else if (UsbClass->DeviceSubClass == USB_SUBCLASS_TEST) {\r
CatPrint (\r
Str,\r
- L"UsbWireless(%x,%x,%x,%x)",\r
+ L"UsbTestAndMeasurement(0x%x,0x%x,0x%x)",\r
UsbClass->VendorId,\r
UsbClass->ProductId,\r
- UsbClass->DeviceSubClass,\r
UsbClass->DeviceProtocol\r
);\r
- break;\r
-\r
- case 254:\r
- if (UsbClass->DeviceSubClass == 1) {\r
- CatPrint (\r
- Str,\r
- L"UsbDeviceFirmwareUpdate(%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceProtocol\r
- );\r
- } else if (UsbClass->DeviceSubClass == 2) {\r
- CatPrint (\r
- Str,\r
- L"UsbIrdaBridge(%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceProtocol\r
- );\r
- } else if (UsbClass->DeviceSubClass == 3) {\r
- CatPrint (\r
- Str,\r
- L"UsbTestAndMeasurement(%x,%x,%x)",\r
- UsbClass->VendorId,\r
- UsbClass->ProductId,\r
- UsbClass->DeviceProtocol\r
- );\r
- }\r
- break;\r
-\r
- default:\r
- break;\r
+ return;\r
}\r
-\r
- return ;\r
}\r
\r
CatPrint (\r
Str,\r
- L"UsbClass(%x,%x,%x,%x,%x)",\r
+ L"UsbClass(0x%x,0x%x,0x%x,0x%x,0x%x)",\r
UsbClass->VendorId,\r
UsbClass->ProductId,\r
UsbClass->DeviceClass,\r
);\r
}\r
\r
+STATIC\r
+VOID\r
+DevPathToTextSata (\r
+ IN OUT POOL_PRINT *Str,\r
+ IN VOID *DevPath,\r
+ IN BOOLEAN DisplayOnly,\r
+ IN BOOLEAN AllowShortcuts\r
+ )\r
+{\r
+ SATA_DEVICE_PATH *Sata;\r
+\r
+ Sata = DevPath;\r
+ CatPrint (\r
+ Str,\r
+ L"Sata(0x%x,0x%x,0x%x)",\r
+ (UINTN) Sata->HbaPortNumber,\r
+ (UINTN) Sata->PortMultiplierPort,\r
+ (UINTN) Sata->LogicalUnitNumber\r
+ );\r
+}\r
+\r
STATIC\r
VOID\r
DevPathToTextI2O (\r
I2O_DEVICE_PATH *I2O;\r
\r
I2O = DevPath;\r
- CatPrint (Str, L"I2O(%x)", I2O->Tid);\r
+ CatPrint (Str, L"I2O(0x%x)", I2O->Tid);\r
}\r
\r
STATIC\r
CatPrint (Str, L"%02x", MAC->MacAddress.Addr[Index]);\r
}\r
\r
- CatPrint (Str, L",%x)", MAC->IfType);\r
+ CatPrint (Str, L",0x%x)", MAC->IfType);\r
}\r
\r
STATIC\r
InfiniBand = DevPath;\r
CatPrint (\r
Str,\r
- L"Infiniband(%x,%g,%lx,%lx,%lx)",\r
+ L"Infiniband(0x%x,%g,0x%lx,0x%lx,0x%lx)",\r
InfiniBand->ResourceFlags,\r
InfiniBand->PortGid,\r
InfiniBand->ServiceId,\r
iSCSI = DevPath;\r
CatPrint (\r
Str,\r
- L"iSCSI(%s,%x,%lx,",\r
+ L"iSCSI(%a,0x%x,0x%lx,",\r
iSCSI->iSCSITargetName,\r
iSCSI->TargetPortalGroupTag,\r
iSCSI->Lun\r
\r
Hd = DevPath;\r
switch (Hd->SignatureType) {\r
- case 0:\r
- CatPrint (\r
- Str,\r
- L"HD(%d,%s,0,",\r
- Hd->PartitionNumber,\r
- L"None"\r
- );\r
- break;\r
-\r
case SIGNATURE_TYPE_MBR:\r
CatPrint (\r
Str,\r
- L"HD(%d,%s,%08x,",\r
+ L"HD(%d,%s,0x%08x,",\r
Hd->PartitionNumber,\r
L"MBR",\r
*((UINT32 *) (&(Hd->Signature[0])))\r
Str,\r
L"HD(%d,%s,%g,",\r
Hd->PartitionNumber,\r
- L"GUID",\r
+ L"GPT",\r
(EFI_GUID *) &(Hd->Signature[0])\r
);\r
break;\r
\r
default:\r
+ CatPrint (\r
+ Str,\r
+ L"HD(%d,%d,0,",\r
+ Hd->PartitionNumber,\r
+ Hd->SignatureType\r
+ );\r
break;\r
}\r
\r
- CatPrint (Str, L"%lx,%lx)", Hd->PartitionStart, Hd->PartitionSize);\r
+ CatPrint (Str, L"0x%lx,0x%lx)", Hd->PartitionStart, Hd->PartitionSize);\r
}\r
\r
STATIC\r
\r
Cd = DevPath;\r
if (DisplayOnly == TRUE) {\r
- CatPrint (Str, L"CDROM(%x)", Cd->BootEntry);\r
+ CatPrint (Str, L"CDROM(0x%x)", Cd->BootEntry);\r
return ;\r
}\r
\r
- CatPrint (Str, L"CDROM(%x,%lx,%lx)", Cd->BootEntry, Cd->PartitionStart, Cd->PartitionSize);\r
+ CatPrint (Str, L"CDROM(0x%x,0x%lx,0x%lx)", Cd->BootEntry, Cd->PartitionStart, Cd->PartitionSize);\r
}\r
\r
STATIC\r
CatPrint (Str, L"Media(%g)", &MediaProt->Protocol);\r
}\r
\r
+STATIC\r
+VOID\r
+DevPathToTextFv (\r
+ IN OUT POOL_PRINT *Str,\r
+ IN VOID *DevPath,\r
+ IN BOOLEAN DisplayOnly,\r
+ IN BOOLEAN AllowShortcuts\r
+ )\r
+{\r
+ MEDIA_FW_VOL_DEVICE_PATH *Fv;\r
+\r
+ Fv = DevPath;\r
+ CatPrint (Str, L"Fv(%g)", &Fv->FvName);\r
+}\r
+\r
+STATIC\r
+VOID\r
+DevPathToTextFvFile (\r
+ IN OUT POOL_PRINT *Str,\r
+ IN VOID *DevPath,\r
+ IN BOOLEAN DisplayOnly,\r
+ IN BOOLEAN AllowShortcuts\r
+ )\r
+{\r
+ MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvFile;\r
+\r
+ FvFile = DevPath;\r
+ CatPrint (Str, L"FvFile(%g)", &FvFile->FvFileName);\r
+}\r
+\r
STATIC\r
VOID\r
DevPathToTextBBS (\r
break;\r
\r
default:\r
- Type = L"?";\r
+ Type = NULL;\r
break;\r
}\r
\r
- CatPrint (Str, L"BBS(%s,%a", Type, Bbs->String);\r
+ if (Type != NULL) {\r
+ CatPrint (Str, L"BBS(%s,%a", Type, Bbs->String);\r
+ } else {\r
+ CatPrint (Str, L"BBS(0x%x,%a", Bbs->DeviceType, Bbs->String);\r
+ }\r
\r
if (DisplayOnly == TRUE) {\r
CatPrint (Str, L")");\r
return ;\r
}\r
\r
- CatPrint (Str, L",%x)", Bbs->StatusFlag);\r
+ CatPrint (Str, L",0x%x)", Bbs->StatusFlag);\r
}\r
\r
STATIC\r
{HARDWARE_DEVICE_PATH, HW_VENDOR_DP, DevPathToTextVendor},\r
{HARDWARE_DEVICE_PATH, HW_CONTROLLER_DP, DevPathToTextController},\r
{ACPI_DEVICE_PATH, ACPI_DP, DevPathToTextAcpi},\r
- {ACPI_DEVICE_PATH, ACPI_EXTENDED_DP, DevPathToTextExtAcpi},\r
+ {ACPI_DEVICE_PATH, ACPI_EXTENDED_DP, DevPathToTextAcpiEx},\r
+ {ACPI_DEVICE_PATH, ACPI_ADR_DP, DevPathToTextAcpiAdr},\r
{MESSAGING_DEVICE_PATH, MSG_ATAPI_DP, DevPathToTextAtapi},\r
{MESSAGING_DEVICE_PATH, MSG_SCSI_DP, DevPathToTextScsi},\r
{MESSAGING_DEVICE_PATH, MSG_FIBRECHANNEL_DP, DevPathToTextFibre},\r
{MESSAGING_DEVICE_PATH, MSG_USB_WWID_DP, DevPathToTextUsbWWID},\r
{MESSAGING_DEVICE_PATH, MSG_DEVICE_LOGICAL_UNIT_DP, DevPathToTextLogicalUnit},\r
{MESSAGING_DEVICE_PATH, MSG_USB_CLASS_DP, DevPathToTextUsbClass},\r
+ {MESSAGING_DEVICE_PATH, MSG_SATA_DP, DevPathToTextSata},\r
{MESSAGING_DEVICE_PATH, MSG_I2O_DP, DevPathToTextI2O},\r
{MESSAGING_DEVICE_PATH, MSG_MAC_ADDR_DP, DevPathToTextMacAddr},\r
{MESSAGING_DEVICE_PATH, MSG_IPv4_DP, DevPathToTextIPv4},\r
{MEDIA_DEVICE_PATH, MEDIA_FILEPATH_DP, DevPathToTextFilePath},\r
{MEDIA_DEVICE_PATH, MEDIA_PROTOCOL_DP, DevPathToTextMediaProtocol},\r
{MEDIA_DEVICE_PATH, MEDIA_FILEPATH_DP, DevPathToTextFilePath},\r
+ {MEDIA_DEVICE_PATH, MEDIA_PIWG_FW_VOL_DP, DevPathToTextFv},\r
+ {MEDIA_DEVICE_PATH, MEDIA_PIWG_FW_FILE_DP, DevPathToTextFvFile},\r
{BBS_DEVICE_PATH, BBS_BBS_DP, DevPathToTextBBS},\r
{END_DEVICE_PATH_TYPE, END_INSTANCE_DEVICE_PATH_SUBTYPE, DevPathToTextEndInstance},\r
{0, 0, NULL}\r
// Put a path seperator in if needed\r
//\r
if (Str.Len && DumpNode != DevPathToTextEndInstance) {\r
- if (*(Str.Str + Str.Len / sizeof (CHAR16) - 1) != L',') { \r
+ if (*(Str.Str + Str.Len / sizeof (CHAR16) - 1) != L',') {\r
CatPrint (&Str, L"/");\r
- } \r
+ }\r
}\r
//\r
// Print this node of the device path\r