]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Sync the DevicePath Function update from MdePkg
authorFeng, YunhuaX <yunhuax.feng@intel.com>
Fri, 26 Oct 2018 08:37:14 +0000 (16:37 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Sat, 27 Oct 2018 11:49:26 +0000 (19:49 +0800)
Update the AcpiExp, USBxxx, Sata, VENDOR_DEVICE_PATH.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
BaseTools/Source/C/DevicePath/DevicePath.c
BaseTools/Source/C/DevicePath/DevicePathFromText.c
BaseTools/Source/C/Include/Protocol/DevicePath.h

index 956bbffb5f245de17957a437493e000881678b2d..356f5f7e2408abf97b25c7e228c7f9ad431a06d4 100644 (file)
@@ -25,7 +25,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define UTILITY_MAJOR_VERSION 0\r
 #define UTILITY_MINOR_VERSION 1\r
 \r
-EFI_GUID gEfiDebugPortDevicePathGuid = DEVICE_PATH_MESSAGING_DEBUGPORT;\r
+EFI_GUID gEfiDebugPortProtocolGuid = DEVICE_PATH_MESSAGING_DEBUGPORT;\r
 EFI_GUID gEfiPcAnsiGuid = EFI_PC_ANSI_GUID;\r
 EFI_GUID gEfiVT100Guid = EFI_VT_100_GUID;\r
 EFI_GUID gEfiVT100PlusGuid = EFI_VT_100_PLUS_GUID;\r
index bb74e2e170944e5f1426254a01d199085dacacde..555efa1acddeb181e880c7023dbbed3a4311db65 100644 (file)
@@ -764,7 +764,16 @@ DevPathFromTextAcpiExp (
                                                   );\r
 \r
   AcpiEx->HID = EisaIdFromText (HIDStr);\r
-  AcpiEx->CID = EisaIdFromText (CIDStr);\r
+  //\r
+  // According to UEFI spec, the CID parametr is optional and has a default value of 0.\r
+  // So when the CID parametr is not specified or specified as 0 in the text device node.\r
+  // Set the CID to 0 in the ACPI extension device path structure.\r
+  //\r
+  if (*CIDStr == L'\0' || *CIDStr == L'0') {\r
+    AcpiEx->CID = 0;\r
+  } else {\r
+    AcpiEx->CID = EisaIdFromText (CIDStr);\r
+  }\r
   AcpiEx->UID = 0;\r
 \r
   AsciiStr = (CHAR8 *) ((UINT8 *)AcpiEx + sizeof (ACPI_EXTENDED_HID_DEVICE_PATH));\r
@@ -1603,15 +1612,15 @@ DevPathFromTextDebugPort (
    CHAR16 *TextDeviceNode\r
   )\r
 {\r
-  VENDOR_DEFINED_MESSAGING_DEVICE_PATH  *Vend;\r
+  VENDOR_DEVICE_PATH  *Vend;\r
 \r
-  Vend = (VENDOR_DEFINED_MESSAGING_DEVICE_PATH *) CreateDeviceNode (\r
+  Vend = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
                                                     MESSAGING_DEVICE_PATH,\r
                                                     MSG_VENDOR_DP,\r
-                                                    (UINT16) sizeof (VENDOR_DEFINED_MESSAGING_DEVICE_PATH)\r
+                                                    (UINT16) sizeof (VENDOR_DEVICE_PATH)\r
                                                     );\r
 \r
-  CopyGuid (&Vend->Guid, &gEfiDebugPortDevicePathGuid);\r
+  CopyGuid (&Vend->Guid, &gEfiDebugPortProtocolGuid);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) Vend;\r
 }\r
@@ -1906,22 +1915,42 @@ ConvertFromTextUsbClass (
   PIDStr      = GetNextParamStr (&TextDeviceNode);\r
   if (UsbClassText->ClassExist) {\r
     ClassStr = GetNextParamStr (&TextDeviceNode);\r
-    UsbClass->DeviceClass = (UINT8) Strtoi (ClassStr);\r
+    if (*ClassStr == L'\0') {\r
+      UsbClass->DeviceClass = 0xFF;\r
+    } else {\r
+      UsbClass->DeviceClass = (UINT8) Strtoi (ClassStr);\r
+    }\r
   } else {\r
     UsbClass->DeviceClass = UsbClassText->Class;\r
   }\r
   if (UsbClassText->SubClassExist) {\r
     SubClassStr = GetNextParamStr (&TextDeviceNode);\r
-    UsbClass->DeviceSubClass = (UINT8) Strtoi (SubClassStr);\r
+    if (*SubClassStr == L'\0') {\r
+      UsbClass->DeviceSubClass = 0xFF;\r
+    } else {\r
+      UsbClass->DeviceSubClass = (UINT8) Strtoi (SubClassStr);\r
+    }\r
   } else {\r
     UsbClass->DeviceSubClass = UsbClassText->SubClass;\r
   }\r
 \r
   ProtocolStr = GetNextParamStr (&TextDeviceNode);\r
 \r
-  UsbClass->VendorId        = (UINT16) Strtoi (VIDStr);\r
-  UsbClass->ProductId       = (UINT16) Strtoi (PIDStr);\r
-  UsbClass->DeviceProtocol  = (UINT8) Strtoi (ProtocolStr);\r
+  if (*VIDStr == L'\0') {\r
+    UsbClass->VendorId        = 0xFFFF;\r
+  } else {\r
+    UsbClass->VendorId        = (UINT16) Strtoi (VIDStr);\r
+  }\r
+  if (*PIDStr == L'\0') {\r
+    UsbClass->ProductId       = 0xFFFF;\r
+  } else {\r
+    UsbClass->ProductId       = (UINT16) Strtoi (PIDStr);\r
+  }\r
+  if (*ProtocolStr == L'\0') {\r
+    UsbClass->DeviceProtocol  = 0xFF;\r
+  } else {\r
+    UsbClass->DeviceProtocol  = (UINT8) Strtoi (ProtocolStr);\r
+  }\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) UsbClass;\r
 }\r
@@ -3261,7 +3290,15 @@ DevPathFromTextSata (
                                 (UINT16) sizeof (SATA_DEVICE_PATH)\r
                                 );\r
   Sata->HBAPortNumber            = (UINT16) Strtoi (Param1);\r
-  Sata->PortMultiplierPortNumber = (UINT16) Strtoi (Param2);\r
+\r
+  //\r
+  // According to UEFI spec, if PMPN is not provided, the default is 0xFFFF\r
+  //\r
+  if (*Param2 == L'\0' ) {\r
+    Sata->PortMultiplierPortNumber = 0xFFFF;\r
+  } else {\r
+    Sata->PortMultiplierPortNumber = (UINT16) Strtoi (Param2);\r
+  }\r
   Sata->Lun                      = (UINT16) Strtoi (Param3);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) Sata;\r
index 68bb37e4793d0fd063cfe663a8039789795d1c2f..0295582cbd38a33e5f137c83e355a08bc146b119 100644 (file)
@@ -1380,7 +1380,7 @@ extern EFI_GUID  gEfiDebugPortVariableGuid;
 // DebugPort device path definitions...\r
 //\r
 #define DEVICE_PATH_MESSAGING_DEBUGPORT EFI_DEBUGPORT_PROTOCOL_GUID\r
-extern EFI_GUID  gEfiDebugPortDevicePathGuid;\r
+extern EFI_GUID  gEfiDebugPortProtocolGuid;\r
 \r
 typedef struct {\r
   EFI_DEVICE_PATH_PROTOCOL  Header;\r