From patchwork Sat Jan 23 12:37:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Bosch X-Patchwork-Id: 1430722 X-Patchwork-Delegate: van.freenix@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=posteo.net header.i=@posteo.net header.a=rsa-sha256 header.s=2017 header.b=DrH9Q0IN; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DNG1L1XBmz9sCq for ; Sat, 23 Jan 2021 23:40:06 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 0CA0D8271C; Sat, 23 Jan 2021 13:40:02 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=posteo.net Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; secure) header.d=posteo.net header.i=@posteo.net header.b="DrH9Q0IN"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 295C98272D; Sat, 23 Jan 2021 13:40:00 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 27C198271C for ; Sat, 23 Jan 2021 13:39:56 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=posteo.net Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=stefan_b@posteo.net Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id A17CD240101 for ; Sat, 23 Jan 2021 13:39:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1611405595; bh=KV0QYu7UIE1yKKccPXfEWCaP9a4vz5aPzdlS+pxvuVE=; h=From:To:Cc:Subject:Date:From; b=DrH9Q0INPwnht+ld2Ycz7XrQQtF5v7bZWQ/s7uYrYvj1Bs33HKs8pVOEC2wx5c+x+ s8PJH8nQxcIKx+DS8IWvQyVJrmljTYtNh5Q9hgOviPO4omDpG5RxGpbOEHIjHP7ejT VsitK+cJukQ51KJ7vZFViBUnQyyAbnYRvmhNsFUKUOOEk9Mi1eqKJsepkGuGlVYjRJ t/lDKO8J4Hx6dyF8LfJixHF1vkh+vUFN88/goI0TTY0hHAvGqBPhsZmk5MEHtF3MF6 6LCHC0bSJX4icv+QCfY5lWVLIOphoYUL8ofdCteEBUN2tSRq5biK4QfOf5jkpm+bC1 vrlifzDrRqjSw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4DNG162xDSz9rxS; Sat, 23 Jan 2021 13:39:54 +0100 (CET) From: Stefan Bosch To: u-boot@lists.denx.de, Peng Fan Cc: Stefan Bosch , Ashok Reddy Soma , Faiz Abbas , Heinrich Schuchardt , Jaehoon Chung , Marek Vasut , Masahiro Yamada , Simon Glass , Yangbo Lu Subject: [RESEND PATCH v1 1/1] mmc: fix response timeout after switch command Date: Sat, 23 Jan 2021 13:37:41 +0100 Message-Id: <20210123123741.3224-2-stefan_b@posteo.net> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210123123741.3224-1-stefan_b@posteo.net> References: <20210123123741.3224-1-stefan_b@posteo.net> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean After issuing the switch command: Wait until 'current state' of the card status becomes 'tran'. This prevents from response timeout at the next command because of 'current state' = 'data'. Signed-off-by: Stefan Bosch Reviewed-by: Jaehoon Chung --- drivers/mmc/mmc.c | 3 ++- include/mmc.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index a47700e313..8ccd2058a9 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -823,7 +823,8 @@ static int __mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value, value); return -EIO; } - if (!ret && (status & MMC_STATUS_RDY_FOR_DATA)) + if (!ret && (status & MMC_STATUS_RDY_FOR_DATA) && + (status & MMC_STATUS_CURR_STATE) == MMC_STATE_TRANS) return 0; udelay(100); } while (get_timer(start) < timeout_ms); diff --git a/include/mmc.h b/include/mmc.h index 1d377e0281..18402494c6 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -178,6 +178,7 @@ static inline bool mmc_is_tuning_cmd(uint cmdidx) #define MMC_STATUS_ERROR (1 << 19) #define MMC_STATE_PRG (7 << 9) +#define MMC_STATE_TRANS (4 << 9) #define MMC_VDD_165_195 0x00000080 /* VDD voltage 1.65 - 1.95 */ #define MMC_VDD_20_21 0x00000100 /* VDD voltage 2.0 ~ 2.1 */