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 F16A4C433F5 for ; Mon, 4 Apr 2022 08:00:11 +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=Oe+KqiqpLYU98TN/KtAxNBrmX75nnSvndVvtkLPbo4s=; b=Ly5c3zL5jQ4zd1 EWnPVPKr1MEwTwyk1YoxASfTjzvyEo3xWsdL7qHxPQF2sf2+4CzyJ35u2Z9Y9eEGeQ0JJ07qJVHu5 cz9MHDo8oBjm0uNzA2DmKrBo18P+aOKs3PY0fj4aR25HFnLFJRnis2152xE2P4sSB6mEyqRXikyPG gk8wd61JvZGNwsz1t2nZQLenzjrFFTsmUJ8zGoLRzzlScjIsKffR5TubxD9HKahLccKlZaW5y/3Xl vOgUqDewm+xDUHN8NeA34wBJGpKon13gja04jd1eUaJwA9VdmY+Dj/exKWAYcgnSFBe2TKi3RsB5M ahBmCjWA+jXbl24i3ZMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbHd5-00Diy5-0a; Mon, 04 Apr 2022 08:00:03 +0000 Received: from relay3-d.mail.gandi.net ([217.70.183.195]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbHcs-00DitG-LL; Mon, 04 Apr 2022 07:59:53 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id E2BB160009; Mon, 4 Apr 2022 07:59:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1649059183; 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=mZ1ww5HXNp+ThWvmQooIAfZbNKI84/02Z72n3gCX/+A=; b=Dj/UQRmOZnhQvTHHwuyEMqDAvvBLiIj26mq6i56UPsGBRJ10uUfBrWCuiAU3TzBjA7Otwi d0ZG9aqqmjObGBHttscULCNuRdYc8DXjJ3GUWWOlVwZtTGbCQtZ0o2xZppNgvjbZMzLuzx wpuVhL9ZSJ+m9oAPlUqAelMoyy3fs6yqtkgha95k6cguE9/sNh08/P3gljnXCmavvq9q3N sHe6bRfqAkCA+03BrhLfqOxCBGycO+89Pq0ve5bU1AjMc7b1SNvx0dTQu23KF+f3hAPxM2 l0LaYxeUURkPh+xrbJB0tKEDeW0kfsbmRQ6odL8IEju2PejNQae8xM7+723XTA== Date: Mon, 4 Apr 2022 09:59:37 +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 , devicetree@vger.kernel.org (open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS), linux-arm-kernel@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-mediatek@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-kernel@vger.kernel.org (open list), linux-mtd@lists.infradead.org (open list:NAND FLASH SUBSYSTEM) Subject: Re: [PATCH v2 2/5] spi: add driver for MTK SPI NAND Flash Interface Message-ID: <20220404095937.20089db7@xps13> In-Reply-To: <20220404040153.1509966-3-gch981213@gmail.com> References: <20220404040153.1509966-1-gch981213@gmail.com> <20220404040153.1509966-3-gch981213@gmail.com> 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_005951_032857_195D6B9F X-CRM114-Status: GOOD ( 28.21 ) 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 SGkgQ2h1YW5ob25nLAoKZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBNb24sICA0IEFwciAy MDIyIDEyOjAxOjUwICswODAwOgoKPiBUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9y IHRoZSBTUEktTkFORCBtb2RlIG9mIE1USyBOQU5EIEZsYXNoCj4gSW50ZXJmYWNlIGFzIGEgU1BJ LU1FTSBjb250cm9sbGVyIHdpdGggcGlwbGluZWQgRUNDIGNhcGFiaWxpdHkuCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2h1YW5ob25nIEd1byA8Z2NoOTgxMjEzQGdtYWlsLmNvbT4KPiAtLS0KPiAKPiBD aGFuZ2Ugc2luY2UgdjE6Cj4gICBmaXggQ0kgd2FybmluZ3MKPiAKPiAgZHJpdmVycy9zcGkvS2Nv bmZpZyAgICAgICAgfCAgIDEwICsKPiAgZHJpdmVycy9zcGkvTWFrZWZpbGUgICAgICAgfCAgICAx ICsKPiAgZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMgfCAxMzUxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDEzNjIgaW5zZXJ0aW9ucygr KQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvS2NvbmZpZyBiL2RyaXZlcnMvc3BpL0tjb25maWcKPiBp bmRleCBkMjgxNWViMzYxYzAuLjczOWVlYzdkMGMxNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Nw aS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9zcGkvS2NvbmZpZwo+IEBAIC01OTAsNiArNTkwLDE2 IEBAIGNvbmZpZyBTUElfTVRLX05PUgo+ICAJICBTUEkgaW50ZXJmYWNlIGFzIHdlbGwgYXMgc2V2 ZXJhbCBTUEkgTk9SIHNwZWNpZmljIGluc3RydWN0aW9ucwo+ICAJICB2aWEgU1BJIE1FTSBpbnRl cmZhY2UuCj4gIAo+ICtjb25maWcgU1BJX01US19TTkZJCj4gKwl0cmlzdGF0ZSAiTWVkaWFUZWsg U1BJIE5BTkQgRmxhc2ggSW50ZXJmYWNlIgo+ICsJZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8 IENPTVBJTEVfVEVTVAo+ICsJZGVwZW5kcyBvbiBNVERfTkFORF9FQ0NfTUVESUFURUsKPiArCWhl bHAKPiArCSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIFNQSS1OQU5EIG1vZGUgb24gdGhlIE1l ZGlhVGVrIE5BTkQKPiArCSAgRmxhc2ggSW50ZXJmYWNlIGZvdW5kIG9uIE1lZGlhVGVrIEFSTSBT b0NzLiBUaGlzIGNvbnRyb2xsZXIKPiArCSAgaXMgaW1wbGVtZW50ZWQgYXMgYSBTUEktTUVNIGNv bnRyb2xsZXIgd2l0aCBwaXBlbGluZWQgRUNDCj4gKwkgIGNhcGNhYmlsaXR5Lgo+ICsKPiAgY29u ZmlnIFNQSV9OUENNX0ZJVQo+ICAJdHJpc3RhdGUgIk51dm90b24gTlBDTSBGTEFTSCBJbnRlcmZh Y2UgVW5pdCIKPiAgCWRlcGVuZHMgb24gQVJDSF9OUENNIHx8IENPTVBJTEVfVEVTVAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3NwaS9NYWtlZmlsZSBiL2RyaXZlcnMvc3BpL01ha2VmaWxlCj4gaW5k ZXggM2FhMjhlZDNmNzYxLi41MTU0MWZmMTdlNjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zcGkv TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+IEBAIC03Niw2ICs3Niw3IEBA IG9iai0kKENPTkZJR19TUElfTVBDNTJ4eCkJCSs9IHNwaS1tcGM1Mnh4Lm8KPiAgb2JqLSQoQ09O RklHX1NQSV9NVDY1WFgpICAgICAgICAgICAgICAgICs9IHNwaS1tdDY1eHgubwo+ICBvYmotJChD T05GSUdfU1BJX01UNzYyMSkJCSs9IHNwaS1tdDc2MjEubwo+ICBvYmotJChDT05GSUdfU1BJX01U S19OT1IpCQkrPSBzcGktbXRrLW5vci5vCj4gK29iai0kKENPTkZJR19TUElfTVRLX1NORkkpCQkr PSBzcGktbXRrLXNuZmkubwo+ICBvYmotJChDT05GSUdfU1BJX01YSUMpCQkJKz0gc3BpLW14aWMu bwo+ICBvYmotJChDT05GSUdfU1BJX01YUykJCQkrPSBzcGktbXhzLm8KPiAgb2JqLSQoQ09ORklH X1NQSV9OUENNX0ZJVSkJCSs9IHNwaS1ucGNtLWZpdS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3BpL3NwaS1tdGstc25maS5jIGIvZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZThmOGYzMGJkN2VlCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jCgpbLi4uXQoKPiArc3Rh dGljIHN0cnVjdCBtdGtfc25hbmQgKm5hbmRfdG9fbXRrX3NuYW5kKHN0cnVjdCBuYW5kX2Rldmlj ZSAqbmFuZCkKPiArewo+ICsJc3RydWN0IG5hbmRfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNj LmVuZ2luZTsKPiArCj4gKwlyZXR1cm4gY29udGFpbmVyX29mKGVuZywgc3RydWN0IG10a19zbmFu ZCwgZWNjX2VuZyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IHNuYW5kX3ByZXBhcmVf Ym91bmNlYnVmKHN0cnVjdCBtdGtfc25hbmQgKnNuZiwgc2l6ZV90IHNpemUpCj4gK3sKPiArCWlm IChzbmYtPmJ1Zl9sZW4gPj0gc2l6ZSkKPiArCQlyZXR1cm4gMDsKPiArCWlmIChzbmYtPmJ1ZikK PiArCQlkbWFtX2ZyZWVfY29oZXJlbnQoc25mLT5kZXYsIHNuZi0+YnVmX2xlbiwgc25mLT5idWYs Cj4gKwkJCQkgICBzbmYtPmJ1Zl9kbWEpOwoKQ2FuJ3Qgd2UgdXNlIGEgc2luZ2xlIGNvaGVyZW50 IGJ1ZmZlciBvbmNlIGZvciBhbGw/Cgo+ICsJc25mLT5idWYgPQo+ICsJCWRtYW1fYWxsb2NfY29o ZXJlbnQoc25mLT5kZXYsIHNpemUsICZzbmYtPmJ1Zl9kbWEsIEdGUF9LRVJORUwpOwo+ICsJaWYg KCFzbmYtPmJ1ZikKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCXNuZi0+YnVmX2xlbiA9IHNpemU7 Cj4gKwltZW1zZXQoc25mLT5idWYsIDB4ZmYsIHNuZi0+YnVmX2xlbik7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKClsuLi5dCgo+ICtzdGF0aWMgaW50IG10a19zbmFuZF9lY2NfaW5pdF9jdHgoc3Ry dWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX3NuYW5kICpzbmYgPSBu YW5kX3RvX210a19zbmFuZChuYW5kKTsKPiArCXN0cnVjdCBuYW5kX2VjY19wcm9wcyAqY29uZiA9 ICZuYW5kLT5lY2MuY3R4LmNvbmY7Cj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRkZXZf dG9fbXRkKG5hbmQpOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBtdGtfc25hbmRfc2V0dXBf cGFnZWZtdChzbmYsIG5hbmQtPm1lbW9yZy5wYWdlc2l6ZSwKPiArCQkJCSAgICAgIG5hbmQtPm1l bW9yZy5vb2JzaXplKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwltdGRf c2V0X29vYmxheW91dChtdGQsICZtdGtfc25hbmRfb29ibGF5b3V0KTsKPiArCj4gKwkvLyBUaGlz IGRyaXZlciBpZ25vcmVzIGFueSBFQ0MgY2FwYWJpbGl0eSBjb25maWd1cmVkIGJ5IHVzZXIgb3IK PiArCS8vIHJlcXVlc3RlZCBieSB0aGUgbmFuZCBjaGlwIGJlY2F1c2UgdGhlIEJvb3RST00gYW5k IE1USyBib290bG9hZGVyCj4gKwkvLyBleHBlY3RzIHRoZSBwYWdlIGZvcm1hdCB0byBiZSB0aGUg ZXhhY3Qgb25lIGFzIGNhbGN1bGF0ZWQgaW4KPiArCS8vIHNldHVwX3BhZ2VmbXQuCgpJIGRvbid0 IGxpa2UgdGhpcyA6KQoKSSB1bmRlcnN0YW5kIHRoYXQgdGhlIGJvb3QgcGFydGl0aW9uIG1pZ2h0 IGhhdmUgc3BlY2lmaWMgY29uc3RyYWludHMsCmJ1dCBvdGhlciBwYXJ0aXRpb25zIChvciBpZiB3 ZSBkb24ndCB1c2UgdGhlIE5BTkQgdG8gYm9vdD8pIHNob3VsZApwcm9iYWJseSBiZSB1c2FibGUg d2l0aCBvdGhlciBFQ0Mgc2NoZW1lcy4KCj4gKwljb25mLT5zdGVwX3NpemUgPSBzbmYtPmNhcHMt PnNlY3Rvcl9zaXplOwo+ICsJY29uZi0+c3RyZW5ndGggPSBzbmYtPmVjY19jZmcuc3RyZW5ndGg7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX3NuYW5kX2VjY19w cmVwYXJlX2lvX3JlcShzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4gKwkJCQkJc3RydWN0IG5h bmRfcGFnZV9pb19yZXEgKnJlcSkKPiArewo+ICsJc3RydWN0IG10a19zbmFuZCAqc25mID0gbmFu ZF90b19tdGtfc25hbmQobmFuZCk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IG10a19zbmFu ZF9zZXR1cF9wYWdlZm10KHNuZiwgbmFuZC0+bWVtb3JnLnBhZ2VzaXplLAo+ICsJCQkJICAgICAg bmFuZC0+bWVtb3JnLm9vYnNpemUpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsJ c25mLT5hdXRvZm10ID0gdHJ1ZTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10a19zbmFuZF9lY2NfZmluaXNoX2lvX3JlcShzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4g KwkJCQkgICAgICAgc3RydWN0IG5hbmRfcGFnZV9pb19yZXEgKnJlcSkKPiArewo+ICsJc3RydWN0 IG10a19zbmFuZCAqc25mID0gbmFuZF90b19tdGtfc25hbmQobmFuZCk7Cj4gKwlzdHJ1Y3QgbXRk X2luZm8gKm10ZCA9IG5hbmRkZXZfdG9fbXRkKG5hbmQpOwo+ICsKPiArCXNuZi0+YXV0b2ZtdCA9 IGZhbHNlOwo+ICsJaWYgKChyZXEtPm1vZGUgPT0gTVREX09QU19SQVcpIHx8IChyZXEtPnR5cGUg IT0gTkFORF9QQUdFX1JFQUQpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChzbmYtPmVjY19z dGF0cy5mYWlsZWQpCj4gKwkJbXRkLT5lY2Nfc3RhdHMuZmFpbGVkICs9IHNuZi0+ZWNjX3N0YXRz LmZhaWxlZDsKPiArCW10ZC0+ZWNjX3N0YXRzLmNvcnJlY3RlZCArPSBzbmYtPmVjY19zdGF0cy5j b3JyZWN0ZWQ7Cj4gKwlyZXR1cm4gc25mLT5lY2Nfc3RhdHMuZmFpbGVkID8gLUVCQURNU0cgOiBz bmYtPmVjY19zdGF0cy5iaXRmbGlwczsKCkRpZCB5b3UgdmVyaWZ5IHRoYXQgbmFuZGJpdGVycnMg LWkgc3VjY2VlZHM/Cgo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG5hbmRfZWNjX2VuZ2luZV9v cHMgbXRrX3NuZmlfZWNjX2VuZ2luZV9vcHMgPSB7Cj4gKwkuaW5pdF9jdHggPSBtdGtfc25hbmRf ZWNjX2luaXRfY3R4LAo+ICsJLnByZXBhcmVfaW9fcmVxID0gbXRrX3NuYW5kX2VjY19wcmVwYXJl X2lvX3JlcSwKPiArCS5maW5pc2hfaW9fcmVxID0gbXRrX3NuYW5kX2VjY19maW5pc2hfaW9fcmVx LAoKSSBiZWxpZXZlIHlvdSBuZWVkIHRvIHRha2UgY2FyZSBvZiB0aGUgYm91bmNlIGJ1ZmZlciBp biB0aGUgZXhpdCBwYXRoPwoKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIG10a19zbmFuZF9yZWFk X2ZkbShzdHJ1Y3QgbXRrX3NuYW5kICpzbmYsIHVpbnQ4X3QgKmJ1ZikKPiArewo+ICsJdWludDMy X3QgdmFsbCwgdmFsbTsKPiArCXVpbnQ4X3QgKm9vYnB0ciA9IGJ1ZjsKPiArCWludCBpLCBqOwo+ ICsKPiArCWZvciAoaSA9IDA7IGkgPCBzbmYtPm5maV9jZmcubnNlY3RvcnM7IGkrKykgewo+ICsJ CXZhbGwgPSBuZmlfcmVhZDMyKHNuZiwgTkZJX0ZETUwoaSkpOwo+ICsJCXZhbG0gPSBuZmlfcmVh ZDMyKHNuZiwgTkZJX0ZETU0oaSkpOwo+ICsKPiArCQlmb3IgKGogPSAwOyBqIDwgc25mLT5jYXBz LT5mZG1fc2l6ZTsgaisrKQo+ICsJCQlvb2JwdHJbal0gPSAoaiA+PSA0ID8gdmFsbSA6IHZhbGwp ID4+ICgoaiAlIDQpICogOCk7Cj4gKwo+ICsJCW9vYnB0ciArPSBzbmYtPmNhcHMtPmZkbV9zaXpl Owo+ICsJfQo+ICt9CgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkxpbnV4LW1lZGlhdGVrIG1haWxpbmcgbGlzdApMaW51eC1t ZWRpYXRla0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtbWVkaWF0ZWsK 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 63E64C433F5 for ; Mon, 4 Apr 2022 08:00:55 +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=DQw+lmngtEsFQAFd8pdIGoHbuFolLcDZWbvKI0D7zqo=; b=A6WPD5OaE3+GJr m3fxLmyIZd6ScOl5jNMN2Z9pNiEgtEQFIy5Fm6v8Q2xSC32C4zX1nBVKY6UOG9hblYMLdqRIfkIKo YjP68oIvssE8mifZO/oxVAzADX+ayf7nDbqVYgWyYqWlE0azKuY4NrbjgZCGesrLXlRaBLTcuVprw 0S2mRlkMzeHX9CqyjtqbVpM0JUUsYLwE2moRiai8tgmM79aWt1Au2EOuXF3OLmLYcpOH1qdv4mEmL TLW8z7bEAxqQT1pc5cyMSVVsNe16WhcchsExSqMNUniB1Ki+ItALsh+sxEIxyjbM4eT54zPqenTUr b9m4oaKbrUvPDPeElteA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbHd5-00DiyH-SC; Mon, 04 Apr 2022 08:00:03 +0000 Received: from relay3-d.mail.gandi.net ([217.70.183.195]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbHcs-00DitG-LL; Mon, 04 Apr 2022 07:59:53 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id E2BB160009; Mon, 4 Apr 2022 07:59:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1649059183; 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=mZ1ww5HXNp+ThWvmQooIAfZbNKI84/02Z72n3gCX/+A=; b=Dj/UQRmOZnhQvTHHwuyEMqDAvvBLiIj26mq6i56UPsGBRJ10uUfBrWCuiAU3TzBjA7Otwi d0ZG9aqqmjObGBHttscULCNuRdYc8DXjJ3GUWWOlVwZtTGbCQtZ0o2xZppNgvjbZMzLuzx wpuVhL9ZSJ+m9oAPlUqAelMoyy3fs6yqtkgha95k6cguE9/sNh08/P3gljnXCmavvq9q3N sHe6bRfqAkCA+03BrhLfqOxCBGycO+89Pq0ve5bU1AjMc7b1SNvx0dTQu23KF+f3hAPxM2 l0LaYxeUURkPh+xrbJB0tKEDeW0kfsbmRQ6odL8IEju2PejNQae8xM7+723XTA== Date: Mon, 4 Apr 2022 09:59:37 +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 , devicetree@vger.kernel.org (open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS), linux-arm-kernel@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-mediatek@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-kernel@vger.kernel.org (open list), linux-mtd@lists.infradead.org (open list:NAND FLASH SUBSYSTEM) Subject: Re: [PATCH v2 2/5] spi: add driver for MTK SPI NAND Flash Interface Message-ID: <20220404095937.20089db7@xps13> In-Reply-To: <20220404040153.1509966-3-gch981213@gmail.com> References: <20220404040153.1509966-1-gch981213@gmail.com> <20220404040153.1509966-3-gch981213@gmail.com> 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_005951_032857_195D6B9F X-CRM114-Status: GOOD ( 28.21 ) 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 SGkgQ2h1YW5ob25nLAoKZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBNb24sICA0IEFwciAy MDIyIDEyOjAxOjUwICswODAwOgoKPiBUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9y IHRoZSBTUEktTkFORCBtb2RlIG9mIE1USyBOQU5EIEZsYXNoCj4gSW50ZXJmYWNlIGFzIGEgU1BJ LU1FTSBjb250cm9sbGVyIHdpdGggcGlwbGluZWQgRUNDIGNhcGFiaWxpdHkuCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2h1YW5ob25nIEd1byA8Z2NoOTgxMjEzQGdtYWlsLmNvbT4KPiAtLS0KPiAKPiBD aGFuZ2Ugc2luY2UgdjE6Cj4gICBmaXggQ0kgd2FybmluZ3MKPiAKPiAgZHJpdmVycy9zcGkvS2Nv bmZpZyAgICAgICAgfCAgIDEwICsKPiAgZHJpdmVycy9zcGkvTWFrZWZpbGUgICAgICAgfCAgICAx ICsKPiAgZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMgfCAxMzUxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDEzNjIgaW5zZXJ0aW9ucygr KQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvS2NvbmZpZyBiL2RyaXZlcnMvc3BpL0tjb25maWcKPiBp bmRleCBkMjgxNWViMzYxYzAuLjczOWVlYzdkMGMxNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Nw aS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9zcGkvS2NvbmZpZwo+IEBAIC01OTAsNiArNTkwLDE2 IEBAIGNvbmZpZyBTUElfTVRLX05PUgo+ICAJICBTUEkgaW50ZXJmYWNlIGFzIHdlbGwgYXMgc2V2 ZXJhbCBTUEkgTk9SIHNwZWNpZmljIGluc3RydWN0aW9ucwo+ICAJICB2aWEgU1BJIE1FTSBpbnRl cmZhY2UuCj4gIAo+ICtjb25maWcgU1BJX01US19TTkZJCj4gKwl0cmlzdGF0ZSAiTWVkaWFUZWsg U1BJIE5BTkQgRmxhc2ggSW50ZXJmYWNlIgo+ICsJZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8 IENPTVBJTEVfVEVTVAo+ICsJZGVwZW5kcyBvbiBNVERfTkFORF9FQ0NfTUVESUFURUsKPiArCWhl bHAKPiArCSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIFNQSS1OQU5EIG1vZGUgb24gdGhlIE1l ZGlhVGVrIE5BTkQKPiArCSAgRmxhc2ggSW50ZXJmYWNlIGZvdW5kIG9uIE1lZGlhVGVrIEFSTSBT b0NzLiBUaGlzIGNvbnRyb2xsZXIKPiArCSAgaXMgaW1wbGVtZW50ZWQgYXMgYSBTUEktTUVNIGNv bnRyb2xsZXIgd2l0aCBwaXBlbGluZWQgRUNDCj4gKwkgIGNhcGNhYmlsaXR5Lgo+ICsKPiAgY29u ZmlnIFNQSV9OUENNX0ZJVQo+ICAJdHJpc3RhdGUgIk51dm90b24gTlBDTSBGTEFTSCBJbnRlcmZh Y2UgVW5pdCIKPiAgCWRlcGVuZHMgb24gQVJDSF9OUENNIHx8IENPTVBJTEVfVEVTVAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3NwaS9NYWtlZmlsZSBiL2RyaXZlcnMvc3BpL01ha2VmaWxlCj4gaW5k ZXggM2FhMjhlZDNmNzYxLi41MTU0MWZmMTdlNjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zcGkv TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+IEBAIC03Niw2ICs3Niw3IEBA IG9iai0kKENPTkZJR19TUElfTVBDNTJ4eCkJCSs9IHNwaS1tcGM1Mnh4Lm8KPiAgb2JqLSQoQ09O RklHX1NQSV9NVDY1WFgpICAgICAgICAgICAgICAgICs9IHNwaS1tdDY1eHgubwo+ICBvYmotJChD T05GSUdfU1BJX01UNzYyMSkJCSs9IHNwaS1tdDc2MjEubwo+ICBvYmotJChDT05GSUdfU1BJX01U S19OT1IpCQkrPSBzcGktbXRrLW5vci5vCj4gK29iai0kKENPTkZJR19TUElfTVRLX1NORkkpCQkr PSBzcGktbXRrLXNuZmkubwo+ICBvYmotJChDT05GSUdfU1BJX01YSUMpCQkJKz0gc3BpLW14aWMu bwo+ICBvYmotJChDT05GSUdfU1BJX01YUykJCQkrPSBzcGktbXhzLm8KPiAgb2JqLSQoQ09ORklH X1NQSV9OUENNX0ZJVSkJCSs9IHNwaS1ucGNtLWZpdS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3BpL3NwaS1tdGstc25maS5jIGIvZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZThmOGYzMGJkN2VlCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jCgpbLi4uXQoKPiArc3Rh dGljIHN0cnVjdCBtdGtfc25hbmQgKm5hbmRfdG9fbXRrX3NuYW5kKHN0cnVjdCBuYW5kX2Rldmlj ZSAqbmFuZCkKPiArewo+ICsJc3RydWN0IG5hbmRfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNj LmVuZ2luZTsKPiArCj4gKwlyZXR1cm4gY29udGFpbmVyX29mKGVuZywgc3RydWN0IG10a19zbmFu ZCwgZWNjX2VuZyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IHNuYW5kX3ByZXBhcmVf Ym91bmNlYnVmKHN0cnVjdCBtdGtfc25hbmQgKnNuZiwgc2l6ZV90IHNpemUpCj4gK3sKPiArCWlm IChzbmYtPmJ1Zl9sZW4gPj0gc2l6ZSkKPiArCQlyZXR1cm4gMDsKPiArCWlmIChzbmYtPmJ1ZikK PiArCQlkbWFtX2ZyZWVfY29oZXJlbnQoc25mLT5kZXYsIHNuZi0+YnVmX2xlbiwgc25mLT5idWYs Cj4gKwkJCQkgICBzbmYtPmJ1Zl9kbWEpOwoKQ2FuJ3Qgd2UgdXNlIGEgc2luZ2xlIGNvaGVyZW50 IGJ1ZmZlciBvbmNlIGZvciBhbGw/Cgo+ICsJc25mLT5idWYgPQo+ICsJCWRtYW1fYWxsb2NfY29o ZXJlbnQoc25mLT5kZXYsIHNpemUsICZzbmYtPmJ1Zl9kbWEsIEdGUF9LRVJORUwpOwo+ICsJaWYg KCFzbmYtPmJ1ZikKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCXNuZi0+YnVmX2xlbiA9IHNpemU7 Cj4gKwltZW1zZXQoc25mLT5idWYsIDB4ZmYsIHNuZi0+YnVmX2xlbik7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKClsuLi5dCgo+ICtzdGF0aWMgaW50IG10a19zbmFuZF9lY2NfaW5pdF9jdHgoc3Ry dWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX3NuYW5kICpzbmYgPSBu YW5kX3RvX210a19zbmFuZChuYW5kKTsKPiArCXN0cnVjdCBuYW5kX2VjY19wcm9wcyAqY29uZiA9 ICZuYW5kLT5lY2MuY3R4LmNvbmY7Cj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRkZXZf dG9fbXRkKG5hbmQpOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBtdGtfc25hbmRfc2V0dXBf cGFnZWZtdChzbmYsIG5hbmQtPm1lbW9yZy5wYWdlc2l6ZSwKPiArCQkJCSAgICAgIG5hbmQtPm1l bW9yZy5vb2JzaXplKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwltdGRf c2V0X29vYmxheW91dChtdGQsICZtdGtfc25hbmRfb29ibGF5b3V0KTsKPiArCj4gKwkvLyBUaGlz IGRyaXZlciBpZ25vcmVzIGFueSBFQ0MgY2FwYWJpbGl0eSBjb25maWd1cmVkIGJ5IHVzZXIgb3IK PiArCS8vIHJlcXVlc3RlZCBieSB0aGUgbmFuZCBjaGlwIGJlY2F1c2UgdGhlIEJvb3RST00gYW5k IE1USyBib290bG9hZGVyCj4gKwkvLyBleHBlY3RzIHRoZSBwYWdlIGZvcm1hdCB0byBiZSB0aGUg ZXhhY3Qgb25lIGFzIGNhbGN1bGF0ZWQgaW4KPiArCS8vIHNldHVwX3BhZ2VmbXQuCgpJIGRvbid0 IGxpa2UgdGhpcyA6KQoKSSB1bmRlcnN0YW5kIHRoYXQgdGhlIGJvb3QgcGFydGl0aW9uIG1pZ2h0 IGhhdmUgc3BlY2lmaWMgY29uc3RyYWludHMsCmJ1dCBvdGhlciBwYXJ0aXRpb25zIChvciBpZiB3 ZSBkb24ndCB1c2UgdGhlIE5BTkQgdG8gYm9vdD8pIHNob3VsZApwcm9iYWJseSBiZSB1c2FibGUg d2l0aCBvdGhlciBFQ0Mgc2NoZW1lcy4KCj4gKwljb25mLT5zdGVwX3NpemUgPSBzbmYtPmNhcHMt PnNlY3Rvcl9zaXplOwo+ICsJY29uZi0+c3RyZW5ndGggPSBzbmYtPmVjY19jZmcuc3RyZW5ndGg7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX3NuYW5kX2VjY19w cmVwYXJlX2lvX3JlcShzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4gKwkJCQkJc3RydWN0IG5h bmRfcGFnZV9pb19yZXEgKnJlcSkKPiArewo+ICsJc3RydWN0IG10a19zbmFuZCAqc25mID0gbmFu ZF90b19tdGtfc25hbmQobmFuZCk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IG10a19zbmFu ZF9zZXR1cF9wYWdlZm10KHNuZiwgbmFuZC0+bWVtb3JnLnBhZ2VzaXplLAo+ICsJCQkJICAgICAg bmFuZC0+bWVtb3JnLm9vYnNpemUpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsJ c25mLT5hdXRvZm10ID0gdHJ1ZTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10a19zbmFuZF9lY2NfZmluaXNoX2lvX3JlcShzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4g KwkJCQkgICAgICAgc3RydWN0IG5hbmRfcGFnZV9pb19yZXEgKnJlcSkKPiArewo+ICsJc3RydWN0 IG10a19zbmFuZCAqc25mID0gbmFuZF90b19tdGtfc25hbmQobmFuZCk7Cj4gKwlzdHJ1Y3QgbXRk X2luZm8gKm10ZCA9IG5hbmRkZXZfdG9fbXRkKG5hbmQpOwo+ICsKPiArCXNuZi0+YXV0b2ZtdCA9 IGZhbHNlOwo+ICsJaWYgKChyZXEtPm1vZGUgPT0gTVREX09QU19SQVcpIHx8IChyZXEtPnR5cGUg IT0gTkFORF9QQUdFX1JFQUQpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChzbmYtPmVjY19z dGF0cy5mYWlsZWQpCj4gKwkJbXRkLT5lY2Nfc3RhdHMuZmFpbGVkICs9IHNuZi0+ZWNjX3N0YXRz LmZhaWxlZDsKPiArCW10ZC0+ZWNjX3N0YXRzLmNvcnJlY3RlZCArPSBzbmYtPmVjY19zdGF0cy5j b3JyZWN0ZWQ7Cj4gKwlyZXR1cm4gc25mLT5lY2Nfc3RhdHMuZmFpbGVkID8gLUVCQURNU0cgOiBz bmYtPmVjY19zdGF0cy5iaXRmbGlwczsKCkRpZCB5b3UgdmVyaWZ5IHRoYXQgbmFuZGJpdGVycnMg LWkgc3VjY2VlZHM/Cgo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG5hbmRfZWNjX2VuZ2luZV9v cHMgbXRrX3NuZmlfZWNjX2VuZ2luZV9vcHMgPSB7Cj4gKwkuaW5pdF9jdHggPSBtdGtfc25hbmRf ZWNjX2luaXRfY3R4LAo+ICsJLnByZXBhcmVfaW9fcmVxID0gbXRrX3NuYW5kX2VjY19wcmVwYXJl X2lvX3JlcSwKPiArCS5maW5pc2hfaW9fcmVxID0gbXRrX3NuYW5kX2VjY19maW5pc2hfaW9fcmVx LAoKSSBiZWxpZXZlIHlvdSBuZWVkIHRvIHRha2UgY2FyZSBvZiB0aGUgYm91bmNlIGJ1ZmZlciBp biB0aGUgZXhpdCBwYXRoPwoKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIG10a19zbmFuZF9yZWFk X2ZkbShzdHJ1Y3QgbXRrX3NuYW5kICpzbmYsIHVpbnQ4X3QgKmJ1ZikKPiArewo+ICsJdWludDMy X3QgdmFsbCwgdmFsbTsKPiArCXVpbnQ4X3QgKm9vYnB0ciA9IGJ1ZjsKPiArCWludCBpLCBqOwo+ ICsKPiArCWZvciAoaSA9IDA7IGkgPCBzbmYtPm5maV9jZmcubnNlY3RvcnM7IGkrKykgewo+ICsJ CXZhbGwgPSBuZmlfcmVhZDMyKHNuZiwgTkZJX0ZETUwoaSkpOwo+ICsJCXZhbG0gPSBuZmlfcmVh ZDMyKHNuZiwgTkZJX0ZETU0oaSkpOwo+ICsKPiArCQlmb3IgKGogPSAwOyBqIDwgc25mLT5jYXBz LT5mZG1fc2l6ZTsgaisrKQo+ICsJCQlvb2JwdHJbal0gPSAoaiA+PSA0ID8gdmFsbSA6IHZhbGwp ID4+ICgoaiAlIDQpICogOCk7Cj4gKwo+ICsJCW9vYnB0ciArPSBzbmYtPmNhcHMtPmZkbV9zaXpl Owo+ICsJfQo+ICt9CgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5n IGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1t dGQvCg== 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 BEDB6C433F5 for ; Mon, 4 Apr 2022 07:59:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233822AbiDDIBr (ORCPT ); Mon, 4 Apr 2022 04:01:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377854AbiDDIBq (ORCPT ); Mon, 4 Apr 2022 04:01:46 -0400 X-Greylist: delayed 1122 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Mon, 04 Apr 2022 00:59:50 PDT Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::223]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BC631D32E for ; Mon, 4 Apr 2022 00:59:49 -0700 (PDT) Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id E2BB160009; Mon, 4 Apr 2022 07:59:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1649059183; 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=mZ1ww5HXNp+ThWvmQooIAfZbNKI84/02Z72n3gCX/+A=; b=Dj/UQRmOZnhQvTHHwuyEMqDAvvBLiIj26mq6i56UPsGBRJ10uUfBrWCuiAU3TzBjA7Otwi d0ZG9aqqmjObGBHttscULCNuRdYc8DXjJ3GUWWOlVwZtTGbCQtZ0o2xZppNgvjbZMzLuzx wpuVhL9ZSJ+m9oAPlUqAelMoyy3fs6yqtkgha95k6cguE9/sNh08/P3gljnXCmavvq9q3N sHe6bRfqAkCA+03BrhLfqOxCBGycO+89Pq0ve5bU1AjMc7b1SNvx0dTQu23KF+f3hAPxM2 l0LaYxeUURkPh+xrbJB0tKEDeW0kfsbmRQ6odL8IEju2PejNQae8xM7+723XTA== Date: Mon, 4 Apr 2022 09:59:37 +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 , devicetree@vger.kernel.org (open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS), linux-arm-kernel@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-mediatek@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-kernel@vger.kernel.org (open list), linux-mtd@lists.infradead.org (open list:NAND FLASH SUBSYSTEM) Subject: Re: [PATCH v2 2/5] spi: add driver for MTK SPI NAND Flash Interface Message-ID: <20220404095937.20089db7@xps13> In-Reply-To: <20220404040153.1509966-3-gch981213@gmail.com> References: <20220404040153.1509966-1-gch981213@gmail.com> <20220404040153.1509966-3-gch981213@gmail.com> 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 12:01:50 +0800: > This driver implements support for the SPI-NAND mode of MTK NAND Flash > Interface as a SPI-MEM controller with piplined ECC capability. >=20 > Signed-off-by: Chuanhong Guo > --- >=20 > Change since v1: > fix CI warnings >=20 > 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 >=20 > 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. > =20 > +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-mpc52xx.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 [...] > +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, size_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); Can't we use a single coherent buffer once for all? > + 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; > +} > + [...] > +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 bootloader > + // expects the page format to be the exact one as calculated in > + // setup_pagefmt. 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. > + 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.bitflips; Did you verify that nandbiterrs -i succeeds? > +} > + > +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, I believe you need to take care of the bounce buffer in the exit path? > +}; > + > +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; > + } > +} 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 CC003C433F5 for ; Mon, 4 Apr 2022 08:01:05 +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=sbV6UgKOEOYAWv7b/anszCpJvxQnMUnTFi1EYADfJO8=; b=hf1qO5pnVF2xtu SpNy3tf08j42GfMcIw95/hoTgfo93yS2Xt7Rgtkpy3msy4YLmeNMlK2yRzTHdTOMDkqHkLKAqeD+g EduE1lj/vLQG8CrFXmZ9YOqqivFePSNTkhvXz8z5oUJBd5JppOs1fJ9LUGVuoHXNsdsQiH/+gLU3S 9GjmW3ZEgihUoNDX7vY7e2J4LtGc0AHJ5zvoA7qGrFmJSUeP9KBnfIsmYqizvNXVcW7zEIArg0Fe5 hC3+Y1Mv19xQ6dyDb0I/Hxo34nM2YqEq2btb7+O9+YX0xkAB0WrsIDDHcSuJ2j7zfqesruhhFFnb2 LleQNCv0rbUfc4oMaZ+A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbHcw-00Divm-Ic; Mon, 04 Apr 2022 07:59:54 +0000 Received: from relay3-d.mail.gandi.net ([217.70.183.195]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbHcs-00DitG-LL; Mon, 04 Apr 2022 07:59:53 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id E2BB160009; Mon, 4 Apr 2022 07:59:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1649059183; 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=mZ1ww5HXNp+ThWvmQooIAfZbNKI84/02Z72n3gCX/+A=; b=Dj/UQRmOZnhQvTHHwuyEMqDAvvBLiIj26mq6i56UPsGBRJ10uUfBrWCuiAU3TzBjA7Otwi d0ZG9aqqmjObGBHttscULCNuRdYc8DXjJ3GUWWOlVwZtTGbCQtZ0o2xZppNgvjbZMzLuzx wpuVhL9ZSJ+m9oAPlUqAelMoyy3fs6yqtkgha95k6cguE9/sNh08/P3gljnXCmavvq9q3N sHe6bRfqAkCA+03BrhLfqOxCBGycO+89Pq0ve5bU1AjMc7b1SNvx0dTQu23KF+f3hAPxM2 l0LaYxeUURkPh+xrbJB0tKEDeW0kfsbmRQ6odL8IEju2PejNQae8xM7+723XTA== Date: Mon, 4 Apr 2022 09:59:37 +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 , devicetree@vger.kernel.org (open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS), linux-arm-kernel@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-mediatek@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-kernel@vger.kernel.org (open list), linux-mtd@lists.infradead.org (open list:NAND FLASH SUBSYSTEM) Subject: Re: [PATCH v2 2/5] spi: add driver for MTK SPI NAND Flash Interface Message-ID: <20220404095937.20089db7@xps13> In-Reply-To: <20220404040153.1509966-3-gch981213@gmail.com> References: <20220404040153.1509966-1-gch981213@gmail.com> <20220404040153.1509966-3-gch981213@gmail.com> 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_005951_032857_195D6B9F X-CRM114-Status: GOOD ( 28.21 ) 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 SGkgQ2h1YW5ob25nLAoKZ2NoOTgxMjEzQGdtYWlsLmNvbSB3cm90ZSBvbiBNb24sICA0IEFwciAy MDIyIDEyOjAxOjUwICswODAwOgoKPiBUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9y IHRoZSBTUEktTkFORCBtb2RlIG9mIE1USyBOQU5EIEZsYXNoCj4gSW50ZXJmYWNlIGFzIGEgU1BJ LU1FTSBjb250cm9sbGVyIHdpdGggcGlwbGluZWQgRUNDIGNhcGFiaWxpdHkuCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2h1YW5ob25nIEd1byA8Z2NoOTgxMjEzQGdtYWlsLmNvbT4KPiAtLS0KPiAKPiBD aGFuZ2Ugc2luY2UgdjE6Cj4gICBmaXggQ0kgd2FybmluZ3MKPiAKPiAgZHJpdmVycy9zcGkvS2Nv bmZpZyAgICAgICAgfCAgIDEwICsKPiAgZHJpdmVycy9zcGkvTWFrZWZpbGUgICAgICAgfCAgICAx ICsKPiAgZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMgfCAxMzUxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDEzNjIgaW5zZXJ0aW9ucygr KQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvS2NvbmZpZyBiL2RyaXZlcnMvc3BpL0tjb25maWcKPiBp bmRleCBkMjgxNWViMzYxYzAuLjczOWVlYzdkMGMxNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Nw aS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9zcGkvS2NvbmZpZwo+IEBAIC01OTAsNiArNTkwLDE2 IEBAIGNvbmZpZyBTUElfTVRLX05PUgo+ICAJICBTUEkgaW50ZXJmYWNlIGFzIHdlbGwgYXMgc2V2 ZXJhbCBTUEkgTk9SIHNwZWNpZmljIGluc3RydWN0aW9ucwo+ICAJICB2aWEgU1BJIE1FTSBpbnRl cmZhY2UuCj4gIAo+ICtjb25maWcgU1BJX01US19TTkZJCj4gKwl0cmlzdGF0ZSAiTWVkaWFUZWsg U1BJIE5BTkQgRmxhc2ggSW50ZXJmYWNlIgo+ICsJZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8 IENPTVBJTEVfVEVTVAo+ICsJZGVwZW5kcyBvbiBNVERfTkFORF9FQ0NfTUVESUFURUsKPiArCWhl bHAKPiArCSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIFNQSS1OQU5EIG1vZGUgb24gdGhlIE1l ZGlhVGVrIE5BTkQKPiArCSAgRmxhc2ggSW50ZXJmYWNlIGZvdW5kIG9uIE1lZGlhVGVrIEFSTSBT b0NzLiBUaGlzIGNvbnRyb2xsZXIKPiArCSAgaXMgaW1wbGVtZW50ZWQgYXMgYSBTUEktTUVNIGNv bnRyb2xsZXIgd2l0aCBwaXBlbGluZWQgRUNDCj4gKwkgIGNhcGNhYmlsaXR5Lgo+ICsKPiAgY29u ZmlnIFNQSV9OUENNX0ZJVQo+ICAJdHJpc3RhdGUgIk51dm90b24gTlBDTSBGTEFTSCBJbnRlcmZh Y2UgVW5pdCIKPiAgCWRlcGVuZHMgb24gQVJDSF9OUENNIHx8IENPTVBJTEVfVEVTVAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3NwaS9NYWtlZmlsZSBiL2RyaXZlcnMvc3BpL01ha2VmaWxlCj4gaW5k ZXggM2FhMjhlZDNmNzYxLi41MTU0MWZmMTdlNjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zcGkv TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+IEBAIC03Niw2ICs3Niw3IEBA IG9iai0kKENPTkZJR19TUElfTVBDNTJ4eCkJCSs9IHNwaS1tcGM1Mnh4Lm8KPiAgb2JqLSQoQ09O RklHX1NQSV9NVDY1WFgpICAgICAgICAgICAgICAgICs9IHNwaS1tdDY1eHgubwo+ICBvYmotJChD T05GSUdfU1BJX01UNzYyMSkJCSs9IHNwaS1tdDc2MjEubwo+ICBvYmotJChDT05GSUdfU1BJX01U S19OT1IpCQkrPSBzcGktbXRrLW5vci5vCj4gK29iai0kKENPTkZJR19TUElfTVRLX1NORkkpCQkr PSBzcGktbXRrLXNuZmkubwo+ICBvYmotJChDT05GSUdfU1BJX01YSUMpCQkJKz0gc3BpLW14aWMu bwo+ICBvYmotJChDT05GSUdfU1BJX01YUykJCQkrPSBzcGktbXhzLm8KPiAgb2JqLSQoQ09ORklH X1NQSV9OUENNX0ZJVSkJCSs9IHNwaS1ucGNtLWZpdS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3BpL3NwaS1tdGstc25maS5jIGIvZHJpdmVycy9zcGkvc3BpLW10ay1zbmZpLmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZThmOGYzMGJkN2VlCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvc3BpL3NwaS1tdGstc25maS5jCgpbLi4uXQoKPiArc3Rh dGljIHN0cnVjdCBtdGtfc25hbmQgKm5hbmRfdG9fbXRrX3NuYW5kKHN0cnVjdCBuYW5kX2Rldmlj ZSAqbmFuZCkKPiArewo+ICsJc3RydWN0IG5hbmRfZWNjX2VuZ2luZSAqZW5nID0gbmFuZC0+ZWNj LmVuZ2luZTsKPiArCj4gKwlyZXR1cm4gY29udGFpbmVyX29mKGVuZywgc3RydWN0IG10a19zbmFu ZCwgZWNjX2VuZyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IHNuYW5kX3ByZXBhcmVf Ym91bmNlYnVmKHN0cnVjdCBtdGtfc25hbmQgKnNuZiwgc2l6ZV90IHNpemUpCj4gK3sKPiArCWlm IChzbmYtPmJ1Zl9sZW4gPj0gc2l6ZSkKPiArCQlyZXR1cm4gMDsKPiArCWlmIChzbmYtPmJ1ZikK PiArCQlkbWFtX2ZyZWVfY29oZXJlbnQoc25mLT5kZXYsIHNuZi0+YnVmX2xlbiwgc25mLT5idWYs Cj4gKwkJCQkgICBzbmYtPmJ1Zl9kbWEpOwoKQ2FuJ3Qgd2UgdXNlIGEgc2luZ2xlIGNvaGVyZW50 IGJ1ZmZlciBvbmNlIGZvciBhbGw/Cgo+ICsJc25mLT5idWYgPQo+ICsJCWRtYW1fYWxsb2NfY29o ZXJlbnQoc25mLT5kZXYsIHNpemUsICZzbmYtPmJ1Zl9kbWEsIEdGUF9LRVJORUwpOwo+ICsJaWYg KCFzbmYtPmJ1ZikKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCXNuZi0+YnVmX2xlbiA9IHNpemU7 Cj4gKwltZW1zZXQoc25mLT5idWYsIDB4ZmYsIHNuZi0+YnVmX2xlbik7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKClsuLi5dCgo+ICtzdGF0aWMgaW50IG10a19zbmFuZF9lY2NfaW5pdF9jdHgoc3Ry dWN0IG5hbmRfZGV2aWNlICpuYW5kKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX3NuYW5kICpzbmYgPSBu YW5kX3RvX210a19zbmFuZChuYW5kKTsKPiArCXN0cnVjdCBuYW5kX2VjY19wcm9wcyAqY29uZiA9 ICZuYW5kLT5lY2MuY3R4LmNvbmY7Cj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRkZXZf dG9fbXRkKG5hbmQpOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBtdGtfc25hbmRfc2V0dXBf cGFnZWZtdChzbmYsIG5hbmQtPm1lbW9yZy5wYWdlc2l6ZSwKPiArCQkJCSAgICAgIG5hbmQtPm1l bW9yZy5vb2JzaXplKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwltdGRf c2V0X29vYmxheW91dChtdGQsICZtdGtfc25hbmRfb29ibGF5b3V0KTsKPiArCj4gKwkvLyBUaGlz IGRyaXZlciBpZ25vcmVzIGFueSBFQ0MgY2FwYWJpbGl0eSBjb25maWd1cmVkIGJ5IHVzZXIgb3IK PiArCS8vIHJlcXVlc3RlZCBieSB0aGUgbmFuZCBjaGlwIGJlY2F1c2UgdGhlIEJvb3RST00gYW5k IE1USyBib290bG9hZGVyCj4gKwkvLyBleHBlY3RzIHRoZSBwYWdlIGZvcm1hdCB0byBiZSB0aGUg ZXhhY3Qgb25lIGFzIGNhbGN1bGF0ZWQgaW4KPiArCS8vIHNldHVwX3BhZ2VmbXQuCgpJIGRvbid0 IGxpa2UgdGhpcyA6KQoKSSB1bmRlcnN0YW5kIHRoYXQgdGhlIGJvb3QgcGFydGl0aW9uIG1pZ2h0 IGhhdmUgc3BlY2lmaWMgY29uc3RyYWludHMsCmJ1dCBvdGhlciBwYXJ0aXRpb25zIChvciBpZiB3 ZSBkb24ndCB1c2UgdGhlIE5BTkQgdG8gYm9vdD8pIHNob3VsZApwcm9iYWJseSBiZSB1c2FibGUg d2l0aCBvdGhlciBFQ0Mgc2NoZW1lcy4KCj4gKwljb25mLT5zdGVwX3NpemUgPSBzbmYtPmNhcHMt PnNlY3Rvcl9zaXplOwo+ICsJY29uZi0+c3RyZW5ndGggPSBzbmYtPmVjY19jZmcuc3RyZW5ndGg7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX3NuYW5kX2VjY19w cmVwYXJlX2lvX3JlcShzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4gKwkJCQkJc3RydWN0IG5h bmRfcGFnZV9pb19yZXEgKnJlcSkKPiArewo+ICsJc3RydWN0IG10a19zbmFuZCAqc25mID0gbmFu ZF90b19tdGtfc25hbmQobmFuZCk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IG10a19zbmFu ZF9zZXR1cF9wYWdlZm10KHNuZiwgbmFuZC0+bWVtb3JnLnBhZ2VzaXplLAo+ICsJCQkJICAgICAg bmFuZC0+bWVtb3JnLm9vYnNpemUpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsJ c25mLT5hdXRvZm10ID0gdHJ1ZTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10a19zbmFuZF9lY2NfZmluaXNoX2lvX3JlcShzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsCj4g KwkJCQkgICAgICAgc3RydWN0IG5hbmRfcGFnZV9pb19yZXEgKnJlcSkKPiArewo+ICsJc3RydWN0 IG10a19zbmFuZCAqc25mID0gbmFuZF90b19tdGtfc25hbmQobmFuZCk7Cj4gKwlzdHJ1Y3QgbXRk X2luZm8gKm10ZCA9IG5hbmRkZXZfdG9fbXRkKG5hbmQpOwo+ICsKPiArCXNuZi0+YXV0b2ZtdCA9 IGZhbHNlOwo+ICsJaWYgKChyZXEtPm1vZGUgPT0gTVREX09QU19SQVcpIHx8IChyZXEtPnR5cGUg IT0gTkFORF9QQUdFX1JFQUQpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChzbmYtPmVjY19z dGF0cy5mYWlsZWQpCj4gKwkJbXRkLT5lY2Nfc3RhdHMuZmFpbGVkICs9IHNuZi0+ZWNjX3N0YXRz LmZhaWxlZDsKPiArCW10ZC0+ZWNjX3N0YXRzLmNvcnJlY3RlZCArPSBzbmYtPmVjY19zdGF0cy5j b3JyZWN0ZWQ7Cj4gKwlyZXR1cm4gc25mLT5lY2Nfc3RhdHMuZmFpbGVkID8gLUVCQURNU0cgOiBz bmYtPmVjY19zdGF0cy5iaXRmbGlwczsKCkRpZCB5b3UgdmVyaWZ5IHRoYXQgbmFuZGJpdGVycnMg LWkgc3VjY2VlZHM/Cgo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG5hbmRfZWNjX2VuZ2luZV9v cHMgbXRrX3NuZmlfZWNjX2VuZ2luZV9vcHMgPSB7Cj4gKwkuaW5pdF9jdHggPSBtdGtfc25hbmRf ZWNjX2luaXRfY3R4LAo+ICsJLnByZXBhcmVfaW9fcmVxID0gbXRrX3NuYW5kX2VjY19wcmVwYXJl X2lvX3JlcSwKPiArCS5maW5pc2hfaW9fcmVxID0gbXRrX3NuYW5kX2VjY19maW5pc2hfaW9fcmVx LAoKSSBiZWxpZXZlIHlvdSBuZWVkIHRvIHRha2UgY2FyZSBvZiB0aGUgYm91bmNlIGJ1ZmZlciBp biB0aGUgZXhpdCBwYXRoPwoKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIG10a19zbmFuZF9yZWFk X2ZkbShzdHJ1Y3QgbXRrX3NuYW5kICpzbmYsIHVpbnQ4X3QgKmJ1ZikKPiArewo+ICsJdWludDMy X3QgdmFsbCwgdmFsbTsKPiArCXVpbnQ4X3QgKm9vYnB0ciA9IGJ1ZjsKPiArCWludCBpLCBqOwo+ ICsKPiArCWZvciAoaSA9IDA7IGkgPCBzbmYtPm5maV9jZmcubnNlY3RvcnM7IGkrKykgewo+ICsJ CXZhbGwgPSBuZmlfcmVhZDMyKHNuZiwgTkZJX0ZETUwoaSkpOwo+ICsJCXZhbG0gPSBuZmlfcmVh ZDMyKHNuZiwgTkZJX0ZETU0oaSkpOwo+ICsKPiArCQlmb3IgKGogPSAwOyBqIDwgc25mLT5jYXBz LT5mZG1fc2l6ZTsgaisrKQo+ICsJCQlvb2JwdHJbal0gPSAoaiA+PSA0ID8gdmFsbSA6IHZhbGwp ID4+ICgoaiAlIDQpICogOCk7Cj4gKwo+ICsJCW9vYnB0ciArPSBzbmYtPmNhcHMtPmZkbV9zaXpl Owo+ICsJfQo+ICt9CgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK