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 D882DC433EF for ; Sat, 23 Jul 2022 16:53:35 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=cSMHjEZCsA9L+ClkTJXrXSSNrtoWY6cftiLG83Ea+ms=; b=GaLqcNk0gVvDMJY7Q1d47KngQE nm9tEBC/tpVVIIy7pP/lM9/V0Y9DAc7j6FrPASyUSnQUY7joyFs+j8R2Pm6TJ8xoajc8RJYrvKuos i4BRk7wyRpaCQpL1xsl4buyTtbKlgg/n1Q534KaNHq33vq4paH+sEUVGL+7CPoDSIh2lUZp8cNzJi RRdhYohgY89hLzhLtghEaPoMjd7BZMKOm+UlOOyVjHX/L4jbCTHf4SmUFp3V2rOVJ/VZE+r0qvWyj 7ebAXD2tFD1mfbPNWCIUDRmj5pAACR+0BEeOEd9vBTRJRzDfCmfVb+WvLZlOeo3hfiFW4J0Ty9CR8 wEqBRiuQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oFINZ-005jgG-Qd; Sat, 23 Jul 2022 16:53:25 +0000 Received: from out28-75.mail.aliyun.com ([115.124.28.75]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oFINV-005jbO-2x for linux-mtd@lists.infradead.org; Sat, 23 Jul 2022 16:53:23 +0000 X-Alimail-AntiSpam: AC=CONTINUE;BC=0.07436284|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_regular_dialog|0.0127137-0.00210745-0.985179;FP=0|0|0|0|0|-1|-1|-1;HT=ay29a033018047194;MF=zhouyanjie@wanyeetech.com;NM=1;PH=DS;RN=24;RT=24;SR=0;TI=SMTPD_---.Oblc.Cs_1658595190; Received: from 192.168.10.152(mailfrom:zhouyanjie@wanyeetech.com fp:SMTPD_---.Oblc.Cs_1658595190) by smtp.aliyun-inc.com; Sun, 24 Jul 2022 00:53:12 +0800 Subject: Re: [PATCH 3/3] SPI: Ingenic: Add SFC support for Ingenic SoCs. To: Krzysztof Kozlowski , tudor.ambarus@microchip.com, p.yadav@ti.com, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, broonie@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org Cc: linux-mtd@lists.infradead.org, linux-spi@vger.kernel.org, linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, aidanmacdonald.0x0@gmail.com, tmn505@gmail.com, paul@crapouillou.net, dongsheng.qiu@ingenic.com, aric.pzqi@ingenic.com, rick.tyliu@ingenic.com, jinghui.liu@ingenic.com, sernia.zhou@foxmail.com, reimu@sudomaker.com References: <1658508510-15400-1-git-send-email-zhouyanjie@wanyeetech.com> <1658508510-15400-4-git-send-email-zhouyanjie@wanyeetech.com> <1a0245c3-5659-573a-c74d-c2145a564b76@linaro.org> From: Zhou Yanjie Message-ID: <4904a283-8ede-3147-078a-b64318513b07@wanyeetech.com> Date: Sun, 24 Jul 2022 00:53:10 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <1a0245c3-5659-573a-c74d-c2145a564b76@linaro.org> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220723_095321_930509_CEBC69CA X-CRM114-Status: GOOD ( 27.18 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgS3J6eXN6dG9mLAoKT24gMjAyMi83LzIzIOS4iuWNiDI6MDcsIEtyenlzenRvZiBLb3psb3dz a2kgd3JvdGU6Cj4gT24gMjIvMDcvMjAyMiAxODo0OCwg5ZGo55Cw5p2wIChaaG91IFlhbmppZSkg d3JvdGU6Cj4+IEFkZCBTRkMgc3VwcG9ydCBmb3IgdGhlIFgxMDAwIFNvQywgdGhlIFgxNjAwIFNv QywgYW5kIHRoZSBYMjAwMCBTb0MKPj4gZnJvbSBJbmdlbmljLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiDlkajnkLDmnbAgKFpob3UgWWFuamllKSA8emhvdXlhbmppZUB3YW55ZWV0ZWNoLmNvbT4KPj4g LS0tCj4+ICAgZHJpdmVycy9zcGkvS2NvbmZpZyAgICAgICAgICAgfCAgIDkgKwo+PiAgIGRyaXZl cnMvc3BpL01ha2VmaWxlICAgICAgICAgIHwgICAxICsKPj4gICBkcml2ZXJzL3NwaS9zcGktaW5n ZW5pYy1zZmMuYyB8IDY2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPj4gICAzIGZpbGVzIGNoYW5nZWQsIDY3MiBpbnNlcnRpb25zKCspCj4+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvc3BpL3NwaS1pbmdlbmljLXNmYy5jCj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3NwaS9LY29uZmlnIGIvZHJpdmVycy9zcGkvS2NvbmZpZwo+PiBpbmRleCAzYjEw NDRlLi4xMDc3YmQzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3NwaS9LY29uZmlnCj4+ICsrKyBi L2RyaXZlcnMvc3BpL0tjb25maWcKPj4gQEAgLTQzNyw2ICs0MzcsMTUgQEAgY29uZmlnIFNQSV9J TkdFTklDCj4+ICAgCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3Nl IE0gaGVyZTogdGhlIG1vZHVsZQo+PiAgIAkgIHdpbGwgYmUgY2FsbGVkIHNwaS1pbmdlbmljLgo+ PiAgIAo+PiArY29uZmlnIFNQSV9JTkdFTklDX1NGQwo+PiArCXRyaXN0YXRlICJJbmdlbmljIFNv Q3MgU1BJIEZsYXNoIENvbnRyb2xsZXIiCj4+ICsJZGVwZW5kcyBvbiBNQUNIX0lOR0VOSUMgfHwg Q09NUElMRV9URVNUCj4+ICsJaGVscAo+PiArCSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRo ZSBJbmdlbmljIFNvQ3MgU1BJIGZsYXNoIGNvbnRyb2xsZXIuCj4+ICsKPj4gKwkgIFRvIGNvbXBp bGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKPj4g KwkgIHdpbGwgYmUgY2FsbGVkIGluZ2VuaWMtc2ZjLgo+PiArCj4+ICAgY29uZmlnIFNQSV9JTlRF TAo+PiAgIAl0cmlzdGF0ZQo+PiAgIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvTWFrZWZp bGUgYi9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+PiBpbmRleCAwZjQ0ZWI2Li5mM2U0MmMwIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL3NwaS9NYWtl ZmlsZQo+PiBAQCAtNjIsNiArNjIsNyBAQCBvYmotJChDT05GSUdfU1BJX0hJU0lfU0ZDX1YzWFgp CQkrPSBzcGktaGlzaS1zZmMtdjN4eC5vCj4+ICAgb2JqLSQoQ09ORklHX1NQSV9JTUdfU1BGSSkJ CSs9IHNwaS1pbWctc3BmaS5vCj4+ICAgb2JqLSQoQ09ORklHX1NQSV9JTVgpCQkJKz0gc3BpLWlt eC5vCj4+ICAgb2JqLSQoQ09ORklHX1NQSV9JTkdFTklDKQkJKz0gc3BpLWluZ2VuaWMubwo+PiAr b2JqLSQoQ09ORklHX1NQSV9JTkdFTklDX1NGQykJKz0gc3BpLWluZ2VuaWMtc2ZjLm8KPj4gICBv YmotJChDT05GSUdfU1BJX0lOVEVMKQkJCSs9IHNwaS1pbnRlbC5vCj4+ICAgb2JqLSQoQ09ORklH X1NQSV9JTlRFTF9QQ0kpCQkrPSBzcGktaW50ZWwtcGNpLm8KPj4gICBvYmotJChDT05GSUdfU1BJ X0lOVEVMX1BMQVRGT1JNKQkrPSBzcGktaW50ZWwtcGxhdGZvcm0ubwo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMtc2ZjLmMgYi9kcml2ZXJzL3NwaS9zcGktaW5nZW5pYy1z ZmMuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMC4uYTU2NTU0Ngo+ PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvc3BpL3NwaS1pbmdlbmljLXNmYy5jCj4+ IEBAIC0wLDAgKzEsNjYyIEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0y LjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCj4+ICsvKgo+PiArICogSW5nZW5pYyBTb0NzIFNQSSBG bGFzaCBDb250cm9sbGVyIERyaXZlcgo+PiArICogQ29weXJpZ2h0IChjKSAyMDIyIOWRqOeQsOad sCAoWmhvdSBZYW5qaWUpIDx6aG91eWFuamllQHdhbnllZXRlY2guY29tPgo+PiArICovCj4+ICsK Pj4gKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2JpdG9w cy5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2NvbXBs ZXRpb24uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+PiArI2luY2x1ZGUg PGxpbnV4L2ludGVycnVwdC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+PiArI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KPj4g KyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+ICsjaW5jbHVkZSA8bGlu dXgvc3BpL3NwaS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGktbWVtLmg+Cj4+ICsKPj4g Ky8qIFNGQyByZWdpc3RlciBvZmZzZXRzICovCj4+ICsjZGVmaW5lIFNGQ19SRUdfR0xCCQkJCQkJ MHgwMDAwCj4+ICsjZGVmaW5lIFNGQ19SRUdfREVWX0NPTkYJCQkJMHgwMDA0Cj4+ICsjZGVmaW5l IFNGQ19SRUdfREVWX1NUQV9FWFAJCQkJMHgwMDA4Cj4+ICsjZGVmaW5lIFNGQ19SRUdfREVWX1NU QV9SVAkJCQkweDAwMGMKPj4gKyNkZWZpbmUgU0ZDX1JFR19ERVZfU1RBX01TSwkJCQkweDAwMTAK Pj4gKyNkZWZpbmUgU0ZDX1JFR19UUkFOX0NPTkYobikJCQkoMHgwMDE0ICsgbiAqIDQpCj4+ICsj ZGVmaW5lIFNGQ19SRUdfVFJBTl9DRkcwKG4pCQkJKDB4MDAxNCArIG4gKiA0KQo+PiArI2RlZmlu ZSBTRkNfUkVHX1RSQU5fTEVOCQkJCTB4MDAyYwo+PiArI2RlZmluZSBTRkNfUkVHX0RFVl9BRERS KG4pCQkJCSgweDAwMzAgKyBuICogNCkKPj4gKyNkZWZpbmUgU0ZDX1JFR19ERVZfQUREUl9QTFVT KG4pCQkoMHgwMDQ4ICsgbiAqIDQpCj4+ICsjZGVmaW5lIFNGQ19SRUdfTUVNX0FERFIJCQkJMHgw MDYwCj4+ICsjZGVmaW5lIFNGQ19SRUdfVFJJRwkJCQkJMHgwMDY0Cj4+ICsjZGVmaW5lIFNGQ19S RUdfU1IJCQkJCQkweDAwNjgKPj4gKyNkZWZpbmUgU0ZDX1JFR19TQ1IJCQkJCQkweDAwNmMKPj4g KyNkZWZpbmUgU0ZDX1JFR19JTlRDCQkJCQkweDAwNzAKPj4gKyNkZWZpbmUgU0ZDX1JFR19GU00J CQkJCQkweDAwNzQKPj4gKyNkZWZpbmUgU0ZDX1JFR19DR0UJCQkJCQkweDAwNzgKPj4gKyNkZWZp bmUgU0ZDX1JFR19UUkFOX0NGRzEobikJCQkoMHgwMDljICsgbiAqIDQpCj4+ICsjZGVmaW5lIFNG Q19SRUdfRFIJCQkJCQkweDEwMDAKPj4gKwo+PiArLyogYml0cyB3aXRoaW4gdGhlIEdMQiByZWdp c3RlciAqLwo+PiArI2RlZmluZSBHTEJfVFJBTl9ESVJfTUFTSwkJCQlHRU5NQVNLKDEzLCAxMykK Pj4gKyNkZWZpbmUgR0xCX1RSQU5fRElSX1dSSVRFCQkJCTB4MQo+PiArI2RlZmluZSBHTEJfVFJB Tl9ESVJfUkVBRAkJCQkweDAKPj4gKyNkZWZpbmUgR0xCX1RIUkVTSE9MRF9NQVNLCQkJCUdFTk1B U0soMTIsIDcpCj4+ICsjZGVmaW5lIEdMQl9PUF9NT0RFX01BU0sJCQkJR0VOTUFTSyg2LCA2KQo+ PiArI2RlZmluZSBHTEJfT1BfTU9ERV9ETUEJCQkJCTB4MQo+PiArI2RlZmluZSBHTEJfT1BfTU9E RV9TTEFWRQkJCQkweDAKPj4gKyNkZWZpbmUgR0xCX1BIQVNFX05VTV9NQVNLCQkJCUdFTk1BU0so NSwgMykKPj4gKyNkZWZpbmUgR0xCX1dQX0VOCQkJCQkJQklUKDIpCj4+ICsjZGVmaW5lIEdMQl9C VVJTVF9NRF9NQVNLCQkJCUdFTk1BU0soMSwgMCkKPj4gKyNkZWZpbmUgR0xCX0JVUlNUX01EX0lO Q1IzMgkJCQkweDMKPj4gKyNkZWZpbmUgR0xCX0JVUlNUX01EX0lOQ1IxNgkJCQkweDIKPj4gKyNk ZWZpbmUgR0xCX0JVUlNUX01EX0lOQ1I4CQkJCTB4MQo+PiArI2RlZmluZSBHTEJfQlVSU1RfTURf SU5DUjQJCQkJMHgwCj4+ICsKPj4gKy8qIGJpdHMgd2l0aGluIHRoZSBERVZfQ09ORiByZWdpc3Rl ciAqLwo+PiArI2RlZmluZSBERVZfQ09ORl9TTVBfREVMQVlfTUFTSwkJCUdFTk1BU0soMjAsIDE2 KQo+PiArI2RlZmluZSBERVZfQ09ORl9TTVBfREVMQVlfMTgwREVHCQkweDQKPj4gKyNkZWZpbmUg REVWX0NPTkZfU01QX0RFTEFZX0hBTEZfQ1lDTEUJMHgxCj4+ICsjZGVmaW5lIERFVl9DT05GX0NN RF9UWVBFX01BU0sJCQlHRU5NQVNLKDE1LCAxNSkKPj4gKyNkZWZpbmUgREVWX0NPTkZfQ01EX1RZ UEVfMTZCSVQJCQkweDEKPj4gKyNkZWZpbmUgREVWX0NPTkZfQ01EX1RZUEVfOEJJVAkJCTB4MAo+ PiArI2RlZmluZSBERVZfQ09ORl9TVEFfVFlQRV9NQVNLCQkJR0VOTUFTSygxNCwgMTMpCj4+ICsj ZGVmaW5lIERFVl9DT05GX1RIT0xEX01BU0sJCQkJR0VOTUFTSygxMiwgMTEpCj4+ICsjZGVmaW5l IERFVl9DT05GX1RTRVRVUF9NQVNLCQkJR0VOTUFTSygxMCwgOSkKPj4gKyNkZWZpbmUgREVWX0NP TkZfVFNIX01BU0sJCQkJR0VOTUFTSyg4LCA1KQo+PiArI2RlZmluZSBERVZfQ09ORl9DUEhBCQkJ CQlCSVQoNCkKPj4gKyNkZWZpbmUgREVWX0NPTkZfQ1BPTAkJCQkJQklUKDMpCj4+ICsjZGVmaW5l IERFVl9DT05GX0NFX0RMCQkJCQlCSVQoMikKPj4gKyNkZWZpbmUgREVWX0NPTkZfSE9MRF9ETAkJ CQlCSVQoMSkKPj4gKyNkZWZpbmUgREVWX0NPTkZfV1BfREwJCQkJCUJJVCgwKQo+PiArCj4+ICsv KiBiaXRzIHdpdGhpbiB0aGUgVFJBTl9DT05GKG4pIHJlZ2lzdGVyICovCj4+ICsjZGVmaW5lIFRS QU5fQ09ORl9UUkFOX01PREVfTUFTSwkJR0VOTUFTSygzMSwgMjkpCj4+ICsjZGVmaW5lIFRSQU5f Q09ORl9BRERSX1dJRFRIX01BU0sJCUdFTk1BU0soMjgsIDI2KQo+PiArI2RlZmluZSBUUkFOX0NP TkZfUE9MTF9FTgkJCQlCSVQoMjUpCj4+ICsjZGVmaW5lIFRSQU5fQ09ORl9DTURfRU4JCQkJQklU KDI0KQo+PiArI2RlZmluZSBUUkFOX0NPTkZfUEhBU0VfRk9STUFUX01BU0sJCUdFTk1BU0soMjMs IDIzKQo+PiArI2RlZmluZSBUUkFOX0NPTkZfRE1ZX0JJVFNfTUFTSwkJCUdFTk1BU0soMjIsIDE3 KQo+PiArI2RlZmluZSBUUkFOX0NPTkZfREFUQV9FTgkJCQlCSVQoMTYpCj4+ICsjZGVmaW5lIFRS QU5fQ09ORl9DTURfTUFTSwkJCQlHRU5NQVNLKDE1LCAwKQo+PiArCj4+ICsvKiBiaXRzIHdpdGhp biB0aGUgVFJJRyByZWdpc3RlciAqLwo+PiArI2RlZmluZSBUUklHX0ZMVVNICQkJCQkJQklUKDIp Cj4+ICsjZGVmaW5lIFRSSUdfU1RPUAkJCQkJCUJJVCgxKQo+PiArI2RlZmluZSBUUklHX1NUQVJU CQkJCQkJQklUKDApCj4+ICsKPj4gKy8qIGJpdHMgd2l0aGluIHRoZSBTUiByZWdpc3RlciAqLwo+ PiArI2RlZmluZSBTUl9GSUZPX05VTV9NQVNLCQkJCUdFTk1BU0soMjIsIDE2KQo+PiArI2RlZmlu ZSBTUl9FTkQJCQkJCQkJQklUKDQpCj4+ICsjZGVmaW5lIFNSX1RSQU5fUkVRCQkJCQkJQklUKDMp Cj4+ICsjZGVmaW5lIFNSX1JFQ0VfUkVRCQkJCQkJQklUKDIpCj4+ICsjZGVmaW5lIFNSX09WRVIJ CQkJCQkJQklUKDEpCj4+ICsjZGVmaW5lIFNSX1VOREVSCQkJCQkJQklUKDApCj4+ICsKPj4gKy8q IGJpdHMgd2l0aGluIHRoZSBTQ1IgcmVnaXN0ZXIgKi8KPj4gKyNkZWZpbmUgU0NSX0NMUl9FTkQJ CQkJCQlCSVQoNCkKPj4gKyNkZWZpbmUgU0NSX0NMUl9UUkVRCQkJCQlCSVQoMykKPj4gKyNkZWZp bmUgU0NSX0NMUl9SUkVRCQkJCQlCSVQoMikKPj4gKyNkZWZpbmUgU0NSX0NMUl9PVkVSCQkJCQlC SVQoMSkKPj4gKyNkZWZpbmUgU0NSX0NMUl9VTkRFUgkJCQkJQklUKDApCj4+ICsKPj4gKy8qIGJp dHMgd2l0aGluIHRoZSBJTlRDIHJlZ2lzdGVyICovCj4+ICsjZGVmaW5lIElOVENfTUFTS19FTkQJ CQkJCUJJVCg0KQo+PiArI2RlZmluZSBJTlRDX01BU0tfVFJFUQkJCQkJQklUKDMpCj4+ICsjZGVm aW5lIElOVENfTUFTS19SUkVRCQkJCQlCSVQoMikKPj4gKyNkZWZpbmUgSU5UQ19NQVNLX09WRVIJ CQkJCUJJVCgxKQo+PiArI2RlZmluZSBJTlRDX01BU0tfVU5ERVIJCQkJCUJJVCgwKQo+PiArCj4+ ICsvKiBiaXRzIHdpdGhpbiB0aGUgVFJBTl9DRkcxKG4pIHJlZ2lzdGVyICovCj4+ICsjZGVmaW5l IFRSQU5fQ0ZHMV9UUkFOX01PREVfTUFTSwkJR0VOTUFTSyg3LCA0KQo+PiArCj4+ICsjZGVmaW5l IFRSQU5fTU9ERV9TVEFOREFSRAkJCQkwCj4+ICsjZGVmaW5lIFRSQU5fTU9ERV9EVUFMX0RBVEEJ CQkJMQo+PiArI2RlZmluZSBUUkFOX01PREVfRFVBTF9JTwkJCQkyCj4+ICsjZGVmaW5lIFRSQU5f TU9ERV9EVUFMX0ZVTEwJCQkJMwo+PiArI2RlZmluZSBUUkFOX01PREVfUVVBRF9EQVRBCQkJCTUK Pj4gKyNkZWZpbmUgVFJBTl9NT0RFX1FVQURfSU8JCQkJNgo+PiArI2RlZmluZSBUUkFOX01PREVf UVVBRF9GVUxMCQkJCTcKPj4gKyNkZWZpbmUgVFJBTl9NT0RFX09DVEFMX0RBVEEJCQk5Cj4+ICsj ZGVmaW5lIFRSQU5fTU9ERV9PQ1RBTF9JTwkJCQkxMAo+PiArI2RlZmluZSBUUkFOX01PREVfT0NU QUxfRlVMTAkJCTExCj4+ICsKPj4gKyNkZWZpbmUgSU5HRU5JQ19TRkNfRklGT19TSVpFCQkJKDY0 ICogNCkKPj4gKwo+PiArI2RlZmluZSBJTkdFTklDX1NGQ19UUkFOU0ZFUl9USU1FT1VUCTEwMDAK Pj4gKwo+PiArZW51bSBpbmdlbmljX3NmY192ZXJzaW9uIHsKPj4gKwlJRF9YMTAwMCwKPj4gKwlJ RF9YMTYwMCwKPj4gKwlJRF9YMjAwMCwKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBpbmdlbmljX3Nv Y19pbmZvIHsKPj4gKwllbnVtIGluZ2VuaWNfc2ZjX3ZlcnNpb24gdmVyc2lvbjsKPj4gKwo+IE5v IG5lZWQgZm9yIGJsYW5rIGxpbmUuCj4KPj4gKwl1bnNpZ25lZCBpbnQgbWF4X2J1c193aWR0aDsK Pj4gKwo+IFJlbW92ZSBhcyB3ZWxsLgo+Cj4+ICsJY29uc3QgdTMyIHRyYW5fbW9kZV9tYXNrOwo+ PiArfTsKPj4gKwo+PiArc3RydWN0IGluZ2VuaWNfc2ZjIHsKPj4gKwljb25zdCBzdHJ1Y3QgaW5n ZW5pY19zb2NfaW5mbyAqc29jX2luZm87Cj4+ICsKPj4gKwl2b2lkIF9faW9tZW0gKmJhc2U7Cj4+ ICsJc3RydWN0IGRldmljZSAqZGV2Owo+PiArCXN0cnVjdCBjbGsgKmNsazsKPj4gKwlpbnQgaXJx Owo+PiArCj4+ICsJc3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjsKPj4gK307Cj4+ICsKPj4g K3N0YXRpYyBpcnFyZXR1cm5fdCBpbmdlbmljX3NmY19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lk ICpkYXRhKQo+PiArewo+PiArCXN0cnVjdCBpbmdlbmljX3NmYyAqc2ZjID0gZGF0YTsKPj4gKwo+ PiArCXdyaXRlbCgweDFmLCBzZmMtPmJhc2UgKyBTRkNfUkVHX0lOVEMpOwo+PiArCj4+ICsJY29t cGxldGUoJnNmYy0+Y29tcGxldGlvbik7Cj4+ICsKPj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgaW5nZW5pY19zZmNfYWRqdXN0X29wX3NpemUoc3RydWN0 IHNwaV9tZW0gKm1lbSwgc3RydWN0IHNwaV9tZW1fb3AgKm9wKQo+PiArewo+PiArCXVpbnRwdHJf dCBhZGRyID0gKHVpbnRwdHJfdClvcC0+ZGF0YS5idWYuaW47Cj4+ICsKPj4gKwlpZiAob3AtPmRh dGEubmJ5dGVzID4gSU5HRU5JQ19TRkNfRklGT19TSVpFICYmICFJU19BTElHTkVEKGFkZHIsIDQp KQo+PiArCQlvcC0+ZGF0YS5uYnl0ZXMgPSBJTkdFTklDX1NGQ19GSUZPX1NJWkU7Cj4+ICsKPj4g KwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wgaW5nZW5pY19zZmNfc3VwcG9y dHNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKQo+ PiArewo+PiArCXN0cnVjdCBzcGlfZGV2aWNlICpzcGkgPSBtZW0tPnNwaTsKPj4gKwlzdHJ1Y3Qg aW5nZW5pY19zZmMgKnNmYyA9IHNwaV9jb250cm9sbGVyX2dldF9kZXZkYXRhKHNwaS0+bWFzdGVy KTsKPj4gKwl1aW50cHRyX3QgYWRkciA9ICh1aW50cHRyX3Qpb3AtPmRhdGEuYnVmLmluOwo+PiAr Cj4+ICsJLyogVGhlIGNvbnRyb2xsZXIgb25seSBzdXBwb3J0cyBTdGFuZGFyZCBTUEkgbW9kZSwg RHVhbGwgbW9kZSwgUXVhZCBtb2RlIGFuZCBPY3RhbCBtb2RlLiAqLwo+PiArCWlmIChvcC0+Y21k LmJ1c3dpZHRoID4gc2ZjLT5zb2NfaW5mby0+bWF4X2J1c193aWR0aCB8fAo+PiArCQlvcC0+YWRk ci5idXN3aWR0aCA+IHNmYy0+c29jX2luZm8tPm1heF9idXNfd2lkdGggfHwKPj4gKwkJb3AtPmR1 bW15LmJ1c3dpZHRoID4gc2ZjLT5zb2NfaW5mby0+bWF4X2J1c193aWR0aCB8fAo+PiArCQlvcC0+ ZGF0YS5idXN3aWR0aCA+IHNmYy0+c29jX2luZm8tPm1heF9idXNfd2lkdGgpCj4+ICsJCXJldHVy biBmYWxzZTsKPj4gKwo+PiArCS8qIE1heCAzMiBkdW1teSBjbG9jayBjeWNsZXMgc3VwcG9ydGVk ICovCj4+ICsJaWYgKG9wLT5kdW1teS5uYnl0ZXMgJiYgb3AtPmR1bW15Lm5ieXRlcyAqIDggLyBv cC0+ZHVtbXkuYnVzd2lkdGggPiAzMikKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCj4+ICsJLyog TWF4IHJ4IGRhdGEgbGVuZ3RoLCBjaGVjayBjb250cm9sbGVyIGxpbWl0cyBhbmQgYWxpZ25tZW50 ICovCj4+ICsJaWYgKG9wLT5kYXRhLmRpciA9PSBTUElfTUVNX0RBVEFfSU4gJiYKPj4gKwkJb3At PmRhdGEubmJ5dGVzID4gSU5HRU5JQ19TRkNfRklGT19TSVpFICYmICFJU19BTElHTkVEKGFkZHIs IDQpKQo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsKPj4gKwkvKiBNYXggNiBieXRlcyBhZGRyZXNz IHdpZHRoIHN1cHBvcnRlZCAqLwo+PiArCWlmIChvcC0+YWRkci5uYnl0ZXMgPiA2KQo+PiArCQly ZXR1cm4gZmFsc2U7Cj4+ICsKPj4gKwlyZXR1cm4gc3BpX21lbV9kZWZhdWx0X3N1cHBvcnRzX29w KG1lbSwgb3ApOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBpbmdlbmljX3NmY19zZXRfdHJh bnNmZXJfbW9kZShzdHJ1Y3QgaW5nZW5pY19zZmMgKnNmYywgY29uc3Qgc3RydWN0IHNwaV9tZW1f b3AgKm9wKQo+PiArewo+PiArCWludCB2YWw7Cj4+ICsKPj4gKwl2YWwgPSByZWFkbChzZmMtPmJh c2UgKyAoc2ZjLT5zb2NfaW5mby0+dmVyc2lvbiA+PSBJRF9YMTYwMCA/Cj4+ICsJCQlTRkNfUkVH X1RSQU5fQ0ZHMSgwKSA6IFNGQ19SRUdfVFJBTl9DT05GKDApKSk7Cj4gVGhpcyBpcyBubyByZWFs bHkgcmVhZGFibGUuCgoKU3VyZSwgSSB3aWxsIGNoYW5nZSBpdCBpbiB0aGUgbmV4dCB2ZXJzaW9u LgoKCj4+ICsJdmFsICY9IH5zZmMtPnNvY19pbmZvLT50cmFuX21vZGVfbWFzazsKPj4gKwlpZiAo b3AtPmNtZC5idXN3aWR0aCA9PSA4KQo+PiArCQl2YWwgfD0gKFRSQU5fTU9ERV9PQ1RBTF9GVUxM IDw8IChmZnMoc2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2spIC0gMSkpICYKPj4gKwkJCQlz ZmMtPnNvY19pbmZvLT50cmFuX21vZGVfbWFzazsKPj4gKwllbHNlIGlmIChvcC0+Y21kLmJ1c3dp ZHRoID09IDQpCj4+ICsJCXZhbCB8PSAoVFJBTl9NT0RFX1FVQURfRlVMTCA8PCAoZmZzKHNmYy0+ c29jX2luZm8tPnRyYW5fbW9kZV9tYXNrKSAtIDEpKSAmCj4+ICsJCQkJc2ZjLT5zb2NfaW5mby0+ dHJhbl9tb2RlX21hc2s7Cj4+ICsJZWxzZSBpZiAob3AtPmNtZC5idXN3aWR0aCA9PSAyKQo+PiAr CQl2YWwgfD0gKFRSQU5fTU9ERV9EVUFMX0ZVTEwgPDwgKGZmcyhzZmMtPnNvY19pbmZvLT50cmFu X21vZGVfbWFzaykgLSAxKSkgJgo+PiArCQkJCXNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNr Owo+PiArCWVsc2UgaWYgKG9wLT5hZGRyLmJ1c3dpZHRoID09IDgpCj4+ICsJCXZhbCB8PSAoVFJB Tl9NT0RFX09DVEFMX0lPIDw8IChmZnMoc2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2spIC0g MSkpICYKPj4gKwkJCQlzZmMtPnNvY19pbmZvLT50cmFuX21vZGVfbWFzazsKPj4gKwllbHNlIGlm IChvcC0+YWRkci5idXN3aWR0aCA9PSA0KQo+PiArCQl2YWwgfD0gKFRSQU5fTU9ERV9RVUFEX0lP IDw8IChmZnMoc2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2spIC0gMSkpICYKPj4gKwkJCQlz ZmMtPnNvY19pbmZvLT50cmFuX21vZGVfbWFzazsKPj4gKwllbHNlIGlmIChvcC0+YWRkci5idXN3 aWR0aCA9PSAyKQo+PiArCQl2YWwgfD0gKFRSQU5fTU9ERV9EVUFMX0lPIDw8IChmZnMoc2ZjLT5z b2NfaW5mby0+dHJhbl9tb2RlX21hc2spIC0gMSkpICYKPj4gKwkJCQlzZmMtPnNvY19pbmZvLT50 cmFuX21vZGVfbWFzazsKPj4gKwllbHNlIGlmIChvcC0+ZGF0YS5idXN3aWR0aCA9PSA4KQo+PiAr CQl2YWwgfD0gKFRSQU5fTU9ERV9PQ1RBTF9EQVRBIDw8IChmZnMoc2ZjLT5zb2NfaW5mby0+dHJh bl9tb2RlX21hc2spIC0gMSkpICYKPj4gKwkJCQlzZmMtPnNvY19pbmZvLT50cmFuX21vZGVfbWFz azsKPj4gKwllbHNlIGlmIChvcC0+ZGF0YS5idXN3aWR0aCA9PSA0KQo+PiArCQl2YWwgfD0gKFRS QU5fTU9ERV9RVUFEX0RBVEEgPDwgKGZmcyhzZmMtPnNvY19pbmZvLT50cmFuX21vZGVfbWFzaykg LSAxKSkgJgo+PiArCQkJCXNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNrOwo+PiArCWVsc2Ug aWYgKG9wLT5kYXRhLmJ1c3dpZHRoID09IDIpCj4+ICsJCXZhbCB8PSAoVFJBTl9NT0RFX0RVQUxf REFUQSA8PCAoZmZzKHNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNrKSAtIDEpKSAmCj4+ICsJ CQkJc2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2s7Cj4+ICsJZWxzZQo+PiArCQl2YWwgfD0g KFRSQU5fTU9ERV9TVEFOREFSRCA8PCAoZmZzKHNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNr KSAtIDEpKSAmCj4+ICsJCQkJc2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2s7Cj4+ICsJd3Jp dGVsKHZhbCwgc2ZjLT5iYXNlICsgKHNmYy0+c29jX2luZm8tPnZlcnNpb24gPj0gSURfWDE2MDAg Pwo+PiArCQkJU0ZDX1JFR19UUkFOX0NGRzEoMCkgOiBTRkNfUkVHX1RSQU5fQ09ORigwKSkpOwo+ IE5vdCByZWFkYWJsZS4KCgpXaWxsIGNoYW5nZSBpdC4KCgo+Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ ICsgKiBXZSBvbmx5IG5lZWQgUElPIG1vZGUgdG8gaGFuZGxlIHRoZSBTUElfTUVNX05PX0RBVEEg dHJhbnNmZXJzLAo+PiArICogYW5kIHRoZSB1bmFsaWduZWQgYWNjZXNzZXMgaW4gU1BJX01FTV9E QVRBX0lOIHRyYW5zZmVycy4KPj4gKyAqLwo+ICguLi4pCj4KPj4gKwlzZmMtPmRldiA9ICZwZGV2 LT5kZXY7Cj4+ICsKPj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBzZmMpOwo+PiArCj4+ ICsJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBzZmMtPmlycSwgaW5nZW5pY19z ZmNfaXJxX2hhbmRsZXIsIDAsCj4+ICsJCQlkZXZfbmFtZSgmcGRldi0+ZGV2KSwgc2ZjKTsKPj4g KwlpZiAocmV0KSB7Cj4+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byByZXF1ZXN0 IGlycSVkLCByZXQgPSAlZFxuIiwgc2ZjLT5pcnEsIHJldCk7Cj4+ICsJCWdvdG8gZXJyX3B1dF9t YXN0ZXI7Cj4+ICsJfQo+PiArCj4+ICsJY3Rsci0+YnVzX251bSA9IC0xOwo+PiArCWN0bHItPm51 bV9jaGlwc2VsZWN0ID0gMTsKPj4gKwljdGxyLT5tZW1fb3BzID0gJmluZ2VuaWNfc2ZjX21lbV9v cHM7Cj4+ICsJY3Rsci0+ZGV2Lm9mX25vZGUgPSBwZGV2LT5kZXYub2Zfbm9kZTsKPj4gKwljdGxy LT5zZXR1cCA9IGluZ2VuaWNfc2ZjX3NldHVwOwo+PiArCWN0bHItPm1vZGVfYml0cyA9IFNQSV9D UEhBIHwgU1BJX0NQT0wgfAo+PiArCQkJU1BJX1JYX0RVQUwgfCBTUElfUlhfUVVBRCB8IFNQSV9U WF9EVUFMIHwgU1BJX1RYX1FVQUQ7Cj4+ICsJaWYgKHNmYy0+c29jX2luZm8tPnZlcnNpb24gPj0g SURfWDIwMDApCj4+ICsJCWN0bHItPm1vZGVfYml0cyB8PSBTUElfUlhfT0NUQUwgfCBTUElfVFhf T0NUQUw7Cj4+ICsKPj4gKwlyZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKCZwZGV2 LT5kZXYsIGN0bHIpOwo+PiArCWlmIChyZXQpCj4+ICsJCWdvdG8gZXJyX3B1dF9tYXN0ZXI7Cj4+ ICsKPj4gKwlyZXR1cm4gMDsKPj4gKwo+PiArZXJyX3B1dF9tYXN0ZXI6Cj4+ICsJc3BpX21hc3Rl cl9wdXQoY3Rscik7Cj4gV2hhdCBhYm91dCB1bnByZXBhcmluZyBjbG9ja3M/IElzIGl0IHBhcnQg b2Ygc3BpX21hc3Rlcl9wdXQoKT8KCgpXaWxsIGFkZCBpdCBpbiB0aGUgbmV4dCB2ZXJzaW9uLgoK ClRoYW5rcyBhbmQgYmVzZXQgcmVnYXJkcyEKCgo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbmdlbmljX3NvY19pbmZvIHgxMDAwX3NvY19p bmZvID0gewo+PiArCS52ZXJzaW9uID0gSURfWDEwMDAsCj4+ICsKPiBObyBuZWVkIGZvciBibGFu ayBsaW5lcyBhZnRlciBlYWNoIGZpZWxkLgo+Cj4KPiBCZXN0IHJlZ2FyZHMsCj4gS3J6eXN6dG9m CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K TGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=