From patchwork Tue Aug 2 09:20:50 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yangbo Lu X-Patchwork-Id: 654626 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 3s3Wc115X7z9t3C for ; Tue, 2 Aug 2016 19:48:33 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 865FFA751E; Tue, 2 Aug 2016 11:48:31 +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 pnrxzJ5k8G2t; Tue, 2 Aug 2016 11:48:31 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 17694A7514; Tue, 2 Aug 2016 11:48:31 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id AB883A7514 for ; Tue, 2 Aug 2016 11:48:27 +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 zYVvOwMKIQ6C for ; Tue, 2 Aug 2016 11:48:27 +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 NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0078.outbound.protection.outlook.com [104.47.34.78]) by theia.denx.de (Postfix) with ESMTPS id 09722A74F1 for ; Tue, 2 Aug 2016 11:48:23 +0200 (CEST) Received: from DM2PR03CA0053.namprd03.prod.outlook.com (10.141.96.52) by BY2PR0301MB2053.namprd03.prod.outlook.com (10.163.196.155) 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:11 +0000 Received: from BL2FFO11OLC003.protection.gbl (2a01:111:f400:7c09::124) by DM2PR03CA0053.outlook.office365.com (2a01:111:e400:2428::52) 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:11 +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 BL2FFO11OLC003.mail.protection.outlook.com (10.173.161.187) 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:11 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id u729W6JF026761; Tue, 2 Aug 2016 02:32:09 -0700 From: Yangbo Lu To: Date: Tue, 2 Aug 2016 17:20:50 +0800 Message-ID: <1470129653-15854-2-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: 131146039319585564; (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)(11100500001)(87936001)(105606002)(2950100001)(2906002)(104016004)(47776003)(81156014)(81166006)(8676002)(8936002)(86362001)(50226002)(50986999)(76176999)(36756003)(85426001)(19580395003)(19580405001)(69596002)(97736004)(110136002)(189998001)(33646002)(229853001)(50466002)(48376002)(5003940100001)(2351001)(106466001)(305945005)(586003)(92566002)(356003)(77096005)(8666005)(7846002)(4326007)(68736007)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB2053; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC003; 1:+qNzBEv8bJsRd6UFTstUQMKrGc12OHoSkt1YC4PP1AVDQN+eh7IZyYD79i1DJiM85qVWtIYJQ7yntZqw0pkDJ9OroHLytD59n8cA9X9Uj7DzPH3BEdd/O3KgpbtQBdVT8mxTZwlqccH4OoCsipPs1v19MTPShuEfYKAd8YFcKW0jP5RnpocNvuLtQMK+nGOmLDh9qoT3WJbja9drjPmtPO5IKzKffE2Tee8LA7tFV4KeFu14WlrrOUj++jp3q/CQQtYQya+5iZUinyNgsvKPXwgTRnI7H3p9Bfvfmp4Yhcwowal+kDctPfhDzSqqqFngvzZwFYMdkjZmo1c/9fC8SR/T4CSIoW3pkSzzTxJbLwGBDCBFGw/ClRPK6sj/ESNzCGLOJIqLQKIoK7VsPqv2HoxkXkVuy/e2/6W3Bn/UhAW9OrdTwJiuOeWhFvvDJluWUq+PH1EH8Jn0cYqV2xfvSc1+GLI54TJowCRiudAcKTAUePS9Cw+jR7LDI/O8KCRpAlr8xFStMM6HpYshk/e9nSmYLlKy2lbyitCCIt3C25iHkh/sMjDVSz2D9ZAKNRKkZQ9flyJJ1y44HuxKdhpv3Vxe6eYFffhBnLTrCB2CKUSFSwgr01L4aBJf5ecXL2H3ZkWLhy2bkBby2Wj/sDVAmDpcgk51bnND2Kaw+qPE3UMa1Jps6BR+92ycz+hK2eZzK+3KUjGpLfqYs83zg7sCFQYg3lY3bhuzPNJrFNi+5gU= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 0e0baced-0502-46db-e31c-08d3bab7e1ce X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2053; 2:J2NGrBJUX6Z5xFLd89rxsU6WYZRFGUZC4xG0qdqquUd9U+OO+4EFzICYPUqrQzhH92EWOKYAPMxTkuXEyYXKLMH6rsyNVXJ4X79HYDbp11Gm3hPXSBFDl5ZxgByS5fjLx9tBaN4qmTBlDdSE2ejobnf5BZuPHWTlFtP9UqtLir6rs1MJN8yP+ASPviAI4F80; 3:lup+YusoSsKuYtlkCAt4o+rb7YsLHSS27F+sVFse077BrsEldWyGmMHEJCqXCfxs+2ZYolDLnoSlOxVONjs+WdyKIMyNApEnv3qV7UGmgvZL9Im9MyPIqChaA5xBQwWh8Un56aDMpex7oUQ128r9Vgd1+Xeb1mHSwDU4vwI2BW68R3gquqYVVslQi/H2bCLeb7wwzg6PgSM8KmTxwNrV/yRxxZqYRuCPcxVJRkUSphk= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB2053; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2053; 25:nRGbNRN/S6RY0WsDhxhQWME6POPXwthqA8OaueJVQS7hmheG9WrUG2l0QuxMLLVUyZz0HvlSv0jET9dkxBbtN7LevqF9ta/T6ozWMzDXj9XGJAQwVrDQtbjS46ZAtbWtA+/UxfUuSYtfQcJKa1E27gZn71+HN/w1DTjK8aTAY5clr3OptWnNKn8d7kn/2GDeca+ZUBWqXVUHW2SZyMZl8XPy8F79hxKtqLBZgE1jrbF5xJ+R8Uvd9HclLDioK7zdviJ0prCl0yMhXbFnFzA546GCbrAV/fzKF3byhMFN0K41p9CS7klbO22awE/VR6jcq4lGfqjFO4aF3Elye2M4G+HilGER54jtygQObeYytV2gbKJk43fYGJ7txpfEJFhOc1GHSD2hX1DccKgiXZUFZOuKscSaAxp2H4/J9AouCoNaH/7Vmi41lHaFRSYRdFTcSaDsgI4YCo4VYzw5aPLSg7eHlvaaU5CihwACurT0hRXwBkA97vkfXwLumCdkk+e80rpBbD0AMcdsQgjTUH5UvCBadJvyE1+6K1vTxOuD0zqTpGrjsKUZhG/mqPZMAFLrm4JxurGgn8+xFOrLtE0gYPzcLchSdhc2eelhjjqAQhjUFUMy9XmWSGpJt27stQ4HegtqFRbvalICYyEbKhY3cch4+R6rktdrWv87QDVbLdZJl/4XuodG7BwtymldKh/Q22r7X91/Q2kloR2lNQzIzP4rJcHEzvwZuK7Bkpm1gF0= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2053; 31:sUP6HtdZQ5RrsN9AIlj3gIPZdVGxpvcQrGHzALshlxVEUeuZt64uLyv+cIWB3ZLf4mk9+pr8b7Q1KboCWiB3iFeYOIKw+TG9N7XsqDmpB/UHfTxg4FbTYNZQoAdsKUdQu3kfjr1aEaOfWuWgZL1mtMD3Ko7QpN6L9zGx28ebKJKfT+OS0wAp+sw/xFRPxiFZPc7gl7XlzvdE+QIn1zPmkW7kHjyKq0lfXDEmWl9gkUY=; 4:ctiUkXC7A0RV23/Pbq0Ypu8O96JHlkcuKarZfAsES2wJAtufwv86Eu4Xi7P7tpmnnJffFBKwiR8C/Xtyp8O/dK7u8Hi44NPEVqB8K1CDaKoZAfHd1oLAhi94hWRp6BTTnzdOeeTUuvdBFX9HnzQOmvVyT8As59uC9ryNn6e09j3BbHoIgVljH4bPXKxM+L0ff0Eh8nWHw9M9OdbkhL0evZkVqJ0LU2TDBOAhK6EssZ7uVPQ9jkJ3ifqP218oO8naFqu3bKZ3CWQpee2peg76xeZu5jZXBAjNN+/Q1nt6JgMSHcAXMlGa8ZZoKepSdt+IXQG0o8t0Z77gLl3ENscKT20auD14HwM0WqwexBV/zkTJuHHeuA5jiQ2pQCZNS56/n5lEXhTktu5DtV8fVyZ6Qzez9GN93D5yJqHH8gYpqDUa5ig00ovWp1c9GkqnQ2AdQZ/MbyP0WJ/xguJi6bhpP07Tvy4xz+/KAxvrBVE2vvEu4aG7c8Jm/XqZutWBge+648xWqn3pgLox1+vt1Ql0zA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13018025)(5005006)(8121501046)(13017025)(13023025)(13015025)(13024025)(3002001)(10201501046)(6055026); SRVR:BY2PR0301MB2053; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR0301MB2053; X-Forefront-PRVS: 0022134A87 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB2053; 23:h54uCgHGDcXUfqL2EggXwx0yaUNh82phsoNag5/?= =?us-ascii?Q?jFJAIxSNxDhliI2XDU1WUcuznRrUiwg01lXUiDl+05NCYjDrNImsCyUBH60+?= =?us-ascii?Q?XMgjGL84pLVfJnKotjVMKqIcg5gwi0GDo/rpRdAJrD1wUaZ3mpsO7kRzhV1/?= =?us-ascii?Q?59ukUxjysg0mfv22plByrDwm/x7boSx32M4yrAqC1JmQwijqG83dR6AMI4bw?= =?us-ascii?Q?YAGzIkO1VHrHm89q948Bn2+KgSvUi9XALx0o5Zw3HwjGv745jUXBjYV61LUt?= =?us-ascii?Q?SJnrTv1TG734+4oUunnW5fEn+L30Rewsxqa5QAEmfBwdXnQ7w0EOEYfB8n+H?= =?us-ascii?Q?oUt9JxIYaV27m75gXtVjJh4BLPATn0Dy/bGelx8yF5Czykvj+ALReEM9t9Ex?= =?us-ascii?Q?qSBBv63wYuEQyMbKjGk8qLeIXX2zKKhn+ocwQhc6dmNO9/pIp2826i734i50?= =?us-ascii?Q?iLYjuKLbVxTlBGKYeGzOmV2GjnZSJ9UpjoSYHKNLdj+LNEzNMYq5oHZasWv0?= =?us-ascii?Q?43V0af12J10ixtpte4rNJsYffbuil42lhlU9wphFlhj2qVXySZDyRtfHKbZP?= =?us-ascii?Q?ao7wUM1JRM4bs1DE5r1/oXqJxqrhDY+djvONnh/rsRaGnNVPDvadTISFhrRW?= =?us-ascii?Q?Dc4qwnXPXCZTFyTYi8p09SJ67NzZOin+LgnYvqsd4/UdcU6wtNWLTal2BkNl?= =?us-ascii?Q?cLSSeAZJ89926iHxLuBe3rezMTDQdYhDIeu5obIRtJkbgDJ8/Ncxs1UoV2Yk?= =?us-ascii?Q?huOTlsg7wthOVkKmsDN7/L/VQ3+bpWZWPsSfqB/aKOamN2HHrcKdYHkfjdcD?= =?us-ascii?Q?7hoWtqG9/qM/SW73wpR9cDhxy4+sZnpzURk05dDrPcPXsl/HXJFFzo7FfP7S?= =?us-ascii?Q?Tg52Kl0TbuCv6ALwQ70Xd+hTlkKgQnXyOPzK0xII6cIsYMkzwCpH6yJOMXt3?= =?us-ascii?Q?5v+EGvjyM4b4k/LsOZRFuKUR9BYkl0THq1qkkyRr9theJy9GO53hladE25Y3?= =?us-ascii?Q?6kpyVriAVHZLgtQXnxhB50QuYQ+YijWdqaJA3TaKGjE4opLdqiLdhDCyj3js?= =?us-ascii?Q?1fwhU4FQ+rbQti2zUCOoxoqr2j/Erz+neBuaJP6qhEWzwq4h/p4UQdid36bJ?= =?us-ascii?Q?rgxwrRfVz3XQP8DQ/zZRtOyFg3bbnuBmrT2ZKoAh45m9QdtMacPPqPw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2053; 6:Tia/Gfs0E2dyQm5TrHHzKEIqEXshLQm6Y18nVnZKAQQrnP39YBVMNYOvg5a7Uf/F11uqua1ntVcOlefmC493tHvJV6CrXQAQNqtvrsTnVmqtK/NveXUIhg37ztPqs02BjV+aJT3KEXgw39eZq5TeLzemIGN3IDYz0Q446yRbWNzfVFaDjJfkDqyxpv2TRCjjVg6C6/uJRpo3j8vRb6SP35DJFh0Mvp5I7ATY1scNigIV0LXw7Xj1mMyrg6cVDNsf0D8OrLLkcJptZ89Hqb/6CmQuzmCyA9nbMQqrEsnZueE=; 5:Pt1JMuOGQCpxPS17H7iKklOT6NfEEQURdMThd5WMyEi7ly8BFM2WlZa+3Qp4USkY1VAuJOjSzckn1s3KtmncHTUmcbyk81BRmmHsle/nodrotocx9XO9KgBDCFGpROblI76R0nkpgDCUp0ZdDP0fcbmbIz/7BSRUyLLY3r+YiBE=; 24:NWWTmOOmRvrw0d7cEj5V61DThO7wUZvNJix29bpDJm05RTxmQleYxX0hS1hZmlbJUtfjJ81QTTtf0qjZnxLXo2ifr6m20a8Q5HhrQzqAjUo=; 7:Jo3xMPzkoJkUoO3gQArtyViG0aij3PCms8OsKeoU0IQVHSTiseviy6mbJ5wmBhtfPSHXj61ilvZLNd/Kt5nZd51LMPR9UT/mEztJaYrLjZUlw+3u6VJX/CbRqK0Ri6hbjez8FCylDASWXSwxm2hkc9i+JmhL6JCMjfKUKeFhMDa1CYjACxpPCPFkpDOR19dpaZMj60p7drMbQ5WbvuMBXvovRSupWuApPIW9v01v+Hc0IOnJo900PKvOzuLd+/04 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2016 09:32:11.7401 (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: BY2PR0301MB2053 Subject: [U-Boot] [v2, 2/5] mmc: send STOP command when the READ/WRITE 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 --- Changes for v2: - None --- 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 f8e5f7a..85d1e18 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -188,6 +188,21 @@ int mmc_set_blocklen(struct mmc *mmc, int len) return mmc_send_cmd(mmc, &cmd, 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) { @@ -211,19 +226,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 49ec022..2791125 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 0f8b5c7..fb8488c 100644 --- a/drivers/mmc/mmc_write.c +++ b/drivers/mmc/mmc_write.c @@ -150,6 +150,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; } @@ -157,13 +158,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 */