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 X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6429CC433DB for ; Tue, 23 Feb 2021 16:13:27 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 2406564E5C for ; Tue, 23 Feb 2021 16:13:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2406564E5C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID: Subject: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=LWVGf0VVVeBm1nG3zHo4lpoSzNR5dla6uOuzt/P4FiU=; b=djWOSIzPuP7hD6oRM2UmDnAas az3WwheIq49Ns8bCeWF5k9Z2BYcJAakFIhCDJ6yBC4d4PnDDp7hygIRRmripEyodeXy/OPqrtt94u k4Y6FBSlflt1Wa/7BVaEw8GbvDUUKj2ftf54Ly5oMVxadaeaWKoP1IsCvjiqv9N+RG7fvLTdeW064 Hd5MkCv5oCJh1wr7ACBitmop6UM1UchgNDL0pugJV51nkF7MtBNlzo/IiBmTSy9n4UBPHBJmD0OSr I0rOFg3ziNg4xWMNyIZItbsvgHmEz3SiZvl0dWgazkvb3RSu1HdyY/4OcfFTLujw/W+xYC75pyST5 TGN7lAPbw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEaIa-0007wV-R8; Tue, 23 Feb 2021 16:12:32 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEaIX-0007uw-3p for linux-mtd@lists.infradead.org; Tue, 23 Feb 2021 16:12:31 +0000 X-Originating-IP: 86.210.203.113 Received: from xps13 (lfbn-tou-1-972-113.w86-210.abo.wanadoo.fr [86.210.203.113]) (Authenticated sender: miquel.raynal@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id DF253E0013; Tue, 23 Feb 2021 16:12:24 +0000 (UTC) Date: Tue, 23 Feb 2021 17:12:23 +0100 From: Miquel Raynal To: Md Sadre Alam Subject: Re: [PATCH] mtd: rawnand: qcom: Add helper to check last code word Message-ID: <20210223171223.53f86959@xps13> In-Reply-To: <1613975095-15550-1-git-send-email-mdalam@codeaurora.org> References: <1613975095-15550-1-git-send-email-mdalam@codeaurora.org> Organization: Bootlin X-Mailer: Claws Mail 3.17.4 (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-20210223_111229_387653_41C82DC5 X-CRM114-Status: GOOD ( 23.20 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: sricharan@codeaurora.org, boris.brezillon@collabora.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, mani@kernel.org 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 SGVsbG8sCgpNZCBTYWRyZSBBbGFtIDxtZGFsYW1AY29kZWF1cm9yYS5vcmc+IHdyb3RlIG9uIE1v biwgMjIgRmViIDIwMjEKMTE6NTQ6NTUgKzA1MzA6Cgo+IFRoaXMgY2hhbmdlIHdpbGwgYWRkIGhl bHBlciBxY29tX25hbmRjX2lzX2xhc3RfY3coKQoKVXNlIHRoZSBpbXBlcmF0aXZlIGZvcm0sIHNv bWV0aGluZyBsaWtlOgoKIgpBZGQgdGhlIHFjb21fbmFuZGNfaXNfbGFzdF9jdygpIGhlbHBlciB3 aGljaCBjaGVja3MgaWYgdGhlIGlucHV0IGN3CmluZGV4IGlzIHRoZSBsYXN0IG9uZSBvciBub3Qu CiIKCj4gd2hpY2ggd2lsbCBjaGVjayBmb3IgbGFzdCBjb2RlIHdvcmQgYW5kIHJldHVybiB0cnVl IGZvcgo+IGxhc3QgY29kZSB3b3JkIGFuZCBmYWxzZSBmb3Igb3RoZXIgY29kZSB3b3JkLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IE1kIFNhZHJlIEFsYW0gPG1kYWxhbUBjb2RlYXVyb3JhLm9yZz4KPiAt LS0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvcWNvbV9uYW5kYy5jIHwgMjQgKysrKysrKysrKysr KysrLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9xY29tX25hbmRj LmMgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9xY29tX25hbmRjLmMKPiBpbmRleCBhZTg4NzBlYy4u NDE4OWE3ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9xY29tX25hbmRjLmMK PiArKysgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9xY29tX25hbmRjLmMKPiBAQCAtNjYxLDYgKzY2 MSwxMiBAQCBzdGF0aWMgdm9pZCBuYW5kY19zZXRfcmVnKHN0cnVjdCBxY29tX25hbmRfY29udHJv bGxlciAqbmFuZGMsIGludCBvZmZzZXQsCj4gIAkJKnJlZyA9IGNwdV90b19sZTMyKHZhbCk7Cj4g IH0KPiAgCj4gKy8qIEhlbHBlciB0byBjaGVjayB0aGUgY29kZSB3b3JkLCB3aGV0aGVyIGl0IGlz IGxhc3QgY3cgb3Igbm90ICovCj4gK3N0YXRpYyBib29sIHFjb21fbmFuZGNfaXNfbGFzdF9jdyhz dHJ1Y3QgbmFuZF9lY2NfY3RybCAqZWNjLCBpbnQgY3cpCj4gK3sKPiArCXJldHVybiBjdyA9PSAo ZWNjLT5zdGVwcyAtIDEpOwo+ICt9Cj4gKwo+ICAvKiBoZWxwZXIgdG8gY29uZmlndXJlIGFkZHJl c3MgcmVnaXN0ZXIgdmFsdWVzICovCj4gIHN0YXRpYyB2b2lkIHNldF9hZGRyZXNzKHN0cnVjdCBx Y29tX25hbmRfaG9zdCAqaG9zdCwgdTE2IGNvbHVtbiwgaW50IHBhZ2UpCj4gIHsKPiBAQCAtMTYz Miw3ICsxNjM4LDcgQEAgcWNvbV9uYW5kY19yZWFkX2N3X3JhdyhzdHJ1Y3QgbXRkX2luZm8gKm10 ZCwgc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwKPiAgCWRhdGFfc2l6ZTEgPSBtdGQtPndyaXRlc2l6 ZSAtIGhvc3QtPmN3X3NpemUgKiAoZWNjLT5zdGVwcyAtIDEpOwo+ICAJb29iX3NpemUxID0gaG9z dC0+YmJtX3NpemU7Cj4gIAo+IC0JaWYgKGN3ID09IChlY2MtPnN0ZXBzIC0gMSkpIHsKPiArCWlm IChxY29tX25hbmRjX2lzX2xhc3RfY3coZWNjLCBjdykpIHsKPiAgCQlkYXRhX3NpemUyID0gZWNj LT5zaXplIC0gZGF0YV9zaXplMSAtCj4gIAkJCSAgICAgKChlY2MtPnN0ZXBzIC0gMSkgKiA0KTsK PiAgCQlvb2Jfc2l6ZTIgPSAoZWNjLT5zdGVwcyAqIDQpICsgaG9zdC0+ZWNjX2J5dGVzX2h3ICsK PiBAQCAtMTcxMyw3ICsxNzE5LDcgQEAgY2hlY2tfZm9yX2VyYXNlZF9wYWdlKHN0cnVjdCBxY29t X25hbmRfaG9zdCAqaG9zdCwgdTggKmRhdGFfYnVmLAo+ICAJfQo+ICAKPiAgCWZvcl9lYWNoX3Nl dF9iaXQoY3csICZ1bmNvcnJlY3RhYmxlX2N3cywgZWNjLT5zdGVwcykgewo+IC0JCWlmIChjdyA9 PSAoZWNjLT5zdGVwcyAtIDEpKSB7Cj4gKwkJaWYgKHFjb21fbmFuZGNfaXNfbGFzdF9jdyhlY2Ms IGN3KSkgewo+ICAJCQlkYXRhX3NpemUgPSBlY2MtPnNpemUgLSAoKGVjYy0+c3RlcHMgLSAxKSAq IDQpOwo+ICAJCQlvb2Jfc2l6ZSA9IChlY2MtPnN0ZXBzICogNCkgKyBob3N0LT5lY2NfYnl0ZXNf aHc7Cj4gIAkJfSBlbHNlIHsKPiBAQCAtMTc3Myw3ICsxNzc5LDcgQEAgc3RhdGljIGludCBwYXJz ZV9yZWFkX2Vycm9ycyhzdHJ1Y3QgcWNvbV9uYW5kX2hvc3QgKmhvc3QsIHU4ICpkYXRhX2J1ZiwK PiAgCQl1MzIgZmxhc2gsIGJ1ZmZlciwgZXJhc2VkX2N3Owo+ICAJCWludCBkYXRhX2xlbiwgb29i X2xlbjsKPiAgCj4gLQkJaWYgKGkgPT0gKGVjYy0+c3RlcHMgLSAxKSkgewo+ICsJCWlmIChxY29t X25hbmRjX2lzX2xhc3RfY3coZWNjLCBpKSkgewo+ICAJCQlkYXRhX2xlbiA9IGVjYy0+c2l6ZSAt ICgoZWNjLT5zdGVwcyAtIDEpIDw8IDIpOwo+ICAJCQlvb2JfbGVuID0gZWNjLT5zdGVwcyA8PCAy Owo+ICAJCX0gZWxzZSB7Cj4gQEAgLTE4NzIsNyArMTg3OCw3IEBAIHN0YXRpYyBpbnQgcmVhZF9w YWdlX2VjYyhzdHJ1Y3QgcWNvbV9uYW5kX2hvc3QgKmhvc3QsIHU4ICpkYXRhX2J1ZiwKPiAgCWZv ciAoaSA9IDA7IGkgPCBlY2MtPnN0ZXBzOyBpKyspIHsKPiAgCQlpbnQgZGF0YV9zaXplLCBvb2Jf c2l6ZTsKPiAgCj4gLQkJaWYgKGkgPT0gKGVjYy0+c3RlcHMgLSAxKSkgewo+ICsJCWlmIChxY29t X25hbmRjX2lzX2xhc3RfY3coZWNjLCBpKSkgewo+ICAJCQlkYXRhX3NpemUgPSBlY2MtPnNpemUg LSAoKGVjYy0+c3RlcHMgLSAxKSA8PCAyKTsKPiAgCQkJb29iX3NpemUgPSAoZWNjLT5zdGVwcyA8 PCAyKSArIGhvc3QtPmVjY19ieXRlc19odyArCj4gIAkJCQkgICBob3N0LT5zcGFyZV9ieXRlczsK PiBAQCAtMjA1MSw3ICsyMDU3LDcgQEAgc3RhdGljIGludCBxY29tX25hbmRjX3dyaXRlX3BhZ2Uo c3RydWN0IG5hbmRfY2hpcCAqY2hpcCwgY29uc3QgdWludDhfdCAqYnVmLAo+ICAJZm9yIChpID0g MDsgaSA8IGVjYy0+c3RlcHM7IGkrKykgewo+ICAJCWludCBkYXRhX3NpemUsIG9vYl9zaXplOwo+ ICAKPiAtCQlpZiAoaSA9PSAoZWNjLT5zdGVwcyAtIDEpKSB7Cj4gKwkJaWYgKHFjb21fbmFuZGNf aXNfbGFzdF9jdyhlY2MsIGkpKSB7Cj4gIAkJCWRhdGFfc2l6ZSA9IGVjYy0+c2l6ZSAtICgoZWNj LT5zdGVwcyAtIDEpIDw8IDIpOwo+ICAJCQlvb2Jfc2l6ZSA9IChlY2MtPnN0ZXBzIDw8IDIpICsg aG9zdC0+ZWNjX2J5dGVzX2h3ICsKPiAgCQkJCSAgIGhvc3QtPnNwYXJlX2J5dGVzOwo+IEBAIC0y MDY4LDEwICsyMDc0LDEwIEBAIHN0YXRpYyBpbnQgcWNvbV9uYW5kY193cml0ZV9wYWdlKHN0cnVj dCBuYW5kX2NoaXAgKmNoaXAsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwKPiAgCQkgKiB3aGVuIEVDQyBp cyBlbmFibGVkLCB3ZSBkb24ndCByZWFsbHkgbmVlZCB0byB3cml0ZSBhbnl0aGluZwo+ICAJCSAq IHRvIG9vYiBmb3IgdGhlIGZpcnN0IG4gLSAxIGNvZGV3b3JkcyBzaW5jZSB0aGVzZSBvb2IgcmVn aW9ucwo+ICAJCSAqIGp1c3QgY29udGFpbiBFQ0MgYnl0ZXMgdGhhdCdzIHdyaXR0ZW4gYnkgdGhl IGNvbnRyb2xsZXIKPiAtCQkgKiBpdHNlbGYuIEZvciB0aGUgbGFzdCBjb2Rld29yZCwgd2Ugc2tp cCB0aGUgYmJtIHBvc2l0aW9ucyBhbmQKPiAtCQkgKiB3cml0ZSB0byB0aGUgZnJlZSBvb2IgYXJl YS4KPiArCQkgKiBpdHNlbGYuIEZvciB0aGUgbGFzdCBjb2Rld29yZCwgd2Ugc2tpcCB0aGUgYmJt IHBvc2l0aW9ucyBhbmQgd3JpdGUKPiArCQkgKiB0byB0aGUgZnJlZSBvb2IgYXJlYS4KCk5vdCBy ZWxhdGVkIGNoYW5nZSwgcGxlYXNlIGRyb3AuCgo+ICAJCSAqLwo+IC0JCWlmIChpID09IChlY2Mt PnN0ZXBzIC0gMSkpIHsKPiArCQlpZiAocWNvbV9uYW5kY19pc19sYXN0X2N3KGVjYywgaSkpIHsK PiAgCQkJb29iX2J1ZiArPSBob3N0LT5iYm1fc2l6ZTsKPiAgCj4gIAkJCXdyaXRlX2RhdGFfZG1h KG5hbmRjLCBGTEFTSF9CVUZfQUNDICsgZGF0YV9zaXplLAo+IEBAIC0yMTI2LDcgKzIxMzIsNyBA QCBzdGF0aWMgaW50IHFjb21fbmFuZGNfd3JpdGVfcGFnZV9yYXcoc3RydWN0IG5hbmRfY2hpcCAq Y2hpcCwKPiAgCQlkYXRhX3NpemUxID0gbXRkLT53cml0ZXNpemUgLSBob3N0LT5jd19zaXplICog KGVjYy0+c3RlcHMgLSAxKTsKPiAgCQlvb2Jfc2l6ZTEgPSBob3N0LT5iYm1fc2l6ZTsKPiAgCj4g LQkJaWYgKGkgPT0gKGVjYy0+c3RlcHMgLSAxKSkgewo+ICsJCWlmIChxY29tX25hbmRjX2lzX2xh c3RfY3coZWNjLCBpKSkgewo+ICAJCQlkYXRhX3NpemUyID0gZWNjLT5zaXplIC0gZGF0YV9zaXpl MSAtCj4gIAkJCQkgICAgICgoZWNjLT5zdGVwcyAtIDEpIDw8IDIpOwo+ICAJCQlvb2Jfc2l6ZTIg PSAoZWNjLT5zdGVwcyA8PCAyKSArIGhvc3QtPmVjY19ieXRlc19odyArCgoKVGhhbmtzLApNaXF1 w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= 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 X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD4A3C433E0 for ; Tue, 23 Feb 2021 16:13:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A9E8164E5C for ; Tue, 23 Feb 2021 16:13:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233527AbhBWQNR convert rfc822-to-8bit (ORCPT ); Tue, 23 Feb 2021 11:13:17 -0500 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:34091 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233428AbhBWQNP (ORCPT ); Tue, 23 Feb 2021 11:13:15 -0500 X-Originating-IP: 86.210.203.113 Received: from xps13 (lfbn-tou-1-972-113.w86-210.abo.wanadoo.fr [86.210.203.113]) (Authenticated sender: miquel.raynal@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id DF253E0013; Tue, 23 Feb 2021 16:12:24 +0000 (UTC) Date: Tue, 23 Feb 2021 17:12:23 +0100 From: Miquel Raynal To: Md Sadre Alam Cc: mani@kernel.org, boris.brezillon@collabora.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, sricharan@codeaurora.org Subject: Re: [PATCH] mtd: rawnand: qcom: Add helper to check last code word Message-ID: <20210223171223.53f86959@xps13> In-Reply-To: <1613975095-15550-1-git-send-email-mdalam@codeaurora.org> References: <1613975095-15550-1-git-send-email-mdalam@codeaurora.org> Organization: Bootlin X-Mailer: Claws Mail 3.17.4 (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 Hello, Md Sadre Alam wrote on Mon, 22 Feb 2021 11:54:55 +0530: > This change will add helper qcom_nandc_is_last_cw() Use the imperative form, something like: " Add the qcom_nandc_is_last_cw() helper which checks if the input cw index is the last one or not. " > which will check for last code word and return true for > last code word and false for other code word. > > Signed-off-by: Md Sadre Alam > --- > drivers/mtd/nand/raw/qcom_nandc.c | 24 +++++++++++++++--------- > 1 file changed, 15 insertions(+), 9 deletions(-) > > diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c > index ae8870ec..4189a7f 100644 > --- a/drivers/mtd/nand/raw/qcom_nandc.c > +++ b/drivers/mtd/nand/raw/qcom_nandc.c > @@ -661,6 +661,12 @@ static void nandc_set_reg(struct qcom_nand_controller *nandc, int offset, > *reg = cpu_to_le32(val); > } > > +/* Helper to check the code word, whether it is last cw or not */ > +static bool qcom_nandc_is_last_cw(struct nand_ecc_ctrl *ecc, int cw) > +{ > + return cw == (ecc->steps - 1); > +} > + > /* helper to configure address register values */ > static void set_address(struct qcom_nand_host *host, u16 column, int page) > { > @@ -1632,7 +1638,7 @@ qcom_nandc_read_cw_raw(struct mtd_info *mtd, struct nand_chip *chip, > data_size1 = mtd->writesize - host->cw_size * (ecc->steps - 1); > oob_size1 = host->bbm_size; > > - if (cw == (ecc->steps - 1)) { > + if (qcom_nandc_is_last_cw(ecc, cw)) { > data_size2 = ecc->size - data_size1 - > ((ecc->steps - 1) * 4); > oob_size2 = (ecc->steps * 4) + host->ecc_bytes_hw + > @@ -1713,7 +1719,7 @@ check_for_erased_page(struct qcom_nand_host *host, u8 *data_buf, > } > > for_each_set_bit(cw, &uncorrectable_cws, ecc->steps) { > - if (cw == (ecc->steps - 1)) { > + if (qcom_nandc_is_last_cw(ecc, cw)) { > data_size = ecc->size - ((ecc->steps - 1) * 4); > oob_size = (ecc->steps * 4) + host->ecc_bytes_hw; > } else { > @@ -1773,7 +1779,7 @@ static int parse_read_errors(struct qcom_nand_host *host, u8 *data_buf, > u32 flash, buffer, erased_cw; > int data_len, oob_len; > > - if (i == (ecc->steps - 1)) { > + if (qcom_nandc_is_last_cw(ecc, i)) { > data_len = ecc->size - ((ecc->steps - 1) << 2); > oob_len = ecc->steps << 2; > } else { > @@ -1872,7 +1878,7 @@ static int read_page_ecc(struct qcom_nand_host *host, u8 *data_buf, > for (i = 0; i < ecc->steps; i++) { > int data_size, oob_size; > > - if (i == (ecc->steps - 1)) { > + if (qcom_nandc_is_last_cw(ecc, i)) { > data_size = ecc->size - ((ecc->steps - 1) << 2); > oob_size = (ecc->steps << 2) + host->ecc_bytes_hw + > host->spare_bytes; > @@ -2051,7 +2057,7 @@ static int qcom_nandc_write_page(struct nand_chip *chip, const uint8_t *buf, > for (i = 0; i < ecc->steps; i++) { > int data_size, oob_size; > > - if (i == (ecc->steps - 1)) { > + if (qcom_nandc_is_last_cw(ecc, i)) { > data_size = ecc->size - ((ecc->steps - 1) << 2); > oob_size = (ecc->steps << 2) + host->ecc_bytes_hw + > host->spare_bytes; > @@ -2068,10 +2074,10 @@ static int qcom_nandc_write_page(struct nand_chip *chip, const uint8_t *buf, > * when ECC is enabled, we don't really need to write anything > * to oob for the first n - 1 codewords since these oob regions > * just contain ECC bytes that's written by the controller > - * itself. For the last codeword, we skip the bbm positions and > - * write to the free oob area. > + * itself. For the last codeword, we skip the bbm positions and write > + * to the free oob area. Not related change, please drop. > */ > - if (i == (ecc->steps - 1)) { > + if (qcom_nandc_is_last_cw(ecc, i)) { > oob_buf += host->bbm_size; > > write_data_dma(nandc, FLASH_BUF_ACC + data_size, > @@ -2126,7 +2132,7 @@ static int qcom_nandc_write_page_raw(struct nand_chip *chip, > data_size1 = mtd->writesize - host->cw_size * (ecc->steps - 1); > oob_size1 = host->bbm_size; > > - if (i == (ecc->steps - 1)) { > + if (qcom_nandc_is_last_cw(ecc, i)) { > data_size2 = ecc->size - data_size1 - > ((ecc->steps - 1) << 2); > oob_size2 = (ecc->steps << 2) + host->ecc_bytes_hw + Thanks, Miquèl