From nobody Wed May 15 04:50:21 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+109891+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109891+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1698045507; cv=none; d=zohomail.com; s=zohoarc; b=WxzR+pAbZEIpTa+Q4QcRYCFaA6cy+6rwgAE4jmMHsMU487CnK6Zxb2NI1r51/gZ+BDNbYYNS0I+wsoR6yKaCGwpXYG6+5Vvh1cRmODCC8WcLeVx8PMM8utRPNNLNJOeyFkyNZwuYkJWuqcLMNOe8P00HegeZ9frLKFNE2nTjebg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1698045507; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=ZJpNOcDayFpJ83Lukvm424ARGgrGr81VocltpB6CBrc=; b=P3wLtXjak7ACgK93SQ3qYFsr6oA5iV2Xy1uCR3asmcufDMVss0Tyer1vFygv1y97HgBc4wYe8ZAujFV1PGuXhvkCGPkyDmYwhekGRsfl98eg4oxxSaI+8dcIQdaGb7a4bjl4QYx7ksfpqIs5HIHC2Zsf5VWQUml0+PdSq8J87JI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109891+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1698045507357481.52618389685335; Mon, 23 Oct 2023 00:18:27 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=GGDKPYE/PCp/RBe1j8PFCkdP1n/seYnzriyNiZmHTj4=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1698045507; v=1; b=sVvfnzK6EZEuucrwrqtJGoG4Ssg969vd4R9vvxpAK/uSLBi7bEnwALkkJgshPpXXeyuHeNIQ ZB0AF6HWVmI+CZ0PpHjVSLm4Maf11gykiJlvUc8VN+ewP7b+pkG0yuUPP98t5e94lEXdYuFyf61 qzkcRNzQA3cbprJHNuQDp8Yg= X-Received: by 127.0.0.2 with SMTP id s3ziYY1788612xlBGFttXcYF; Mon, 23 Oct 2023 00:18:27 -0700 X-Received: from fd01.gateway.ufhost.com (fd01.gateway.ufhost.com [61.152.239.71]) by mx.groups.io with SMTP id smtpd.web11.115565.1698045505751789443 for ; Mon, 23 Oct 2023 00:18:26 -0700 X-Received: from EXMBX166.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX166", Issuer "EXMBX166" (not verified)) by fd01.gateway.ufhost.com (Postfix) with ESMTP id 7E1AA24E1BB; Mon, 23 Oct 2023 15:18:20 +0800 (CST) X-Received: from EXMBX073.cuchost.com (172.16.6.83) by EXMBX166.cuchost.com (172.16.6.76) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:20 +0800 X-Received: from localhost.localdomain (202.188.176.82) by EXMBX073.cuchost.com (172.16.6.83) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:17 +0800 From: "John Chew" To: CC: mindachen1987 , Sunil V L , Leif Lindholm , Michael D Kinney , Li Yong , John Chew Subject: [edk2-devel] [PATCH v2 1/5] DesignWare/DwEmmcDxe: Enabled Internal IDMAC interrupt RX/TX register Date: Mon, 23 Oct 2023 15:17:11 +0800 Message-ID: <20231023071715.777-2-yuinyee.chew@starfivetech.com> In-Reply-To: <20231023071715.777-1-yuinyee.chew@starfivetech.com> References: <20231023071715.777-1-yuinyee.chew@starfivetech.com> MIME-Version: 1.0 X-Originating-IP: [202.188.176.82] X-ClientProxiedBy: EXCAS066.cuchost.com (172.16.6.26) To EXMBX073.cuchost.com (172.16.6.83) X-YovoleRuleAgent: yovoleflag Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuinyee.chew@starfivetech.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: lpziqZ1OZzYNcTZM0JimuipQx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1698045508922100001 Content-Type: text/plain; charset="utf-8" From: mindachen1987 Remove DMA enable in CTRL register Added DMA polling handling for RX/TX Cc: Sunil V L Cc: Leif Lindholm Cc: Michael D Kinney Cc: Li Yong Co-authored-by: John Chew Signed-off-by: mindachen1987 --- Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h | 6 +++ Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c | 52 +++++++++++= +++++++-- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h b/Silic= on/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h index 09ad9b8428c4..3347418006c7 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h @@ -129,4 +129,10 @@ =20 #define DWEMMC_GET_HDATA_WIDTH(x) (((x) >> 7) & 0x7) =20 +/* Internal IDMAC interrupt defines */ +#define DWMCI_IDINTEN_RI (1 << 1) +#define DWMCI_IDINTEN_TI (1 << 0) + +#define DWMCI_IDINTEN_MASK (DWMCI_IDINTEN_RI | DWMCI_= IDINTEN_TI) + #endif // __DWEMMC_H__ diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c b/Si= licon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c index 39b1ea4346dc..7ac286c5f361 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c @@ -215,6 +215,7 @@ DwEmmcNotifyState ( do { Data =3D MmioRead32 (DWEMMC_BMOD); } while (Data & DWEMMC_IDMAC_SWRESET); + MmioWrite32 (DWEMMC_IDINTEN, 0x3); break; case MmcIdleState: break; @@ -463,6 +464,14 @@ PrepareDmaData ( ) { UINTN Cnt, Blks, Idx, LastIdx; + UINT32 Data; /* flag, cnt */ + + MmioWrite32 (DWEMMC_CTRL, DWEMMC_CTRL_FIFO_RESET); + do { + /* Wait until reset operation finished */ + Data =3D MmioRead32 (DWEMMC_CTRL); + } while (Data & DWEMMC_CTRL_RESET_ALL); + MmioWrite32 (DWEMMC_IDSTS, 0xffffffff); =20 Cnt =3D (Length + DWEMMC_DMA_BUF_SIZE - 1) / DWEMMC_DMA_BUF_SIZE; Blks =3D (Length + DWEMMC_BLOCK_SIZE - 1) / DWEMMC_BLOCK_SIZE; @@ -487,9 +496,7 @@ PrepareDmaData ( (IdmacDesc + LastIdx)->Des1 =3D DWEMMC_IDMAC_DES1_BS1(Length - (LastIdx * DWEMMC_DM= A_BUF_SIZE)); /* Set the Next field of Last Descriptor */ - (IdmacDesc + LastIdx)->Des3 =3D 0; MmioWrite32 (DWEMMC_DBADDR, (UINT32)((UINTN)IdmacDesc)); - return EFI_SUCCESS; } =20 @@ -501,7 +508,7 @@ StartDma ( UINT32 Data; =20 Data =3D MmioRead32 (DWEMMC_CTRL); - Data |=3D DWEMMC_CTRL_INT_EN | DWEMMC_CTRL_DMA_EN | DWEMMC_CTRL_IDMAC_EN; + Data |=3D DWEMMC_CTRL_DMA_EN | DWEMMC_CTRL_IDMAC_EN; MmioWrite32 (DWEMMC_CTRL, Data); Data =3D MmioRead32 (DWEMMC_BMOD); Data |=3D DWEMMC_IDMAC_ENABLE | DWEMMC_IDMAC_FB; @@ -511,6 +518,41 @@ StartDma ( MmioWrite32 (DWEMMC_BYTCNT, Length); } =20 +STATIC +EFI_STATUS +DwEmmcWaitDmaComplete ( + IN EFI_MMC_HOST_PROTOCOL *This, + IN UINT32 Read + ) +{ + UINT32 Mask, Ctrl, Timeout =3D 1000000; + EFI_STATUS Status =3D EFI_SUCCESS; + + Mask =3D (Read) ? DWMCI_IDINTEN_RI : DWMCI_IDINTEN_TI; + + do { + Ctrl =3D MmioRead32 (DWEMMC_IDSTS); + if (Ctrl & Mask) { + break; + } + Timeout--; + gBS->Stall(1); + } while (Timeout); + + if (!Timeout) { + DEBUG ((DEBUG_INFO, "%a, DMA waiting timeout...\n", __func__)); + Status =3D EFI_DEVICE_ERROR; + } + MmioWrite32 (DWEMMC_IDSTS, DWMCI_IDINTEN_MASK); + Ctrl =3D MmioRead32(DWEMMC_CTRL); + Ctrl &=3D ~(DWEMMC_CTRL_DMA_EN); + Ctrl =3D MmioWrite32(DWEMMC_CTRL, Ctrl); + + gBS->Stall(100); + + return Status; +} + EFI_STATUS DwEmmcReadBlockData ( IN EFI_MMC_HOST_PROTOCOL *This, @@ -544,6 +586,8 @@ DwEmmcReadBlockData ( DEBUG ((DEBUG_ERROR, "Failed to read data, mDwEmmcCommand:%x, mDwEmmcA= rgument:%x, Status:%r\n", mDwEmmcCommand, mDwEmmcArgument, Status)); goto out; } + Status =3D DwEmmcWaitDmaComplete(This, 1); + out: // Restore Tpl gBS->RestoreTPL (Tpl); @@ -583,6 +627,8 @@ DwEmmcWriteBlockData ( DEBUG ((DEBUG_ERROR, "Failed to write data, mDwEmmcCommand:%x, mDwEmmc= Argument:%x, Status:%r\n", mDwEmmcCommand, mDwEmmcArgument, Status)); goto out; } + Status =3D DwEmmcWaitDmaComplete(This, 0); + out: // Restore Tpl gBS->RestoreTPL (Tpl); --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#109891): https://edk2.groups.io/g/devel/message/109891 Mute This Topic: https://groups.io/mt/102130686/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 15 04:50:21 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+109892+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109892+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1698045511; cv=none; d=zohomail.com; s=zohoarc; b=hX/LGhlsGLtpaoHMrNxpf0vgdxLDWpKnv2Pnt/Jnisyl3G9NVzk8p+YWPxHmzLmCwqvGZr72Q+FnUiVBHJCtiRt5mN2EDw/rSFjoN1emE91iVbkG6DjcEK1u9NqqZfSP3xWk7diAJmsi2HcmRlgV3F27brChkFTLfh8ZKzBEa6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1698045511; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=7Om4FF+KofRQbfQoxRcIZ0JKgJDjuxqMG/57TB4Iz7I=; b=O0isTRJgru60E4GxOULkHzcC3wqTl9SuZeI84DBZLQYPZLQBYErAG6LURyincdlR25Fm+HoTxL8xDhFoguWie52dLcIy5cF0hn9sZjcuka+KAdXwIwdUuyUR/pIq7BeojE27y7IOENufifeYYbeDf57XoEhD4Qq0zo9GF8p/fDA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109892+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1698045511330476.6069960157366; Mon, 23 Oct 2023 00:18:31 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=8xc2/VcCyeEBkJRFv2TbVnkrUPu4PH6V7je7w9Gztz0=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1698045511; v=1; b=N2U3/IMOnOV+icepTGXem/H5jnszrxJojs+0sLRy9YYmKFZSSPD2lPntcOUguOMo8NjTF4ki G3kAfDSoRZ7B6cR5YnjKfYKz48/K0qml4AJOBhUsmRDeUSxeLYWWMkcC/WmdPN3tqXK38XrQX63 Q7nYTrMXGCBHbFXX1yIRf+28= X-Received: by 127.0.0.2 with SMTP id hYwiYY1788612x9jXpW3lYz1; Mon, 23 Oct 2023 00:18:31 -0700 X-Received: from ex01.ufhost.com (ex01.ufhost.com [61.152.239.75]) by mx.groups.io with SMTP id smtpd.web10.115204.1698045509340542732 for ; Mon, 23 Oct 2023 00:18:30 -0700 X-Received: from EXMBX165.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX165", Issuer "EXMBX165" (not verified)) by ex01.ufhost.com (Postfix) with ESMTP id 5D08724E289; Mon, 23 Oct 2023 15:18:27 +0800 (CST) X-Received: from EXMBX073.cuchost.com (172.16.6.83) by EXMBX165.cuchost.com (172.16.6.75) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:27 +0800 X-Received: from localhost.localdomain (202.188.176.82) by EXMBX073.cuchost.com (172.16.6.83) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:23 +0800 From: "John Chew" To: CC: mindachen1987 , Sunil V L , Leif Lindholm , Michael D Kinney , "Cc : Li Yong" , mindachen1987 , "John Chew" Subject: [edk2-devel] [PATCH v2 2/5] DesignWare/DwEmmcDxe: Add CPU little endian option Date: Mon, 23 Oct 2023 15:17:12 +0800 Message-ID: <20231023071715.777-3-yuinyee.chew@starfivetech.com> In-Reply-To: <20231023071715.777-1-yuinyee.chew@starfivetech.com> References: <20231023071715.777-1-yuinyee.chew@starfivetech.com> MIME-Version: 1.0 X-Originating-IP: [202.188.176.82] X-ClientProxiedBy: EXCAS066.cuchost.com (172.16.6.26) To EXMBX073.cuchost.com (172.16.6.83) X-YovoleRuleAgent: yovoleflag Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuinyee.chew@starfivetech.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: fec7498jSipfej3sbCisfCNCx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1698045512491100007 Content-Type: text/plain; charset="utf-8" From: mindachen1987 Add PCD for little endian CPU. During RX, the endianess of data receive via DMA will be swap. Cc: Sunil V L Cc: Leif Lindholm Cc: Michael D Kinney Cc: Cc: Li Yong Co-authored-by: mindachen1987 Signed-off-by: John Chew --- Silicon/Synopsys/DesignWare/DesignWare.dec | 1 + Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c | 5 +++++ Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf | 1 + 3 files changed, 7 insertions(+) diff --git a/Silicon/Synopsys/DesignWare/DesignWare.dec b/Silicon/Synopsys/= DesignWare/DesignWare.dec index f7ec7927543c..751370a8b1af 100755 --- a/Silicon/Synopsys/DesignWare/DesignWare.dec +++ b/Silicon/Synopsys/DesignWare/DesignWare.dec @@ -31,3 +31,4 @@ [PcdsFixedAtBuild.common] gDesignWareTokenSpaceGuid.PcdDwEmmcDxeClockFrequencyInHz|0x0|UINT32|0x00= 000003 gDesignWareTokenSpaceGuid.PcdDwEmmcDxeMaxClockFreqInHz|0x0|UINT32|0x0000= 0004 gDesignWareTokenSpaceGuid.PcdDwEmmcDxeFifoDepth|0x0|UINT32|0x00000005 + gDesignWareTokenSpaceGuid.PcdDwEmmcDxeCPULittleEndian|FALSE|BOOLEAN|0x00= 000008 diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c b/Si= licon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c index 7ac286c5f361..edda28a45d7c 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c @@ -588,6 +588,11 @@ DwEmmcReadBlockData ( } Status =3D DwEmmcWaitDmaComplete(This, 1); =20 + if (DWMCI_SD_READ_MASK(mDwEmmcArgument) && (FixedPcdGetBool (PcdDwEmmcDx= eCPULittleEndian))) { + Buffer[3] =3D SwapBytes32(Buffer[3]); + Buffer[4] =3D SwapBytes32(Buffer[4]); + } + out: // Restore Tpl gBS->RestoreTPL (Tpl); diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf b/= Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf index 7f70fe1e2a38..18c84a4172f9 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf @@ -51,6 +51,7 @@ [Pcd] gDesignWareTokenSpaceGuid.PcdDwEmmcDxeMaxClockFreqInHz gDesignWareTokenSpaceGuid.PcdDwEmmcDxeFifoDepth gDesignWareTokenSpaceGuid.PcdDwPermitObsoleteDrivers + gDesignWareTokenSpaceGuid.PcdDwEmmcDxeCPULittleEndian =20 [Depex] TRUE --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#109892): https://edk2.groups.io/g/devel/message/109892 Mute This Topic: https://groups.io/mt/102130687/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 15 04:50:21 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+109893+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109893+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1698045514; cv=none; d=zohomail.com; s=zohoarc; b=J85/5w725nnPG8s08csPIpZk+TqQoqLW9zCkV9fNhfjyIxtY4mLKQP8uxZw0xk6o4HyiUeoqvKgYGpQWOS8lrqKdIcvMpM7NKD4LLWzRmf6A4bBxdGI727oNK4UPJaY0lbpjYTEyJRqjeNkyzMkmQGpZh9TFe/VEHpXd1h7+oVM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1698045514; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=4ZCx30QJzCFb8c4CrYDOBnEt6RrbGmfKmWYJsRC5vDg=; b=bhtbEjCLjfAOp03HcHwCYznNUpZEGzDpwdb0lJpF600SbOmPDUISDdRabC3zop9iXckYF1krzE7SQSdhd5oZ2QvWtpRgqt9S2oqHwFYYM1NIbBFcN+x9tyXub+Q6IjeqMrC5pdet5ElAadCuaqdalKy1P3QJnrbZmaFe2SSFBDk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109893+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1698045514627392.10844632103647; Mon, 23 Oct 2023 00:18:34 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=HwB1XgMNDbCJaOVA3fMD6Sy82ixemo8wl7vYC9K9QYY=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1698045514; v=1; b=pObekEiYDsIZNXznpKSbh/HlzNgCuChlhfF2EXrkmmY3HI962QKmbP2Ks76+Crig/InaOS1p EPPpApFoVel5J9CWgSPNJyHv8r414vJw83MIg2Ws1eQhGqlDxwSthvA4rovKlJ8yfXYx56F2IJg OiCusTtjo5V6tzKmLpm7TqS8= X-Received: by 127.0.0.2 with SMTP id SqopYY1788612xLAjisb1s5S; Mon, 23 Oct 2023 00:18:34 -0700 X-Received: from fd01.gateway.ufhost.com (fd01.gateway.ufhost.com [61.152.239.71]) by mx.groups.io with SMTP id smtpd.web11.115569.1698045513470627820 for ; Mon, 23 Oct 2023 00:18:33 -0700 X-Received: from EXMBX166.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX166", Issuer "EXMBX166" (not verified)) by fd01.gateway.ufhost.com (Postfix) with ESMTP id 299657F98; Mon, 23 Oct 2023 15:18:31 +0800 (CST) X-Received: from EXMBX073.cuchost.com (172.16.6.83) by EXMBX166.cuchost.com (172.16.6.76) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:31 +0800 X-Received: from localhost.localdomain (202.188.176.82) by EXMBX073.cuchost.com (172.16.6.83) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:27 +0800 From: "John Chew" To: CC: mindachen1987 , Sunil V L , Leif Lindholm , Michael D Kinney , "Cc : Li Yong" Subject: [edk2-devel] [PATCH v2 3/5] DesignWare/DwEmmcDxe: Remove ARM dependency library Date: Mon, 23 Oct 2023 15:17:13 +0800 Message-ID: <20231023071715.777-4-yuinyee.chew@starfivetech.com> In-Reply-To: <20231023071715.777-1-yuinyee.chew@starfivetech.com> References: <20231023071715.777-1-yuinyee.chew@starfivetech.com> MIME-Version: 1.0 X-Originating-IP: [202.188.176.82] X-ClientProxiedBy: EXCAS066.cuchost.com (172.16.6.26) To EXMBX073.cuchost.com (172.16.6.83) X-YovoleRuleAgent: yovoleflag Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuinyee.chew@starfivetech.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: aOsj35dlJyDDvqvgPdwCguvXx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1698045516289100003 Content-Type: text/plain; charset="utf-8" From: mindachen1987 This driver do not have dependency on ArmLib. It will cause compilation error when compile with risv architecture. Cc: Sunil V L Cc: Leif Lindholm Cc: Michael D Kinney Cc: Cc: Li Yong Signed-off-by: mindachen1987 --- Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf | 1 - 1 file changed, 1 deletion(-) diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf b/= Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf index 18c84a4172f9..0bd78d5a05ad 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf @@ -30,7 +30,6 @@ [Packages] Silicon/Synopsys/DesignWare/DesignWare.dec =20 [LibraryClasses] - ArmLib BaseLib BaseMemoryLib CacheMaintenanceLib --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#109893): https://edk2.groups.io/g/devel/message/109893 Mute This Topic: https://groups.io/mt/102130688/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 15 04:50:21 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+109894+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109894+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1698045520; cv=none; d=zohomail.com; s=zohoarc; b=l7MTeFSsLGZKyh0qgI5xoDB0KuCFo3lOB5rBys1DXFQswGiw+Gwsw21wB985CRm94insoYFAyDxcFvilccG+A3o6omDJivhmF89kRbkTqpRyepTHU5bwW9yj4KZCYS1WWr/KNCpodiIzAOrkz+RbeM29eLV2Si0g04z86HI0yb4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1698045520; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=UFjvq7Uvm6MLZu2+5dGyy3uUCfakAgZyQjRTNVG2iig=; b=YE12TjASu5WPJVuNToy1BkQ5rDBnJoWLTmIxzTv8IKoXlIYbuvBbpNSLHzADl+591NIhUg8/A5c3zfzSlIzMPeEXN9smC2Xm+yfE1PpxdkYWmq3YvjLR2jt0/++utUYEtjL5JnOGWz/aoVPWFFGVRUgrC233LcHqiajPFz4WFAs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109894+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1698045520028647.3070629280988; Mon, 23 Oct 2023 00:18:40 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=4kJpepjyAof8vZibTYDWNtN5GohxQc215amQUqkquvQ=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1698045519; v=1; b=Hp2S8XitM1zoDWSI7TKgu03A0Tga270pIHH9c1DBJDSfCjrT47SD0g/OsA6ZOhPhyAyy1YoW mTDOLA8l4bYoHkdqrgmEMjQAj3ueafgO6YElAD7tQmS4vZ5JveGxb5wNaSmUpBiRzbTvCZK0W6k Thr4sQI+cXz/+qEMokR2VZ2Y= X-Received: by 127.0.0.2 with SMTP id jiNQYY1788612x49XHynh5D5; Mon, 23 Oct 2023 00:18:39 -0700 X-Received: from ex01.ufhost.com (ex01.ufhost.com [61.152.239.75]) by mx.groups.io with SMTP id smtpd.web10.115206.1698045518331077790 for ; Mon, 23 Oct 2023 00:18:39 -0700 X-Received: from EXMBX165.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX165", Issuer "EXMBX165" (not verified)) by ex01.ufhost.com (Postfix) with ESMTP id 5480B24E36F; Mon, 23 Oct 2023 15:18:36 +0800 (CST) X-Received: from EXMBX073.cuchost.com (172.16.6.83) by EXMBX165.cuchost.com (172.16.6.75) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:35 +0800 X-Received: from localhost.localdomain (202.188.176.82) by EXMBX073.cuchost.com (172.16.6.83) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:31 +0800 From: "John Chew" To: CC: mindachen1987 , Sunil V L , Leif Lindholm , Michael D Kinney , "Cc : Li Yong" , John Chew Subject: [edk2-devel] [PATCH v2 4/5] DesignWare/DwEmmcDxe: Add handling for SDMMC Date: Mon, 23 Oct 2023 15:17:14 +0800 Message-ID: <20231023071715.777-5-yuinyee.chew@starfivetech.com> In-Reply-To: <20231023071715.777-1-yuinyee.chew@starfivetech.com> References: <20231023071715.777-1-yuinyee.chew@starfivetech.com> MIME-Version: 1.0 X-Originating-IP: [202.188.176.82] X-ClientProxiedBy: EXCAS066.cuchost.com (172.16.6.26) To EXMBX073.cuchost.com (172.16.6.83) X-YovoleRuleAgent: yovoleflag Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuinyee.chew@starfivetech.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: hC7OVOhy2lubOZ75Q2PFFFEdx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1698045520351100001 Content-Type: text/plain; charset="utf-8" From: mindachen1987 Add base address PCD for eMMC and SDMMC Add application command for SDMMC Add PCD for Ultra High Speed (UHS) option Cc: Sunil V L Cc: Leif Lindholm Cc: Michael D Kinney Cc: Cc: Li Yong Co-authored-by: John Chew Signed-off-by: mindachen1987 --- Silicon/Synopsys/DesignWare/DesignWare.dec = | 2 + Silicon/Synopsys/DesignWare/DesignWare.dsc = | 1 + Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h = | 64 +++---- Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c = | 183 +++++++++++++------- Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf = | 1 + Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/{DwEmmcDxe.inf =3D> DwSdmmcD= xe.inf} | 9 +- 6 files changed, 158 insertions(+), 102 deletions(-) diff --git a/Silicon/Synopsys/DesignWare/DesignWare.dec b/Silicon/Synopsys/= DesignWare/DesignWare.dec index 751370a8b1af..91aca7568b08 100755 --- a/Silicon/Synopsys/DesignWare/DesignWare.dec +++ b/Silicon/Synopsys/DesignWare/DesignWare.dec @@ -31,4 +31,6 @@ [PcdsFixedAtBuild.common] gDesignWareTokenSpaceGuid.PcdDwEmmcDxeClockFrequencyInHz|0x0|UINT32|0x00= 000003 gDesignWareTokenSpaceGuid.PcdDwEmmcDxeMaxClockFreqInHz|0x0|UINT32|0x0000= 0004 gDesignWareTokenSpaceGuid.PcdDwEmmcDxeFifoDepth|0x0|UINT32|0x00000005 + gDesignWareTokenSpaceGuid.PcdDwSdDxeBaseAddress|0x0|UINT32|0x00000006 + gDesignWareTokenSpaceGuid.PcdDwEmmcDxeUHSEn|TRUE|BOOLEAN|0x00000007 gDesignWareTokenSpaceGuid.PcdDwEmmcDxeCPULittleEndian|FALSE|BOOLEAN|0x00= 000008 diff --git a/Silicon/Synopsys/DesignWare/DesignWare.dsc b/Silicon/Synopsys/= DesignWare/DesignWare.dsc index b5a7b38e142e..7ebec358851e 100755 --- a/Silicon/Synopsys/DesignWare/DesignWare.dsc +++ b/Silicon/Synopsys/DesignWare/DesignWare.dsc @@ -43,3 +43,4 @@ [LibraryClasses] [Components] Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/DwEmacSnpDxe.inf Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf + Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwSdmmcDxe.inf diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h b/Silic= on/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h index 3347418006c7..5d2e6d4055a4 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmc.h @@ -18,38 +18,38 @@ #include =20 // DW MMC Registers -#define DWEMMC_CTRL ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x000) -#define DWEMMC_PWREN ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x004) -#define DWEMMC_CLKDIV ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x008) -#define DWEMMC_CLKSRC ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x00c) -#define DWEMMC_CLKENA ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x010) -#define DWEMMC_TMOUT ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x014) -#define DWEMMC_CTYPE ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x018) -#define DWEMMC_BLKSIZ ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x01c) -#define DWEMMC_BYTCNT ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x020) -#define DWEMMC_INTMASK ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x024) -#define DWEMMC_CMDARG ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x028) -#define DWEMMC_CMD ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x02c) -#define DWEMMC_RESP0 ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x030) -#define DWEMMC_RESP1 ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x034) -#define DWEMMC_RESP2 ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x038) -#define DWEMMC_RESP3 ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x03c) -#define DWEMMC_RINTSTS ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x044) -#define DWEMMC_STATUS ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x048) -#define DWEMMC_FIFOTH ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x04c) -#define DWEMMC_TCBCNT ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x05c) -#define DWEMMC_TBBCNT ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x060) -#define DWEMMC_DEBNCE ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x064) -#define DWEMMC_HCON ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x070) -#define DWEMMC_UHSREG ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x074) -#define DWEMMC_BMOD ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x080) -#define DWEMMC_DBADDR ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x088) -#define DWEMMC_IDSTS ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x08c) -#define DWEMMC_IDINTEN ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x090) -#define DWEMMC_DSCADDR ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x094) -#define DWEMMC_BUFADDR ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0x098) -#define DWEMMC_CARDTHRCTL ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0X100) -#define DWEMMC_DATA ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress= ) + 0X200) +#define DWEMMC_CTRL ((PcdDwDxeBaseAddress) + 0x000) +#define DWEMMC_PWREN ((PcdDwDxeBaseAddress) + 0x004) +#define DWEMMC_CLKDIV ((PcdDwDxeBaseAddress) + 0x008) +#define DWEMMC_CLKSRC ((PcdDwDxeBaseAddress) + 0x00c) +#define DWEMMC_CLKENA ((PcdDwDxeBaseAddress) + 0x010) +#define DWEMMC_TMOUT ((PcdDwDxeBaseAddress) + 0x014) +#define DWEMMC_CTYPE ((PcdDwDxeBaseAddress) + 0x018) +#define DWEMMC_BLKSIZ ((PcdDwDxeBaseAddress) + 0x01c) +#define DWEMMC_BYTCNT ((PcdDwDxeBaseAddress) + 0x020) +#define DWEMMC_INTMASK ((PcdDwDxeBaseAddress) + 0x024) +#define DWEMMC_CMDARG ((PcdDwDxeBaseAddress) + 0x028) +#define DWEMMC_CMD ((PcdDwDxeBaseAddress) + 0x02c) +#define DWEMMC_RESP0 ((PcdDwDxeBaseAddress) + 0x030) +#define DWEMMC_RESP1 ((PcdDwDxeBaseAddress) + 0x034) +#define DWEMMC_RESP2 ((PcdDwDxeBaseAddress) + 0x038) +#define DWEMMC_RESP3 ((PcdDwDxeBaseAddress) + 0x03c) +#define DWEMMC_RINTSTS ((PcdDwDxeBaseAddress) + 0x044) +#define DWEMMC_STATUS ((PcdDwDxeBaseAddress) + 0x048) +#define DWEMMC_FIFOTH ((PcdDwDxeBaseAddress) + 0x04c) +#define DWEMMC_TCBCNT ((PcdDwDxeBaseAddress) + 0x05c) +#define DWEMMC_TBBCNT ((PcdDwDxeBaseAddress) + 0x060) +#define DWEMMC_DEBNCE ((PcdDwDxeBaseAddress) + 0x064) +#define DWEMMC_HCON ((PcdDwDxeBaseAddress) + 0x070) +#define DWEMMC_UHSREG ((PcdDwDxeBaseAddress) + 0x074) +#define DWEMMC_BMOD ((PcdDwDxeBaseAddress) + 0x080) +#define DWEMMC_DBADDR ((PcdDwDxeBaseAddress) + 0x088) +#define DWEMMC_IDSTS ((PcdDwDxeBaseAddress) + 0x08c) +#define DWEMMC_IDINTEN ((PcdDwDxeBaseAddress) + 0x090) +#define DWEMMC_DSCADDR ((PcdDwDxeBaseAddress) + 0x094) +#define DWEMMC_BUFADDR ((PcdDwDxeBaseAddress) + 0x098) +#define DWEMMC_CARDTHRCTL ((PcdDwDxeBaseAddress) + 0X100) +#define DWEMMC_DATA ((PcdDwDxeBaseAddress) + 0X200) =20 #define CMD_UPDATE_CLK 0x80202000 #define CMD_START_BIT (1 << 31) diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c b/Si= licon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c index edda28a45d7c..39e4d994fcd4 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c @@ -25,12 +25,18 @@ =20 #include =20 +#ifdef CONFIG_DWEMMC +#define PcdDwDxeBaseAddress ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress)) +#elif CONFIG_DWSDMMC +#define PcdDwDxeBaseAddress ((UINT32)PcdGet32 (PcdDwSdDxeBaseAddress)) +#endif #include "DwEmmc.h" =20 -#define DWEMMC_DESC_PAGE 1 -#define DWEMMC_BLOCK_SIZE 512 -#define DWEMMC_DMA_BUF_SIZE (512 * 8) -#define DWEMMC_MAX_DESC_PAGES 512 +#define DWEMMC_DESC_PAGE 1 +#define DWEMMC_BLOCK_SIZE 512 +#define DWEMMC_DMA_BUF_SIZE (512 * 8) +#define DWEMMC_MAX_DESC_PAGES 512 +#define DWMCI_SD_READ_MASK(X) ((0xFFFFF0&X) =3D=3D 0xFFFFF0) =20 typedef struct { UINT32 Des0; @@ -44,6 +50,7 @@ DWEMMC_IDMAC_DESCRIPTOR *gpIdmacDesc; EFI_GUID mDwEmmcDevicePathGuid =3D EFI_CALLER_ID_GUID; STATIC UINT32 mDwEmmcCommand; STATIC UINT32 mDwEmmcArgument; +STATIC UINT32 LastExecutedCommand =3D (UINT32) -1; =20 EFI_STATUS DwEmmcReadBlockData ( @@ -204,6 +211,7 @@ DwEmmcNotifyState ( ASSERT (!EFI_ERROR (Status)); // Wait clock stable MicroSecondDelay (100); + MmioWrite32 (DWEMMC_CTYPE, 0); =20 MmioWrite32 (DWEMMC_RINTSTS, ~0); MmioWrite32 (DWEMMC_INTMASK, 0); @@ -314,68 +322,106 @@ DwEmmcSendCommand ( UINT32 Cmd =3D 0; EFI_STATUS Status =3D EFI_SUCCESS; =20 - switch (MMC_GET_INDX(MmcCmd)) { - case MMC_INDX(0): - Cmd =3D BIT_CMD_SEND_INIT; - break; - case MMC_INDX(1): - Cmd =3D BIT_CMD_RESPONSE_EXPECT; - break; - case MMC_INDX(2): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_LONG_RESPONSE | - BIT_CMD_CHECK_RESPONSE_CRC | BIT_CMD_SEND_INIT; - break; - case MMC_INDX(3): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_SEND_INIT; - break; - case MMC_INDX(7): - if (Argument) + if (LastExecutedCommand =3D=3D MMC_INDX(55)) { + switch (MMC_GET_INDX(MmcCmd)) { + case MMC_INDX(1): + Cmd =3D BIT_CMD_RESPONSE_EXPECT; + break; + // Application command + case MMC_INDX(6): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC; + break; + case MMC_INDX(41): + Cmd =3D BIT_CMD_RESPONSE_EXPECT; + break; + case MMC_INDX(51): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_DATA_EXPECTED | BIT_CMD_READ | + BIT_CMD_WAIT_PRVDATA_COMPLETE; + break; + default: + DEBUG ((DEBUG_ERROR, "%a: Unrecognized App command: %d\n", __func__,= MMC_GET_INDX(MmcCmd))); + break; + } + } else { + switch (MMC_GET_INDX(MmcCmd)) { + case MMC_INDX(0): + Cmd =3D BIT_CMD_SEND_INIT; + break; + case MMC_INDX(1): + Cmd =3D BIT_CMD_RESPONSE_EXPECT; + break; + case MMC_INDX(2): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_LONG_RESPONSE | + BIT_CMD_CHECK_RESPONSE_CRC | BIT_CMD_SEND_INIT; + break; + case MMC_INDX(3): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_SEND_INIT; + break; + case MMC_INDX(7): + if (Argument) { + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC; + } else { + Cmd =3D 0; + } + break; + case MMC_INDX(8): + if (Argument) { + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_WAIT_PRVDATA_COMPLETE; + } else { + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_DATA_EXPECTED | BIT_CMD_READ | + BIT_CMD_WAIT_PRVDATA_COMPLETE; + } + break; + case MMC_INDX(9): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_LONG_RESPONSE; + break; + case MMC_INDX(12): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_STOP_ABORT_CMD; + break; + case MMC_INDX(13): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_WAIT_PRVDATA_COMPLETE; + break; + case MMC_INDX(16): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + /* BIT_CMD_DATA_EXPECTED | BIT_CMD_READ | */ + BIT_CMD_WAIT_PRVDATA_COMPLETE; + break; + case MMC_INDX(6): + if DWMCI_SD_READ_MASK(Argument) { + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_DATA_EXPECTED | BIT_CMD_READ | + BIT_CMD_WAIT_PRVDATA_COMPLETE; + } else { Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC; - else - Cmd =3D 0; - break; - case MMC_INDX(8): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_DATA_EXPECTED | BIT_CMD_READ | - BIT_CMD_WAIT_PRVDATA_COMPLETE; - break; - case MMC_INDX(9): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_LONG_RESPONSE; - break; - case MMC_INDX(12): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_STOP_ABORT_CMD; - break; - case MMC_INDX(13): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_WAIT_PRVDATA_COMPLETE; - break; - case MMC_INDX(16): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_DATA_EXPECTED | BIT_CMD_READ | - BIT_CMD_WAIT_PRVDATA_COMPLETE; - break; - case MMC_INDX(17): - case MMC_INDX(18): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_DATA_EXPECTED | BIT_CMD_READ | - BIT_CMD_WAIT_PRVDATA_COMPLETE; - break; - case MMC_INDX(24): - case MMC_INDX(25): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_DATA_EXPECTED | BIT_CMD_WRITE | - BIT_CMD_WAIT_PRVDATA_COMPLETE; - break; - case MMC_INDX(30): - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | - BIT_CMD_DATA_EXPECTED; - break; - default: - Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC; - break; + } + break; + case MMC_INDX(17): + case MMC_INDX(18): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_DATA_EXPECTED | BIT_CMD_READ | + BIT_CMD_WAIT_PRVDATA_COMPLETE; + break; + case MMC_INDX(24): + case MMC_INDX(25): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_DATA_EXPECTED | BIT_CMD_WRITE | + BIT_CMD_WAIT_PRVDATA_COMPLETE; + break; + case MMC_INDX(30): + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC | + BIT_CMD_DATA_EXPECTED; + break; + default: + Cmd =3D BIT_CMD_RESPONSE_EXPECT | BIT_CMD_CHECK_RESPONSE_CRC; + break; + } } =20 Cmd |=3D MMC_GET_INDX(MmcCmd) | BIT_CMD_USE_HOLD_REG | BIT_CMD_START; @@ -385,6 +431,9 @@ DwEmmcSendCommand ( } else { Status =3D SendCommand (Cmd, Argument); } + + LastExecutedCommand =3D MMC_GET_INDX(MmcCmd); + return Status; } =20 @@ -475,7 +524,6 @@ PrepareDmaData ( =20 Cnt =3D (Length + DWEMMC_DMA_BUF_SIZE - 1) / DWEMMC_DMA_BUF_SIZE; Blks =3D (Length + DWEMMC_BLOCK_SIZE - 1) / DWEMMC_BLOCK_SIZE; - Length =3D DWEMMC_BLOCK_SIZE * Blks; =20 for (Idx =3D 0; Idx < Cnt; Idx++) { (IdmacDesc + Idx)->Des0 =3D DWEMMC_IDMAC_DES0_OWN | DWEMMC_IDMAC_DES0_= CH | @@ -660,6 +708,9 @@ DwEmmcSetIos ( switch (TimingMode) { case EMMCHS52DDR1V2: case EMMCHS52DDR1V8: + if (!FixedPcdGetBool (PcdDwEmmcDxeUHSEn)) { + return EFI_UNSUPPORTED; + } Data |=3D 1 << 16; break; case EMMCHS52: diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf b/= Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf index 0bd78d5a05ad..4e8dd7bcd7dc 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf @@ -51,6 +51,7 @@ [Pcd] gDesignWareTokenSpaceGuid.PcdDwEmmcDxeFifoDepth gDesignWareTokenSpaceGuid.PcdDwPermitObsoleteDrivers gDesignWareTokenSpaceGuid.PcdDwEmmcDxeCPULittleEndian + gDesignWareTokenSpaceGuid.PcdDwEmmcDxeUHSEn =20 [Depex] TRUE diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf b/= Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwSdmmcDxe.inf similarity index 77% copy from Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf copy to Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwSdmmcDxe.inf index 0bd78d5a05ad..efbf3bff56bd 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.inf +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwSdmmcDxe.inf @@ -1,5 +1,5 @@ #/** @file -# INF file for the eMMC Host Protocol implementation for the DesignWare M= MC. +# INF file for the SdMMC Host Protocol implementation for the DesignWare = MMC. # # WARNING: # This driver fails to follow the UEFI driver model without a good @@ -14,8 +14,8 @@ =20 [Defines] INF_VERSION =3D 0x00010019 - BASE_NAME =3D DwEmmcDxe - FILE_GUID =3D b549f005-4bd4-4020-a0cb-06f42bda68c3 + BASE_NAME =3D DwSdmmcDxe + FILE_GUID =3D b549f005-4bd4-4020-a0cb-06f5478a68c3 MODULE_TYPE =3D DXE_DRIVER VERSION_STRING =3D 1.0 =20 @@ -45,11 +45,12 @@ [Protocols] gEmbeddedMmcHostProtocolGuid =20 [Pcd] - gDesignWareTokenSpaceGuid.PcdDwEmmcDxeBaseAddress + gDesignWareTokenSpaceGuid.PcdDwSdDxeBaseAddress gDesignWareTokenSpaceGuid.PcdDwEmmcDxeClockFrequencyInHz gDesignWareTokenSpaceGuid.PcdDwEmmcDxeMaxClockFreqInHz gDesignWareTokenSpaceGuid.PcdDwEmmcDxeFifoDepth gDesignWareTokenSpaceGuid.PcdDwPermitObsoleteDrivers + gDesignWareTokenSpaceGuid.PcdDwEmmcDxeUHSEn gDesignWareTokenSpaceGuid.PcdDwEmmcDxeCPULittleEndian =20 [Depex] --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#109894): https://edk2.groups.io/g/devel/message/109894 Mute This Topic: https://groups.io/mt/102130689/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed May 15 04:50:21 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+109895+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109895+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1698045545; cv=none; d=zohomail.com; s=zohoarc; b=T0vUTZ3fvGb8T594+5IRKx21Ui6DZ2/9lXdGPlps3baSxdbol39js1dLKn3ZstvTEKOQBnYG2rdapPiCq11YG52o8k6GCNZ3oiCNVBt1Z4NAnwHCz6npMMwWMw8xPcFbCYkAPy6e5BJtihiuvQFtKqkiL19bnOU+2WUQpydeyXk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1698045545; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=jMnzSTtGgTbdI+glfsZ91DJpyzjySJxANwcCeAVaxoI=; b=FVTnSuTaDG31S0rnNW3nvjSoaSYmvKSLmDMW4/GMhuu0yV5P7p3EvS/WpyE76kUrM9I0QLXYH5S+XVt7SKKFk+X6yk3LGySSBMTt9I0e89CEoXM0h9yVgfcmhMZaKiv3lC8wkMy3tzfXU9MlamvynQpY+qGyTXnPjwVazN4MpwM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+109895+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1698045545382516.6895223541027; Mon, 23 Oct 2023 00:19:05 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=6JFB1GgJ2U4mCuX8yBJ2K7ym2X/D4jEJ1sddwthpvlw=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1698045545; v=1; b=oAOtMBUDYI1QcMqQfNrY/unxC93WcPR8tkahlkjYmuPXKrg2y4DF7jrrbd7MmdSyMjRCZMel UH0p2zrU1d0dU46kXqMlcV3DriBNyTmult6NlK+sIcIYzylt0wBiEBg6ZDrDr0I9L8pyhY4pAS1 IXm6lw7fBdmJvL9N40NfWtjE= X-Received: by 127.0.0.2 with SMTP id gAohYY1788612xwltmHKu3PO; Mon, 23 Oct 2023 00:19:05 -0700 X-Received: from ex01.ufhost.com (ex01.ufhost.com [61.152.239.75]) by mx.groups.io with SMTP id smtpd.web10.115217.1698045542613260142 for ; Mon, 23 Oct 2023 00:19:04 -0700 X-Received: from EXMBX166.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX166", Issuer "EXMBX166" (not verified)) by ex01.ufhost.com (Postfix) with ESMTP id 540DA24E20F; Mon, 23 Oct 2023 15:18:39 +0800 (CST) X-Received: from EXMBX073.cuchost.com (172.16.6.83) by EXMBX166.cuchost.com (172.16.6.76) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:39 +0800 X-Received: from localhost.localdomain (202.188.176.82) by EXMBX073.cuchost.com (172.16.6.83) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 23 Oct 2023 15:18:36 +0800 From: "John Chew" To: CC: John Chew , Sunil V L , Leif Lindholm , Michael D Kinney , "Cc : Li Yong" Subject: [edk2-devel] [PATCH v2 5/5] DesignWare/DwEmmcDxe: Force DMA buffer to allocate below 4GB Date: Mon, 23 Oct 2023 15:17:15 +0800 Message-ID: <20231023071715.777-6-yuinyee.chew@starfivetech.com> In-Reply-To: <20231023071715.777-1-yuinyee.chew@starfivetech.com> References: <20231023071715.777-1-yuinyee.chew@starfivetech.com> MIME-Version: 1.0 X-Originating-IP: [202.188.176.82] X-ClientProxiedBy: EXCAS066.cuchost.com (172.16.6.26) To EXMBX073.cuchost.com (172.16.6.83) X-YovoleRuleAgent: yovoleflag Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuinyee.chew@starfivetech.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 6rYjsz5tcXafN91x6waLTa3Dx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1698045546434100003 Content-Type: text/plain; charset="utf-8" The buffer address passed into the read/write block function sometimes larger than 4GB. This driver only support 32-bit DMA addressing. MMC timeout will occur if DMA buffer is allocated in 64-bit address. Cc: Sunil V L Cc: Leif Lindholm Cc: Michael D Kinney Cc: Cc: Li Yong Signed-off-by: John Chew --- Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c | 79 +++++++++++= +++++---- 1 file changed, 64 insertions(+), 15 deletions(-) diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c b/Si= licon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c index 39e4d994fcd4..8233639b0ce8 100644 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe/DwEmmcDxe.c @@ -601,27 +601,57 @@ DwEmmcWaitDmaComplete ( return Status; } =20 +STATIC +UINT32 * +AllocateMemoryBelow4G ( + IN UINTN Size + ) +{ + UINTN Pages; + EFI_PHYSICAL_ADDRESS Address; + EFI_STATUS Status; + UINT32 *Buffer; + + Pages =3D EFI_SIZE_TO_PAGES (Size); + Address =3D 0xFFFFFFFF; + + Status =3D gBS->AllocatePages ( + AllocateMaxAddress, + EfiBootServicesData, + Pages, + &Address + ); + ASSERT_EFI_ERROR (Status); + + Buffer =3D (UINT32 *)(UINTN)Address; + ZeroMem (Buffer, Size); + + return Buffer; +} + EFI_STATUS DwEmmcReadBlockData ( - IN EFI_MMC_HOST_PROTOCOL *This, - IN EFI_LBA Lba, - IN UINTN Length, - IN UINT32* Buffer + IN EFI_MMC_HOST_PROTOCOL *This, + IN EFI_LBA Lba, + IN UINTN Length, + IN UINT32* Buffer ) { EFI_STATUS Status; UINT32 DescPages, CountPerPage, Count; EFI_TPL Tpl; + UINT32 *DmaBuf; =20 Tpl =3D gBS->RaiseTPL (TPL_NOTIFY); + DmaBuf =3D AllocateMemoryBelow4G(Length); =20 CountPerPage =3D EFI_PAGE_SIZE / 16; Count =3D (Length + DWEMMC_DMA_BUF_SIZE - 1) / DWEMMC_DMA_BUF_SIZE; DescPages =3D (Count + CountPerPage - 1) / CountPerPage; =20 - InvalidateDataCacheRange (Buffer, Length); + InvalidateDataCacheRange (DmaBuf, Length); =20 - Status =3D PrepareDmaData (gpIdmacDesc, Length, Buffer); + Status =3D PrepareDmaData (gpIdmacDesc, Length, DmaBuf); if (EFI_ERROR (Status)) { goto out; } @@ -637,11 +667,14 @@ DwEmmcReadBlockData ( Status =3D DwEmmcWaitDmaComplete(This, 1); =20 if (DWMCI_SD_READ_MASK(mDwEmmcArgument) && (FixedPcdGetBool (PcdDwEmmcDx= eCPULittleEndian))) { - Buffer[3] =3D SwapBytes32(Buffer[3]); - Buffer[4] =3D SwapBytes32(Buffer[4]); + DmaBuf[3] =3D SwapBytes32(DmaBuf[3]); + DmaBuf[4] =3D SwapBytes32(DmaBuf[4]); } =20 + CopyMem(Buffer, DmaBuf, Length); + out: + FreePages (DmaBuf, EFI_SIZE_TO_PAGES(Length)); // Restore Tpl gBS->RestoreTPL (Tpl); return Status; @@ -649,25 +682,29 @@ out: =20 EFI_STATUS DwEmmcWriteBlockData ( - IN EFI_MMC_HOST_PROTOCOL *This, - IN EFI_LBA Lba, - IN UINTN Length, - IN UINT32* Buffer + IN EFI_MMC_HOST_PROTOCOL *This, + IN EFI_LBA Lba, + IN UINTN Length, + IN UINT32* Buffer ) { EFI_STATUS Status; UINT32 DescPages, CountPerPage, Count; EFI_TPL Tpl; + UINT32 *DmaBuf; =20 Tpl =3D gBS->RaiseTPL (TPL_NOTIFY); =20 + DmaBuf =3D AllocateMemoryBelow4G(Length); + CopyMem(DmaBuf, Buffer, Length); + CountPerPage =3D EFI_PAGE_SIZE / 16; Count =3D (Length + DWEMMC_DMA_BUF_SIZE - 1) / DWEMMC_DMA_BUF_SIZE; DescPages =3D (Count + CountPerPage - 1) / CountPerPage; =20 - WriteBackDataCacheRange (Buffer, Length); + WriteBackDataCacheRange (DmaBuf, Length); =20 - Status =3D PrepareDmaData (gpIdmacDesc, Length, Buffer); + Status =3D PrepareDmaData (gpIdmacDesc, Length, DmaBuf); if (EFI_ERROR (Status)) { goto out; } @@ -683,6 +720,7 @@ DwEmmcWriteBlockData ( Status =3D DwEmmcWaitDmaComplete(This, 0); =20 out: + FreePages (DmaBuf, EFI_SIZE_TO_PAGES(Length)); // Restore Tpl gBS->RestoreTPL (Tpl); return Status; @@ -772,6 +810,7 @@ DwEmmcDxeInitialize ( { EFI_STATUS Status; EFI_HANDLE Handle; + EFI_PHYSICAL_ADDRESS Address; =20 if (!FixedPcdGetBool (PcdDwPermitObsoleteDrivers)) { ASSERT (FALSE); @@ -781,7 +820,17 @@ DwEmmcDxeInitialize ( Handle =3D NULL; =20 DwEmmcAdjustFifoThreshold (); - gpIdmacDesc =3D (DWEMMC_IDMAC_DESCRIPTOR *)AllocatePages (DWEMMC_MAX_DES= C_PAGES); + + Address =3D 0xffffffff; + Status =3D gBS->AllocatePages ( + AllocateMaxAddress, + EfiBootServicesData, + DWEMMC_MAX_DESC_PAGES, + &Address + ); + gpIdmacDesc =3D (DWEMMC_IDMAC_DESCRIPTOR *)(UINTN)Address; + ZeroMem (gpIdmacDesc, DWEMMC_MAX_DESC_PAGES); + if (gpIdmacDesc =3D=3D NULL) { return EFI_BUFFER_TOO_SMALL; } --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#109895): https://edk2.groups.io/g/devel/message/109895 Mute This Topic: https://groups.io/mt/102130696/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-