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.5 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 CC322C433DB for ; Mon, 4 Jan 2021 14:19:12 +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 7FE9520784 for ; Mon, 4 Jan 2021 14:19:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7FE9520784 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=CvNwdrwjtm+xJlowXL+HbUTgg3fTzKx4rhgUdeHUJAA=; b=UlYyYvEFAjE/kqrwvzqdr4jDM 9sQnCNXsRWtV15a0aquX93wtKnMM2yfNEhr5bktfHXfrJFqil5roaSsDe7h/xCPExGKQk1vdyIlSh mfRNLgN77SGzScgRQKOQXNPICc0VfDQ1uvM01XglU9WuU9Y7zK8ZDNJC8rfTpJDZIfEDJNH97bei6 2wQFBurQiNFQl7yRRtF3zOn1lpLNh2T6woTffHB64eCZPMty1yCIFEIQjIWFlPnKRhd0HJWcrjHNP lb+RO27BkkeNSgTWJCCM5l1LBWk4QqX35hNXPtWQCkx3Qq9cvdRM+COQiBbaRAcgXzWe8rF+Q8Mld uVlg8YY4g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kwQgO-0002SQ-PG; Mon, 04 Jan 2021 14:18:04 +0000 Received: from relay7-d.mail.gandi.net ([217.70.183.200]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kwQgM-0002Rm-42 for linux-mtd@lists.infradead.org; Mon, 04 Jan 2021 14:18:03 +0000 X-Originating-IP: 90.89.98.255 Received: from xps13 (lfbn-tou-1-1535-bdcst.w90-89.abo.wanadoo.fr [90.89.98.255]) (Authenticated sender: miquel.raynal@bootlin.com) by relay7-d.mail.gandi.net (Postfix) with ESMTPSA id AA3D42000C; Mon, 4 Jan 2021 14:17:47 +0000 (UTC) Date: Mon, 4 Jan 2021 15:17:46 +0100 From: Miquel Raynal To: Daniel Palmer Subject: Re: [PATCH 1/1] mtd: spinand: add support for Foresee FS35ND01G Message-ID: <20210104151746.21cdde24@xps13> In-Reply-To: <20201229055059.2255021-2-daniel@0x0f.com> References: <20201229055059.2255021-1-daniel@0x0f.com> <20201229055059.2255021-2-daniel@0x0f.com> 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-20210104_091802_447042_1F1C906C X-CRM114-Status: GOOD ( 21.66 ) 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: richard@nod.at, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, vigneshr@ti.com 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 SGkgRGFuaWVsLAoKRGFuaWVsIFBhbG1lciA8ZGFuaWVsQDB4MGYuY29tPiB3cm90ZSBvbiBUdWUs IDI5IERlYyAyMDIwIDE0OjUwOjU5CiswOTAwOgoKPiBBZGQgc3VwcG9ydCBmb3IgdGhlIEZvcmVz ZWUgRlMzNU5EMDFHIG1hbnVmYWN0dXJlZCBieSBMb25nc3lzLgoKVGhhbmtzIGZvciBjb250cmli dXRpbmcgdGhpcyBiYWNrIQoKUGVyaGFwcyBnaXZpbmcgdGhlIGxpbmsgb2YgdGhlIGRhdGFzaGVl dCBoZXJlIG1ha2VzIHNlbnNlLgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgUGFsbWVyIDxk YW5pZWxAMHgwZi5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvbXRkL25hbmQvc3BpL01ha2VmaWxlICB8 ICAyICstCj4gIGRyaXZlcnMvbXRkL25hbmQvc3BpL2NvcmUuYyAgICB8ICAxICsKPiAgZHJpdmVy cy9tdGQvbmFuZC9zcGkvbG9uZ3N5cy5jIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICBpbmNsdWRlL2xpbnV4L210ZC9zcGluYW5kLmggICAgfCAgMSArCj4gIDQgZmls ZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tdGQvbmFuZC9zcGkvbG9uZ3N5cy5jCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbXRkL25hbmQvc3BpL01ha2VmaWxlIGIvZHJpdmVycy9tdGQvbmFuZC9zcGkvTWFr ZWZpbGUKPiBpbmRleCA5NjYyYjljMWQ1YTkuLjFkNjgxOTAyMmU0MyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL210ZC9uYW5kL3NwaS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvc3Bp L01ha2VmaWxlCj4gQEAgLTEsMyArMSwzIEBACj4gICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAKPiAtc3BpbmFuZC1vYmpzIDo9IGNvcmUubyBnaWdhZGV2aWNlLm8gbWFjcm9uaXgu byBtaWNyb24ubyBwYXJhZ29uLm8gdG9zaGliYS5vIHdpbmJvbmQubwo+ICtzcGluYW5kLW9ianMg Oj0gY29yZS5vIGdpZ2FkZXZpY2UubyBsb25nc3lzLm8gbWFjcm9uaXgubyBtaWNyb24ubyBwYXJh Z29uLm8gdG9zaGliYS5vIHdpbmJvbmQubwo+ICBvYmotJChDT05GSUdfTVREX1NQSV9OQU5EKSAr PSBzcGluYW5kLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jIGIv ZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gaW5kZXggOGVhNTQ1YmI5MjRkLi5iZGM5Y2Q0 NWQyMzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gKysrIGIv ZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gQEAgLTg1Niw2ICs4NTYsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IG5hbmRfb3BzIHNwaW5hbmRfb3BzID0gewo+ICAKPiAgc3RhdGljIGNvbnN0 IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciAqc3BpbmFuZF9tYW51ZmFjdHVyZXJzW10gPSB7 Cj4gIAkmZ2lnYWRldmljZV9zcGluYW5kX21hbnVmYWN0dXJlciwKPiArCSZsb25nc3lzX3NwaW5h bmRfbWFudWZhY3R1cmVyLAo+ICAJJm1hY3Jvbml4X3NwaW5hbmRfbWFudWZhY3R1cmVyLAo+ICAJ Jm1pY3Jvbl9zcGluYW5kX21hbnVmYWN0dXJlciwKPiAgCSZwYXJhZ29uX3NwaW5hbmRfbWFudWZh Y3R1cmVyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3NwaS9sb25nc3lzLmMgYi9k cml2ZXJzL210ZC9uYW5kL3NwaS9sb25nc3lzLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uZjE4MjcxZjhlOWQyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvbXRkL25hbmQvc3BpL2xvbmdzeXMuYwo+IEBAIC0wLDAgKzEsNDUgQEAKPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAy MDIwIERhbmllbCBQYWxtZXIgPGRhbmllbEB0aGluZ3kuanA+Cj4gKyAqCj4gKyAqLwo+ICsKPiAr I2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9tdGQvc3BpbmFuZC5oPgo+ICsKPiArI2RlZmluZSBTUElOQU5EX01G Ul9MT05HU1lTCQkweGNkCgpOaXRwaWNrOiBJIHBlcnNvbmFsbHkgcHJlZmVyIHVwcGVyY2FzZSBo ZXggbnVtYmVycy4KCj4gKwo+ICtzdGF0aWMgU1BJTkFORF9PUF9WQVJJQU5UUyhyZWFkX2NhY2hl X3ZhcmlhbnRzLAo+ICsJCVNQSU5BTkRfUEFHRV9SRUFEX0ZST01fQ0FDSEVfT1AodHJ1ZSwgMCwg MSwgTlVMTCwgMCksCj4gKwkJU1BJTkFORF9QQUdFX1JFQURfRlJPTV9DQUNIRV9PUChmYWxzZSwg MCwgMSwgTlVMTCwgMCkpOwo+ICsKPiArc3RhdGljIFNQSU5BTkRfT1BfVkFSSUFOVFMod3JpdGVf Y2FjaGVfdmFyaWFudHMsCj4gKwkJU1BJTkFORF9QUk9HX0xPQUQodHJ1ZSwgMCwgTlVMTCwgMCkp Owo+ICsKPiArc3RhdGljIFNQSU5BTkRfT1BfVkFSSUFOVFModXBkYXRlX2NhY2hlX3ZhcmlhbnRz LAo+ICsJCVNQSU5BTkRfUFJPR19MT0FEKGZhbHNlLCAwLCBOVUxMLCAwKSk7Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IHNwaW5hbmRfaW5mbyBsb25nc3lzX3NwaW5hbmRfdGFibGVbXSA9IHsK PiArCVNQSU5BTkRfSU5GTygiRlMzNU5EMDFHIiwKPiArCQkgICAgIFNQSU5BTkRfSUQoU1BJTkFO RF9SRUFESURfTUVUSE9EX09QQ09ERV9EVU1NWSwgMHhlYSwgMHgxMSksCgpEaXR0bwoKPiArCQkg ICAgIE5BTkRfTUVNT1JHKDEsIDIwNDgsIDY0LCA2NCwgMTAyNCwgMjAsIDEsIDEsIDEpLAo+ICsJ CSAgICAgTkFORF9FQ0NSRVEoNCwgNTEyKSwKPiArCQkgICAgIFNQSU5BTkRfSU5GT19PUF9WQVJJ QU5UUygmcmVhZF9jYWNoZV92YXJpYW50cywKPiArCQkJCQkgICAgICAmd3JpdGVfY2FjaGVfdmFy aWFudHMsCj4gKwkJCQkJICAgICAgJnVwZGF0ZV9jYWNoZV92YXJpYW50cyksCgpUaGlzIGRldmlj ZSBwcm9iYWJseSBzdXBwb3J0cyBtb3JlIHZhcmlhbnRzIChlc3BlY2lhbGx5IGR1YWwvcXVhZApv bmVzKSBidXQgSSBndWVzcyBpdCdzIG5vdCBhIHByb2JsZW0gdG8gbm90IGhhdmUgdGhlbSBoZXJl IHJpZ2h0IG5vdy4KCj4gKwkJICAgICBTUElOQU5EX0hBU19RRV9CSVQsCj4gKwkJICAgICBTUElO QU5EX0VDQ0lORk8oTlVMTCwKPiArCQkJCSAgICAgTlVMTCkpLAoKWW91IHNob3VsZCBkZWZpbmUg dGhlIC0+ZWNjIGFuZCAtPmZyZWUgaG9va3Mgb2YgdGhlCm10ZF9vb2JsYXlvdXRfb3BzIHN0cnVj dHVyZSBhbmQgcG9pbnQgdG8gaXQgaGVyZS4gSXQgZGVmaW5lcyB0aGUgZnJlZQpPT0IgYnl0ZXMg YW5kIGJ5dGVzIHVzZWQgYnkgdGhlIG9uLWRpZSBFQ0MgZW5naW5lLiBZb3Ugc2hvdWxkIGZpbmQg dGhpcwppbiB0aGUgZGF0YXNoZWV0LiBZb3UgbWF5IGxvb2sgYXQgb3RoZXIgbWFudWZhY3R1cmVy IGRyaXZlcnMgZm9yCmV4YW1wbGVzIG9mIGhvdyBpdCBzaG91bGQgYmUgaW1wbGVtZW50ZWQuIEl0 IGlzIHRoZSB3YXkgdG8gdGVsbCB0aGUKdXBwZXIgbGF5ZXJzIHRoYXQgZWcuICJieXRlIDIgdG8g MTcgYXJlIEVDQyBieXRlcywgMTggdW50aWwgdGhlIGVuZCBhcmUKZnJlZSB0byB1c2UiLgoKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXJfb3BzIGxv bmdzeXNfc3BpbmFuZF9tYW51Zl9vcHMgPSB7Cj4gK307Cj4gKwo+ICtjb25zdCBzdHJ1Y3Qgc3Bp bmFuZF9tYW51ZmFjdHVyZXIgbG9uZ3N5c19zcGluYW5kX21hbnVmYWN0dXJlciA9IHsKPiArCS5p ZCA9IFNQSU5BTkRfTUZSX0xPTkdTWVMsCj4gKwkubmFtZSA9ICJMb25nc3lzIiwKPiArCS5jaGlw cyA9IGxvbmdzeXNfc3BpbmFuZF90YWJsZSwKPiArCS5uY2hpcHMgPSBBUlJBWV9TSVpFKGxvbmdz eXNfc3BpbmFuZF90YWJsZSksCj4gKwkub3BzID0gJmxvbmdzeXNfc3BpbmFuZF9tYW51Zl9vcHMs Cj4gK307Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL3NwaW5hbmQuaCBiL2luY2x1 ZGUvbGludXgvbXRkL3NwaW5hbmQuaAo+IGluZGV4IDZiYjkyZjI2ODMzZS4uODY1MWU2M2EyZjhh IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvbXRkL3NwaW5hbmQuaAo+ICsrKyBiL2luY2x1 ZGUvbGludXgvbXRkL3NwaW5hbmQuaAo+IEBAIC0yMzksNiArMjM5LDcgQEAgc3RydWN0IHNwaW5h bmRfbWFudWZhY3R1cmVyIHsKPiAgCj4gIC8qIFNQSSBOQU5EIG1hbnVmYWN0dXJlcnMgKi8KPiAg ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciBnaWdhZGV2aWNlX3NwaW5h bmRfbWFudWZhY3R1cmVyOwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IHNwaW5hbmRfbWFudWZhY3R1 cmVyIGxvbmdzeXNfc3BpbmFuZF9tYW51ZmFjdHVyZXI7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3Qg c3BpbmFuZF9tYW51ZmFjdHVyZXIgbWFjcm9uaXhfc3BpbmFuZF9tYW51ZmFjdHVyZXI7Cj4gIGV4 dGVybiBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXIgbWljcm9uX3NwaW5hbmRfbWFu dWZhY3R1cmVyOwo+ICBleHRlcm4gY29uc3Qgc3RydWN0IHNwaW5hbmRfbWFudWZhY3R1cmVyIHBh cmFnb25fc3BpbmFuZF9tYW51ZmFjdHVyZXI7CgpMb29rcyBmaW5lIG90aGVyd2lzZSA6KQoKVGhh bmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= 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.3 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 B31A5C433E0 for ; Mon, 4 Jan 2021 14:18:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 762AC207BC for ; Mon, 4 Jan 2021 14:18:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727245AbhADOSc convert rfc822-to-8bit (ORCPT ); Mon, 4 Jan 2021 09:18:32 -0500 Received: from relay7-d.mail.gandi.net ([217.70.183.200]:57357 "EHLO relay7-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726586AbhADOSc (ORCPT ); Mon, 4 Jan 2021 09:18:32 -0500 X-Originating-IP: 90.89.98.255 Received: from xps13 (lfbn-tou-1-1535-bdcst.w90-89.abo.wanadoo.fr [90.89.98.255]) (Authenticated sender: miquel.raynal@bootlin.com) by relay7-d.mail.gandi.net (Postfix) with ESMTPSA id AA3D42000C; Mon, 4 Jan 2021 14:17:47 +0000 (UTC) Date: Mon, 4 Jan 2021 15:17:46 +0100 From: Miquel Raynal To: Daniel Palmer Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, richard@nod.at, vigneshr@ti.com Subject: Re: [PATCH 1/1] mtd: spinand: add support for Foresee FS35ND01G Message-ID: <20210104151746.21cdde24@xps13> In-Reply-To: <20201229055059.2255021-2-daniel@0x0f.com> References: <20201229055059.2255021-1-daniel@0x0f.com> <20201229055059.2255021-2-daniel@0x0f.com> 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 Hi Daniel, Daniel Palmer wrote on Tue, 29 Dec 2020 14:50:59 +0900: > Add support for the Foresee FS35ND01G manufactured by Longsys. Thanks for contributing this back! Perhaps giving the link of the datasheet here makes sense. > > Signed-off-by: Daniel Palmer > --- > drivers/mtd/nand/spi/Makefile | 2 +- > drivers/mtd/nand/spi/core.c | 1 + > drivers/mtd/nand/spi/longsys.c | 45 ++++++++++++++++++++++++++++++++++ > include/linux/mtd/spinand.h | 1 + > 4 files changed, 48 insertions(+), 1 deletion(-) > create mode 100644 drivers/mtd/nand/spi/longsys.c > > diff --git a/drivers/mtd/nand/spi/Makefile b/drivers/mtd/nand/spi/Makefile > index 9662b9c1d5a9..1d6819022e43 100644 > --- a/drivers/mtd/nand/spi/Makefile > +++ b/drivers/mtd/nand/spi/Makefile > @@ -1,3 +1,3 @@ > # SPDX-License-Identifier: GPL-2.0 > -spinand-objs := core.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o > +spinand-objs := core.o gigadevice.o longsys.o macronix.o micron.o paragon.o toshiba.o winbond.o > obj-$(CONFIG_MTD_SPI_NAND) += spinand.o > diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c > index 8ea545bb924d..bdc9cd45d232 100644 > --- a/drivers/mtd/nand/spi/core.c > +++ b/drivers/mtd/nand/spi/core.c > @@ -856,6 +856,7 @@ static const struct nand_ops spinand_ops = { > > static const struct spinand_manufacturer *spinand_manufacturers[] = { > &gigadevice_spinand_manufacturer, > + &longsys_spinand_manufacturer, > ¯onix_spinand_manufacturer, > µn_spinand_manufacturer, > ¶gon_spinand_manufacturer, > diff --git a/drivers/mtd/nand/spi/longsys.c b/drivers/mtd/nand/spi/longsys.c > new file mode 100644 > index 000000000000..f18271f8e9d2 > --- /dev/null > +++ b/drivers/mtd/nand/spi/longsys.c > @@ -0,0 +1,45 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (c) 2020 Daniel Palmer > + * > + */ > + > +#include > +#include > +#include > + > +#define SPINAND_MFR_LONGSYS 0xcd Nitpick: I personally prefer uppercase hex numbers. > + > +static SPINAND_OP_VARIANTS(read_cache_variants, > + 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(true, 0, NULL, 0)); > + > +static SPINAND_OP_VARIANTS(update_cache_variants, > + SPINAND_PROG_LOAD(false, 0, NULL, 0)); > + > +static const struct spinand_info longsys_spinand_table[] = { > + SPINAND_INFO("FS35ND01G", > + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xea, 0x11), Ditto > + 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), This device probably supports more variants (especially dual/quad ones) but I guess it's not a problem to not have them here right now. > + SPINAND_HAS_QE_BIT, > + SPINAND_ECCINFO(NULL, > + NULL)), You should define the ->ecc and ->free hooks of the mtd_ooblayout_ops structure and point to it here. It defines the free OOB bytes and bytes used by the on-die ECC engine. You should find this in the datasheet. You may look at other manufacturer drivers for examples of how it should be implemented. It is the way to tell the upper layers that eg. "byte 2 to 17 are ECC bytes, 18 until the end are free to use". > +}; > + > +static const struct spinand_manufacturer_ops longsys_spinand_manuf_ops = { > +}; > + > +const struct spinand_manufacturer longsys_spinand_manufacturer = { > + .id = SPINAND_MFR_LONGSYS, > + .name = "Longsys", > + .chips = longsys_spinand_table, > + .nchips = ARRAY_SIZE(longsys_spinand_table), > + .ops = &longsys_spinand_manuf_ops, > +}; > diff --git a/include/linux/mtd/spinand.h b/include/linux/mtd/spinand.h > index 6bb92f26833e..8651e63a2f8a 100644 > --- a/include/linux/mtd/spinand.h > +++ b/include/linux/mtd/spinand.h > @@ -239,6 +239,7 @@ struct spinand_manufacturer { > > /* SPI NAND manufacturers */ > extern const struct spinand_manufacturer gigadevice_spinand_manufacturer; > +extern const struct spinand_manufacturer longsys_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; Looks fine otherwise :) Thanks, Miquèl