From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C7FAC433EF for ; Fri, 12 Nov 2021 15:53:18 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C744A60F45 for ; Fri, 12 Nov 2021 15:53:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org C744A60F45 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MsVyzo+0VMb2FqJW6O9swBsgf4JkvuzNbxfz9nScuA0=; b=vAPahkaaQFTB2V 72DKc16AO5QPg52UvhkbE8CmvGQvCkeW0Hpc88mc/c8zGaNROfMXB1pB5nhgY1QImkm1+u5uZ9I46 63+KrSBpA3yKbAxG8ABjaWQw4zNmSP37FuzWQcc9plzmofjuGwzKnetufnATAvMo4vPwP9DMM1feX zZ103VyNd6eLJcKrN9110zDMbDi0sOxzziKR7OZQjtaIdmhLihK174njDH8h+Ql3Pb2SwZAa4KcSK cwgwXZP9fcmfhX82P0YzXlVuDertqn0sCWLidAH2RxjULXzpildSGOWhAl432tiB39W6PcM7xH0LO ACdveJp0NNbyBTqgsfcA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mlYr7-00BAY2-D2; Fri, 12 Nov 2021 15:52:45 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mlYr4-00BAWu-Ew for linux-mtd@lists.infradead.org; Fri, 12 Nov 2021 15:52:44 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 1AF05E000A; Fri, 12 Nov 2021 15:52:37 +0000 (UTC) Date: Fri, 12 Nov 2021 16:52:36 +0100 From: Miquel Raynal To: Herve Codina Cc: Richard Weinberger , Vignesh Raghavendra , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Thomas Petazzoni Subject: Re: [PATCH 4/4] mtd: rawnand: fsmc: Fix timing computation Message-ID: <20211112165236.12d71bc0@xps13> In-Reply-To: <20211112143855.2678989-5-herve.codina@bootlin.com> References: <20211112143855.2678989-1-herve.codina@bootlin.com> <20211112143855.2678989-5-herve.codina@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211112_075242_796780_D1A15B58 X-CRM114-Status: GOOD ( 31.23 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgSGVydmUsCgpoZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20gd3JvdGUgb24gRnJpLCAxMiBOb3Yg MjAyMSAxNTozODo1NSArMDEwMDoKCj4gVGhlIHRpbWluZyBzZXR0aW5nIHdlcmUgaW5jb3JyZWN0 IG9uIHNvbWUgbmFuZHMgbGVhZGluZyB0byBhCj4gZmFsbGJhY2sgdG8gbW9kZSAwIHRpbWluZyBv biBzb21lIE1pY3JvbiBuYW5kIG9yIHRvIGluY29ycmVjdAo+IGRhdGEgcmVhZHMgb24gc29tZSBX aW5ib25kIE5BTkQuCgpJbiBnZW5lcmFsIEkgcHJlZmVyIHdoZW4gYWNyb255bXMgdXNlIHVwcGVy IGNhc2VzIChOQU5EcywgTVRELCBldGMpLgpQbGVhc2UgYWxzbyBkbyB0aGUgY2hhbmdlIGluIHRo ZSBvdGhlciBjb21taXRzLgoKU2F5aW5nICJ0aW1pbmcgc2V0dGluZyB3ZXJlIGluY29ycmVjdCBv biBzb21lIG5hbmRzIiBpcyBpbmFjY3VyYXRlLiBJCnRoaW5rIHdlIGNhbiBjbGVhcmx5IHN0YXRl IHRoYXQgIlVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdGhlCnRpbWluZyBzZXR0aW5ncyBj YWxjdWxhdGVkIGJ5IHRoZSBGU01DIE5BTkQgY29udHJvbGxlciBkcml2ZXIgd2VyZQppbmFjY3Vy YXRlLiIgKG5vIG5lZWQgdG8gcHJlY2lzZSBhIE5BTkQgZGV2aWNlIGhlcmUpLgoKPiBUaGUgdGlt aW5nIGNvbXB1dGF0aW9uIGRpZCBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGZvbGxvd2luZwo+ IGNvbnN0cmFpbnQgZ2l2ZW4gaW4gU1BFQXIzeHggcmVmZXJlbmNlIG1hbnVhbDoKPiAgIHR3YWl0 ID49IHRDRUEgLSB0c2V0KlRDTEsgKyBUT1VUREVMICsgVElOREVMCj4gCj4gVGhpcyBwYXRjaCBh ZGRzIHRoaXMgY29uc3RyYWludCBhbmQgZml4ZXMgdGhlIGlzc3VlcyBvbiBib3RoCgpXZSBnZW5l cmFsbHkgdXNlIHRoZSBkZWNsYXJhdGl2ZSB0ZW5zZSBoZXJlLCBzdWNoIGFzICJBZGQgdGhpcwpj b25zdHJhaW50IGFuZCBmaXhlcy4uLiIgZXZlbiB0aG91Z2ggSSB3b3VsZCBoYXBwaWx5IHJlZm9y bXVsYXRlIHdpdGgKc29tZXRoaW5nIGxpa2UgIkVuaGFuY2UgdGhlIHRpbWluZ3MgY2FsY3VsYXRp b24gYnkgdGFraW5nIGludG8gYWNjb3VudAp0aGlzIGFkZGl0aW9uYWwgY29uc3RyYWludC4iCgpB bmQgdGhlbiB5b3UgY2FuIHByb3ZpZGUgeW91ciByZXN1bHRzLCBob3cgaXQgYmVoYXZlZCB3aXRo IHRoZSB0d28KTkFORHMgYW5kIHdoYXQgaW1wcm92ZW1lbnQgeW91IGJyaW5nIHdpdGggdGhpcyBh ZGRpdGlvbmFsIGNhbGN1bGF0aW9uLgoKPiBuYW5kcyBoYXZpbmcgdGhlIGJvdGggbmFuZHMgd29y a2luZyBhdCBtb2RlIDMgdGltaW5nLgo+IFRoZSBjaGFuZ2UgaGFzIG5vIGltcGFjdCBvbiBzbG93 ZXIgdGltaW5nIG1vZGUgc3VjaCBhcyBtb2RlIDAuCj4gSW5kZWVkLCBvbiBtb2RlIDAgdGltaW5n LCBjb21wdXRlZCB2YWx1ZXMgYXJlIHRoZSBzYW1lIHdpdGggYW5kCj4gd2l0aG91dCB0aGUgcGF0 Y2guCgpBIGZldyB2aXN1YWwgY2hhbmdlcyBleHBsYWluZWQgYmVsb3cgb3RoZXJ3aXNlIHRoZSBs b2dpYyBpcyBmaW5lLgoKPiBTaWduZWQtb2ZmLWJ5OiBIZXJ2ZSBDb2RpbmEgPGhlcnZlLmNvZGlu YUBib290bGluLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvZnNtY19uYW5kLmMg fCAyNyArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE5IGlu c2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRk L25hbmQvcmF3L2ZzbWNfbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvZnNtY19uYW5kLmMK PiBpbmRleCBiZmYwOTIxOWNlM2EuLmEzYWE2NmYzMDg2OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L210ZC9uYW5kL3Jhdy9mc21jX25hbmQuYwo+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L2Zz bWNfbmFuZC5jCj4gQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW50IGZzbWNfY2FsY190aW1p bmdzKHN0cnVjdCBmc21jX25hbmRfZGF0YSAqaG9zdCwKPiAgewo+ICAJdW5zaWduZWQgbG9uZyBo Y2xrID0gY2xrX2dldF9yYXRlKGhvc3QtPmNsayk7Cj4gIAl1bnNpZ25lZCBsb25nIGhjbGtuID0g TlNFQ19QRVJfU0VDIC8gaGNsazsKPiAtCXUzMiB0aGl6LCB0aG9sZCwgdHdhaXQsIHRzZXQ7Cj4g Kwl1MzIgdGhpeiwgdGhvbGQsIHR3YWl0LCB0c2V0LCB0bXA7Cj4gIAo+ICAJaWYgKHNkcnQtPnRS Q19taW4gPCAzMDAwMCkKPiAgCQlyZXR1cm4gLUVPUE5PVFNVUFA7Cj4gQEAgLTMxMCwxMyArMzEw LDYgQEAgc3RhdGljIGludCBmc21jX2NhbGNfdGltaW5ncyhzdHJ1Y3QgZnNtY19uYW5kX2RhdGEg Kmhvc3QsCj4gIAllbHNlIGlmICh0aW1zLT50aG9sZCA+IEZTTUNfVEhPTERfTUFTSykKPiAgCQl0 aW1zLT50aG9sZCA9IEZTTUNfVEhPTERfTUFTSzsKPiAgCj4gLQl0d2FpdCA9IG1heChzZHJ0LT50 UlBfbWluLCBzZHJ0LT50V1BfbWluKTsKPiAtCXRpbXMtPnR3YWl0ID0gRElWX1JPVU5EX1VQKHR3 YWl0IC8gMTAwMCwgaGNsa24pIC0gMTsKPiAtCWlmICh0aW1zLT50d2FpdCA9PSAwKQo+IC0JCXRp bXMtPnR3YWl0ID0gMTsKPiAtCWVsc2UgaWYgKHRpbXMtPnR3YWl0ID4gRlNNQ19UV0FJVF9NQVNL KQo+IC0JCXRpbXMtPnR3YWl0ID0gRlNNQ19UV0FJVF9NQVNLOwo+IC0KPiAgCXRzZXQgPSBtYXgo c2RydC0+dENTX21pbiAtIHNkcnQtPnRXUF9taW4sCj4gIAkJICAgc2RydC0+dENFQV9tYXggLSBz ZHJ0LT50UkVBX21heCk7Cj4gIAl0aW1zLT50c2V0ID0gRElWX1JPVU5EX1VQKHRzZXQgLyAxMDAw LCBoY2xrbikgLSAxOwo+IEBAIC0zMjUsNiArMzE4LDI0IEBAIHN0YXRpYyBpbnQgZnNtY19jYWxj X3RpbWluZ3Moc3RydWN0IGZzbWNfbmFuZF9kYXRhICpob3N0LAo+ICAJZWxzZSBpZiAodGltcy0+ dHNldCA+IEZTTUNfVFNFVF9NQVNLKQo+ICAJCXRpbXMtPnRzZXQgPSBGU01DX1RTRVRfTUFTSzsK PiAgCj4gKwl0d2FpdCA9IG1heChzZHJ0LT50UlBfbWluLCBzZHJ0LT50V1BfbWluKTsKPiArCj4g KwkvKiBBY2NvcmRpbmcgdG8gU1BFQXIzMDAgUmVmZXJlbmNlIE1hbnVhbCAoUk0wMDgyKSB3aGlj aCBnaXZlcyBtb3JlCgogICAgICAgICAgIF4KU2hvdWxkIGJlOgoKCS8qCgkgKiBBY2NvcmRpbmcg dG8uLi4KCj4gKwkgKiBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIEZTTVNDIHRpbWluZ3MgdGhhbiB0 aGUgU1BFQXI2MDAgb25lIChSTTAzMDUpLAo+ICsJICogICB0d2FpdCA+PSB0Q0VBIC0gdHNldCpU Q0xLICsgVE9VVERFTCArIFRJTkRFTAo+ICsJICogV2l0aCBUT1VUREVMID0gN25zIChPdXRwdXQg ZGVsYXkgZnJvbSB0aGUgZmxpcC1mbG9wcyB0byB0aGUgYm9hcmQpCj4gKwkgKiBhbmQgVElOREVM ID0gNW5zIChJbnB1dCBkZWxheSBmcm9tIHRoZSBib2FyZCB0byB0aGUgZmxpcGZsb3ApCgpUaGVz ZSB0d28gaW5mb3JtYXRpb24gc2hvdWxkIGJlIHBsYWNlZCBjbG9zZSB0byBUT1VUREVMIGFuZCBU SU5ERUwKZGVmaW5pdGlvbnMgKHNlZSBteSBjb21tZW50IGJlbG93KS4KCj4gKwkgKi8KPiArCXRt cCA9IHNkcnQtPnRDRUFfbWF4IC0gKHRpbXMtPnRzZXQgKyAxKSpoY2xrbioxMDAwICsgNzAwMCAr IDUwMDA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K VGhlIHN0eWxlIGhlcmUgaXMgd3JvbmcsIHlvdSBuZWVkIHNwYWNlcyBiZWZvcmUgYW5kIGFmdGVy IGEgIioiLgoKUGxlYXNlIGFsc28gZW5jbG9zZSB0aGVzZSB0d28gbXVsdGlwbGljYXRpb25zIHdp dGggcGFyZW50aGVzaXMgdG8gbWFrZQppdCBjbGVhciB0aGF0IHlvdSBkbyBub3QgaW50ZW5kIHRv IG11bHRpcGx5IDcwMDAgbm9yIDUwMDAuCgpGaW5hbGx5LCBkbyBub3QgdXNlIG9wZW4gY29kZWQg dmFsdWVzLCBwbGVhc2UgZGVmaW5lIHRoZW0gYXQgdGhlIHRvcCBzbwp0aGF0IHlvdXIgY29kZSBt YXRjaGVzIHlvdXIgY29tbWl0IG1lc3NhZ2UgKHVzaW5nIFRPVVRERUwgYW5kIFRJTkRFTCkuCllv dSBjYW4gZXZlbiBhZGQgYSBjb21tZW50IGV4cGxhaW5pbmcgZnJvbSB3aGVyZSB5b3UgZ290IHRo ZXNlIHZhbHVlcy4KCj4gKwlpZiAodHdhaXQgPCB0bXApCj4gKwkJdHdhaXQgPSB0bXA7CgpJIGRv bid0IGxpa2UgdGhlIHRtcCBuYW1pbmcsIHlvdSBjb3VsZCBjYWxsIHRoaXMgdmFyaWFibGUgdHdh aXRfbWluIGFuZAp1c2UgYSBtaW4oKSBjYWxjdWxhdGlvbiBoZXJlIHRvIGZpdCB0aGUgbWFudWFs IGJldHRlci4KCj4gKwo+ICsJdGltcy0+dHdhaXQgPSBESVZfUk9VTkRfVVAodHdhaXQgLyAxMDAw LCBoY2xrbikgLSAxOwo+ICsJaWYgKHRpbXMtPnR3YWl0ID09IDApCj4gKwkJdGltcy0+dHdhaXQg PSAxOwo+ICsJZWxzZSBpZiAodGltcy0+dHdhaXQgPiBGU01DX1RXQUlUX01BU0spCj4gKwkJdGlt cy0+dHdhaXQgPSBGU01DX1RXQUlUX01BU0s7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCgoK VGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8DCA9C433F5 for ; Fri, 12 Nov 2021 15:52:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 641A860F45 for ; Fri, 12 Nov 2021 15:52:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234496AbhKLPzd convert rfc822-to-8bit (ORCPT ); Fri, 12 Nov 2021 10:55:33 -0500 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:44379 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229841AbhKLPzb (ORCPT ); Fri, 12 Nov 2021 10:55:31 -0500 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 1AF05E000A; Fri, 12 Nov 2021 15:52:37 +0000 (UTC) Date: Fri, 12 Nov 2021 16:52:36 +0100 From: Miquel Raynal To: Herve Codina Cc: Richard Weinberger , Vignesh Raghavendra , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Thomas Petazzoni Subject: Re: [PATCH 4/4] mtd: rawnand: fsmc: Fix timing computation Message-ID: <20211112165236.12d71bc0@xps13> In-Reply-To: <20211112143855.2678989-5-herve.codina@bootlin.com> References: <20211112143855.2678989-1-herve.codina@bootlin.com> <20211112143855.2678989-5-herve.codina@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Herve, herve.codina@bootlin.com wrote on Fri, 12 Nov 2021 15:38:55 +0100: > The timing setting were incorrect on some nands leading to a > fallback to mode 0 timing on some Micron nand or to incorrect > data reads on some Winbond NAND. In general I prefer when acronyms use upper cases (NANDs, MTD, etc). Please also do the change in the other commits. Saying "timing setting were incorrect on some nands" is inaccurate. I think we can clearly state that "Under certain circumstances, the timing settings calculated by the FSMC NAND controller driver were inaccurate." (no need to precise a NAND device here). > The timing computation did not take into account the following > constraint given in SPEAr3xx reference manual: > twait >= tCEA - tset*TCLK + TOUTDEL + TINDEL > > This patch adds this constraint and fixes the issues on both We generally use the declarative tense here, such as "Add this constraint and fixes..." even though I would happily reformulate with something like "Enhance the timings calculation by taking into account this additional constraint." And then you can provide your results, how it behaved with the two NANDs and what improvement you bring with this additional calculation. > nands having the both nands working at mode 3 timing. > The change has no impact on slower timing mode such as mode 0. > Indeed, on mode 0 timing, computed values are the same with and > without the patch. A few visual changes explained below otherwise the logic is fine. > Signed-off-by: Herve Codina > --- > drivers/mtd/nand/raw/fsmc_nand.c | 27 +++++++++++++++++++-------- > 1 file changed, 19 insertions(+), 8 deletions(-) > > diff --git a/drivers/mtd/nand/raw/fsmc_nand.c b/drivers/mtd/nand/raw/fsmc_nand.c > index bff09219ce3a..a3aa66f30869 100644 > --- a/drivers/mtd/nand/raw/fsmc_nand.c > +++ b/drivers/mtd/nand/raw/fsmc_nand.c > @@ -278,7 +278,7 @@ static int fsmc_calc_timings(struct fsmc_nand_data *host, > { > unsigned long hclk = clk_get_rate(host->clk); > unsigned long hclkn = NSEC_PER_SEC / hclk; > - u32 thiz, thold, twait, tset; > + u32 thiz, thold, twait, tset, tmp; > > if (sdrt->tRC_min < 30000) > return -EOPNOTSUPP; > @@ -310,13 +310,6 @@ static int fsmc_calc_timings(struct fsmc_nand_data *host, > else if (tims->thold > FSMC_THOLD_MASK) > tims->thold = FSMC_THOLD_MASK; > > - twait = max(sdrt->tRP_min, sdrt->tWP_min); > - tims->twait = DIV_ROUND_UP(twait / 1000, hclkn) - 1; > - if (tims->twait == 0) > - tims->twait = 1; > - else if (tims->twait > FSMC_TWAIT_MASK) > - tims->twait = FSMC_TWAIT_MASK; > - > tset = max(sdrt->tCS_min - sdrt->tWP_min, > sdrt->tCEA_max - sdrt->tREA_max); > tims->tset = DIV_ROUND_UP(tset / 1000, hclkn) - 1; > @@ -325,6 +318,24 @@ static int fsmc_calc_timings(struct fsmc_nand_data *host, > else if (tims->tset > FSMC_TSET_MASK) > tims->tset = FSMC_TSET_MASK; > > + twait = max(sdrt->tRP_min, sdrt->tWP_min); > + > + /* According to SPEAr300 Reference Manual (RM0082) which gives more ^ Should be: /* * According to... > + * information related to FSMSC timings than the SPEAr600 one (RM0305), > + * twait >= tCEA - tset*TCLK + TOUTDEL + TINDEL > + * With TOUTDEL = 7ns (Output delay from the flip-flops to the board) > + * and TINDEL = 5ns (Input delay from the board to the flipflop) These two information should be placed close to TOUTDEL and TINDEL definitions (see my comment below). > + */ > + tmp = sdrt->tCEA_max - (tims->tset + 1)*hclkn*1000 + 7000 + 5000; ^ The style here is wrong, you need spaces before and after a "*". Please also enclose these two multiplications with parenthesis to make it clear that you do not intend to multiply 7000 nor 5000. Finally, do not use open coded values, please define them at the top so that your code matches your commit message (using TOUTDEL and TINDEL). You can even add a comment explaining from where you got these values. > + if (twait < tmp) > + twait = tmp; I don't like the tmp naming, you could call this variable twait_min and use a min() calculation here to fit the manual better. > + > + tims->twait = DIV_ROUND_UP(twait / 1000, hclkn) - 1; > + if (tims->twait == 0) > + tims->twait = 1; > + else if (tims->twait > FSMC_TWAIT_MASK) > + tims->twait = FSMC_TWAIT_MASK; > + > return 0; > } > Thanks, Miquèl