Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp990112imu; Wed, 28 Nov 2018 02:55:09 -0800 (PST) X-Google-Smtp-Source: AFSGD/Uar1pWjmwccnPNGYS0wA+YYaEWjcwXeljbRJ5lhrZr/bh7xV/ZpBel6xQ7rb8jRfgsKmLk X-Received: by 2002:a65:63d3:: with SMTP id n19mr33236608pgv.179.1543402509821; Wed, 28 Nov 2018 02:55:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543402509; cv=none; d=google.com; s=arc-20160816; b=JCT/whr4XljhGdp8Te1U2WTdmaDdtBEvmacIZ9rULAZxSl6BLaIzog2G6x2DU6uC5p 7laBFVc/hyDdXRPcm0an6hURUEK/BGlMArEW8MvHGZgEhWVpKtIDpj/2HBa2lNUAIBTM 7aEhJ1/FksXOAe+LX7uVYPgootBU9P0GSg1P12VhlWd29juzkHMkKQ9n4DEkWPyKe/Sh /9i0FNpvmOZaYSmhZxQBTXRxYawaTssfJLoirscmKXypQ0bdS0EYmcHpdRZ5hKffswRZ zra16TnU9wilrazUR6LUpVJO5SnLr/aAU6zGZHv86DziGa1t3tHVWT7YTZaFeeGg1TW4 5Stw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from; bh=V3dm5/DyHAN/R3Dp1zuj6rVHQH/XwbJeu0NQZQLDtOI=; b=ZOjXxe8rAYYXekmJKqJ7u7VeLZeY8yGkc1SLicN3M8k6Bba9HVGXYpz0YNiJ2J8z3E Bu7ZNWd8Moeox/ui9s+vN+j92YfKNIzttVsgTIKxnzsSKP1xOP4UcfK8Ubv2c5LZLXFe JWDSqQzhIm/LvF92tZE3oSWe2zsm8oZ3V12V0jq4vkVheyESpcQQNp9oVtz1ykbxPqq2 n7dAgezJQvtHHxGNwdnmYQ6nIcd1KhQmK5nPDUmS2A4V4Waor2SJhicrUScb9T1TOZyw AaW2f33ZhpcRNGSeSy5P8lr2BmedYf6t0wyKwovEwlwMxs2haRDfCRd33Yb9ZqT7v4oM gAIg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x3si2374631plv.413.2018.11.28.02.54.52; Wed, 28 Nov 2018 02:55:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727823AbeK1Vm3 (ORCPT + 99 others); Wed, 28 Nov 2018 16:42:29 -0500 Received: from skedge04.snt-world.com ([91.208.41.69]:47104 "EHLO skedge04.snt-world.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727662AbeK1Vm3 (ORCPT ); Wed, 28 Nov 2018 16:42:29 -0500 Received: from sntmail12r.snt-is.com (unknown [10.203.32.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by skedge04.snt-world.com (Postfix) with ESMTPS id 919AC67A7B0; Wed, 28 Nov 2018 11:41:12 +0100 (CET) Received: from sntmail12r.snt-is.com (10.203.32.182) by sntmail12r.snt-is.com (10.203.32.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1466.3; Wed, 28 Nov 2018 11:41:12 +0100 Received: from sntmail12r.snt-is.com ([fe80::e551:8750:7bba:3305]) by sntmail12r.snt-is.com ([fe80::e551:8750:7bba:3305%5]) with mapi id 15.01.1466.003; Wed, 28 Nov 2018 11:41:12 +0100 From: Schrempf Frieder To: =?utf-8?B?Q2zDqW1lbnQgUMOpcm9u?= CC: Boris Brezillon , Miquel Raynal , "richard@nod.at" , "David Woodhouse" , Brian Norris , =?utf-8?B?TWFyZWsgVmHFoXV0?= , "linux-kernel@vger.kernel.org" , "linux-mtd@lists.infradead.org" Subject: Re: [PATCH] mtd: nand: spi: Add initial support for Toshiba TC58CVG2S0H Thread-Topic: [PATCH] mtd: nand: spi: Add initial support for Toshiba TC58CVG2S0H Thread-Index: AQHUdz2L3HigzaAOUUKXPQ4ku2nhHqVjxsKAgAAC1ACAABdiAIAABbCAgAEn2oA= Date: Wed, 28 Nov 2018 10:41:12 +0000 Message-ID: <233c55f8-f12e-daf9-ee94-2d9dbb434dd1@kontron.de> References: <1541665796-21092-1-git-send-email-frieder.schrempf@kontron.de> <0fc1f198-0e87-01af-5a0e-3d21613c39f3@kontron.de> <1655b66f-37e2-427f-a047-8305f86fc22c@kontron.de> In-Reply-To: Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.25.9.43] x-c2processedorg: 51b406b7-48a2-4d03-b652-521f56ac89f3 Content-Type: text/plain; charset="utf-8" Content-ID: <74791FA4F37EF849AAFDF9C91183B769@snt-world.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-SnT-MailScanner-Information: Please contact the ISP for more information X-SnT-MailScanner-ID: 919AC67A7B0.A0440 X-SnT-MailScanner: Found to be clean X-SnT-MailScanner-SpamCheck: X-SnT-MailScanner-From: frieder.schrempf@kontron.de X-SnT-MailScanner-To: boris.brezillon@bootlin.com, computersforpeace@gmail.com, dwmw2@infradead.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, marek.vasut@gmail.com, miquel.raynal@bootlin.com, peron.clem@gmail.com, richard@nod.at X-Spam-Status: No Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQ2zDqW1lbnQsDQoNCk9uIDI3LjExLjE4IDE4OjAyLCBDbMOpbWVudCBQw6lyb24gd3JvdGU6 DQo+IEhpIEZyaWVkZXIsDQo+IA0KPiBPbiBUdWUsIDI3IE5vdiAyMDE4IGF0IDE3OjQyLCBTY2hy ZW1wZiBGcmllZGVyDQo+IDxmcmllZGVyLnNjaHJlbXBmQGtvbnRyb24uZGU+IHdyb3RlOg0KPj4N Cj4+IEhpIENsw6ltZW50LA0KPj4NCj4+IE9uIDI3LjExLjE4IDE2OjE4LCBDbMOpbWVudCBQw6ly b24gd3JvdGU6DQo+Pj4gSGkgRnJpZWRlciwNCj4+Pg0KPj4+IE9uIFR1ZSwgMjcgTm92IDIwMTgg YXQgMTY6MDgsIFNjaHJlbXBmIEZyaWVkZXINCj4+PiA8ZnJpZWRlci5zY2hyZW1wZkBrb250cm9u LmRlPiB3cm90ZToNCj4+Pj4NCj4+Pj4gK0Nsw6ltZW50IFDDqXJvbg0KPj4+Pg0KPj4+PiBIaSBD bMOpbWVudCwNCj4+Pj4NCj4+Pj4gRllJLCB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gbWVyZ2VkIHRv IG5hbmQvbmV4dC4NCj4+PiBKdXN0IHdhbnQgdG8gcG9pbnQgdGhlIGRpZmZlcmVuY2UgdGhhdCBJ IG1hZGUgd2hlbiBJIHRyeSB0byBpbnRyb2R1Y2UgbXkgZHJpdmVyLg0KPj4+IFRoZSBkYXRhc2hl ZXQgSSB1c2VkIGlzIHRoaXMgb25lIDoNCj4+PiBodHRwczovL21lZGlhLmRpZ2lrZXkuY29tL3Bk Zi9EYXRhJTIwU2hlZXRzL1Rvc2hpYmElMjBQREZzL1RDNThDVkcyUzBIeEFJeF9SZXYxLjFfMjAx Ni0xMS0wOC5wZGYNCj4+Pg0KPj4+Pg0KPj4+PiBSZWdhcmRzLA0KPj4+PiBGcmllZGVyDQo+Pj4+ DQo+Pj4+IE9uIDA4LjExLjE4IDA5OjI5LCBGcmllZGVyIFNjaHJlbXBmIHdyb3RlOg0KPj4+Pj4g QWRkIG1pbmltYWwgc3VwcG9ydCBmb3IgdGhlIFRvc2hpYmEgVEM1OENWRzJTMEggU1BJIE5BTkQg Y2hpcC4NCj4+Pj4+DQo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBGcmllZGVyIFNjaHJlbXBmIDxmcmll ZGVyLnNjaHJlbXBmQGtvbnRyb24uZGU+DQo+Pj4+PiAtLS0NCj4+Pj4+ICAgICBkcml2ZXJzL210 ZC9uYW5kL3NwaS9NYWtlZmlsZSAgfCAgIDIgKy0NCj4+Pj4+ICAgICBkcml2ZXJzL210ZC9uYW5k L3NwaS9jb3JlLmMgICAgfCAgIDEgKw0KPj4+Pj4gICAgIGRyaXZlcnMvbXRkL25hbmQvc3BpL3Rv c2hpYmEuYyB8IDEzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+Pj4+ ICAgICBpbmNsdWRlL2xpbnV4L210ZC9zcGluYW5kLmggICAgfCAgIDEgKw0KPj4+Pj4gICAgIDQg ZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4+Pj4+DQo+ Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9zcGkvTWFrZWZpbGUgYi9kcml2ZXJz L210ZC9uYW5kL3NwaS9NYWtlZmlsZQ0KPj4+Pj4gaW5kZXggYjc0ZTA3NC4uYmU1ZjczNSAxMDA2 NDQNCj4+Pj4+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvc3BpL01ha2VmaWxlDQo+Pj4+PiArKysg Yi9kcml2ZXJzL210ZC9uYW5kL3NwaS9NYWtlZmlsZQ0KPj4+Pj4gQEAgLTEsMyArMSwzIEBADQo+ Pj4+PiAgICAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4+Pj4gLXNwaW5h bmQtb2JqcyA6PSBjb3JlLm8gbWFjcm9uaXgubyBtaWNyb24ubyB3aW5ib25kLm8NCj4+Pj4+ICtz cGluYW5kLW9ianMgOj0gY29yZS5vIG1hY3Jvbml4Lm8gbWljcm9uLm8gdG9zaGliYS5vIHdpbmJv bmQubw0KPj4+Pj4gICAgIG9iai0kKENPTkZJR19NVERfU1BJX05BTkQpICs9IHNwaW5hbmQubw0K Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvc3BpL2NvcmUuYyBiL2RyaXZlcnMv bXRkL25hbmQvc3BpL2NvcmUuYw0KPj4+Pj4gaW5kZXggMzBmODM2NC4uODdiZGYyYSAxMDA2NDQN Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvc3BpL2NvcmUuYw0KPj4+Pj4gKysrIGIvZHJp dmVycy9tdGQvbmFuZC9zcGkvY29yZS5jDQo+Pj4+PiBAQCAtNzY2LDYgKzc2Niw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgbmFuZF9vcHMgc3BpbmFuZF9vcHMgPSB7DQo+Pj4+PiAgICAgc3RhdGlj IGNvbnN0IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciAqc3BpbmFuZF9tYW51ZmFjdHVyZXJz W109IHsNCj4+Pj4+ICAgICAgICAgJm1hY3Jvbml4X3NwaW5hbmRfbWFudWZhY3R1cmVyLA0KPj4+ Pj4gICAgICAgICAmbWljcm9uX3NwaW5hbmRfbWFudWZhY3R1cmVyLA0KPj4+Pj4gKyAgICAgJnRv c2hpYmFfc3BpbmFuZF9tYW51ZmFjdHVyZXIsDQo+Pj4+PiAgICAgICAgICZ3aW5ib25kX3NwaW5h bmRfbWFudWZhY3R1cmVyLA0KPj4+Pj4gICAgIH07DQo+Pj4+Pg0KPj4+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbXRkL25hbmQvc3BpL3Rvc2hpYmEuYyBiL2RyaXZlcnMvbXRkL25hbmQvc3BpL3Rv c2hpYmEuYw0KPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4+IGluZGV4IDAwMDAwMDAu LjI5NGJjZjYNCj4+Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4+ICsrKyBiL2RyaXZlcnMvbXRkL25h bmQvc3BpL3Rvc2hpYmEuYw0KPj4+Pj4gQEAgLTAsMCArMSwxMzYgQEANCj4+Pj4+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4+Pj4gKy8qDQo+Pj4+PiArICogQ29weXJp Z2h0IChjKSAyMDE4IGV4Y2VldCBlbGVjdHJvbmljcyBHbWJIDQo+Pj4+PiArICogQ29weXJpZ2h0 IChjKSAyMDE4IEtvbnRyb24gRWxlY3Ryb25pY3MgR21iSA0KPj4+Pj4gKyAqDQo+Pj4+PiArICog QXV0aG9yOiBGcmllZGVyIFNjaHJlbXBmIDxmcmllZGVyLnNjaHJlbXBmQGtvbnRyb24uZGU+DQo+ Pj4+PiArICovDQo+Pj4+PiArDQo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPj4+ Pj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvbXRk L3NwaW5hbmQuaD4NCj4+Pj4+ICsNCj4+Pj4+ICsjZGVmaW5lIFNQSU5BTkRfTUZSX1RPU0hJQkEg ICAgICAgICAgMHg5OA0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBTUElOQU5EX09QX1ZBUklBTlRT KHJlYWRfY2FjaGVfdmFyaWFudHMsDQo+Pj4+PiArICAgICAgICAgICAgIFNQSU5BTkRfUEFHRV9S RUFEX0ZST01fQ0FDSEVfWDRfT1AoMCwgMSwgTlVMTCwgMCksDQo+Pj4+PiArICAgICAgICAgICAg IFNQSU5BTkRfUEFHRV9SRUFEX0ZST01fQ0FDSEVfWDJfT1AoMCwgMSwgTlVMTCwgMCksDQo+Pj4+ PiArICAgICAgICAgICAgIFNQSU5BTkRfUEFHRV9SRUFEX0ZST01fQ0FDSEVfT1AodHJ1ZSwgMCwg MSwgTlVMTCwgMCksDQo+Pj4+PiArICAgICAgICAgICAgIFNQSU5BTkRfUEFHRV9SRUFEX0ZST01f Q0FDSEVfT1AoZmFsc2UsIDAsIDEsIE5VTEwsIDApKTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMg U1BJTkFORF9PUF9WQVJJQU5UUyh3cml0ZV9jYWNoZV92YXJpYW50cywNCj4+Pj4+ICsgICAgICAg ICAgICAgU1BJTkFORF9QUk9HX0xPQUQodHJ1ZSwgMCwgTlVMTCwgMCkpOw0KPj4+Pj4gKw0KPj4+ Pj4gK3N0YXRpYyBTUElOQU5EX09QX1ZBUklBTlRTKHVwZGF0ZV9jYWNoZV92YXJpYW50cywNCj4+ Pj4+ICsgICAgICAgICAgICAgU1BJTkFORF9QUk9HX0xPQUQoZmFsc2UsIDAsIE5VTEwsIDApKTsN Cj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW50IHRjNThjdmcyczBoX29vYmxheW91dF9lY2Moc3Ry dWN0IG10ZF9pbmZvICptdGQsIGludCBzZWN0aW9uLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRkX29vYl9yZWdpb24gKnJlZ2lvbikNCj4+Pj4+ICt7 DQo+Pj4+PiArICAgICBpZiAoc2VjdGlvbiA+IDcpDQo+Pj4+PiArICAgICAgICAgICAgIHJldHVy biAtRVJBTkdFOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmVnaW9uLT5vZmZzZXQgPSAxMjggKyAx NiAqIHNlY3Rpb247DQo+Pj4+PiArICAgICByZWdpb24tPmxlbmd0aCA9IDE2Ow0KPj4+DQo+Pj4g SGVyZSB5b3UgZXhwb3NlIHRoZSBFQ0MgYml0cyBoYXMgOCBzZWN0aW9ucyBvZiAxNiBieXRlcy4N Cj4+PiBCdXQgcmVnYXJkaW5nIHRoZSBkYXRhc2hlZXQgdGhpcyBzaG91bGQgbm90IGJlIGFjY2Vz c2VkIHBhZ2UgMzIuDQo+Pj4gIlRoZSBFQ0MgcGFyaXR5IGNvZGUgZ2VuZXJhdGVkIGJ5IGludGVy bmFsIEVDQyBpcyBzdG9yZWQgaW4gY29sdW1uDQo+Pj4gYWRkcmVzc2VzIDQyMjQtNDM1MSBhbmQg dGhlIHVzZXJzIGNhbm5vdCBhY2Nlc3MgdG8gdGhlc2Ugc3BlY2lmaWMNCj4+PiBhZGRyZXNzZXMg d2hlbiBpbnRlcm5hbCBFQ0MgaXMgZW5hYmxlZC4iDQo+Pg0KPj4gVGhpcyBpcyBqdXN0IHRvIGxl dCB0aGUgb3RoZXIgbGF5ZXJzIGtub3csIHdoZXJlIHRoZSBieXRlcyB1c2VkIGZvciBFQ0MNCj4+ IGFyZS4gQXMgbG9uZyBhcyB0aGUgZHJpdmVyIHVzZXMgdGhlIG9uLWNoaXAgRUNDIGl0IHdvbid0 IHdyaXRlIHRvIHRoaXMNCj4+IGFyZWEuIFNvIHRoaXMgaXMgY29ycmVjdCB1bmxlc3MgSSBtaXN1 bmRlcnN0b29kIHRoaXMgY29uY2VwdC4gQWxsIHRoZQ0KPj4gb3RoZXIgc3VwcG9ydGVkIFNQSSBO QU5EIGNoaXBzIHVzZSB0aGUgc2FtZSBhcHByb2FjaC4NCj4gDQo+IE9rIGZvciBub3Qgd3JpdGUs IGJ1dCBhcmUgeW91IHN1cmUgdGhhdCBpZiB3ZSB0cnkgdG8gcmVhZCB0aGVtIHRoZSBTUEkNCj4g d2lsbCByZXNwb25kIHNvbWV0aGluZyBsb2dpYyBhbmQgbm90IHNvbWUgZ2FyYmFnZSA/DQo+IFdo ZW4gSSByZWFkIHRoZSBkYXRhc2hlZXQgaXQgbG9va3MgbGlrZSB0aGF0IHRoZSByZWFkIGNtZCB3 aWxsIHN0b3Agb3INCj4gc2VuZCBzb21lIHJhbmRvbSB2YWx1ZSB3aGVuIHRyeWluZyB0byByZWFk IHRoZXNlIGNvbHVtbnMuDQoNCk1heWJlIHlvdSBhcmUgcmlnaHQuIFRoZSBkYXRhc2hlZXQgc2F5 cyB3ZSBzaG91bGRuJ3QgKmFjY2VzcyogRUNDIGJ5dGVzLCANCndoaWNoIGluY2x1ZGVzIHJlYWQg YW5kIHdyaXRlLg0KSSBndWVzcyBpdCB3b24ndCBodXJ0IHRvIGJsb2NrIGFjY2VzcyB0byB0aGUg RUNDIGJ5dGVzIGFzIHRoZXkgYXJlIA0KY3VycmVudGx5IG9mIG5vIHVzZSBhbnl3YXkgYW5kIEkg anVzdCBzYXcgdGhhdCB0aGUgTWFjcm9uaXggZHJpdmVyIGlzIA0KZG9pbmcgdGhlIHNhbWUuDQoN Cj4+Pj4+ICsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHJldHVybiAwOw0KPj4+Pj4gK30NCj4+Pj4+ ICsNCj4+Pj4+ICtzdGF0aWMgaW50IHRjNThjdmcyczBoX29vYmxheW91dF9mcmVlKHN0cnVjdCBt dGRfaW5mbyAqbXRkLCBpbnQgc2VjdGlvbiwNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBtdGRfb29iX3JlZ2lvbiAqcmVnaW9uKQ0KPj4+Pj4gK3sNCj4+ Pj4+ICsgICAgIGlmIChzZWN0aW9uID4gNykNCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1F UkFOR0U7DQo+Pj4+PiArDQo+Pj4+PiArICAgICByZWdpb24tPm9mZnNldCA9IDIgKyAxNiAqIHNl Y3Rpb247DQo+Pj4+PiArICAgICByZWdpb24tPmxlbmd0aCA9IDE0Ow0KPj4+DQo+Pj4gVGhpcyBy ZXNlcnZlZCAyIGJ5dGVzIGZvciBCQk0gZm9yIGVhY2ggc2VjdGlvbi4NCj4+PiBCdXQgbWF5YmUg d2UgY291bGQgZGVjbGFyZSB0aGlzIGFzIDEgc2VjdGlvbiBvZiAxMjhieXRlczoNCj4+Pg0KPj4+ IGlmIChzZWN0aW9uKQ0KPj4+ICAgICAgICAgICAgcmV0dXJuIC1FUkFOR0U7DQo+Pj4NCj4+PiBy ZWdpb24tPm9mZnNldCA9IDI7DQo+Pj4gcmVnaW9uLT5sZW5ndGggPSAxMjY7DQo+Pg0KPj4gVGhl IGRhdGFzaGVldCAocC4gMzIpIGRlc2NyaWJlcyB0aGF0IHRoZSBPT0IgZGF0YSBvZiBhIHBhZ2Ug aXMgZGl2aWRlZA0KPj4gaW50byA4IHNlY3Rpb25zLiBTbyB3aHkgc2hvdWxkIHdlIG5vdCByZWZs ZWN0IHRoaXMgaW4gdGhlIHNvZnR3YXJlPw0KPj4gUHJvYmFibHkgaXQgd291bGQgYmUgc3VmZmlj aWVudCB0byByZXNlcnZlIHR3byBieXRlcyBmb3IgdGhlIGJhZCBibG9jaw0KPj4gbWFya2VyIGF0 IHRoZSBiZWdpbm5pbmcsIGluc3RlYWQgb2YgdHdvIGJ5dGVzIGluIGVhY2ggc2VjdGlvbi4gQnV0 IEknbQ0KPj4gbm90IHN1cmUgYWJvdXQgdGhpcyBhbmQgaXQgZG9lc24ndCByZWFsbHkgaHVydC4N Cj4gDQo+IElmIHRoZSBPT0IgYXJlIHVzZWQgb25lIGRheSAoSSB0aGluayBpdCdzIG5vdCB0aGUg Y2FzZSBhY3R1YWxseSksIEl0DQo+IHdpbGwgYmUgbW9yZSBlZmZpY2llbnQgdG8gZG8gb25seSBv bmUgcmVxdWVzdC4NCg0KT2ssIGFuZCBldmVuIG1vcmUgc28gd2UgYWxyZWFkeSBoYXZlIGEgZGVm YXVsdCBPT0IgbGF5b3V0IGluIHRoZSBjb3JlIA0KZHJpdmVyLCB0aGF0IGNvdWxkIGJlIHJldXNl ZCBmb3IgdGhpcyBjYXNlIGFuZCBhbHNvIGluIG90aGVyIFNQSSBOQU5EIA0KZHJpdmVycy4gU28g d2UgY291bGQgYWN0dWFsbHkgZ2V0IHJpZCBvZiBhIGZldyBsaW5lcyBvZiBjb2RlLg0KDQpUaGFu a3MsDQpGcmllZGVyDQoNCj4+Pj4+ICsNCj4+Pj4+DQo+Pj4+PiArICAgICByZXR1cm4gMDsNCj4+ Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBtdGRfb29ibGF5b3V0 X29wcyB0YzU4Y3ZnMnMwaF9vb2JsYXlvdXQgPSB7DQo+Pj4+PiArICAgICAuZWNjID0gdGM1OGN2 ZzJzMGhfb29ibGF5b3V0X2VjYywNCj4+Pj4+ICsgICAgIC5mcmVlID0gdGM1OGN2ZzJzMGhfb29i bGF5b3V0X2ZyZWUsDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW50IHRjNThj dmcyczBoX2VjY19nZXRfc3RhdHVzKHN0cnVjdCBzcGluYW5kX2RldmljZSAqc3BpbmFuZCwNCj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4IHN0YXR1cykNCj4+Pj4+ ICt7DQo+Pj4+PiArICAgICBzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQgPSBzcGluYW5kX3RvX25h bmQoc3BpbmFuZCk7DQo+Pj4+PiArICAgICB1OCBtYmYgPSAwOw0KPj4+Pj4gKyAgICAgc3RydWN0 IHNwaV9tZW1fb3Agb3AgPSBTUElOQU5EX0dFVF9GRUFUVVJFX09QKDB4MzAsICZtYmYpOw0KPj4+ Pj4gKw0KPj4+Pj4gKyAgICAgc3dpdGNoIChzdGF0dXMgJiBTVEFUVVNfRUNDX01BU0spIHsNCj4+ Pj4+ICsgICAgIGNhc2UgU1RBVFVTX0VDQ19OT19CSVRGTElQUzoNCj4+Pj4+ICsgICAgICAgICAg ICAgcmV0dXJuIDA7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBjYXNlIFNUQVRVU19FQ0NfVU5DT1Jf RVJST1I6DQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAtRUJBRE1TRzsNCj4+Pj4+ICsNCj4+ Pj4+ICsgICAgIGNhc2UgU1RBVFVTX0VDQ19IQVNfQklURkxJUFM6DQo+Pj4+PiArICAgICAgICAg ICAgIC8qDQo+Pj4+PiArICAgICAgICAgICAgICAqIExldCdzIHRyeSB0byByZXRyaWV2ZSB0aGUg cmVhbCBtYXhpbXVtIG51bWJlciBvZiBiaXRmbGlwcw0KPj4+Pj4gKyAgICAgICAgICAgICAgKiBp biBvcmRlciB0byBhdm9pZCBmb3JjaW5nIHRoZSB3ZWFyLWxldmVsaW5nIGxheWVyIHRvbW92ZQ0K Pj4+Pj4gKyAgICAgICAgICAgICAgKiBkYXRhIGFyb3VuZCBpZiBpdCdzIG5vdCBuZWNlc3Nhcnku DQo+Pj4+PiArICAgICAgICAgICAgICAqLw0KPj4+Pj4gKyAgICAgICAgICAgICBpZiAoc3BpX21l bV9leGVjX29wKHNwaW5hbmQtPnNwaW1lbSwgJm9wKSkNCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gbmFuZC0+ZWNjcmVxLnN0cmVuZ3RoOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAg ICAgICAgICBtYmYgPj49IDQ7DQo+Pj4+PiArDQo+Pj4+PiArICAgICAgICAgICAgIGlmIChXQVJO X09OKG1iZiA+IG5hbmQtPmVjY3JlcS5zdHJlbmd0aCB8fCAhbWJmKSkNCj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gbmFuZC0+ZWNjcmVxLnN0cmVuZ3RoOw0KPj4+Pj4gKw0KPj4+ Pj4gKyAgICAgICAgICAgICByZXR1cm4gbWJmOw0KPj4+Pj4gKw0KPj4+DQo+Pj4gVGhlc2UgdGFr ZSB0YWtlIGNhcmUgb2YgMCwgMHgxIGFuZCAweDIgYnV0IG5vdCAweDMgd2hpY2ggaXMgdmFsaWQN Cj4+DQo+PiBIbSwgeW91J3JlIHJpZ2h0LiBXZSBkb24ndCBjYXJlIGlmIGl0IGlzIDB4MSBvciAw eDMgKGJvdGggbWVhbiB0aGF0DQo+PiBiaXRmbGlwcyB3ZXJlIGNvcnJlY3RlZCksIGJ1dCB3ZSBj dXJyZW50bHkgb25seSBjaGVjayBmb3IgMHgxLg0KPj4NCj4+IEkgd2lsbCBzZW5kIGEgZml4IGZv ciB0aGlzIHRvbW9ycm93Lg0KPj4NCj4+IFRoYW5rcywNCj4+IEZyaWVkZXINCj4+DQo+Pj4gcGFn ZSAyNiBvZiB0aGUgZGF0YXNoZWV0IDoNCj4+Pg0KPj4+IEVDQyBzdGF0dXMgYml0cyBpbmRpY2F0 ZSB0aGUgc3RhdHVzIG9mIGludGVybmFsIEVDQyBvcGVyYXRpb24NCj4+PiAwMGI6IE5vIGJpdCBm bGlwcyB3ZXJlIGRldGVjdGVkIGluIHByZXZpb3VzIHBhZ2UgcmVhZC4NCj4+PiAwMWI6IEJpdCBm bGlwcyB3ZXJlIGRldGVjdGVkIGFuZCBjb3JyZWN0ZWQuIEJpdCBmbGlwIGNvdW50IGRpZCBub3QN Cj4+PiBleGNlZWQgdGhlIGJpdCBmbGlwIGRldGVjdGlvbiB0aHJlc2hvbGQuIFRoZSB0aHJlc2hv bGQgaXMgc2V0IGJ5IGJpdHMNCj4+PiBbNzo0XSBpbiBhZGRyZXNzIDEwaCBpbiB0aGUgZmVhdHVy ZSB0YWJsZS4NCj4+PiAxMGI6IE11bHRpcGxlIGJpdCBmbGlwcyB3ZXJlIGRldGVjdGVkIGFuZCBu b3QgY29ycmVjdGVkLg0KPj4+IDExYjogQml0IGZsaXBzIHdlcmUgZGV0ZWN0ZWQgYW5kIGNvcnJl Y3RlZC4gQml0IGZsaXAgY291bnQgZXhjZWVkZWQNCj4+PiB0aGUgYml0IGZsaXAgZGV0ZWN0aW9u IHRocmVzaG9sZC4gVGhlIHRocmVzaG9sZCBpcyBzZXQgYnkgYml0cyBbNzo0XQ0KPj4+IGluIGFk ZHJlc3MgMTBoIGluIHRoZSBmZWF0dXJlIHRhYmxlDQo+Pj4NCj4+PiBSZWdhcmRzLA0KPj4+IENs ZW1lbnQNCj4+Pg0KPj4+Pj4gKyAgICAgZGVmYXVsdDoNCj4+Pj4+ICsgICAgICAgICAgICAgYnJl YWs7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiArDQo+Pj4+PiArICAgICByZXR1cm4gLUVJTlZBTDsN Cj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzcGluYW5kX2lu Zm8gdG9zaGliYV9zcGluYW5kX3RhYmxlW10gPSB7DQo+Pj4+PiArICAgICBTUElOQU5EX0lORk8o IlRDNThDVkcyUzBIIiwgMHhDRCwNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICBOQU5EX01FTU9S RygxLCA0MDk2LCAyNTYsIDY0LCAyMDQ4LCAxLCAxLCAxKSwNCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICBOQU5EX0VDQ1JFUSg4LCA1MTIpLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgIFNQSU5B TkRfSU5GT19PUF9WQVJJQU5UUygmcmVhZF9jYWNoZV92YXJpYW50cywNCj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlX2NhY2hlX3ZhcmlhbnRz LA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXBk YXRlX2NhY2hlX3ZhcmlhbnRzKSwNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICBTUElOQU5EX0hB U19RRV9CSVQsDQo+Pj4+PiArICAgICAgICAgICAgICAgICAgU1BJTkFORF9FQ0NJTkZPKCZ0YzU4 Y3ZnMnMwaF9vb2JsYXlvdXQsDQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRjNThjdmcyczBoX2VjY19nZXRfc3RhdHVzKSksDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+ Pj4+ICtzdGF0aWMgaW50IHRvc2hpYmFfc3BpbmFuZF9kZXRlY3Qoc3RydWN0IHNwaW5hbmRfZGV2 aWNlICpzcGluYW5kKQ0KPj4+Pj4gK3sNCj4+Pj4+ICsgICAgIHU4ICppZCA9IHNwaW5hbmQtPmlk LmRhdGE7DQo+Pj4+PiArICAgICBpbnQgcmV0Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgLyoNCj4+ Pj4+ICsgICAgICAqIFRvc2hpYmEgU1BJIE5BTkQgcmVhZCBJRCBuZWVkcyBhIGR1bW15IGJ5dGUs DQo+Pj4+PiArICAgICAgKiBzbyB0aGUgZmlyc3QgYnl0ZSBpbiBpZCBpcyBnYXJiYWdlLg0KPj4+ Pj4gKyAgICAgICovDQo+Pj4+PiArICAgICBpZiAoaWRbMV0gIT0gU1BJTkFORF9NRlJfVE9TSElC QSkNCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBy ZXQgPSBzcGluYW5kX21hdGNoX2FuZF9pbml0KHNwaW5hbmQsIHRvc2hpYmFfc3BpbmFuZF90YWJs ZSwNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJSQVlfU0laRSh0 b3NoaWJhX3NwaW5hbmRfdGFibGUpLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZFsyXSk7DQo+Pj4+PiArICAgICBpZiAocmV0KQ0KPj4+Pj4gKyAgICAgICAgICAg ICByZXR1cm4gcmV0Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0dXJuIDE7DQo+Pj4+PiArfQ0K Pj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXJf b3BzIHRvc2hpYmFfc3BpbmFuZF9tYW51Zl9vcHMgPSB7DQo+Pj4+PiArICAgICAuZGV0ZWN0ID0g dG9zaGliYV9zcGluYW5kX2RldGVjdCwNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK2NvbnN0 IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciB0b3NoaWJhX3NwaW5hbmRfbWFudWZhY3R1cmVy ID0gew0KPj4+Pj4gKyAgICAgLmlkID0gU1BJTkFORF9NRlJfVE9TSElCQSwNCj4+Pj4+ICsgICAg IC5uYW1lID0gIlRvc2hpYmEiLA0KPj4+Pj4gKyAgICAgLm9wcyA9ICZ0b3NoaWJhX3NwaW5hbmRf bWFudWZfb3BzLA0KPj4+Pj4gK307DQo+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9t dGQvc3BpbmFuZC5oIGIvaW5jbHVkZS9saW51eC9tdGQvc3BpbmFuZC5oDQo+Pj4+PiBpbmRleCAw ODhmZjk2Li44MTZjNGIwIDEwMDY0NA0KPj4+Pj4gLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvc3Bp bmFuZC5oDQo+Pj4+PiArKysgYi9pbmNsdWRlL2xpbnV4L210ZC9zcGluYW5kLmgNCj4+Pj4+IEBA IC0xOTYsNiArMTk2LDcgQEAgc3RydWN0IHNwaW5hbmRfbWFudWZhY3R1cmVyIHsNCj4+Pj4+ICAg ICAvKiBTUEkgTkFORCBtYW51ZmFjdHVyZXJzICovDQo+Pj4+PiAgICAgZXh0ZXJuIGNvbnN0IHN0 cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciBtYWNyb25peF9zcGluYW5kX21hbnVmYWN0dXJlcjsN Cj4+Pj4+ICAgICBleHRlcm4gY29uc3Qgc3RydWN0IHNwaW5hbmRfbWFudWZhY3R1cmVyIG1pY3Jv bl9zcGluYW5kX21hbnVmYWN0dXJlcjsNCj4+Pj4+ICtleHRlcm4gY29uc3Qgc3RydWN0IHNwaW5h bmRfbWFudWZhY3R1cmVyIHRvc2hpYmFfc3BpbmFuZF9tYW51ZmFjdHVyZXI7DQo+Pj4+PiAgICAg ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciB3aW5ib25kX3NwaW5hbmRf bWFudWZhY3R1cmVyOw0KPj4+Pj4NCj4+Pj4+ICAgICAvKioNCj4+Pj4+