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 447CBC4167B for ; Fri, 30 Dec 2022 19:07:00 +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=emasJZkYThFuiouH7RQz3z/ecHcJUjEJfLIEeA/b1mw=; b=dzFRGNRPmy1XmE sWllkl4H3AA7k/InZ/LJb6hi+fCXmmru2CklVc4E+L9MeAMGxGv316WzoZBYeVSsJGcgTiFoJEGGl xSQzQv7+o/pJ10vgkUU3Nrq4SRWLCnAfwlsqDhRhThHX4+JlrV0xfynEzjkl/QYqiL/vs3kSElUnA QKQMVQNvmvlaRUbUjFX+mhtI12lQhDKdPc6ucJYiN9m2NjmfbHh71jMoX/2uDPK4Hv7s+/xGnG7g1 Df5UZJM14IqkPqTChS+vMJNXhbZf4EMiivRA8RmfI49syu4tS1lCa3uMKi4qajBX4UGD4zYNrHb38 W2rwfFn/YTMN+OCoPinw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pBKh5-00CT8D-8e; Fri, 30 Dec 2022 19:05:29 +0000 Received: from vps.xff.cz ([195.181.215.36]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pBHUz-00Aem5-Il for linux-arm-kernel@lists.infradead.org; Fri, 30 Dec 2022 15:40:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xff.cz; s=mail; t=1672414843; bh=l0UX+S/NrdvMYlTu65lE1sl4ZJALJTnqdZVGngJRHxo=; h=Date:From:To:Cc:Subject:X-My-GPG-KeyId:References:From; b=BBuP+biGq46Ksi//BBiX1Isauh5RqO0k0WqKp979FBOo5r/ApT2sPnwloFeGrv68a dfdK3vrlcsHp/Re+qxKKFwvbgOOdZfvSjIkSP3aJUY170UGbme9C1ubjhb5uPpnJ8B n0FGTU6dS6TKHE4xssJAADZwOUjxUB8yQiLn4isY= Date: Fri, 30 Dec 2022 16:40:43 +0100 From: =?utf-8?Q?Ond=C5=99ej?= Jirman To: Javier Martinez Canillas Cc: linux-kernel@vger.kernel.org, Kamil =?utf-8?Q?Trzci=C5=84ski?= , Martijn Braam , Sam Ravnborg , Robert Mader , Tom Fitzhenry , Peter Robinson , Onuralp Sezer , dri-devel@lists.freedesktop.org, Maya Matuszczyk , Neal Gompa , linux-arm-kernel@lists.infradead.org, Krzysztof Kozlowski , Jagan Teki , Daniel Vetter , David Airlie , Thierry Reding Subject: Re: [PATCH v4 2/4] drm: panel: Add Himax HX8394 panel controller driver Message-ID: <20221230154043.7v3zmzqdrnouqzd2@core> Mail-Followup-To: =?utf-8?Q?Ond=C5=99ej?= Jirman , Javier Martinez Canillas , linux-kernel@vger.kernel.org, Kamil =?utf-8?Q?Trzci=C5=84ski?= , Martijn Braam , Sam Ravnborg , Robert Mader , Tom Fitzhenry , Peter Robinson , Onuralp Sezer , dri-devel@lists.freedesktop.org, Maya Matuszczyk , Neal Gompa , linux-arm-kernel@lists.infradead.org, Krzysztof Kozlowski , Jagan Teki , Daniel Vetter , David Airlie , Thierry Reding X-My-GPG-KeyId: EBFBDDE11FB918D44D1F56C1F9F0A873BE9777ED References: <20221230113155.3430142-1-javierm@redhat.com> <20221230113155.3430142-3-javierm@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20221230113155.3430142-3-javierm@redhat.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221230_074046_124232_744806E2 X-CRM114-Status: GOOD ( 35.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgSmF2aWVyLAoKT24gRnJpLCBEZWMgMzAsIDIwMjIgYXQgMTI6MzE6NTJQTSArMDEwMCwgSmF2 aWVyIE1hcnRpbmV6IENhbmlsbGFzIHdyb3RlOgo+IEZyb206IEthbWlsIFRyemNpxYRza2kgPGF5 dWZhbkBheXVmYW4uZXU+Cj4gCj4gVGhlIGRyaXZlciBpcyBmb3IgcGFuZWxzIGJhc2VkIG9uIHRo ZSBIaW1heCBIWDgzOTQgY29udHJvbGxlciwgc3VjaCBhcyB0aGUKPiBIYW5uU3RhciBIU0QwNjBC SFc0IDcyMHgxNDQwIFRGVCBMQ0QgcGFuZWwgdGhhdCB1c2VzIGEgTUlQSS1EU0kgaW50ZXJmYWNl LgoKSSBzZWUgeW91J3ZlIHJlbW92ZWQgZGVidWcgcHJpbnRrcyBmcm9tIGVuYWJsZS9kaXNhYmxl L3ByZXBhcmUvdW5wcmVwYXJlCmhvb2tzLiBIYXZlIHlvdSB0ZXN0ZWQgdGhlIGRyaXZlciB0aG9y b3VnaGx5IHdpdGggdmFyaW91cyBEUk0gYXBwcywKd2l0aCBEUE0vc3VzcGVuZC9yZXN1bWUsIGV0 Yy4/CgpUaGUgZHctbWlwaS1kc2kgZHJpdmVyIGRvZXMgc29tZSB1bm9ydGhvZG94IHRoaW5nc1sx XSwgdGhhdCBjYW4gbGVhZCB0byB1bmJhbGFuY2VkCmNhbGxzIHRvIHRoZXNlIGZ1bmN0aW9ucyBp biBzb21lIHNpdHVhdGlvbnMsIGFuZCB0aGF0J3Mgd2h5IGFsbCB0aGVzZSBwcmludGtzCndlcmUg dGhlcmUuIFRvIGVuc3VyZSB0aGUgZHJpdmVyIGhvb2tzIGFyZSBjYWxsZWQgY29ycmVjdGx5LCB3 aGlsZSBwcmVwYXJpbmcKdGhlIGNvZGUgZm9yIHVwc3RyZWFtaW5nLiBUaGlzIGxlYWQgdG8gYnJv a2VuIGRpc3BsYXkgaW4gc29tZSBzaXR1YXRpb25zIGR1cmluZwpzdXNwZW5kL3Jlc3VtZS4KCmh0 dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L2xhdGVzdC9zb3VyY2UvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jI0w4NjgKCkFsc28sIGhhdmUgeW91IGNo ZWNrZWQgdGhlIGNsb2NrcyBhcmUgYWN0dWFsbHkgY29uZmlndXJlZCBjb3JyZWN0bHkgYnkgdGhl CnJrMzM5OSBjcnUgZHJpdmVyPyBJIGhhdmUgYSBsb3Qgb2YgdHJvdWJsZSB3aXRoIHRoYXQsIHRv by4gY2xrIGRyaXZlciBzb21ldGltZXMKc2VsZWN0cyB0aGUgZnJhY3Rpb25hbCBjbG9jaywgYnV0 IGRvZXMgbm90IGdpdmUgaXQgdGhlIG5lY2Vzc2FyeSA+MjB4IGRpZmZlcmVuY2UKYmV0d2VlbiBp bnB1dC9vdXRwdXQgY2xvY2sgcmF0ZXMuIFlvdSdsbCBvbmx5IG5vdGljZSBpZiB5b3UgbWVhc3Vy ZSBjbG9jayByYXRlcwpkaXJlY3RseSwgYnkgbG9va2luZyBhdCBhY3R1YWwgcmVmcmVzaCByYXRl LCBieSB1c2luZyBzb21lIHRlc3RpbmcgRFJNIGFwcC4KQ2xvY2sgc3Vic3lzdGVtIHNvbWV0aW1l cyBzaHVmZmxlcyB0aGluZ3MgYXJvdW5kIGlmIHlvdSBzd2l0Y2ggVk9QcyBhbmQgdXNlIGJpZwpW T1AgZm9yIG1pcGktZHNpIGRpc3BsYXksIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgc21hbGwgVk9Q LgoKSSdsbCB0ZXN0IHRoaXMgcGF0Y2hzZXQgaW4gYSBmZXcgZGF5cyBhZ2FpbnN0IHB1cmVseSBt YWlubGluZSBjb2RlLCBidXQgSSdtCnByZXR0eSBzdXJlIGxvb2tpbmcgYXQgdGhlIG1vZGVzIHlv dSB1c2UsIHRoYXQgdGhpcyB3aWxsIG5vdCB3b3JrIG9uIHNvbWUKUGluZXBob25lIFBybydzLCBh bmQgd2lsbCBjYXVzZSBkaXNwbGF5IGNvcnJ1cHRpb24gd2hlbiB5b3UgZml4IHlvdXIgY2xvY2sK c2V0dXAsIHNvIHRoYXQgQ1JVIGFjdHVhbGx5IG91dHB1dHMgNzQuMjVNSHogYXMgcmVxdWVzdGVk IGJ5IHRoZSBtb2RlLiAoV2hpY2gKY2FuIGJlIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggaHR0cHM6Ly9n aXRodWIuY29tL21lZ291cy9saW51eC9jb21taXQvZjdlZTE2ZjEyZWU4YTQ0ZWUyNDcyZjI5Njdj YTI3NzY4MTA2ZTAwZikKCnJlZ2FyZHMsCglvLgoKPiBTaWduZWQtb2ZmLWJ5OiBLYW1pbCBUcnpj acWEc2tpIDxheXVmYW5AYXl1ZmFuLmV1Pgo+IENvLWRldmVsb3BlZC1ieTogT25kcmVqIEppcm1h biA8bWVnaUB4ZmYuY3o+Cj4gU2lnbmVkLW9mZi1ieTogT25kcmVqIEppcm1hbiA8bWVnaUB4ZmYu Y3o+Cj4gQ28tZGV2ZWxvcGVkLWJ5OiBKYXZpZXIgTWFydGluZXogQ2FuaWxsYXMgPGphdmllcm1A cmVkaGF0LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgTWFydGluZXogQ2FuaWxsYXMgPGph dmllcm1AcmVkaGF0LmNvbT4KPiBSZXZpZXdlZC1ieTogU2FtIFJhdm5ib3JnIDxzYW1AcmF2bmJv cmcub3JnPgo+IC0tLQo+IAo+IENoYW5nZXMgaW4gdjQ6Cj4gLSBBZGQgVG9tIEZpdHpoZW5yeSdz IFRlc3RlZC1ieSB0YWcuCj4gCj4gQ2hhbmdlcyBpbiB2MzoKPiAtIEFkZCBTYW0gUmF2bmJvcmcn cyByZXZpd2VkLWJ5IHRhZy4KPiAtIE1vdmUgZHJpdmVyIHBhdGNoIGFmdGVyIG9uZSBpbnRyb2R1 Y2luZyB0aGUgRFQgYmluZGluZyAoU2FtIFJhdm5ib3JnKS4KPiAKPiBDaGFuZ2VzIGluIHYyOgo+ IC0gQWRkIHllYXIgdG8gZHJpdmVyJ3MgY29weXJpZ2h0IG5vdGljZSAoU2FtIFJhdm5ib3JnKQo+ IC0gUmVtb3ZlIHVudXNlZCA8dmlkZW8vZGlzcGxheV90aW1pbmcuaD4gaGVhZGVyIGluY2x1ZGUg KFNhbSBSYXZuYm9yZykuCj4gLSBVc2UgbWlwaV9kc2lfZGNzX3dyaXRlX3NlcSgpIGhlbHBlciBh bmQgZHJvcCBjdXN0b20gbWFjcm8gKFNhbSBSYXZuYm9yZykuCj4gLSBEcm9wIHVubmVjZXNzYXJ5 IGluZm8gbWVzc2FnZXMgYW5kIG1vdmUgdXNlZnVsIG9uZSB0byBkZWJ1ZyAoU2FtIFJhdm5ib3Jn KS4KPiAKPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgICAgICAgICAgICAgIHwgIDEy ICsKPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsK PiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWhpbWF4LWh4ODM5NC5jIHwgNDQ2ICsrKysr KysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDQ1OSBpbnNlcnRpb25zKCspCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaGltYXgtaHg4 Mzk0LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+IGluZGV4IDczN2VkY2RmOWVlZi4uN2VlOWM4 M2YwOWE3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPiBAQCAtMTU0LDYgKzE1NCwxOCBAQCBj b25maWcgRFJNX1BBTkVMX0ZFSVlBTkdfRlkwNzAyNERJMjZBMzBECj4gIAkgIFNheSBZIGlmIHlv dSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBwYW5lbHMgYmFzZWQgb24gdGhlCj4gIAkgIEZl aXlhbmcgRlkwNzAyNERJMjZBMzAtRCBNSVBJLURTSSBpbnRlcmZhY2UuCj4gIAo+ICtjb25maWcg RFJNX1BBTkVMX0hJTUFYX0hYODM5NAo+ICsJdHJpc3RhdGUgIkhJTUFYIEhYODM5NCBNSVBJLURT SSBMQ0QgcGFuZWxzIgo+ICsJZGVwZW5kcyBvbiBPRgo+ICsJZGVwZW5kcyBvbiBEUk1fTUlQSV9E U0kKPiArCWRlcGVuZHMgb24gQkFDS0xJR0hUX0NMQVNTX0RFVklDRQo+ICsJaGVscAo+ICsJICBT YXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcGFuZWxzIGJhc2VkIG9uIHRo ZQo+ICsJICBIaW1heCBIWDgzOTQgY29udHJvbGxlciwgc3VjaCBhcyB0aGUgSGFublN0YXIgSFNE MDYwQkhXNAo+ICsJICA3MjB4MTQ0MCBURlQgTENEIHBhbmVsIHRoYXQgdXNlcyBhIE1JUEktRFNJ IGludGVyZmFjZS4KPiArCj4gKwkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVsZSB3aWxsIGJl IGNhbGxlZCBwYW5lbC1oaW1heC1oeDgzOTQuCj4gKwo+ICBjb25maWcgRFJNX1BBTkVMX0lMSVRF S19JTDkzMjIKPiAgCXRyaXN0YXRlICJJbGl0ZWsgSUxJOTMyMiAzMjB4MjQwIFFWR0EgcGFuZWxz Igo+ICAJZGVwZW5kcyBvbiBPRiAmJiBTUEkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gaW5kZXgg ZjhmOWQ5ZjZhMzA3Li44NGMwMWFkYWZkNGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3BhbmVsL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4g QEAgLTEzLDYgKzEzLDcgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9FQkJHX0ZUODcxOSkgKz0g cGFuZWwtZWJiZy1mdDg3MTkubwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX0VMSURBX0tEMzVU MTMzKSArPSBwYW5lbC1lbGlkYS1rZDM1dDEzMy5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxf RkVJWElOX0sxMDFfSU0yQkEwMikgKz0gcGFuZWwtZmVpeGluLWsxMDEtaW0yYmEwMi5vCj4gIG9i ai0kKENPTkZJR19EUk1fUEFORUxfRkVJWUFOR19GWTA3MDI0REkyNkEzMEQpICs9IHBhbmVsLWZl aXlhbmctZnkwNzAyNGRpMjZhMzBkLm8KPiArb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9ISU1BWF9I WDgzOTQpICs9IHBhbmVsLWhpbWF4LWh4ODM5NC5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxf SUxJVEVLX0lMOTMyMikgKz0gcGFuZWwtaWxpdGVrLWlsaTkzMjIubwo+ICBvYmotJChDT05GSUdf RFJNX1BBTkVMX0lMSVRFS19JTEk5MzQxKSArPSBwYW5lbC1pbGl0ZWstaWxpOTM0MS5vCj4gIG9i ai0kKENPTkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4ODFDKSArPSBwYW5lbC1pbGl0ZWstaWxp OTg4MWMubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaGltYXgt aHg4Mzk0LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaGltYXgtaHg4Mzk0LmMKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZmM3YTJjMjk5ZjhkCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1oaW1heC1o eDgzOTQuYwo+IEBAIC0wLDAgKzEsNDQ2IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCj4gKy8qCj4gKyAqIERyaXZlciBmb3IgcGFuZWxzIGJhc2VkIG9uIEhpbWF4IEhY ODM5NCBjb250cm9sbGVyLCBzdWNoIGFzOgo+ICsgKgo+ICsgKiAtIEhhbm5TdGFyIEhTRDA2MEJI VzQgNS45OSIgTUlQSS1EU0kgcGFuZWwKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDIxIEth bWlsIFRyemNpxYRza2kKPiArICoKPiArICogQmFzZWQgb24gZHJpdmVycy9ncHUvZHJtL3BhbmVs L3BhbmVsLXNpdHJvbml4LXN0NzcwMy5jCj4gKyAqIENvcHlyaWdodCAoQykgUHVyaXNtIFNQQyAy MDE5Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZWRpYS1idXMtZm9ybWF0 Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2RfZGV2aWNldGFibGUuaD4KPiArI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArCj4gKyNpbmNsdWRlIDx2aWRlby9taXBp X2Rpc3BsYXkuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX21vZGVzLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKwo+ ICsjZGVmaW5lIERSVl9OQU1FICJwYW5lbC1oaW1heC1oeDgzOTQiCj4gKwo+ICsvKiBNYW51ZmFj dHVyZXIgc3BlY2lmaWMgY29tbWFuZHMgc2VudCB2aWEgRFNJLCBsaXN0ZWQgaW4gSFg4Mzk0LUYg ZGF0YXNoZWV0ICovCj4gKyNkZWZpbmUgSFg4Mzk0X0NNRF9TRVRTRVFVRU5DRQkgIDB4YjAKPiAr I2RlZmluZSBIWDgzOTRfQ01EX1NFVFBPV0VSCSAgMHhiMQo+ICsjZGVmaW5lIEhYODM5NF9DTURf U0VURElTUAkgIDB4YjIKPiArI2RlZmluZSBIWDgzOTRfQ01EX1NFVENZQwkgIDB4YjQKPiArI2Rl ZmluZSBIWDgzOTRfQ01EX1NFVFZDT00JICAweGI2Cj4gKyNkZWZpbmUgSFg4Mzk0X0NNRF9TRVRU RQkgIDB4YjcKPiArI2RlZmluZSBIWDgzOTRfQ01EX1NFVFNFTlNPUgkgIDB4YjgKPiArI2RlZmlu ZSBIWDgzOTRfQ01EX1NFVEVYVEMJICAweGI5Cj4gKyNkZWZpbmUgSFg4Mzk0X0NNRF9TRVRNSVBJ CSAgMHhiYQo+ICsjZGVmaW5lIEhYODM5NF9DTURfU0VUT1RQCSAgMHhiYgo+ICsjZGVmaW5lIEhY ODM5NF9DTURfU0VUUkVHQkFOSwkgIDB4YmQKPiArI2RlZmluZSBIWDgzOTRfQ01EX1VOS05PV04x CSAgMHhjMAo+ICsjZGVmaW5lIEhYODM5NF9DTURfU0VUREdDTFVUCSAgMHhjMQo+ICsjZGVmaW5l IEhYODM5NF9DTURfU0VUSUQJICAweGMzCj4gKyNkZWZpbmUgSFg4Mzk0X0NNRF9TRVREREIJICAw eGM0Cj4gKyNkZWZpbmUgSFg4Mzk0X0NNRF9VTktOT1dOMgkgIDB4YzYKPiArI2RlZmluZSBIWDgz OTRfQ01EX1NFVENBQkMJICAweGM5Cj4gKyNkZWZpbmUgSFg4Mzk0X0NNRF9TRVRDQUJDR0FJTgkg IDB4Y2EKPiArI2RlZmluZSBIWDgzOTRfQ01EX1NFVFBBTkVMCSAgMHhjYwo+ICsjZGVmaW5lIEhY ODM5NF9DTURfU0VUT0ZGU0VUCSAgMHhkMgo+ICsjZGVmaW5lIEhYODM5NF9DTURfU0VUR0lQMAkg IDB4ZDMKPiArI2RlZmluZSBIWDgzOTRfQ01EX1VOS05PV04zCSAgMHhkNAo+ICsjZGVmaW5lIEhY ODM5NF9DTURfU0VUR0lQMQkgIDB4ZDUKPiArI2RlZmluZSBIWDgzOTRfQ01EX1NFVEdJUDIJICAw eGQ2Cj4gKyNkZWZpbmUgSFg4Mzk0X0NNRF9TRVRHUE8JICAweGQ2Cj4gKyNkZWZpbmUgSFg4Mzk0 X0NNRF9TRVRTQ0FMSU5HCSAgMHhkZAo+ICsjZGVmaW5lIEhYODM5NF9DTURfU0VUSURMRQkgIDB4 ZGYKPiArI2RlZmluZSBIWDgzOTRfQ01EX1NFVEdBTU1BCSAgMHhlMAo+ICsjZGVmaW5lIEhYODM5 NF9DTURfU0VUQ0hFTU9ERV9EWU4gMHhlNAo+ICsjZGVmaW5lIEhYODM5NF9DTURfU0VUQ0hFCSAg MHhlNQo+ICsjZGVmaW5lIEhYODM5NF9DTURfU0VUQ0VTRUwJICAweGU2Cj4gKyNkZWZpbmUgSFg4 Mzk0X0NNRF9TRVRfU1BfQ01ECSAgMHhlOQo+ICsjZGVmaW5lIEhYODM5NF9DTURfU0VUUkVBRElO REVYCSAgMHhmZQo+ICsjZGVmaW5lIEhYODM5NF9DTURfR0VUU1BJUkVBRAkgIDB4ZmYKPiArCj4g K3N0cnVjdCBoeDgzOTQgewo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IGRybV9w YW5lbCBwYW5lbDsKPiArCXN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87Cj4gKwlzdHJ1Y3Qg cmVndWxhdG9yICp2Y2M7Cj4gKwlzdHJ1Y3QgcmVndWxhdG9yICppb3ZjYzsKPiArCWJvb2wgcHJl cGFyZWQ7Cj4gKwo+ICsJY29uc3Qgc3RydWN0IGh4ODM5NF9wYW5lbF9kZXNjICpkZXNjOwo+ICt9 Owo+ICsKPiArc3RydWN0IGh4ODM5NF9wYW5lbF9kZXNjIHsKPiArCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlOwo+ICsJdW5zaWduZWQgaW50IGxhbmVzOwo+ICsJdW5zaWduZWQg bG9uZyBtb2RlX2ZsYWdzOwo+ICsJZW51bSBtaXBpX2RzaV9waXhlbF9mb3JtYXQgZm9ybWF0Owo+ ICsJaW50ICgqaW5pdF9zZXF1ZW5jZSkoc3RydWN0IGh4ODM5NCAqY3R4KTsKPiArfTsKPiArCj4g K3N0YXRpYyBpbmxpbmUgc3RydWN0IGh4ODM5NCAqcGFuZWxfdG9faHg4Mzk0KHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3Qg aHg4Mzk0LCBwYW5lbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaHNkMDYwYmh3NF9pbml0X3Nl cXVlbmNlKHN0cnVjdCBoeDgzOTQgKmN0eCkKPiArewo+ICsJc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKPiArCj4gKwkvKiA1LjE5Ljgg U0VURVhUQzogU2V0IGV4dGVuc2lvbiBjb21tYW5kIChCOWgpICovCj4gKwltaXBpX2RzaV9kY3Nf d3JpdGVfc2VxKGRzaSwgSFg4Mzk0X0NNRF9TRVRFWFRDLAo+ICsJCQkgICAgICAgMHhmZiwgMHg4 MywgMHg5NCk7Cj4gKwo+ICsJLyogNS4xOS4yIFNFVFBPV0VSOiBTZXQgcG93ZXIgKEIxaCkgKi8K PiArCW1pcGlfZHNpX2Rjc193cml0ZV9zZXEoZHNpLCBIWDgzOTRfQ01EX1NFVFBPV0VSLAo+ICsJ CQkgIDB4NDgsIDB4MTEsIDB4NzEsIDB4MDksIDB4MzIsIDB4MjQsIDB4NzEsIDB4MzEsIDB4NTUs IDB4MzApOwo+ICsKPiArCS8qIDUuMTkuOSBTRVRNSVBJOiBTZXQgTUlQSSBjb250cm9sIChCQWgp ICovCj4gKwltaXBpX2RzaV9kY3Nfd3JpdGVfc2VxKGRzaSwgSFg4Mzk0X0NNRF9TRVRNSVBJLAo+ ICsJCQkgIDB4NjMsIDB4MDMsIDB4NjgsIDB4NmIsIDB4YjIsIDB4YzApOwo+ICsKPiArCS8qIDUu MTkuMyBTRVRESVNQOiBTZXQgZGlzcGxheSByZWxhdGVkIHJlZ2lzdGVyIChCMmgpICovCj4gKwlt aXBpX2RzaV9kY3Nfd3JpdGVfc2VxKGRzaSwgSFg4Mzk0X0NNRF9TRVRESVNQLAo+ICsJCQkgIDB4 MDAsIDB4ODAsIDB4NzgsIDB4MGMsIDB4MDcpOwo+ICsKPiArCS8qIDUuMTkuNCBTRVRDWUM6IFNl dCBkaXNwbGF5IHdhdmVmb3JtIGN5Y2xlcyAoQjRoKSAqLwo+ICsJbWlwaV9kc2lfZGNzX3dyaXRl X3NlcShkc2ksIEhYODM5NF9DTURfU0VUQ1lDLAo+ICsJCQkgIDB4MTIsIDB4NjMsIDB4MTIsIDB4 NjMsIDB4MTIsIDB4NjMsIDB4MDEsIDB4MGMsIDB4N2MsIDB4NTUsCj4gKwkJCSAgMHgwMCwgMHgz ZiwgMHgxMiwgMHg2YiwgMHgxMiwgMHg2YiwgMHgxMiwgMHg2YiwgMHgwMSwgMHgwYywKPiArCQkJ ICAweDdjKTsKPiArCj4gKwkvKiA1LjE5LjE5IFNFVEdJUDA6IFNldCBHSVAgT3B0aW9uMCAoRDNo KSAqLwo+ICsJbWlwaV9kc2lfZGNzX3dyaXRlX3NlcShkc2ksIEhYODM5NF9DTURfU0VUR0lQMCwK PiArCQkJICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDFjLCAweDAwLCAweDAwLCAw eDMyLCAweDEwLAo+ICsJCQkgIDB4MDksIDB4MDAsIDB4MDksIDB4MzIsIDB4MTUsIDB4YWQsIDB4 MDUsIDB4YWQsIDB4MzIsIDB4MDAsCj4gKwkJCSAgMHgwMCwgMHgwMCwgMHgwMCwgMHgzNywgMHgw MywgMHgwYiwgMHgwYiwgMHgzNywgMHgwMCwgMHgwMCwKPiArCQkJICAweDAwLCAweDBjLCAweDQw KTsKPiArCj4gKwkvKiA1LjE5LjIwIFNldCBHSVAgT3B0aW9uMSAoRDVoKSAqLwo+ICsJbWlwaV9k c2lfZGNzX3dyaXRlX3NlcShkc2ksIEhYODM5NF9DTURfU0VUR0lQMSwKPiArCQkJICAweDE5LCAw eDE5LCAweDE4LCAweDE4LCAweDFiLCAweDFiLCAweDFhLCAweDFhLCAweDAwLCAweDAxLAo+ICsJ CQkgIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MjAsIDB4MjEsIDB4MTgs IDB4MTgsCj4gKwkJCSAgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwg MHgxOCwgMHgxOCwgMHgxOCwKPiArCQkJICAweDI0LCAweDI1LCAweDE4LCAweDE4LCAweDE4LCAw eDE4LCAweDE4LCAweDE4LAo+ICsJCQkgIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4 MTgpOwo+ICsKPiArCS8qIDUuMTkuMjEgU2V0IEdJUCBPcHRpb24yIChENmgpICovCj4gKwltaXBp X2RzaV9kY3Nfd3JpdGVfc2VxKGRzaSwgSFg4Mzk0X0NNRF9TRVRHSVAyLAo+ICsJCQkgIDB4MTgs IDB4MTgsIDB4MTksIDB4MTksIDB4MWIsIDB4MWIsIDB4MWEsIDB4MWEsIDB4MDcsIDB4MDYsCj4g KwkJCSAgMHgwNSwgMHgwNCwgMHgwMywgMHgwMiwgMHgwMSwgMHgwMCwgMHgyNSwgMHgyNCwgMHgx OCwgMHgxOCwKPiArCQkJICAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4 LCAweDE4LCAweDE4LCAweDE4LAo+ICsJCQkgIDB4MjEsIDB4MjAsIDB4MTgsIDB4MTgsIDB4MTgs IDB4MTgsIDB4MTgsIDB4MTgsCj4gKwkJCSAgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwg MHgxOCk7Cj4gKwo+ICsJLyogNS4xOS4yNSBTRVRHQU1NQTogU2V0IGdhbW1hIGN1cnZlIHJlbGF0 ZWQgc2V0dGluZyAoRTBoKSAqLwo+ICsJbWlwaV9kc2lfZGNzX3dyaXRlX3NlcShkc2ksIEhYODM5 NF9DTURfU0VUR0FNTUEsCj4gKwkJCSAgMHgwMCwgMHgwNCwgMHgwYywgMHgxMiwgMHgxNCwgMHgx OCwgMHgxYSwgMHgxOCwgMHgzMSwgMHgzZiwKPiArCQkJICAweDRkLCAweDRjLCAweDU0LCAweDY1 LCAweDZiLCAweDcwLCAweDdmLCAweDgyLCAweDdlLCAweDhhLAo+ICsJCQkgIDB4OTksIDB4NGEs IDB4NDgsIDB4NDksIDB4NGIsIDB4NGEsIDB4NGMsIDB4NGIsIDB4N2YsIDB4MDAsCj4gKwkJCSAg MHgwNCwgMHgwYywgMHgxMSwgMHgxMywgMHgxNywgMHgxYSwgMHgxOCwgMHgzMSwKPiArCQkJICAw eDNmLCAweDRkLCAweDRjLCAweDU0LCAweDY1LCAweDZiLCAweDcwLCAweDdmLAo+ICsJCQkgIDB4 ODIsIDB4N2UsIDB4OGEsIDB4OTksIDB4NGEsIDB4NDgsIDB4NDksIDB4NGIsCj4gKwkJCSAgMHg0 YSwgMHg0YywgMHg0YiwgMHg3Zik7Cj4gKwo+ICsJLyogNS4xOS4xNyBTRVRQQU5FTCAoQ0NoKSAq Lwo+ICsJbWlwaV9kc2lfZGNzX3dyaXRlX3NlcShkc2ksIEhYODM5NF9DTURfU0VUUEFORUwsIDB4 MGIpOwo+ICsKPiArCS8qIFVua25vd24gY29tbWFuZCwgbm90IGxpc3RlZCBpbiB0aGUgSFg4Mzk0 LUYgZGF0YXNoZWV0ICovCj4gKwltaXBpX2RzaV9kY3Nfd3JpdGVfc2VxKGRzaSwgSFg4Mzk0X0NN RF9VTktOT1dOMSwgMHgxZiwgMHgzMSk7Cj4gKwo+ICsJLyogNS4xOS41IFNFVFZDT006IFNldCBW Q09NIHZvbHRhZ2UgKEI2aCkgKi8KPiArCW1pcGlfZHNpX2Rjc193cml0ZV9zZXEoZHNpLCBIWDgz OTRfQ01EX1NFVFZDT00sCj4gKwkJCSAgMHg3ZCwgMHg3ZCk7Cj4gKwo+ICsJLyogVW5rbm93biBj b21tYW5kLCBub3QgbGlzdGVkIGluIHRoZSBIWDgzOTQtRiBkYXRhc2hlZXQgKi8KPiArCW1pcGlf ZHNpX2Rjc193cml0ZV9zZXEoZHNpLCBIWDgzOTRfQ01EX1VOS05PV04zLAo+ICsJCQkgIDB4MDIp Owo+ICsKPiArCS8qIDUuMTkuMTEgU2V0IHJlZ2lzdGVyIGJhbmsgKEJEaCkgKi8KPiArCW1pcGlf ZHNpX2Rjc193cml0ZV9zZXEoZHNpLCBIWDgzOTRfQ01EX1NFVFJFR0JBTkssIDB4MDEpOwo+ICsK PiArCS8qIDUuMTkuMiBTRVRQT1dFUjogU2V0IHBvd2VyIChCMWgpICovCj4gKwltaXBpX2RzaV9k Y3Nfd3JpdGVfc2VxKGRzaSwgSFg4Mzk0X0NNRF9TRVRQT1dFUiwgMHgwMCk7Cj4gKwo+ICsJLyog NS4xOS4xMSBTZXQgcmVnaXN0ZXIgYmFuayAoQkRoKSAqLwo+ICsJbWlwaV9kc2lfZGNzX3dyaXRl X3NlcShkc2ksIEhYODM5NF9DTURfU0VUUkVHQkFOSywgMHgwMCk7Cj4gKwo+ICsJLyogVW5rbm93 biBjb21tYW5kLCBub3QgbGlzdGVkIGluIHRoZSBIWDgzOTQtRiBkYXRhc2hlZXQgKi8KPiArCW1p cGlfZHNpX2Rjc193cml0ZV9zZXEoZHNpLCBIWDgzOTRfQ01EX1VOS05PV04zLAo+ICsJCQkgIDB4 ZWQpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgaHNkMDYwYmh3NF9tb2RlID0gewo+ICsJLmhkaXNwbGF5ICAgID0gNzIw LAo+ICsJLmhzeW5jX3N0YXJ0ID0gNzIwICsgNDAsCj4gKwkuaHN5bmNfZW5kICAgPSA3MjAgKyA0 MCArIDQ2LAo+ICsJLmh0b3RhbAkgICAgID0gNzIwICsgNDAgKyA0NiArIDQwLAo+ICsJLnZkaXNw bGF5ICAgID0gMTQ0MCwKPiArCS52c3luY19zdGFydCA9IDE0NDAgKyA5LAo+ICsJLnZzeW5jX2Vu ZCAgID0gMTQ0MCArIDkgKyA3LAo+ICsJLnZ0b3RhbAkgICAgID0gMTQ0MCArIDkgKyA3ICsgNywK PiArCS5jbG9jawkgICAgID0gNzQyNTAsCj4gKwkuZmxhZ3MJICAgICA9IERSTV9NT0RFX0ZMQUdf TkhTWU5DIHwgRFJNX01PREVfRkxBR19OVlNZTkMsCj4gKwkud2lkdGhfbW0gICAgPSA2OCwKPiAr CS5oZWlnaHRfbW0gICA9IDEzNiwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHg4 Mzk0X3BhbmVsX2Rlc2MgaHNkMDYwYmh3NF9kZXNjID0gewo+ICsJLm1vZGUgPSAmaHNkMDYwYmh3 NF9tb2RlLAo+ICsJLmxhbmVzID0gNCwKPiArCS5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9W SURFTyB8IE1JUElfRFNJX01PREVfVklERU9fQlVSU1QsCj4gKwkuZm9ybWF0ID0gTUlQSV9EU0lf Rk1UX1JHQjg4OCwKPiArCS5pbml0X3NlcXVlbmNlID0gaHNkMDYwYmh3NF9pbml0X3NlcXVlbmNl LAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBoeDgzOTRfZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwg KnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgaHg4Mzk0ICpjdHggPSBwYW5lbF90b19oeDgzOTQocGFu ZWwpOwo+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNl KGN0eC0+ZGV2KTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gY3R4LT5kZXNjLT5pbml0X3Nl cXVlbmNlKGN0eCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihjdHgtPmRldiwgIlBhbmVs IGluaXQgc2VxdWVuY2UgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJ fQo+ICsKPiArCXJldCA9IG1pcGlfZHNpX2Rjc19leGl0X3NsZWVwX21vZGUoZHNpKTsKPiArCWlm IChyZXQpIHsKPiArCQlkZXZfZXJyKGN0eC0+ZGV2LCAiRmFpbGVkIHRvIGV4aXQgc2xlZXAgbW9k ZTogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwkvKiBQYW5lbCBp cyBvcGVyYXRpb25hbCAxMjAgbXNlYyBhZnRlciByZXNldCAqLwo+ICsJbXNsZWVwKDEyMCk7Cj4g Kwo+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X29uKGRzaSk7Cj4gKwlpZiAocmV0 KSB7Cj4gKwkJZGV2X2VycihjdHgtPmRldiwgIkZhaWxlZCB0byB0dXJuIG9uIHRoZSBkaXNwbGF5 OiAlZFxuIiwgcmV0KTsKPiArCQlnb3RvIHNsZWVwX2luOwo+ICsJfQo+ICsKPiArCXJldHVybiAw Owo+ICsKPiArc2xlZXBfaW46Cj4gKwkvKiBUaGlzIHdpbGwgcHJvYmFibHkgZmFpbCwgYnV0IGxl dCdzIHRyeSBvcmRlcmx5IHBvd2VyIG9mZiBhbnl3YXkuICovCj4gKwlyZXQgPSBtaXBpX2RzaV9k Y3NfZW50ZXJfc2xlZXBfbW9kZShkc2kpOwo+ICsJaWYgKCFyZXQpCj4gKwkJbXNsZWVwKDUwKTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGh4ODM5NF9kaXNhYmxl KHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgaHg4Mzk0ICpjdHggPSBw YW5lbF90b19oeDgzOTQocGFuZWwpOwo+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0g dG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0g bWlwaV9kc2lfZGNzX2VudGVyX3NsZWVwX21vZGUoZHNpKTsKPiArCWlmIChyZXQpIHsKPiArCQlk ZXZfZXJyKGN0eC0+ZGV2LCAiRmFpbGVkIHRvIGVudGVyIHNsZWVwIG1vZGU6ICVkXG4iLCByZXQp Owo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJbXNsZWVwKDUwKTsgLyogYWJvdXQgMyBm cmFtZXMgKi8KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBoeDgzOTRf dW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgaHg4Mzk0 ICpjdHggPSBwYW5lbF90b19oeDgzOTQocGFuZWwpOwo+ICsKPiArCWlmICghY3R4LT5wcmVwYXJl ZCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5y ZXNldF9ncGlvLCAxKTsKPiArCj4gKwlyZWd1bGF0b3JfZGlzYWJsZShjdHgtPmlvdmNjKTsKPiAr CXJlZ3VsYXRvcl9kaXNhYmxlKGN0eC0+dmNjKTsKPiArCj4gKwljdHgtPnByZXBhcmVkID0gZmFs c2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaHg4Mzk0X3ByZXBh cmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBoeDgzOTQgKmN0eCA9 IHBhbmVsX3RvX2h4ODM5NChwYW5lbCk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChjdHgtPnBy ZXBhcmVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChj dHgtPnJlc2V0X2dwaW8sIDEpOwo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoY3R4LT52 Y2MpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJGYWlsZWQgdG8gZW5h YmxlIHZjYyBzdXBwbHk6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ ICsJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShjdHgtPmlvdmNjKTsKPiArCWlmIChyZXQpIHsKPiAr CQlkZXZfZXJyKGN0eC0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSBpb3ZjYyBzdXBwbHk6ICVkXG4i LCByZXQpOwo+ICsJCWdvdG8gZGlzYWJsZV92Y2M7Cj4gKwl9Cj4gKwo+ICsJZ3Bpb2Rfc2V0X3Zh bHVlX2NhbnNsZWVwKGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKwo+ICsJbXNsZWVwKDE4MCk7Cj4g Kwo+ICsJY3R4LT5wcmVwYXJlZCA9IHRydWU7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtkaXNh YmxlX3ZjYzoKPiArCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dwaW8sIDEp Owo+ICsJcmVndWxhdG9yX2Rpc2FibGUoY3R4LT52Y2MpOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ ICsKPiArc3RhdGljIGludCBoeDgzOTRfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVs LAo+ICsJCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3Ry dWN0IGh4ODM5NCAqY3R4ID0gcGFuZWxfdG9faHg4Mzk0KHBhbmVsKTsKPiArCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlOwo+ICsKPiArCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoY29u bmVjdG9yLT5kZXYsIGN0eC0+ZGVzYy0+bW9kZSk7Cj4gKwlpZiAoIW1vZGUpIHsKPiArCQlkZXZf ZXJyKGN0eC0+ZGV2LCAiRmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1QCV1XG4iLAo+ICsJCQljdHgt PmRlc2MtPm1vZGUtPmhkaXNwbGF5LCBjdHgtPmRlc2MtPm1vZGUtPnZkaXNwbGF5LAo+ICsJCQlk cm1fbW9kZV92cmVmcmVzaChjdHgtPmRlc2MtPm1vZGUpKTsKPiArCQlyZXR1cm4gLUVOT01FTTsK PiArCX0KPiArCj4gKwlkcm1fbW9kZV9zZXRfbmFtZShtb2RlKTsKPiArCj4gKwltb2RlLT50eXBl ID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsKPiArCWNv bm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gbW9kZS0+d2lkdGhfbW07Cj4gKwljb25u ZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSBtb2RlLT5oZWlnaHRfbW07Cj4gKwlkcm1f bW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7Cj4gKwo+ICsJcmV0dXJuIDE7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIGh4ODM5NF9kcm1fZnVu Y3MgPSB7Cj4gKwkuZGlzYWJsZSAgID0gaHg4Mzk0X2Rpc2FibGUsCj4gKwkudW5wcmVwYXJlID0g aHg4Mzk0X3VucHJlcGFyZSwKPiArCS5wcmVwYXJlICAgPSBoeDgzOTRfcHJlcGFyZSwKPiArCS5l bmFibGUJICAgPSBoeDgzOTRfZW5hYmxlLAo+ICsJLmdldF9tb2RlcyA9IGh4ODM5NF9nZXRfbW9k ZXMsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGh4ODM5NF9wcm9iZShzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKPiAr CXN0cnVjdCBoeDgzOTQgKmN0eDsKPiArCWludCByZXQ7Cj4gKwo+ICsJY3R4ID0gZGV2bV9remFs bG9jKGRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghY3R4KQo+ICsJCXJl dHVybiAtRU5PTUVNOwo+ICsKPiArCWN0eC0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRl diwgInJlc2V0IiwgR1BJT0RfT1VUX0hJR0gpOwo+ICsJaWYgKElTX0VSUihjdHgtPnJlc2V0X2dw aW8pKQo+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihjdHgtPnJlc2V0X2dw aW8pLAo+ICsJCQkJICAgICAiRmFpbGVkIHRvIGdldCByZXNldCBncGlvXG4iKTsKPiArCj4gKwlt aXBpX2RzaV9zZXRfZHJ2ZGF0YShkc2ksIGN0eCk7Cj4gKwo+ICsJY3R4LT5kZXYgPSBkZXY7Cj4g KwljdHgtPmRlc2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKPiArCj4gKwlkc2kt Pm1vZGVfZmxhZ3MgPSBjdHgtPmRlc2MtPm1vZGVfZmxhZ3M7Cj4gKwlkc2ktPmZvcm1hdCA9IGN0 eC0+ZGVzYy0+Zm9ybWF0Owo+ICsJZHNpLT5sYW5lcyA9IGN0eC0+ZGVzYy0+bGFuZXM7Cj4gKwo+ ICsJY3R4LT52Y2MgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAidmNjIik7Cj4gKwlpZiAoSVNf RVJSKGN0eC0+dmNjKSkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoY3R4 LT52Y2MpLAo+ICsJCQkJICAgICAiRmFpbGVkIHRvIHJlcXVlc3QgdmNjIHJlZ3VsYXRvclxuIik7 Cj4gKwo+ICsJY3R4LT5pb3ZjYyA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJpb3ZjYyIpOwo+ ICsJaWYgKElTX0VSUihjdHgtPmlvdmNjKSkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYs IFBUUl9FUlIoY3R4LT5pb3ZjYyksCj4gKwkJCQkgICAgICJGYWlsZWQgdG8gcmVxdWVzdCBpb3Zj YyByZWd1bGF0b3JcbiIpOwo+ICsKPiArCWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsLCBkZXYs ICZoeDgzOTRfZHJtX2Z1bmNzLAo+ICsJCSAgICAgICBEUk1fTU9ERV9DT05ORUNUT1JfRFNJKTsK PiArCj4gKwlyZXQgPSBkcm1fcGFuZWxfb2ZfYmFja2xpZ2h0KCZjdHgtPnBhbmVsKTsKPiArCWlm IChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlkcm1fcGFuZWxfYWRkKCZjdHgtPnBhbmVs KTsKPiArCj4gKwlyZXQgPSBtaXBpX2RzaV9hdHRhY2goZHNpKTsKPiArCWlmIChyZXQgPCAwKSB7 Cj4gKwkJZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIm1pcGlfZHNpX2F0dGFjaCBmYWlsZWRcbiIp Owo+ICsJCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOwo+ICsJCXJldHVybiByZXQ7Cj4g Kwl9Cj4gKwo+ICsJZGV2X2RiZyhkZXYsICIldXgldUAldSAldWJwcCBkc2kgJXVkbCAtIHJlYWR5 XG4iLAo+ICsJCWN0eC0+ZGVzYy0+bW9kZS0+aGRpc3BsYXksIGN0eC0+ZGVzYy0+bW9kZS0+dmRp c3BsYXksCj4gKwkJZHJtX21vZGVfdnJlZnJlc2goY3R4LT5kZXNjLT5tb2RlKSwKPiArCQltaXBp X2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKGRzaS0+Zm9ybWF0KSwgZHNpLT5sYW5lcyk7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGh4ODM5NF9zaHV0ZG93bihzdHJ1 Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBoeDgzOTQgKmN0eCA9IG1p cGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGRybV9w YW5lbF9kaXNhYmxlKCZjdHgtPnBhbmVsKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWRldl9lcnIo JmRzaS0+ZGV2LCAiRmFpbGVkIHRvIGRpc2FibGUgcGFuZWw6ICVkXG4iLCByZXQpOwo+ICsKPiAr CXJldCA9IGRybV9wYW5lbF91bnByZXBhcmUoJmN0eC0+cGFuZWwpOwo+ICsJaWYgKHJldCA8IDAp Cj4gKwkJZGV2X2VycigmZHNpLT5kZXYsICJGYWlsZWQgdG8gdW5wcmVwYXJlIHBhbmVsOiAlZFxu IiwgcmV0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaHg4Mzk0X3JlbW92ZShzdHJ1Y3QgbWlw aV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBoeDgzOTQgKmN0eCA9IG1pcGlfZHNp X2dldF9kcnZkYXRhKGRzaSk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWh4ODM5NF9zaHV0ZG93bihk c2kpOwo+ICsKPiArCXJldCA9IG1pcGlfZHNpX2RldGFjaChkc2kpOwo+ICsJaWYgKHJldCA8IDAp Cj4gKwkJZGV2X2VycigmZHNpLT5kZXYsICJGYWlsZWQgdG8gZGV0YWNoIGZyb20gRFNJIGhvc3Q6 ICVkXG4iLCByZXQpOwo+ICsKPiArCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBoeDgzOTRfb2ZfbWF0Y2hb XSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAiaGFubnN0YXIsaHNkMDYwYmh3NCIsIC5kYXRhID0g JmhzZDA2MGJodzRfZGVzYyB9LAo+ICsJeyAvKiBzZW50aW5lbCAqLyB9Cj4gK307Cj4gK01PRFVM RV9ERVZJQ0VfVEFCTEUob2YsIGh4ODM5NF9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IG1pcGlfZHNpX2RyaXZlciBoeDgzOTRfZHJpdmVyID0gewo+ICsJLnByb2JlCT0gaHg4Mzk0X3By b2JlLAo+ICsJLnJlbW92ZSA9IGh4ODM5NF9yZW1vdmUsCj4gKwkuc2h1dGRvd24gPSBoeDgzOTRf c2h1dGRvd24sCj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1lID0gRFJWX05BTUUsCj4gKwkJLm9m X21hdGNoX3RhYmxlID0gaHg4Mzk0X29mX21hdGNoLAo+ICsJfSwKPiArfTsKPiArbW9kdWxlX21p cGlfZHNpX2RyaXZlcihoeDgzOTRfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9BVVRIT1IoIkthbWls IFRyemNpxYRza2kgPGF5dWZhbkBheXVmYW4uZXU+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigi RFJNIGRyaXZlciBmb3IgSGltYXggSFg4Mzk0IGJhc2VkIE1JUEkgRFNJIHBhbmVscyIpOwo+ICtN T0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gLS0gCj4gMi4zOC4xCj4gCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==