From patchwork Thu Oct 12 20:11:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Anderson X-Patchwork-Id: 10002755 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6689360216 for ; Thu, 12 Oct 2017 20:12:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 591FD28E98 for ; Thu, 12 Oct 2017 20:12:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4DC3E28EA0; Thu, 12 Oct 2017 20:12:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 04BFB28E98 for ; Thu, 12 Oct 2017 20:12:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=rvLF+twVxHvsmvyJ+XcG3ZMMkIttJMkqz8ECtM2vIYA=; b=QwGN/ok+iVQIvxBHSori7PV2nV O/WkaJrvVmAhPA//uhR6dSbRwR1P5Ure7jESFQKJh8OSoNBM9cKLetx02a7fMNuFGy8MEH8GVAcxv QOe+A77rNkXuD9+xfwfNoXkEYtC8N/XYnwSpQ51D1ScKiE3TATqR4Uxj/9NQ02qsuv6jeBa6oFvdE IOjqqx2H6AHvJ7+0XM2G+y9qDpLzXkshPt30eFNjcZvBbjRiIyEG4qaXqnFKtEYDbsY0oHMGItpiN Bt5beVxb/N/MyBA0zr7rWASIHyvrcmR96lgApQIwUAYDzHaIeu9TQRVIx6nBBHUDnDTUOMzyHt3SN CYRU/3dQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1e2jpu-0002tj-D5; Thu, 12 Oct 2017 20:12:06 +0000 Received: from mail-pf0-x22e.google.com ([2607:f8b0:400e:c00::22e]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1e2jpp-0002nx-Us for linux-rockchip@lists.infradead.org; Thu, 12 Oct 2017 20:12:03 +0000 Received: by mail-pf0-x22e.google.com with SMTP id z11so6456159pfk.4 for ; Thu, 12 Oct 2017 13:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=q3PwirLEh7wNr9Na9wkG9qQNUz76d5FHfTOhTEY9VjU=; b=LU7anlOp6C2mebudlqos+q/psN0S9hKij4QihU5B9YXuFfd+TUlrGKCNdvY5VH+TTi Yjr0RrnxZ6RbclgtGw00Ph9ZCdGBS983hYnEKjv6rrps8oITTv18ceSGDA5syA+gyF1f Wriu558kIRtT6Wn3akEJDJDUXrg0UhCUxItrQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=q3PwirLEh7wNr9Na9wkG9qQNUz76d5FHfTOhTEY9VjU=; b=nItE2tGC5hd0vodauv464bpI1+9zPnM0t/H0gF3y0/ZT6A5xCmV5xzjGTzLKiteRT7 PXNZnNbPTc6IZXJcyvlB+wPYe2XIuuhMb0G7m+ixWBlpw65747oiCtdnqX/CnFzFoN3E etb2zCZkcDGI2NEzMdhylsDYxkWW94J3qyeou3FaW5vYC/GlqFxhptydUvbKTN6ajHLX 10IqoiDvnRMG0C8hEwvurHTmjboTJyNqTb8rK4eLG7iXn0L7r5hiLuJ3yq9jITuU9Zke jC6bmKEd0O5ge6avsmxUTkY57QgpaNSXYuRDIzNbknxdcQJcdVxAYsn+m/e1SsIp0dnk lqHQ== X-Gm-Message-State: AMCzsaVFWwfJWIlrwfKMT6PvCtJ/EChGrBFI0q/ZuFUWDrntN+4Pz4ae W99CkNoGyQbgu2YCFIYv3kCFUA== X-Google-Smtp-Source: AOwi7QDoqLfYuf0uLXTcB5b9DrtvXYUel2BuExuHqPlwh0RiKn7ewZR07y0mjKknr0nLDLY+8YQQkQ== X-Received: by 10.98.67.217 with SMTP id l86mr3135524pfi.92.1507839101216; Thu, 12 Oct 2017 13:11:41 -0700 (PDT) Received: from tictac.mtv.corp.google.com ([172.22.112.154]) by smtp.gmail.com with ESMTPSA id l3sm29749635pgn.36.2017.10.12.13.11.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Oct 2017 13:11:40 -0700 (PDT) From: Douglas Anderson To: jh80.chung@samsung.com, ulf.hansson@linaro.org, shawn.lin@rock-chips.com Subject: [PATCH v2 2/5] mmc: dw_mmc: Fix the CTO timeout calculation Date: Thu, 12 Oct 2017 13:11:15 -0700 Message-Id: <20171012201118.23570-3-dianders@chromium.org> X-Mailer: git-send-email 2.15.0.rc0.271.g36b669edcc-goog In-Reply-To: <20171012201118.23570-1-dianders@chromium.org> References: <20171012201118.23570-1-dianders@chromium.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20171012_131202_022348_D6DA47F6 X-CRM114-Status: GOOD ( 13.19 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-samsung-soc@vger.kernel.org, kernel@esmil.dk, briannorris@chromium.org, xzy.xu@rock-chips.com, linux-mmc@vger.kernel.org, Douglas Anderson , linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, amstan@chromium.org MIME-Version: 1.0 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP In the commit 03de19212ea3 ("mmc: dw_mmc: introduce timer for broken command transfer over scheme") we tried to calculate the expected hardware command timeout value. Unfortunately that calculation isn't quite correct in all cases. It used "bus_hz" but, as far as I can tell, it's supposed to use the card clock. Let's account for the div value, which is documented as 2x the value stored in the register, or 1 if the register is 0. NOTE: It's not expected that this will actually fix anything important since the 10 ms margin added by the function will pretty much dwarf any calculations. The card clock should be 100 kHz at minimum and: 1000 ms/s * (255 * 2) / 100000 Hz. Gives us 5.1 ms. ...so really the point of this patch is just to make the code more "correct" in case anyone ever tries to remove the 10 ms buffer. Fixes: 03de19212ea3 ("mmc: dw_mmc: introduce timer for broken command transfer over scheme") Tested-by: Emil Renner Berthing Reviewed-by: Shawn Lin Signed-off-by: Douglas Anderson --- Changes in v2: None drivers/mmc/host/dw_mmc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index f5b2bb4b4d98..16516c528a88 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -401,10 +401,14 @@ static u32 dw_mci_prep_stop_abort(struct dw_mci *host, struct mmc_command *cmd) static inline void dw_mci_set_cto(struct dw_mci *host) { unsigned int cto_clks; + unsigned int cto_div; unsigned int cto_ms; cto_clks = mci_readl(host, TMOUT) & 0xff; - cto_ms = DIV_ROUND_UP(cto_clks, host->bus_hz / 1000); + cto_div = (mci_readl(host, CLKDIV) & 0xff) * 2; + if (cto_div == 0) + cto_div = 1; + cto_ms = DIV_ROUND_UP(MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); /* add a bit spare time */ cto_ms += 10;