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 00BD3C3ABCB for ; Mon, 12 May 2025 22:42:20 +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=jE8gopALVKDcpNLiMtdX0G7t8HIEHL8b+SBjcCanEuc=; b=aO7CQ97EareDDo xUlGQZDJajZTVBdB5aaaSbIgFk5uWAzlqUZygsOjzXKFFXDpMsPDRFNzlCqC3MY4Dz7aAla3p7Z99 gkocnZ2s74FtQS+YSegjAdhZ+6ra0DlWqkETIx48Ui0XVsVJJ51Y8hVcnCCVZZj8Psia4e1+MNlYd XwFlY0ylVq/PQGhLptae3rrGAaI8RjW6ppdubzeiSu6DH6XoXDphLJW5fCBfvcPtoT0Nj1fp4Ggk1 fKpOlMFqbTJGz+KPuuXViswyNteSajjcVuo/sTnVTnv/y88vdKR5VLJq6oWy5PVlLBcDqFXZVkMqG iENySIv440ctmUwo3xgg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uEbqd-0000000ArTo-1BG5; Mon, 12 May 2025 22:42:11 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uEboZ-0000000ArGn-3Cvf; Mon, 12 May 2025 22:40:05 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 773C9150C; Mon, 12 May 2025 15:39:47 -0700 (PDT) Received: from minigeek.lan (usa-sjc-mx-foss1.foss.arm.com [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F3FA73F63F; Mon, 12 May 2025 15:39:55 -0700 (PDT) Date: Mon, 12 May 2025 23:39:44 +0100 From: Andre Przywara To: Aleksandr Shubin Cc: linux-kernel@vger.kernel.org, Brandon Cheo Fusi , Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Philipp Zabel , linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-riscv@lists.infradead.org Subject: Re: [PATCH v12 2/3] pwm: Add Allwinner's D1/T113-S3/R329 SoCs PWM support Message-ID: <20250512233944.06bc1cb7@minigeek.lan> In-Reply-To: <20250427142500.151925-3-privatesub2@gmail.com> References: <20250427142500.151925-1-privatesub2@gmail.com> <20250427142500.151925-3-privatesub2@gmail.com> Organization: Arm Ltd. X-Mailer: Claws Mail 4.2.0 (GTK 3.24.31; x86_64-slackware-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250512_154003_902573_104E5763 X-CRM114-Status: GOOD ( 46.74 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gU3VuLCAyNyBBcHIgMjAyNSAxNzoyNDo1NCArMDMwMApBbGVrc2FuZHIgU2h1YmluIDxwcml2 YXRlc3ViMkBnbWFpbC5jb20+IHdyb3RlOgoKSGkgQWxla3NhbmRyLAoKdGhhbmtzIGZvciB5b3Vy IHBhdGllbmNlIGFuZCBwZXJzaXN0ZW5jZSB3aXRoIHRoaXMgc2VyaWVzISBJdCBzZWVtcwpsaWtl IHNvbWUgcGVvcGxlIGhhdmUgc29tZSBtb3RpdmF0aW9uIG5vdyBmb3IgZ2V0dGluZyBtYWlubGlu ZSwgc28KaG9wZWZ1bGx5IHdlIGNhbiB1c2UgdGhpcyBtb21lbnR1bSBub3cuIEFsc28gdGhlICJu ZXciIEFsbHdpbm5lciBBNTIzCnVzZXMgdGhlIHNhbWUgSVAgYXMgdGhlIEQxLCBqdXN0IHdpdGgg YWxsIDE2IGNoYW5uZWxzLiAKCj4gQWxsd2lubmVyJ3MgRDEsIFQxMTMtUzMgYW5kIFIzMjkgU29D cyBoYXZlIGEgcXVpdGUgZGlmZmVyZW50IFBXTQo+IGNvbnRyb2xsZXJzIHdpdGggb25lcyBzdXBw b3J0ZWQgYnkgcHdtLXN1bjRpIGRyaXZlci4KPiAKPiBUaGlzIHBhdGNoIGFkZHMgYSBQV00gY29u dHJvbGxlciBkcml2ZXIgZm9yIEFsbHdpbm5lcidzIEQxLAo+IFQxMTMtUzMgYW5kIFIzMjkgU29D cy4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIFNvQ3MKPiBpcyB0aGUgbnVtYmVy IG9mIGNoYW5uZWxzIGRlZmluZWQgYnkgdGhlIERUIHByb3BlcnR5Lgo+IAo+IENvLWRldmVsb3Bl ZC1ieTogQnJhbmRvbiBDaGVvIEZ1c2kgPGZ1c2licmFuZG9uMTNAZ21haWwuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IEJyYW5kb24gQ2hlbyBGdXNpIDxmdXNpYnJhbmRvbjEzQGdtYWlsLmNvbT4KPiBT aWduZWQtb2ZmLWJ5OiBBbGVrc2FuZHIgU2h1YmluIDxwcml2YXRlc3ViMkBnbWFpbC5jb20+Cj4g LS0tCj4gIGRyaXZlcnMvcHdtL0tjb25maWcgICAgICB8ICAxMCArKwo+ICBkcml2ZXJzL3B3bS9N YWtlZmlsZSAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL3B3bS9wd20tc3VuMjBpLmMgfCAzNzkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwg MzkwIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcHdtL3B3bS1z dW4yMGkuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9LY29uZmlnIGIvZHJpdmVycy9w d20vS2NvbmZpZwo+IGluZGV4IDQ3MzFkNWI5MGQ3ZS4uMjMwYTU1NjEzODViIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvcHdtL0tjb25maWcKPiArKysgYi9kcml2ZXJzL3B3bS9LY29uZmlnCj4gQEAg LTY2Miw2ICs2NjIsMTYgQEAgY29uZmlnIFBXTV9TVU40SQo+ICAJICBUbyBjb21waWxlIHRoaXMg ZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlCj4gIAkgIHdpbGwg YmUgY2FsbGVkIHB3bS1zdW40aS4KPiAgCj4gK2NvbmZpZyBQV01fU1VOMjBJCj4gKwl0cmlzdGF0 ZSAiQWxsd2lubmVyIEQxL1QxMTNzL1IzMjkgUFdNIHN1cHBvcnQiCj4gKwlkZXBlbmRzIG9uIEFS Q0hfU1VOWEkgfHwgQ09NUElMRV9URVNUCj4gKwlkZXBlbmRzIG9uIENPTU1PTl9DTEsKPiArCWhl bHAKPiArCSAgR2VuZXJpYyBQV00gZnJhbWV3b3JrIGRyaXZlciBmb3IgQWxsd2lubmVyIEQxL1Qx MTNzL1IzMjkgU29Dcy4KPiArCj4gKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1 bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKPiArCSAgd2lsbCBiZSBjYWxsZWQgcHdtLXN1 bjIwaS4KPiArCj4gIGNvbmZpZyBQV01fU1VOUExVUwo+ICAJdHJpc3RhdGUgIlN1bnBsdXMgUFdN IHN1cHBvcnQiCj4gIAlkZXBlbmRzIG9uIEFSQ0hfU1VOUExVUyB8fCBDT01QSUxFX1RFU1QKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vTWFrZWZpbGUgYi9kcml2ZXJzL3B3bS9NYWtlZmlsZQo+ IGluZGV4IDUzOWUwZGVmM2Y4Mi4uZWY3NTE1ZDJmOTc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv cHdtL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9wd20vTWFrZWZpbGUKPiBAQCAtNjEsNiArNjEs NyBAQCBvYmotJChDT05GSUdfUFdNX1NUTTMyKQkJKz0gcHdtLXN0bTMyLm8KPiAgb2JqLSQoQ09O RklHX1BXTV9TVE0zMl9MUCkJKz0gcHdtLXN0bTMyLWxwLm8KPiAgb2JqLSQoQ09ORklHX1BXTV9T VE1QRSkJCSs9IHB3bS1zdG1wZS5vCj4gIG9iai0kKENPTkZJR19QV01fU1VONEkpCQkrPSBwd20t c3VuNGkubwo+ICtvYmotJChDT05GSUdfUFdNX1NVTjIwSSkJKz0gcHdtLXN1bjIwaS5vCj4gIG9i ai0kKENPTkZJR19QV01fU1VOUExVUykJKz0gcHdtLXN1bnBsdXMubwo+ICBvYmotJChDT05GSUdf UFdNX1RFR1JBKQkJKz0gcHdtLXRlZ3JhLm8KPiAgb2JqLSQoQ09ORklHX1BXTV9USUVDQVApCSs9 IHB3bS10aWVjYXAubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9wd20tc3VuMjBpLmMgYi9k cml2ZXJzL3B3bS9wd20tc3VuMjBpLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAwMDAwMC4uMjI0ODY2MTdmMWVmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv cHdtL3B3bS1zdW4yMGkuYwo+IEBAIC0wLDAgKzEsMzc5IEBACj4gKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIFBXTSBDb250cm9sbGVyIERyaXZlciBmb3Ig c3VueGkgcGxhdGZvcm1zIChEMSwgVDExMy1TMyBhbmQgUjMyOSkKPiArICoKPiArICogTGltaXRh dGlvbnM6Cj4gKyAqIC0gV2hlbiB0aGUgcGFyYW1ldGVycyBjaGFuZ2UsIHRoZSBjdXJyZW50IHJ1 bm5pbmcgcGVyaW9kIGlzIG5vdCBjb21wbGV0ZWQKPiArICogICBhbmQgbmV3IHNldHRpbmdzIGFy ZSBhcHBsaWVkIGltbWVkaWF0ZWx5Lgo+ICsgKiAtIFRoZSBQV00gb3V0cHV0IGdvZXMgdG8gYSBI SUdILVogc3RhdGUgd2hlbiB0aGUgY2hhbm5lbCBpcyBkaXNhYmxlZC4KPiArICogLSBDaGFuZ2lu ZyB0aGUgY2xvY2sgY29uZmlndXJhdGlvbiAoU1VOMjBJX1BXTV9DTEtfQ0ZHKQo+ICsgKiAgIG1h eSBjYXVzZSBhIGJyaWVmIG91dHB1dCBnbGl0Y2guCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykg MjAyMyBBbGVrc2FuZHIgU2h1YmluIDxwcml2YXRlc3ViMkBnbWFpbC5jb20+Cj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4K PiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcHdtLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgo+ICsKPiArI2RlZmluZSBTVU4yMElfUFdNX0NMS19D RkcocGFpcikJCSgweDIwICsgKChwYWlyKSAqIDB4NCkpCj4gKyNkZWZpbmUgU1VOMjBJX1BXTV9D TEtfQ0ZHX1NSQwkJCUdFTk1BU0soOCwgNykKPiArI2RlZmluZSBTVU4yMElfUFdNX0NMS19DRkdf RElWX00JCUdFTk1BU0soMywgMCkKPiArI2RlZmluZSBTVU4yMElfUFdNX0NMS19ESVZfTV9NQVgJ CTgKPiArCj4gKyNkZWZpbmUgU1VOMjBJX1BXTV9DTEtfR0FURQkJCTB4NDAKPiArI2RlZmluZSBT VU4yMElfUFdNX0NMS19HQVRFX0JZUEFTUyhjaGFuKQlCSVQoKGNoYW4pICsgMTYpCj4gKyNkZWZp bmUgU1VOMjBJX1BXTV9DTEtfR0FURV9HQVRJTkcoY2hhbikJQklUKGNoYW4pCj4gKwo+ICsjZGVm aW5lIFNVTjIwSV9QV01fRU5BQkxFCQkJMHg4MAo+ICsjZGVmaW5lIFNVTjIwSV9QV01fRU5BQkxF X0VOKGNoYW4pCQlCSVQoY2hhbikKPiArCj4gKyNkZWZpbmUgU1VOMjBJX1BXTV9DVEwoY2hhbikJ CQkoMHgxMDAgKyAoY2hhbikgKiAweDIwKQo+ICsjZGVmaW5lIFNVTjIwSV9QV01fQ1RMX0FDVF9T VEEJCQlCSVQoOCkKPiArI2RlZmluZSBTVU4yMElfUFdNX0NUTF9QUkVTQ0FMX0sJCUdFTk1BU0so NywgMCkKPiArI2RlZmluZSBTVU4yMElfUFdNX0NUTF9QUkVTQ0FMX0tfTUFYCQlmaWVsZF9tYXgo U1VOMjBJX1BXTV9DVExfUFJFU0NBTF9LKQo+ICsKPiArI2RlZmluZSBTVU4yMElfUFdNX1BFUklP RChjaGFuKQkJCSgweDEwNCArIChjaGFuKSAqIDB4MjApCj4gKyNkZWZpbmUgU1VOMjBJX1BXTV9Q RVJJT0RfRU5USVJFX0NZQ0xFCQlHRU5NQVNLKDMxLCAxNikKPiArI2RlZmluZSBTVU4yMElfUFdN X1BFUklPRF9BQ1RfQ1lDTEUJCUdFTk1BU0soMTUsIDApCj4gKwo+ICsjZGVmaW5lIFNVTjIwSV9Q V01fUENOVFJfU0laRQkJCUJJVCgxNikKPiArCj4gKy8qCj4gKyAqIFNVTjIwSV9QV01fTUFHSUMg aXMgdXNlZCB0byBxdWlja2x5IGNvbXB1dGUgdGhlIHZhbHVlcyBvZiB0aGUgY2xvY2sgZGl2aWRl cnMKPiArICogZGl2X20gKFNVTjIwSV9QV01fQ0xLX0NGR19ESVZfTSkgJiBwcmVzY2FsZV9rIChT VU4yMElfUFdNX0NUTF9QUkVTQ0FMX0spCj4gKyAqIHdpdGhvdXQgdXNpbmcgYSBsb29wLiBUaGVz ZSBkaXZpZGVycyBsaW1pdCB0aGUgIyBvZiBjeWNsZXMgaW4gYSBwZXJpb2QKPiArICogdG8gU1VO MjBJX1BXTV9QQ05UUl9TSVpFICg2NTUzNikgYnkgYXBwbHlpbmcgYSBzY2FsaW5nIGZhY3RvciBv Zgo+ICsgKiAxLyhkaXZfbSAqIChwcmVzY2FsZV9rICsgMSkpIHRvIHRoZSBjbG9jayBzb3VyY2Uu Cj4gKyAqCj4gKyAqIFNVTjIwSV9QV01fTUFHSUMgaXMgZGVyaXZlZCBieSBzb2x2aW5nIGZvciBk aXZfbSBhbmQgcHJlc2NhbGVfawo+ICsgKiBzdWNoIHRoYXQgZm9yIGEgZ2l2ZW4gcmVxdWVzdGVk IHBlcmlvZCwKPiArICoKPiArICogaSkgZGl2X20gaXMgbWluaW1pemVkIGZvciBhbnkgcHJlc2Nh bGVfayDiiaQgU1VOMjBJX1BXTV9DVExfUFJFU0NBTF9LX01BWCwKPiArICogaWkpIHByZXNjYWxl X2sgaXMgbWluaW1pemVkLgo+ICsgKgo+ICsgKiBUaGUgZGVyaXZhdGlvbiBwcm9jZWVkcyBhcyBm b2xsb3dzLCB3aXRoIHZhbCA9ICMgb2YgY3ljbGVzIGZvciByZXF1ZXN0ZWQKPiArICogcGVyaW9k Ogo+ICsgKgo+ICsgKiBmb3IgYSBnaXZlbiB2YWx1ZSBvZiBkaXZfbSB3ZSB3YW50IHRoZSBzbWFs bGVzdCBwcmVzY2FsZV9rIHN1Y2ggdGhhdAo+ICsgKgo+ICsgKiAodmFsID4+IGRpdl9tKSAvLyAo cHJlc2NhbGVfayArIDEpIOKJpCA2NTUzNiAoPSBTVU4yMElfUFdNX1BDTlRSX1NJWkUpCj4gKyAq Cj4gKyAqIFRoaXMgaXMgZXF1aXZhbGVudCB0bzoKPiArICoKPiArICogKHZhbCA+PiBkaXZfbSkg 4omkIDY1NTM2ICogKHByZXNjYWxlX2sgKyAxKSArIHByZXNjYWxlX2sKPiArICog4p+6ICh2YWwg Pj4gZGl2X20pIOKJpCA2NTUzNyAqIHByZXNjYWxlX2sgKyA2NTUzNgo+ICsgKiDin7ogKHZhbCA+ PiBkaXZfbSkgLSA2NTUzNiDiiaQgNjU1MzcgKiBwcmVzY2FsZV9rCj4gKyAqIOKfuiAoKHZhbCA+ PiBkaXZfbSkgLSA2NTUzNikgLyA2NTUzNyDiiaQgcHJlc2NhbGVfawo+ICsgKgo+ICsgKiBBcyBw cmVzY2FsZV9rIGlzIGludGVnZXIsIHRoaXMgYmVjb21lcwo+ICsgKgo+ICsgKiAoKHZhbCA+PiBk aXZfbSkgLSA2NTUzNikgLy8gNjU1Mzcg4omkIHByZXNjYWxlX2sKPiArICoKPiArICogQW5kIGlz IG1pbmltaXplZCBhdAo+ICsgKgo+ICsgKiAoKHZhbCA+PiBkaXZfbSkgLSA2NTUzNikgLy8gNjU1 MzcKPiArICoKPiArICogTm93IHdlIHBpY2sgdGhlIHNtYWxsZXN0IGRpdl9tIHRoYXQgc2F0aWZp ZXMgcHJlc2NhbGVfayDiiaQgMjU1Cj4gKyAqIChpLmUgU1VOMjBJX1BXTV9DVExfUFJFU0NBTF9L X01BWCksCj4gKyAqCj4gKyAqICgodmFsID4+IGRpdl9tKSAtIDY1NTM2KSAvLyA2NTUzNyDiiaQg MjU1Cj4gKyAqIOKfuiAodmFsID4+IGRpdl9tKSAtIDY1NTM2IOKJpCAyNTUgKiA2NTUzNyArIDY1 NTM2Cj4gKyAqIOKfuiB2YWwgPj4gZGl2X20g4omkIDI1NSAqIDY1NTM3ICsgMiAqIDY1NTM2Cj4g KyAqIOKfuiB2YWwgPj4gZGl2X20gPCAoMjU1ICogNjU1MzcgKyAyICogNjU1MzYgKyAxKQo+ICsg KiDin7ogZGl2X20gPSBmbHMoKHZhbCkgLyAoMjU1ICogNjU1MzcgKyAyICogNjU1MzYgKyAxKSkK PiArICoKPiArICogU3VnZ2VzdGVkIGJ5IFV3ZSBLbGVpbmUtS8O2bmlnCj4gKyAqLwo+ICsjZGVm aW5lIFNVTjIwSV9QV01fTUFHSUMJCQkoMjU1ICogNjU1MzcgKyAyICogNjU1MzYgKyAxKQo+ICsj ZGVmaW5lIFNVTjIwSV9QV01fRElWX0NPTlNUCQkJNjU1MzcKPiArCj4gK3N0cnVjdCBzdW4yMGlf cHdtX2NoaXAgewo+ICsJc3RydWN0IGNsayAqY2xrX2hvc2MsICpjbGtfYXBiOwo+ICsJdm9pZCBf X2lvbWVtICpiYXNlOwo+ICt9Owo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3VuMjBpX3B3 bV9jaGlwICp0b19zdW4yMGlfcHdtX2NoaXAoc3RydWN0IHB3bV9jaGlwICpjaGlwKQo+ICt7Cj4g KwlyZXR1cm4gcHdtY2hpcF9nZXRfZHJ2ZGF0YShjaGlwKTsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSB1MzIgc3VuMjBpX3B3bV9yZWFkbChzdHJ1Y3Qgc3VuMjBpX3B3bV9jaGlwICpjaGlwLAo+ ICsJCQkJICAgdW5zaWduZWQgbG9uZyBvZmZzZXQpCj4gK3sKPiArCXJldHVybiByZWFkbChjaGlw LT5iYXNlICsgb2Zmc2V0KTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHN1bjIwaV9w d21fd3JpdGVsKHN0cnVjdCBzdW4yMGlfcHdtX2NoaXAgKmNoaXAsCj4gKwkJCQkgICAgIHUzMiB2 YWwsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQo+ICt7Cj4gKwl3cml0ZWwodmFsLCBjaGlwLT5iYXNl ICsgb2Zmc2V0KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBzdW4yMGlfcHdtX2dldF9zdGF0ZShz dHJ1Y3QgcHdtX2NoaXAgKmNoaXAsCj4gKwkJCQlzdHJ1Y3QgcHdtX2RldmljZSAqcHdtLAo+ICsJ CQkJc3RydWN0IHB3bV9zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBzdW4yMGlfcHdtX2No aXAgKnN1bjIwaV9jaGlwID0gdG9fc3VuMjBpX3B3bV9jaGlwKGNoaXApOwo+ICsJdTE2IGVudF9j eWNsZSwgYWN0X2N5Y2xlLCBwcmVzY2FsZV9rOwo+ICsJdTY0IGNsa19yYXRlLCB0bXA7Cj4gKwl1 OCBkaXZfbTsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJdmFsID0gc3VuMjBpX3B3bV9yZWFkbChzdW4y MGlfY2hpcCwgU1VOMjBJX1BXTV9DTEtfQ0ZHKHB3bS0+aHdwd20gLyAyKSk7Cj4gKwlkaXZfbSA9 IEZJRUxEX0dFVChTVU4yMElfUFdNX0NMS19DRkdfRElWX00sIHZhbCk7Cj4gKwlpZiAoZGl2X20g PiBTVU4yMElfUFdNX0NMS19ESVZfTV9NQVgpCj4gKwkJZGl2X20gPSBTVU4yMElfUFdNX0NMS19E SVZfTV9NQVg7Cj4gKwo+ICsJLyoKPiArCSAqIElmIENMS19DRkdfU1JDIGlzIDAsIHVzZSB0aGUg aG9zYyBjbG9jazsKPiArCSAqIG90aGVyd2lzZSAoYW55IG5vbnplcm8gdmFsdWUpIHVzZSB0aGUg QVBCIGNsb2NrLgo+ICsJICovCj4gKwlpZiAoRklFTERfR0VUKFNVTjIwSV9QV01fQ0xLX0NGR19T UkMsIHZhbCkgPT0gMCkKPiArCQljbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShzdW4yMGlfY2hpcC0+ Y2xrX2hvc2MpOwo+ICsJZWxzZQo+ICsJCWNsa19yYXRlID0gY2xrX2dldF9yYXRlKHN1bjIwaV9j aGlwLT5jbGtfYXBiKTsKPiArCj4gKwl2YWwgPSBzdW4yMGlfcHdtX3JlYWRsKHN1bjIwaV9jaGlw LCBTVU4yMElfUFdNX0NUTChwd20tPmh3cHdtKSk7Cj4gKwlzdGF0ZS0+cG9sYXJpdHkgPSAoU1VO MjBJX1BXTV9DVExfQUNUX1NUQSAmIHZhbCkgPwo+ICsJCQkgICBQV01fUE9MQVJJVFlfTk9STUFM IDogUFdNX1BPTEFSSVRZX0lOVkVSU0VEOwo+ICsKPiArCXByZXNjYWxlX2sgPSBGSUVMRF9HRVQo U1VOMjBJX1BXTV9DVExfUFJFU0NBTF9LLCB2YWwpICsgMTsKPiArCj4gKwl2YWwgPSBzdW4yMGlf cHdtX3JlYWRsKHN1bjIwaV9jaGlwLCBTVU4yMElfUFdNX0VOQUJMRSk7Cj4gKwlzdGF0ZS0+ZW5h YmxlZCA9IChTVU4yMElfUFdNX0VOQUJMRV9FTihwd20tPmh3cHdtKSAmIHZhbCkgPyB0cnVlIDog ZmFsc2U7Cj4gKwo+ICsJdmFsID0gc3VuMjBpX3B3bV9yZWFkbChzdW4yMGlfY2hpcCwgU1VOMjBJ X1BXTV9QRVJJT0QocHdtLT5od3B3bSkpOwo+ICsJYWN0X2N5Y2xlID0gRklFTERfR0VUKFNVTjIw SV9QV01fUEVSSU9EX0FDVF9DWUNMRSwgdmFsKTsKPiArCj4gKwllbnRfY3ljbGUgPSBGSUVMRF9H RVQoU1VOMjBJX1BXTV9QRVJJT0RfRU5USVJFX0NZQ0xFLCB2YWwpOwo+ICsKPiArCS8qCj4gKwkg KiBUaGUgZHVyYXRpb24gb2YgdGhlIGFjdGl2ZSBwaGFzZSBzaG91bGQgbm90IGJlIGxvbmdlcgo+ ICsJICogdGhhbiB0aGUgZHVyYXRpb24gb2YgdGhlIHBlcmlvZAo+ICsJICovCj4gKwlpZiAoYWN0 X2N5Y2xlID4gZW50X2N5Y2xlKQo+ICsJCWFjdF9jeWNsZSA9IGVudF9jeWNsZTsKPiArCj4gKwkv Kgo+ICsJICogV2UgaGF2ZSBhY3RfY3ljbGUgPD0gZW50X2N5Y2xlIDw9IDB4ZmZmZiwgcHJlc2Nh bGVfayA8PSAweDEwMCwKPiArCSAqIGRpdl9tIDw9IDguIFNvIHRoZSBtdWx0aXBsaWNhdGlvbiBm aXRzIGludG8gYW4gdTY0IHdpdGhvdXQKPiArCSAqIG92ZXJmbG93Lgo+ICsJICovCj4gKwl0bXAg PSAoKHU2NCkoYWN0X2N5Y2xlKSAqIHByZXNjYWxlX2sgPDwgZGl2X20pICogTlNFQ19QRVJfU0VD Owo+ICsJc3RhdGUtPmR1dHlfY3ljbGUgPSBESVZfUk9VTkRfVVBfVUxMKHRtcCwgY2xrX3JhdGUp Owo+ICsJdG1wID0gKCh1NjQpKGVudF9jeWNsZSkgKiBwcmVzY2FsZV9rIDw8IGRpdl9tKSAqIE5T RUNfUEVSX1NFQzsKPiArCXN0YXRlLT5wZXJpb2QgPSBESVZfUk9VTkRfVVBfVUxMKHRtcCwgY2xr X3JhdGUpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHN1bjIwaV9w d21fYXBwbHkoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtLAo+ ICsJCQkgICAgY29uc3Qgc3RydWN0IHB3bV9zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBz dW4yMGlfcHdtX2NoaXAgKnN1bjIwaV9jaGlwID0gdG9fc3VuMjBpX3B3bV9jaGlwKGNoaXApOwo+ ICsJdTY0IGJ1c19yYXRlLCBob3NjX3JhdGUsIHZhbCwgZW50X2N5Y2xlLCBhY3RfY3ljbGU7Cj4g Kwl1MzIgY2xrX2dhdGUsIGNsa19jZmcsIHB3bV9lbiwgY3RsLCByZWdfcGVyaW9kOwo+ICsJdTMy IHByZXNjYWxlX2ssIGRpdl9tOwo+ICsJYm9vbCB1c2VfYnVzX2NsazsKPiArCj4gKwlwd21fZW4g PSBzdW4yMGlfcHdtX3JlYWRsKHN1bjIwaV9jaGlwLCBTVU4yMElfUFdNX0VOQUJMRSk7Cj4gKwlj bGtfZ2F0ZSA9IHN1bjIwaV9wd21fcmVhZGwoc3VuMjBpX2NoaXAsIFNVTjIwSV9QV01fQ0xLX0dB VEUpOwo+ICsKPiArCWlmICghc3RhdGUtPmVuYWJsZWQpIHsKPiArCQlpZiAoc3RhdGUtPmVuYWJs ZWQgIT0gcHdtLT5zdGF0ZS5lbmFibGVkKSB7Cj4gKwkJCWNsa19nYXRlICY9IH5TVU4yMElfUFdN X0NMS19HQVRFX0dBVElORyhwd20tPmh3cHdtKTsKPiArCQkJcHdtX2VuICY9IH5TVU4yMElfUFdN X0VOQUJMRV9FTihwd20tPmh3cHdtKTsKPiArCQkJc3VuMjBpX3B3bV93cml0ZWwoc3VuMjBpX2No aXAsIHB3bV9lbiwgU1VOMjBJX1BXTV9FTkFCTEUpOwo+ICsJCQlzdW4yMGlfcHdtX3dyaXRlbChz dW4yMGlfY2hpcCwgY2xrX2dhdGUsIFNVTjIwSV9QV01fQ0xLX0dBVEUpOwo+ICsJCX0KPiArCQly ZXR1cm4gMDsKPiArCX0KPiArCj4gKwljdGwgPSBzdW4yMGlfcHdtX3JlYWRsKHN1bjIwaV9jaGlw LCBTVU4yMElfUFdNX0NUTChwd20tPmh3cHdtKSk7Cj4gKwljbGtfY2ZnID0gc3VuMjBpX3B3bV9y ZWFkbChzdW4yMGlfY2hpcCwgU1VOMjBJX1BXTV9DTEtfQ0ZHKHB3bS0+aHdwd20gLyAyKSk7Cj4g Kwlob3NjX3JhdGUgPSBjbGtfZ2V0X3JhdGUoc3VuMjBpX2NoaXAtPmNsa19ob3NjKTsKPiArCWJ1 c19yYXRlID0gY2xrX2dldF9yYXRlKHN1bjIwaV9jaGlwLT5jbGtfYXBiKTsKPiArCWlmIChwd21f ZW4gJiBTVU4yMElfUFdNX0VOQUJMRV9FTihwd20tPmh3cHdtIF4gMSkpIHsKPiArCQkvKiBJZiB0 aGUgbmVpZ2hib3IgY2hhbm5lbCBpcyBlbmFibGVkLCB1c2UgdGhlIGN1cnJlbnQgY2xvY2sgc2V0 dGluZ3MgKi8KPiArCQl1c2VfYnVzX2NsayA9IEZJRUxEX0dFVChTVU4yMElfUFdNX0NMS19DRkdf U1JDLCBjbGtfY2ZnKSAhPSAwOwo+ICsJCXZhbCA9IG11bF91NjRfdTY0X2Rpdl91NjQoc3RhdGUt PnBlcmlvZCwKPiArCQkJCQkgICh1c2VfYnVzX2NsayA/IGJ1c19yYXRlIDogaG9zY19yYXRlKSwK PiArCQkJCQkgIE5TRUNfUEVSX1NFQyk7Cj4gKwo+ICsJCWRpdl9tID0gRklFTERfR0VUKFNVTjIw SV9QV01fQ0xLX0NGR19ESVZfTSwgY2xrX2NmZyk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qCj4gKwkJ ICogU2VsZWN0IHRoZSBjbG9jayBzb3VyY2UgYmFzZWQgb24gdGhlIHBlcmlvZC4KPiArCQkgKiBT aW5jZSBidXNfcmF0ZSA+IGhvc2NfcmF0ZSwgd2hpY2ggbWVhbnMgYnVzX3JhdGUKPiArCQkgKiBj YW4gcHJvdmlkZSBhIGhpZ2hlciBmcmVxdWVuY3kgdGhhbiBob3NjX3JhdGUuCgpXaGF0IGRvZXMg dGhhdCBtZWFuLCBleGFjdGx5PyBUaGF0IHdlIHNob3VsZCBwcmVmZXIgdGhlIGZhc3RlciBjbG9j az8KQmVjYXVzZSB0aGF0J3Mgbm90IHdoYXQgdGhlIGNvZGUgZG9lcywgaXMgaXQ/Cgo+ICsJCSAq Lwo+ICsJCXVzZV9idXNfY2xrID0gZmFsc2U7Cj4gKwkJdmFsID0gbXVsX3U2NF91NjRfZGl2X3U2 NChzdGF0ZS0+cGVyaW9kLCBob3NjX3JhdGUsIE5TRUNfUEVSX1NFQyk7Cj4gKwkJLyoKPiArCQkg KiBJZiB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBpcyDiiaQgMSwgdGhlIHBlcmlvZCBpcyB0b28gc2hv cnQKPiArCQkgKiBmb3IgcHJvcGVyIFBXTSBvcGVyYXRpb24KPiArCQkgKi8KPiArCQlpZiAodmFs IDw9IDEpIHsKClNvIGlmIEkgZ2V0IHRoZSBjb2RlIGNvcnJlY3RseSwgaXQgcHJlZmVycyBIT1ND IG92ZXIgQVBCPyBJcyB0aGF0CnJlYWxseSB0aGUgYmVzdCB3YXk/IFNob3VsZG4ndCBpdCBiZSB0 aGUgb3RoZXIgd2F5IGFyb3VuZDogd2UgdXNlIHRoZQpmYXN0ZXIgY2xvY2ssIHNpbmNlIHRoaXMg d2lsbCBub3QgbGltaXQgdGhlIHNpYmxpbmcgY2hhbm5lbD8KCkFuZCBhbm90aGVyIHRoaW5nIHRv IGNvbnNpZGVyIGFyZSByb3VuZGluZyBlcnJvcnMgZHVlIHRvIGludGVnZXIKZGl2aXNpb246IGNl cnRhaW4gcGVyaW9kIHJhdGVzIG1pZ2h0IGJlIGJldHRlciBhY2hpZXZhYmxlIHdpdGggb25lIG9y CnRoZSBvdGhlciBzb3VyY2UgY2xvY2s6IDMgTUh6IHdvcmtzIGJlc3QgYXMgMjRNSHovOCwgMy4x MjVNSHogYXMKMTAwTUh6LzMyLgpTbyBzaGFsbCB3ZSBjYWxjdWxhdGUgdGhlIHZhbHVlcyBhbmQg Y29tcGFyZSB0aGUgZXJyb3JzIGluc3RlYWQ/Ck9oLCBhbmQgYWxzbyB3ZSBuZWVkIHRvIGNvbnNp ZGVyIGJ5cGFzc2luZywgSSBmZWVsIGxpa2UgdGhpcyBzaG91bGQgYmUKY2hlY2tlZCBmaXJzdC4K CkluIGFueSBjYXNlIEkgdGhpbmsgdGhlcmUgc2hvdWxkIGJlIGEgY29tbWVudCBkZXNjcmliaW5n IHRoZSBzdHJhdGVneQphbmQgZ2l2ZSBzb21lIHJhdGlvbmFsZSwgSSB0aGluay4KCj4gKwkJCXVz ZV9idXNfY2xrID0gdHJ1ZTsKPiArCQkJdmFsID0gbXVsX3U2NF91NjRfZGl2X3U2NChzdGF0ZS0+ cGVyaW9kLCBidXNfcmF0ZSwgTlNFQ19QRVJfU0VDKTsKPiArCQkJaWYgKHZhbCA8PSAxKQo+ICsJ CQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsJCWRpdl9tID0gZmxzKERJVl9ST1VORF9ET1dO X1VMTCh2YWwsIFNVTjIwSV9QV01fTUFHSUMpKTsKPiArCQlpZiAoZGl2X20gPiBTVU4yMElfUFdN X0NMS19ESVZfTV9NQVgpCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCQkvKiBTZXQgdXAg dGhlIENMS19ESVZfTSBhbmQgY2xvY2sgQ0xLX1NSQyAqLwo+ICsJCWNsa19jZmcgPSBGSUVMRF9Q UkVQKFNVTjIwSV9QV01fQ0xLX0NGR19ESVZfTSwgZGl2X20pOwo+ICsJCWNsa19jZmcgfD0gRklF TERfUFJFUChTVU4yMElfUFdNX0NMS19DRkdfU1JDLCB1c2VfYnVzX2Nsayk7Cj4gKwo+ICsJCXN1 bjIwaV9wd21fd3JpdGVsKHN1bjIwaV9jaGlwLCBjbGtfY2ZnLCBTVU4yMElfUFdNX0NMS19DRkco cHdtLT5od3B3bSAvIDIpKTsKPiArCX0KPiArCj4gKwkvKiBDYWxjdWxhdGUgcHJlc2NhbGVfayBh bmQgZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgY3ljbGVzIGZvciBhIGZ1bGwgUFdNIHBlcmlvZCAq Lwo+ICsJZW50X2N5Y2xlID0gdmFsID4+IGRpdl9tOwo+ICsJcHJlc2NhbGVfayA9IERJVl9ST1VO RF9ET1dOX1VMTChlbnRfY3ljbGUsIFNVTjIwSV9QV01fRElWX0NPTlNUKTsKPiArCWlmIChwcmVz Y2FsZV9rID4gU1VOMjBJX1BXTV9DVExfUFJFU0NBTF9LX01BWCkKPiArCQlwcmVzY2FsZV9rID0g U1VOMjBJX1BXTV9DVExfUFJFU0NBTF9LX01BWDsKPiArCj4gKwlkb19kaXYoZW50X2N5Y2xlLCBw cmVzY2FsZV9rICsgMSk7Cj4gKwo+ICsJLyogZW50X2N5Y2xlIG11c3Qgbm90IGJlIHplcm8gKi8K PiArCWlmIChlbnRfY3ljbGUgPT0gMCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkvKiBG b3IgTiBjeWNsZXMsIFBQUnguUFdNX0VOVElSRV9DWUNMRSA9IChOLTEpICovCj4gKwlyZWdfcGVy aW9kID0gRklFTERfUFJFUChTVU4yMElfUFdNX1BFUklPRF9FTlRJUkVfQ1lDTEUsIGVudF9jeWNs ZSAtIDEpOwo+ICsKPiArCS8qIENhbGN1bGF0ZSB0aGUgYWN0aXZlIGN5Y2xlcyAoZHV0eSBjeWNs ZSkgKi8KPiArCXZhbCA9IG11bF91NjRfdTY0X2Rpdl91NjQoc3RhdGUtPmR1dHlfY3ljbGUsCj4g KwkJCQkgICh1c2VfYnVzX2NsayA/IGJ1c19yYXRlIDogaG9zY19yYXRlKSwKPiArCQkJCSAgTlNF Q19QRVJfU0VDKTsKPiArCWFjdF9jeWNsZSA9IHZhbCA+PiBkaXZfbTsKPiArCWRvX2RpdihhY3Rf Y3ljbGUsIHByZXNjYWxlX2sgKyAxKTsKPiArCj4gKwkvKgo+ICsJICogVGhlIGZvcm11bGEgb2Yg dGhlIG91dHB1dCBwZXJpb2QgYW5kIHRoZSBkdXR5LWN5Y2xlIGZvciBQV00gYXJlIGFzIGZvbGxv d3MuCj4gKwkgKiBUIHBlcmlvZCA9IFBXTTBfUFJFU0NBTEVfSyAvIFBXTTAxX0NMSyAqIChQUFIw LlBXTV9FTlRJUkVfQ1lDTEUgKyAxKQo+ICsJICogVCBoaWdoLWxldmVsID0gUFdNMF9QUkVTQ0FM RV9LIC8gUFdNMDFfQ0xLICogUFBSMC5QV01fQUNUX0NZQ0xFCj4gKwkgKiBEdXR5LWN5Y2xlID0g VCBoaWdoLWxldmVsIC8gVCBwZXJpb2QKPiArCSAqLwo+ICsJcmVnX3BlcmlvZCB8PSBGSUVMRF9Q UkVQKFNVTjIwSV9QV01fUEVSSU9EX0FDVF9DWUNMRSwgYWN0X2N5Y2xlKTsKPiArCXN1bjIwaV9w d21fd3JpdGVsKHN1bjIwaV9jaGlwLCByZWdfcGVyaW9kLCBTVU4yMElfUFdNX1BFUklPRChwd20t Pmh3cHdtKSk7Cj4gKwo+ICsJY3RsID0gRklFTERfUFJFUChTVU4yMElfUFdNX0NUTF9QUkVTQ0FM X0ssIHByZXNjYWxlX2spOwo+ICsJaWYgKHN0YXRlLT5wb2xhcml0eSA9PSBQV01fUE9MQVJJVFlf Tk9STUFMKQo+ICsJCWN0bCB8PSBTVU4yMElfUFdNX0NUTF9BQ1RfU1RBOwo+ICsKPiArCXN1bjIw aV9wd21fd3JpdGVsKHN1bjIwaV9jaGlwLCBjdGwsIFNVTjIwSV9QV01fQ1RMKHB3bS0+aHdwd20p KTsKPiArCj4gKwlpZiAoc3RhdGUtPmVuYWJsZWQgIT0gcHdtLT5zdGF0ZS5lbmFibGVkKSB7Cj4g KwkJY2xrX2dhdGUgJj0gflNVTjIwSV9QV01fQ0xLX0dBVEVfQllQQVNTKHB3bS0+aHdwd20pOwo+ ICsJCWNsa19nYXRlIHw9IFNVTjIwSV9QV01fQ0xLX0dBVEVfR0FUSU5HKHB3bS0+aHdwd20pOwo+ ICsJCXB3bV9lbiB8PSBTVU4yMElfUFdNX0VOQUJMRV9FTihwd20tPmh3cHdtKTsKPiArCQlzdW4y MGlfcHdtX3dyaXRlbChzdW4yMGlfY2hpcCwgcHdtX2VuLCBTVU4yMElfUFdNX0VOQUJMRSk7Cj4g KwkJc3VuMjBpX3B3bV93cml0ZWwoc3VuMjBpX2NoaXAsIGNsa19nYXRlLCBTVU4yMElfUFdNX0NM S19HQVRFKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBwd21fb3BzIHN1bjIwaV9wd21fb3BzID0gewo+ICsJLmFwcGx5ID0gc3VuMjBpX3B3 bV9hcHBseSwKPiArCS5nZXRfc3RhdGUgPSBzdW4yMGlfcHdtX2dldF9zdGF0ZSwKPiArfTsKPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjIwaV9wd21fZHRfaWRzW10g PSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW4yMGktZDEtcHdtIiB9LAo+ICsJ eyB9Cj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjIwaV9wd21fZHRfaWRzKTsK PiArCj4gK3N0YXRpYyBpbnQgc3VuMjBpX3B3bV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgcHdtX2NoaXAgKmNoaXA7Cj4gKwlzdHJ1Y3Qgc3VuMjBp X3B3bV9jaGlwICpzdW4yMGlfY2hpcDsKPiArCXN0cnVjdCBjbGsgKmNsa19idXM7Cj4gKwlzdHJ1 Y3QgcmVzZXRfY29udHJvbCAqcnN0Owo+ICsJdTMyIG5wd207Cj4gKwlpbnQgcmV0Owo+ICsKPiAr CXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtPmRldi5vZl9ub2RlLCAiYWxsd2lubmVy LG5wd21zIiwgJm5wd20pOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJbnB3bSA9IDg7IC8qIERlZmF1 bHQgdmFsdWUgKi8KPiArCj4gKwlpZiAobnB3bSA+IDE2KSB7Cj4gKwkJZGV2X2luZm8oJnBkZXYt PmRldiwgIkxpbWl0aW5nIG51bWJlciBvZiBQV00gbGluZXMgZnJvbSAldSB0byAxNiIsIG5wd20p OwoKSSBkb24ndCB0aGluayB3ZSBzaG91bGQgcHJvY2VlZCBpZiB0aGUgZmlybXdhcmUgaW5mb3Jt YXRpb24gaXMgY2xlYXJseQp3cm9uZy4gSnVzdCBiYWlsIG91dCB3aXRoIC1FSU5WQUwgb3Igc28g aGVyZSwgc28gdGhhdCBnZXRzIGZpeGVkIGluIHRoZQpEVC4KCj4gKwkJbnB3bSA9IDE2Owo+ICsJ fQo+ICsKPiArCWNoaXAgPSBkZXZtX3B3bWNoaXBfYWxsb2MoJnBkZXYtPmRldiwgbnB3bSwgc2l6 ZW9mKCpzdW4yMGlfY2hpcCkpOwo+ICsJaWYgKElTX0VSUihjaGlwKSkKPiArCQlyZXR1cm4gUFRS X0VSUihjaGlwKTsKPiArCXN1bjIwaV9jaGlwID0gdG9fc3VuMjBpX3B3bV9jaGlwKGNoaXApOwo+ ICsKPiArCXN1bjIwaV9jaGlwLT5iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNl KHBkZXYsIDApOwo+ICsJaWYgKElTX0VSUihzdW4yMGlfY2hpcC0+YmFzZSkpCj4gKwkJcmV0dXJu IFBUUl9FUlIoc3VuMjBpX2NoaXAtPmJhc2UpOwo+ICsKPiArCWNsa19idXMgPSBkZXZtX2Nsa19n ZXRfZW5hYmxlZCgmcGRldi0+ZGV2LCAiYnVzIik7Cj4gKwlpZiAoSVNfRVJSKGNsa19idXMpKQo+ ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIFBUUl9FUlIoY2xrX2J1cyksCj4g KwkJCQkgICAgICJGYWlsZWQgdG8gZ2V0IGJ1cyBjbG9ja1xuIik7Cj4gKwo+ICsJc3VuMjBpX2No aXAtPmNsa19ob3NjID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoJnBkZXYtPmRldiwgImhvc2MiKTsK PiArCWlmIChJU19FUlIoc3VuMjBpX2NoaXAtPmNsa19ob3NjKSkKPiArCQlyZXR1cm4gZGV2X2Vy cl9wcm9iZSgmcGRldi0+ZGV2LCBQVFJfRVJSKHN1bjIwaV9jaGlwLT5jbGtfaG9zYyksCj4gKwkJ CQkgICAgICJGYWlsZWQgdG8gZ2V0IGhvc2MgY2xvY2tcbiIpOwo+ICsKPiArCXJldCA9IGRldm1f Y2xrX3JhdGVfZXhjbHVzaXZlX2dldCgmcGRldi0+ZGV2LCBzdW4yMGlfY2hpcC0+Y2xrX2hvc2Mp OwoKSnVzdCBpZ25vcmluZyBmb3IgYSBiaXQgdGhhdCB0aGUgMjQgTUh6IG9zY2lsbGF0b3IgaXMg YSBmaXhlZCBjbG9jawphbnl3YXksIGJ1dCB3aHkgd291bGQgd2Ugd2FudCBleGNsdXNpdml0eSBh bHJlYWR5IGF0IHByb2JlIHRpbWU/IElzbid0CnRoYXQgdG9vIGxpbWl0aW5nLCBhcyBubyBvbmUg bWlnaHQgZXZlciB1c2UgYW55IFBXTSBjaGFubmVscywgYnV0IGl0CndvdWxkIHN0aWxsICJiZWxv bmcgdG8gdXMiPwoKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYt PmRldiwgcmV0LAo+ICsJCQkJICAgICAiRmFpbGVkIHRvIGdldCBob3NjIGV4Y2x1c2l2ZSByYXRl XG4iKTsKPiArCj4gKwlzdW4yMGlfY2hpcC0+Y2xrX2FwYiA9IGRldm1fY2xrX2dldF9lbmFibGVk KCZwZGV2LT5kZXYsICJhcGIiKTsKPiArCWlmIChJU19FUlIoc3VuMjBpX2NoaXAtPmNsa19hcGIp KQo+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIFBUUl9FUlIoc3VuMjBpX2No aXAtPmNsa19hcGIpLAo+ICsJCQkJICAgICAiRmFpbGVkIHRvIGdldCBhcGIgY2xvY2tcbiIpOwo+ ICsKPiArCXJldCA9IGRldm1fY2xrX3JhdGVfZXhjbHVzaXZlX2dldCgmcGRldi0+ZGV2LCBzdW4y MGlfY2hpcC0+Y2xrX2FwYik7CgpKdXN0IGZvciB0aGUgcmVjb3JkczogQVBCIGlzIHByYWN0aWNh bGx5IGFsc28gYSBmaXhlZCBjbG9jaywgc2V0IHVwCm9uY2UgaW4gZmlybXdhcmUgYW5kIG5ldmVy IGNoYW5nZWQsIHNpbmNlIGl0IGRyaXZlcyBhIGxvdCBvZiBvdGhlcgpwZXJpcGhlcmFscy4KQnV0 IHNhbWUgcXVlc3Rpb24gYXMgYWJvdmUsIHdoeSBkbyB3ZSBsb2NrIGl0cyByYXRlIGFscmVhZHkg aGVyZT8KCj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYs IHJldCwKPiArCQkJCSAgICAgIkZhaWxlZCB0byBnZXQgYXBiIGV4Y2x1c2l2ZSByYXRlXG4iKTsK PiArCj4gKwlpZiAoY2xrX2dldF9yYXRlKHN1bjIwaV9jaGlwLT5jbGtfYXBiKSA8PSBjbGtfZ2V0 X3JhdGUoc3VuMjBpX2NoaXAtPmNsa19ob3NjKSkKPiArCQlkZXZfaW5mbygmcGRldi0+ZGV2LCAi QVBCIGNsb2NrIG11c3QgYmUgZ3JlYXRlciB0aGFuIGhvc2MgY2xvY2siKTsKCldoeSB0aGlzIGNo ZWNrPyBEb2VzIHRoZSBjb2RlIG1ha2UgYW55IGFzc3VtcHRpb25zIGFib3V0IHRoaXMgcmVsYXRp b24/CklmIHllcywgd2UgbXVzdCBzdXJlbHkgZGVueSB0aGlzIGFuZCBiYWlsIG91dC4KSWYgbm90 IChhbmQgSSBmZWVsIHdlIHNob3VsZCBoYW5kbGUgaXQgdGhpcyB3YXkpLCB3ZSBjYW4ganVzdCBp Z25vcmUKdGhpcyBhbmQgbm90IHByaW50IGFueXRoaW5nLgoKQ2hlZXJzLApBbmRyZQoKPiArCj4g Kwlyc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZV9kZWFzc2VydGVkKCZwZGV2 LT5kZXYsIE5VTEwpOwo+ICsJaWYgKElTX0VSUihyc3QpKQo+ICsJCXJldHVybiBkZXZfZXJyX3By b2JlKCZwZGV2LT5kZXYsIFBUUl9FUlIocnN0KSwKPiArCQkJCSAgICAgIkZhaWxlZCB0byBnZXQg cmVzZXQgY29udHJvbFxuIik7Cj4gKwo+ICsJY2hpcC0+b3BzID0gJnN1bjIwaV9wd21fb3BzOwo+ ICsKPiArCXJldCA9IGRldm1fcHdtY2hpcF9hZGQoJnBkZXYtPmRldiwgY2hpcCk7Cj4gKwlpZiAo cmV0IDwgMCkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCByZXQsICJGYWls ZWQgdG8gYWRkIFBXTSBjaGlwXG4iKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuMjBpX3B3bV9kcml2ZXIgPSB7Cj4gKwkuZHJp dmVyID0gewo+ICsJCS5uYW1lID0gInN1bjIwaS1wd20iLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9 IHN1bjIwaV9wd21fZHRfaWRzLAo+ICsJfSwKPiArCS5wcm9iZSA9IHN1bjIwaV9wd21fcHJvYmUs Cj4gK307Cj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3VuMjBpX3B3bV9kcml2ZXIpOwo+ICsK PiArTU9EVUxFX0FVVEhPUigiQWxla3NhbmRyIFNodWJpbiA8cHJpdmF0ZXN1YjJAZ21haWwuY29t PiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFsbHdpbm5lciBzdW4yMGkgUFdNIGRyaXZlciIp Owo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2 QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1yaXNjdgo=