From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abhishek Sahu Subject: [PATCH v4 00/15] Update for QCOM NAND driver Date: Wed, 20 Jun 2018 12:57:27 +0530 Message-ID: <1529479662-4026-1-git-send-email-absahu@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+gldm-linux-mtd-36=gmane.org@lists.infradead.org To: Boris Brezillon , Miquel Raynal Cc: Archit Taneja , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Marek Vasut , Abhishek Sahu , linux-mtd@lists.infradead.org, Richard Weinberger , Andy Gross , Brian Norris , David Woodhouse List-Id: linux-arm-msm@vger.kernel.org KiB2NDoKCjEuIEFkZGVkIHBhdGNoIHRvIG1ha2Ugb3RoZXIgRUNDIGNvbmZpZ3VyYXRpb25zIGZ1 bmN0aW9uIHN0YXRpYy4KMi4gQ2x1YmJlZCB0aGUgRFQgdXBkYXRlIHBhdGNoZXMuCjMuIFJlbW92 ZWQgdGhlIGJhZCBibG9jayByZWxhdGVkIHBhdGNoLiBEaXNjdXNzaW9uIGlzIGdvaW5nIG9uCiAg IHJlbGF0ZWQgd2l0aCBmb3IgcHJvcGVyIHNvbHV0aW9uIHNvIHBsYW5uaW5nIHRvIHN1Ym1pdCBz ZXBhcmF0ZQogICBwYXRjaCBzZXJpZXMgZm9yIGFsbCBiYWQgYmxvY2sgcmVsYXRlZCBjaGFuZ2Vz Lgo0LiBNYWRlIHRoZSBzaW5nbGUgY29kZXdvcmQgcmF3IHJlYWQgZnVuY3Rpb24gYW5kIHVzZWQg dGhlIHNhbWUKICAgZm9yIHJhdyBwYWdlIHJlYWQuCjUuIENoYW5nZXMgaW4gZXJhc2VkIGNvZGV3 b3JkIGRldGVjdGlvbiB0byByYXcgcmVhZCBmdW5jdGlvbi4KCiogdjM6CgoxLiBBZGRyZXNzZWQg YWxsIHJldmlldyBjb21tZW50cyBpbiB2Mi4KMi4gQWRkZWQgcGF0Y2ggZm9yIHJlbW92aW5nIHJl ZHVuZGFudCBuYW5kLWVjYy1zdGVwLXNpemUgRFQgcHJvcGVydHkuCjMuIFJlbmFtZWQgRUNDIGNv bmZpZ3VyYXRpb24gc2V0dXAgZnVuY3Rpb24gd2l0aCBtaW5vciBjb2RlIGNoYW5nZXMuCjQuIE1v ZGlmaWVkIGNvbW1lbnRzIGFuZCBjb21taXQgbWVzc2FnZSBmb3IgZmV3IHBhdGNoZXMuCgoqIHYy OgoKMS4gQWRkcmVzc2VkIGFsbCByZXZpZXcgY29tbWVudHMgaW4gdjEuCjEuIE1ha2UgdGhlIGdl bmVyaWMgaGVscGVyIGZ1bmN0aW9uIGZvciBOQU5EIEVDQyBwYXJhbWV0ZXJzIHNldHVwCiAgIGFu ZCB1c2VkIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGZvciBRQ09NIGFuZCBEZW5hbGkgbmFuZCBkcml2 ZXIKICAgZm9yIEVDQyBzZXR1cC4KMi4gTW9kaWZpZWQgY29tbWl0IG1lc3NhZ2UgZm9yIHNvbWUg b2YgdGhlIHBhdGNoZXMgYW5kIGFkZGVkIG1vcmUKICAgY29tbWVudHMuCjMuIEFkZGVkIG5ldyBw YXRjaCBmb3IgZml4aW5nIOKAmHJldHVybiAw4oCZIGZvciByYXcgcmVhZC4KNC4gUmVtb3ZlZCB0 aGUgcmVhZCBsYXN0IGNvZGV3b3JkIHBhcnQgZm9yIG5hbmQgb29iIHdyaXRlLgo1LiBSZW9yZ2Fu aXplZCBiYWQgYmxvY2sgY2hlY2sgZnVuY3Rpb24gYW5kIHJlbW92ZWQgdGhlCiAgIHJlYWRfbGFz dF9jdyBmdW5jdGlvbiBjb21wbGV0ZWx5LgoKKiB2MToKClRoaXMgcGF0Y2ggc2VyaWVzIG1haW5s eSBkZWFscyB3aXRoIGVycm9yIGhhbmRsaW5nIGFuZCBlcmFzZWQgcGFnZQpiaXRmbGlwIGRldGVj dGlvbiBmb3IgUUNPTSBOQU5EIGRyaXZlci4KCjEuIFRoZSBlcnJvciBoYW5kbGluZyB3YXMgbWlz c2luZyBmb3Igc29tZSBvZiB0aGUgY2FzZXMgc28gZml4ZWQKICAgdGhlIHNhbWUuCgoyLiBBZGQg dGhlIHN1cHBvcnQgZm9yIHRha2luZyBFQ0Mgc3RyZW5ndGggZnJvbSBPTkZJIHBhcmFtZXRlci4K ICAgVGhlIGVhcmxpZXIgUUNPTSBib2FyZHMgd2VyZSBjb21pbmcgd2l0aCA0LWJpdCBFQ0MgY2hp cCBidXQKICAgbm93IHRoZSBzYW1lIGJvYXJkcyBhcmUgY29taW5nIHdpdGggOC1iaXQgRUNDIGNo aXAgc2luY2UgdGhlCiAgIGVhcmxpZXIgNC1iaXQgcGFydHMgYXJlIG9ic29sZXRlIGZyb20gc29t ZSB2ZW5kb3JzLgoKMy4gV2UgZ290IGZldyBpc3N1ZXMgcmVsYXRlZCB3aXRoIE5BTkQgZXJhc2Vk IHBhZ2UgYml0ZmxpcHMuIFRoZQogICBRQ09NIE5BTkQgY29udHJvbGxlciBjYW7igJl0IGRldGVj dCB0aGUgYml0ZmxpcCBpbiBjb21wbGV0ZWx5IGVyYXNlZAogICBwYWdlIHNvIGFkZGVkIHRoZSBz dXBwb3J0IHRvIGRldGVjdCB0aGUgc2FtZS4gSXQgaW1wbGVtZW50ZWQgdGhlCiAgIGxvZ2ljIG1l bnRpb25lZCBpbiBwYXRjaCBbMV0gd2hpY2ggZGlkbuKAmXQgZ28gaW4gbWFpbmxpbmUgYW5kIGxh dGVyCiAgIHRoZSBnZW5lcmljIGZ1bmN0aW9ucyB3ZXJlIHByb3ZpZGVkIFsyXSB0byBjb3VudCB0 aGUgbnVtYmVyIG9mCiAgIGJpdGZsaXBzIGFuZCBtYWtlIGFsbCAweGZmLiBUaGlzIHBhdGNoIHNl cmllcyBkaWQgc29tZSBvcHRpbWl6YXRpb24KICAgbG9naWMgdG8gcHJldmVudCB0aGUgdW5uZWNl c3NhcnkgZnVsbCBwYWdlIHJhdyByZWFkIGFuZCBkYXRhIGNvcHkKICAgZnJvbSBRQ09NIE5BTkQg Y29udHJvbGxlciB0byBETUEuCgo0LiBGb2xsb3dpbmcgYXJlIHRoZSB0ZXN0aW5nIGRvbmUgZm9y IHRoZXNlIHBhdGNoZXMgaW4gUUNPTSBJUFE4MDc0CiAgIEhLMDEgKDQtYml0IGFuZCA4LWJpdCBF Q0MgY2hpcCkgYW5kIElQUTgwNnggQVAxNDggYm9hcmRzLgogICAgYS4gUnVuIGFsbCBtdGQgdGVz dCBhbmQgY2hlY2sgaWYgaXQgcGFzc2VzCiAgICBiLiBJbnRyb2R1Y2UgY3VzdG9tIGJpdGZsaXBz IGluIGVyYXNlZCBwYWdlIGFuZCBjaGVjayBpZiBpdAogICAgICAgcmV0dXJucyBubyBlcnJvci9F VUNMRUFOL0VCQURNU0cgZGVwZW5kaW5nIHVwb24gbnVtYmVyIG9mCiAgICAgICBiaXRmbGlwcyBh bmQgcG9zaXRpb24uCiAgICBjLiBJbnRyb2R1Y2UgZmFpbHVyZSBjb25kaXRpb24gZm9yIG9wZXJh dGlvbmFsIGZhaWx1cmUgYW5kCiAgICAgICBjaGVjayBpZiBpdCBkZXRlY3RzIHRoZSBzYW1lLgoK WzFdOiBodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzMyODk5NC8KWzJdOiBodHRw czovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzUwOTk3MC8KCkFiaGlzaGVrIFNhaHUgKDE1 KToKICBtdGQ6IHJhd25hbmQ6IGhlbHBlciBmdW5jdGlvbiBmb3Igc2V0dGluZyB1cCBFQ0MgY29u ZmlndXJhdGlvbgogIG10ZDogcmF3bmFuZDogZGVuYWxpOiB1c2UgaGVscGVyIGZ1bmN0aW9uIGZv ciBlY2Mgc2V0dXAKICBkdC1iaW5kaW5nczogcWNvbV9uYW5kYzogdXBkYXRlIGZvciBFQ0Mgc3Ry ZW5ndGggYW5kIHN0ZXAgc2l6ZQogIG10ZDogcmF3bmFuZDogcWNvbTogcmVtb3ZlIGR0IHByb3Bl cnR5IG5hbmQtZWNjLXN0ZXAtc2l6ZQogIG10ZDogcmF3bmFuZDogcWNvbTogdXNlIHRoZSBlY2Mg c3RyZW5ndGggZnJvbSBkZXZpY2UgcGFyYW1ldGVyCiAgbXRkOiByYXduYW5kOiBxY29tOiB3YWl0 IGZvciBkZXNjIGNvbXBsZXRpb24gaW4gYWxsIEJBTSBjaGFubmVscwogIG10ZDogcmF3bmFuZDog cWNvbTogZXJhc2VkIHBhZ2UgZGV0ZWN0aW9uIGZvciB1bmNvcnJlY3RhYmxlIGVycm9ycwogICAg b25seQogIG10ZDogcmF3bmFuZDogcWNvbTogZml4IG51bGwgcG9pbnRlciBhY2Nlc3MgZm9yIGVy YXNlZCBwYWdlIGRldGVjdGlvbgogIG10ZDogcmF3bmFuZDogcWNvbTogcGFyc2UgcmVhZCBlcnJv cnMgZm9yIHJlYWQgb29iIGFsc28KICBtdGQ6IHJhd25hbmQ6IHFjb206IG1vZGlmeSB3cml0ZV9v b2IgdG8gcmVtb3ZlIHJlYWQgY29kZXdvcmQgcGFydAogIG10ZDogcmF3bmFuZDogcWNvbTogZml4 IHJldHVybiB2YWx1ZSBmb3IgcmF3IHBhZ2UgcmVhZAogIG10ZDogcmF3bmFuZDogcWNvbTogY2hl Y2sgZm9yIG9wZXJhdGlvbiBlcnJvcnMgaW4gY2FzZSBvZiByYXcgcmVhZAogIG10ZDogcmF3bmFu ZDogcWNvbTogY29kZSByZW9yZ2FuaXphdGlvbiBmb3IgcmF3IHJlYWQKICBtdGQ6IHJhd25hbmQ6 IHFjb206IGVyYXNlZCBwYWdlIGJpdGZsaXBzIGRldGVjdGlvbgogIG10ZDogcmF3bmFuZDogcHJv dmlkZSBvbmx5IHNpbmdsZSBoZWxwZXIgZnVuY3Rpb24gZm9yIEVDQyBjb25mCgogLi4uL2Rldmlj ZXRyZWUvYmluZGluZ3MvbXRkL3Fjb21fbmFuZGMudHh0ICAgICAgICAgfCAgIDcgKy0KIGRyaXZl cnMvbXRkL25hbmQvcmF3L2RlbmFsaS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMwICstCiBk cml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX2Jhc2UuYyAgICAgICAgICAgICAgICAgICB8ICA3MiAr Ky0KIGRyaXZlcnMvbXRkL25hbmQvcmF3L3Fjb21fbmFuZGMuYyAgICAgICAgICAgICAgICAgIHwg NDkxICsrKysrKysrKysrKysrLS0tLS0tLQogaW5jbHVkZS9saW51eC9tdGQvcmF3bmFuZC5oICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMzgwIGluc2Vy dGlvbnMoKyksIDIzMCBkZWxldGlvbnMoLSkKCi0tIApRVUFMQ09NTSBJTkRJQSwgb24gYmVoYWxm IG9mIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuCmlzIGEgbWVtYmVyIG9mIENvZGUg QXVyb3JhIEZvcnVtLCBob3N0ZWQgYnkgVGhlIExpbnV4IEZvdW5kYXRpb24KCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRp c2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtbXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fVXX9-0001BB-Ec for linux-mtd@lists.infradead.org; Wed, 20 Jun 2018 07:28:08 +0000 From: Abhishek Sahu To: Boris Brezillon , Miquel Raynal Cc: David Woodhouse , Brian Norris , Marek Vasut , Richard Weinberger , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, Andy Gross , Archit Taneja , Abhishek Sahu Subject: [PATCH v4 00/15] Update for QCOM NAND driver Date: Wed, 20 Jun 2018 12:57:27 +0530 Message-Id: <1529479662-4026-1-git-send-email-absahu@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , * v4: 1. Added patch to make other ECC configurations function static. 2. Clubbed the DT update patches. 3. Removed the bad block related patch. Discussion is going on related with for proper solution so planning to submit separate patch series for all bad block related changes. 4. Made the single codeword raw read function and used the same for raw page read. 5. Changes in erased codeword detection to raw read function. * v3: 1. Addressed all review comments in v2. 2. Added patch for removing redundant nand-ecc-step-size DT property. 3. Renamed ECC configuration setup function with minor code changes. 4. Modified comments and commit message for few patches. * v2: 1. Addressed all review comments in v1. 1. Make the generic helper function for NAND ECC parameters setup and used this helper function for QCOM and Denali nand driver for ECC setup. 2. Modified commit message for some of the patches and added more comments. 3. Added new patch for fixing ‘return 0’ for raw read. 4. Removed the read last codeword part for nand oob write. 5. Reorganized bad block check function and removed the read_last_cw function completely. * v1: This patch series mainly deals with error handling and erased page bitflip detection for QCOM NAND driver. 1. The error handling was missing for some of the cases so fixed the same. 2. Add the support for taking ECC strength from ONFI parameter. The earlier QCOM boards were coming with 4-bit ECC chip but now the same boards are coming with 8-bit ECC chip since the earlier 4-bit parts are obsolete from some vendors. 3. We got few issues related with NAND erased page bitflips. The QCOM NAND controller can’t detect the bitflip in completely erased page so added the support to detect the same. It implemented the logic mentioned in patch [1] which didn’t go in mainline and later the generic functions were provided [2] to count the number of bitflips and make all 0xff. This patch series did some optimization logic to prevent the unnecessary full page raw read and data copy from QCOM NAND controller to DMA. 4. Following are the testing done for these patches in QCOM IPQ8074 HK01 (4-bit and 8-bit ECC chip) and IPQ806x AP148 boards. a. Run all mtd test and check if it passes b. Introduce custom bitflips in erased page and check if it returns no error/EUCLEAN/EBADMSG depending upon number of bitflips and position. c. Introduce failure condition for operational failure and check if it detects the same. [1]: https://patchwork.ozlabs.org/patch/328994/ [2]: https://patchwork.ozlabs.org/patch/509970/ Abhishek Sahu (15): mtd: rawnand: helper function for setting up ECC configuration mtd: rawnand: denali: use helper function for ecc setup dt-bindings: qcom_nandc: update for ECC strength and step size mtd: rawnand: qcom: remove dt property nand-ecc-step-size mtd: rawnand: qcom: use the ecc strength from device parameter mtd: rawnand: qcom: wait for desc completion in all BAM channels mtd: rawnand: qcom: erased page detection for uncorrectable errors only mtd: rawnand: qcom: fix null pointer access for erased page detection mtd: rawnand: qcom: parse read errors for read oob also mtd: rawnand: qcom: modify write_oob to remove read codeword part mtd: rawnand: qcom: fix return value for raw page read mtd: rawnand: qcom: check for operation errors in case of raw read mtd: rawnand: qcom: code reorganization for raw read mtd: rawnand: qcom: erased page bitflips detection mtd: rawnand: provide only single helper function for ECC conf .../devicetree/bindings/mtd/qcom_nandc.txt | 7 +- drivers/mtd/nand/raw/denali.c | 30 +- drivers/mtd/nand/raw/nand_base.c | 72 ++- drivers/mtd/nand/raw/qcom_nandc.c | 491 ++++++++++++++------- include/linux/mtd/rawnand.h | 10 +- 5 files changed, 380 insertions(+), 230 deletions(-) -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation