Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2921291ybb; Sun, 22 Mar 2020 10:53:07 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuET/4SAU1aT6B0JfgL4F776Om+Q+bz6cBd0pS3x1FosEnnbMuarcpQJO1o3F2CI/v0p+zH X-Received: by 2002:aca:5d83:: with SMTP id r125mr9267632oib.8.1584899587802; Sun, 22 Mar 2020 10:53:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584899587; cv=none; d=google.com; s=arc-20160816; b=XX0UbvaLFlr7GYaAjJLNNxv6qOqv2KIiHi8k5QqneMAtjDnkn85nAIf+9ABWjWiV0n roMoRZxa2O4tQCxALRrz4WuxVkfgw9Y8KN69VN4k75M+sct5pgRj1Q0BBQYwfGsCNJYg KQB421LkGyKSrZVuv53Woc2haOBNeyd6/c20Gva0xu2L+f+4jVor5Xkr4cxP020eExEj aFl17eY0WLs3JnlLq6tX/I7iEb5b1Je3LPOZ7WYRtpusE95eUEsvqmBEghlGPvpeUbEB hLgw/7Cus/z+oX+0blxWTvXSyCViB+HXHMvXqHGQWFW3JUiENNksLaJKNa45CpEMbMmq VtrA== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=Gg9QLaw9Iv0rlykL96dOdbFRFgXM5aRdHcjEiGM4nNI=; b=kUo6/7EtVTWm1ZWTmMWhWXNOMK2aovMwsR8SZoex/7REC7rYlgFM+WoUsQ98XS14y7 EdWMp+RjLK0uqqP6wo1pM1bsSC6ck2iybHQyEOW0A0zltqHK+VnPJoLXVw/eeYQBEkVO mqwXihePgo4lQSPq2FbLHT3vdJ+LtnlOrwvkRU8o/EiKtb6V11JSCq3VCxOqNH/Cm3ra YFhgz6kA1nYrKxOmsZwz14+DqDVqJpxt1jVF4TRf3adRLoD4lvaJD0NlSXSyzq4iJEK2 UEtSz89hQygzgRYGAxaVuGOJk5jgq8GO+3nrMhs4c4MYnm0jlx1V2c5fr9bUvMCvHvMX 6SCA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v18si6444214oth.1.2020.03.22.10.52.56; Sun, 22 Mar 2020 10:53:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726900AbgCVRtx (ORCPT + 99 others); Sun, 22 Mar 2020 13:49:53 -0400 Received: from mail-out.m-online.net ([212.18.0.10]:50645 "EHLO mail-out.m-online.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726502AbgCVRtx (ORCPT ); Sun, 22 Mar 2020 13:49:53 -0400 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 48llQQ1pF4z1rn32; Sun, 22 Mar 2020 18:49:50 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 48llQQ0hnXz1qv4S; Sun, 22 Mar 2020 18:49:50 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id 3-qeDV3uJFOP; Sun, 22 Mar 2020 18:49:48 +0100 (CET) X-Auth-Info: m8gazT5yJHbOX8AVW6gKdokOWg0xO2LJked0Vv1wmZc= Received: from [IPv6:::1] (unknown [195.140.253.167]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Sun, 22 Mar 2020 18:49:48 +0100 (CET) Subject: Re: [PATCH] mtd: rawnand: denali: add more delays before latching incoming data To: Masahiro Yamada Cc: Miquel Raynal , linux-mtd , Richard Weinberger , Vignesh Raghavendra , Linux Kernel Mailing List References: <20200316104307.1891-1-yamada.masahiro@socionext.com> <20200320181159.5004099f@xps13> <2d02c851-4249-053c-99e9-69b209bffad2@denx.de> From: Marek Vasut Message-ID: <727b7c26-a57a-6aec-ebba-57c215a5b901@denx.de> Date: Sun, 22 Mar 2020 18:49:47 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/22/20 6:42 PM, Masahiro Yamada wrote: > On Sat, Mar 21, 2020 at 2:15 AM Marek Vasut wrote: >> >> On 3/20/20 6:11 PM, Miquel Raynal wrote: >>> Hi Marek, >>> >>> Masahiro Yamada wrote on Mon, 16 Mar >>> 2020 19:43:07 +0900: >>> >>>> 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 >>>> --- >>> >>> Can you please give this patch a try and report the result? >> >> It's on my list, don't worry. > > > Preferably, please test v2. Yes, I see the V2.