From patchwork Fri Jun 26 09:00:11 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roy Spliet X-Patchwork-Id: 488653 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49A1114010F for ; Fri, 26 Jun 2015 19:02:39 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Z8PVF-0004WD-4S; Fri, 26 Jun 2015 09:00:53 +0000 Received: from mail-yk0-f171.google.com ([209.85.160.171]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Z8PV7-0004RF-CM for linux-mtd@lists.infradead.org; Fri, 26 Jun 2015 09:00:47 +0000 Received: by ykdy1 with SMTP id y1so53469498ykd.2 for ; Fri, 26 Jun 2015 02:00:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:to:cc:subject:date:message-id :in-reply-to:references:content-type; bh=ln6yA/1Nbdtw1WiGD8qdEzQmfcVXj296LROq8+PDMLg=; b=j8MA7poJn6LpFQdYE0nbxMyoEVKwHL2+eAmrYuQyczUuQdYUu/2mUVj8737JyL/LqY k22fiZjmNX5Qxmcj7VTLIcTKggNUoZzYUCh0JwmoNEAmmiUhBCJqXVD2OfEBXzuvmabu /HFOgKqmdVn8GRIftaQZuGvhkrt+58hBr4eAOc6jGf7JSRSUfD+Gm472PIum9eLKoHGc /wL7+odoKcQm+6emGXUtTICOS/QYKbs8JqKOvG/zkLenrS2VSTTnb8XkRXlFWXQW0gXI J2z97cZOCiLSWbmfCuVw23XsrDZJ41XK/7Oik05S2j1oHfEkMGUOrLDA5Fss51r0ZOh+ /nbA== X-Gm-Message-State: ALoCoQk39k0/mQBvKuDfrf/XG7nMiVPsD54NeG26Hb8hfHzmhXmu9VvzcLzQn7bZ7pPNQnbvjL8ahmdai7hs2SDa/VTscjpjpAOrBDeTlCS9+rhmcNXMexAkJZ5p/lfdWf1Z2cghONwv MIME-Version: 1.0 X-Received: by 10.170.206.139 with SMTP id x133mr659564yke.126.1435309223784; Fri, 26 Jun 2015 02:00:23 -0700 (PDT) Received: from Seven.fritz.box (a83-163-237-212.adsl.xs4all.nl. [83.163.237.212]) by mx.google.com with ESMTPSA id v3sm1975803yha.56.2015.06.26.02.00.21 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 26 Jun 2015 02:00:23 -0700 (PDT) From: Roy Spliet To: Brian Norris , Linux MTD , Linux ARM kernel , Linux sunxi Subject: [PATCH v5 2/2] mtd: nand: sunxi: Set serial access mode correctly Date: Fri, 26 Jun 2015 11:00:11 +0200 Message-Id: <1435309211-15236-2-git-send-email-r.spliet@ultimaker.com> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1435309211-15236-1-git-send-email-r.spliet@ultimaker.com> References: <1435309211-15236-1-git-send-email-r.spliet@ultimaker.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150626_020045_503283_1CF1F899 X-CRM114-Status: GOOD ( 16.28 ) X-Spam-Score: -1.9 (-) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-1.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [209.85.160.171 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.160.171 listed in wl.mailspike.net] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: Boris Brezillon , Maxime Ripard , David Woodhouse , Roy Spliet X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Replaces the hard coded "always use EDO" policy with that prescribed by the ONFI 3.1 specification that EDO mode should always be used if tRC is below 30ns. Signed-off-by: Roy Spliet Acked-by: Boris Brezillon --- V4: - Simplify by pre-calculating the entire timing CTL register value --- drivers/mtd/nand/sunxi_nand.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/nand/sunxi_nand.c b/drivers/mtd/nand/sunxi_nand.c index 663e331..f97a58d 100644 --- a/drivers/mtd/nand/sunxi_nand.c +++ b/drivers/mtd/nand/sunxi_nand.c @@ -99,6 +99,9 @@ NFC_CMD_INT_ENABLE | \ NFC_DMA_INT_ENABLE) +/* define bit use in NFC_TIMING_CTL */ +#define NFC_TIMING_CTL_EDO BIT(8) + /* define NFC_TIMING_CFG register layout */ #define NFC_TIMING_CFG(tWB, tADL, tWHR, tRHW, tCAD) \ (((tWB) & 0x3) | (((tADL) & 0x3) << 2) | \ @@ -225,6 +228,7 @@ struct sunxi_nand_chip { struct mtd_info mtd; unsigned long clk_rate; u32 timing_cfg; + u32 timing_ctl; int selected; int nsels; struct sunxi_nand_chip_sel sels[0]; @@ -411,6 +415,7 @@ static void sunxi_nfc_select_chip(struct mtd_info *mtd, int chip) } } + writel(sunxi_nand->timing_ctl, nfc->regs + NFC_REG_TIMING_CTL); writel(sunxi_nand->timing_cfg, nfc->regs + NFC_REG_TIMING_CFG); writel(ctl, nfc->regs + NFC_REG_CTL); @@ -940,6 +945,13 @@ static int sunxi_nand_chip_set_timings(struct sunxi_nand_chip *chip, /* TODO: A83 has some more bits for CDQSS, CS, CLHZ, CCS, WC */ chip->timing_cfg = NFC_TIMING_CFG(tWB, tADL, tWHR, tRHW, tCAD); + /* + * ONFI specification 3.1, paragraph 4.15.2 dictates that EDO data + * output cycle timings shall be used if the host drives tRC less than + * 30 ns. + */ + chip->timing_ctl = (timings->tRC_min < 30000) ? NFC_TIMING_CTL_EDO : 0; + /* Convert min_clk_period from picoseconds to nanoseconds */ min_clk_period = DIV_ROUND_UP(min_clk_period, 1000); @@ -1441,11 +1453,6 @@ static int sunxi_nfc_probe(struct platform_device *pdev) platform_set_drvdata(pdev, nfc); - /* - * TODO: replace this magic value with EDO flag - */ - writel(0x100, nfc->regs + NFC_REG_TIMING_CTL); - ret = sunxi_nand_chips_init(dev, nfc); if (ret) { dev_err(dev, "failed to init nand chips\n");