From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 270DA2095D8C7 for ; Wed, 19 Jul 2017 19:17:08 -0700 (PDT) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Jul 2017 19:19:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,382,1496127600"; d="scan'208";a="113325036" Received: from shwdeopenpsi014.ccr.corp.intel.com ([10.239.9.13]) by orsmga002.jf.intel.com with ESMTP; 19 Jul 2017 19:19:02 -0700 From: Hao Wu To: edk2-devel@lists.01.org Cc: Hao Wu , Star Zeng Date: Thu, 20 Jul 2017 10:18:35 +0800 Message-Id: <20170720021835.10808-3-hao.a.wu@intel.com> X-Mailer: git-send-email 2.12.0.windows.1 In-Reply-To: <20170720021835.10808-1-hao.a.wu@intel.com> References: <20170720021835.10808-1-hao.a.wu@intel.com> Subject: [PATCH 2/2] MdeModulePkg/Ufs: Set 'Data Segment Length' field for Write Descriptor X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Jul 2017 02:17:08 -0000 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. Cc: Star Zeng Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu --- MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c | 3 +++ MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c index 1ef6c8878b..9c72c1dede 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 5fa635523a..4b7df74501 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; -- 2.12.0.windows.1