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=-8.4 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,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 4EA33C47255 for ; Mon, 11 May 2020 17:44:48 +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 179F9206D6 for ; Mon, 11 May 2020 17:44:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="WePz2YjU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 179F9206D6 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=t/Tmzo5CnmM0KmoDo0PpXWIdkpzA7RPV9cgR/BJARcs=; b=WePz2YjUP1mLAw Xe/vRFBBYFXL61JHSbb1ASI2WElMLBmTCtfFltaTG++IFrJ8rx+pMPISIZINJ2HqzpN0UzdReFaUQ LlOR5926rfnUKfn3z7QgDaQ+zKsvKOBjeau5LAxO/eTQesc64eH5yOYmShYLXVIjn7E0GDhH8r4rp GFCkbk+j0gH79WQjfEyEIT04LuI8Erzm2DBBOQ9kjo6PvNilYYXy1s36VI9jkGscb5ShclT6g+GuD hWQgQghrZKakvCuOnuzCBgfqCJaC6f3xRpwLhW0KRwVtF/PlYToujZJAcARw+m8a/3BEPD1RZ5Jo8 PbXFKE8TKt5rY5fTbNZg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYCTb-00041u-F7; Mon, 11 May 2020 17:44:27 +0000 Received: from relay12.mail.gandi.net ([217.70.178.232]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYCTY-00041B-Vb for linux-mtd@lists.infradead.org; Mon, 11 May 2020 17:44:26 +0000 Received: from xps13 (unknown [91.224.148.103]) (Authenticated sender: miquel.raynal@bootlin.com) by relay12.mail.gandi.net (Postfix) with ESMTPSA id E52B1200006; Mon, 11 May 2020 17:44:21 +0000 (UTC) Date: Mon, 11 May 2020 19:44:20 +0200 From: Miquel Raynal To: =?UTF-8?B?w4FsdmFybyBGZXJuw6FuZGV6?= Rojas Subject: Re: [PATCH 3/3] nand: brcmnand: support v2.1-v2.2 controllers Message-ID: <20200511194420.00af6b1f@xps13> In-Reply-To: <20200510151406.2527856-3-noltari@gmail.com> References: <20200510151406.2527856-1-noltari@gmail.com> <20200510151406.2527856-3-noltari@gmail.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-20200511_104425_287820_8FC15D3C X-CRM114-Status: GOOD ( 16.63 ) 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: vigneshr@ti.com, kdasu.kdev@gmail.com, richard@nod.at, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-mtd@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, computersforpeace@gmail.com, sumit.semwal@linaro.org, linux-media@vger.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 SGkgw4FsdmFybywKCsOBbHZhcm8gRmVybsOhbmRleiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+ IHdyb3RlIG9uIFN1biwgMTAgTWF5IDIwMjAKMTc6MTQ6MDYgKzAyMDA6Cgo+IFRlc3RlZCBvbiBO ZXRnZWFyIERHTkQzNzAwdjIgKEJDTTYzNjIgd2l0aCB2Mi4yIGNvbnRyb2xsZXIpLgoKSSdkIHBy b3Bvc2UgdG8gZG8gdGhpcyBpbiB0d28gc3RlcHM6CgpGaXJzdCByZW5hbWUgd2hhdCBuZWVkcyB0 byBiZSByZW5hbWUgdG8gYmUgbW9yZSBhY2N1cmF0ZSB3aXRob3V0IGFkZGluZwphbnl0aGluZyBz cGVjaWZpYyB0byB0aGlzIHZlcnNpb24gb2YgdGhlIElQLCB0aGVuLCBpbiBhbm90aGVyIHBhdGNo LApqdXN0IGFkZCB0aGUgbmVjZXNzYXJ5IGJpdHMuCgo+IAo+IFNpZ25lZC1vZmYtYnk6IMOBbHZh cm8gRmVybsOhbmRleiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv bXRkL25hbmQvcmF3L2JyY21uYW5kL2JyY21uYW5kLmMgfCA3NiArKysrKysrKysrKysrKysrKysr KystLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L2JyY21uYW5kL2JyY21uYW5k LmMgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9icmNtbmFuZC9icmNtbmFuZC5jCj4gaW5kZXggNzJi MjY4ZDhlM2E0Li43MThjNjAxZDBlNTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9y YXcvYnJjbW5hbmQvYnJjbW5hbmQuYwo+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L2JyY21u YW5kL2JyY21uYW5kLmMKPiBAQCAtMzM4LDYgKzMzOCwzNiBAQCBlbnVtIGJyY21uYW5kX3JlZyB7 Cj4gIAlCUkNNTkFORF9GQ19CQVNFLAo+ICB9Owo+ICAKPiArLyogQlJDTU5BTkQgdjIuMS12Mi4y ICovCj4gK3N0YXRpYyBjb25zdCB1MTYgYnJjbW5hbmRfcmVnc192MjFbXSA9IHsKPiArCVtCUkNN TkFORF9DTURfU1RBUlRdCQk9ICAweDA0LAo+ICsJW0JSQ01OQU5EX0NNRF9FWFRfQUREUkVTU10J PSAgMHgwOCwKPiArCVtCUkNNTkFORF9DTURfQUREUkVTU10JCT0gIDB4MGMsCj4gKwlbQlJDTU5B TkRfSU5URkNfU1RBVFVTXQkJPSAgMHg1YywKPiArCVtCUkNNTkFORF9DU19TRUxFQ1RdCQk9ICAw eDE0LAo+ICsJW0JSQ01OQU5EX0NTX1hPUl0JCT0gIDB4MTgsCj4gKwlbQlJDTU5BTkRfTExfT1Bd CQk9ICAgICAwLAo+ICsJW0JSQ01OQU5EX0NTMF9CQVNFXQkJPSAgMHg0MCwKPiArCVtCUkNNTkFO RF9DUzFfQkFTRV0JCT0gICAgIDAsCj4gKwlbQlJDTU5BTkRfQ09SUl9USFJFU0hPTERdCT0gICAg IDAsCj4gKwlbQlJDTU5BTkRfQ09SUl9USFJFU0hPTERfRVhUXQk9ICAgICAwLAo+ICsJW0JSQ01O QU5EX1VOQ09SUl9DT1VOVF0JCT0gICAgIDAsCj4gKwlbQlJDTU5BTkRfQ09SUl9DT1VOVF0JCT0g ICAgIDAsCj4gKwlbQlJDTU5BTkRfQ09SUl9FWFRfQUREUl0JPSAgMHg2MCwKPiArCVtCUkNNTkFO RF9DT1JSX0FERFJdCQk9ICAweDY0LAo+ICsJW0JSQ01OQU5EX1VOQ09SUl9FWFRfQUREUl0JPSAg MHg2OCwKPiArCVtCUkNNTkFORF9VTkNPUlJfQUREUl0JCT0gIDB4NmMsCj4gKwlbQlJDTU5BTkRf U0VNQVBIT1JFXQkJPSAgMHg1MCwKPiArCVtCUkNNTkFORF9JRF0JCQk9ICAweDU0LAo+ICsJW0JS Q01OQU5EX0lEX0VYVF0JCT0gICAgIDAsCj4gKwlbQlJDTU5BTkRfTExfUkRBVEFdCQk9ICAgICAw LAo+ICsJW0JSQ01OQU5EX09PQl9SRUFEX0JBU0VdCT0gIDB4MjAsCj4gKwlbQlJDTU5BTkRfT09C X1JFQURfMTBfQkFTRV0JPSAgICAgMCwKPiArCVtCUkNNTkFORF9PT0JfV1JJVEVfQkFTRV0JPSAg MHgzMCwKPiArCVtCUkNNTkFORF9PT0JfV1JJVEVfMTBfQkFTRV0JPSAgICAgMCwKPiArCVtCUkNN TkFORF9GQ19CQVNFXQkJPSAweDIwMCwKPiArfTsKPiArCj4gIC8qIEJSQ01OQU5EIHYzLjMtdjQu MCAqLwo+ICBzdGF0aWMgY29uc3QgdTE2IGJyY21uYW5kX3JlZ3NfdjMzW10gPSB7Cj4gIAlbQlJD TU5BTkRfQ01EX1NUQVJUXQkJPSAgMHgwNCwKPiBAQCAtNTcxLDEyICs2MDEsMTYgQEAgc3RhdGlj IGludCBicmNtbmFuZF9yZXZpc2lvbl9pbml0KHN0cnVjdCBicmNtbmFuZF9jb250cm9sbGVyICpj dHJsKQo+ICB7Cj4gIAlzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGJsb2NrX3NpemVzX3Y2W10g PSB7IDgsIDE2LCAxMjgsIDI1NiwgNTEyLCAxMDI0LCAyMDQ4LCAwIH07Cj4gIAlzdGF0aWMgY29u c3QgdW5zaWduZWQgaW50IGJsb2NrX3NpemVzX3Y0W10gPSB7IDE2LCAxMjgsIDgsIDUxMiwgMjU2 LCAxMDI0LCAyMDQ4LCAwIH07Cj4gLQlzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHBhZ2Vfc2l6 ZXNbXSA9IHsgNTEyLCAyMDQ4LCA0MDk2LCA4MTkyLCAwIH07Cj4gKwlzdGF0aWMgY29uc3QgdW5z aWduZWQgaW50IGJsb2NrX3NpemVzX3YyXzJbXSA9IHsgMTYsIDEyOCwgOCwgNTEyLCAyNTYsIDAg fTsKPiArCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYmxvY2tfc2l6ZXNbXSA9IHsgMTYsIDEy OCwgOCwgNTEyLCAwIH07Cj4gKwlzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHBhZ2Vfc2l6ZXNf djNfNFtdID0geyA1MTIsIDIwNDgsIDQwOTYsIDgxOTIsIDAgfTsKPiArCXN0YXRpYyBjb25zdCB1 bnNpZ25lZCBpbnQgcGFnZV9zaXplc192Ml8yW10gPSB7IDUxMiwgMjA0OCwgNDA5NiwgMCB9Owo+ ICsJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBwYWdlX3NpemVzW10gPSB7IDUxMiwgMjA0OCwg MCB9OwoKQ2FuIHlvdSBuYW1lIGEgdmVyc2lvbiBldmVyeXdoZXJlPwoKPiAgCj4gIAljdHJsLT5u YW5kX3ZlcnNpb24gPSBuYW5kX3JlYWRyZWcoY3RybCwgMCkgJiAweGZmZmY7Cj4gIAo+IC0JLyog T25seSBzdXBwb3J0IHY0LjArPyAqLwo+IC0JaWYgKGN0cmwtPm5hbmRfdmVyc2lvbiA8IDB4MDQw MCkgewo+ICsJLyogT25seSBzdXBwb3J0IHYyLjErICovCj4gKwlpZiAoY3RybC0+bmFuZF92ZXJz aW9uIDwgMHgwMjAxKSB7Cj4gIAkJZGV2X2VycihjdHJsLT5kZXYsICJ2ZXJzaW9uICUjeCBub3Qg c3VwcG9ydGVkXG4iLAo+ICAJCQljdHJsLT5uYW5kX3ZlcnNpb24pOwo+ICAJCXJldHVybiAtRU5P REVWOwo+IEBAIC01OTMsNiArNjI3LDggQEAgc3RhdGljIGludCBicmNtbmFuZF9yZXZpc2lvbl9p bml0KHN0cnVjdCBicmNtbmFuZF9jb250cm9sbGVyICpjdHJsKQo+ICAJCWN0cmwtPnJlZ19vZmZz ZXRzID0gYnJjbW5hbmRfcmVnc192NTA7Cj4gIAllbHNlIGlmIChjdHJsLT5uYW5kX3ZlcnNpb24g Pj0gMHgwMzAzKQo+ICAJCWN0cmwtPnJlZ19vZmZzZXRzID0gYnJjbW5hbmRfcmVnc192MzM7Cj4g KwllbHNlIGlmIChjdHJsLT5uYW5kX3ZlcnNpb24gPj0gMHgwMjAxKQo+ICsJCWN0cmwtPnJlZ19v ZmZzZXRzID0gYnJjbW5hbmRfcmVnc192MjE7Cj4gIAo+ICAJLyogQ2hpcC1zZWxlY3Qgc3RyaWRl ICovCj4gIAlpZiAoY3RybC0+bmFuZF92ZXJzaW9uID49IDB4MDcwMSkKPiBAQCAtNjE4LDE0ICs2 NTQsMjcgQEAgc3RhdGljIGludCBicmNtbmFuZF9yZXZpc2lvbl9pbml0KHN0cnVjdCBicmNtbmFu ZF9jb250cm9sbGVyICpjdHJsKQo+ICAJCWN0cmwtPm1heF9wYWdlX3NpemUgPSAxNiAqIDEwMjQ7 Cj4gIAkJY3RybC0+bWF4X2Jsb2NrX3NpemUgPSAyICogMTAyNCAqIDEwMjQ7Cj4gIAl9IGVsc2Ug ewo+IC0JCWN0cmwtPnBhZ2Vfc2l6ZXMgPSBwYWdlX3NpemVzOwo+ICsJCWlmIChjdHJsLT5uYW5k X3ZlcnNpb24gPj0gMHgwMzA0KQo+ICsJCQljdHJsLT5wYWdlX3NpemVzID0gcGFnZV9zaXplc192 M180Owo+ICsJCWVsc2UgaWYgKGN0cmwtPm5hbmRfdmVyc2lvbiA+PSAweDAyMDIpCj4gKwkJCWN0 cmwtPnBhZ2Vfc2l6ZXMgPSBwYWdlX3NpemVzX3YyXzI7Cj4gKwkJZWxzZQo+ICsJCQljdHJsLT5w YWdlX3NpemVzID0gcGFnZV9zaXplczsKPiArCj4gIAkJaWYgKGN0cmwtPm5hbmRfdmVyc2lvbiA+ PSAweDA2MDApCj4gIAkJCWN0cmwtPmJsb2NrX3NpemVzID0gYmxvY2tfc2l6ZXNfdjY7Cj4gLQkJ ZWxzZQo+ICsJCWVsc2UgaWYgKGN0cmwtPm5hbmRfdmVyc2lvbiA+PSAweDA0MDApCj4gIAkJCWN0 cmwtPmJsb2NrX3NpemVzID0gYmxvY2tfc2l6ZXNfdjQ7Cj4gKwkJZWxzZSBpZiAoY3RybC0+bmFu ZF92ZXJzaW9uID49IDB4MDIwMikKPiArCQkJY3RybC0+YmxvY2tfc2l6ZXMgPSBibG9ja19zaXpl c192Ml8yOwo+ICsJCWVsc2UKPiArCQkJY3RybC0+YmxvY2tfc2l6ZXMgPSBibG9ja19zaXplczsK PiAgCj4gIAkJaWYgKGN0cmwtPm5hbmRfdmVyc2lvbiA8IDB4MDQwMCkgewo+IC0JCQljdHJsLT5t YXhfcGFnZV9zaXplID0gNDA5NjsKPiArCQkJaWYgKGN0cmwtPm5hbmRfdmVyc2lvbiA8IDB4MDIw MikKPiArCQkJCWN0cmwtPm1heF9wYWdlX3NpemUgPSAyMDQ4Owo+ICsJCQllbHNlCj4gKwkJCQlj dHJsLT5tYXhfcGFnZV9zaXplID0gNDA5NjsKPiAgCQkJY3RybC0+bWF4X2Jsb2NrX3NpemUgPSA1 MTIgKiAxMDI0Owo+ICAJCX0KPiAgCX0KPiBAQCAtODExLDYgKzg2MCw5IEBAIHN0YXRpYyB2b2lk IGJyY21uYW5kX3dyX2NvcnJfdGhyZXNoKHN0cnVjdCBicmNtbmFuZF9ob3N0ICpob3N0LCB1OCB2 YWwpCj4gIAllbnVtIGJyY21uYW5kX3JlZyByZWcgPSBCUkNNTkFORF9DT1JSX1RIUkVTSE9MRDsK PiAgCWludCBjcyA9IGhvc3QtPmNzOwo+ICAKPiArCWlmICghY3RybC0+cmVnX29mZnNldHNbcmVn XSkKPiArCQlyZXR1cm47Cj4gKwo+ICAJaWYgKGN0cmwtPm5hbmRfdmVyc2lvbiA9PSAweDA3MDIp Cj4gIAkJYml0cyA9IDc7Cj4gIAllbHNlIGlmIChjdHJsLT5uYW5kX3ZlcnNpb24gPj0gMHgwNjAw KQo+IEBAIC04NjksOCArOTIxLDEwIEBAIHN0YXRpYyBpbmxpbmUgdTMyIGJyY21uYW5kX3NwYXJl X2FyZWFfbWFzayhzdHJ1Y3QgYnJjbW5hbmRfY29udHJvbGxlciAqY3RybCkKPiAgCQlyZXR1cm4g R0VOTUFTSyg3LCAwKTsKPiAgCWVsc2UgaWYgKGN0cmwtPm5hbmRfdmVyc2lvbiA+PSAweDA2MDAp Cj4gIAkJcmV0dXJuIEdFTk1BU0soNiwgMCk7Cj4gLQllbHNlCj4gKwllbHNlIGlmIChjdHJsLT5u YW5kX3ZlcnNpb24gPj0gMHgwMzAzKQo+ICAJCXJldHVybiBHRU5NQVNLKDUsIDApOwo+ICsJZWxz ZQo+ICsJCXJldHVybiBHRU5NQVNLKDQsIDApOwo+ICB9Cj4gIAo+ICAjZGVmaW5lIE5BTkRfQUND X0NPTlRST0xfRUNDX1NISUZUCTE2Cj4gQEAgLTIzOTAsOSArMjQ0NCwxMSBAQCBzdGF0aWMgaW50 IGJyY21uYW5kX3NldF9jZmcoc3RydWN0IGJyY21uYW5kX2hvc3QgKmhvc3QsCj4gIAo+ICAJdG1w ID0gbmFuZF9yZWFkcmVnKGN0cmwsIGFjY19jb250cm9sX29mZnMpOwo+ICAJdG1wICY9IH5icmNt bmFuZF9lY2NfbGV2ZWxfbWFzayhjdHJsKTsKPiAtCXRtcCB8PSBjZmctPmVjY19sZXZlbCA8PCBO QU5EX0FDQ19DT05UUk9MX0VDQ19TSElGVDsKPiAgCXRtcCAmPSB+YnJjbW5hbmRfc3BhcmVfYXJl YV9tYXNrKGN0cmwpOwo+IC0JdG1wIHw9IGNmZy0+c3BhcmVfYXJlYV9zaXplOwo+ICsJaWYgKGN0 cmwtPm5hbmRfdmVyc2lvbiA+PSAweDAzMDIpIHsKPiArCQl0bXAgfD0gY2ZnLT5lY2NfbGV2ZWwg PDwgTkFORF9BQ0NfQ09OVFJPTF9FQ0NfU0hJRlQ7Cj4gKwkJdG1wIHw9IGNmZy0+c3BhcmVfYXJl YV9zaXplOwo+ICsJfQo+ICAJbmFuZF93cml0ZXJlZyhjdHJsLCBhY2NfY29udHJvbF9vZmZzLCB0 bXApOwo+ICAKPiAgCWJyY21uYW5kX3NldF9zZWN0b3Jfc2l6ZV8xayhob3N0LCBjZmctPnNlY3Rv cl9zaXplXzFrKTsKPiBAQCAtMjc2Niw2ICsyODIyLDggQEAgY29uc3Qgc3RydWN0IGRldl9wbV9v cHMgYnJjbW5hbmRfcG1fb3BzID0gewo+ICBFWFBPUlRfU1lNQk9MX0dQTChicmNtbmFuZF9wbV9v cHMpOwo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYnJjbW5hbmRfb2Zf bWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxicmNtbmFuZC12Mi4xIiB9LAo+ ICsJeyAuY29tcGF0aWJsZSA9ICJicmNtLGJyY21uYW5kLXYyLjIiIH0sCj4gIAl7IC5jb21wYXRp YmxlID0gImJyY20sYnJjbW5hbmQtdjQuMCIgfSwKPiAgCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxi cmNtbmFuZC12NS4wIiB9LAo+ICAJeyAuY29tcGF0aWJsZSA9ICJicmNtLGJyY21uYW5kLXY2LjAi IH0sCgpZb3Ugc2hvdWxkIGFsc28gZG9jdW1lbnQgdGhlc2UgbmV3IGJpbmRpbmdzIGluIGEgc2Vw YXJhdGUgcGF0Y2gKKGJlZm9yZSB0aGlzIG9uZSkuCgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQg ZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1tdGQvCg== 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_2 autolearn=unavailable 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 86A57C47255 for ; Mon, 11 May 2020 17:44:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6E9EF206D7 for ; Mon, 11 May 2020 17:44:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730933AbgEKRo0 convert rfc822-to-8bit (ORCPT ); Mon, 11 May 2020 13:44:26 -0400 Received: from relay12.mail.gandi.net ([217.70.178.232]:36801 "EHLO relay12.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728711AbgEKRo0 (ORCPT ); Mon, 11 May 2020 13:44:26 -0400 Received: from xps13 (unknown [91.224.148.103]) (Authenticated sender: miquel.raynal@bootlin.com) by relay12.mail.gandi.net (Postfix) with ESMTPSA id E52B1200006; Mon, 11 May 2020 17:44:21 +0000 (UTC) Date: Mon, 11 May 2020 19:44:20 +0200 From: Miquel Raynal To: =?UTF-8?B?w4FsdmFybyBGZXJuw6FuZGV6?= Rojas Cc: computersforpeace@gmail.com, kdasu.kdev@gmail.com, richard@nod.at, vigneshr@ti.com, sumit.semwal@linaro.org, linux-mtd@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Subject: Re: [PATCH 3/3] nand: brcmnand: support v2.1-v2.2 controllers Message-ID: <20200511194420.00af6b1f@xps13> In-Reply-To: <20200510151406.2527856-3-noltari@gmail.com> References: <20200510151406.2527856-1-noltari@gmail.com> <20200510151406.2527856-3-noltari@gmail.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 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Hi Álvaro, Álvaro Fernández Rojas wrote on Sun, 10 May 2020 17:14:06 +0200: > Tested on Netgear DGND3700v2 (BCM6362 with v2.2 controller). I'd propose to do this in two steps: First rename what needs to be rename to be more accurate without adding anything specific to this version of the IP, then, in another patch, just add the necessary bits. > > Signed-off-by: Álvaro Fernández Rojas > --- > drivers/mtd/nand/raw/brcmnand/brcmnand.c | 76 +++++++++++++++++++++--- > 1 file changed, 67 insertions(+), 9 deletions(-) > > diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > index 72b268d8e3a4..718c601d0e59 100644 > --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > @@ -338,6 +338,36 @@ enum brcmnand_reg { > BRCMNAND_FC_BASE, > }; > > +/* BRCMNAND v2.1-v2.2 */ > +static const u16 brcmnand_regs_v21[] = { > + [BRCMNAND_CMD_START] = 0x04, > + [BRCMNAND_CMD_EXT_ADDRESS] = 0x08, > + [BRCMNAND_CMD_ADDRESS] = 0x0c, > + [BRCMNAND_INTFC_STATUS] = 0x5c, > + [BRCMNAND_CS_SELECT] = 0x14, > + [BRCMNAND_CS_XOR] = 0x18, > + [BRCMNAND_LL_OP] = 0, > + [BRCMNAND_CS0_BASE] = 0x40, > + [BRCMNAND_CS1_BASE] = 0, > + [BRCMNAND_CORR_THRESHOLD] = 0, > + [BRCMNAND_CORR_THRESHOLD_EXT] = 0, > + [BRCMNAND_UNCORR_COUNT] = 0, > + [BRCMNAND_CORR_COUNT] = 0, > + [BRCMNAND_CORR_EXT_ADDR] = 0x60, > + [BRCMNAND_CORR_ADDR] = 0x64, > + [BRCMNAND_UNCORR_EXT_ADDR] = 0x68, > + [BRCMNAND_UNCORR_ADDR] = 0x6c, > + [BRCMNAND_SEMAPHORE] = 0x50, > + [BRCMNAND_ID] = 0x54, > + [BRCMNAND_ID_EXT] = 0, > + [BRCMNAND_LL_RDATA] = 0, > + [BRCMNAND_OOB_READ_BASE] = 0x20, > + [BRCMNAND_OOB_READ_10_BASE] = 0, > + [BRCMNAND_OOB_WRITE_BASE] = 0x30, > + [BRCMNAND_OOB_WRITE_10_BASE] = 0, > + [BRCMNAND_FC_BASE] = 0x200, > +}; > + > /* BRCMNAND v3.3-v4.0 */ > static const u16 brcmnand_regs_v33[] = { > [BRCMNAND_CMD_START] = 0x04, > @@ -571,12 +601,16 @@ static int brcmnand_revision_init(struct brcmnand_controller *ctrl) > { > static const unsigned int block_sizes_v6[] = { 8, 16, 128, 256, 512, 1024, 2048, 0 }; > static const unsigned int block_sizes_v4[] = { 16, 128, 8, 512, 256, 1024, 2048, 0 }; > - static const unsigned int page_sizes[] = { 512, 2048, 4096, 8192, 0 }; > + static const unsigned int block_sizes_v2_2[] = { 16, 128, 8, 512, 256, 0 }; > + static const unsigned int block_sizes[] = { 16, 128, 8, 512, 0 }; > + static const unsigned int page_sizes_v3_4[] = { 512, 2048, 4096, 8192, 0 }; > + static const unsigned int page_sizes_v2_2[] = { 512, 2048, 4096, 0 }; > + static const unsigned int page_sizes[] = { 512, 2048, 0 }; Can you name a version everywhere? > > ctrl->nand_version = nand_readreg(ctrl, 0) & 0xffff; > > - /* Only support v4.0+? */ > - if (ctrl->nand_version < 0x0400) { > + /* Only support v2.1+ */ > + if (ctrl->nand_version < 0x0201) { > dev_err(ctrl->dev, "version %#x not supported\n", > ctrl->nand_version); > return -ENODEV; > @@ -593,6 +627,8 @@ static int brcmnand_revision_init(struct brcmnand_controller *ctrl) > ctrl->reg_offsets = brcmnand_regs_v50; > else if (ctrl->nand_version >= 0x0303) > ctrl->reg_offsets = brcmnand_regs_v33; > + else if (ctrl->nand_version >= 0x0201) > + ctrl->reg_offsets = brcmnand_regs_v21; > > /* Chip-select stride */ > if (ctrl->nand_version >= 0x0701) > @@ -618,14 +654,27 @@ static int brcmnand_revision_init(struct brcmnand_controller *ctrl) > ctrl->max_page_size = 16 * 1024; > ctrl->max_block_size = 2 * 1024 * 1024; > } else { > - ctrl->page_sizes = page_sizes; > + if (ctrl->nand_version >= 0x0304) > + ctrl->page_sizes = page_sizes_v3_4; > + else if (ctrl->nand_version >= 0x0202) > + ctrl->page_sizes = page_sizes_v2_2; > + else > + ctrl->page_sizes = page_sizes; > + > if (ctrl->nand_version >= 0x0600) > ctrl->block_sizes = block_sizes_v6; > - else > + else if (ctrl->nand_version >= 0x0400) > ctrl->block_sizes = block_sizes_v4; > + else if (ctrl->nand_version >= 0x0202) > + ctrl->block_sizes = block_sizes_v2_2; > + else > + ctrl->block_sizes = block_sizes; > > if (ctrl->nand_version < 0x0400) { > - ctrl->max_page_size = 4096; > + if (ctrl->nand_version < 0x0202) > + ctrl->max_page_size = 2048; > + else > + ctrl->max_page_size = 4096; > ctrl->max_block_size = 512 * 1024; > } > } > @@ -811,6 +860,9 @@ static void brcmnand_wr_corr_thresh(struct brcmnand_host *host, u8 val) > enum brcmnand_reg reg = BRCMNAND_CORR_THRESHOLD; > int cs = host->cs; > > + if (!ctrl->reg_offsets[reg]) > + return; > + > if (ctrl->nand_version == 0x0702) > bits = 7; > else if (ctrl->nand_version >= 0x0600) > @@ -869,8 +921,10 @@ static inline u32 brcmnand_spare_area_mask(struct brcmnand_controller *ctrl) > return GENMASK(7, 0); > else if (ctrl->nand_version >= 0x0600) > return GENMASK(6, 0); > - else > + else if (ctrl->nand_version >= 0x0303) > return GENMASK(5, 0); > + else > + return GENMASK(4, 0); > } > > #define NAND_ACC_CONTROL_ECC_SHIFT 16 > @@ -2390,9 +2444,11 @@ static int brcmnand_set_cfg(struct brcmnand_host *host, > > tmp = nand_readreg(ctrl, acc_control_offs); > tmp &= ~brcmnand_ecc_level_mask(ctrl); > - tmp |= cfg->ecc_level << NAND_ACC_CONTROL_ECC_SHIFT; > tmp &= ~brcmnand_spare_area_mask(ctrl); > - tmp |= cfg->spare_area_size; > + if (ctrl->nand_version >= 0x0302) { > + tmp |= cfg->ecc_level << NAND_ACC_CONTROL_ECC_SHIFT; > + tmp |= cfg->spare_area_size; > + } > nand_writereg(ctrl, acc_control_offs, tmp); > > brcmnand_set_sector_size_1k(host, cfg->sector_size_1k); > @@ -2766,6 +2822,8 @@ const struct dev_pm_ops brcmnand_pm_ops = { > EXPORT_SYMBOL_GPL(brcmnand_pm_ops); > > static const struct of_device_id brcmnand_of_match[] = { > + { .compatible = "brcm,brcmnand-v2.1" }, > + { .compatible = "brcm,brcmnand-v2.2" }, > { .compatible = "brcm,brcmnand-v4.0" }, > { .compatible = "brcm,brcmnand-v5.0" }, > { .compatible = "brcm,brcmnand-v6.0" }, You should also document these new bindings in a separate patch (before this one). Thanks, Miquèl