summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/UefiDevicePathLib
diff options
context:
space:
mode:
authorDandan Bi <dandan.bi@intel.com>2018-10-12 10:18:26 +0800
committerLiming Gao <liming.gao@intel.com>2018-10-24 22:15:56 +0800
commit6d9b9bbb6148831de2ca545994f31e27b3d4c675 (patch)
treeefbf2594329187324076622457f110edb2c2bd05 /MdePkg/Library/UefiDevicePathLib
parentea1486c28127057b7f3059b8c3c74afe7912460f (diff)
downloadedk2-6d9b9bbb6148831de2ca545994f31e27b3d4c675.tar.gz
edk2-6d9b9bbb6148831de2ca545994f31e27b3d4c675.tar.bz2
edk2-6d9b9bbb6148831de2ca545994f31e27b3d4c675.zip
MdePkg: Handle Sata device path when optional para is not specified
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1243 Sata device path format:Sata(HPN, PMPN, LUN) According to UEFI Spec, the PMPN is an integer between 0 and 65535 and is optional. If not provided, the default is 0xFFFF. This commit is to do the enhancement for Sata device path when optional para is not specified. Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Diffstat (limited to 'MdePkg/Library/UefiDevicePathLib')
-rw-r--r--MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
index 49da8268eb..ca912b4eb0 100644
--- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
+++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
@@ -3416,7 +3416,15 @@ DevPathFromTextSata (
(UINT16) sizeof (SATA_DEVICE_PATH)
);
Sata->HBAPortNumber = (UINT16) Strtoi (Param1);
- Sata->PortMultiplierPortNumber = (UINT16) Strtoi (Param2);
+
+ //
+ // According to UEFI spec, if PMPN is not provided, the default is 0xFFFF
+ //
+ if (*Param2 == L'\0' ) {
+ Sata->PortMultiplierPortNumber = 0xFFFF;
+ } else {
+ Sata->PortMultiplierPortNumber = (UINT16) Strtoi (Param2);
+ }
Sata->Lun = (UINT16) Strtoi (Param3);
return (EFI_DEVICE_PATH_PROTOCOL *) Sata;