]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/Ufs: Set 'Data Segment Length' field for Write Descriptor
authorHao Wu <hao.a.wu@intel.com>
Thu, 15 Jun 2017 07:15:59 +0000 (15:15 +0800)
committerHao Wu <hao.a.wu@intel.com>
Wed, 2 Aug 2017 12:56:53 +0000 (20:56 +0800)
According to the Universal Flash Storage (UFS) Version 2.1 (JESD220C) spec
Section 10.7.8.5, the DATA SEGMENT LENGTH field of the UPIU shall also be
set to number of descriptor bytes to write.

The origin codes miss the above operation.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c
MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c

index 1ef6c8878bf9875e5f882f91d06cbe1835b0945d..9c72c1dedef7ac1b4f4272b5aab932703647b383 100644 (file)
@@ -407,6 +407,9 @@ UfsInitQueryRequestUpiu (
 \r
   if (Opcode == UtpQueryFuncOpcodeWrDesc) {\r
     CopyMem (QueryReq + 1, Data, DataSize);\r
+\r
+    SwapLittleEndianToBigEndian ((UINT8*)&DataSize, sizeof (UINT16));\r
+    QueryReq->DataSegLen = (UINT16)DataSize;\r
   }\r
 \r
   return EFI_SUCCESS;\r
index 5fa635523aeb02c4f2c33ca60cdc3c7d0dd84c4c..4b7df745014e486d1881e857d9741c391b729689 100644 (file)
@@ -478,6 +478,9 @@ UfsInitQueryRequestUpiu (
 \r
   if (Opcode == UtpQueryFuncOpcodeWrDesc) {\r
     CopyMem (QueryReq + 1, Data, DataSize);\r
+\r
+    SwapLittleEndianToBigEndian ((UINT8*)&DataSize, sizeof (UINT16));\r
+    QueryReq->DataSegLen = (UINT16)DataSize;\r
   }\r
 \r
   return EFI_SUCCESS;\r