Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp1323573ybk; Sun, 10 May 2020 13:12:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwqjbPFS78K2R9vGszIHJaf8jufLffSO0E3pmjDtYOByBaCDw+zk6p058V37rh/Wm48UUOV X-Received: by 2002:a17:906:edd5:: with SMTP id sb21mr880571ejb.204.1589141524442; Sun, 10 May 2020 13:12:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589141524; cv=none; d=google.com; s=arc-20160816; b=cSi7MjNDfEGiNNcoy9XJL70aGr2KHOgBYjmPaW8g9WjgGUxM4FXaizm6MKnX76dLFk d50eI0QwRWjriRAxNlLKvlmAok8vcY9q4wi50mDZ+XhKk6KkQ3sF7eAcPrHzQvfnoSrA 6rwgV8jLtKUCcJlFJO5wd00/MdARDk2B4ikYY2MOqe0VZ3kraikIKx2izeemZVsAo3hy YyZ5owl5D6bkO/ftqLdZiCSmWenN6Dl8JWstbMzX1T5s0CvKufAkuCuNVuIQNIGJkY3k 4BZL3B6iwWGTibSM8DgkaIR5ESw/ahe5DZ0C5/2Uj+OG5wSyRkN034UKrwfJt9BZlJM0 Ji5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=BXb2un4UtJL8AEP6b5Gtjdth6RT46becSNperMDimwU=; b=JnBgkV0ISz+qu1nWddiZsRMuZAAPH2rbapP8UUlqy87cNfZrW+1Z8G4hP+8vB5kKET NJnlD54HVRGOCf0F6CDnsSKZvVYqdr4Hnypsc/3QqU2HK+Vf58XXo4SE+L1x73D8Y+r6 rzFowEOecdRAoup8trlBgT+1+NeOG13sUuu0b5r0uGyHKPo5k7c2PoCCzhihiX0sagyg 7cpAOAUkWRCMXA4KV0XpwCCiPzzdyTqGAaCvhUfMmI6S6cYLVMElEOQqvl3tLDA3Hchl Wku6ywYsG/KhoDc/QTqMKPo3T8kQ5gRecFt/gqVAV+x4BE/+X3GsnKhLksFSrsQferMI /SRw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id oo21si4786783ejb.453.2020.05.10.13.11.41; Sun, 10 May 2020 13:12:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729185AbgEJUGj (ORCPT + 99 others); Sun, 10 May 2020 16:06:39 -0400 Received: from relay6-d.mail.gandi.net ([217.70.183.198]:46221 "EHLO relay6-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728071AbgEJUGj (ORCPT ); Sun, 10 May 2020 16:06:39 -0400 X-Originating-IP: 91.224.148.103 Received: from localhost.localdomain (unknown [91.224.148.103]) (Authenticated sender: miquel.raynal@bootlin.com) by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id DAB47C0007; Sun, 10 May 2020 20:06:36 +0000 (UTC) From: Miquel Raynal To: Masahiro Yamada , linux-mtd@lists.infradead.org Cc: Miquel Raynal , Marek Vasut , Vignesh Raghavendra , Richard Weinberger , linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] mtd: rawnand: denali: add more delays before latching incoming data Date: Sun, 10 May 2020 22:06:35 +0200 Message-Id: <20200510200635.3080-1-miquel.raynal@bootlin.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200317071821.9916-1-yamada.masahiro@socionext.com> References: MIME-Version: 1.0 X-linux-mtd-patch-notification: thanks X-linux-mtd-patch-commit: 5756f2e8dad46eba6e2d3e530243b8eff4dd5a42 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2020-03-17 at 07:18:21 UTC, Masahiro Yamada wrote: > The Denali IP have several registers to specify how many clock cycles > should be waited between falling/rising signals. You can improve the > NAND access performance by programming these registers with optimized > values. > > Because struct nand_sdr_timings represents the device requirement > in pico seconds, denali_setup_data_interface() computes the register > values by dividing the device timings with the clock period. > > Marek Vasut reported this driver in the latest kernel does not work > on his SOCFPGA board. (The on-board NAND chip is mode 5) > > The suspicious parameter is acc_clks, so this commit relaxes it. > > The Denali NAND Flash Memory Controller User's Guide describes this > register as follows: > > acc_clks > signifies the number of bus interface clk_x clock cycles, > controller should wait from read enable going low to sending > out a strobe of clk_x for capturing of incoming data. > > Currently, acc_clks is calculated only based on tREA, the delay on the > chip side. This does not include additional delays that come from the > data path on the PCB and in the SoC, load capacity of the pins, etc. > > This relatively becomes a big factor on faster timing modes like mode 5. > > Before supporting the ->setup_data_interface() hook (e.g. Linux 4.12), > the Denali driver hacks acc_clks in a couple of ways [1] [2] to support > the timing mode 5. > > We would not go back to the hard-coded acc_clks, but we need to include > this factor into the delay somehow. Let's say the amount of the additional > delay is 10000 pico sec. > > In the new calculation, acc_clks is determined by timings->tREA_max + > data_setup_on_host. > > Also, prolong the RE# low period to make sure the data hold is met. > > Finally, re-center the data latch timing for extra safety. > > [1] https://github.com/torvalds/linux/blob/v4.12/drivers/mtd/nand/denali.c#L276 > [2] https://github.com/torvalds/linux/blob/v4.12/drivers/mtd/nand/denali.c#L282 > > Reported-by: Marek Vasut > Signed-off-by: Masahiro Yamada > Tested-by: Marek Vasut Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks. Miquel