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 AA05FC433F5 for ; Mon, 4 Apr 2022 10:29:03 +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=wGytpzeTEN54p2wjxSXhS2ClLYLZzQCUI3zHIGMcWBQ=; b=LdLfwAV+AfaSUc IlIzcdK4GTo8WKZdt+O5Ml/2d/b3eGYdSM6lMvDzwuH0May0Dfo0+JDqDW1ACYpIDGtUMCDLbWoBa WKYk+rLVDNB2nQX3yJopRKLBirA1E0R5F138UVNXIYCkOFWPb4OYH+zb++wanC1KKLxLmTfXZ6mxM X9EmrZIc1k+mH0kLeZfejnDZwICcp2VZ9iYQrWRAOWBZLyF7UNsuilL9+HOOngExkMvbK/CL6b6jn Tdj0xvF8gK8XBiIgYFUFXVtAMldtzM4TlAH4oJWHH+XQQ0B3KW4x+4c8MQTiVBh/HGvx7HALA4AJ0 gTbq2NvtaLuQAvJ6LrBg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbJxA-00EVVT-Q8; Mon, 04 Apr 2022 10:28:56 +0000 Received: from relay10.mail.gandi.net ([2001:4b98:dc4:8::230]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbJwm-00EVJH-PQ; Mon, 04 Apr 2022 10:28:35 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 399F524000B; Mon, 4 Apr 2022 10:28:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1649068109; 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=HCsUi7kOI3d6Xo1Mm1jD9G/wtU6d4VrhYaApfm09KZI=; b=gbwGaNha7rEyqNkTaxQbeooF06FS+a4ZuW9tSlSN+P/9d25inyojXEX05W4+wQ30vvrXWu P5dme+NQYjzbThTQ+GaAKh9EhHFG2eI4w7kYqefsxf5lpvcV8TzTa8UrPfqtfNGkHMFjVc ZFGBPby619uiBHPpESgx7+HRU39TAIHjRhReYvti2QHS5rKUtMU5o8mDBnA9AgfBVNU6xL Rwzowagr2P1dk76ve5wQz6BBx+b1dma1beoBR5Sghf0UCyQXIwtjBJ+9anfxb0noEA6329 vqEORxQb7TJ7AFCXOmglRk8d/qbchxUB32ymQ6qiD6I4hcn9hEFI899uDT5qEQ== Date: Mon, 4 Apr 2022 12:28:24 +0200 From: Miquel Raynal To: Chuanhong Guo Cc: linux-spi@vger.kernel.org, Mark Brown , Rob Herring , Krzysztof Kozlowski , Matthias Brugger , Richard Weinberger , Vignesh Raghavendra , Roger Quadros , Thomas Bogendoerfer , Cai Huoqing , Florian Fainelli , Colin Ian King , Wolfram Sang , Paul Cercueil , Pratyush Yadav , Yu Kuai , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , "moderated list:ARM/Mediatek SoC support" , "moderated list:ARM/Mediatek SoC support" , open list , "open list:NAND FLASH SUBSYSTEM" Subject: Re: [PATCH v2 2/5] spi: add driver for MTK SPI NAND Flash Interface Message-ID: <20220404122824.63a1c857@xps13> In-Reply-To: References: <20220404040153.1509966-1-gch981213@gmail.com> <20220404040153.1509966-3-gch981213@gmail.com> <20220404095937.20089db7@xps13> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (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-20220404_032833_390581_AC78CAA6 X-CRM114-Status: GOOD ( 56.62 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org SGkgQ2h1YW5ob25nLAoKZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBNb24sIDQgQXByIDIw MjIgMTc6MTM6NTUgKzA4MDA6Cgo+IEhpIQo+IAo+IE9uIE1vbiwgQXByIDQsIDIwMjIgYXQgMzo1 OSBQTSBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPiB3cm90ZToKPiA+ Cj4gPiBIaSBDaHVhbmhvbmcsCj4gPgo+ID4gZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBN b24sICA0IEFwciAyMDIyIDEyOjAxOjUwICswODAwOgo+ID4gIAo+ID4gPiBUaGlzIGRyaXZlciBp bXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBTUEktTkFORCBtb2RlIG9mIE1USyBOQU5EIEZsYXNo Cj4gPiA+IEludGVyZmFjZSBhcyBhIFNQSS1NRU0gY29udHJvbGxlciB3aXRoIHBpcGxpbmVkIEVD QyBjYXBhYmlsaXR5Lgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBDaHVhbmhvbmcgR3VvIDxn Y2g5ODEyMTNAZ21haWwuY29tPgo+ID4gPiAtLS0KPiA+ID4KPiA+ID4gQ2hhbmdlIHNpbmNlIHYx Ogo+ID4gPiAgIGZpeCBDSSB3YXJuaW5ncwo+ID4gPgo+ID4gPiAgZHJpdmVycy9zcGkvS2NvbmZp ZyAgICAgICAgfCAgIDEwICsKPiA+ID4gIGRyaXZlcnMvc3BpL01ha2VmaWxlICAgICAgIHwgICAg MSArCj4gPiA+ICBkcml2ZXJzL3NwaS9zcGktbXRrLXNuZmkuYyB8IDEzNTEgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEzNjIgaW5z ZXJ0aW9ucygrKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3BpL3NwaS1tdGst c25maS5jCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9LY29uZmlnIGIvZHJp dmVycy9zcGkvS2NvbmZpZwo+ID4gPiBpbmRleCBkMjgxNWViMzYxYzAuLjczOWVlYzdkMGMxNSAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9zcGkvS2NvbmZpZwo+ID4gPiArKysgYi9kcml2ZXJz L3NwaS9LY29uZmlnCj4gPiA+IEBAIC01OTAsNiArNTkwLDE2IEBAIGNvbmZpZyBTUElfTVRLX05P Ugo+ID4gPiAgICAgICAgIFNQSSBpbnRlcmZhY2UgYXMgd2VsbCBhcyBzZXZlcmFsIFNQSSBOT1Ig c3BlY2lmaWMgaW5zdHJ1Y3Rpb25zCj4gPiA+ICAgICAgICAgdmlhIFNQSSBNRU0gaW50ZXJmYWNl Lgo+ID4gPgo+ID4gPiArY29uZmlnIFNQSV9NVEtfU05GSQo+ID4gPiArICAgICB0cmlzdGF0ZSAi TWVkaWFUZWsgU1BJIE5BTkQgRmxhc2ggSW50ZXJmYWNlIgo+ID4gPiArICAgICBkZXBlbmRzIG9u IEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUCj4gPiA+ICsgICAgIGRlcGVuZHMgb24gTVRE X05BTkRfRUNDX01FRElBVEVLCj4gPiA+ICsgICAgIGhlbHAKPiA+ID4gKyAgICAgICBUaGlzIGVu YWJsZXMgc3VwcG9ydCBmb3IgU1BJLU5BTkQgbW9kZSBvbiB0aGUgTWVkaWFUZWsgTkFORAo+ID4g PiArICAgICAgIEZsYXNoIEludGVyZmFjZSBmb3VuZCBvbiBNZWRpYVRlayBBUk0gU29Dcy4gVGhp cyBjb250cm9sbGVyCj4gPiA+ICsgICAgICAgaXMgaW1wbGVtZW50ZWQgYXMgYSBTUEktTUVNIGNv bnRyb2xsZXIgd2l0aCBwaXBlbGluZWQgRUNDCj4gPiA+ICsgICAgICAgY2FwY2FiaWxpdHkuCj4g PiA+ICsKPiA+ID4gIGNvbmZpZyBTUElfTlBDTV9GSVUKPiA+ID4gICAgICAgdHJpc3RhdGUgIk51 dm90b24gTlBDTSBGTEFTSCBJbnRlcmZhY2UgVW5pdCIKPiA+ID4gICAgICAgZGVwZW5kcyBvbiBB UkNIX05QQ00gfHwgQ09NUElMRV9URVNUCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9N YWtlZmlsZSBiL2RyaXZlcnMvc3BpL01ha2VmaWxlCj4gPiA+IGluZGV4IDNhYTI4ZWQzZjc2MS4u NTE1NDFmZjE3ZTY3IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+ID4g PiArKysgYi9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+ID4gPiBAQCAtNzYsNiArNzYsNyBAQCBvYmot JChDT05GSUdfU1BJX01QQzUyeHgpICAgICAgICAgICArPSBzcGktbXBjNTJ4eC5vCj4gPiA+ICBv YmotJChDT05GSUdfU1BJX01UNjVYWCkgICAgICAgICAgICAgICAgKz0gc3BpLW10NjV4eC5vCj4g PiA+ICBvYmotJChDT05GSUdfU1BJX01UNzYyMSkgICAgICAgICAgICAgKz0gc3BpLW10NzYyMS5v Cj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01US19OT1IpICAgICAgICAgICAgKz0gc3BpLW10ay1u b3Iubwo+ID4gPiArb2JqLSQoQ09ORklHX1NQSV9NVEtfU05GSSkgICAgICAgICAgICs9IHNwaS1t dGstc25maS5vCj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01YSUMpICAgICAgICAgICAgICAgICAg ICAgICArPSBzcGktbXhpYy5vCj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01YUykgICAgICAgICAg ICAgICAgICAgICAgICArPSBzcGktbXhzLm8KPiA+ID4gIG9iai0kKENPTkZJR19TUElfTlBDTV9G SVUpICAgICAgICAgICArPSBzcGktbnBjbS1maXUubwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zcGkvc3BpLW10ay1zbmZpLmMgYi9kcml2ZXJzL3NwaS9zcGktbXRrLXNuZmkuYwo+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmU4ZjhmMzBiZDdl ZQo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvc3BpL3NwaS1tdGstc25m aS5jICAKPiA+Cj4gPiBbLi4uXQo+ID4gIAo+ID4gPiArc3RhdGljIHN0cnVjdCBtdGtfc25hbmQg Km5hbmRfdG9fbXRrX3NuYW5kKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCkKPiA+ID4gK3sKPiA+ ID4gKyAgICAgc3RydWN0IG5hbmRfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNjLmVuZ2luZTsK PiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gY29udGFpbmVyX29mKGVuZywgc3RydWN0IG10a19z bmFuZCwgZWNjX2VuZyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50 IHNuYW5kX3ByZXBhcmVfYm91bmNlYnVmKHN0cnVjdCBtdGtfc25hbmQgKnNuZiwgc2l6ZV90IHNp emUpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIGlmIChzbmYtPmJ1Zl9sZW4gPj0gc2l6ZSkKPiA+ID4g KyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ID4gKyAgICAgaWYgKHNuZi0+YnVmKQo+ID4gPiAr ICAgICAgICAgICAgIGRtYW1fZnJlZV9jb2hlcmVudChzbmYtPmRldiwgc25mLT5idWZfbGVuLCBz bmYtPmJ1ZiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25mLT5idWZf ZG1hKTsgIAo+ID4KPiA+IENhbid0IHdlIHVzZSBhIHNpbmdsZSBjb2hlcmVudCBidWZmZXIgb25j ZSBmb3IgYWxsPyAgCj4gCj4gVGhpcyBvbmx5IHJlYWxsb2NhdGVzIHdoZW4gdGhlIHBhZ2Ugc2l6 ZSBjaGFuZ2VzIHRvIGEgbGFyZ2VyIG9uZSwKPiBzbyB0aGVyZSdzIGF0IG1vc3QgdHdvIGFsbG9j YXRpb25zOiBvbmUgZHVyaW5nIHByb2JlIGFuZCB0aGUgb3RoZXIKPiBvbmUgaW4gdGhlIGZpcnN0 IGNhbGwgdG8gaW5pdF9jdHguIFRoZSBvdGhlciBzb2x1dGlvbiBpcyB0byBhbGxvY2F0ZSBhCj4g YnVmZmVyIGZvciB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgcGFnZSBzaXplIGJ1dCBJIHRoaW5rIHRo YXQncyBhCj4gd2FzdGUgb2YgbWVtb3J5LgoKT2ssIGZpbmUuCgo+IAo+ID4gIAo+ID4gPiArICAg ICBzbmYtPmJ1ZiA9Cj4gPiA+ICsgICAgICAgICAgICAgZG1hbV9hbGxvY19jb2hlcmVudChzbmYt PmRldiwgc2l6ZSwgJnNuZi0+YnVmX2RtYSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsgICAgIGlmICgh c25mLT5idWYpCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsgICAg IHNuZi0+YnVmX2xlbiA9IHNpemU7Cj4gPiA+ICsgICAgIG1lbXNldChzbmYtPmJ1ZiwgMHhmZiwg c25mLT5idWZfbGVuKTsKPiA+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsgIAo+ ID4KPiA+IFsuLi5dCj4gPiAgCj4gPiA+ICtzdGF0aWMgaW50IG10a19zbmFuZF9lY2NfaW5pdF9j dHgoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ID4gPiArewo+ID4gPiArICAgICBzdHJ1Y3Qg bXRrX3NuYW5kICpzbmYgPSBuYW5kX3RvX210a19zbmFuZChuYW5kKTsKPiA+ID4gKyAgICAgc3Ry dWN0IG5hbmRfZWNjX3Byb3BzICpjb25mID0gJm5hbmQtPmVjYy5jdHguY29uZjsKPiA+ID4gKyAg ICAgc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kZGV2X3RvX210ZChuYW5kKTsKPiA+ID4gKyAg ICAgaW50IHJldDsKPiA+ID4gKwo+ID4gPiArICAgICByZXQgPSBtdGtfc25hbmRfc2V0dXBfcGFn ZWZtdChzbmYsIG5hbmQtPm1lbW9yZy5wYWdlc2l6ZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmFuZC0+bWVtb3JnLm9vYnNpemUpOwo+ID4gPiArICAgICBpZiAo cmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAg bXRkX3NldF9vb2JsYXlvdXQobXRkLCAmbXRrX3NuYW5kX29vYmxheW91dCk7Cj4gPiA+ICsKPiA+ ID4gKyAgICAgLy8gVGhpcyBkcml2ZXIgaWdub3JlcyBhbnkgRUNDIGNhcGFiaWxpdHkgY29uZmln dXJlZCBieSB1c2VyIG9yCj4gPiA+ICsgICAgIC8vIHJlcXVlc3RlZCBieSB0aGUgbmFuZCBjaGlw IGJlY2F1c2UgdGhlIEJvb3RST00gYW5kIE1USyBib290bG9hZGVyCj4gPiA+ICsgICAgIC8vIGV4 cGVjdHMgdGhlIHBhZ2UgZm9ybWF0IHRvIGJlIHRoZSBleGFjdCBvbmUgYXMgY2FsY3VsYXRlZCBp bgo+ID4gPiArICAgICAvLyBzZXR1cF9wYWdlZm10LiAgCj4gPgo+ID4gSSBkb24ndCBsaWtlIHRo aXMgOikKPiA+Cj4gPiBJIHVuZGVyc3RhbmQgdGhhdCB0aGUgYm9vdCBwYXJ0aXRpb24gbWlnaHQg aGF2ZSBzcGVjaWZpYyBjb25zdHJhaW50cywKPiA+IGJ1dCBvdGhlciBwYXJ0aXRpb25zIChvciBp ZiB3ZSBkb24ndCB1c2UgdGhlIE5BTkQgdG8gYm9vdD8pIHNob3VsZAo+ID4gcHJvYmFibHkgYmUg dXNhYmxlIHdpdGggb3RoZXIgRUNDIHNjaGVtZXMuICAKPiAKPiBJbiB0aGlzIGNvbnRyb2xsZXIs IHRoZSBFQ0Mgc3RlcCBzaXplIGlzIGZpeGVkIGFuZCBpdCBjYW4gb25seSBjaGFuZ2UKPiBFQ0Mg c3RyZW5ndGguCgpUaGF0J3MgZmluZS4KCj4gVGhlIGNhbGN1bGF0ZWQgRUNDIGNvcnJlY3Rpb24g Y2FwYWJpbGl0eSBpcyB0aGUgbWF4Cj4gcG9zc2libGUgb25lIHN1cHBvcnRlZCBieSB0aGUgY29u dHJvbGxlci4KPiBJIHN0aWxsIHdhbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgdG8gbWF0Y2ggdGhl IGJvb3QgcGFydGl0aW9uCj4gcmVxdWlyZW1lbnQsCgpUaGF0IGlzIG9rYXksIGJ1dCB0aGF0IGRv ZXMgbm90IG1lYW4geW91IGNhbiBvbmx5IHN1cHBvcnQgdGhpcyBvbmUuCgo+IGJlY2F1c2Ugd2Ug Y2FuJ3QganVzdCB0ZWxsIGVuZC11c2VycyB0byBjdXN0b21pemUKPiB0aGVpciBkdHMgYnkgdGFr aW5nIGFwYXJ0IHRoZWlyIGRldmljZSBhbmQgZmlndXJlIG91dCB3aGljaCBmbGFzaAo+IGlzIHVz ZWQuCgpUaGV5IGRvbid0IGhhdmUgdG8gZG8gc28uIEluIHRoZW9yeSB0aGV5IHNob3VsZCBub3Qg cmVxdWVzdCBhbnl0aGluZywKdGhlIGNvcmUgd291bGQgdGFrZSBjYXJlIG9mIGFsbCBvZiB0aGF0 LiBCdXQgdGhleSBjYW4gcmVxdWVzdCBzcGVjaWZpYwp2YWx1ZXMgYnkgdXNpbmcgdGhlIERUIGFu ZCB5b3UgbXVzdCBmb2xsb3cgdGhlbSBpbiB0aGUgZHJpdmVyLgoKT24gaGlzIHNpZGUgdGhlIGNv cmUgaXMgcmVzcG9uc2libGUgb2YgdGVsbGluZyB5b3Ugd2hpY2ggc3RyZW5ndGgKc2hvdWxkIGJl IHVzZWQgb3RoZXJ3aXNlIGFuZCB0aGUgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIHVzZSBpdC4KCj4g SSBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmc6CgpZb3Ugc2hvdWxkIHRha2UgdGhlIHVzZXIg cmVxdWlyZW1lbnRzIGZpcnN0LiBJZiB0aGVyZSBhcmUgbm8KdXNlciBpbnB1dHMsIHlvdSBzaG91 bGQgaW4gdGhlb3J5IGxvb2sgYXQgdGhlIGRldmljZSdzIHJlcXVpcmVtZW50cy4KCj4gMS4gc2Vs ZWN0IHRoZSBtaW5pbXVtIGNhcGFiaWxpdHkgZXhjZWVkaW5nIGVjYy51c2VyX2NvbmYKPiAyLiBJ ZiB0aGF0IGRvZXNuJ3QgZXhpc3QsIHVzZSB0aGUgY2FsY3VsYXRlZCBvbmUgYW5kIHdhcm4KPiAg ICBpZiBpdCBkb2Vzbid0IG1lZXQgZWNjLnJlcXVpcmVtZW50cwo+IElzIHRoaXMgT0s/Cj4gCj4g PiAgCj4gPiA+ICsgICAgIGNvbmYtPnN0ZXBfc2l6ZSA9IHNuZi0+Y2Fwcy0+c2VjdG9yX3NpemU7 Cj4gPiA+ICsgICAgIGNvbmYtPnN0cmVuZ3RoID0gc25mLT5lY2NfY2ZnLnN0cmVuZ3RoOwo+ID4g PiArCj4gPiA+ICsgICAgIHJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aW50IG10a19zbmFuZF9lY2NfcHJlcGFyZV9pb19yZXEoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5k LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuYW5k X3BhZ2VfaW9fcmVxICpyZXEpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtfc25hbmQg KnNuZiA9IG5hbmRfdG9fbXRrX3NuYW5kKG5hbmQpOwo+ID4gPiArICAgICBpbnQgcmV0Owo+ID4g PiArCj4gPiA+ICsgICAgIHJldCA9IG10a19zbmFuZF9zZXR1cF9wYWdlZm10KHNuZiwgbmFuZC0+ bWVtb3JnLnBhZ2VzaXplLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW5kLT5tZW1vcmcub29ic2l6ZSk7Cj4gPiA+ICsgICAgIGlmIChyZXQpCj4gPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gKyAgICAgc25mLT5hdXRvZm10ID0gdHJ1ZTsKPiA+ ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgbXRr X3NuYW5kX2VjY19maW5pc2hfaW9fcmVxKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCwKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuYW5kX3BhZ2VfaW9f cmVxICpyZXEpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtfc25hbmQgKnNuZiA9IG5h bmRfdG9fbXRrX3NuYW5kKG5hbmQpOwo+ID4gPiArICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9 IG5hbmRkZXZfdG9fbXRkKG5hbmQpOwo+ID4gPiArCj4gPiA+ICsgICAgIHNuZi0+YXV0b2ZtdCA9 IGZhbHNlOwo+ID4gPiArICAgICBpZiAoKHJlcS0+bW9kZSA9PSBNVERfT1BTX1JBVykgfHwgKHJl cS0+dHlwZSAhPSBOQU5EX1BBR0VfUkVBRCkpCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDA7 Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKHNuZi0+ZWNjX3N0YXRzLmZhaWxlZCkKPiA+ID4gKyAg ICAgICAgICAgICBtdGQtPmVjY19zdGF0cy5mYWlsZWQgKz0gc25mLT5lY2Nfc3RhdHMuZmFpbGVk Owo+ID4gPiArICAgICBtdGQtPmVjY19zdGF0cy5jb3JyZWN0ZWQgKz0gc25mLT5lY2Nfc3RhdHMu Y29ycmVjdGVkOwo+ID4gPiArICAgICByZXR1cm4gc25mLT5lY2Nfc3RhdHMuZmFpbGVkID8gLUVC QURNU0cgOiBzbmYtPmVjY19zdGF0cy5iaXRmbGlwczsgIAo+ID4KPiA+IERpZCB5b3UgdmVyaWZ5 IHRoYXQgbmFuZGJpdGVycnMgLWkgc3VjY2VlZHM/ICAKPiAKPiBJIGRpZCBhIGluc21vZCBtdGRf bmFuZGJpdGVycnMua28gZGV2PXggYW5kIHRoZSByZXBvcnRlZCBiaXRmbGlwcyBpbgo+IGtlcm5l bCBsb2cgaXMgY29ycmVjdC4KPiAKPiBJcyB0aGVyZSBhIHVzZXJzcGFjZSB0b29sIGZvciB0aGlz PyBJJ2QgbGlrZSB0byB1c2UgdGhhdCBpbnN0ZWFkIG9mIGEKPiBrZXJuZWwgbW9kdWxlIGluIHRo ZSBmdXR1cmUuCgpZZXMsIHlvdSBjYW4gZ2l2ZSB0aGUgbXRkLXV0aWxzIHRlc3Qgc3VpdGUgYSB0 cnkuIEFsbW9zdCBhbGwgdGhlIHRvb2xzCmhhdmUgYmVlbiBtaWdyYXRlZCB0aGVyZS4gVGhlcmUg ZXZlbiBpcyBhIEJ1aWxkcm9vdCBwYWNrYWdlLgoKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3Rh dGljIHN0cnVjdCBuYW5kX2VjY19lbmdpbmVfb3BzIG10a19zbmZpX2VjY19lbmdpbmVfb3BzID0g ewo+ID4gPiArICAgICAuaW5pdF9jdHggPSBtdGtfc25hbmRfZWNjX2luaXRfY3R4LAo+ID4gPiAr ICAgICAucHJlcGFyZV9pb19yZXEgPSBtdGtfc25hbmRfZWNjX3ByZXBhcmVfaW9fcmVxLAo+ID4g PiArICAgICAuZmluaXNoX2lvX3JlcSA9IG10a19zbmFuZF9lY2NfZmluaXNoX2lvX3JlcSwgIAo+ ID4KPiA+IEkgYmVsaWV2ZSB5b3UgbmVlZCB0byB0YWtlIGNhcmUgb2YgdGhlIGJvdW5jZSBidWZm ZXIgaW4gdGhlIGV4aXQgcGF0aD8gIAo+IAo+IE5vLiBUaGUgYnVmZmVyIHNob3VsZCBiZSBsZWZ0 IHRoZXJlIGZvciBub24tZWNjIHNwaS1tZW0gb3BlcmF0aW9ucy4KCkFGQUlSIHlvdSBpbml0aWFs aXplIHRoZSBidWZmZXIgaW4gdGhlIEVDQyBwYXJ0LCBzbyBpZiBpdCBtdXN0IGJlIHVzZWQKd2l0 aG91dCBFQ0MgeW91IHNob3VsZCBwcm9iYWJseSBhbGxvY2F0ZSBpdCBmb3IgdGhlIFNQSSBjb250 cm9sbGVyLiBJbgphbnkgd2F5LCB5b3UgbmVlZCB0byBmcmVlIHRoYXQgbWVtb3J5IGF0IHNvbWUg cG9pbnQgKHdoZW4gcmVtb3ZpbmcgdGhlCmRyaXZlcikuCgo+IAo+ID4gIAo+ID4gPiArfTsKPiA+ ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgbXRrX3NuYW5kX3JlYWRfZmRtKHN0cnVjdCBtdGtfc25h bmQgKnNuZiwgdWludDhfdCAqYnVmKQo+ID4gPiArewo+ID4gPiArICAgICB1aW50MzJfdCB2YWxs LCB2YWxtOwo+ID4gPiArICAgICB1aW50OF90ICpvb2JwdHIgPSBidWY7Cj4gPiA+ICsgICAgIGlu dCBpLCBqOwo+ID4gPiArCj4gPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBzbmYtPm5maV9jZmcu bnNlY3RvcnM7IGkrKykgewo+ID4gPiArICAgICAgICAgICAgIHZhbGwgPSBuZmlfcmVhZDMyKHNu ZiwgTkZJX0ZETUwoaSkpOwo+ID4gPiArICAgICAgICAgICAgIHZhbG0gPSBuZmlfcmVhZDMyKHNu ZiwgTkZJX0ZETU0oaSkpOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgZm9yIChqID0gMDsg aiA8IHNuZi0+Y2Fwcy0+ZmRtX3NpemU7IGorKykKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IG9vYnB0cltqXSA9IChqID49IDQgPyB2YWxtIDogdmFsbCkgPj4gKChqICUgNCkgKiA4KTsKPiA+ ID4gKwo+ID4gPiArICAgICAgICAgICAgIG9vYnB0ciArPSBzbmYtPmNhcHMtPmZkbV9zaXplOwo+ ID4gPiArICAgICB9Cj4gPiA+ICt9ICAKPiA+Cj4gPiBUaGFua3MsCj4gPiBNaXF1w6hsICAKPiAK PiAKPiAKPiAtLQo+IFJlZ2FyZHMsCj4gQ2h1YW5ob25nIEd1bwoKClRoYW5rcywKTWlxdcOobAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbWVk aWF0ZWsgbWFpbGluZyBsaXN0CkxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tZWRpYXRlawo= 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 45ECCC433F5 for ; Mon, 4 Apr 2022 10:29:41 +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=AQ4T9ps4h2EBJg5ZSqTXyo/klY4pSJbshWVFFcQMaiQ=; b=aa+jIuKT+GFONV s5lVKqDJGZVqeljMe5Mki9q7BRJUxv05MW+wuauspxyZ/scptgusn/FFR01gAvyzfwkSntFtUuFS/ VDysoYff2H3opNegoC1sG9iCUVAMOtaBAOTag/dNwIff+AsDVD5cCE+2cdT6Z3wcyBvPAIsgK00oU OjkDS/byMK2uzl4QZFLkZ2TrU97y+pgziXbx+ZABf8p0sVgy25v8TykY+m64caTC70ypxfOecLe4m XGjjqZTAHMjaYLXCBUT72R6yBOOw++VRvKoXrXc9VdC6XelI3Bx1rPmoblADno9N9EmhTnYZM82K6 Cvtrv8QBYRA0XM8e4tKw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbJxC-00EVXJ-Ar; Mon, 04 Apr 2022 10:28:58 +0000 Received: from relay10.mail.gandi.net ([2001:4b98:dc4:8::230]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbJwm-00EVJH-PQ; Mon, 04 Apr 2022 10:28:35 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 399F524000B; Mon, 4 Apr 2022 10:28:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1649068109; 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=HCsUi7kOI3d6Xo1Mm1jD9G/wtU6d4VrhYaApfm09KZI=; b=gbwGaNha7rEyqNkTaxQbeooF06FS+a4ZuW9tSlSN+P/9d25inyojXEX05W4+wQ30vvrXWu P5dme+NQYjzbThTQ+GaAKh9EhHFG2eI4w7kYqefsxf5lpvcV8TzTa8UrPfqtfNGkHMFjVc ZFGBPby619uiBHPpESgx7+HRU39TAIHjRhReYvti2QHS5rKUtMU5o8mDBnA9AgfBVNU6xL Rwzowagr2P1dk76ve5wQz6BBx+b1dma1beoBR5Sghf0UCyQXIwtjBJ+9anfxb0noEA6329 vqEORxQb7TJ7AFCXOmglRk8d/qbchxUB32ymQ6qiD6I4hcn9hEFI899uDT5qEQ== Date: Mon, 4 Apr 2022 12:28:24 +0200 From: Miquel Raynal To: Chuanhong Guo Cc: linux-spi@vger.kernel.org, Mark Brown , Rob Herring , Krzysztof Kozlowski , Matthias Brugger , Richard Weinberger , Vignesh Raghavendra , Roger Quadros , Thomas Bogendoerfer , Cai Huoqing , Florian Fainelli , Colin Ian King , Wolfram Sang , Paul Cercueil , Pratyush Yadav , Yu Kuai , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , "moderated list:ARM/Mediatek SoC support" , "moderated list:ARM/Mediatek SoC support" , open list , "open list:NAND FLASH SUBSYSTEM" Subject: Re: [PATCH v2 2/5] spi: add driver for MTK SPI NAND Flash Interface Message-ID: <20220404122824.63a1c857@xps13> In-Reply-To: References: <20220404040153.1509966-1-gch981213@gmail.com> <20220404040153.1509966-3-gch981213@gmail.com> <20220404095937.20089db7@xps13> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (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-20220404_032833_390581_AC78CAA6 X-CRM114-Status: GOOD ( 56.62 ) 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 SGkgQ2h1YW5ob25nLAoKZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBNb24sIDQgQXByIDIw MjIgMTc6MTM6NTUgKzA4MDA6Cgo+IEhpIQo+IAo+IE9uIE1vbiwgQXByIDQsIDIwMjIgYXQgMzo1 OSBQTSBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPiB3cm90ZToKPiA+ Cj4gPiBIaSBDaHVhbmhvbmcsCj4gPgo+ID4gZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBN b24sICA0IEFwciAyMDIyIDEyOjAxOjUwICswODAwOgo+ID4gIAo+ID4gPiBUaGlzIGRyaXZlciBp bXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBTUEktTkFORCBtb2RlIG9mIE1USyBOQU5EIEZsYXNo Cj4gPiA+IEludGVyZmFjZSBhcyBhIFNQSS1NRU0gY29udHJvbGxlciB3aXRoIHBpcGxpbmVkIEVD QyBjYXBhYmlsaXR5Lgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBDaHVhbmhvbmcgR3VvIDxn Y2g5ODEyMTNAZ21haWwuY29tPgo+ID4gPiAtLS0KPiA+ID4KPiA+ID4gQ2hhbmdlIHNpbmNlIHYx Ogo+ID4gPiAgIGZpeCBDSSB3YXJuaW5ncwo+ID4gPgo+ID4gPiAgZHJpdmVycy9zcGkvS2NvbmZp ZyAgICAgICAgfCAgIDEwICsKPiA+ID4gIGRyaXZlcnMvc3BpL01ha2VmaWxlICAgICAgIHwgICAg MSArCj4gPiA+ICBkcml2ZXJzL3NwaS9zcGktbXRrLXNuZmkuYyB8IDEzNTEgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEzNjIgaW5z ZXJ0aW9ucygrKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3BpL3NwaS1tdGst c25maS5jCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9LY29uZmlnIGIvZHJp dmVycy9zcGkvS2NvbmZpZwo+ID4gPiBpbmRleCBkMjgxNWViMzYxYzAuLjczOWVlYzdkMGMxNSAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9zcGkvS2NvbmZpZwo+ID4gPiArKysgYi9kcml2ZXJz L3NwaS9LY29uZmlnCj4gPiA+IEBAIC01OTAsNiArNTkwLDE2IEBAIGNvbmZpZyBTUElfTVRLX05P Ugo+ID4gPiAgICAgICAgIFNQSSBpbnRlcmZhY2UgYXMgd2VsbCBhcyBzZXZlcmFsIFNQSSBOT1Ig c3BlY2lmaWMgaW5zdHJ1Y3Rpb25zCj4gPiA+ICAgICAgICAgdmlhIFNQSSBNRU0gaW50ZXJmYWNl Lgo+ID4gPgo+ID4gPiArY29uZmlnIFNQSV9NVEtfU05GSQo+ID4gPiArICAgICB0cmlzdGF0ZSAi TWVkaWFUZWsgU1BJIE5BTkQgRmxhc2ggSW50ZXJmYWNlIgo+ID4gPiArICAgICBkZXBlbmRzIG9u IEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUCj4gPiA+ICsgICAgIGRlcGVuZHMgb24gTVRE X05BTkRfRUNDX01FRElBVEVLCj4gPiA+ICsgICAgIGhlbHAKPiA+ID4gKyAgICAgICBUaGlzIGVu YWJsZXMgc3VwcG9ydCBmb3IgU1BJLU5BTkQgbW9kZSBvbiB0aGUgTWVkaWFUZWsgTkFORAo+ID4g PiArICAgICAgIEZsYXNoIEludGVyZmFjZSBmb3VuZCBvbiBNZWRpYVRlayBBUk0gU29Dcy4gVGhp cyBjb250cm9sbGVyCj4gPiA+ICsgICAgICAgaXMgaW1wbGVtZW50ZWQgYXMgYSBTUEktTUVNIGNv bnRyb2xsZXIgd2l0aCBwaXBlbGluZWQgRUNDCj4gPiA+ICsgICAgICAgY2FwY2FiaWxpdHkuCj4g PiA+ICsKPiA+ID4gIGNvbmZpZyBTUElfTlBDTV9GSVUKPiA+ID4gICAgICAgdHJpc3RhdGUgIk51 dm90b24gTlBDTSBGTEFTSCBJbnRlcmZhY2UgVW5pdCIKPiA+ID4gICAgICAgZGVwZW5kcyBvbiBB UkNIX05QQ00gfHwgQ09NUElMRV9URVNUCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9N YWtlZmlsZSBiL2RyaXZlcnMvc3BpL01ha2VmaWxlCj4gPiA+IGluZGV4IDNhYTI4ZWQzZjc2MS4u NTE1NDFmZjE3ZTY3IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+ID4g PiArKysgYi9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+ID4gPiBAQCAtNzYsNiArNzYsNyBAQCBvYmot JChDT05GSUdfU1BJX01QQzUyeHgpICAgICAgICAgICArPSBzcGktbXBjNTJ4eC5vCj4gPiA+ICBv YmotJChDT05GSUdfU1BJX01UNjVYWCkgICAgICAgICAgICAgICAgKz0gc3BpLW10NjV4eC5vCj4g PiA+ICBvYmotJChDT05GSUdfU1BJX01UNzYyMSkgICAgICAgICAgICAgKz0gc3BpLW10NzYyMS5v Cj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01US19OT1IpICAgICAgICAgICAgKz0gc3BpLW10ay1u b3Iubwo+ID4gPiArb2JqLSQoQ09ORklHX1NQSV9NVEtfU05GSSkgICAgICAgICAgICs9IHNwaS1t dGstc25maS5vCj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01YSUMpICAgICAgICAgICAgICAgICAg ICAgICArPSBzcGktbXhpYy5vCj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01YUykgICAgICAgICAg ICAgICAgICAgICAgICArPSBzcGktbXhzLm8KPiA+ID4gIG9iai0kKENPTkZJR19TUElfTlBDTV9G SVUpICAgICAgICAgICArPSBzcGktbnBjbS1maXUubwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zcGkvc3BpLW10ay1zbmZpLmMgYi9kcml2ZXJzL3NwaS9zcGktbXRrLXNuZmkuYwo+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmU4ZjhmMzBiZDdl ZQo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvc3BpL3NwaS1tdGstc25m aS5jICAKPiA+Cj4gPiBbLi4uXQo+ID4gIAo+ID4gPiArc3RhdGljIHN0cnVjdCBtdGtfc25hbmQg Km5hbmRfdG9fbXRrX3NuYW5kKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCkKPiA+ID4gK3sKPiA+ ID4gKyAgICAgc3RydWN0IG5hbmRfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNjLmVuZ2luZTsK PiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gY29udGFpbmVyX29mKGVuZywgc3RydWN0IG10a19z bmFuZCwgZWNjX2VuZyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50 IHNuYW5kX3ByZXBhcmVfYm91bmNlYnVmKHN0cnVjdCBtdGtfc25hbmQgKnNuZiwgc2l6ZV90IHNp emUpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIGlmIChzbmYtPmJ1Zl9sZW4gPj0gc2l6ZSkKPiA+ID4g KyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ID4gKyAgICAgaWYgKHNuZi0+YnVmKQo+ID4gPiAr ICAgICAgICAgICAgIGRtYW1fZnJlZV9jb2hlcmVudChzbmYtPmRldiwgc25mLT5idWZfbGVuLCBz bmYtPmJ1ZiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25mLT5idWZf ZG1hKTsgIAo+ID4KPiA+IENhbid0IHdlIHVzZSBhIHNpbmdsZSBjb2hlcmVudCBidWZmZXIgb25j ZSBmb3IgYWxsPyAgCj4gCj4gVGhpcyBvbmx5IHJlYWxsb2NhdGVzIHdoZW4gdGhlIHBhZ2Ugc2l6 ZSBjaGFuZ2VzIHRvIGEgbGFyZ2VyIG9uZSwKPiBzbyB0aGVyZSdzIGF0IG1vc3QgdHdvIGFsbG9j YXRpb25zOiBvbmUgZHVyaW5nIHByb2JlIGFuZCB0aGUgb3RoZXIKPiBvbmUgaW4gdGhlIGZpcnN0 IGNhbGwgdG8gaW5pdF9jdHguIFRoZSBvdGhlciBzb2x1dGlvbiBpcyB0byBhbGxvY2F0ZSBhCj4g YnVmZmVyIGZvciB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgcGFnZSBzaXplIGJ1dCBJIHRoaW5rIHRo YXQncyBhCj4gd2FzdGUgb2YgbWVtb3J5LgoKT2ssIGZpbmUuCgo+IAo+ID4gIAo+ID4gPiArICAg ICBzbmYtPmJ1ZiA9Cj4gPiA+ICsgICAgICAgICAgICAgZG1hbV9hbGxvY19jb2hlcmVudChzbmYt PmRldiwgc2l6ZSwgJnNuZi0+YnVmX2RtYSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsgICAgIGlmICgh c25mLT5idWYpCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsgICAg IHNuZi0+YnVmX2xlbiA9IHNpemU7Cj4gPiA+ICsgICAgIG1lbXNldChzbmYtPmJ1ZiwgMHhmZiwg c25mLT5idWZfbGVuKTsKPiA+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsgIAo+ ID4KPiA+IFsuLi5dCj4gPiAgCj4gPiA+ICtzdGF0aWMgaW50IG10a19zbmFuZF9lY2NfaW5pdF9j dHgoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ID4gPiArewo+ID4gPiArICAgICBzdHJ1Y3Qg bXRrX3NuYW5kICpzbmYgPSBuYW5kX3RvX210a19zbmFuZChuYW5kKTsKPiA+ID4gKyAgICAgc3Ry dWN0IG5hbmRfZWNjX3Byb3BzICpjb25mID0gJm5hbmQtPmVjYy5jdHguY29uZjsKPiA+ID4gKyAg ICAgc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kZGV2X3RvX210ZChuYW5kKTsKPiA+ID4gKyAg ICAgaW50IHJldDsKPiA+ID4gKwo+ID4gPiArICAgICByZXQgPSBtdGtfc25hbmRfc2V0dXBfcGFn ZWZtdChzbmYsIG5hbmQtPm1lbW9yZy5wYWdlc2l6ZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmFuZC0+bWVtb3JnLm9vYnNpemUpOwo+ID4gPiArICAgICBpZiAo cmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAg bXRkX3NldF9vb2JsYXlvdXQobXRkLCAmbXRrX3NuYW5kX29vYmxheW91dCk7Cj4gPiA+ICsKPiA+ ID4gKyAgICAgLy8gVGhpcyBkcml2ZXIgaWdub3JlcyBhbnkgRUNDIGNhcGFiaWxpdHkgY29uZmln dXJlZCBieSB1c2VyIG9yCj4gPiA+ICsgICAgIC8vIHJlcXVlc3RlZCBieSB0aGUgbmFuZCBjaGlw IGJlY2F1c2UgdGhlIEJvb3RST00gYW5kIE1USyBib290bG9hZGVyCj4gPiA+ICsgICAgIC8vIGV4 cGVjdHMgdGhlIHBhZ2UgZm9ybWF0IHRvIGJlIHRoZSBleGFjdCBvbmUgYXMgY2FsY3VsYXRlZCBp bgo+ID4gPiArICAgICAvLyBzZXR1cF9wYWdlZm10LiAgCj4gPgo+ID4gSSBkb24ndCBsaWtlIHRo aXMgOikKPiA+Cj4gPiBJIHVuZGVyc3RhbmQgdGhhdCB0aGUgYm9vdCBwYXJ0aXRpb24gbWlnaHQg aGF2ZSBzcGVjaWZpYyBjb25zdHJhaW50cywKPiA+IGJ1dCBvdGhlciBwYXJ0aXRpb25zIChvciBp ZiB3ZSBkb24ndCB1c2UgdGhlIE5BTkQgdG8gYm9vdD8pIHNob3VsZAo+ID4gcHJvYmFibHkgYmUg dXNhYmxlIHdpdGggb3RoZXIgRUNDIHNjaGVtZXMuICAKPiAKPiBJbiB0aGlzIGNvbnRyb2xsZXIs IHRoZSBFQ0Mgc3RlcCBzaXplIGlzIGZpeGVkIGFuZCBpdCBjYW4gb25seSBjaGFuZ2UKPiBFQ0Mg c3RyZW5ndGguCgpUaGF0J3MgZmluZS4KCj4gVGhlIGNhbGN1bGF0ZWQgRUNDIGNvcnJlY3Rpb24g Y2FwYWJpbGl0eSBpcyB0aGUgbWF4Cj4gcG9zc2libGUgb25lIHN1cHBvcnRlZCBieSB0aGUgY29u dHJvbGxlci4KPiBJIHN0aWxsIHdhbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgdG8gbWF0Y2ggdGhl IGJvb3QgcGFydGl0aW9uCj4gcmVxdWlyZW1lbnQsCgpUaGF0IGlzIG9rYXksIGJ1dCB0aGF0IGRv ZXMgbm90IG1lYW4geW91IGNhbiBvbmx5IHN1cHBvcnQgdGhpcyBvbmUuCgo+IGJlY2F1c2Ugd2Ug Y2FuJ3QganVzdCB0ZWxsIGVuZC11c2VycyB0byBjdXN0b21pemUKPiB0aGVpciBkdHMgYnkgdGFr aW5nIGFwYXJ0IHRoZWlyIGRldmljZSBhbmQgZmlndXJlIG91dCB3aGljaCBmbGFzaAo+IGlzIHVz ZWQuCgpUaGV5IGRvbid0IGhhdmUgdG8gZG8gc28uIEluIHRoZW9yeSB0aGV5IHNob3VsZCBub3Qg cmVxdWVzdCBhbnl0aGluZywKdGhlIGNvcmUgd291bGQgdGFrZSBjYXJlIG9mIGFsbCBvZiB0aGF0 LiBCdXQgdGhleSBjYW4gcmVxdWVzdCBzcGVjaWZpYwp2YWx1ZXMgYnkgdXNpbmcgdGhlIERUIGFu ZCB5b3UgbXVzdCBmb2xsb3cgdGhlbSBpbiB0aGUgZHJpdmVyLgoKT24gaGlzIHNpZGUgdGhlIGNv cmUgaXMgcmVzcG9uc2libGUgb2YgdGVsbGluZyB5b3Ugd2hpY2ggc3RyZW5ndGgKc2hvdWxkIGJl IHVzZWQgb3RoZXJ3aXNlIGFuZCB0aGUgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIHVzZSBpdC4KCj4g SSBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmc6CgpZb3Ugc2hvdWxkIHRha2UgdGhlIHVzZXIg cmVxdWlyZW1lbnRzIGZpcnN0LiBJZiB0aGVyZSBhcmUgbm8KdXNlciBpbnB1dHMsIHlvdSBzaG91 bGQgaW4gdGhlb3J5IGxvb2sgYXQgdGhlIGRldmljZSdzIHJlcXVpcmVtZW50cy4KCj4gMS4gc2Vs ZWN0IHRoZSBtaW5pbXVtIGNhcGFiaWxpdHkgZXhjZWVkaW5nIGVjYy51c2VyX2NvbmYKPiAyLiBJ ZiB0aGF0IGRvZXNuJ3QgZXhpc3QsIHVzZSB0aGUgY2FsY3VsYXRlZCBvbmUgYW5kIHdhcm4KPiAg ICBpZiBpdCBkb2Vzbid0IG1lZXQgZWNjLnJlcXVpcmVtZW50cwo+IElzIHRoaXMgT0s/Cj4gCj4g PiAgCj4gPiA+ICsgICAgIGNvbmYtPnN0ZXBfc2l6ZSA9IHNuZi0+Y2Fwcy0+c2VjdG9yX3NpemU7 Cj4gPiA+ICsgICAgIGNvbmYtPnN0cmVuZ3RoID0gc25mLT5lY2NfY2ZnLnN0cmVuZ3RoOwo+ID4g PiArCj4gPiA+ICsgICAgIHJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aW50IG10a19zbmFuZF9lY2NfcHJlcGFyZV9pb19yZXEoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5k LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuYW5k X3BhZ2VfaW9fcmVxICpyZXEpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtfc25hbmQg KnNuZiA9IG5hbmRfdG9fbXRrX3NuYW5kKG5hbmQpOwo+ID4gPiArICAgICBpbnQgcmV0Owo+ID4g PiArCj4gPiA+ICsgICAgIHJldCA9IG10a19zbmFuZF9zZXR1cF9wYWdlZm10KHNuZiwgbmFuZC0+ bWVtb3JnLnBhZ2VzaXplLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW5kLT5tZW1vcmcub29ic2l6ZSk7Cj4gPiA+ICsgICAgIGlmIChyZXQpCj4gPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gKyAgICAgc25mLT5hdXRvZm10ID0gdHJ1ZTsKPiA+ ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgbXRr X3NuYW5kX2VjY19maW5pc2hfaW9fcmVxKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCwKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuYW5kX3BhZ2VfaW9f cmVxICpyZXEpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtfc25hbmQgKnNuZiA9IG5h bmRfdG9fbXRrX3NuYW5kKG5hbmQpOwo+ID4gPiArICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9 IG5hbmRkZXZfdG9fbXRkKG5hbmQpOwo+ID4gPiArCj4gPiA+ICsgICAgIHNuZi0+YXV0b2ZtdCA9 IGZhbHNlOwo+ID4gPiArICAgICBpZiAoKHJlcS0+bW9kZSA9PSBNVERfT1BTX1JBVykgfHwgKHJl cS0+dHlwZSAhPSBOQU5EX1BBR0VfUkVBRCkpCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDA7 Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKHNuZi0+ZWNjX3N0YXRzLmZhaWxlZCkKPiA+ID4gKyAg ICAgICAgICAgICBtdGQtPmVjY19zdGF0cy5mYWlsZWQgKz0gc25mLT5lY2Nfc3RhdHMuZmFpbGVk Owo+ID4gPiArICAgICBtdGQtPmVjY19zdGF0cy5jb3JyZWN0ZWQgKz0gc25mLT5lY2Nfc3RhdHMu Y29ycmVjdGVkOwo+ID4gPiArICAgICByZXR1cm4gc25mLT5lY2Nfc3RhdHMuZmFpbGVkID8gLUVC QURNU0cgOiBzbmYtPmVjY19zdGF0cy5iaXRmbGlwczsgIAo+ID4KPiA+IERpZCB5b3UgdmVyaWZ5 IHRoYXQgbmFuZGJpdGVycnMgLWkgc3VjY2VlZHM/ICAKPiAKPiBJIGRpZCBhIGluc21vZCBtdGRf bmFuZGJpdGVycnMua28gZGV2PXggYW5kIHRoZSByZXBvcnRlZCBiaXRmbGlwcyBpbgo+IGtlcm5l bCBsb2cgaXMgY29ycmVjdC4KPiAKPiBJcyB0aGVyZSBhIHVzZXJzcGFjZSB0b29sIGZvciB0aGlz PyBJJ2QgbGlrZSB0byB1c2UgdGhhdCBpbnN0ZWFkIG9mIGEKPiBrZXJuZWwgbW9kdWxlIGluIHRo ZSBmdXR1cmUuCgpZZXMsIHlvdSBjYW4gZ2l2ZSB0aGUgbXRkLXV0aWxzIHRlc3Qgc3VpdGUgYSB0 cnkuIEFsbW9zdCBhbGwgdGhlIHRvb2xzCmhhdmUgYmVlbiBtaWdyYXRlZCB0aGVyZS4gVGhlcmUg ZXZlbiBpcyBhIEJ1aWxkcm9vdCBwYWNrYWdlLgoKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3Rh dGljIHN0cnVjdCBuYW5kX2VjY19lbmdpbmVfb3BzIG10a19zbmZpX2VjY19lbmdpbmVfb3BzID0g ewo+ID4gPiArICAgICAuaW5pdF9jdHggPSBtdGtfc25hbmRfZWNjX2luaXRfY3R4LAo+ID4gPiAr ICAgICAucHJlcGFyZV9pb19yZXEgPSBtdGtfc25hbmRfZWNjX3ByZXBhcmVfaW9fcmVxLAo+ID4g PiArICAgICAuZmluaXNoX2lvX3JlcSA9IG10a19zbmFuZF9lY2NfZmluaXNoX2lvX3JlcSwgIAo+ ID4KPiA+IEkgYmVsaWV2ZSB5b3UgbmVlZCB0byB0YWtlIGNhcmUgb2YgdGhlIGJvdW5jZSBidWZm ZXIgaW4gdGhlIGV4aXQgcGF0aD8gIAo+IAo+IE5vLiBUaGUgYnVmZmVyIHNob3VsZCBiZSBsZWZ0 IHRoZXJlIGZvciBub24tZWNjIHNwaS1tZW0gb3BlcmF0aW9ucy4KCkFGQUlSIHlvdSBpbml0aWFs aXplIHRoZSBidWZmZXIgaW4gdGhlIEVDQyBwYXJ0LCBzbyBpZiBpdCBtdXN0IGJlIHVzZWQKd2l0 aG91dCBFQ0MgeW91IHNob3VsZCBwcm9iYWJseSBhbGxvY2F0ZSBpdCBmb3IgdGhlIFNQSSBjb250 cm9sbGVyLiBJbgphbnkgd2F5LCB5b3UgbmVlZCB0byBmcmVlIHRoYXQgbWVtb3J5IGF0IHNvbWUg cG9pbnQgKHdoZW4gcmVtb3ZpbmcgdGhlCmRyaXZlcikuCgo+IAo+ID4gIAo+ID4gPiArfTsKPiA+ ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgbXRrX3NuYW5kX3JlYWRfZmRtKHN0cnVjdCBtdGtfc25h bmQgKnNuZiwgdWludDhfdCAqYnVmKQo+ID4gPiArewo+ID4gPiArICAgICB1aW50MzJfdCB2YWxs LCB2YWxtOwo+ID4gPiArICAgICB1aW50OF90ICpvb2JwdHIgPSBidWY7Cj4gPiA+ICsgICAgIGlu dCBpLCBqOwo+ID4gPiArCj4gPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBzbmYtPm5maV9jZmcu bnNlY3RvcnM7IGkrKykgewo+ID4gPiArICAgICAgICAgICAgIHZhbGwgPSBuZmlfcmVhZDMyKHNu ZiwgTkZJX0ZETUwoaSkpOwo+ID4gPiArICAgICAgICAgICAgIHZhbG0gPSBuZmlfcmVhZDMyKHNu ZiwgTkZJX0ZETU0oaSkpOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgZm9yIChqID0gMDsg aiA8IHNuZi0+Y2Fwcy0+ZmRtX3NpemU7IGorKykKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IG9vYnB0cltqXSA9IChqID49IDQgPyB2YWxtIDogdmFsbCkgPj4gKChqICUgNCkgKiA4KTsKPiA+ ID4gKwo+ID4gPiArICAgICAgICAgICAgIG9vYnB0ciArPSBzbmYtPmNhcHMtPmZkbV9zaXplOwo+ ID4gPiArICAgICB9Cj4gPiA+ICt9ICAKPiA+Cj4gPiBUaGFua3MsCj4gPiBNaXF1w6hsICAKPiAK PiAKPiAKPiAtLQo+IFJlZ2FyZHMsCj4gQ2h1YW5ob25nIEd1bwoKClRoYW5rcywKTWlxdcOobAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxp bnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0CE16C433EF for ; Mon, 4 Apr 2022 10:28:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1357571AbiDDKad (ORCPT ); Mon, 4 Apr 2022 06:30:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237099AbiDDKac (ORCPT ); Mon, 4 Apr 2022 06:30:32 -0400 Received: from relay10.mail.gandi.net (relay10.mail.gandi.net [IPv6:2001:4b98:dc4:8::230]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87332263D; Mon, 4 Apr 2022 03:28:33 -0700 (PDT) Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 399F524000B; Mon, 4 Apr 2022 10:28:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1649068109; 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=HCsUi7kOI3d6Xo1Mm1jD9G/wtU6d4VrhYaApfm09KZI=; b=gbwGaNha7rEyqNkTaxQbeooF06FS+a4ZuW9tSlSN+P/9d25inyojXEX05W4+wQ30vvrXWu P5dme+NQYjzbThTQ+GaAKh9EhHFG2eI4w7kYqefsxf5lpvcV8TzTa8UrPfqtfNGkHMFjVc ZFGBPby619uiBHPpESgx7+HRU39TAIHjRhReYvti2QHS5rKUtMU5o8mDBnA9AgfBVNU6xL Rwzowagr2P1dk76ve5wQz6BBx+b1dma1beoBR5Sghf0UCyQXIwtjBJ+9anfxb0noEA6329 vqEORxQb7TJ7AFCXOmglRk8d/qbchxUB32ymQ6qiD6I4hcn9hEFI899uDT5qEQ== Date: Mon, 4 Apr 2022 12:28:24 +0200 From: Miquel Raynal To: Chuanhong Guo Cc: linux-spi@vger.kernel.org, Mark Brown , Rob Herring , Krzysztof Kozlowski , Matthias Brugger , Richard Weinberger , Vignesh Raghavendra , Roger Quadros , Thomas Bogendoerfer , Cai Huoqing , Florian Fainelli , Colin Ian King , Wolfram Sang , Paul Cercueil , Pratyush Yadav , Yu Kuai , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , "moderated list:ARM/Mediatek SoC support" , "moderated list:ARM/Mediatek SoC support" , open list , "open list:NAND FLASH SUBSYSTEM" Subject: Re: [PATCH v2 2/5] spi: add driver for MTK SPI NAND Flash Interface Message-ID: <20220404122824.63a1c857@xps13> In-Reply-To: References: <20220404040153.1509966-1-gch981213@gmail.com> <20220404040153.1509966-3-gch981213@gmail.com> <20220404095937.20089db7@xps13> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org Hi Chuanhong, gch981213@gmail.com wrote on Mon, 4 Apr 2022 17:13:55 +0800: > Hi! >=20 > On Mon, Apr 4, 2022 at 3:59 PM Miquel Raynal = wrote: > > > > Hi Chuanhong, > > > > gch981213@gmail.com wrote on Mon, 4 Apr 2022 12:01:50 +0800: > > =20 > > > This driver implements support for the SPI-NAND mode of MTK NAND Flash > > > Interface as a SPI-MEM controller with piplined ECC capability. > > > > > > Signed-off-by: Chuanhong Guo > > > --- > > > > > > Change since v1: > > > fix CI warnings > > > > > > drivers/spi/Kconfig | 10 + > > > drivers/spi/Makefile | 1 + > > > drivers/spi/spi-mtk-snfi.c | 1351 ++++++++++++++++++++++++++++++++++= ++ > > > 3 files changed, 1362 insertions(+) > > > create mode 100644 drivers/spi/spi-mtk-snfi.c > > > > > > diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig > > > index d2815eb361c0..739eec7d0c15 100644 > > > --- a/drivers/spi/Kconfig > > > +++ b/drivers/spi/Kconfig > > > @@ -590,6 +590,16 @@ config SPI_MTK_NOR > > > SPI interface as well as several SPI NOR specific instructions > > > via SPI MEM interface. > > > > > > +config SPI_MTK_SNFI > > > + tristate "MediaTek SPI NAND Flash Interface" > > > + depends on ARCH_MEDIATEK || COMPILE_TEST > > > + depends on MTD_NAND_ECC_MEDIATEK > > > + help > > > + This enables support for SPI-NAND mode on the MediaTek NAND > > > + Flash Interface found on MediaTek ARM SoCs. This controller > > > + is implemented as a SPI-MEM controller with pipelined ECC > > > + capcability. > > > + > > > config SPI_NPCM_FIU > > > tristate "Nuvoton NPCM FLASH Interface Unit" > > > depends on ARCH_NPCM || COMPILE_TEST > > > diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile > > > index 3aa28ed3f761..51541ff17e67 100644 > > > --- a/drivers/spi/Makefile > > > +++ b/drivers/spi/Makefile > > > @@ -76,6 +76,7 @@ obj-$(CONFIG_SPI_MPC52xx) +=3D spi-mpc52x= x.o > > > obj-$(CONFIG_SPI_MT65XX) +=3D spi-mt65xx.o > > > obj-$(CONFIG_SPI_MT7621) +=3D spi-mt7621.o > > > obj-$(CONFIG_SPI_MTK_NOR) +=3D spi-mtk-nor.o > > > +obj-$(CONFIG_SPI_MTK_SNFI) +=3D spi-mtk-snfi.o > > > obj-$(CONFIG_SPI_MXIC) +=3D spi-mxic.o > > > obj-$(CONFIG_SPI_MXS) +=3D spi-mxs.o > > > obj-$(CONFIG_SPI_NPCM_FIU) +=3D spi-npcm-fiu.o > > > diff --git a/drivers/spi/spi-mtk-snfi.c b/drivers/spi/spi-mtk-snfi.c > > > new file mode 100644 > > > index 000000000000..e8f8f30bd7ee > > > --- /dev/null > > > +++ b/drivers/spi/spi-mtk-snfi.c =20 > > > > [...] > > =20 > > > +static struct mtk_snand *nand_to_mtk_snand(struct nand_device *nand) > > > +{ > > > + struct nand_ecc_engine *eng =3D nand->ecc.engine; > > > + > > > + return container_of(eng, struct mtk_snand, ecc_eng); > > > +} > > > + > > > +static inline int snand_prepare_bouncebuf(struct mtk_snand *snf, siz= e_t size) > > > +{ > > > + if (snf->buf_len >=3D size) > > > + return 0; > > > + if (snf->buf) > > > + dmam_free_coherent(snf->dev, snf->buf_len, snf->buf, > > > + snf->buf_dma); =20 > > > > Can't we use a single coherent buffer once for all? =20 >=20 > This only reallocates when the page size changes to a larger one, > so there's at most two allocations: one during probe and the other > one in the first call to init_ctx. The other solution is to allocate a > buffer for the maximum supported page size but I think that's a > waste of memory. Ok, fine. >=20 > > =20 > > > + snf->buf =3D > > > + dmam_alloc_coherent(snf->dev, size, &snf->buf_dma, GFP_= KERNEL); > > > + if (!snf->buf) > > > + return -ENOMEM; > > > + snf->buf_len =3D size; > > > + memset(snf->buf, 0xff, snf->buf_len); > > > + return 0; > > > +} > > > + =20 > > > > [...] > > =20 > > > +static int mtk_snand_ecc_init_ctx(struct nand_device *nand) > > > +{ > > > + struct mtk_snand *snf =3D nand_to_mtk_snand(nand); > > > + struct nand_ecc_props *conf =3D &nand->ecc.ctx.conf; > > > + struct mtd_info *mtd =3D nanddev_to_mtd(nand); > > > + int ret; > > > + > > > + ret =3D mtk_snand_setup_pagefmt(snf, nand->memorg.pagesize, > > > + nand->memorg.oobsize); > > > + if (ret) > > > + return ret; > > > + > > > + mtd_set_ooblayout(mtd, &mtk_snand_ooblayout); > > > + > > > + // This driver ignores any ECC capability configured by user or > > > + // requested by the nand chip because the BootROM and MTK bootl= oader > > > + // expects the page format to be the exact one as calculated in > > > + // setup_pagefmt. =20 > > > > I don't like this :) > > > > I understand that the boot partition might have specific constraints, > > but other partitions (or if we don't use the NAND to boot?) should > > probably be usable with other ECC schemes. =20 >=20 > In this controller, the ECC step size is fixed and it can only change > ECC strength. That's fine. > The calculated ECC correction capability is the max > possible one supported by the controller. > I still want the default behavior to match the boot partition > requirement, That is okay, but that does not mean you can only support this one. > because we can't just tell end-users to customize > their dts by taking apart their device and figure out which flash > is used. They don't have to do so. In theory they should not request anything, the core would take care of all of that. But they can request specific values by using the DT and you must follow them in the driver. On his side the core is responsible of telling you which strength should be used otherwise and the driver is expected to use it. > I can implement the following: You should take the user requirements first. If there are no user inputs, you should in theory look at the device's requirements. > 1. select the minimum capability exceeding ecc.user_conf > 2. If that doesn't exist, use the calculated one and warn > if it doesn't meet ecc.requirements > Is this OK? >=20 > > =20 > > > + conf->step_size =3D snf->caps->sector_size; > > > + conf->strength =3D snf->ecc_cfg.strength; > > > + > > > + return 0; > > > +} > > > + > > > +static int mtk_snand_ecc_prepare_io_req(struct nand_device *nand, > > > + struct nand_page_io_req *req) > > > +{ > > > + struct mtk_snand *snf =3D nand_to_mtk_snand(nand); > > > + int ret; > > > + > > > + ret =3D mtk_snand_setup_pagefmt(snf, nand->memorg.pagesize, > > > + nand->memorg.oobsize); > > > + if (ret) > > > + return ret; > > > + snf->autofmt =3D true; > > > + return 0; > > > +} > > > + > > > +static int mtk_snand_ecc_finish_io_req(struct nand_device *nand, > > > + struct nand_page_io_req *req) > > > +{ > > > + struct mtk_snand *snf =3D nand_to_mtk_snand(nand); > > > + struct mtd_info *mtd =3D nanddev_to_mtd(nand); > > > + > > > + snf->autofmt =3D false; > > > + if ((req->mode =3D=3D MTD_OPS_RAW) || (req->type !=3D NAND_PAGE= _READ)) > > > + return 0; > > > + > > > + if (snf->ecc_stats.failed) > > > + mtd->ecc_stats.failed +=3D snf->ecc_stats.failed; > > > + mtd->ecc_stats.corrected +=3D snf->ecc_stats.corrected; > > > + return snf->ecc_stats.failed ? -EBADMSG : snf->ecc_stats.bitfli= ps; =20 > > > > Did you verify that nandbiterrs -i succeeds? =20 >=20 > I did a insmod mtd_nandbiterrs.ko dev=3Dx and the reported bitflips in > kernel log is correct. >=20 > Is there a userspace tool for this? I'd like to use that instead of a > kernel module in the future. Yes, you can give the mtd-utils test suite a try. Almost all the tools have been migrated there. There even is a Buildroot package. > > > +} > > > + > > > +static struct nand_ecc_engine_ops mtk_snfi_ecc_engine_ops =3D { > > > + .init_ctx =3D mtk_snand_ecc_init_ctx, > > > + .prepare_io_req =3D mtk_snand_ecc_prepare_io_req, > > > + .finish_io_req =3D mtk_snand_ecc_finish_io_req, =20 > > > > I believe you need to take care of the bounce buffer in the exit path? = =20 >=20 > No. The buffer should be left there for non-ecc spi-mem operations. AFAIR you initialize the buffer in the ECC part, so if it must be used without ECC you should probably allocate it for the SPI controller. In any way, you need to free that memory at some point (when removing the driver). >=20 > > =20 > > > +}; > > > + > > > +static void mtk_snand_read_fdm(struct mtk_snand *snf, uint8_t *buf) > > > +{ > > > + uint32_t vall, valm; > > > + uint8_t *oobptr =3D buf; > > > + int i, j; > > > + > > > + for (i =3D 0; i < snf->nfi_cfg.nsectors; i++) { > > > + vall =3D nfi_read32(snf, NFI_FDML(i)); > > > + valm =3D nfi_read32(snf, NFI_FDMM(i)); > > > + > > > + for (j =3D 0; j < snf->caps->fdm_size; j++) > > > + oobptr[j] =3D (j >=3D 4 ? valm : vall) >> ((j %= 4) * 8); > > > + > > > + oobptr +=3D snf->caps->fdm_size; > > > + } > > > +} =20 > > > > Thanks, > > Miqu=C3=A8l =20 >=20 >=20 >=20 > -- > Regards, > Chuanhong Guo Thanks, Miqu=C3=A8l 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 C57ACC433F5 for ; Mon, 4 Apr 2022 10:29:53 +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=Im7FFDg44e6FsBRWB6ElDbC3wvnzLxq/xEd7n4+uOvA=; b=cfZtNR2NP34eBw fLW7I8jWR3rSSr0cxWHeeSzLLRzqzQ7MX8JKn3Z51nczY+h6lKds/IQ94RcR8UHqbkBHvpDSh+M7U nrxRHrn64CTQ63g7N6gSES7i2RJMwt6hN8NjP9PBvQEr0I4XaM7fIU3aZppiwB+pWCoN8ZrQAvm/a reLE8+2bMREZtpQxSWWnEQ+ZiM0pt0x4y5djoOIdNqrcAq2qz6lI89WOePZekBcEMIx3n7NBtVLuE f4KUW0WBdw8NyL7aQTG5khBOP8DFd1uQx36GnDP7M5YV/ytDktGm+Gow061AsXcxukhTKM6SSwYdX mSa6JtEu7b0AS/Ivcw6A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbJwy-00EVNg-Tl; Mon, 04 Apr 2022 10:28:45 +0000 Received: from relay10.mail.gandi.net ([2001:4b98:dc4:8::230]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbJwm-00EVJH-PQ; Mon, 04 Apr 2022 10:28:35 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 399F524000B; Mon, 4 Apr 2022 10:28:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1649068109; 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=HCsUi7kOI3d6Xo1Mm1jD9G/wtU6d4VrhYaApfm09KZI=; b=gbwGaNha7rEyqNkTaxQbeooF06FS+a4ZuW9tSlSN+P/9d25inyojXEX05W4+wQ30vvrXWu P5dme+NQYjzbThTQ+GaAKh9EhHFG2eI4w7kYqefsxf5lpvcV8TzTa8UrPfqtfNGkHMFjVc ZFGBPby619uiBHPpESgx7+HRU39TAIHjRhReYvti2QHS5rKUtMU5o8mDBnA9AgfBVNU6xL Rwzowagr2P1dk76ve5wQz6BBx+b1dma1beoBR5Sghf0UCyQXIwtjBJ+9anfxb0noEA6329 vqEORxQb7TJ7AFCXOmglRk8d/qbchxUB32ymQ6qiD6I4hcn9hEFI899uDT5qEQ== Date: Mon, 4 Apr 2022 12:28:24 +0200 From: Miquel Raynal To: Chuanhong Guo Cc: linux-spi@vger.kernel.org, Mark Brown , Rob Herring , Krzysztof Kozlowski , Matthias Brugger , Richard Weinberger , Vignesh Raghavendra , Roger Quadros , Thomas Bogendoerfer , Cai Huoqing , Florian Fainelli , Colin Ian King , Wolfram Sang , Paul Cercueil , Pratyush Yadav , Yu Kuai , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , "moderated list:ARM/Mediatek SoC support" , "moderated list:ARM/Mediatek SoC support" , open list , "open list:NAND FLASH SUBSYSTEM" Subject: Re: [PATCH v2 2/5] spi: add driver for MTK SPI NAND Flash Interface Message-ID: <20220404122824.63a1c857@xps13> In-Reply-To: References: <20220404040153.1509966-1-gch981213@gmail.com> <20220404040153.1509966-3-gch981213@gmail.com> <20220404095937.20089db7@xps13> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (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-20220404_032833_390581_AC78CAA6 X-CRM114-Status: GOOD ( 56.62 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQ2h1YW5ob25nLAoKZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBNb24sIDQgQXByIDIw MjIgMTc6MTM6NTUgKzA4MDA6Cgo+IEhpIQo+IAo+IE9uIE1vbiwgQXByIDQsIDIwMjIgYXQgMzo1 OSBQTSBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPiB3cm90ZToKPiA+ Cj4gPiBIaSBDaHVhbmhvbmcsCj4gPgo+ID4gZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBN b24sICA0IEFwciAyMDIyIDEyOjAxOjUwICswODAwOgo+ID4gIAo+ID4gPiBUaGlzIGRyaXZlciBp bXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBTUEktTkFORCBtb2RlIG9mIE1USyBOQU5EIEZsYXNo Cj4gPiA+IEludGVyZmFjZSBhcyBhIFNQSS1NRU0gY29udHJvbGxlciB3aXRoIHBpcGxpbmVkIEVD QyBjYXBhYmlsaXR5Lgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBDaHVhbmhvbmcgR3VvIDxn Y2g5ODEyMTNAZ21haWwuY29tPgo+ID4gPiAtLS0KPiA+ID4KPiA+ID4gQ2hhbmdlIHNpbmNlIHYx Ogo+ID4gPiAgIGZpeCBDSSB3YXJuaW5ncwo+ID4gPgo+ID4gPiAgZHJpdmVycy9zcGkvS2NvbmZp ZyAgICAgICAgfCAgIDEwICsKPiA+ID4gIGRyaXZlcnMvc3BpL01ha2VmaWxlICAgICAgIHwgICAg MSArCj4gPiA+ICBkcml2ZXJzL3NwaS9zcGktbXRrLXNuZmkuYyB8IDEzNTEgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEzNjIgaW5z ZXJ0aW9ucygrKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3BpL3NwaS1tdGst c25maS5jCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9LY29uZmlnIGIvZHJp dmVycy9zcGkvS2NvbmZpZwo+ID4gPiBpbmRleCBkMjgxNWViMzYxYzAuLjczOWVlYzdkMGMxNSAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9zcGkvS2NvbmZpZwo+ID4gPiArKysgYi9kcml2ZXJz L3NwaS9LY29uZmlnCj4gPiA+IEBAIC01OTAsNiArNTkwLDE2IEBAIGNvbmZpZyBTUElfTVRLX05P Ugo+ID4gPiAgICAgICAgIFNQSSBpbnRlcmZhY2UgYXMgd2VsbCBhcyBzZXZlcmFsIFNQSSBOT1Ig c3BlY2lmaWMgaW5zdHJ1Y3Rpb25zCj4gPiA+ICAgICAgICAgdmlhIFNQSSBNRU0gaW50ZXJmYWNl Lgo+ID4gPgo+ID4gPiArY29uZmlnIFNQSV9NVEtfU05GSQo+ID4gPiArICAgICB0cmlzdGF0ZSAi TWVkaWFUZWsgU1BJIE5BTkQgRmxhc2ggSW50ZXJmYWNlIgo+ID4gPiArICAgICBkZXBlbmRzIG9u IEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUCj4gPiA+ICsgICAgIGRlcGVuZHMgb24gTVRE X05BTkRfRUNDX01FRElBVEVLCj4gPiA+ICsgICAgIGhlbHAKPiA+ID4gKyAgICAgICBUaGlzIGVu YWJsZXMgc3VwcG9ydCBmb3IgU1BJLU5BTkQgbW9kZSBvbiB0aGUgTWVkaWFUZWsgTkFORAo+ID4g PiArICAgICAgIEZsYXNoIEludGVyZmFjZSBmb3VuZCBvbiBNZWRpYVRlayBBUk0gU29Dcy4gVGhp cyBjb250cm9sbGVyCj4gPiA+ICsgICAgICAgaXMgaW1wbGVtZW50ZWQgYXMgYSBTUEktTUVNIGNv bnRyb2xsZXIgd2l0aCBwaXBlbGluZWQgRUNDCj4gPiA+ICsgICAgICAgY2FwY2FiaWxpdHkuCj4g PiA+ICsKPiA+ID4gIGNvbmZpZyBTUElfTlBDTV9GSVUKPiA+ID4gICAgICAgdHJpc3RhdGUgIk51 dm90b24gTlBDTSBGTEFTSCBJbnRlcmZhY2UgVW5pdCIKPiA+ID4gICAgICAgZGVwZW5kcyBvbiBB UkNIX05QQ00gfHwgQ09NUElMRV9URVNUCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9N YWtlZmlsZSBiL2RyaXZlcnMvc3BpL01ha2VmaWxlCj4gPiA+IGluZGV4IDNhYTI4ZWQzZjc2MS4u NTE1NDFmZjE3ZTY3IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+ID4g PiArKysgYi9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+ID4gPiBAQCAtNzYsNiArNzYsNyBAQCBvYmot JChDT05GSUdfU1BJX01QQzUyeHgpICAgICAgICAgICArPSBzcGktbXBjNTJ4eC5vCj4gPiA+ICBv YmotJChDT05GSUdfU1BJX01UNjVYWCkgICAgICAgICAgICAgICAgKz0gc3BpLW10NjV4eC5vCj4g PiA+ICBvYmotJChDT05GSUdfU1BJX01UNzYyMSkgICAgICAgICAgICAgKz0gc3BpLW10NzYyMS5v Cj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01US19OT1IpICAgICAgICAgICAgKz0gc3BpLW10ay1u b3Iubwo+ID4gPiArb2JqLSQoQ09ORklHX1NQSV9NVEtfU05GSSkgICAgICAgICAgICs9IHNwaS1t dGstc25maS5vCj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01YSUMpICAgICAgICAgICAgICAgICAg ICAgICArPSBzcGktbXhpYy5vCj4gPiA+ICBvYmotJChDT05GSUdfU1BJX01YUykgICAgICAgICAg ICAgICAgICAgICAgICArPSBzcGktbXhzLm8KPiA+ID4gIG9iai0kKENPTkZJR19TUElfTlBDTV9G SVUpICAgICAgICAgICArPSBzcGktbnBjbS1maXUubwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zcGkvc3BpLW10ay1zbmZpLmMgYi9kcml2ZXJzL3NwaS9zcGktbXRrLXNuZmkuYwo+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmU4ZjhmMzBiZDdl ZQo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvc3BpL3NwaS1tdGstc25m aS5jICAKPiA+Cj4gPiBbLi4uXQo+ID4gIAo+ID4gPiArc3RhdGljIHN0cnVjdCBtdGtfc25hbmQg Km5hbmRfdG9fbXRrX3NuYW5kKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCkKPiA+ID4gK3sKPiA+ ID4gKyAgICAgc3RydWN0IG5hbmRfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNjLmVuZ2luZTsK PiA+ID4gKwo+ID4gPiArICAgICByZXR1cm4gY29udGFpbmVyX29mKGVuZywgc3RydWN0IG10a19z bmFuZCwgZWNjX2VuZyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50 IHNuYW5kX3ByZXBhcmVfYm91bmNlYnVmKHN0cnVjdCBtdGtfc25hbmQgKnNuZiwgc2l6ZV90IHNp emUpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIGlmIChzbmYtPmJ1Zl9sZW4gPj0gc2l6ZSkKPiA+ID4g KyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ID4gKyAgICAgaWYgKHNuZi0+YnVmKQo+ID4gPiAr ICAgICAgICAgICAgIGRtYW1fZnJlZV9jb2hlcmVudChzbmYtPmRldiwgc25mLT5idWZfbGVuLCBz bmYtPmJ1ZiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25mLT5idWZf ZG1hKTsgIAo+ID4KPiA+IENhbid0IHdlIHVzZSBhIHNpbmdsZSBjb2hlcmVudCBidWZmZXIgb25j ZSBmb3IgYWxsPyAgCj4gCj4gVGhpcyBvbmx5IHJlYWxsb2NhdGVzIHdoZW4gdGhlIHBhZ2Ugc2l6 ZSBjaGFuZ2VzIHRvIGEgbGFyZ2VyIG9uZSwKPiBzbyB0aGVyZSdzIGF0IG1vc3QgdHdvIGFsbG9j YXRpb25zOiBvbmUgZHVyaW5nIHByb2JlIGFuZCB0aGUgb3RoZXIKPiBvbmUgaW4gdGhlIGZpcnN0 IGNhbGwgdG8gaW5pdF9jdHguIFRoZSBvdGhlciBzb2x1dGlvbiBpcyB0byBhbGxvY2F0ZSBhCj4g YnVmZmVyIGZvciB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgcGFnZSBzaXplIGJ1dCBJIHRoaW5rIHRo YXQncyBhCj4gd2FzdGUgb2YgbWVtb3J5LgoKT2ssIGZpbmUuCgo+IAo+ID4gIAo+ID4gPiArICAg ICBzbmYtPmJ1ZiA9Cj4gPiA+ICsgICAgICAgICAgICAgZG1hbV9hbGxvY19jb2hlcmVudChzbmYt PmRldiwgc2l6ZSwgJnNuZi0+YnVmX2RtYSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsgICAgIGlmICgh c25mLT5idWYpCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsgICAg IHNuZi0+YnVmX2xlbiA9IHNpemU7Cj4gPiA+ICsgICAgIG1lbXNldChzbmYtPmJ1ZiwgMHhmZiwg c25mLT5idWZfbGVuKTsKPiA+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsgIAo+ ID4KPiA+IFsuLi5dCj4gPiAgCj4gPiA+ICtzdGF0aWMgaW50IG10a19zbmFuZF9lY2NfaW5pdF9j dHgoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ID4gPiArewo+ID4gPiArICAgICBzdHJ1Y3Qg bXRrX3NuYW5kICpzbmYgPSBuYW5kX3RvX210a19zbmFuZChuYW5kKTsKPiA+ID4gKyAgICAgc3Ry dWN0IG5hbmRfZWNjX3Byb3BzICpjb25mID0gJm5hbmQtPmVjYy5jdHguY29uZjsKPiA+ID4gKyAg ICAgc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kZGV2X3RvX210ZChuYW5kKTsKPiA+ID4gKyAg ICAgaW50IHJldDsKPiA+ID4gKwo+ID4gPiArICAgICByZXQgPSBtdGtfc25hbmRfc2V0dXBfcGFn ZWZtdChzbmYsIG5hbmQtPm1lbW9yZy5wYWdlc2l6ZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmFuZC0+bWVtb3JnLm9vYnNpemUpOwo+ID4gPiArICAgICBpZiAo cmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAg bXRkX3NldF9vb2JsYXlvdXQobXRkLCAmbXRrX3NuYW5kX29vYmxheW91dCk7Cj4gPiA+ICsKPiA+ ID4gKyAgICAgLy8gVGhpcyBkcml2ZXIgaWdub3JlcyBhbnkgRUNDIGNhcGFiaWxpdHkgY29uZmln dXJlZCBieSB1c2VyIG9yCj4gPiA+ICsgICAgIC8vIHJlcXVlc3RlZCBieSB0aGUgbmFuZCBjaGlw IGJlY2F1c2UgdGhlIEJvb3RST00gYW5kIE1USyBib290bG9hZGVyCj4gPiA+ICsgICAgIC8vIGV4 cGVjdHMgdGhlIHBhZ2UgZm9ybWF0IHRvIGJlIHRoZSBleGFjdCBvbmUgYXMgY2FsY3VsYXRlZCBp bgo+ID4gPiArICAgICAvLyBzZXR1cF9wYWdlZm10LiAgCj4gPgo+ID4gSSBkb24ndCBsaWtlIHRo aXMgOikKPiA+Cj4gPiBJIHVuZGVyc3RhbmQgdGhhdCB0aGUgYm9vdCBwYXJ0aXRpb24gbWlnaHQg aGF2ZSBzcGVjaWZpYyBjb25zdHJhaW50cywKPiA+IGJ1dCBvdGhlciBwYXJ0aXRpb25zIChvciBp ZiB3ZSBkb24ndCB1c2UgdGhlIE5BTkQgdG8gYm9vdD8pIHNob3VsZAo+ID4gcHJvYmFibHkgYmUg dXNhYmxlIHdpdGggb3RoZXIgRUNDIHNjaGVtZXMuICAKPiAKPiBJbiB0aGlzIGNvbnRyb2xsZXIs IHRoZSBFQ0Mgc3RlcCBzaXplIGlzIGZpeGVkIGFuZCBpdCBjYW4gb25seSBjaGFuZ2UKPiBFQ0Mg c3RyZW5ndGguCgpUaGF0J3MgZmluZS4KCj4gVGhlIGNhbGN1bGF0ZWQgRUNDIGNvcnJlY3Rpb24g Y2FwYWJpbGl0eSBpcyB0aGUgbWF4Cj4gcG9zc2libGUgb25lIHN1cHBvcnRlZCBieSB0aGUgY29u dHJvbGxlci4KPiBJIHN0aWxsIHdhbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgdG8gbWF0Y2ggdGhl IGJvb3QgcGFydGl0aW9uCj4gcmVxdWlyZW1lbnQsCgpUaGF0IGlzIG9rYXksIGJ1dCB0aGF0IGRv ZXMgbm90IG1lYW4geW91IGNhbiBvbmx5IHN1cHBvcnQgdGhpcyBvbmUuCgo+IGJlY2F1c2Ugd2Ug Y2FuJ3QganVzdCB0ZWxsIGVuZC11c2VycyB0byBjdXN0b21pemUKPiB0aGVpciBkdHMgYnkgdGFr aW5nIGFwYXJ0IHRoZWlyIGRldmljZSBhbmQgZmlndXJlIG91dCB3aGljaCBmbGFzaAo+IGlzIHVz ZWQuCgpUaGV5IGRvbid0IGhhdmUgdG8gZG8gc28uIEluIHRoZW9yeSB0aGV5IHNob3VsZCBub3Qg cmVxdWVzdCBhbnl0aGluZywKdGhlIGNvcmUgd291bGQgdGFrZSBjYXJlIG9mIGFsbCBvZiB0aGF0 LiBCdXQgdGhleSBjYW4gcmVxdWVzdCBzcGVjaWZpYwp2YWx1ZXMgYnkgdXNpbmcgdGhlIERUIGFu ZCB5b3UgbXVzdCBmb2xsb3cgdGhlbSBpbiB0aGUgZHJpdmVyLgoKT24gaGlzIHNpZGUgdGhlIGNv cmUgaXMgcmVzcG9uc2libGUgb2YgdGVsbGluZyB5b3Ugd2hpY2ggc3RyZW5ndGgKc2hvdWxkIGJl IHVzZWQgb3RoZXJ3aXNlIGFuZCB0aGUgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIHVzZSBpdC4KCj4g SSBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmc6CgpZb3Ugc2hvdWxkIHRha2UgdGhlIHVzZXIg cmVxdWlyZW1lbnRzIGZpcnN0LiBJZiB0aGVyZSBhcmUgbm8KdXNlciBpbnB1dHMsIHlvdSBzaG91 bGQgaW4gdGhlb3J5IGxvb2sgYXQgdGhlIGRldmljZSdzIHJlcXVpcmVtZW50cy4KCj4gMS4gc2Vs ZWN0IHRoZSBtaW5pbXVtIGNhcGFiaWxpdHkgZXhjZWVkaW5nIGVjYy51c2VyX2NvbmYKPiAyLiBJ ZiB0aGF0IGRvZXNuJ3QgZXhpc3QsIHVzZSB0aGUgY2FsY3VsYXRlZCBvbmUgYW5kIHdhcm4KPiAg ICBpZiBpdCBkb2Vzbid0IG1lZXQgZWNjLnJlcXVpcmVtZW50cwo+IElzIHRoaXMgT0s/Cj4gCj4g PiAgCj4gPiA+ICsgICAgIGNvbmYtPnN0ZXBfc2l6ZSA9IHNuZi0+Y2Fwcy0+c2VjdG9yX3NpemU7 Cj4gPiA+ICsgICAgIGNvbmYtPnN0cmVuZ3RoID0gc25mLT5lY2NfY2ZnLnN0cmVuZ3RoOwo+ID4g PiArCj4gPiA+ICsgICAgIHJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aW50IG10a19zbmFuZF9lY2NfcHJlcGFyZV9pb19yZXEoc3RydWN0IG5hbmRfZGV2aWNlICpuYW5k LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuYW5k X3BhZ2VfaW9fcmVxICpyZXEpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtfc25hbmQg KnNuZiA9IG5hbmRfdG9fbXRrX3NuYW5kKG5hbmQpOwo+ID4gPiArICAgICBpbnQgcmV0Owo+ID4g PiArCj4gPiA+ICsgICAgIHJldCA9IG10a19zbmFuZF9zZXR1cF9wYWdlZm10KHNuZiwgbmFuZC0+ bWVtb3JnLnBhZ2VzaXplLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW5kLT5tZW1vcmcub29ic2l6ZSk7Cj4gPiA+ICsgICAgIGlmIChyZXQpCj4gPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gKyAgICAgc25mLT5hdXRvZm10ID0gdHJ1ZTsKPiA+ ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgbXRr X3NuYW5kX2VjY19maW5pc2hfaW9fcmVxKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCwKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuYW5kX3BhZ2VfaW9f cmVxICpyZXEpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtfc25hbmQgKnNuZiA9IG5h bmRfdG9fbXRrX3NuYW5kKG5hbmQpOwo+ID4gPiArICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9 IG5hbmRkZXZfdG9fbXRkKG5hbmQpOwo+ID4gPiArCj4gPiA+ICsgICAgIHNuZi0+YXV0b2ZtdCA9 IGZhbHNlOwo+ID4gPiArICAgICBpZiAoKHJlcS0+bW9kZSA9PSBNVERfT1BTX1JBVykgfHwgKHJl cS0+dHlwZSAhPSBOQU5EX1BBR0VfUkVBRCkpCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDA7 Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKHNuZi0+ZWNjX3N0YXRzLmZhaWxlZCkKPiA+ID4gKyAg ICAgICAgICAgICBtdGQtPmVjY19zdGF0cy5mYWlsZWQgKz0gc25mLT5lY2Nfc3RhdHMuZmFpbGVk Owo+ID4gPiArICAgICBtdGQtPmVjY19zdGF0cy5jb3JyZWN0ZWQgKz0gc25mLT5lY2Nfc3RhdHMu Y29ycmVjdGVkOwo+ID4gPiArICAgICByZXR1cm4gc25mLT5lY2Nfc3RhdHMuZmFpbGVkID8gLUVC QURNU0cgOiBzbmYtPmVjY19zdGF0cy5iaXRmbGlwczsgIAo+ID4KPiA+IERpZCB5b3UgdmVyaWZ5 IHRoYXQgbmFuZGJpdGVycnMgLWkgc3VjY2VlZHM/ICAKPiAKPiBJIGRpZCBhIGluc21vZCBtdGRf bmFuZGJpdGVycnMua28gZGV2PXggYW5kIHRoZSByZXBvcnRlZCBiaXRmbGlwcyBpbgo+IGtlcm5l bCBsb2cgaXMgY29ycmVjdC4KPiAKPiBJcyB0aGVyZSBhIHVzZXJzcGFjZSB0b29sIGZvciB0aGlz PyBJJ2QgbGlrZSB0byB1c2UgdGhhdCBpbnN0ZWFkIG9mIGEKPiBrZXJuZWwgbW9kdWxlIGluIHRo ZSBmdXR1cmUuCgpZZXMsIHlvdSBjYW4gZ2l2ZSB0aGUgbXRkLXV0aWxzIHRlc3Qgc3VpdGUgYSB0 cnkuIEFsbW9zdCBhbGwgdGhlIHRvb2xzCmhhdmUgYmVlbiBtaWdyYXRlZCB0aGVyZS4gVGhlcmUg ZXZlbiBpcyBhIEJ1aWxkcm9vdCBwYWNrYWdlLgoKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3Rh dGljIHN0cnVjdCBuYW5kX2VjY19lbmdpbmVfb3BzIG10a19zbmZpX2VjY19lbmdpbmVfb3BzID0g ewo+ID4gPiArICAgICAuaW5pdF9jdHggPSBtdGtfc25hbmRfZWNjX2luaXRfY3R4LAo+ID4gPiAr ICAgICAucHJlcGFyZV9pb19yZXEgPSBtdGtfc25hbmRfZWNjX3ByZXBhcmVfaW9fcmVxLAo+ID4g PiArICAgICAuZmluaXNoX2lvX3JlcSA9IG10a19zbmFuZF9lY2NfZmluaXNoX2lvX3JlcSwgIAo+ ID4KPiA+IEkgYmVsaWV2ZSB5b3UgbmVlZCB0byB0YWtlIGNhcmUgb2YgdGhlIGJvdW5jZSBidWZm ZXIgaW4gdGhlIGV4aXQgcGF0aD8gIAo+IAo+IE5vLiBUaGUgYnVmZmVyIHNob3VsZCBiZSBsZWZ0 IHRoZXJlIGZvciBub24tZWNjIHNwaS1tZW0gb3BlcmF0aW9ucy4KCkFGQUlSIHlvdSBpbml0aWFs aXplIHRoZSBidWZmZXIgaW4gdGhlIEVDQyBwYXJ0LCBzbyBpZiBpdCBtdXN0IGJlIHVzZWQKd2l0 aG91dCBFQ0MgeW91IHNob3VsZCBwcm9iYWJseSBhbGxvY2F0ZSBpdCBmb3IgdGhlIFNQSSBjb250 cm9sbGVyLiBJbgphbnkgd2F5LCB5b3UgbmVlZCB0byBmcmVlIHRoYXQgbWVtb3J5IGF0IHNvbWUg cG9pbnQgKHdoZW4gcmVtb3ZpbmcgdGhlCmRyaXZlcikuCgo+IAo+ID4gIAo+ID4gPiArfTsKPiA+ ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgbXRrX3NuYW5kX3JlYWRfZmRtKHN0cnVjdCBtdGtfc25h bmQgKnNuZiwgdWludDhfdCAqYnVmKQo+ID4gPiArewo+ID4gPiArICAgICB1aW50MzJfdCB2YWxs LCB2YWxtOwo+ID4gPiArICAgICB1aW50OF90ICpvb2JwdHIgPSBidWY7Cj4gPiA+ICsgICAgIGlu dCBpLCBqOwo+ID4gPiArCj4gPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBzbmYtPm5maV9jZmcu bnNlY3RvcnM7IGkrKykgewo+ID4gPiArICAgICAgICAgICAgIHZhbGwgPSBuZmlfcmVhZDMyKHNu ZiwgTkZJX0ZETUwoaSkpOwo+ID4gPiArICAgICAgICAgICAgIHZhbG0gPSBuZmlfcmVhZDMyKHNu ZiwgTkZJX0ZETU0oaSkpOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgZm9yIChqID0gMDsg aiA8IHNuZi0+Y2Fwcy0+ZmRtX3NpemU7IGorKykKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IG9vYnB0cltqXSA9IChqID49IDQgPyB2YWxtIDogdmFsbCkgPj4gKChqICUgNCkgKiA4KTsKPiA+ ID4gKwo+ID4gPiArICAgICAgICAgICAgIG9vYnB0ciArPSBzbmYtPmNhcHMtPmZkbV9zaXplOwo+ ID4gPiArICAgICB9Cj4gPiA+ICt9ICAKPiA+Cj4gPiBUaGFua3MsCj4gPiBNaXF1w6hsICAKPiAK PiAKPiAKPiAtLQo+IFJlZ2FyZHMsCj4gQ2h1YW5ob25nIEd1bwoKClRoYW5rcywKTWlxdcOobAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=