From patchwork Tue Aug 2 09:20:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yangbo Lu X-Patchwork-Id: 654625 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3s3WYz3Fcsz9t3F for ; Tue, 2 Aug 2016 19:46:47 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4DF83A74F1; Tue, 2 Aug 2016 11:46:45 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YTwn8oMK9lgY; Tue, 2 Aug 2016 11:46:44 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4BD31A7514; Tue, 2 Aug 2016 11:46:44 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BD8C6A7514 for ; Tue, 2 Aug 2016 11:46:40 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vH1d6WNjXPdi for ; Tue, 2 Aug 2016 11:46:40 +0200 (CEST) X-Greylist: delayed 855 seconds by postgrey-1.34 at theia; Tue, 02 Aug 2016 11:46:36 CEST X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0088.outbound.protection.outlook.com [104.47.38.88]) by theia.denx.de (Postfix) with ESMTPS id 19A12A74F1 for ; Tue, 2 Aug 2016 11:46:36 +0200 (CEST) Received: from DM2PR03CA0051.namprd03.prod.outlook.com (10.141.96.50) by BY2PR0301MB0694.namprd03.prod.outlook.com (10.160.63.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15; Tue, 2 Aug 2016 09:32:17 +0000 Received: from BL2FFO11OLC001.protection.gbl (2a01:111:f400:7c09::197) by DM2PR03CA0051.outlook.office365.com (2a01:111:e400:2428::50) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15 via Frontend Transport; Tue, 2 Aug 2016 09:32:17 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11OLC001.mail.protection.outlook.com (10.173.161.185) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.549.5 via Frontend Transport; Tue, 2 Aug 2016 09:32:16 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id u729W6JH026761; Tue, 2 Aug 2016 02:32:13 -0700 From: Yangbo Lu To: Date: Tue, 2 Aug 2016 17:20:52 +0800 Message-ID: <1470129653-15854-4-git-send-email-yangbo.lu@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1470129653-15854-1-git-send-email-yangbo.lu@nxp.com> References: <1470129653-15854-1-git-send-email-yangbo.lu@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131146039378368849; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(50944005)(47776003)(97736004)(68736007)(8666005)(356003)(4326007)(36756003)(7846002)(305945005)(8676002)(2906002)(8936002)(92566002)(81156014)(81166006)(50226002)(5003940100001)(104016004)(19580395003)(87936001)(77096005)(86362001)(69596002)(19580405001)(48376002)(50466002)(110136002)(189998001)(85426001)(586003)(106466001)(2351001)(50986999)(76176999)(33646002)(229853001)(105606002)(11100500001)(2950100001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0694; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC001; 1:+eOkf3G3EpgJwpYxXk9SO2tBjnymhLBvKzqYe+aiCYOL93qb4/2MlCrtHicNgDek7vR5QJMIOTTSh925LGLpEI8hPmH3Y3qR0+Yx0hQAqczY8rmaCPiCd9ozKrx9cPToR4hazM33taXpHQe2ZADjhj89CoqRXBIv4XHrqHj+eMYX5xNhJ33OZKo5YrcE8RtyIXfBFDjBai7WILz5XkljEHFrMe38zC1hNqBbJnxW4yswLXsUMpiNyTrVjj9qkKbj++HSXDi3Km9rj/t6hoL+ePubzUE52g2QoMY7fLJfWB2Y9PFRGifeflVOD62spZa5Udqqg6j71/M5tsA9leZvsAdzQFKCVJz9NzFs1kJ7sj/4RA6cgtRtxoUDy9OPAg4EZV4FnOmXg0MgWcRc4LSNU+M8SmD33BjFbrH7wGXQc4ZGMGqWem7CZt/cxRHsPCmGencNls1q01iPsepbGM7oY72v+46iIVaNidcAvfvJ27Nd570M9egKpRH7VDtcfe6osgRg7wgHG1HpQy2XEzv4STfnqTysdIkauHjgvvNrnayjggEznW8NExAwjuz+A2Nil5MmdWEXMnCTRmZ8PTTL+RhGUj1I5GV2DmD/ZH6RLYFY8tHOPBMDEh2VbDa8B+lBsGuNqOhV6lEqC8NurBQ2xCRSM/RIyJyKA3goK6Yqbi4nVcXVs2i9Xh3x84YhRVHFZ5W27R990BSyYAJBYx77/pCVUZmP5AUTeTdp5xWH+vY= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 533b924f-d36b-4dfa-d951-08d3bab7e54f X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0694; 2:+7Fo4P3YlbM3mRgha93G0/0g3p1fROUXiRjTmZ7ZlTiFvBJKUL88V665xOkMBAqhqtkOy8WqmUqqVFCkA7nPJ83j/5W0+++vi6CvAgsI7Y/wlcTd7Kr11HYzz/5VHWR/U4+9DMmvfc+mgYXOHhMZWeJgrtgbH/NggYTyignYb+VEOXBucZ/y8pIeogGOFIGK; 3:XTn/LQacdOtOoZ+smk/vWfJIKwUPUDjWEcnJRgZe5rtftZPTu56VKvdP7vtkXBfx1bkW9HocHYxIEbGY+kNNw9IeVuhluM1KFKPIeUa0qJ69u8mXJmLcO92OlF45ZtkFPXdwRkO0aq38jeHMx1LGeW3nztFo9bZqu/8PUOlq0GRaz6KmHPH6WwlBJ9orsa5lZSVUWab5bSaGwguTd0oXmQ6kPyD4Z/v2hGnjmsY52Ak=; 25:FDaZsFniYy50NUtBjh1S1TCnn8D3UNIet9U6iVc//ZVUnqRp9mgY6eG5NJ4FIWP3DbZXVSijb0BZ+UbJ3tHBdmzdz/cgSuzFQRlOgSIeDwzDJF+qHxZbkj+w3ZBYFvfOiYDNfH8+W6mLKjw//G5dXdXbtysj99uSmiRTOLB2H5AQhJNXU4DS/R79r9qsbbBWBwRBfYmS0N3sUKDGpwTJyNfAJ97IqbV+yeyMPmtju/Jbf+aQRR9SJVQrV4wG9kFCps+T2mun3fwmDPoe3XeIvYuGGKgHxO7JuJX0rqARV7BuX4hdojOUUL0urIZ+hSELuGWGnRVd8y2s5V8aiKtESNOuz0kAeFAq1Lw9fwSpEm472LlGIS0xsi45ZO8FoyrU6j0uzxCPPw3juyVHG2aOX/dJAeCuoLoBa0VG43Yycxo= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB0694; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0694; 31:zqFibpoHkGik2C3ScbG2xtNaiuEMBpKAfaUMWr7/nHSHm6/OuXxIBVDPY4e7zGkJvbXF1WBce42pb6hVXh8DQ2fmCOkirn7xSTjNQ7oWaElUPs3p5VT48VqQTy2qDNmJCUQv3+zW1GaLam4qg3egl0VTUNpxParPOzcSO6tlXtsXx2HJKbMAviVzGjCgr6tv18rQIQf+/KsgydxgHH0CwZoqpmSC26bTVJGZ6W/v4Y0=; 4:Y07vQ7ITvjg/yS9RtCIDM6SboNBfEMN0Q2qS2PtninOvcgkpWX+CkJYmwNZMKepaQAItoO/Kv8/miVnu7WyH31DQd6NmXPYe74QR23okEN0/QHmePkd5E3hckSZ2C1OZr2To2fDhNr+QEdHc0G8k8Navdz2WJ72p2npI+b2KSjwVN5bqFpbldo2d7OaA47OXdHuA7i9x32Z1ZJzVvNlC2pLifLHvt4mdUQlJEQtKxJFu660aBk2n+lukJAX03T4jHkrpRR08kdblwZGZdGCV1qphuu2BgkFcMwWiHi+yWNxpyOMaFqLZlNpYRyFUhRUwvEthGpvgDQ7TKKxyFsV/PJHT/HrRZyFYbdkQN9x/7AuRpZmv75/Y320OBK+r7arbnFE0EYhHqI6kUmv7eebmpTdXBppmMY0VS4Pvs5V9NHLBh3V4+VeeISD7vXJxCcjzVj3nIyIA4QFiWf0rIbWy+rk6UY1i2HkRRtEyHtUIaIMAUT4rV7ccNyP9u+1nnWB19anmUpoQIJdgDOhlX7byGQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(13017025)(13023025)(13018025)(13015025)(13024025)(3002001)(10201501046)(6055026); SRVR:BY2PR0301MB0694; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR0301MB0694; X-Forefront-PRVS: 0022134A87 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0694; 23:cdPVmLBY57MH5rVXL054/jTbi/JDc5/KKw+VtQX?= =?us-ascii?Q?azHHG7vSh6Gggi2P7NGPYA7IPW3x98aMmaNg94jG1oGM9C/PJdjymIbi8lSN?= =?us-ascii?Q?hWnpzjDwJtyb0Oxy6CD1clSrXOVMSCGmW0mN0CAYXC5zrWY93MzgvzyvAdCc?= =?us-ascii?Q?W2Fwg1O58uIqoVBoKQiCd2jHMbamYLoWZAUlR0cGNcF58whnSQ5k2ctzs9O7?= =?us-ascii?Q?bpuZlJwlbTrFExsBsZOtkiQetnotjnd0FZBZK2XcJKbPCJP/vN69hTTL8bh2?= =?us-ascii?Q?Uv8J1UEZ48C2mN3Lpd0eLYz223XNuO1IJarEaq/U9X8HUdigukJRUDmqne7N?= =?us-ascii?Q?aQk4NjE6NkjRsdQ4R99uzIQXYnpbi3SZd5BsfUamYHdMtv8dkAI5U9ocKj13?= =?us-ascii?Q?a82q/GByagqzNtTRRzIf926SwNjD5WhtsU3aXQwya9CbVcnE1S+/ee09+S8q?= =?us-ascii?Q?EwWeSD/0IkBCWHNCukGkeRM+Bjkin9IFSa7ExHJ0Dr8cQhUsD9e/p4u3pKB/?= =?us-ascii?Q?aynJUg6C6gyXBPQlSQW9qcdVPF/qCHNewfiBrNP+itZXhzseg5L626UWiDGg?= =?us-ascii?Q?k1ehhy8ht3EwAWv9hRn1P43icJ3pxW7YQ2gJVhVhQCSymrplz9+MvlSNIjRP?= =?us-ascii?Q?Z5FNU35lV3oznBvPqY5PPM5weSOv6hxbhPuvwu1Lx5vfIu/yqoCyxl+/67KV?= =?us-ascii?Q?bSqjUb2PcdKUInwbTu8prayIr4MF4tcoW7I3nslNgzuCUVcdJrz04QcPHyYP?= =?us-ascii?Q?ISlSsSN2p6DFRmsz4jPluLIlt+UPct+XrkDmGUBWH7nCpKDvi97Ym0JN/9mm?= =?us-ascii?Q?OwDeJEQ87pnIDiQE+x4pinkYKMyvGvKSh4KTibvfZzqW8JXkbA6RCaFEhQT9?= =?us-ascii?Q?syF7kHME/C9fSzv5Zoplppxh48EcVbli6yTvzVR60G/ucq4My04JLslTPvPe?= =?us-ascii?Q?53HIHBIkdO/HaLlCDnsiepX9y4T7NZbqGUylXoljoyOfLwKC0XwJoaBndYaJ?= =?us-ascii?Q?k9RQUFS642+t/9IVMfva+cKCXjTaY1x8b3cLgLyPvqyt9rj0w8U7p5BO98tZ?= =?us-ascii?Q?mp/mHtd4C1ZF++QgKxCdin4vvCj87gqSlVgC60F0pIxRxe6DxWMY4XDZgB5J?= =?us-ascii?Q?Rnz2lEL5k4xKNFYcurQRF70Lu63MW150+cVVkNNh25/f7vpCQ6lvRGrCwjaM?= =?us-ascii?Q?pWqjtS2qXaeLSDik=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0694; 6:9AL0Xp94aVXBQt3TQaPBu85njqpEJlcLKoYzVTnT61g4aX/gktAZy2dkWAmFRuUA0XznEFgmgaNDihVrTsn3DYn4OK8s/iE17bAqenJ+GJpBKBQAOIrO6QlQ7qSiUIULBYjxI8OPg/8Ea5RLmh+30R7hnC5sURy5YVqt+r7HIs+uJBq93DA+EOfOQRxh3tCymrEkmdMzv8HkHg/nhDqx4dMJEMKUjI/ZZk4h0NorqhcK9lc2tK/fd5ad6WbOl0cQ0Pk0DpMYs2ae5Ba/nhfbHWdtrQ/Pv4PZy2vxHBgz16c=; 5:UtZ1WrK6WyLyQ6NczCvaePV89G6n5RrTGkig78O6p/mYG96uZsSWwEv5R/iCQI250AGDeLo3zlYppH5GCiVQc7JapRqONC6Ge0wSNvXbheQXd78Pp8971WRXNo6Ss6D3fN0r9nIF4l0cEeZ3Sqz2BdXIj24Yb0RQ5LiEf0c4kUQ=; 24:yMZ0jV9aLDCA4k4FFvmozaycmd2uBT6JVUfH3f5y29aW9SCPNp6N3m6fNix6U5oflSJ8WLug232KsTZ+7WT8bQkn3w9q+as4/uDfeFoBevo=; 7:hlHk2PNqn5VHEUtJ+SoK+8vQTdWXfVnjWZwrsGE4dYdVXynmiVQlp5jqIXSoOf3KOZq+ij6lPgc59q8txqjtSwI7qmHalJcgPJ5AYrl4v6iwUVQdTxAv3bz8/gpYtDYkB9VI9Yw9sOa9IvjuKSZoTi8UAAod6n6J8rJoi/yK3afEq485WZHyavL+STcZkEPo+IdY4op5iBVQlVi2rAaIBUB7Ydyw6ylZ7yJYU4Z9N2i/+MbQLSrICECWULsYlLYQ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2016 09:32:16.2301 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB0694 Subject: [U-Boot] [v2, 4/5] mmc: add workaround for eSDHC erratum A009620 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Erratum Title: Data timeout error not getting set in case of command with busy response (R1b) as well as for busy period after last write block transfer. Description: In the event that a busy timeout occurs for a command with a busy response (e.g. R1b response) as well as busy period after the last write block, the eSDHC does not set the IRQSTAT[DTOE] bit or the IRQSTAT[TC]. Therefore, the current command transfer is never completed. Workaround: Workaround for CMD with busy: Don't set the XFRTYP[RSP]=2'b11 for commands with busy response and poll the busy status of the card from the PRSSTAT[DLSL] Workaround for busy period after last write block: 1. After the command completion interrupt (IRQSTAT[CC]), wait for de-assertion of PRSTAT[WTA]. 2. Once PRSTAT[WTA] is de-asserted, start the software timer and poll the busy signal (DAT0) using PRSTAT[DLSL[0]]. 3. Wait for DAT0 signal to go high (which indicate transfer complete) or software timer expiry (which indicate data timeout error). 4. Issue soft reset for data (SYSCTL[RSTD]). 5. In case of data timeout error (detected in step 3) perform the error recovery. The workaround for CMD with busy has already been applied in eSDHC driver. This patch is to add workaround for the 2nd issue. Signed-off-by: Yangbo Lu --- Changes for v2: - Split original patch into config part and mmc part --- drivers/mmc/fsl_esdhc.c | 26 ++++++++++++++++++++++++++ include/fsl_esdhc.h | 1 + 2 files changed, 27 insertions(+) diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index 80bc177..99cadae 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -482,6 +482,32 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) #ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO esdhc_pio_read_write(mmc, data); #else +#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC_A009620 + int timeout = 5000; + if (data->flags & MMC_DATA_WRITE) { + while (esdhc_read32(®s->prsstat) & PRSSTAT_WTA) + ; + + /* Poll on DATA0 line for 500 ms */ + while (!(esdhc_read32(®s->prsstat) & PRSSTAT_DAT0)) { + udelay(100); + timeout--; + if (timeout <= 0) { + err = TIMEOUT; + break; + } + } + if (!err) { + esdhc_write32(®s->sysctl, + esdhc_read32(®s->sysctl) | + SYSCTL_RSTD); + while ((esdhc_read32(®s->sysctl) & + SYSCTL_RSTD)) + ; + } + goto out; + } +#endif do { irqstat = esdhc_read32(®s->irqstat); diff --git a/include/fsl_esdhc.h b/include/fsl_esdhc.h index c6f4666..3f146f7 100644 --- a/include/fsl_esdhc.h +++ b/include/fsl_esdhc.h @@ -97,6 +97,7 @@ #define PRSSTAT_CINS (0x00010000) #define PRSSTAT_BREN (0x00000800) #define PRSSTAT_BWEN (0x00000400) +#define PRSSTAT_WTA (0x00000100) #define PRSSTAT_SDSTB (0X00000008) #define PRSSTAT_DLA (0x00000004) #define PRSSTAT_CICHB (0x00000002)