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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 57862C04AAF for ; Tue, 21 May 2019 08:47:32 +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 2D3362173C for ; Tue, 21 May 2019 08:47:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="uJoXPq8S" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2D3362173C 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=bombadil.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=2Y5S0mpw5VqoE9Y5Ik7DQbsQKCFFEYsqeXfSx8wxhOk=; b=uJoXPq8STCcGLg Ob2dSCMVO3/rqX7RX/9j4nNaqHFsUVrsD+9NHyTqggMyF7ECNuEC8ORWqqYlJM7yQdCpvDTwP1bT0 6cZGh5Bx/TpuJWiN9vg4P7V8Xgx5npMyFsKna4Z0DCvlB5U/O02Kh/rL6A/5pPkIMuxzPmg+CQcwZ PYCQKt5OkS0uGpCx/njBFLD1iyIpV8Va1ixloQHavrLnXT4aGghSiS8x6dz+1tVTW7OEX0LnpbI9o B2Q6Ucq1lV9hOb7adb3k1r+9xokNdFguvHmHFm8w5lkpWWSCAdRb+5btzirSp/V/qlNp2ObCOCov1 ysfuK850wPzr9wLVJr+g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hT0Qk-0000Vf-BX; Tue, 21 May 2019 08:47:30 +0000 Received: from relay9-d.mail.gandi.net ([217.70.183.199]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hT0Qh-0000TN-8U for linux-mtd@lists.infradead.org; Tue, 21 May 2019 08:47:29 +0000 X-Originating-IP: 90.88.22.185 Received: from xps13 (aaubervilliers-681-1-80-185.w90-88.abo.wanadoo.fr [90.88.22.185]) (Authenticated sender: miquel.raynal@bootlin.com) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 9DB0EFF816; Tue, 21 May 2019 08:47:14 +0000 (UTC) Date: Tue, 21 May 2019 10:47:13 +0200 From: Miquel Raynal To: masonccyang@mxic.com.tw Subject: Re: [PATCH v2] mtd: rawnand: Add Macronix NAND read retry support Message-ID: <20190521104713.4b3a7769@xps13> In-Reply-To: References: <1558076001-29579-1-git-send-email-masonccyang@mxic.com.tw> <20190520143438.46248bfc@xps13> Organization: Bootlin X-Mailer: Claws Mail 3.17.1 (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-20190521_014727_615813_1090F910 X-CRM114-Status: GOOD ( 22.56 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: vigneshr@ti.com, bbrezillon@kernel.org, juliensu@mxic.com.tw, richard@nod.at, linux-kernel@vger.kernel.org, frieder.schrempf@kontron.de, marek.vasut@gmail.com, linux-mtd@lists.infradead.org, computersforpeace@gmail.com, dwmw2@infradead.org, zhengxunli@mxic.com.tw 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 SGkgbWFzb25jY3lhbmdAbXhpYy5jb20udHcsCgptYXNvbmNjeWFuZ0BteGljLmNvbS50dyB3cm90 ZSBvbiBUdWUsIDIxIE1heSAyMDE5IDEwOjQyOjA2ICswODAwOgoKPiBIaSBNaXF1ZWwsCj4gIAo+ ID4gPiBBZGQgc3VwcG9ydCBmb3IgTWFjcm9uaXggTkFORCByZWFkIHJldHJ5Lgo+ID4gPiAKPiA+ ID4gTWFjcm9uaXggTkFORHMgc3VwcG9ydCBzcGVjaWZpYyByZWFkIG9wZXJhdGlvbiBmb3IgZGF0 YSByZWNvdmVyeSwKPiA+ID4gd2hpY2ggY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgd2l0aCBhIFNF VC9HRVRfRkVBVFVSRS4KPiA+ID4gRHJpdmVyIGNoZWNrcyBieXRlIDE2NyBvZiBWZW5kb3IgQmxv Y2tzIGluIE9ORkkgcGFyYW1ldGVyIHBhZ2UgdGFibGUKPiA+ID4gdG8gc2VlIGlmIHRoaXMgaGln aC1yZWxpYWJpbGl0eSBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQuCj4gPiA+IAo+ID4gPiBTaWduZWQt b2ZmLWJ5OiBNYXNvbiBZYW5nIDxtYXNvbmNjeWFuZ0BteGljLmNvbS50dz4KPiA+ID4gLS0tCj4g PiA+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX21hY3Jvbml4LmMgfCA1NyAgIAo+ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDU3 IGluc2VydGlvbnMoKykKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5k L3Jhdy9uYW5kX21hY3Jvbml4LmMgICAKPiBiL2RyaXZlcnMvbXRkL25hbmQvcmF3Lwo+ID4gbmFu ZF9tYWNyb25peC5jICAKPiA+ID4gaW5kZXggZTI4N2U3MS4uMWE0ZGM5MiAxMDA2NDQKPiA+ID4g LS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9tYWNyb25peC5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvbXRkL25hbmQvcmF3L25hbmRfbWFjcm9uaXguYwo+ID4gPiBAQCAtMTcsNiArMTcsNjIg QEAKPiA+ID4gCj4gPiA+ICAjaW5jbHVkZSAiaW50ZXJuYWxzLmgiCj4gPiA+IAo+ID4gPiArI2Rl ZmluZSBNQUNST05JWF9SRUFEX1JFVFJZX0JJVCBCSVQoMCkKPiA+ID4gKyNkZWZpbmUgTUFDUk9O SVhfUkVBRF9SRVRSWV9NT0RFIDYgIAo+ID4gCj4gPiBDYW4geW91IG5hbWUgdGhpcyBkZWZpbmUg TUFDUk9OSVhfTlVNX1JFQURfUkVUUllfTU9ERVM/ICAKPiAKPiBva2F5LCB3aWxsIGZpeC4KPiAK PiA+ICAgCj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBuYW5kX29uZmlfdmVuZG9yX21hY3Jvbml4IHsK PiA+ID4gKyAgIHU4IHJlc2VydmVkWzFdOyAgCj4gPiAKPiA+IERvIHlvdSBuZWVkIHRoaXMgIlsx XSIgPyAgCj4gCj4gb2theSwganVzdCB1OCByZXNlcnZlZDsKPiAKPiA+ICAgCj4gPiA+ICsgICB1 OCByZWxpYWJpbGl0eV9mdW5jOwo+ID4gPiArfSBfX3BhY2tlZDsKPiA+ID4gKwo+ID4gPiArLyoK PiA+ID4gKyAqIE1hY3Jvbml4IE5BTkRzIHN1cHBvcnQgdXNpbmcgU0VUL0dFVF9GRUFUVVJFUyB0 byBlbnRlci9leGl0IHJlYWQgICAKPiByZXRyeSBtb2RlCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRp YyBpbnQgbWFjcm9uaXhfbmFuZF9zZXR1cF9yZWFkX3JldHJ5KHN0cnVjdCBuYW5kX2NoaXAgKmNo aXAsIGludCAgIAo+IG1vZGUpCj4gPiA+ICt7Cj4gPiA+ICsgICB1OCBmZWF0dXJlW09ORklfU1VC RkVBVFVSRV9QQVJBTV9MRU5dOwo+ID4gPiArICAgaW50IHJldCwgZmVhdHVyZV9hZGRyID0gT05G SV9GRUFUVVJFX0FERFJfUkVBRF9SRVRSWTsKPiA+ID4gKwo+ID4gPiArICAgaWYgKGNoaXAtPnBh cmFtZXRlcnMuc3VwcG9ydHNfc2V0X2dldF9mZWF0dXJlcyAmJgo+ID4gPiArICAgICAgIHRlc3Rf Yml0KGZlYXR1cmVfYWRkciwgY2hpcC0+cGFyYW1ldGVycy5zZXRfZmVhdHVyZV9saXN0KSAmJgo+ ID4gPiArICAgICAgIHRlc3RfYml0KGZlYXR1cmVfYWRkciwgY2hpcC0+cGFyYW1ldGVycy5nZXRf ZmVhdHVyZV9saXN0KSkgewo+ID4gPiArICAgICAgZmVhdHVyZVswXSA9IG1vZGU7Cj4gPiA+ICsg ICAgICByZXQgPSAgbmFuZF9zZXRfZmVhdHVyZXMoY2hpcCwgZmVhdHVyZV9hZGRyLCBmZWF0dXJl KTsKPiA+ID4gKyAgICAgIGlmIChyZXQpCj4gPiA+ICsgICAgICAgICBwcl9lcnIoIkZhaWxlZCB0 byBzZXQgcmVhZCByZXRyeSBtb2RlZDolZFxuIiwgbW9kZSk7ICAKPiA+IAo+ID4gRG8geW91IGhh dmUgdG8gY2FsbCBuYW5kX2dldF9mZWF0dXJlcygpIG9uIGVycm9yPyAgCj4gCj4gb2theQo+IAo+ ID4gICAKPiA+ID4gKwo+ID4gPiArICAgICAgcmV0ID0gIG5hbmRfZ2V0X2ZlYXR1cmVzKGNoaXAs IGZlYXR1cmVfYWRkciwgZmVhdHVyZSk7Cj4gPiA+ICsgICAgICBpZiAocmV0IHx8IGZlYXR1cmVb MF0gIT0gbW9kZSkKPiA+ID4gKyAgICAgICAgIHByX2VycigiRmFpbGVkIHRvIHZlcmlmeSByZWFk IHJldHJ5IG1vZGVkOiVkKCVkKVxuIiwKPiA+ID4gKyAgICAgICAgICAgICAgICBtb2RlLCBmZWF0 dXJlWzBdKTsgIAo+ID4gCj4gPiBpZiByZXQgPT0gMCBidXQgZmVhdHVyZVswXSAhPSBtb2RlLCBz aG91bGRuJ3QgeW91IHJldHVybiBhbiBlcnJvcj8gIAo+IAo+IG9rYXksIHdpbGwgZml4Lgo+IAo+ ID4gICAKPiA+ID4gKyAgIH0KPiA+ID4gKwo+ID4gPiArICAgcmV0dXJuIHJldDsgIAo+ID4gCj4g PiBUaGlzIHdpbGwgcHJvZHVjZSBhIFdhcm5pbmcgYXQgY29tcGlsZSB0aW1lIChyZXQgbWF5IGJl IHVzZWQKPiA+IHVuaW5pdGlhbGl6ZWQpLiBIYXZlIHlvdSB0ZXN0ZWQgaXQ/ICAKPiAKPiBUb29s IGNoYWluIEkgdXNlZCBpcyAiZ2NjLWFybS1saW51eC1nbnVlYWJpIiBhbmQgbm8gV2FybmluZyBh dCBjb21waWxlIAo+IHRpbWUuCgpXaGF0J3MgdGhlIG91dHB1dCBvZjoKZ2NjLWFybS1saW51eC1n bnVlYWJpIC12Cj8KCj4gCj4gUGF0Y2ggaXQgdG86Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+ICAK PiAgc3RhdGljIGludCBtYWNyb25peF9uYW5kX3NldHVwX3JlYWRfcmV0cnkoc3RydWN0IG5hbmRf Y2hpcCAqY2hpcCwgaW50IAo+IG1vZGUpCj4gIHsKPiAgICAgICAgICB1OCBmZWF0dXJlW09ORklf U1VCRkVBVFVSRV9QQVJBTV9MRU5dOwo+ICAgICAgICAgIGludCByZXQsIGZlYXR1cmVfYWRkciA9 IE9ORklfRkVBVFVSRV9BRERSX1JFQURfUkVUUlk7Cj4gCj4gICAgICAgICAgaWYgKGNoaXAtPnBh cmFtZXRlcnMuc3VwcG9ydHNfc2V0X2dldF9mZWF0dXJlcyAmJgo+ICAgICAgICAgICAgICB0ZXN0 X2JpdChmZWF0dXJlX2FkZHIsIGNoaXAtPnBhcmFtZXRlcnMuc2V0X2ZlYXR1cmVfbGlzdCkgJiYK PiAgICAgICAgICAgICAgdGVzdF9iaXQoZmVhdHVyZV9hZGRyLCBjaGlwLT5wYXJhbWV0ZXJzLmdl dF9mZWF0dXJlX2xpc3QpKSB7Cj4gCj4gICAgICAgICAgICAgICAgICBmZWF0dXJlWzBdID0gbW9k ZTsKPiAgICAgICAgICAgICAgICAgIHJldCA9ICBuYW5kX3NldF9mZWF0dXJlcyhjaGlwLCBmZWF0 dXJlX2FkZHIsIGZlYXR1cmUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIF4gZXh0cmEgc3Bh Y2UsIHBsZWFzZSBiZSBjYXJlZnVsIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICB0 eXBvcywgYW5kIHJ1biBjaGVja3BhdGNoLnBsIC0tc3RyaWN0IGJlZm9yZQogICAgICAgICAgICAg ICAgICAgICAgICAgc2VuZGluZyBwYXRjaGVzLgoKPiAgICAgICAgICAgICAgICAgIGlmIChyZXQp IHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJfZXJyKCJGYWlsZWQgdG8gc2V0IHJlYWQg cmV0cnkgbW9kZWQ6JWRcbiIsIAo+IG1vZGUpOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICBn b3RvIGVycl9vdXQ7Cj4gICAgICAgICAgICAgICAgICB9Cj4gCj4gICAgICAgICAgICAgICAgICBy ZXQgPSAgbmFuZF9nZXRfZmVhdHVyZXMoY2hpcCwgZmVhdHVyZV9hZGRyLCBmZWF0dXJlKTsKPiAg ICAgICAgICAgICAgICAgIGlmIChyZXQpIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJf ZXJyKCJGYWlsZWQgdG8gZ2V0IHJlYWQgcmV0cnkgbW9kZWQ6JWRcbiIsIAo+IG1vZGUpOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gICAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKGZlYXR1cmVbMF0gIT0gbW9kZSkgewo+ICAgICAgICAgICAgICAgICAgICAgICAg ICBwcl9lcnIoIkZhaWxlZCB0byB2ZXJpZnkgcmVhZCByZXRyeSAKPiBtb2RlZDolZCglZClcbiIs Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSwgZmVhdHVyZVswXSk7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlPOwoKVGhhdCdzIG5vdCB3aGF0IEkg bWVhbnQuIFlvdSBjYW4ga2VlcCB0aGUgZm9ybWVyIGNvbmRpdGlvbiBidXQgaWYgIXJldAp0aGVu IHJldCA9IC1FSU8gZm9yIGluc3RhbmNlLgoKPiAgICAgICAgICAgICAgICAgIH0KPiAgICAgICAg ICB9Cj4gCj4gIGVycl9vdXQ6Cj4gICAgICAgICAgcmV0dXJuIHJldDsKCkFnYWluLCBkbyBub3Qg anVtcCB0byBhIHNpbmdsZSByZXR1cm4gY2FsbCwgZGlyZWN0bHkgZG8gdGhlIHJldHVybiBmcm9t CnRoZSBwb2ludCB3aGVyZSB5b3Ugd2FudCB0byBxdWl0IHRoZSBmdW5jdGlvbi4KClRoZSBwcm9i bGVtIHNob3VsZCBiZSB0aGF0IHJldCBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkLCB0aGUgY29t cGlsZXIKc2hvdWxkIHRlbGwgeW91IHRoYXQuCgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlz Y3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1tdGQvCg== 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=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 23C6BC04AAF for ; Tue, 21 May 2019 08:47:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E84B9217D4 for ; Tue, 21 May 2019 08:47:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727019AbfEUIrY convert rfc822-to-8bit (ORCPT ); Tue, 21 May 2019 04:47:24 -0400 Received: from relay9-d.mail.gandi.net ([217.70.183.199]:37605 "EHLO relay9-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726448AbfEUIrX (ORCPT ); Tue, 21 May 2019 04:47:23 -0400 X-Originating-IP: 90.88.22.185 Received: from xps13 (aaubervilliers-681-1-80-185.w90-88.abo.wanadoo.fr [90.88.22.185]) (Authenticated sender: miquel.raynal@bootlin.com) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 9DB0EFF816; Tue, 21 May 2019 08:47:14 +0000 (UTC) Date: Tue, 21 May 2019 10:47:13 +0200 From: Miquel Raynal To: masonccyang@mxic.com.tw Cc: bbrezillon@kernel.org, computersforpeace@gmail.com, dwmw2@infradead.org, frieder.schrempf@kontron.de, juliensu@mxic.com.tw, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, marek.vasut@gmail.com, richard@nod.at, vigneshr@ti.com, zhengxunli@mxic.com.tw Subject: Re: [PATCH v2] mtd: rawnand: Add Macronix NAND read retry support Message-ID: <20190521104713.4b3a7769@xps13> In-Reply-To: References: <1558076001-29579-1-git-send-email-masonccyang@mxic.com.tw> <20190520143438.46248bfc@xps13> Organization: Bootlin X-Mailer: Claws Mail 3.17.1 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi masonccyang@mxic.com.tw, masonccyang@mxic.com.tw wrote on Tue, 21 May 2019 10:42:06 +0800: > Hi Miquel, > > > > Add support for Macronix NAND read retry. > > > > > > Macronix NANDs support specific read operation for data recovery, > > > which can be enabled/disabled with a SET/GET_FEATURE. > > > Driver checks byte 167 of Vendor Blocks in ONFI parameter page table > > > to see if this high-reliability function is supported. > > > > > > Signed-off-by: Mason Yang > > > --- > > > drivers/mtd/nand/raw/nand_macronix.c | 57 > ++++++++++++++++++++++++++++++++++++ > > > 1 file changed, 57 insertions(+) > > > > > > diff --git a/drivers/mtd/nand/raw/nand_macronix.c > b/drivers/mtd/nand/raw/ > > nand_macronix.c > > > index e287e71..1a4dc92 100644 > > > --- a/drivers/mtd/nand/raw/nand_macronix.c > > > +++ b/drivers/mtd/nand/raw/nand_macronix.c > > > @@ -17,6 +17,62 @@ > > > > > > #include "internals.h" > > > > > > +#define MACRONIX_READ_RETRY_BIT BIT(0) > > > +#define MACRONIX_READ_RETRY_MODE 6 > > > > Can you name this define MACRONIX_NUM_READ_RETRY_MODES? > > okay, will fix. > > > > > > + > > > +struct nand_onfi_vendor_macronix { > > > + u8 reserved[1]; > > > > Do you need this "[1]" ? > > okay, just u8 reserved; > > > > > > + u8 reliability_func; > > > +} __packed; > > > + > > > +/* > > > + * Macronix NANDs support using SET/GET_FEATURES to enter/exit read > retry mode > > > + */ > > > +static int macronix_nand_setup_read_retry(struct nand_chip *chip, int > mode) > > > +{ > > > + u8 feature[ONFI_SUBFEATURE_PARAM_LEN]; > > > + int ret, feature_addr = ONFI_FEATURE_ADDR_READ_RETRY; > > > + > > > + if (chip->parameters.supports_set_get_features && > > > + test_bit(feature_addr, chip->parameters.set_feature_list) && > > > + test_bit(feature_addr, chip->parameters.get_feature_list)) { > > > + feature[0] = mode; > > > + ret = nand_set_features(chip, feature_addr, feature); > > > + if (ret) > > > + pr_err("Failed to set read retry moded:%d\n", mode); > > > > Do you have to call nand_get_features() on error? > > okay > > > > > > + > > > + ret = nand_get_features(chip, feature_addr, feature); > > > + if (ret || feature[0] != mode) > > > + pr_err("Failed to verify read retry moded:%d(%d)\n", > > > + mode, feature[0]); > > > > if ret == 0 but feature[0] != mode, shouldn't you return an error? > > okay, will fix. > > > > > > + } > > > + > > > + return ret; > > > > This will produce a Warning at compile time (ret may be used > > uninitialized). Have you tested it? > > Tool chain I used is "gcc-arm-linux-gnueabi" and no Warning at compile > time. What's the output of: gcc-arm-linux-gnueabi -v ? > > Patch it to: > -----------------------------------------------------------------------------> > static int macronix_nand_setup_read_retry(struct nand_chip *chip, int > mode) > { > u8 feature[ONFI_SUBFEATURE_PARAM_LEN]; > int ret, feature_addr = ONFI_FEATURE_ADDR_READ_RETRY; > > if (chip->parameters.supports_set_get_features && > test_bit(feature_addr, chip->parameters.set_feature_list) && > test_bit(feature_addr, chip->parameters.get_feature_list)) { > > feature[0] = mode; > ret = nand_set_features(chip, feature_addr, feature); ^ extra space, please be careful with the typos, and run checkpatch.pl --strict before sending patches. > if (ret) { > pr_err("Failed to set read retry moded:%d\n", > mode); > goto err_out; > } > > ret = nand_get_features(chip, feature_addr, feature); > if (ret) { > pr_err("Failed to get read retry moded:%d\n", > mode); > goto err_out; > } else if (feature[0] != mode) { > pr_err("Failed to verify read retry > moded:%d(%d)\n", > mode, feature[0]); > return -EIO; That's not what I meant. You can keep the former condition but if !ret then ret = -EIO for instance. > } > } > > err_out: > return ret; Again, do not jump to a single return call, directly do the return from the point where you want to quit the function. The problem should be that ret may be used uninitialized, the compiler should tell you that. Thanks, Miquèl