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 2FF91C54EE9 for ; Fri, 16 Sep 2022 14:35:39 +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:In-Reply-To:MIME-Version:References: 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=r57A6OjzWt+a8v9WKp7gl6NVebosAWdZZJRzA43TJbM=; b=K0yEyhlnLxrwTW yCa19nA85YnBEPAQVjRY0n2SD/iK0cXIHUsBwu1ZpXbRRn724xb5HCT8SC/CUY9sBdK/RtrUGoz8K gIcq5IUhH62VksFHTZjCv5fPN97/B0XjfuldrVC7uSAv/2X++yJIDUqatH0aZYCnQE24Shhfw2CuD fQUXEF9LpHI8ND6wHm55JtW3ESrfURHQvSgxVvF74ojZ9zuQBBhv9UC45Ymas9Szq1VzPoiTycT+a IpR9F3l6Ao6RBhSzFH6Oi2xsaf60lmV81S1B/7605W/xB3l86MwUcnano9DEEQG4e6WPvtuUCep/D 6KWPtgSwLi59tYv9KJ1w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oZCRO-00EEx5-7h; Fri, 16 Sep 2022 14:35:38 +0000 Received: from perceval.ideasonboard.com ([213.167.242.64]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oZCPI-00ED5u-DI for linux-phy@lists.infradead.org; Fri, 16 Sep 2022 14:33:31 +0000 Received: from pendragon.ideasonboard.com (unknown [104.132.8.103]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 4B372440; Fri, 16 Sep 2022 16:33:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1663338806; bh=0mq6iLjBRXE5LO1vAZY1gNiVywyq6U+Bz30w2WEJ6W0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=FFOXZCjlrBQLXWQVyj4ZYr+ig3ENlC0wfxUIL2C3aKei8hr+pAgbpWkDF8+4BdlCl +yeOJcWbv60wj4es3VfrER/TBurm/yyeKBuZDwpAvEpFIHDMJquJEvOXgHLbRECoUQ RGBlyg0gbDBV0jRAIpxOs0l+95zluKk/tPnRbRvs= Date: Fri, 16 Sep 2022 17:33:12 +0300 From: Laurent Pinchart To: Marco Felsch Cc: mchehab@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, kishon@ti.com, sakari.ailus@linux.intel.com, hverkuil@xs4all.nl, jacopo@jmondi.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-media@vger.kernel.org, kernel@pengutronix.de Subject: Re: [PATCH 4/4] media: tc358746: add Toshiba TC358746 Parallel to CSI-2 bridge driver Message-ID: References: <20220818143307.967150-1-m.felsch@pengutronix.de> <20220818143307.967150-5-m.felsch@pengutronix.de> <20220915165404.ghcjntxom7kzqyuy@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220915165404.ghcjntxom7kzqyuy@pengutronix.de> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220916_073328_800175_B678A137 X-CRM114-Status: GOOD ( 51.19 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy 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-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org SGkgTWFyY28sCgpPbiBUaHUsIFNlcCAxNSwgMjAyMiBhdCAwNjo1NDowNFBNICswMjAwLCBNYXJj byBGZWxzY2ggd3JvdGU6Cj4gT24gMjItMDktMDUsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4g PiBPbiBUaHUsIEF1ZyAxOCwgMjAyMiBhdCAwNDozMzowN1BNICswMjAwLCBNYXJjbyBGZWxzY2gg d3JvdGU6Cj4gPiA+IEFkZGluZyBzdXBwb3J0IGZvciB0aGUgVEMzNTg3NDYgcGFyYWxsZWwgPC0+ IE1JUEkgQ1NJIGJyaWRnZS4gVGhpcyBjaGlwCj4gPiA+IHN1cHBvcnRzIHR3byBvcGVyYXRpbmcg bW9kZXM6Cj4gPiA+ICAgMXN0KSBwYXJhbGxlbC1pbiAtPiBtaXBpLWNzaSBvdXQKPiA+ID4gICAy bmQpIG1pcGktY3NpIGluIC0+IHBhcmFsbGVsIG91dAo+ID4gPiAKPiA+ID4gVGhpcyBwYXRjaCBv bmx5IGFkZHMgdGhlIHN1cHBvcnQgZm9yIHRoZSAxc3QgbW9kZS4KPiA+ID4gCj4gPiA+IFNpZ25l ZC1vZmYtYnk6IE1hcmNvIEZlbHNjaCA8bS5mZWxzY2hAcGVuZ3V0cm9uaXguZGU+Cj4gPiA+IC0t LQo+ID4gPiAgZHJpdmVycy9tZWRpYS9pMmMvS2NvbmZpZyAgICB8ICAgMTcgKwo+ID4gPiAgZHJp dmVycy9tZWRpYS9pMmMvTWFrZWZpbGUgICB8ICAgIDEgKwo+ID4gPiAgZHJpdmVycy9tZWRpYS9p MmMvdGMzNTg3NDYuYyB8IDE2NDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNjYzIGluc2VydGlvbnMoKykKPiA+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL2kyYy90YzM1ODc0Ni5jCgpbc25pcF0KCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy90YzM1ODc0Ni5jIGIvZHJpdmVycy9tZWRpYS9p MmMvdGMzNTg3NDYuYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAw MDAwMDAwMDAuLjdiNzFkMGNmNzJhOQo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2Ry aXZlcnMvbWVkaWEvaTJjL3RjMzU4NzQ2LmMKCltzbmlwXQoKPiA+ID4gK3N0cnVjdCB0YzM1ODc0 NiB7Cj4gPiA+ICsJc3RydWN0IHY0bDJfc3ViZGV2CQlzZDsKPiA+ID4gKwlzdHJ1Y3QgbWVkaWFf cGFkCQlwYWRzW1RDMzU4NzQ2X05SX1BBRFNdOwo+ID4gPiArCXN0cnVjdCB2NGwyX2FzeW5jX25v dGlmaWVyCW5vdGlmaWVyOwo+ID4gPiArCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQJbWJ1c2Zt dDsKPiA+IAo+ID4gQ291bGQgeW91IHVzZSB0aGUgYWN0aXZlIHN0YXRlIEFQSSBpbnN0ZWFkIG9m IG1hbnVhbGx5IHN0b3JpbmcgbWJ1c2ZtdAo+ID4gaGVyZSA/IEl0IGludm9sdmVzCj4gCj4gSSB3 aWxsIGRvIHRoYXQsIHRoYW5rcyBmb3IgdGhlIGhpbnQgYW5kIGl0IGFsc28gZWxpbWF0ZXMgYSBm ZXcgYmFzaWMKPiBjaGVja3MgbGlrZSB0aGUgcGFkLW51bSBjaGVjay4KCkV2ZW4gbmljZXIgOi0p Cgo+ID4gLSBJbXBsZW1lbnRpbmcgdGhlIC5pbml0X2NmZygpIG9wZXJhdGlvbgo+ID4gLSBDYWxs aW5nIHY0bDJfc3ViZGV2X2luaXRfZmluYWxpemUoKSBpbiBwcm9iZQo+ID4gLSBSZXBsYWNpbmcg Y2FsbHMgdG8gX190YzM1ODc0Nl9nZXRfcGFkX2Zvcm1hdCgpIHdpdGgKPiA+ICAgdjRsMl9zdWJk ZXZfZ2V0X3BhZF9mb3JtYXQoKQo+ID4gLSBQcm9wYWdhdGluZyB0aGUgZm9ybWF0IGZyb20gc2lu ayB0byBzb3VyY2UgaW4gdGMzNTg3NDZfc2V0X2ZtdCgpCj4gPiAtIERyb3BwaW5nIHRjMzU4NzQ2 X3NyY19tYnVzX2NvZGUoKSBmcm9tIHRjMzU4NzQ2X2dldF9mbXQoKSBhbmQgc2ltcGx5Cj4gPiAg IHJldHJpZXZpbmcgdGhlIGZvcm1hdCB1c2luZyB2NGwyX3N1YmRldl9nZXRfcGFkX2Zvcm1hdCgp IHRoZXJlCj4gPiAtIERyb3BwaW5nIHRoaXMgZmllbGQKPiA+IAo+ID4gVGhlIGZvcm1hdHMgZm9y IGJvdGggdGhlIEFDVElWRSBhbmQgVFJZIHN0YXRlcyB3aWxsIHRoZW4gYmUgc3RvcmVkIGluCj4g PiB0aGUgc3ViZGV2IHN0YXRlLCB1bmNvbmRpdGlvbmFsbHkuIFlvdSBjYW4gcmV0cmlldmUgdGhl IGFjdGl2ZSBzdGF0ZQo+ID4gd2l0aCB2NGwyX3N1YmRldl9nZXRfbG9ja2VkX2FjdGl2ZV9zdGF0 ZSgpIGluIHRjMzU4NzQ2X3Nfc3RyZWFtKCkuCj4gPiAKPiA+ID4gKwlzdHJ1Y3QgdjRsMl9md25v ZGVfZW5kcG9pbnQJY3NpX3ZlcDsKPiA+ID4gKwo+ID4gPiArCXN0cnVjdCB2NGwyX2N0cmxfaGFu ZGxlcgljdHJsX2hkbDsKPiA+ID4gKwo+ID4gPiArCXN0cnVjdCByZWdtYXAJCQkqcmVnbWFwOwo+ ID4gPiArCXN0cnVjdCBjbGsJCQkqcmVmY2xrOwo+ID4gPiArCXN0cnVjdCBncGlvX2Rlc2MJCSpy ZXNldF9ncGlvOwo+ID4gPiArCXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhCXN1cHBsaWVzW0FS UkFZX1NJWkUodGMzNTg3NDZfc3VwcGxpZXMpXTsKPiA+ID4gKwo+ID4gPiArCXN0cnVjdCBjbGtf aHcJCQltY2xrX2h3Owo+ID4gPiArCXVuc2lnbmVkIGxvbmcJCQltY2xrX3JhdGU7Cj4gPiA+ICsJ dTgJCQkJbWNsa19wcmVkaXY7Cj4gPiA+ICsJdTE2CQkJCW1jbGtfcG9zdGRpdjsKPiA+ID4gKwo+ ID4gPiArCXVuc2lnbmVkIGxvbmcJCQlwbGxfcmF0ZTsKPiA+ID4gKwl1OAkJCQlwbGxfcG9zdF9k aXY7Cj4gPiA+ICsJdTE2CQkJCXBsbF9wcmVfZGl2Owo+ID4gPiArCXUxNgkJCQlwbGxfbXVsOwo+ ID4gPiArCj4gPiA+ICsJc3RydWN0IHY0bDJfY3RybAkJKnNlbnNvcl9wY2xrX2N0cmw7Cj4gPiA+ ICsKPiA+ID4gKyNkZWZpbmUgVEMzNTg3NDZfVkJfTUFYX1NJWkUJCSg1MTEgKiAzMikKPiA+ID4g KyNkZWZpbmUgVEMzNTg3NDZfVkJfREVGQVVMVF9TSVpFCSAgKDEgKiAzMikKPiA+ID4gKwl1bnNp Z25lZCBpbnQJCQl2Yl9zaXplOyAvKiBWaWRlbyBidWZmZXIgc2l6ZSBpbiBiaXRzICovCj4gPiA+ ICsKPiA+ID4gKwlzdHJ1Y3QgcGh5X2NvbmZpZ3VyZV9vcHRzX21pcGlfZHBoeSBkcGh5X2NmZzsK PiA+ID4gK307Cgpbc25pcF0KCj4gPiA+ICsjaWZuZGVmIE1IWgo+ID4gCj4gPiBXaGVyZSB3b3Vs ZCBpdCBiZSBwcmV2aW91c2x5IGRlZmluZWQgPyBUaGlzIHNvdW5kcyBsaWtlIGFza2luZyBmb3IK PiA+IHRyb3VibGUgbGF0ZXIuCj4gCj4gU29ycnkgSSBkb24ndCBnZXQgdGhhdCwgZG8geW91IG1l YW4gdGhhdCBJIHNob3VsZCBkZWZpbmUgaXQgYXQgdGhlIHZlcnkKPiBiZWdpbm5pbmc/CgpJIG1l YW4gdGhhdCBlaXRoZXIgTUhaIGlzIGRlZmluZWQgc29tZXdoZXJlIGluIHRoZSBrZXJuZWwgYWxy ZWFkeSwgaW4KY2FzZSB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIs IG9yIGl0J3Mgbm90LCBhbmQgSQp3b3VsZG4ndCBhZGQgYW4gI2lmbmRldiBoZXJlLiBPdGhlcndp c2UsIGlmIHNvbWVvbmUgYWRkcyBhIE1IWiBtYWNybwpsYXRlciB0aGF0IGdldHMgcHVsbGVkIGlu IHRocm91Z2ggb25lIG9mIHRoZSBrZXJuZWwgaGVhZGVycyB1c2VkIGJ5IHRoZQpkcml2ZXIsIGl0 IG1heSBjYXVzZSBzdWJ0bGUgYnVncyBpZiB0aGUgZGVmaW5pdGlvbiBpcyBkaWZmZXJlbnQuIE9m CmNvdXJzZSBub2JvZHkgd2lsbAoKI2RlZmluZSBNSFoJCTQyCgpidXQgd2UgY291bGQgZ2V0Cgoj ZGVmaW5lIE1IWgkJMTAwMCAqIDEwMDAKCmFuZCBzb21ldGhpbmcgY291bGQgYnJlYWsgaGVyZS4g SSdkIGRyb3AgdGhlICNpZm5kZWYgdG8gZ2V0IHRoZSBjb21waWxlcgp0byBjb21wbGFpbiBpZiB0 aGVyZSdzIGEgcmVkZWZpbml0aW9uLgoKPiA+ID4gKyNkZWZpbmUgTUhaCQkoMTAwMCAqIDEwMDAp Cj4gPiA+ICsjZW5kaWYKCltzbmlwXQoKPiA+ID4gK3N0YXRpYyBpbnQKPiA+ID4gK3RjMzU4NzQ2 X2xpbmtfdmFsaWRhdGUoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgc3RydWN0IG1lZGlhX2xpbmsg KmxpbmssCj4gPiA+ICsJCSAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpzb3VyY2Vf Zm10LAo+ID4gPiArCQkgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAqc2lua19mbXQp Cj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IHRjMzU4NzQ2ICp0YzM1ODc0NiA9IHRvX3RjMzU4NzQ2 KHNkKTsKPiA+ID4gKwl1bnNpZ25lZCBsb25nIGNzaV9iaXRyYXRlLCBzZW5zb3JfYml0cmF0ZTsK PiA+ID4gKwljb25zdCBzdHJ1Y3QgdGMzNTg3NDZfZm9ybWF0ICpmbXQ7Cj4gPiA+ICsJdW5zaWdu ZWQgaW50IGZpZm9fc3osIHRtcCwgbjsKPiA+ID4gKwlzNjQgc2Vuc29yX3BjbGtfcmF0ZTsKPiA+ ID4gKwo+ID4gPiArCS8qIENoZWNrIHRoZSBGSUZPIHNldHRpbmdzICovCj4gPiA+ICsJZm10ID0g dGMzNTg3NDZfZ2V0X2Zvcm1hdF9ieV9jb2RlKFRDMzU4NzQ2X1NJTkssIHRjMzU4NzQ2LT5tYnVz Zm10LmNvZGUpOwo+ID4gPiArCWlmIChJU19FUlIoZm10KSkKPiA+ID4gKwkJcmV0dXJuIFBUUl9F UlIoZm10KTsKPiA+ID4gKwo+ID4gPiArCXNlbnNvcl9wY2xrX3JhdGUgPSB2NGwyX2N0cmxfZ19j dHJsX2ludDY0KHRjMzU4NzQ2LT5zZW5zb3JfcGNsa19jdHJsKTsKPiA+ID4gKwlzZW5zb3JfYml0 cmF0ZSA9IHNlbnNvcl9wY2xrX3JhdGUgKiBmbXQtPmJ1c193aWR0aDsKPiA+ID4gKwo+ID4gPiAr CWNzaV9iaXRyYXRlID0gdGMzNTg3NDYtPmRwaHlfY2ZnLmxhbmVzICogdGMzNTg3NDYtPnBsbF9y YXRlOwo+ID4gPiArCj4gPiA+ICsJZGV2X2RiZyh0YzM1ODc0Ni0+c2QuZGV2LAo+ID4gPiArCQki RmlmbyBzZXR0aW5ncyBwYXJhbXM6IHNlbnNvci1iaXRyYXRlOiVsdSBjc2ktYml0cmF0ZTolbHUi LAo+ID4gPiArCQlzZW5zb3JfYml0cmF0ZSwgY3NpX2JpdHJhdGUpOwo+ID4gPiArCj4gPiA+ICsJ LyogQXZvaWQgcG9zc2libGUgRklGTyBvdmVyZmxvd3MgKi8KPiA+ID4gKwlpZiAoY3NpX2JpdHJh dGUgPCBzZW5zb3JfYml0cmF0ZSkgewo+ID4gPiArCQlkZXZfZXJyKHNkLT5kZXYsCj4gPiA+ICsJ CQkiTGluayB2YWxpZGF0aW9uIGZhaWxlZCBjc2ktYml0cmF0ZTolbHUgPCBzZW5zb3ItYml0cmF0 ZTolbHVcbiIsCj4gPiA+ICsJCQljc2lfYml0cmF0ZSwgc2Vuc29yX2JpdHJhdGUpOwo+ID4gPiAr CQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwkvKiBCZXN0IGNhc2Ug Ki8KPiA+ID4gKwlpZiAoY3NpX2JpdHJhdGUgPT0gc2Vuc29yX2JpdHJhdGUpIHsKPiA+ID4gKwkJ dGMzNTg3NDYtPnZiX3NpemUgPSBUQzM1ODc0Nl9WQl9ERUZBVUxUX1NJWkU7Cj4gPiA+ICsJCWdv dG8gb3V0Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCS8qCj4gPiA+ICsJICogQXZvaWQgcG9z c2libGUgRklGTyB1bmRlcmZsb3cgaW4gY2FzZSBvZgo+ID4gPiArCSAqIGNzaV9iaXRyYXRlID4g c2Vuc29yX2JpdHJhdGUuIEZvciBzdWNoIGNhc2UgdGhlIGNoaXAgaGFzIGEgaW50ZXJuYWwKPiA+ ID4gKwkgKiBmaWZvIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRlbGF5IHRoZSBsaW5lIG91dHB1dC4K PiA+ID4gKwkgKgo+ID4gPiArCSAqIEZpZm8gc2l6ZSBjYWxjdWxhdGlvbjoKPiA+ID4gKwkgKgo+ ID4gPiArCSAqIGZpZm8tc3osIGltYWdlLXdpZHRoIC0gaW4gYml0cwo+ID4gPiArCSAqIHNiciAg ICAgICAgICAgICAgICAgIC0gc2Vuc29yX2JpdHJhdGUgaW4gYml0cy9zCj4gPiA+ICsJICogY3Np ciAgICAgICAgICAgICAgICAgLSBjc2lfYml0cmF0ZSBpbiBiaXRzL3MKPiA+ID4gKwkgKgo+ID4g PiArCSAqICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgMSAgICAgIDEKPiA+ID4gKwkgKiBp bWFnZS13aWR0aCAqIC0tLSArIGZpZm8tc3ogLS0tID49IC0tLS0gKiBpbWFnZS13aWR0aAo+ID4g PiArCSAqICAgICAgICAgICAgICAgc2JyICAgICAgICAgICBzYnIgICAgY3Npcgo+ID4gPiArCSAq Cj4gPiA+ICsJICogZmlmby1zeiA+PSBhYnMoc2JyL2NzaXIgKiBpbWFnZS13aWR0aCAtIGltYWdl LXdpZHRoKQo+ID4gPiArCSAqICAgICAgICAgICAgICAgIGAtLS0tLcK0Cj4gPiA+ICsJICogICAg ICAgICAgICAgICAgICAgbgo+ID4gPiArCSAqCj4gPiA+ICsJICovCj4gPiA+ICsKPiA+ID4gKwlz ZW5zb3JfYml0cmF0ZSAvPSBUQzM1ODc0Nl9QUkVDSVNJT047Cj4gPiA+ICsJbiA9IGNzaV9iaXRy YXRlIC8gc2Vuc29yX2JpdHJhdGU7Cj4gPiA+ICsJdG1wID0gKHRjMzU4NzQ2LT5tYnVzZm10Lndp ZHRoICogVEMzNTg3NDZfUFJFQ0lTSU9OKSAvIG47Cj4gPiA+ICsJZmlmb19zeiA9IHRjMzU4NzQ2 LT5tYnVzZm10LndpZHRoIC0gdG1wOwo+ID4gPiArCWZpZm9fc3ogKj0gZm10LT5icHA7Cj4gPiA+ ICsJdGMzNTg3NDYtPnZiX3NpemUgPSByb3VuZF91cChmaWZvX3N6LCAzMik7Cj4gPiA+ICsKPiA+ IAo+ID4gUGxlYXNlIGFsc28gY2FsbCB2NGwyX3N1YmRldl9saW5rX3ZhbGlkYXRlX2RlZmF1bHQo KSBoZXJlLgo+IAo+IERpZCBpdCBpbiBteSBpbnRlcm5hbCBwcmVwYXJlZCB2MiBeXiBJIGNhbGwg aXQgbm93IGF0IHRoZSB2ZXJ5Cj4gYmVnaW5uaW5nIG9mIHRoaXMgZnVuY3Rpb24uCj4gCj4gPiBJ IHdvbmRlciBpZiB0aGUgYWJvdmUgY2FsY3VsYXRpb24gd291bGRuJ3QgYmUgYmV0dGVyIHBlcmZv cm1lZCBpbgo+ID4gLnNfc3RyZWFtKCkgKG9yIHJhdGhlciBpbiBhIGZ1bmN0aW9uIGJlaW5nIGNh bGxlZCBieSAuc19zdHJlYW0oKSkgd2hlbgo+ID4gZW5hYmxpbmcgc3RyZWFtaW5nLgo+IAo+IE5v IEkgd291bGRuJ3Qgc2hpZnQgdGhhdCwgc2luY2UgdGhlIGxpbmsgdmFsaWRhdGlvbiBpcyBpbiBJ TUhPIHRoZQo+IGNvcnJlY3QgcGxhY2UgdG8gaW5mb3JtIHRoZSB1c2VyIHRoYXQgdGhlIHBpcGVs aW5lIGNhbid0IG5lZ290aWF0ZSBpZgo+IHRoZSBmaWZvIGNhbid0IGJlIGNvbmZpZ3VyZWQgY29y cmVjdGx5LiBUaGVyZWZvcmUgSSBwbGFjZWQgaXQgaGVyZS4KClRoZSBpc3N1ZSBpcyB0aGF0IHRo ZSB1c2VyIGNvdWxkIGVuYWJsZSB0aGUgbGluayBmaXJzdCwgYW5kIHRoZW4gY2hhbmdlCnRoZSBW NEwyX0NJRF9MSU5LX0ZSRVEgb2YgdGhlIHNlbnNvciBhbmQgcHVzaCB0aGUgcGl4ZWwgcmF0ZSBh Ym92ZSB3aGF0CnRoZSBUQzM1ODc0NiBjYW4gc3VwcG9ydC4gR2l2ZW4gdGhlIG1vZGVsIHRoYXQg Y29uZmlndXJlcyBzdWJkZXZzCmluZGVwZW5kZW50bHksIHlvdSBjYW4gb25seSB2YWxpZGF0ZSB0 aGUgcGlwZWxpbmUgYXQgc3RyZWFtIG9uIHRpbWUuCgo+ID4gPiArb3V0Ogo+ID4gPiArCWRldl9k YmcodGMzNTg3NDYtPnNkLmRldiwKPiA+ID4gKwkJIkZvdW5kIEZJRk8gc2l6ZVtiaXRzXToldSAt PiBhbGlnbmVkIHRvIHNpemVbYml0c106JXVcbiIsCj4gPiA+ICsJCWZpZm9fc3osIHRjMzU4NzQ2 LT52Yl9zaXplKTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiB0YzM1ODc0Ni0+dmJfc2l6ZSA+IFRD MzU4NzQ2X1ZCX01BWF9TSVpFID8gLUVJTlZBTCA6IDA7Cj4gPiA+ICt9Cgpbc25pcF0KCj4gPiA+ ICtzdGF0aWMgaW50IHRjMzU4NzQ2X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g PiA+ICt7Cj4gPiA+ICsJc3RydWN0IGNsa19pbml0X2RhdGEgbWNsa19pbml0ZGF0YSA9IHsgfTsK PiA+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7Cj4gPiA+ICsJc3RydWN0 IHY0bDJfZndub2RlX2VuZHBvaW50ICp2ZXA7Cj4gPiA+ICsJdW5zaWduZWQgbG9uZyBjc2lfbGlu a19yYXRlOwo+ID4gPiArCXN0cnVjdCB0YzM1ODc0NiAqdGMzNTg3NDY7Cj4gPiA+ICsJc3RydWN0 IGZ3bm9kZV9oYW5kbGUgKmVwOwo+ID4gPiArCXVuc2lnbmVkIGNoYXIgY3NpX2xhbmVzOwo+ID4g PiArCXN0cnVjdCB2NGwyX3N1YmRldiAqc2Q7Cj4gPiA+ICsJc3RydWN0IHY0bDJfY3RybCAqY3Ry bDsKPiA+ID4gKwl1bnNpZ25lZCBsb25nIHJlZmNsazsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgaTsK PiA+ID4gKwlpbnQgZXJyOwo+ID4gPiArCXUzMiB2YWw7Cj4gPiA+ICsKPiA+ID4gKwl0YzM1ODc0 NiA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYsIHNpemVvZigqdGMzNTg3NDYpLCBHRlBfS0VS TkVMKTsKPiA+ID4gKwlpZiAoIXRjMzU4NzQ2KQo+ID4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ ID4gKwo+ID4gPiArCXRjMzU4NzQ2LT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhjbGll bnQsICZ0YzM1ODc0Nl9yZWdtYXBfY29uZmlnKTsKPiA+ID4gKwlpZiAoSVNfRVJSKHRjMzU4NzQ2 LT5yZWdtYXApKQo+ID4gPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIodGMz NTg3NDYtPnJlZ21hcCksCj4gPiA+ICsJCQkJICAgICAiRmFpbGVkIHRvIGluaXQgcmVnbWFwXG4i KTsKPiA+ID4gKwo+ID4gPiArCXRjMzU4NzQ2LT5yZWZjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAi cmVmY2xrIik7Cj4gPiA+ICsJaWYgKElTX0VSUih0YzM1ODc0Ni0+cmVmY2xrKSkKPiA+ID4gKwkJ cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHRjMzU4NzQ2LT5yZWZjbGspLAo+ID4g PiArCQkJCSAgICAgIkZhaWxlZCB0byBnZXQgcmVmY2xrXG4iKTsKPiA+ID4gKwo+ID4gPiArCWVy ciA9IGNsa19wcmVwYXJlX2VuYWJsZSh0YzM1ODc0Ni0+cmVmY2xrKTsKPiA+ID4gKwlpZiAoZXJy KQo+ID4gPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwKPiA+ID4gKwkJCQkgICAg ICJGYWlsZWQgdG8gZW5hYmxlIHJlZmNsa1xuIik7Cj4gPiA+ICsKPiA+ID4gKwlyZWZjbGsgPSBj bGtfZ2V0X3JhdGUodGMzNTg3NDYtPnJlZmNsayk7Cj4gPiA+ICsJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKHRjMzU4NzQ2LT5yZWZjbGspOwo+ID4gPiArCj4gPiA+ICsJaWYgKHJlZmNsayA8IDYgKiBN SFogfHwgcmVmY2xrID4gNDAgKiBNSFopCj4gPiA+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRl diwgLUVJTlZBTCwgIkludmFsaWQgcmVmY2xrIHJhbmdlXG4iKTsKPiA+ID4gKwo+ID4gPiArCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRjMzU4NzQ2X3N1cHBsaWVzKTsgaSsrKQo+ID4gPiAr CQl0YzM1ODc0Ni0+c3VwcGxpZXNbaV0uc3VwcGx5ID0gdGMzNTg3NDZfc3VwcGxpZXNbaV07Cj4g PiA+ICsKPiA+ID4gKwllcnIgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChkZXYsIEFSUkFZX1NJ WkUodGMzNTg3NDZfc3VwcGxpZXMpLAo+ID4gPiArCQkJCSAgICAgIHRjMzU4NzQ2LT5zdXBwbGll cyk7Cj4gPiA+ICsJaWYgKGVycikKPiA+ID4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBl cnIsICJGYWlsZWQgdG8gZ2V0IHN1cHBsaWVzXG4iKTsKPiA+ID4gKwo+ID4gPiArCXRjMzU4NzQ2 LT5yZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAicmVzZXQiLAo+ID4g PiArCQkJCQkJICAgICAgIEdQSU9EX09VVF9ISUdIKTsKPiA+ID4gKwlpZiAoSVNfRVJSKHRjMzU4 NzQ2LT5yZXNldF9ncGlvKSkKPiA+ID4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJf RVJSKHRjMzU4NzQ2LT5yZXNldF9ncGlvKSwKPiA+ID4gKwkJCQkgICAgICJGYWlsZWQgdG8gZ2V0 IHJlc2V0LWdwaW9zXG4iKTsKPiA+ID4gKwo+ID4gPiArCXNkID0gJnRjMzU4NzQ2LT5zZDsKPiA+ ID4gKwl2NGwyX2kyY19zdWJkZXZfaW5pdChzZCwgY2xpZW50LCAmdGMzNTg3NDZfb3BzKTsKPiA+ ID4gKwlzZC0+ZmxhZ3MgfD0gVjRMMl9TVUJERVZfRkxfSEFTX0RFVk5PREU7Cj4gPiA+ICsJc2Qt PmVudGl0eS5mdW5jdGlvbiA9IE1FRElBX0VOVF9GX1ZJRF9JRl9CUklER0U7Cj4gPiA+ICsJc2Qt PmVudGl0eS5vcHMgPSAmdGMzNTg3NDZfZW50aXR5X29wczsKPiA+ID4gKwo+ID4gPiArCXRjMzU4 NzQ2LT5wYWRzW1RDMzU4NzQ2X1NJTktdLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NJTks7Cj4gPiA+ ICsJdGMzNTg3NDYtPnBhZHNbVEMzNTg3NDZfU09VUkNFXS5mbGFncyA9IE1FRElBX1BBRF9GTF9T T1VSQ0U7Cj4gPiA+ICsJZXJyID0gbWVkaWFfZW50aXR5X3BhZHNfaW5pdCgmc2QtPmVudGl0eSwg VEMzNTg3NDZfTlJfUEFEUywKPiA+ID4gKwkJCQkgICAgIHRjMzU4NzQ2LT5wYWRzKTsKPiA+ID4g KwlpZiAoZXJyKQo+ID4gPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwKPiA+ID4g KwkJCQkgICAgICJGYWlsZWQgdG8gc2V0dXAgbWVkaWEtZW50aXR5IHBhZHNcbiIpOwo+ID4gPiAr Cj4gPiA+ICsJZXAgPSBmd25vZGVfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X2lkKGRldl9md25vZGUo ZGV2KSwgVEMzNTg3NDZfU09VUkNFLAo+ID4gPiArCQkJCQkgICAgIDAsIDApOwo+ID4gPiArCWlm ICghZXApIHsKPiA+ID4gKwkJZGV2X2VycihkZXYsICJNaXNzaW5nIGVuZHBvaW50IG5vZGVcbiIp Owo+ID4gPiArCQllcnIgPSAtRUlOVkFMOwo+ID4gPiArCQlnb3RvIGVycl9tYzsKPiA+ID4gKwl9 Cj4gPiA+ICsKPiA+ID4gKwkvKiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0ICdwYXJhbGxlbCBp bicgLT4gJ2NzaSBvdXQnICovCj4gPiA+ICsJdmVwID0gJnRjMzU4NzQ2LT5jc2lfdmVwOwo+ID4g PiArCXZlcC0+YnVzX3R5cGUgPSBWNEwyX01CVVNfQ1NJMl9EUEhZOwo+ID4gPiArCWVyciA9IHY0 bDJfZndub2RlX2VuZHBvaW50X2FsbG9jX3BhcnNlKGVwLCB2ZXApOwo+ID4gPiArCWZ3bm9kZV9o YW5kbGVfcHV0KGVwKTsKPiA+ID4gKwlpZiAoZXJyKSB7Cj4gPiA+ICsJCWRldl9lcnIoZGV2LCAi RmFpbGVkIHRvIHBhcnNlIHNvdXJjZSBlbmRwb2ludFxuIik7Cj4gPiA+ICsJCWdvdG8gZXJyX21j Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWNzaV9sYW5lcyA9IHZlcC0+YnVzLm1pcGlfY3Np Mi5udW1fZGF0YV9sYW5lczsKPiA+ID4gKwlpZiAoY3NpX2xhbmVzID09IDAgfHwgY3NpX2xhbmVz ID4gNCB8fAo+ID4gPiArCSAgICB2ZXAtPm5yX29mX2xpbmtfZnJlcXVlbmNpZXMgPT0gMCkgewo+ ID4gPiArCQlkZXZfZXJyKGRldiwgImVycm9yOiBJbnZhbGlkIENTSS0yIHNldHRpbmdzXG4iKTsK PiA+ID4gKwkJZXJyID0gLUVJTlZBTDsKPiA+ID4gKwkJZ290byBlcnJfdmVwOwo+ID4gPiArCX0K PiA+ID4gKwo+ID4gPiArCS8qIFRPRE86IEFkZCBzdXBwb3J0IHRvIGhhbmRsZSBtdWx0aXBsZSBs aW5rIGZyZXF1ZW5jaWVzICovCj4gPiA+ICsJY3NpX2xpbmtfcmF0ZSA9ICh1bnNpZ25lZCBsb25n KXZlcC0+bGlua19mcmVxdWVuY2llc1swXTsKPiA+ID4gKwl0YzM1ODc0Ni0+cGxsX3JhdGUgPSB0 YzM1ODc0Nl9maW5kX3BsbF9zZXR0aW5ncyh0YzM1ODc0NiwgcmVmY2xrLAo+ID4gPiArCQkJCQkJ CWNzaV9saW5rX3JhdGUgKiAyKTsKPiA+ID4gKwlpZiAoIXRjMzU4NzQ2LT5wbGxfcmF0ZSkgewo+ ID4gPiArCQllcnIgPSAtRUlOVkFMOwo+ID4gPiArCQlnb3RvIGVycl92ZXA7Cj4gPiA+ICsJfQo+ ID4gPiArCj4gPiA+ICsJZXJyID0gcGh5X21pcGlfZHBoeV9nZXRfZGVmYXVsdF9jb25maWdfZm9y X2hzY2xrKHRjMzU4NzQ2LT5wbGxfcmF0ZSwKPiA+ID4gKwkJCQkJCQkgY3NpX2xhbmVzLAo+ID4g PiArCQkJCQkJCSAmdGMzNTg3NDYtPmRwaHlfY2ZnKTsKPiA+ID4gKwlpZiAoZXJyKQo+ID4gPiAr CQlnb3RvIGVycl92ZXA7Cj4gPiA+ICsKPiA+ID4gKwl0YzM1ODc0Ni0+bWJ1c2ZtdCA9IHRjMzU4 NzQ2X2RlZl9mbXQ7Cj4gPiA+ICsJdGMzNTg3NDYtPnZiX3NpemUgPSBUQzM1ODc0Nl9WQl9ERUZB VUxUX1NJWkU7Cj4gPiA+ICsKPiA+ID4gKwlkZXZfc2V0X2RydmRhdGEoZGV2LCB0YzM1ODc0Nik7 Cj4gPiA+ICsJcG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LCAyMDApOwo+ID4g PiArCXBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKGRldik7Cj4gPiA+ICsJcG1fcnVudGltZV9l bmFibGUoZGV2KTsKPiA+ID4gKwo+ID4gPiArCWVyciA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9n ZXQoZGV2KTsKPiA+ID4gKwlpZiAoZXJyIDwgMCkgewo+ID4gPiArCQlkZXZfZXJyKGRldiwgIkZh aWxlZCB0byByZXN1bWUgdGhlIGRldmljZVxuIik7Cj4gPiA+ICsJCWdvdG8gZXJyX3ZlcDsKPiA+ ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwkgLyogRW5zdXJlIHRoYXQgQ1NJIGludGVyZmFjZSBpcyBw dXQgaW50byBMUC0xMSBzdGF0ZSAqLwo+ID4gPiArCWVyciA9IHRjMzU4NzQ2X3N3X3Jlc2V0KHRj MzU4NzQ2KTsKPiA+ID4gKwlpZiAoZXJyKSB7Cj4gPiA+ICsJCXBtX3J1bnRpbWVfcHV0X25vaWRs ZShkZXYpOwo+ID4gPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZXNldCB0aGUgZGV2aWNl XG4iKTsKPiA+ID4gKwkJZ290byBlcnJfcG07Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZXJy ID0gdGMzNTg3NDZfcmVhZCh0YzM1ODc0NiwgQ0hJUElEX1JFRywgJnZhbCk7Cj4gPiA+ICsJcG1f cnVudGltZV9tYXJrX2xhc3RfYnVzeShkZXYpOwo+ID4gPiArCXBtX3J1bnRpbWVfcHV0X3N5bmNf YXV0b3N1c3BlbmQoZGV2KTsKPiA+ID4gKwlpZiAoZXJyKSB7Cj4gPiA+ICsJCWRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIHJlYWQgY2hpcGlkXG4iKTsKPiA+ID4gKwkJZXJyID0gLUVOT0RFVjsKPiA+ ID4gKwkJZ290byBlcnJfcG07Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYgKEZJRUxEX0dF VChDSElQSUQsIHZhbCkgIT0gMHg0NCkgewo+ID4gPiArCQlkZXZfZXJyKGRldiwgIkludmFsaWQg Y2hpcGlkIDB4JTAyeFxuIiwKPiA+ID4gKwkJCSh1MzIpRklFTERfR0VUKENISVBJRCwgdmFsKSk7 Cj4gPiA+ICsJCWVyciA9IC1FTk9ERVY7Cj4gPiA+ICsJCWdvdG8gZXJyX3BtOwo+ID4gPiArCX0K PiA+ID4gKwo+ID4gPiArCS8qIE9wdGlvbmFsIE1DTEsgcHJvdmlkZXIgc3VwcG9ydCAqLwo+ID4g PiArCWlmIChkZXZpY2VfcHJvcGVydHlfcHJlc2VudChkZXYsICIjY2xvY2stY2VsbHMiKSkgewo+ ID4gPiArCQljb25zdCBjaGFyICptY2xrX25hbWU7Cj4gPiA+ICsKPiA+ID4gKwkJLyogSW5pdCB0 byBoaWdoZXN0IHBvc3NpYmVsIE1DTEsgKi8KPiA+ID4gKwkJdGMzNTg3NDYtPm1jbGtfcG9zdGRp diA9IDUxMjsKPiA+ID4gKwkJdGMzNTg3NDYtPm1jbGtfcHJlZGl2ID0gODsKPiA+ID4gKwo+ID4g PiArCQltY2xrX25hbWUgPSAidGMzNTg3NDYtbWNsayI7Cj4gPiA+ICsJCWRldmljZV9wcm9wZXJ0 eV9yZWFkX3N0cmluZyhkZXYsICJjbG9jay1vdXRwdXQtbmFtZXMiLAo+ID4gPiArCQkJCQkgICAg Jm1jbGtfbmFtZSk7Cj4gPiA+ICsKPiA+ID4gKwkJbWNsa19pbml0ZGF0YS5uYW1lID0gbWNsa19u YW1lOwo+ID4gPiArCQltY2xrX2luaXRkYXRhLm9wcyA9ICZ0YzM1ODc0Nl9tY2xrX29wczsKPiA+ ID4gKwkJdGMzNTg3NDYtPm1jbGtfaHcuaW5pdCA9ICZtY2xrX2luaXRkYXRhOwo+ID4gPiArCj4g PiA+ICsJCWVyciA9IGRldm1fY2xrX2h3X3JlZ2lzdGVyKGRldiwgJnRjMzU4NzQ2LT5tY2xrX2h3 KTsKPiA+ID4gKwkJaWYgKGVycikgewo+ID4gPiArCQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8g cmVnaXN0ZXIgbWNsayBwcm92aWRlclxuIik7Cj4gPiA+ICsJCQlnb3RvIGVycl9wbTsKPiA+ID4g KwkJfQo+ID4gPiArCj4gPiA+ICsJCWVyciA9IGRldm1fb2ZfY2xrX2FkZF9od19wcm92aWRlcihk ZXYsIG9mX2Nsa19od19zaW1wbGVfZ2V0LAo+ID4gPiArCQkJCQkJICAmdGMzNTg3NDYtPm1jbGtf aHcpOwo+ID4gPiArCQlpZiAoZXJyKSB7Cj4gPiA+ICsJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBhZGQgbWNsayBwcm92aWRlclxuIik7Cj4gPiA+ICsJCQlnb3RvIGVycl9wbTsKPiA+ID4gKwkJ fQo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXY0bDJfY3RybF9oYW5kbGVyX2luaXQoJnRjMzU4 NzQ2LT5jdHJsX2hkbCwgMSk7Cj4gPiA+ICsKPiA+ID4gKwljdHJsID0gdjRsMl9jdHJsX25ld19p bnRfbWVudSgmdGMzNTg3NDYtPmN0cmxfaGRsLCBOVUxMLAo+ID4gPiArCQkJCSAgICAgIFY0TDJf Q0lEX0xJTktfRlJFUSwgMCwgMCwKPiA+ID4gKwkJCQkgICAgICB2ZXAtPmxpbmtfZnJlcXVlbmNp ZXMpOwo+ID4gPiArCWlmIChjdHJsKQo+ID4gPiArCQljdHJsLT5mbGFncyB8PSBWNEwyX0NUUkxf RkxBR19SRUFEX09OTFk7Cj4gPiA+ICsKPiA+ID4gKwl0YzM1ODc0Ni0+c2QuY3RybF9oYW5kbGVy ID0gJnRjMzU4NzQ2LT5jdHJsX2hkbDsKPiA+ID4gKwlpZiAodGMzNTg3NDYtPmN0cmxfaGRsLmVy cm9yKSB7Cj4gPiA+ICsJCWVyciA9IHRjMzU4NzQ2LT5jdHJsX2hkbC5lcnJvcjsKPiA+ID4gKwkJ Z290byBlcnJfcG07Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJdjRsMl9jdHJsX2hhbmRsZXJf c2V0dXAoJnRjMzU4NzQ2LT5jdHJsX2hkbCk7Cj4gPiA+ICsKPiA+ID4gKwllcnIgPSB0YzM1ODc0 Nl9hc3luY19yZWdpc3Rlcih0YzM1ODc0Nik7Cj4gPiA+ICsJaWYgKGVyciA8IDApCj4gPiA+ICsJ CWdvdG8gZXJyX2N0cmw7Cj4gPiA+ICsKPiA+ID4gKwlkZXZfaW5mbyhkZXYsICIlcyBmb3VuZCBA IDB4JXggKCVzKVxuIiwgY2xpZW50LT5uYW1lLAo+ID4gPiArCQkgIGNsaWVudC0+YWRkciwgY2xp ZW50LT5hZGFwdGVyLT5uYW1lKTsKPiA+IAo+ID4gSSdkIHNraXAgdGhpcyB0byBhdm9pZCBhZGRp bmcgbm9pc2UgdG8gdGhlIGtlcm5lbCBsb2cgYXQgYm9vdCB0aW1lLiBJCj4gPiB3b3VsZCBhbHNv IHByb2JhYmx5IHNwbGl0IHNvbWUgb2YgdGhlIGNvZGUgb3V0IG9mIHRoZSBwcm9iZSBmdW5jdGlv biBhcwo+ID4gaXQncyBmYWlybHkgbGFyZ2UuIFVwIHRvIHlvdS4KPiAKPiBZZXMgaXQgaXMgbGFy Z2UgYnV0IG1vc3Qgb2YgaXQgaXMganVzdCByZXF1ZXN0aW5nIHN0dWZmIGFuZCBzby4uCj4gVGhl cmVmb3JlIEkga2VwdCBpdCBoZXJlIHNpbmNlIEkgZG9uJ3QgbmVlZCBpdCBlbHNld2hlcmUuIFdo YXQgYWJvdXQKPiBzZXR0aW5nIGl0IHRvIGRldl9kYmcoKT8gU29tZXRpbWVzIGl0IGNhbiBiZSB1 c2VmdWwgZS5nLiB0byBmaW5kIHRoZQo+IHByb2JsZW0gd2h5IC9kZXYvbWVkaWEgaXMgbm90IGNv bW1pbmcgdXAuLgoKSSBmaW5kIHRoYXQgZW5hYmxpbmcgZGV2X2RiZygpIG1lc3NhZ2VzIGZyb20g ZHJpdmVycy9iYXNlL2RkLmMgYXJlCmhlbHBmdWwgZm9yIHRoYXQsIGJ1dCBhIGRldl9kYmcoKSBt ZXNzYWdlIGhlcmUgaXMgZmluZSB0b28uCgo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ ICsKPiA+ID4gK2Vycl9jdHJsOgo+ID4gPiArCXY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnRjMzU4 NzQ2LT5jdHJsX2hkbCk7Cj4gPiA+ICtlcnJfcG06Cj4gPiA+ICsJcG1fcnVudGltZV9kaXNhYmxl KGRldik7Cj4gPiA+ICsJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7Cj4gPiA+ICsJcG1f cnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChkZXYpOwo+ID4gPiArZXJyX3ZlcDoKPiA+ID4g Kwl2NGwyX2Z3bm9kZV9lbmRwb2ludF9mcmVlKHZlcCk7Cj4gPiA+ICtlcnJfbWM6Cj4gPiA+ICsJ bWVkaWFfZW50aXR5X2NsZWFudXAoJnNkLT5lbnRpdHkpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJu IGVycjsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCB0YzM1ODc0Nl9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgdjRsMl9z dWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gPiA+ICsJc3RydWN0IHRj MzU4NzQ2ICp0YzM1ODc0NiA9IHRvX3RjMzU4NzQ2KHNkKTsKPiA+ID4gKwo+ID4gPiArCXY0bDJf Y3RybF9oYW5kbGVyX2ZyZWUoJnRjMzU4NzQ2LT5jdHJsX2hkbCk7Cj4gPiA+ICsJdjRsMl9md25v ZGVfZW5kcG9pbnRfZnJlZSgmdGMzNTg3NDYtPmNzaV92ZXApOwo+ID4gPiArCXY0bDJfYXN5bmNf bmZfdW5yZWdpc3RlcigmdGMzNTg3NDYtPm5vdGlmaWVyKTsKPiA+ID4gKwl2NGwyX2FzeW5jX25m X2NsZWFudXAoJnRjMzU4NzQ2LT5ub3RpZmllcik7Cj4gPiA+ICsJdjRsMl9hc3luY191bnJlZ2lz dGVyX3N1YmRldihzZCk7Cj4gPiA+ICsJdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2Qp Owo+ID4gCj4gPiBUaGlzIHNob3VsZG4ndCBiZSBuZWVkZWQgdjRsMl9hc3luY191bnJlZ2lzdGVy X3N1YmRldigpIHNob3VsZCBiZQo+ID4gZW5vdWdoLgo+IAo+IE9rYXksIHRoYW5rcy4gVGhlcmUg YXJlIGEgbG90IG9mIHVucmVnaXN0ZXIgaGVscGVycyBpbiB0aGUgdjRsMiBzcGFjZS4uCgpUb28g bWFueSBvZiB0aGVtIGluZGVlZC4gSSdkIGxpa2UgdG8gc2ltcGxpZnkgYWxsIHRoYXQuCgo+ID4g PiArCW1lZGlhX2VudGl0eV9jbGVhbnVwKCZzZC0+ZW50aXR5KTsKPiA+ID4gKwo+ID4gPiArCXBt X3J1bnRpbWVfZGlzYWJsZShzZC0+ZGV2KTsKPiA+ID4gKwlwbV9ydW50aW1lX3NldF9zdXNwZW5k ZWQoc2QtPmRldik7Cj4gPiA+ICsJcG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChzZC0+ ZGV2KTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtz dGF0aWMgaW50IHRjMzU4NzQ2X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gPiArewo+ ID4gPiArCXN0cnVjdCB0YzM1ODc0NiAqdGMzNTg3NDYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsK PiA+ID4gKwo+ID4gPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZSh0YzM1ODc0Ni0+cmVmY2xrKTsK PiA+ID4gKwo+ID4gPiArCXJldHVybiByZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUo dGMzNTg3NDZfc3VwcGxpZXMpLAo+ID4gPiArCQkJCSAgICAgIHRjMzU4NzQ2LT5zdXBwbGllcyk7 Cj4gPiAKPiA+IFNob3VsZG4ndCB5b3UgcmVlbmFibGUgdGhlIGNsb2NrIGlmIHRoaXMgZmFpbHMg Pwo+IAo+IEhtLi4gaWYgdGhpcyBmYWlscyBJIGNvdWxkIGVuZCBpbiBhIHVuZGVmaW5lZCBjaGlw IHN0YXRlLiBCdXQgSSBnb3QgdGhlCj4gcG9pbnQgdGhhdCB0aGUgZnJhbWV3b3JrIHdvdWxkIGJl IGluIGEgYmFkIHN0YXRlIGlmIGl0IHRyaWVzIGFnYWluIHRvCj4gc3VzcGVuZCB0aGUgZGV2aWNl LgoKSXQgd291bGQgYmUsIGFuZCB3aXRob3V0IGEgd2F5IHRvIHJlY292ZXIsIHNvIHRoYXQgY291 bGQgYmUgYW4gaXNzdWUuCgo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IHRjMzU4 NzQ2X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IHRj MzU4NzQ2ICp0YzM1ODc0NiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4gPiArCWludCBlcnI7 Cj4gPiA+ICsKPiA+ID4gKwlncGlvZF9zZXRfdmFsdWUodGMzNTg3NDYtPnJlc2V0X2dwaW8sIDEp Owo+ID4gPiArCj4gPiA+ICsJZXJyID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUo dGMzNTg3NDZfc3VwcGxpZXMpLAo+ID4gPiArCQkJCSAgICB0YzM1ODc0Ni0+c3VwcGxpZXMpOwo+ ID4gPiArCWlmIChlcnIpCj4gPiA+ICsJCXJldHVybiBlcnI7Cj4gPiA+ICsKPiA+ID4gKwkvKiBt aW4uIDIwMG5zICovCj4gPiA+ICsJdXNsZWVwX3JhbmdlKDEwLCAyMCk7Cj4gPiA+ICsKPiA+ID4g KwlncGlvZF9zZXRfdmFsdWUodGMzNTg3NDYtPnJlc2V0X2dwaW8sIDApOwo+ID4gPiArCj4gPiA+ ICsJZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKHRjMzU4NzQ2LT5yZWZjbGspOwo+ID4gPiArCWlm IChlcnIpCj4gPiA+ICsJCXJldHVybiBlcnI7Cj4gPiAKPiA+IFRoZSByZWd1bGF0b3JzIG5lZWQg dG8gYmUgZGlzYWJsZWQgaW4gY2FzZSBvZiBmYWlsdXJlIGhlcmUgYW5kIGJlbG93Cj4gPiAoYW5k IHNvIGRvZXMgdGhlIGNsb2NrIGJlbG93KS4KPiAKPiBZZXMsIHlvdSdyZSByaWdodC4KPiAKPiA+ ID4gKwo+ID4gPiArCS8qIG1pbi4gNzAwdXMgLi4uIDFtcyAqLwo+ID4gPiArCXVzbGVlcF9yYW5n ZSgxMDAwLCAxNTAwKTsKPiA+ID4gKwo+ID4gPiArCS8qIFN5bmMgc3RhdGUgKi8KPiA+ID4gKwll cnIgPSB0YzM1ODc0Nl9hcHBseV9wbGxfY29uZmlnKHRjMzU4NzQ2KTsKPiA+ID4gKwlpZiAoZXJy KQo+ID4gPiArCQlyZXR1cm4gZXJyOwo+ID4gPiArCj4gPiA+ICsJZXJyID0gdGMzNTg3NDZfYXBw bHlfZHBoeV9jb25maWcodGMzNTg3NDYpOwo+ID4gPiArCWlmIChlcnIpCj4gPiA+ICsJCXJldHVy biBlcnI7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gdGMzNTg3NDZfYXBwbHlfbWlzY19jb25maWco dGMzNTg3NDYpOwo+ID4gCj4gPiBEb2VzIGFsbCB0aGlzIGJlbG9uZyB0byB0aGUgUE0gcmVzdW1l IGhhbmRsZXIgPyBJdCBzZWVtcyBjb25maWd1cmF0aW9uCj4gPiBjb3VsZCBiZSBoYW5kbGVkIGlu IC5zX3N0cmVhbSgpIGluc3RlYWQuCj4gCj4gVGhpcyBnZXRzIGNhbGxlZCBieSB0aGUgc19zdHJl YW0oKSBkdXJpbmcgZ2V0dGluZyB0aGUgcG93ZXIgc3RhdGUgYnV0IEkKPiBjYW4gbW92ZSB0aGUg ZHBoeS9taXNjX2NvbmZpZyB0byB0aGUgLnNfc3RyZWFtKCkgb2YgY291cnNlLgoKVGhhdCB3b3Vs ZCBiZSBuaWNlLCB0aGFua3MuCgo+IFRoZSBwbGwKPiBuZWVkcyB0byBiZSB0aGVyZSBzaW5jZSB0 aGUgZGV2aWNlIGNhbiBiZSBhIGNsb2NrIHByb3ZpZGVyIGUuZy4gZm9yIHRoZQo+IHNlbnNvci4K Ck9LLgoKPiBUaGFua3MgZm9yIHRoZSByZXZpZXcgOikKPiAKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArREVGSU5FX1JVTlRJTUVfREVWX1BNX09QUyh0YzM1ODc0Nl9wbV9vcHMsIHRjMzU4NzQ2X3N1 c3BlbmQsCj4gPiA+ICsJCQkgIHRjMzU4NzQ2X3Jlc3VtZSwgTlVMTCk7Cj4gPiA+ICsKPiA+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHRjMzU4NzQ2 X29mX21hdGNoW10gPSB7Cj4gPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJ0b3NoaWJhLHRjMzU4NzQ2 IiB9LAo+ID4gPiArCXsgfSwKPiA+ID4gK307Cj4gPiA+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9m LCB0YzM1ODc0Nl9vZl9tYXRjaCk7Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgaTJjX2Ry aXZlciB0YzM1ODc0Nl9kcml2ZXIgPSB7Cj4gPiA+ICsJLmRyaXZlciA9IHsKPiA+ID4gKwkJLm5h bWUgPSAidGMzNTg3NDYiLAo+ID4gPiArCQkucG0gPSBwbV9wdHIoJnRjMzU4NzQ2X3BtX29wcyks Cj4gPiA+ICsJCS5vZl9tYXRjaF90YWJsZSA9IHRjMzU4NzQ2X29mX21hdGNoLAo+ID4gPiArCX0s Cj4gPiA+ICsJLnByb2JlX25ldyA9IHRjMzU4NzQ2X3Byb2JlLAo+ID4gPiArCS5yZW1vdmUgPSB0 YzM1ODc0Nl9yZW1vdmUsCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICttb2R1bGVfaTJjX2RyaXZl cih0YzM1ODc0Nl9kcml2ZXIpOwo+ID4gPiArCj4gPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlRv c2hpYmEgVEMzNTg3NDYgUGFyYWxsZWwgdG8gQ1NJLTIgYnJpZGdlIGRyaXZlciIpOwo+ID4gPiAr TU9EVUxFX0FVVEhPUigiTWFyY28gRmVsc2NoIDxrZXJuZWxAcGVuZ3V0cm9uaXguZGU+Iik7Cj4g PiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7CgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hh cnQKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBo eQo=