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 1812AC2BD09 for ; Mon, 1 Jul 2024 07:59:18 +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: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=XraWgvGaPRVq9NvEaa27h+liYNANp4uvyOTNIW64zFY=; b=TV2K8fvNGaVa2d ZEagxAJFqLjD/NkUL09Bk8Gi9r1hAcNBAre/H5NYEZ4DI2y9xRozyEOH8He+Mak4PiQUlbWoKwBPy Mi2/5vyfrxps0J6VIgdIasd0iqahhMOa5Y80roW4Wk6K/uK5ynoyl36SBMJRxEjp1MD1pzbri6Dxc U8/jtcAVZ3zf2+l67DuhrzoNVY/XEOha6MIyK735hxDaYf2KoJyGsoJfYSRiWvpzlw4/PKb4/jGfD Qr/8a4XXtglxyfbSHU2DmZhayqupX+7uAT1cfNo8NdHt0T1DEW8R39u0v4AFABR9oD+lZKPG3wnXs Ggsy5sjJ9VTAtvinRPWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sOBwR-000000029Td-2zzU; Mon, 01 Jul 2024 07:59:15 +0000 Received: from relay6-d.mail.gandi.net ([217.70.183.198]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sOBwN-000000029Sl-3yDZ for linux-mtd@lists.infradead.org; Mon, 01 Jul 2024 07:59:13 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 8DF8DC0007; Mon, 1 Jul 2024 07:59:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1719820748; 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=VnYjkt4W+JtgawHTtPYvcvrC4PMbXA6KCWVQb/ZdYAM=; b=KdLX/lkwSs2WZA5gbBWSDU+jfClAT46F/z0f5JNLiau4OleWYlWpIywo2/f+T6uW2JFdld 7Xtz0p7nHmWPYt1bOevGcQmc7ayRCMJq9zgemPwJ85wGiHybdjn7tDi2rzXpneQx14Hhaz iRqYcnP3XbrFhPnqNwXaOYLOehe8C20qIdLXdO2W5S79Fa/baFqZKjXx9xCEIWxxqgfmD7 Cjsn/FVQyeaZBOc5ZYFFWgW3DfDrqYzLwxTq5II34PAs+Z6lAgGLJxzCaH5rHkBqaant9j YPkrtYcRh9oQV7KhUiGltqd57B4PwrBiexxW9hpNLK/HzCEaPQHHb5WbTYensQ== Date: Mon, 1 Jul 2024 09:59:06 +0200 From: Miquel Raynal To: Maxim Anisimov Cc: Richard Weinberger , Vignesh Raghavendra , Martin Kurbanov , Michael Walle , Mark Brown , "Chia-Lin Kao (AceLan)" , linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org Subject: Re: [PATCH] mtd: spinand: Add support for HeYangTek HYF1GQ4UDACAE Message-ID: <20240701095906.2bc4a0d2@xps-13> In-Reply-To: <20240624061246.5292-1-maxim.anisimov.ua@gmail.com> References: <20240624061246.5292-1-maxim.anisimov.ua@gmail.com> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-pc-linux-gnu) 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-20240701_005912_410457_7EE3C334 X-CRM114-Status: GOOD ( 24.43 ) 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 SGkgTWF4aW0sCgptYXhpbS5hbmlzaW1vdi51YUBnbWFpbC5jb20gd3JvdGUgb24gTW9uLCAyNCBK dW4gMjAyNCAwOToxMjoxNyArMDMwMDoKCj4gQWRkIFN1cHBvcnQgSGVZYW5nVGVrIEhZRjFHUTRV REFDQUUgU1BJIE5BTkQuCj4gCj4gRGF0YXNoZWV0IExpbms6Cj4gLSBodHRwczovL3d3dy5oZXlh bmd0ZWsuY24vcHJldmlld2ZpbGUuanNwP2ZpbGU9QUJVSUFCQTlHQUFnd3N2Um53WW8tZURwc2dj CgpUaGFua3MgZm9yIHRoZSBwYXRjaCEgRmV3IGNvbW1lbnRzIGJlbG93LgoKPiBTaWduZWQtb2Zm LWJ5OiBNYXhpbSBBbmlzaW1vdiA8bWF4aW0uYW5pc2ltb3YudWFAZ21haWwuY29tPgo+IC0tLQo+ ICBkcml2ZXJzL210ZC9uYW5kL3NwaS9NYWtlZmlsZSAgICB8ICAgNCArLQo+ICBkcml2ZXJzL210 ZC9uYW5kL3NwaS9jb3JlLmMgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvbXRkL25hbmQvc3BpL2hl eWFuZ3Rlay5jIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVk ZS9saW51eC9tdGQvc3BpbmFuZC5oICAgICAgfCAgIDEgKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDEx NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9tdGQvbmFuZC9zcGkvaGV5YW5ndGVrLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t dGQvbmFuZC9zcGkvTWFrZWZpbGUgYi9kcml2ZXJzL210ZC9uYW5kL3NwaS9NYWtlZmlsZQo+IGlu ZGV4IDE5Y2M3NzI4OGViYi4uNjlkOTVmYmRkMGNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbXRk L25hbmQvc3BpL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9zcGkvTWFrZWZpbGUK PiBAQCAtMSw0ICsxLDQgQEAKPiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ IC1zcGluYW5kLW9ianMgOj0gY29yZS5vIGFsbGlhbmNlbWVtb3J5Lm8gYXRvLm8gZXNtdC5vIGZv cmVzZWUubyBnaWdhZGV2aWNlLm8gbWFjcm9uaXgubwo+IC1zcGluYW5kLW9ianMgKz0gbWljcm9u Lm8gcGFyYWdvbi5vIHRvc2hpYmEubyB3aW5ib25kLm8geHR4Lm8KPiArc3BpbmFuZC1vYmpzIDo9 IGNvcmUubyBhbGxpYW5jZW1lbW9yeS5vIGF0by5vIGVzbXQubyBmb3Jlc2VlLm8gZ2lnYWRldmlj ZS5vIGhleWFuZ3Rlay5vCj4gK3NwaW5hbmQtb2JqcyArPSBtYWNyb25peC5vIG1pY3Jvbi5vIHBh cmFnb24ubyB0b3NoaWJhLm8gd2luYm9uZC5vIHh0eC5vCj4gIG9iai0kKENPTkZJR19NVERfU1BJ X05BTkQpICs9IHNwaW5hbmQubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3NwaS9j b3JlLmMgYi9kcml2ZXJzL210ZC9uYW5kL3NwaS9jb3JlLmMKPiBpbmRleCBlMGI2NzE1ZTVkZmUu LjQ1Nzk1ZTVmMWU0OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3NwaS9jb3JlLmMK PiArKysgYi9kcml2ZXJzL210ZC9uYW5kL3NwaS9jb3JlLmMKPiBAQCAtOTQyLDYgKzk0Miw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXIgKnNwaW5hbmRfbWFudWZh Y3R1cmVyc1tdID0gewo+ICAJJmVzbXRfYzhfc3BpbmFuZF9tYW51ZmFjdHVyZXIsCj4gIAkmZm9y ZXNlZV9zcGluYW5kX21hbnVmYWN0dXJlciwKPiAgCSZnaWdhZGV2aWNlX3NwaW5hbmRfbWFudWZh Y3R1cmVyLAo+ICsJJmhleWFuZ3Rla19zcGluYW5kX21hbnVmYWN0dXJlciwKPiAgCSZtYWNyb25p eF9zcGluYW5kX21hbnVmYWN0dXJlciwKPiAgCSZtaWNyb25fc3BpbmFuZF9tYW51ZmFjdHVyZXIs Cj4gIAkmcGFyYWdvbl9zcGluYW5kX21hbnVmYWN0dXJlciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tdGQvbmFuZC9zcGkvaGV5YW5ndGVrLmMgYi9kcml2ZXJzL210ZC9uYW5kL3NwaS9oZXlhbmd0 ZWsuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kNGE1ZGJj YTQwZmIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9zcGkvaGV5YW5n dGVrLmMKPiBAQCAtMCwwICsxLDExMiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAo+ICsvKgo+ICsgKiBBdXRob3I6Cj4gKyAqICAgICAgQW5kcmV5IFpvbG90YXJldiA8 YW5kcmV5LnpvbG90YXJldkBrZWVuZXRpYy5jb20+IC0gdGhlIG1haW4gZHJpdmVyIGxvZ2ljCj4g KyAqICAgICAgTWF4aW0gQW5pc2ltb3YgPG1heGltLmFuaXNpbW92LnVhQGdtYWlsLmNvbT4gLSBh ZGFwdGF0aW9uIHRvIG1haW5saW5lIGxpbnV4IGtlcm5lbAo+ICsgKgo+ICsgKiBCYXNlZCBvbjoK PiArICogICAgICBodHRwczovL2dpdGh1Yi5jb20va2VlbmV0aWMva2VybmVsLTQ5L2NvbW1pdC9i YWNhZGU1NjlmYjEyYmMwYWQzMWJhMDliY2E5Yjg5MDExOGZiY2E3Cj4gKyAqLwo+ICsKPiArI2lu Y2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9tdGQvc3BpbmFuZC5oPgo+ICsKPiArI2RlZmluZSBTUElOQU5EX01GUl9I RVlBTkdURUsJCTB4QzkKPiArCj4gKyNkZWZpbmUgU1RBVFVTX0VDQ19MSU1JVF9CSVRGTElQUwko MyA8PCA0KQo+ICsKPiArc3RhdGljIFNQSU5BTkRfT1BfVkFSSUFOVFMocmVhZF9jYWNoZV92YXJp YW50cywKPiArCQlTUElOQU5EX1BBR0VfUkVBRF9GUk9NX0NBQ0hFX1FVQURJT19PUCgwLCAxLCBO VUxMLCAwKSwKPiArCQlTUElOQU5EX1BBR0VfUkVBRF9GUk9NX0NBQ0hFX1g0X09QKDAsIDEsIE5V TEwsIDApLAo+ICsJCVNQSU5BTkRfUEFHRV9SRUFEX0ZST01fQ0FDSEVfRFVBTElPX09QKDAsIDEs IE5VTEwsIDApLAo+ICsJCVNQSU5BTkRfUEFHRV9SRUFEX0ZST01fQ0FDSEVfWDJfT1AoMCwgMSwg TlVMTCwgMCksCj4gKwkJU1BJTkFORF9QQUdFX1JFQURfRlJPTV9DQUNIRV9PUCh0cnVlLCAwLCAx LCBOVUxMLCAwKSwKPiArCQlTUElOQU5EX1BBR0VfUkVBRF9GUk9NX0NBQ0hFX09QKGZhbHNlLCAw LCAxLCBOVUxMLCAwKSk7Cj4gKwo+ICtzdGF0aWMgU1BJTkFORF9PUF9WQVJJQU5UUyh3cml0ZV9j YWNoZV92YXJpYW50cywKPiArCQlTUElOQU5EX1BST0dfTE9BRF9YNCh0cnVlLCAwLCBOVUxMLCAw KSwKPiArCQlTUElOQU5EX1BST0dfTE9BRCh0cnVlLCAwLCBOVUxMLCAwKSk7Cj4gKwo+ICtzdGF0 aWMgU1BJTkFORF9PUF9WQVJJQU5UUyh1cGRhdGVfY2FjaGVfdmFyaWFudHMsCj4gKwkJU1BJTkFO RF9QUk9HX0xPQURfWDQoZmFsc2UsIDAsIE5VTEwsIDApLAo+ICsJCVNQSU5BTkRfUFJPR19MT0FE KGZhbHNlLCAwLCBOVUxMLCAwKSk7Cj4gKwo+ICtzdGF0aWMgaW50IGh5ZnhncTR1ZGFfb29ibGF5 b3V0X2VjYyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNlY3Rpb24sCj4gKwkJCQkgICBzdHJ1 Y3QgbXRkX29vYl9yZWdpb24gKnJlZ2lvbikKPiArewo+ICsJaWYgKHNlY3Rpb24gPiAzKQo+ICsJ CXJldHVybiAtRVJBTkdFOwo+ICsKPiArCXJlZ2lvbi0+b2Zmc2V0ID0gc2VjdGlvbiAqIDE2ICsg ODsKPiArCXJlZ2lvbi0+bGVuZ3RoID0gODsKClRoaXMgaXM6IDgtMTUsIDI0LTMxLCA0MC00Nywg NTYtNjIKCj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaHlmeGdxNHVk YV9vb2JsYXlvdXRfZnJlZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNlY3Rpb24sCj4gKwkJ CQkgICBzdHJ1Y3QgbXRkX29vYl9yZWdpb24gKnJlZ2lvbikKPiArewo+ICsJaWYgKHNlY3Rpb24g PiAzKQo+ICsJCXJldHVybiAtRVJBTkdFOwo+ICsKPiArCS8qIEVDQy1wcm90ZWN0ZWQgdXNlciBt ZXRhLWRhdGEgKi8KPiArCXJlZ2lvbi0+b2Zmc2V0ID0gc2VjdGlvbiAqIDE2ICsgNDsKPiArCXJl Z2lvbi0+bGVuZ3RoID0gNDsKClRoaXMgaXM6IDQtNywgMjAtMjMsIDMyLTM1LCA0OC01MQoKU28g d2hhdCBhYm91dCAyLTQsIDE2LTE5LCAzNi0zOSwgNTItNTUsIDYzLTY0ID8KCj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRkX29vYmxheW91dF9vcHMg aHlmeGdxNHVkYV9vb2JsYXlvdXQgPSB7Cj4gKwkuZWNjID0gaHlmeGdxNHVkYV9vb2JsYXlvdXRf ZWNjLAo+ICsJLmZyZWUgPSBoeWZ4Z3E0dWRhX29vYmxheW91dF9mcmVlLAo+ICt9Owo+ICsKPiAr c3RhdGljIGludCBoeWZ4Z3E0dWRhX2VjY19nZXRfc3RhdHVzKHN0cnVjdCBzcGluYW5kX2Rldmlj ZSAqc3BpbmFuZCwKPiArCQkJCSAgICAgdTggc3RhdHVzKQo+ICt7Cj4gKwlzdHJ1Y3QgbmFuZF9k ZXZpY2UgKm5hbmQgPSBzcGluYW5kX3RvX25hbmQoc3BpbmFuZCk7Cj4gKwo+ICsJc3dpdGNoIChz dGF0dXMgJiBTVEFUVVNfRUNDX01BU0spIHsKPiArCWNhc2UgU1RBVFVTX0VDQ19OT19CSVRGTElQ UzoKPiArCQlyZXR1cm4gMDsKPiArCj4gKwljYXNlIFNUQVRVU19FQ0NfVU5DT1JfRVJST1I6Cj4g KwkJcmV0dXJuIC1FQkFETVNHOwo+ICsKPiArCWNhc2UgU1RBVFVTX0VDQ19IQVNfQklURkxJUFM6 Cj4gKwkJcmV0dXJuIG5hbmRkZXZfZ2V0X2VjY19jb25mKG5hbmQpLT5zdHJlbmd0aCA+PiAxOwoK TWF5YmUgYW4gZXhwbGFuYXRpb24gb2YgdGhpcyBsaW5lIGlzIG5lZWRlZC4gSXMgdGhpcyBqdXN0 IGd1ZXNzaW5nIG9yCmlzIHRoaXMgZGVmaW5lZCBpbiB0aGUgZGF0YXNoZWV0PwoKQWxzbyBwbGVh c2UgZG8gbm90IHVzZSBzaGlmdHMgd2hlbiB5b3Ugd2FudCB0byBkaXZpZGUuIEp1c3QgdXNlIC8g Mgp3aGljaCBpcyBlYXNpZXIgdG8gdW5kZXJzdGFuZC4gQ29tcGlsZXJzIGtub3cgaG93IHRvIG9w dGltaXplIHRoYXQuCgo+ICsKPiArCWNhc2UgU1RBVFVTX0VDQ19MSU1JVF9CSVRGTElQUzoKPiAr CQlyZXR1cm4gbmFuZGRldl9nZXRfZWNjX2NvbmYobmFuZCktPnN0cmVuZ3RoOwo+ICsKPiArCWRl ZmF1bHQ6Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9pbmZvIGhleWFuZ3Rla19zcGluYW5kX3Rh YmxlW10gPSB7Cj4gKwlTUElOQU5EX0lORk8oIkhZRjFHUTRVREFDQUUiLAo+ICsJCSAgICAgU1BJ TkFORF9JRChTUElOQU5EX1JFQURJRF9NRVRIT0RfT1BDT0RFX0FERFIsIDB4MjEpLAo+ICsJCSAg ICAgTkFORF9NRU1PUkcoMSwgMjA0OCwgNjQsIDY0LCAxMDI0LCAyMCwgMSwgMSwgMSksCj4gKwkJ ICAgICBOQU5EX0VDQ1JFUSg0LCA1MTIpLAo+ICsJCSAgICAgU1BJTkFORF9JTkZPX09QX1ZBUklB TlRTKCZyZWFkX2NhY2hlX3ZhcmlhbnRzLAo+ICsJCQkJCSAgICAgICZ3cml0ZV9jYWNoZV92YXJp YW50cywKPiArCQkJCQkgICAgICAmdXBkYXRlX2NhY2hlX3ZhcmlhbnRzKSwKPiArCQkgICAgIFNQ SU5BTkRfSEFTX1FFX0JJVCwKPiArCQkgICAgIFNQSU5BTkRfRUNDSU5GTygmaHlmeGdxNHVkYV9v b2JsYXlvdXQsCj4gKwkJCQkgICAgIGh5ZnhncTR1ZGFfZWNjX2dldF9zdGF0dXMpKSwKPiArfTsK PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXJfb3BzIGhleWFu Z3Rla19zcGluYW5kX21hbnVmX29wcyA9IHsKPiArfTsKPiArCj4gK2NvbnN0IHN0cnVjdCBzcGlu YW5kX21hbnVmYWN0dXJlciBoZXlhbmd0ZWtfc3BpbmFuZF9tYW51ZmFjdHVyZXIgPSB7Cj4gKwku aWQgPSBTUElOQU5EX01GUl9IRVlBTkdURUssCj4gKwkubmFtZSA9ICJIZVlhbmdUZWsiLAo+ICsJ LmNoaXBzID0gaGV5YW5ndGVrX3NwaW5hbmRfdGFibGUsCj4gKwkubmNoaXBzID0gQVJSQVlfU0la RShoZXlhbmd0ZWtfc3BpbmFuZF90YWJsZSksCj4gKwkub3BzID0gJmhleWFuZ3Rla19zcGluYW5k X21hbnVmX29wcywKPiArfTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvc3BpbmFu ZC5oIGIvaW5jbHVkZS9saW51eC9tdGQvc3BpbmFuZC5oCj4gaW5kZXggNWMxOWVhZDYwNDk5Li4w NmVlMzVhMjdlM2IgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvc3BpbmFuZC5oCj4g KysrIGIvaW5jbHVkZS9saW51eC9tdGQvc3BpbmFuZC5oCj4gQEAgLTI2NSw2ICsyNjUsNyBAQCBl eHRlcm4gY29uc3Qgc3RydWN0IHNwaW5hbmRfbWFudWZhY3R1cmVyIGF0b19zcGluYW5kX21hbnVm YWN0dXJlcjsKPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciBlc210 X2M4X3NwaW5hbmRfbWFudWZhY3R1cmVyOwo+ICBleHRlcm4gY29uc3Qgc3RydWN0IHNwaW5hbmRf bWFudWZhY3R1cmVyIGZvcmVzZWVfc3BpbmFuZF9tYW51ZmFjdHVyZXI7Cj4gIGV4dGVybiBjb25z dCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXIgZ2lnYWRldmljZV9zcGluYW5kX21hbnVmYWN0 dXJlcjsKPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciBoZXlhbmd0 ZWtfc3BpbmFuZF9tYW51ZmFjdHVyZXI7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9t YW51ZmFjdHVyZXIgbWFjcm9uaXhfc3BpbmFuZF9tYW51ZmFjdHVyZXI7Cj4gIGV4dGVybiBjb25z dCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXIgbWljcm9uX3NwaW5hbmRfbWFudWZhY3R1cmVy Owo+ICBleHRlcm4gY29uc3Qgc3RydWN0IHNwaW5hbmRfbWFudWZhY3R1cmVyIHBhcmFnb25fc3Bp bmFuZF9tYW51ZmFjdHVyZXI7CgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24g bWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtbXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) (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 0FF7737142 for ; Mon, 1 Jul 2024 07:59:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.198 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719820752; cv=none; b=ZvixL4dpUWnmcZITXdEs5W6s1Z3jAPoW44bBD6VJXeUmAu2G7OFR4rM1QJavPKAbFX95EIm0HZp4nJ7DKxKxwncGD7umghm1xVV+HDEX4Hk5K04zc6M/UXXMV6NomsblCxqX+B4IVSBhtTtaN+gfEQxF1bvFAVF9Ndnav+5JFqg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719820752; c=relaxed/simple; bh=VqEo5x8tReRP6eqJ0VEUTdHpftnZIN6k4UGcxgRM2gg=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=LxxifGz3wBaP6RuBztqaM4XUEGK4WQeK4GeDCgNV2S9iIr72/cHEdoICEp1Cps8kCVyLYXu7qgwouv4CYLFAJNKfxxLtQevzwUzm0DpXO0fJ2WJG5a1dpZ0cRxbL/WFUlGARd5IEWGqhGXgazyohkFwUt3LiUVit4OL3WWdx+3Q= 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=KdLX/lkw; arc=none smtp.client-ip=217.70.183.198 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="KdLX/lkw" Received: by mail.gandi.net (Postfix) with ESMTPSA id 8DF8DC0007; Mon, 1 Jul 2024 07:59:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1719820748; 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=VnYjkt4W+JtgawHTtPYvcvrC4PMbXA6KCWVQb/ZdYAM=; b=KdLX/lkwSs2WZA5gbBWSDU+jfClAT46F/z0f5JNLiau4OleWYlWpIywo2/f+T6uW2JFdld 7Xtz0p7nHmWPYt1bOevGcQmc7ayRCMJq9zgemPwJ85wGiHybdjn7tDi2rzXpneQx14Hhaz iRqYcnP3XbrFhPnqNwXaOYLOehe8C20qIdLXdO2W5S79Fa/baFqZKjXx9xCEIWxxqgfmD7 Cjsn/FVQyeaZBOc5ZYFFWgW3DfDrqYzLwxTq5II34PAs+Z6lAgGLJxzCaH5rHkBqaant9j YPkrtYcRh9oQV7KhUiGltqd57B4PwrBiexxW9hpNLK/HzCEaPQHHb5WbTYensQ== Date: Mon, 1 Jul 2024 09:59:06 +0200 From: Miquel Raynal To: Maxim Anisimov Cc: Richard Weinberger , Vignesh Raghavendra , Martin Kurbanov , Michael Walle , Mark Brown , "Chia-Lin Kao (AceLan)" , linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org Subject: Re: [PATCH] mtd: spinand: Add support for HeYangTek HYF1GQ4UDACAE Message-ID: <20240701095906.2bc4a0d2@xps-13> In-Reply-To: <20240624061246.5292-1-maxim.anisimov.ua@gmail.com> References: <20240624061246.5292-1-maxim.anisimov.ua@gmail.com> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-pc-linux-gnu) 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 Maxim, maxim.anisimov.ua@gmail.com wrote on Mon, 24 Jun 2024 09:12:17 +0300: > Add Support HeYangTek HYF1GQ4UDACAE SPI NAND. >=20 > Datasheet Link: > - https://www.heyangtek.cn/previewfile.jsp?file=3DABUIABA9GAAgwsvRnwYo-eD= psgc Thanks for the patch! Few comments below. > Signed-off-by: Maxim Anisimov > --- > drivers/mtd/nand/spi/Makefile | 4 +- > drivers/mtd/nand/spi/core.c | 1 + > drivers/mtd/nand/spi/heyangtek.c | 112 +++++++++++++++++++++++++++++++ > include/linux/mtd/spinand.h | 1 + > 4 files changed, 116 insertions(+), 2 deletions(-) > create mode 100644 drivers/mtd/nand/spi/heyangtek.c >=20 > diff --git a/drivers/mtd/nand/spi/Makefile b/drivers/mtd/nand/spi/Makefile > index 19cc77288ebb..69d95fbdd0ce 100644 > --- a/drivers/mtd/nand/spi/Makefile > +++ b/drivers/mtd/nand/spi/Makefile > @@ -1,4 +1,4 @@ > # SPDX-License-Identifier: GPL-2.0 > -spinand-objs :=3D core.o alliancememory.o ato.o esmt.o foresee.o gigadev= ice.o macronix.o > -spinand-objs +=3D micron.o paragon.o toshiba.o winbond.o xtx.o > +spinand-objs :=3D core.o alliancememory.o ato.o esmt.o foresee.o gigadev= ice.o heyangtek.o > +spinand-objs +=3D macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o > obj-$(CONFIG_MTD_SPI_NAND) +=3D spinand.o > diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c > index e0b6715e5dfe..45795e5f1e49 100644 > --- a/drivers/mtd/nand/spi/core.c > +++ b/drivers/mtd/nand/spi/core.c > @@ -942,6 +942,7 @@ static const struct spinand_manufacturer *spinand_man= ufacturers[] =3D { > &esmt_c8_spinand_manufacturer, > &foresee_spinand_manufacturer, > &gigadevice_spinand_manufacturer, > + &heyangtek_spinand_manufacturer, > ¯onix_spinand_manufacturer, > µn_spinand_manufacturer, > ¶gon_spinand_manufacturer, > diff --git a/drivers/mtd/nand/spi/heyangtek.c b/drivers/mtd/nand/spi/heya= ngtek.c > new file mode 100644 > index 000000000000..d4a5dbca40fb > --- /dev/null > +++ b/drivers/mtd/nand/spi/heyangtek.c > @@ -0,0 +1,112 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Author: > + * Andrey Zolotarev - the main driv= er logic > + * Maxim Anisimov - adaptation to mai= nline linux kernel > + * > + * Based on: > + * https://github.com/keenetic/kernel-49/commit/bacade569fb12bc0ad3= 1ba09bca9b890118fbca7 > + */ > + > +#include > +#include > +#include > + > +#define SPINAND_MFR_HEYANGTEK 0xC9 > + > +#define STATUS_ECC_LIMIT_BITFLIPS (3 << 4) > + > +static SPINAND_OP_VARIANTS(read_cache_variants, > + SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 1, NULL, 0), > + SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0), > + SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0), > + SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0), > + SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0), > + SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0)); > + > +static SPINAND_OP_VARIANTS(write_cache_variants, > + SPINAND_PROG_LOAD_X4(true, 0, NULL, 0), > + SPINAND_PROG_LOAD(true, 0, NULL, 0)); > + > +static SPINAND_OP_VARIANTS(update_cache_variants, > + SPINAND_PROG_LOAD_X4(false, 0, NULL, 0), > + SPINAND_PROG_LOAD(false, 0, NULL, 0)); > + > +static int hyfxgq4uda_ooblayout_ecc(struct mtd_info *mtd, int section, > + struct mtd_oob_region *region) > +{ > + if (section > 3) > + return -ERANGE; > + > + region->offset =3D section * 16 + 8; > + region->length =3D 8; This is: 8-15, 24-31, 40-47, 56-62 > + > + return 0; > +} > + > +static int hyfxgq4uda_ooblayout_free(struct mtd_info *mtd, int section, > + struct mtd_oob_region *region) > +{ > + if (section > 3) > + return -ERANGE; > + > + /* ECC-protected user meta-data */ > + region->offset =3D section * 16 + 4; > + region->length =3D 4; This is: 4-7, 20-23, 32-35, 48-51 So what about 2-4, 16-19, 36-39, 52-55, 63-64 ? > + > + return 0; > +} > + > +static const struct mtd_ooblayout_ops hyfxgq4uda_ooblayout =3D { > + .ecc =3D hyfxgq4uda_ooblayout_ecc, > + .free =3D hyfxgq4uda_ooblayout_free, > +}; > + > +static int hyfxgq4uda_ecc_get_status(struct spinand_device *spinand, > + u8 status) > +{ > + struct nand_device *nand =3D spinand_to_nand(spinand); > + > + switch (status & STATUS_ECC_MASK) { > + case STATUS_ECC_NO_BITFLIPS: > + return 0; > + > + case STATUS_ECC_UNCOR_ERROR: > + return -EBADMSG; > + > + case STATUS_ECC_HAS_BITFLIPS: > + return nanddev_get_ecc_conf(nand)->strength >> 1; Maybe an explanation of this line is needed. Is this just guessing or is this defined in the datasheet? Also please do not use shifts when you want to divide. Just use / 2 which is easier to understand. Compilers know how to optimize that. > + > + case STATUS_ECC_LIMIT_BITFLIPS: > + return nanddev_get_ecc_conf(nand)->strength; > + > + default: > + break; > + } > + > + return -EINVAL; > +} > + > +static const struct spinand_info heyangtek_spinand_table[] =3D { > + SPINAND_INFO("HYF1GQ4UDACAE", > + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x21), > + NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), > + NAND_ECCREQ(4, 512), > + SPINAND_INFO_OP_VARIANTS(&read_cache_variants, > + &write_cache_variants, > + &update_cache_variants), > + SPINAND_HAS_QE_BIT, > + SPINAND_ECCINFO(&hyfxgq4uda_ooblayout, > + hyfxgq4uda_ecc_get_status)), > +}; > + > +static const struct spinand_manufacturer_ops heyangtek_spinand_manuf_ops= =3D { > +}; > + > +const struct spinand_manufacturer heyangtek_spinand_manufacturer =3D { > + .id =3D SPINAND_MFR_HEYANGTEK, > + .name =3D "HeYangTek", > + .chips =3D heyangtek_spinand_table, > + .nchips =3D ARRAY_SIZE(heyangtek_spinand_table), > + .ops =3D &heyangtek_spinand_manuf_ops, > +}; > diff --git a/include/linux/mtd/spinand.h b/include/linux/mtd/spinand.h > index 5c19ead60499..06ee35a27e3b 100644 > --- a/include/linux/mtd/spinand.h > +++ b/include/linux/mtd/spinand.h > @@ -265,6 +265,7 @@ extern const struct spinand_manufacturer ato_spinand_= manufacturer; > extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer; > extern const struct spinand_manufacturer foresee_spinand_manufacturer; > extern const struct spinand_manufacturer gigadevice_spinand_manufacturer; > +extern const struct spinand_manufacturer heyangtek_spinand_manufacturer; > extern const struct spinand_manufacturer macronix_spinand_manufacturer; > extern const struct spinand_manufacturer micron_spinand_manufacturer; > extern const struct spinand_manufacturer paragon_spinand_manufacturer; Thanks, Miqu=C3=A8l