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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 1045ED41C33 for ; Wed, 13 Nov 2024 10:51:15 +0000 (UTC) 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:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=n9krq3m4FoG18G8USlH0+2tPzTtFOQDGiQbfrvC+ZN8=; b=ToV6NSkwD8iMjd yvY9frcik0LxORI6axnCOO9LgixeZpafLHhbdBF1riI/mrJnFiNyBKXiqPR3GUCvi8kChPDwy28tl DMhw/8ljhw3iR8SlZlt04eRC1exjrpAoRsK10yTQkw62mFY7uY7ex9OpX56RFU6JLRLsE5dQCrIsH oUORaDKvIC8I1rSYt6yG+dH+pdUXKoTRZQDxCLCYmjqidyZ77IJtT5oTClBvEXpHzIPBv6RCNwcKY Wq25mDW7JcNZkTXsN5IYfoJwbjQnkAZmsF07DjIHcbjZWg88tAdw9RXfe8TJfjRQ3XroXur4I+PhW wpEFPNwmHnIaqNLFWItQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tBAxs-00000006VAR-2SCF; Wed, 13 Nov 2024 10:51:12 +0000 Received: from relay9-d.mail.gandi.net ([217.70.183.199]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tBAxo-00000006V9U-2q1v for linux-mtd@lists.infradead.org; Wed, 13 Nov 2024 10:51:10 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 722D3FF804; Wed, 13 Nov 2024 10:51:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1731495067; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eYWZPVVVV6V1rZ324Ef1ERBrFxYXBHi1oVVo68XQUI8=; b=FDzap8znhyS5/pEZwZ1oe8y2w5kclHAYObOp1VctjcT7Oc3+9MdSykiyVS0qfHRsg+RW2t 4iCrj+4pfzTK1wXjiIjNGzNfCAVe8SA/l2RbegcQC1mEpbP0DbrtwFLitT8vMUYfP5cj36 yyU6SwOaiGRwFpG0ckVliAhC+hN4dZ+GIneL9ky5uWQFJNYHAOHbgwxBlilGMHLsQ8xMnh neSLFCEWXcA05ja57KvGiLrc/I5jbRw5P1w+Ot4qJN+EGL5C2MNAa9Z8usPgSO1ht1VMQk eSwMfB97VuFtpq95xkacnNmEUAf8Kg30K/hBM8BCyzaz+4wfpujFr5lLXuQAsw== From: Miquel Raynal To: Bastien Curutchet Cc: Santosh Shilimkar , Krzysztof Kozlowski , Richard Weinberger , Vignesh Raghavendra , linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, Thomas Petazzoni , Herve Codina , Christopher Cordahi Subject: Re: [PATCH v3 1/7] memory: ti-aemif: Create aemif_check_cs_timings() In-Reply-To: <20241113094938.44817-2-bastien.curutchet@bootlin.com> (Bastien Curutchet's message of "Wed, 13 Nov 2024 10:49:32 +0100") References: <20241113094938.44817-1-bastien.curutchet@bootlin.com> <20241113094938.44817-2-bastien.curutchet@bootlin.com> User-Agent: mu4e 1.12.1; emacs 29.4 Date: Wed, 13 Nov 2024 11:51:06 +0100 Message-ID: <87ldxnqued.fsf@bootlin.com> MIME-Version: 1.0 X-GND-Sasl: miquel.raynal@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241113_025109_003915_BC10B068 X-CRM114-Status: GOOD ( 26.72 ) 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 SGkgQmFzdGllbiwKCk9uIDEzLzExLzIwMjQgYXQgMTA6NDk6MzIgKzAxLCBCYXN0aWVuIEN1cnV0 Y2hldCA8YmFzdGllbi5jdXJ1dGNoZXRAYm9vdGxpbi5jb20+IHdyb3RlOgoKPiBhZW1pZl9jYWxj X3JhdGUoKSBjaGVjayB0aGUgdmFsaWRpdHkgb2YgYSBuZXcgY29tcHV0ZWQgdGltaW5nIGFnYWlu c3QgYQo+ICdtYXgnIHZhbHVlIGdpdmVuIGFzIGlucHV0LiBUaGlzIGlzbid0IGNvbnZlbmllbnQg aWYgd2Ugd2FudCB0byBjaGVjawo+IHRoZSBDUyB0aW1pbmcgY29uZmlndXJhdGlvbiBzb21ld2hl cmUgZWxzZSBpbiB0aGUgY29kZS4KPgo+IFdyYXAgdGhlIHZlcmlmaWNhdGlvbiBvZiBhbGwgdGhl IGNoaXAgc2VsZWN0J3MgdGltaW5nIGNvbmZpZ3VyYXRpb24gaW50byBhCj4gc2luZ2xlIGZ1bmN0 aW9uIHRvIGVhc2UgaXRzIGV4cG9ydGF0aW9uIGluIHVwY29taW5nIHBhdGNoZXMuCj4gUmVtb3Zl IHRoZSAnbWF4JyBpbnB1dCBmcm9tIGFlbWlmX2NhbGNfcmF0ZSgpIGFzIGl0J3Mgbm8gbG9uZ2Vy IHVzZWQuCgpJIHdvdWxkIHNwbGl0IHRoaXMgY29tbWl0IGludG8gdHdvIHNlcGFyYXRlIHNtYWxs ZXIgY2h1bmtzLiBGaXJzdCwgeW91CnVzZSBhIHRpbWluZ3Mgc3RydWN0dXJlICh3aGljaCBpcyBh IGdvb2QgaWRlYSksIGFuZCBzZWNvbmQgeW91CmV4dHJhY3QvY2xhcmlmeSB0aGUgdGltaW5nIGNo ZWNrcy4gVGhpcyBpcyB0d28gZGlmZmVyZW50ICJmZWF0dXJlcyIgSU1PLgoKPiBTaWduZWQtb2Zm LWJ5OiBCYXN0aWVuIEN1cnV0Y2hldCA8YmFzdGllbi5jdXJ1dGNoZXRAYm9vdGxpbi5jb20+Cj4g LS0tCj4gIGRyaXZlcnMvbWVtb3J5L3RpLWFlbWlmLmMgfCA4OSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyks IDIwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVtb3J5L3RpLWFlbWlm LmMgYi9kcml2ZXJzL21lbW9yeS90aS1hZW1pZi5jCj4gaW5kZXggZDU0ZGMzY2ZmZjczLi5lZWYw ODZjODM3MWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZW1vcnkvdGktYWVtaWYuYwo+ICsrKyBi L2RyaXZlcnMvbWVtb3J5L3RpLWFlbWlmLmMKPiBAQCAtMTA3LDYgKzEwNywyNyBAQCBzdHJ1Y3Qg YWVtaWZfY3NfZGF0YSB7Cj4gIAl1OAlhc2l6ZTsKPiAgfTsKPiAgCj4gKy8qKgo+ICsgKiBzdHJ1 Y3QgYWVtaWZfY3NfdGltaW5nczogc3RydWN0dXJlIHRvIGhvbGQgQ1MgdGltaW5nIGNvbmZpZ3Vy YXRpb24KPiArICogdmFsdWVzIGFyZSBleHByZXNzZWQgaW4gbnVtYmVyIG9mIGNsb2NrIGN5Y2xl cyAtIDEKPiArICogQHRhOiBtaW5pbXVtIHR1cm4gYXJvdW5kIHRpbWUKPiArICogQHJob2xkOiBy ZWFkIGhvbGQgd2lkdGgKPiArICogQHJzdHJvYmU6IHJlYWQgc3Ryb2JlIHdpZHRoCj4gKyAqIEBy c2V0dXA6IHJlYWQgc2V0dXAgd2lkdGgKPiArICogQHdob2xkOiB3cml0ZSBob2xkIHdpZHRoCj4g KyAqIEB3c3Ryb2JlOiB3cml0ZSBzdHJvYmUgd2lkdGgKPiArICogQHdzZXR1cDogd3JpdGUgc2V0 dXAgd2lkdGgKPiArICovCj4gK3N0cnVjdCBhZW1pZl9jc190aW1pbmdzIHsKPiArCXUzMgl0YTsK PiArCXUzMglyaG9sZDsKPiArCXUzMglyc3Ryb2JlOwo+ICsJdTMyCXJzZXR1cDsKPiArCXUzMgl3 aG9sZDsKPiArCXUzMgl3c3Ryb2JlOwo+ICsJdTMyCXdzZXR1cDsKPiArfTsKPiArCj4gIC8qKgo+ ICAgKiBzdHJ1Y3QgYWVtaWZfZGV2aWNlOiBzdHJ1Y3R1cmUgdG8gaG9sZCBkZXZpY2UgZGF0YQo+ ICAgKiBAYmFzZTogYmFzZSBhZGRyZXNzIG9mIEFFTUlGIHJlZ2lzdGVycwo+IEBAIC0xMjUsMTgg KzE0Niw0OCBAQCBzdHJ1Y3QgYWVtaWZfZGV2aWNlIHsKPiAgCXN0cnVjdCBhZW1pZl9jc19kYXRh IGNzX2RhdGFbTlVNX0NTXTsKPiAgfTsKPiAgCj4gKy8qKgo+ICsgKiBhZW1pZl9jaGVja19jc190 aW1pbmdzIC0gQ2hlY2sgdGhlIHZhbGlkaXR5IG9mIGEgQ1MgdGltaW5nIGNvbmZpZ3VyYXRpb24u Cj4gKyAqIEB0aW1pbmdzOiB0aW1pbmdzIGNvbmZpZ3VyYXRpb24KPiArICoKPiArICogQHJldHVy bjogMCBpZiB0aGUgdGltaW5nIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWQsIG5lZ2F0aXZlIGVycm5v Cj4gb3RoZXJ3aXNlLgoKSSB0aGlua3MgZXJybm8gaXMgYSBiaXQgY29ubm90ZWQgInVzZXJzcGFj ZSIsIGhlcmUgeW91IHJldHVybiBhCiJuZWdhdGl2ZSBlcnJvciBudW1iZXIiLgoKPiArICovCj4g K3N0YXRpYyBpbnQgYWVtaWZfY2hlY2tfY3NfdGltaW5ncyhzdHJ1Y3QgYWVtaWZfY3NfdGltaW5n cyAqdGltaW5ncykKPiArewo+ICsJaWYgKHRpbWluZ3MtPnRhID4gVEFfTUFYKQo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsKPiArCWlmICh0aW1pbmdzLT5yaG9sZCA+IFJIT0xEX01BWCkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAodGltaW5ncy0+cnN0cm9iZSA+IFJTVFJPQkVfTUFY KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmICh0aW1pbmdzLT5yc2V0dXAgPiBSU0VU VVBfTUFYKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmICh0aW1pbmdzLT53aG9sZCA+ IFdIT0xEX01BWCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAodGltaW5ncy0+d3N0 cm9iZSA+IFdTVFJPQkVfTUFYKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmICh0aW1p bmdzLT53c2V0dXAgPiBXU0VUVVBfTUFYKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogYWVtaWZfY2FsY19yYXRlIC0gY2FsY3VsYXRl IHRpbWluZyBkYXRhLgo+ICAgKiBAcGRldjogcGxhdGZvcm0gZGV2aWNlIHRvIGNhbGN1bGF0ZSBm b3IKPiAgICogQHdhbnRlZDogVGhlIGN5Y2xlIHRpbWUgbmVlZGVkIGluIG5hbm9zZWNvbmRzLgo+ ICAgKiBAY2xrOiBUaGUgaW5wdXQgY2xvY2sgcmF0ZSBpbiBrSHouCj4gLSAqIEBtYXg6IFRoZSBt YXhpbXVtIGRpdmlkZXIgdmFsdWUgdGhhdCBjYW4gYmUgcHJvZ3JhbW1lZC4KPiAgICoKPiAgICog T24gc3VjY2VzcywgcmV0dXJucyB0aGUgY2FsY3VsYXRlZCB0aW1pbmcgdmFsdWUgbWludXMgMSBm b3IgZWFzeQo+ICAgKiBwcm9ncmFtbWluZyBpbnRvIEFFTUlGIHRpbWluZyByZWdpc3RlcnMsIGVs c2UgbmVnYXRpdmUgZXJybm8uCj4gICAqLwo+IC1zdGF0aWMgaW50IGFlbWlmX2NhbGNfcmF0ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgd2FudGVkLAo+IC0JCQkgICB1bnNpZ25l ZCBsb25nIGNsaywgaW50IG1heCkKPiArc3RhdGljIGludCBhZW1pZl9jYWxjX3JhdGUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IHdhbnRlZCwgdW5zaWduZWQgbG9uZyBjbGspCj4g IHsKPiAgCWludCByZXN1bHQ7Cj4gIAo+IEBAIC0xNDksMTAgKzIwMCw2IEBAIHN0YXRpYyBpbnQg YWVtaWZfY2FsY19yYXRlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCB3YW50ZWQs Cj4gIAlpZiAocmVzdWx0IDwgMCkKPiAgCQlyZXN1bHQgPSAwOwo+ICAKPiAtCS8qIC4uLiBCdXQg Y29uZmlndXJpbmcgdGlnaHRlciB0aW1pbmdzIGlzIG5vdCBhbiBvcHRpb24uICovCj4gLQllbHNl IGlmIChyZXN1bHQgPiBtYXgpCj4gLQkJcmVzdWx0ID0gLUVJTlZBTDsKPiAtCj4gIAlyZXR1cm4g cmVzdWx0Owo+ICB9Cj4gIAo+IEBAIC0xNzQsMzAgKzIyMSwzMiBAQCBzdGF0aWMgaW50IGFlbWlm X2NvbmZpZ19hYnVzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBjc251bSkKPiAg ewo+ICAJc3RydWN0IGFlbWlmX2RldmljZSAqYWVtaWYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShw ZGV2KTsKPiAgCXN0cnVjdCBhZW1pZl9jc19kYXRhICpkYXRhID0gJmFlbWlmLT5jc19kYXRhW2Nz bnVtXTsKPiAtCWludCB0YSwgcmhvbGQsIHJzdHJvYmUsIHJzZXR1cCwgd2hvbGQsIHdzdHJvYmUs IHdzZXR1cDsKPiAgCXVuc2lnbmVkIGxvbmcgY2xrX3JhdGUgPSBhZW1pZi0+Y2xrX3JhdGU7Cj4g KwlzdHJ1Y3QgYWVtaWZfY3NfdGltaW5ncyB0aW1pbmdzOwoKVGhpcyBpcyBhIG1hdHRlciBvZiB0 YXN0ZSwgYnV0IGV2ZW4gdGhvdWdoIHlvdSBmdWxseSBpbml0aWFsaXplIHRoZQpzdHJ1Y3R1cmUg YmVsb3cgKnRvZGF5KiwgSSdkIGJlIGZ1dHVyZS1wcm9vZiBieSByZXNldHRpbmcgdGhlIHN0cnVj dHVyZQpoZXJlOgoKCXN0cnVjdCBhZW1pZl9jc190aW1pbmdzIHRpbWluZ3MgPSB7fTsKCj4gIAl1 bnNpZ25lZCBvZmZzZXQ7Cj4gIAl1MzIgc2V0LCB2YWw7Cj4gKwlpbnQgcmV0Owo+ICAKPiAgCW9m ZnNldCA9IEExQ1JfT0ZGU0VUICsgKGRhdGEtPmNzIC0gYWVtaWYtPmNzX29mZnNldCkgKiA0Owo+ ICAKPiAtCXRhCT0gYWVtaWZfY2FsY19yYXRlKHBkZXYsIGRhdGEtPnRhLCBjbGtfcmF0ZSwgVEFf TUFYKTsKPiAtCXJob2xkCT0gYWVtaWZfY2FsY19yYXRlKHBkZXYsIGRhdGEtPnJob2xkLCBjbGtf cmF0ZSwgUkhPTERfTUFYKTsKPiAtCXJzdHJvYmUJPSBhZW1pZl9jYWxjX3JhdGUocGRldiwgZGF0 YS0+cnN0cm9iZSwgY2xrX3JhdGUsIFJTVFJPQkVfTUFYKTsKPiAtCXJzZXR1cAk9IGFlbWlmX2Nh bGNfcmF0ZShwZGV2LCBkYXRhLT5yc2V0dXAsIGNsa19yYXRlLCBSU0VUVVBfTUFYKTsKPiAtCXdo b2xkCT0gYWVtaWZfY2FsY19yYXRlKHBkZXYsIGRhdGEtPndob2xkLCBjbGtfcmF0ZSwgV0hPTERf TUFYKTsKPiAtCXdzdHJvYmUJPSBhZW1pZl9jYWxjX3JhdGUocGRldiwgZGF0YS0+d3N0cm9iZSwg Y2xrX3JhdGUsIFdTVFJPQkVfTUFYKTsKPiAtCXdzZXR1cAk9IGFlbWlmX2NhbGNfcmF0ZShwZGV2 LCBkYXRhLT53c2V0dXAsIGNsa19yYXRlLCBXU0VUVVBfTUFYKTsKPiArCXRpbWluZ3MudGEgPSBh ZW1pZl9jYWxjX3JhdGUocGRldiwgZGF0YS0+dGEsIGNsa19yYXRlKTsKPiArCXRpbWluZ3Mucmhv bGQgPSBhZW1pZl9jYWxjX3JhdGUocGRldiwgZGF0YS0+cmhvbGQsIGNsa19yYXRlKTsKPiArCXRp bWluZ3MucnN0cm9iZSA9IGFlbWlmX2NhbGNfcmF0ZShwZGV2LCBkYXRhLT5yc3Ryb2JlLCBjbGtf cmF0ZSk7Cj4gKwl0aW1pbmdzLnJzZXR1cCA9IGFlbWlmX2NhbGNfcmF0ZShwZGV2LCBkYXRhLT5y c2V0dXAsIGNsa19yYXRlKTsKPiArCXRpbWluZ3Mud2hvbGQgPSBhZW1pZl9jYWxjX3JhdGUocGRl diwgZGF0YS0+d2hvbGQsIGNsa19yYXRlKTsKPiArCXRpbWluZ3Mud3N0cm9iZSA9IGFlbWlmX2Nh bGNfcmF0ZShwZGV2LCBkYXRhLT53c3Ryb2JlLCBjbGtfcmF0ZSk7Cj4gKwl0aW1pbmdzLndzZXR1 cCA9IGFlbWlmX2NhbGNfcmF0ZShwZGV2LCBkYXRhLT53c2V0dXAsIGNsa19yYXRlKTsKPiAgCj4g LQlpZiAodGEgPCAwIHx8IHJob2xkIDwgMCB8fCByc3Ryb2JlIDwgMCB8fCByc2V0dXAgPCAwIHx8 Cj4gLQkgICAgd2hvbGQgPCAwIHx8IHdzdHJvYmUgPCAwIHx8IHdzZXR1cCA8IDApIHsKPiArCXJl dCA9IGFlbWlmX2NoZWNrX2NzX3RpbWluZ3MoJnRpbWluZ3MpOwo+ICsJaWYgKHJldCkgewo+ICAJ CWRldl9lcnIoJnBkZXYtPmRldiwgIiVzOiBjYW5ub3QgZ2V0IHN1aXRhYmxlIHRpbWluZ3NcbiIs Cj4gIAkJCV9fZnVuY19fKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiArCQlyZXR1cm4gcmV0Owo+ ICAJfQo+ICAKPiAtCXNldCA9IFRBKHRhKSB8IFJIT0xEKHJob2xkKSB8IFJTVFJPQkUocnN0cm9i ZSkgfCBSU0VUVVAocnNldHVwKSB8Cj4gLQkJV0hPTEQod2hvbGQpIHwgV1NUUk9CRSh3c3Ryb2Jl KSB8IFdTRVRVUCh3c2V0dXApOwo+ICsJc2V0ID0gVEEodGltaW5ncy50YSkgfAo+ICsJCVJIT0xE KHRpbWluZ3MucmhvbGQpIHwgUlNUUk9CRSh0aW1pbmdzLnJzdHJvYmUpIHwgUlNFVFVQKHRpbWlu Z3MucnNldHVwKSB8Cj4gKwkJV0hPTEQodGltaW5ncy53aG9sZCkgfCBXU1RST0JFKHRpbWluZ3Mu d3N0cm9iZSkgfCBXU0VUVVAodGltaW5ncy53c2V0dXApOwo+ICAKPiAgCXNldCB8PSAoZGF0YS0+ YXNpemUgJiBBQ1JfQVNJWkVfTUFTSyk7Cj4gIAlpZiAoZGF0YS0+ZW5hYmxlX2V3KQoKT3RoZXJ3 aXNlIGxndG0uCgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxp c3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQv Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E5682230984 for ; Wed, 13 Nov 2024 10:51:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.199 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731495071; cv=none; b=nMPLBkZb15TIf0Xj0G3MkbTPdMRxwd0QlbcG3Ph3qmBRHHVqDPPpyPFt/NB8hsKsXiQfKEuqaKScCFmlZJZObyWPVSy9wiQ8DInQEe/e+m+IIi6ql4WFuK/QGq5r+UIEsUvh7kV6bNRTpLVOv7IukfPxUpobnwP9qyN5oYTF+QQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731495071; c=relaxed/simple; bh=stswml9YN9ctXU03Q+UU02ykU4gZ8JfMJThZTi1WTzM=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=QmrAu2ORMihgnkwA9OfG9JTicEuy51Ekwj2alQSs7hpBYsc1wFZtXAeFWdDG4ddyLd9XNEuplwHYaDpshem3IP783VdSrI/YLv8WIyYxp6ARFcu7fb28R9MYTRyeEgHjUy3atvcMsa91gGQZsUMY/W5eBntAN1Xp5smiyOkerAA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=FDzap8zn; arc=none smtp.client-ip=217.70.183.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="FDzap8zn" Received: by mail.gandi.net (Postfix) with ESMTPSA id 722D3FF804; Wed, 13 Nov 2024 10:51:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1731495067; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eYWZPVVVV6V1rZ324Ef1ERBrFxYXBHi1oVVo68XQUI8=; b=FDzap8znhyS5/pEZwZ1oe8y2w5kclHAYObOp1VctjcT7Oc3+9MdSykiyVS0qfHRsg+RW2t 4iCrj+4pfzTK1wXjiIjNGzNfCAVe8SA/l2RbegcQC1mEpbP0DbrtwFLitT8vMUYfP5cj36 yyU6SwOaiGRwFpG0ckVliAhC+hN4dZ+GIneL9ky5uWQFJNYHAOHbgwxBlilGMHLsQ8xMnh neSLFCEWXcA05ja57KvGiLrc/I5jbRw5P1w+Ot4qJN+EGL5C2MNAa9Z8usPgSO1ht1VMQk eSwMfB97VuFtpq95xkacnNmEUAf8Kg30K/hBM8BCyzaz+4wfpujFr5lLXuQAsw== From: Miquel Raynal To: Bastien Curutchet Cc: Santosh Shilimkar , Krzysztof Kozlowski , Richard Weinberger , Vignesh Raghavendra , linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, Thomas Petazzoni , Herve Codina , Christopher Cordahi Subject: Re: [PATCH v3 1/7] memory: ti-aemif: Create aemif_check_cs_timings() In-Reply-To: <20241113094938.44817-2-bastien.curutchet@bootlin.com> (Bastien Curutchet's message of "Wed, 13 Nov 2024 10:49:32 +0100") References: <20241113094938.44817-1-bastien.curutchet@bootlin.com> <20241113094938.44817-2-bastien.curutchet@bootlin.com> User-Agent: mu4e 1.12.1; emacs 29.4 Date: Wed, 13 Nov 2024 11:51:06 +0100 Message-ID: <87ldxnqued.fsf@bootlin.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-GND-Sasl: miquel.raynal@bootlin.com Hi Bastien, On 13/11/2024 at 10:49:32 +01, Bastien Curutchet wrote: > aemif_calc_rate() check the validity of a new computed timing against a > 'max' value given as input. This isn't convenient if we want to check > the CS timing configuration somewhere else in the code. > > Wrap the verification of all the chip select's timing configuration into a > single function to ease its exportation in upcoming patches. > Remove the 'max' input from aemif_calc_rate() as it's no longer used. I would split this commit into two separate smaller chunks. First, you use a timings structure (which is a good idea), and second you extract/clarify the timing checks. This is two different "features" IMO. > Signed-off-by: Bastien Curutchet > --- > drivers/memory/ti-aemif.c | 89 ++++++++++++++++++++++++++++++--------- > 1 file changed, 69 insertions(+), 20 deletions(-) > > diff --git a/drivers/memory/ti-aemif.c b/drivers/memory/ti-aemif.c > index d54dc3cfff73..eef086c8371b 100644 > --- a/drivers/memory/ti-aemif.c > +++ b/drivers/memory/ti-aemif.c > @@ -107,6 +107,27 @@ struct aemif_cs_data { > u8 asize; > }; >=20=20 > +/** > + * struct aemif_cs_timings: structure to hold CS timing configuration > + * values are expressed in number of clock cycles - 1 > + * @ta: minimum turn around time > + * @rhold: read hold width > + * @rstrobe: read strobe width > + * @rsetup: read setup width > + * @whold: write hold width > + * @wstrobe: write strobe width > + * @wsetup: write setup width > + */ > +struct aemif_cs_timings { > + u32 ta; > + u32 rhold; > + u32 rstrobe; > + u32 rsetup; > + u32 whold; > + u32 wstrobe; > + u32 wsetup; > +}; > + > /** > * struct aemif_device: structure to hold device data > * @base: base address of AEMIF registers > @@ -125,18 +146,48 @@ struct aemif_device { > struct aemif_cs_data cs_data[NUM_CS]; > }; >=20=20 > +/** > + * aemif_check_cs_timings - Check the validity of a CS timing configurat= ion. > + * @timings: timings configuration > + * > + * @return: 0 if the timing configuration is valid, negative errno > otherwise. I thinks errno is a bit connoted "userspace", here you return a "negative error number". > + */ > +static int aemif_check_cs_timings(struct aemif_cs_timings *timings) > +{ > + if (timings->ta > TA_MAX) > + return -EINVAL; > + > + if (timings->rhold > RHOLD_MAX) > + return -EINVAL; > + > + if (timings->rstrobe > RSTROBE_MAX) > + return -EINVAL; > + > + if (timings->rsetup > RSETUP_MAX) > + return -EINVAL; > + > + if (timings->whold > WHOLD_MAX) > + return -EINVAL; > + > + if (timings->wstrobe > WSTROBE_MAX) > + return -EINVAL; > + > + if (timings->wsetup > WSETUP_MAX) > + return -EINVAL; > + > + return 0; > +} > + > /** > * aemif_calc_rate - calculate timing data. > * @pdev: platform device to calculate for > * @wanted: The cycle time needed in nanoseconds. > * @clk: The input clock rate in kHz. > - * @max: The maximum divider value that can be programmed. > * > * On success, returns the calculated timing value minus 1 for easy > * programming into AEMIF timing registers, else negative errno. > */ > -static int aemif_calc_rate(struct platform_device *pdev, int wanted, > - unsigned long clk, int max) > +static int aemif_calc_rate(struct platform_device *pdev, int wanted, uns= igned long clk) > { > int result; >=20=20 > @@ -149,10 +200,6 @@ static int aemif_calc_rate(struct platform_device *p= dev, int wanted, > if (result < 0) > result =3D 0; >=20=20 > - /* ... But configuring tighter timings is not an option. */ > - else if (result > max) > - result =3D -EINVAL; > - > return result; > } >=20=20 > @@ -174,30 +221,32 @@ static int aemif_config_abus(struct platform_device= *pdev, int csnum) > { > struct aemif_device *aemif =3D platform_get_drvdata(pdev); > struct aemif_cs_data *data =3D &aemif->cs_data[csnum]; > - int ta, rhold, rstrobe, rsetup, whold, wstrobe, wsetup; > unsigned long clk_rate =3D aemif->clk_rate; > + struct aemif_cs_timings timings; This is a matter of taste, but even though you fully initialize the structure below *today*, I'd be future-proof by resetting the structure here: struct aemif_cs_timings timings =3D {}; > unsigned offset; > u32 set, val; > + int ret; >=20=20 > offset =3D A1CR_OFFSET + (data->cs - aemif->cs_offset) * 4; >=20=20 > - ta =3D aemif_calc_rate(pdev, data->ta, clk_rate, TA_MAX); > - rhold =3D aemif_calc_rate(pdev, data->rhold, clk_rate, RHOLD_MAX); > - rstrobe =3D aemif_calc_rate(pdev, data->rstrobe, clk_rate, RSTROBE_MAX); > - rsetup =3D aemif_calc_rate(pdev, data->rsetup, clk_rate, RSETUP_MAX); > - whold =3D aemif_calc_rate(pdev, data->whold, clk_rate, WHOLD_MAX); > - wstrobe =3D aemif_calc_rate(pdev, data->wstrobe, clk_rate, WSTROBE_MAX); > - wsetup =3D aemif_calc_rate(pdev, data->wsetup, clk_rate, WSETUP_MAX); > + timings.ta =3D aemif_calc_rate(pdev, data->ta, clk_rate); > + timings.rhold =3D aemif_calc_rate(pdev, data->rhold, clk_rate); > + timings.rstrobe =3D aemif_calc_rate(pdev, data->rstrobe, clk_rate); > + timings.rsetup =3D aemif_calc_rate(pdev, data->rsetup, clk_rate); > + timings.whold =3D aemif_calc_rate(pdev, data->whold, clk_rate); > + timings.wstrobe =3D aemif_calc_rate(pdev, data->wstrobe, clk_rate); > + timings.wsetup =3D aemif_calc_rate(pdev, data->wsetup, clk_rate); >=20=20 > - if (ta < 0 || rhold < 0 || rstrobe < 0 || rsetup < 0 || > - whold < 0 || wstrobe < 0 || wsetup < 0) { > + ret =3D aemif_check_cs_timings(&timings); > + if (ret) { > dev_err(&pdev->dev, "%s: cannot get suitable timings\n", > __func__); > - return -EINVAL; > + return ret; > } >=20=20 > - set =3D TA(ta) | RHOLD(rhold) | RSTROBE(rstrobe) | RSETUP(rsetup) | > - WHOLD(whold) | WSTROBE(wstrobe) | WSETUP(wsetup); > + set =3D TA(timings.ta) | > + RHOLD(timings.rhold) | RSTROBE(timings.rstrobe) | RSETUP(timings.rsetu= p) | > + WHOLD(timings.whold) | WSTROBE(timings.wstrobe) | WSETUP(timings.wsetu= p); >=20=20 > set |=3D (data->asize & ACR_ASIZE_MASK); > if (data->enable_ew) Otherwise lgtm. Thanks, Miqu=C3=A8l