diff options
author | Hao Wu <hao.a.wu@intel.com> | 2017-06-15 15:15:59 +0800 |
---|---|---|
committer | Hao Wu <hao.a.wu@intel.com> | 2017-08-02 20:56:53 +0800 |
commit | c16eee92d4b2e872f21645f7a4a04bbfb2a92d75 (patch) | |
tree | 2f3a3e9a5ab14235414ea56ca007f13fddf24c48 /MdeModulePkg | |
parent | 32c9049de1225de1b1fff796369d6fa0e7c9febc (diff) | |
download | edk2-c16eee92d4b2e872f21645f7a4a04bbfb2a92d75.zip edk2-c16eee92d4b2e872f21645f7a4a04bbfb2a92d75.tar.gz edk2-c16eee92d4b2e872f21645f7a4a04bbfb2a92d75.tar.bz2 |
MdeModulePkg/Ufs: Set 'Data Segment Length' field for Write Descriptor
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>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r-- | MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c | 3 | ||||
-rw-r--r-- | MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c index 1ef6c88..9c72c1d 100644 --- a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c +++ b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c @@ -407,6 +407,9 @@ UfsInitQueryRequestUpiu ( if (Opcode == UtpQueryFuncOpcodeWrDesc) {
CopyMem (QueryReq + 1, Data, DataSize);
+
+ SwapLittleEndianToBigEndian ((UINT8*)&DataSize, sizeof (UINT16));
+ QueryReq->DataSegLen = (UINT16)DataSize;
}
return EFI_SUCCESS;
diff --git a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c index 5fa6355..4b7df74 100644 --- a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c +++ b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c @@ -478,6 +478,9 @@ UfsInitQueryRequestUpiu ( if (Opcode == UtpQueryFuncOpcodeWrDesc) {
CopyMem (QueryReq + 1, Data, DataSize);
+
+ SwapLittleEndianToBigEndian ((UINT8*)&DataSize, sizeof (UINT16));
+ QueryReq->DataSegLen = (UINT16)DataSize;
}
return EFI_SUCCESS;
|