From patchwork Fri May 20 10:09:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yangbo Lu X-Patchwork-Id: 624448 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 3rB4Wv5WrSz9t6l for ; Fri, 20 May 2016 20:52:26 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 059E14BEA2; Fri, 20 May 2016 12:52:22 +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 5O3xtMXDHknk; Fri, 20 May 2016 12:52:22 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 223A24BABA; Fri, 20 May 2016 12:52:22 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D796C4BABA for ; Fri, 20 May 2016 12:52:18 +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 mNT4gt8EPf2t for ; Fri, 20 May 2016 12:52:18 +0200 (CEST) X-Greylist: delayed 1041 seconds by postgrey-1.34 at theia; Fri, 20 May 2016 12:52:15 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-bl2on0089.outbound.protection.outlook.com [65.55.169.89]) by theia.denx.de (Postfix) with ESMTPS id 2D5164BA81 for ; Fri, 20 May 2016 12:52:15 +0200 (CEST) Received: from BLUPR0301CA0007.namprd03.prod.outlook.com (10.162.113.145) by DM2PR0301MB0608.namprd03.prod.outlook.com (10.160.95.24) with Microsoft SMTP Server (TLS) id 15.1.492.11; Fri, 20 May 2016 10:19:58 +0000 Received: from BN1AFFO11FD048.protection.gbl (2a01:111:f400:7c10::125) by BLUPR0301CA0007.outlook.office365.com (2a01:111:e400:5259::17) with Microsoft SMTP Server (TLS) id 15.1.501.7 via Frontend Transport; Fri, 20 May 2016 10:19:58 +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 BN1AFFO11FD048.mail.protection.outlook.com (10.58.53.63) with Microsoft SMTP Server (TLS) id 15.1.497.8 via Frontend Transport; Fri, 20 May 2016 10:19:58 +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 u4KAJqQp030375; Fri, 20 May 2016 03:19:56 -0700 From: Yangbo Lu To: Date: Fri, 20 May 2016 18:09:59 +0800 Message-ID: <1463739001-25905-2-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: 131082131987176962; (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)(199003)(189002)(9170700003)(5003940100001)(36756003)(2950100001)(4326007)(8936002)(5008740100001)(50466002)(85426001)(2906002)(87936001)(586003)(33646002)(11100500001)(86362001)(92566002)(106466001)(48376002)(229853001)(2351001)(77096005)(105606002)(6806005)(189998001)(110136002)(1220700001)(47776003)(19580395003)(76176999)(81166006)(50986999)(8676002)(19580405001)(50226002)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB0608; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD048; 1:XPEQVvubeOvhqkALhZ+bdXviPeVSim6b20LhYS5n/V4swKXikTw6zsBpZinIIPFN4Cmm6tTChsXuqOPpIMrdzBNRQP4lI0UxxKXVG26K8iEQF5lSJVUBMVV5PCXblf4R//9Yk+cVTKcqCkAgrdUU27TRQPDuqiwu3JaCMBI+Slb7WVZw9HV8z7CnmrZ2xQ1nsk77IeakoG5rcTITcVOVMWNQd5WwpNEOCf3LDJZrNZHxNVMaylgv4MpUrHNxsDogS/oKNUclThbzKarcETOSBcAmh2AfZ312oOCfRAdss+WXPuw47MYttENeGT5iLCKtnhFBthp6HAgqIyUqZt0TD4b7qGizNeYh9uJBcurCzHGH2BVsMF9zh5zp1KxyHez5onKK6pt+BOH1D/El7zZN9kJfDLn7K6QeXcJ9Dp34CumfiNr4Q6s3wKHK+8NsVCMMUtMG4BI9cm+X3GVOl+9r6yer+nwkX+VLjqlIQBby+Aj0drCs1n1UJE/kmqRhDcKovSVwAsL4M0VxSNIWDWKdys3Q2FJ/BD90bujsSmKUw2dPyi+ND91CBIl48FayGPbncgU1Vx2+Y4yFICUWfgxgiMHw+wPZjjS8QyRcBKVgAIqZxLofQueqN4JGJFAL/3A3De+YRSyOB0r4D2mqrhJ3CONS1uHb+SLsuYAE0ZEmym0= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 99e68a6d-3cd1-4dc5-bca3-08d380984bf3 X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0608; 2:qtbMhm5fl6j2VOJX75nxXk8EgpNzRjtGL+No9UuLbqDlD9zeQGJhDTupgsb/YHaZiT7EQMP+99uFeEdzbz02Xr21cB1ePMCKG9anjOLy9/TPih7VU1JQK0egjn5dRMUrl1csiLlZTkE4poNEQ5/SLHg17PafNkMXP4qoYwKNhs+e/xsR5ZxZINe6YmstW2AA; 3:GJCw8D5LJNSk1am45MYK7tQiC47X+sJLQoEflYeisTNiV5GIwKxYmb7pS8hdxsackgXUQmJSwZoBgP1BMDCYyJ70DgSMO6wxMs81hjMWL+N2rXYvRJCfugsiUHky0TveKHRcX34WXV5D1rJAad5fEl71Y6kzcpqIif3BHfzxdcBTSJryNQkiLHzwEHryWq6LoNOvpRWlyO9f2pWu3179rS5OsuB9gVIH75u1s/HkTAU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0301MB0608; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0608; 25:x5Y5HznqrYwmSjFOLeQf8A61SYSABui+owuZwSGqBISB1ywMjbLP8Tnwdq4EtFNT6SEyVshMP8AFmfw9CF7xET9LKpAgo9xBk4qJOo0XtD2zIvFsX78nspUVPVv75MTt43JRlpu4E2uCrLQ1iRBdiD6HPNVqM/JKgQcQ1WSUmyAyzLNuafZpGAa8r0321XL9yqIFJgaJoAb8nPDLvjOhHUVVrajdD63oK0xLqS7lApS27fzyzKoozd6cBeFPNEPYnvghsw9JB4AC6TLChM7DxtBhA713bhpPxZtpNsnbp5eYqXo59MiuvS8aj61KNO2HrCu0x/4QW+zpRbKx8TEjqYNvJM58qE2iYrZziBcb8Gc5xfqZacjA7O7I6zwiyGaDOqQDzKqv7r3fsUEPaHi5oppsGJMIGUIY8y4JMZBE7+drPlgl50HZeRTkdUmRwLI7qTYniw443SjbaGeGhDwDPx7wXfiIug7KDiC6VXxYrrTbqIB49t2DZFYswQX0lSmt+WhPLVrijM4WYeOiRnJuuoOetuFaDF3SbDlUYJUPV9lc1dsPduG953P9gX8/0pI5Vm1ZrDNBQfIRhk2iL0UNxFA9XpVO+CLYrlx+QFCXU9JlHqCCx+WNfla45UXPPWDKM2pSdVYAwz5jY2fRdfM+Kkg3HM9286vJTdozUYCRusKdoQalvZhvkpG6QGW0P7BkdBGfUOUIKAzS3zphmuRlC02KwRYbPAB5/7W+DEkF7Ks0ZQbUC2DIzmUJr4WqavPg 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:DM2PR0301MB0608; BCL:0; PCL:0; RULEID:(400006); SRVR:DM2PR0301MB0608; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0608; 4:HT2UL23ZdT2opJTbapXoUI3T66A/toe9EceDg9xPHRWoOqUZyoJeGZtV2+UbIBaItyyR6e94RQv5bqsvojWo/14J5BbNiRJUjDxB0nj8fWAkX7/RghIaPuB9qBZnvO45RPndhTxv+OAZJ7c1YzSr/lWESHEeMbaRsx2EetTKm/5Zn3KzE40maDAx5lmaUaqnqky3YorhaUKeFcYHR1xfzp0EBMdFDSn108blizWjLK2bJSPY/aJ+2wd0sZMW92h3LmJSThff7nTWjazhuvRaWjsmX7++OB6nUwqo28AdVkHnzNXeUJrAeE/ppDN8JG0Dem/PTQQEsBETw4Rm+TSWzdgETSzcAhJsDs2tSTJrOJIhdq253xtl395jmgg/UtERpgRfiW+uyChYBd3UlTdU1tSaYYjK8pqzqXzVBCqqshutEl40rQmg+xqnriEYFR8JhUEdK+vwRiOfZ1hLE0fV4I0ho6yYJ3yxVHfxaZpwCKM= X-Forefront-PRVS: 09480768F8 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB0608; 23:HOQ38EYxvwFzuYTH8o3bwj3lFheBmM+PwjLHtEZ?= =?us-ascii?Q?W/bQZZ5IAW2+JYIzAqxS4m6W+VXYvVolcVA6eninK4AIgMLxdbbbebeqhgpk?= =?us-ascii?Q?up3v8cMFSfE+XUQvm144/5/FtRtVTlYL1i30/7oqmGGZMncYeXnZaO4G/EJq?= =?us-ascii?Q?gplaoJ+QdMiOtZ0Oc5SBeEGNtZp4x+7ZPuMNVLSHiCyejSMVnV2Po/M0KNqW?= =?us-ascii?Q?ObTT7nM7LU3BVqVG1VY0E/fEkmCD7WjuUuaTTfMaI5j9wSOjqEqw9hY08MPs?= =?us-ascii?Q?9cKHvO5LSKXq7MxXDNj7cj66py8pL8Gh5b8KXHJ3q1+8YB2U1JsOX3HOqoZT?= =?us-ascii?Q?biSxcCymqOGv8zO1lndotgMUO4erLLZ3gm1wai5B7kEsgTs11Ep0xSA68qf/?= =?us-ascii?Q?tKzWx1RCJxqCnUyOcxymGyTEkbAgQnWsXKmOsuDaHj1ucy9eE93mR+NlPHII?= =?us-ascii?Q?btaub5NWLDrq159eFlaCeZz3Rkaik59pHRzqBoROLIDulCk4hmuMRbZmGDwK?= =?us-ascii?Q?ONTXSI0+dTRfKF0u8ppTxazM6cWyfdcUFXK2Exg5mDSW+ZryI82Ws/eT4oNv?= =?us-ascii?Q?Ru3cH5m1LZr8Hv7H/FLeZWeJ/S4r1X+/B5mCRj4QtWEVz2czM4tUi5D+SN9w?= =?us-ascii?Q?3//7bYW7u1T9xe2Yyg6SQ+msHBsZMbUrsQaGzVxwzBBb+LlIni2NmJr+cBbZ?= =?us-ascii?Q?eW30EwdutaYaOCAXPjyTicathR3fMMFWdhzgWo+SROBVy55md91BGl7u5Jf9?= =?us-ascii?Q?UxUplHTAMncsBcQnhe2sXHJRyGv2KzaylMneFflWLSqMhoaW5ovsuKx/YMjl?= =?us-ascii?Q?gZ0ljQJcJn2oFF1S7wq8qcLbMAGclvl3bBbcm8z30M8RUdRswLjXNjQONX/P?= =?us-ascii?Q?lItu6w++Dq0sHnfQHtmmRobnw20a8csfdCbHFahTxtx08lW5PVl4RQVLwVX2?= =?us-ascii?Q?znkiICVmhZOsnsZ3nK4DpJBY4ir60Je7C5Hsfnqlzh4NLCoWlAvTQMGkomDs?= =?us-ascii?Q?krzDiTvTkN1ymKl+aB3B5VMtK7eHuhPr6o7Pp1fFKrxZtRzlaGBde/FhWAc3?= =?us-ascii?Q?byBwmqomKhtE4ad28n6XSGLpLUxc8M1P3UsiWxOuXwRsxv2QrRw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0608; 5:LmWNELG23ONGvqWFIyszqTWmqeE9sOB7UQi/lB/mq+3zhUyhvP/rxS4c+ai0O4kIgTxeS2K2nnYk1D+1Xk8/ufd+fYjfDbot3Z6lS7TkaFHezWvCueWh2A4p8cIKXuj+tw0psH5EkKOQFac4p//YAlszdjdh6HW6hJ+MgGGXfgg=; 24:J90pGWs0bX5UULotaiMUQRe4E7kefZ9KLW+40AD4emyAgPhO/foJ+wAdsYaNfJduPtaVMtAuy2slo5ssJlcsmgyo20BMEK6Tl5nYHRi+9iI=; 7:+Y7MBTW+J8pHqMnnh0ADJi4x9NTSQ2+JuYooKmHR3hpjjhqA6YtgCJrL8GrtTWHYtcWoTKb0xRwBnFAcbAmgSGiECRihVAsbyx4N/RPwrkKu8nuU4kmVq3NLv2xV2M1U8Edwyp6xynUfcfv0zY5GLuC39Vu2XR9V4MrsWy4LVincsZ+ZeJ2Zru4qMTW+CmKr SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 May 2016 10:19:58.3588 (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: DM2PR0301MB0608 Subject: [U-Boot] [PATCH 2/4] mmc: send STOP command when the READ/WIRTE commands fail 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" The STOP command should be sent to stop data transfer when the READ/WRITE commands fail. Otherwise, any subsequent command will fail to be sent. Signed-off-by: Yangbo Lu --- drivers/mmc/mmc.c | 28 +++++++++++++++++++--------- drivers/mmc/mmc_private.h | 1 + drivers/mmc/mmc_write.c | 8 ++------ 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index d3c22ab..713a934 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -197,6 +197,21 @@ struct mmc *find_mmc_device(int dev_num) return NULL; } +int mmc_send_stop(struct mmc *mmc) +{ + struct mmc_cmd cmd; + int err; + + cmd.cmdidx = MMC_CMD_STOP_TRANSMISSION; + cmd.cmdarg = 0; + cmd.resp_type = MMC_RSP_R1b; + + err = mmc_send_cmd(mmc, &cmd, NULL); + if (err) + printf("mmc fail to send stop cmd\n"); + return err; +} + static int mmc_read_blocks(struct mmc *mmc, void *dst, lbaint_t start, lbaint_t blkcnt) { @@ -220,19 +235,14 @@ static int mmc_read_blocks(struct mmc *mmc, void *dst, lbaint_t start, data.blocksize = mmc->read_bl_len; data.flags = MMC_DATA_READ; - if (mmc_send_cmd(mmc, &cmd, &data)) + if (mmc_send_cmd(mmc, &cmd, &data)) { + mmc_send_stop(mmc); return 0; + } if (blkcnt > 1) { - cmd.cmdidx = MMC_CMD_STOP_TRANSMISSION; - cmd.cmdarg = 0; - cmd.resp_type = MMC_RSP_R1b; - if (mmc_send_cmd(mmc, &cmd, NULL)) { -#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT) - printf("mmc fail to send stop cmd\n"); -#endif + if (mmc_send_stop(mmc)) return 0; - } } return blkcnt; diff --git a/drivers/mmc/mmc_private.h b/drivers/mmc/mmc_private.h index d3f6bfe..df507fc 100644 --- a/drivers/mmc/mmc_private.h +++ b/drivers/mmc/mmc_private.h @@ -16,6 +16,7 @@ extern int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data); extern int mmc_send_status(struct mmc *mmc, int timeout); extern int mmc_set_blocklen(struct mmc *mmc, int len); +int mmc_send_stop(struct mmc *mmc); #ifdef CONFIG_FSL_ESDHC_ADAPTER_IDENT void mmc_adapter_card_type_ident(void); #endif diff --git a/drivers/mmc/mmc_write.c b/drivers/mmc/mmc_write.c index 7b186f8..4f00657 100644 --- a/drivers/mmc/mmc_write.c +++ b/drivers/mmc/mmc_write.c @@ -148,6 +148,7 @@ static ulong mmc_write_blocks(struct mmc *mmc, lbaint_t start, if (mmc_send_cmd(mmc, &cmd, &data)) { printf("mmc write failed\n"); + mmc_send_stop(mmc); return 0; } @@ -155,13 +156,8 @@ static ulong mmc_write_blocks(struct mmc *mmc, lbaint_t start, * token, not a STOP_TRANSMISSION request. */ if (!mmc_host_is_spi(mmc) && blkcnt > 1) { - cmd.cmdidx = MMC_CMD_STOP_TRANSMISSION; - cmd.cmdarg = 0; - cmd.resp_type = MMC_RSP_R1b; - if (mmc_send_cmd(mmc, &cmd, NULL)) { - printf("mmc fail to send stop cmd\n"); + if (mmc_send_stop(mmc)) return 0; - } } /* Waiting for the ready status */