From patchwork Fri May 24 12:45:34 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rajeshwari Birje X-Patchwork-Id: 246136 X-Patchwork-Delegate: promsoft@gmail.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 DF7172C00AA for ; Fri, 24 May 2013 22:40:13 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 118434A023; Fri, 24 May 2013 14:40:09 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de 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 sgLSsdXUziJa; Fri, 24 May 2013 14:40:08 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 023A64A026; Fri, 24 May 2013 14:40:04 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BEBFA4A026 for ; Fri, 24 May 2013 14:39:49 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de 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 LqmmuGJqH8XU for ; Fri, 24 May 2013 14:39:36 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 BL_NJABL=ERR(-1.5) (only DNSBL check requested) Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by theia.denx.de (Postfix) with ESMTP id 9C1B74A023 for ; Fri, 24 May 2013 14:39:27 +0200 (CEST) Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MNA008HQZ48T4U0@mailout3.samsung.com> for u-boot@lists.denx.de; Fri, 24 May 2013 21:38:32 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.125]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id BB.23.08825.84F5F915; Fri, 24 May 2013 21:38:32 +0900 (KST) X-AuditID: cbfee68e-b7f276d000002279-aa-519f5f48ebfc Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id E6.DE.28381.84F5F915; Fri, 24 May 2013 21:38:32 +0900 (KST) Received: from rajeshwari-linux.sisodomain.com ([107.108.215.115]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MNA005HFZ2HNG70@mmp1.samsung.com>; Fri, 24 May 2013 21:38:32 +0900 (KST) From: Rajeshwari Shinde To: u-boot@lists.denx.de Date: Fri, 24 May 2013 18:15:34 +0530 Message-id: <1369399534-30320-1-git-send-email-rajeshwari.s@samsung.com> X-Mailer: git-send-email 1.7.4.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrFLMWRmVeSWpSXmKPExsWyRsSkVtcjfn6gweRL8hY3rv9ks9i1tYXV 4savNlaLjiMtjBZTDn9hsfi2ZRujxfLXG9kt3u7tZHfg8JjdcJHFY+esu+weCzaVety5tofN 4+ydHYwefVtWMQawRXHZpKTmZJalFunbJXBltP1cz1LwSqBix7lp7A2Mf3i7GDk5JARMJK6c +csEYYtJXLi3nq2LkYtDSGApo0TH+/1sMEUzZm1jgkgsYpQ4NuM4VNVEJonOzfPB2tkEjCS2 npzGCGKLCEhI/Oq/yghSxAzSsW3zA7BRwgJWEs82nAKzWQRUJZ6+X8UCYvMKeEhM2fwO6g4F iWNTv7KCNEsI9LNLnNzRzgzRICDxbfIhoAYOoISsxKYDzBD1khIHV9xgmcAouICRYRWjaGpB ckFxUnqRkV5xYm5xaV66XnJ+7iZGYDif/vesbwfjzQPWhxiTgcZNZJYSTc4HxkNeSbyhsZmR hamJqbGRuaUZacJK4rxqLdaBQgLpiSWp2ampBalF8UWlOanFhxiZODilGhhFZj6envj0x7yt mmfXK+c7Sl5uP1L0RqT8GLf6lYaGCFuGWJ8v5db5C/n625S3PAl383gQ81ZTNI1p+r18iSSe rLIHO1cwqDY0FX4s9zrAfDtF80Hy9/jEb2vuP225vtruNUPMoRfzLr3sXDan96Kub++l5U9D rtzdrfxZ5JdCb0Wjdd7+p5OVWIozEg21mIuKEwHYSJGbfQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOIsWRmVeSWpSXmKPExsVy+t9jAV2P+PmBBic2iFncuP6TzWLX1hZW ixu/2lgtOo60MFpMOfyFxeLblm2MFstfb2S3eLu3k92Bw2N2w0UWj52z7rJ7LNhU6nHn2h42 j7N3djB69G1ZxRjAFtXAaJORmpiSWqSQmpecn5KZl26r5B0c7xxvamZgqGtoaWGupJCXmJtq q+TiE6DrlpkDdJGSQlliTilQKCCxuFhJ3w7ThNAQN10LmMYIXd+QILgeIwM0kLCGMaPt53qW glcCFTvOTWNvYPzD28XIySEhYCIxY9Y2JghbTOLCvfVsXYxcHEICixgljs04DuVMZJLo3Dwf rIpNwEhi68lpjCC2iICExK/+q4wgRcwgHds2P2ADSQgLWEk823AKzGYRUJV4+n4VC4jNK+Ah MWXzO6h1ChLHpn5lncDIvYCRYRWjaGpBckFxUnquoV5xYm5xaV66XnJ+7iZGcLQ8k9rBuLLB 4hCjAAejEg/vDJ15gUKsiWXFlbmHGCU4mJVEeNeFzA8U4k1JrKxKLcqPLyrNSS0+xJgMtH0i s5Rocj4wkvNK4g2NTcxNjU0tTSxMzCxJE1YS5z3Qah0oJJCeWJKanZpakFoEs4WJg1OqgXE3 0+TaeTpvFZx23ZVdeNb6R3Ku//KHLr/LhVwPt4c+Trl9jbEo8KkKY8+5a9oubz8I7r+x5Dhr 3rkLyZ8Zs64KTtgwbd1kR9abaQt2L5xaLcsvaPBZK1LEuldg/uvVm6YILNOdvuL19cWKOn7W p5fLnDnYWST3wUJS5nmn/MvPiUdljkjLnFqgxFKckWioxVxUnAgA1Xj3GdoCAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: u-boot-review@google.com, patches@linaro.org, jh80.chung@samsung.com, afleming@gmail.com Subject: [U-Boot] [PATCH V2] MMC: DWMMC: Fix FIFO_DEPTH calculation X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time for mmc rescan command. In current code FIFO_DEPTH is getting calculated after reading the default FIFOTH register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1). Instead of storing the correct value, we were recalculating the FIFO_DEPT each time which is not correct. Based on "[PATCH V9 3/9] DWMMC: Initialise dwmci and resolve EMMC read write issues" http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/160247 Signed-off-by: Hatim Ali Signed-off-by: Rajeshwari Shinde Acked-by: Simon Glass Tested-by: Simon Glass Acked-by: Jaehoon Chung Acked-by: Andy Fleming --- Changes in V2: - remove fifoth_val local variable - Rebased on top of "[PATCH V9 3/9] DWMMC: Initialise dwmci and resolve EMMC read write issues". drivers/mmc/dw_mmc.c | 14 ++++++-------- 1 files changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c index 1307b12..5da20ed 100644 --- a/drivers/mmc/dw_mmc.c +++ b/drivers/mmc/dw_mmc.c @@ -312,7 +312,7 @@ static void dwmci_set_ios(struct mmc *mmc) static int dwmci_init(struct mmc *mmc) { struct dwmci_host *host = (struct dwmci_host *)mmc->priv; - u32 fifo_size, fifoth_val; + u32 fifo_size; dwmci_writel(host, DWMCI_PWREN, 1); @@ -332,15 +332,13 @@ static int dwmci_init(struct mmc *mmc) dwmci_writel(host, DWMCI_IDINTEN, 0); dwmci_writel(host, DWMCI_BMOD, 1); - fifo_size = dwmci_readl(host, DWMCI_FIFOTH); - fifo_size = ((fifo_size & RX_WMARK_MASK) >> RX_WMARK_SHIFT) + 1; - if (host->fifoth_val) { - fifoth_val = host->fifoth_val; - } else { - fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size / 2 - 1) | + if (!host->fifoth_val) { + fifo_size = dwmci_readl(host, DWMCI_FIFOTH); + fifo_size = ((fifo_size & RX_WMARK_MASK) >> RX_WMARK_SHIFT) + 1; + host->fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size / 2 - 1) | TX_WMARK(fifo_size / 2); } - dwmci_writel(host, DWMCI_FIFOTH, fifoth_val); + dwmci_writel(host, DWMCI_FIFOTH, host->fifoth_val); dwmci_writel(host, DWMCI_CLKENA, 0); dwmci_writel(host, DWMCI_CLKSRC, 0);