From patchwork Fri May 20 10:10:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yangbo Lu X-Patchwork-Id: 624449 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 3rB4Xn0B8pz9t6l for ; Fri, 20 May 2016 20:53:13 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 9AF4F4BED0; Fri, 20 May 2016 12:53:11 +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 kXQlOU9MQqqe; Fri, 20 May 2016 12:53:11 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id AAECA4BDBD; Fri, 20 May 2016 12:53:10 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BE42C4BDBD for ; Fri, 20 May 2016 12:53:07 +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 KhraOMx0UD5h for ; Fri, 20 May 2016 12:53:07 +0200 (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 na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0069.outbound.protection.outlook.com [65.55.169.69]) by theia.denx.de (Postfix) with ESMTPS id 31BB34BA81 for ; Fri, 20 May 2016 12:53:02 +0200 (CEST) Received: from BN3PR0301CA0047.namprd03.prod.outlook.com (10.160.152.143) by BN3PR0301MB1186.namprd03.prod.outlook.com (10.160.156.148) with Microsoft SMTP Server (TLS) id 15.1.492.11; Fri, 20 May 2016 10:20:00 +0000 Received: from BN1AFFO11FD011.protection.gbl (2a01:111:f400:7c10::130) by BN3PR0301CA0047.outlook.office365.com (2a01:111:e400:401e::15) with Microsoft SMTP Server (TLS) id 15.1.501.7 via Frontend Transport; Fri, 20 May 2016 10:20:00 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD011.mail.protection.outlook.com (10.58.52.71) with Microsoft SMTP Server (TLS) id 15.1.497.8 via Frontend Transport; Fri, 20 May 2016 10:20:00 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u4KAJqQq030375; Fri, 20 May 2016 03:19:58 -0700 From: Yangbo Lu To: Date: Fri, 20 May 2016 18:10:00 +0800 Message-ID: <1463739001-25905-3-git-send-email-yangbo.lu@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1463739001-25905-1-git-send-email-yangbo.lu@nxp.com> References: <1463739001-25905-1-git-send-email-yangbo.lu@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131082132004559539; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(2906002)(110136002)(77096005)(586003)(1220700001)(6806005)(86362001)(8936002)(5008740100001)(217423001)(85426001)(48376002)(76176999)(92566002)(50986999)(50466002)(2351001)(36756003)(189998001)(47776003)(81166006)(87936001)(106466001)(4326007)(105606002)(19580405001)(5003940100001)(33646002)(11100500001)(50226002)(8676002)(19580395003)(2950100001)(229853001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0301MB1186; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD011; 1:vLra5v9EY5/c4d2wvF6/btiauUHi+1leChFpYfAqd32Ew7kpA4PKxPGx5Z26DUQKd78lQszAV/MSko8qx1a8FW5uvr4mXX/ak5gK9kKe27qpK2RsZNXfk39/kShzA7U93yKMVIroxDOtTJoDCU7HHof/1N08JKz5tSesMvGJbvJiuHWWQE04XSNCzcc5/uQsH3bGv6S0hlN4C5fyNWfE7dSI3GMUCOPd2PyqGEnP3CHtXVo7Qz3SO3pINrUmR1JUciyGIBZBdrZ38WynWR02i3Xa8q5giridqDO7WqoaonxPWn9+QG2KhuvgpIN3YGqsKoD9HQ47IwqoRj/AOJJWuDXnE+yh1s+kFaudPmb4pk9pjiMoXvstI1qMdEw43oXOffz3WLvamLlb0A9MMdrYd7iQLJEaMxT5wDKv7ZYEX/GEHoex8NQIlVbmdsmkJI8jK/NwfwoCa+NhDoOFCNbquBpUYU40NasQtu5r5r/NWRGJFtt9u6LR3qRuMxf3GpV76Z4sV9AYuFJSWRAYzGRznkgjuMjCDwMH0AtnA/pj8+Ymh+5w5HaL0aPgHghJL/sEVyUP9PQys7LTfqSZVt744nJ+1JGsoqmJCPBqsHwodARk5RhoIn4q88Cf8z+dcHspcHVLUcOwaJEXn1leHl9FD3ZwGMApy98VaWweYEXBE8o= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: df0b98b9-eedb-420c-f953-08d380984cfc X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1186; 2:Lo+9CruukWpZtX/XBF9zHLnZle/LcGmF8V+C7bBDHnaz2Lu+7ode16b8jqPgfawzI4N5VGJseKOHO4+E4qSD1RFAENhOBN5kSGaXWeEP5ATBRlnsGsAO72r28ALvtCNdIZReej0E36T+7sTCAjF24XHatqGZmbA/vsPq8QcnkUjzrf5NErrFT+1E7FCAXay1; 3:fTMgTi04k7lSG7kjRHLykWAXS7mf+6Qmop/wLbcNobuK04PaDal/u7S6HUl/51Rah9J0cWK/ikyjY7bYgwVwccCgpgr2fxKu2XHN/09rZ8HxcHAHBAP3PM7ouGFHPhzCJYbg+IfwEGuM/s317ja1Bp4MJekIXNhTVrJIPKSGSxVHCgDxLbuS5zBrOzsmR2MNbSqzZH2qp75P+kGburW54fV279GaiFf7uGyf239ErLg=; 25:0IfUuXjrscgTTprJ32V2YH7HyLcmXcDeF1oTn8Mpad3cz/Laeo3z3aU/bYFlGYM5inAT7mG/Yj+ZjXXm4IzvBl35Xg3wd8UJf9mGh7NC0PNS7X4pI2oN88kgf5pyp27TrFAJRiK92SfNN7MHJsQMCcQfgeLityjIYX1PUmb73aNPX/c+rRQ6h8J80MfD2Jhki5wmSHoPphwebYSkBhyyHfj8PD8wCdlkfCn/I2WNcezri4dp5kXZy5Z6Rvc7VfGobe5Ly8SoWQVvo+UAZJDRHjh7HvJSo4qooqFeinWzigDiKeFTh1E9u6R/fPbXsMeFD3CA4uOldvXZMRqV1aU0kK7ZxFPAfJxodqntP96B4FDp3YrFpM7sQFj2ULE9+/TkV/FJhdDkxqWJ9zNzEiCEX6wg7lTaSktvWL9JTZwzPYw= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0301MB1186; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(13017025)(13015025)(13018025)(8121501046)(13023025)(13024025)(10201501046)(3002001)(6055026); SRVR:BN3PR0301MB1186; BCL:0; PCL:0; RULEID:(400006); SRVR:BN3PR0301MB1186; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1186; 4:wGl60Tjsfir9vp+jwg4Bdd452XeFDCcowzH2yOb0P4B/nocqjgPHd0+CxxrvzOy4UNxQVrgMedMP3ovQglKxMAC11X1JKePVNEOvGBySx9/drEByPVABbwROjESGP9JHF3akM1KwfBnMk89u2YnYFosYqw9Jh29r+V7tnYpj0Q33AA9Q673ug1kMfTOd/CLjIazs1kogAgalprvI1Jmwd4equJmnpdHxOt2ivw/MqVIXEYAg7RnPJezNrMxfpriyD4dMHsChyO23owgzfBWXk51SjNoM+cJcWcbonYlWyokzOXF9nZvKv0Tw6fkKgPSovooVGc4ogJbo+wEekNO2QNpneFs/DTaSwhErIuvDN19XNcT5XYI4oWPrzU2ZyZDmO70lxsa0pNNZF/E1XLGsfYHrGToTELyoN7dNSdKdAsor2P/sn4vjVlT8p8MrGY6YBqQdLTNnTFslEJthBFuF2wo7DW1iGm+0J0T+UPFQvFY= X-Forefront-PRVS: 09480768F8 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR0301MB1186; 23:ZxijCzrPNDhruX3ZnsFJe403xycYr1MxrZbLO1c?= =?us-ascii?Q?HaZiOfufSAVMSqfWe9Fls+/6J6hbkq6wdcVKrZnmfzpj2Jea3e849xYgyh89?= =?us-ascii?Q?krd/BNafULwwDVqIqPR2is5z5Sft0rT9mhSLA32rmW8z5rvT9k+UVn+7SzMQ?= =?us-ascii?Q?N/yXEnPtuXlP4qRCt9XsxGUk1NlZV4surmQgpvse2RwWYLc2zueq6A8SbjrW?= =?us-ascii?Q?wJxzWZsf5ykfCi6E7Dbpk7F2Lzkg4NgKncKCgIWjXPCi9O2tU1IznbuCcxrx?= =?us-ascii?Q?2Gh7yxWlsY5Slel49q3Q4JHfBdZGULyPTFOZizhh8URK13qddAvcy0cU1bBY?= =?us-ascii?Q?nRWx4BKY34vBP74mX3C/I2gre138T5VBQF7fHUVH1rSte8xe0Dw+kCDPgG01?= =?us-ascii?Q?ksFNjhZkwFjWBMEuwIAc0Qm4mBRF3a+NajMn/HUXzcK7U3utdGYh9kno4FEi?= =?us-ascii?Q?ZHFGgYGSRksfMhqdkZf3hq6g02ZIVTaRm9A6dKiI0S7oSa8jPEG7EoO7zaVX?= =?us-ascii?Q?FihQoXZng67RNX1UQa2CpGMe0wpVPNlWSExiSATTfpLA7gWJoKrnhR/74B5z?= =?us-ascii?Q?JH0eX+jy+g0M6PxT0GDeYLzMpmktCqia5GPVtK7SncmGt+IkWVY/xNH1wvM4?= =?us-ascii?Q?4G1IqVzmj2hGJs5+xLSmLiKlcwclJafn9j8aDSACBTbJgwFHhs8JKc3OU2Zb?= =?us-ascii?Q?e5dmlXCxyn9vMW/dsFLJnCkpJ4i90emkBP/1rgxtc6mElf5P5jxrWkANavNk?= =?us-ascii?Q?CiK+X4PuSGtEILCfy4/q2WPl3aiujZRWgWtNcsuAs/BzvoOD/X87fZo+Zxy6?= =?us-ascii?Q?oIcKJIfLc5Z8rbjZNdbiEv9612eKf54r9DTX719WaAOhZMb560+O6KiYp2nv?= =?us-ascii?Q?2RJxm9ON+4GED11rzmOVUfVxSDJ5znvzw95HBMVi3Iuje+1AShBeRacNU5CO?= =?us-ascii?Q?ORzI2aCAwxXHw/C5T8j1PUMqwHxMdHfhLVwBKNalt2ny4XZ0bDCPURijZ/PB?= =?us-ascii?Q?VxFA/yC48jBEJDBy2dNZ0M9pEv9v/P7oFP9m7LvKRJ4WkhCgWVXvsoZ8HmX4?= =?us-ascii?Q?34e74AjoVBXlDeTLxJa/i3tLMaq3W/g6PAE/SvokRVKK6PgTC6Fmcz2qI2tT?= =?us-ascii?Q?hsr8n2cTzsgo=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1186; 5:I80ND5GCta7nSOo66J7twSuiwyIrAmXRHuk6cHNsd+hEWEAd7Psec/5y+qCU9fOiK9FTIhLWNgqbVYjyAb7no9Q+4s1C1mNZ2KP6I3NVLs7PuKF3H3HNB8KESUnFx+x0+g3HN2POS4WAzoQrpAruNyecKTe9aHMzRraOWrWZok0=; 24:J6r5ocUZgiKY64f0FSwPREXzG9wftYkoXDcBQxXNYsmRyopbTmK95scTXb8gLCp1LvjEW0Mjkg/kgZYUb5kw1ffyPWtoSkaEuKhmibi1q54=; 7:uyF0+DmYCYv79mVN7tjCrDh/YoLjK5JIdY18J7Xvu/olN/Z3H4QnF20n44TYehdurElPJ2vhz8DD3IxUMTkk9EIDUzxmjZUDrqQAEjhN01MMJ7/kexqhE5Gt9ynrgDYpy4yi9svcZ8OFlZOcFfrqbxxUqWN5dvy8gFsEQxegVIy6Kj1us0m9xs7Ut+ymP3Dr SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 May 2016 10:20:00.2531 (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.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0301MB1186 Subject: [U-Boot] [PATCH 3/4] mmc: fsl_esdhc: add error recovery for data transfer with Auto CMD12 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" For data transfer with Auto CMD12, the host will not send an Auto CMD12 to stop when the transfer fails. So this patch adds a flag to indicate the READ/WRITE command error, and makes the driver continue to send a CMD12 manually. Signed-off-by: Yangbo Lu --- drivers/mmc/fsl_esdhc.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index b06dd69..744037e 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -96,6 +96,9 @@ struct fsl_esdhc_priv { struct udevice *dev; int non_removable; struct gpio_desc cd_gpio; +#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 + int rw_err; +#endif }; /* Return the XFERTYP flags for a given command and data packet */ @@ -350,8 +353,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) struct fsl_esdhc *regs = priv->esdhc_regs; #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 - if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION) - return 0; + if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION) { + if (priv->rw_err) + priv->rw_err = 0; + else + return 0; + } #endif esdhc_write32(®s->irqstat, -1); @@ -506,6 +513,13 @@ out: /* If this was CMD11, then notify that power cycle is needed */ if (cmd->cmdidx == SD_CMD_SWITCH_UHS18V) printf("CMD11 to switch to 1.8V mode failed, card requires power cycle.\n"); +#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 + if (cmd->cmdidx == MMC_CMD_READ_SINGLE_BLOCK || + cmd->cmdidx == MMC_CMD_READ_MULTIPLE_BLOCK || + cmd->cmdidx == MMC_CMD_WRITE_SINGLE_BLOCK || + cmd->cmdidx == MMC_CMD_WRITE_MULTIPLE_BLOCK) + priv->rw_err = 1; +#endif } esdhc_write32(®s->irqstat, -1); @@ -796,6 +810,10 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv) priv->cfg.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT; +#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 + priv->rw_err = 0; +#endif + mmc = mmc_create(&priv->cfg, priv); if (mmc == NULL) return -1;