From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sandeep Panda Subject: [PATCH v7 1/4] drm/bridge: add support for sn65dsi86 bridge driver Date: Thu, 24 May 2018 22:11:16 +0530 Message-ID: <1527180079-12721-2-git-send-email-spanda@codeaurora.org> References: <1527180079-12721-1-git-send-email-spanda@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527180079-12721-1-git-send-email-spanda-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Sandeep Panda , abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, nganji-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, chandanu-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org List-Id: devicetree@vger.kernel.org QWRkIHN1cHBvcnQgZm9yIFRJJ3Mgc242NWRzaTg2IGRzaTJlZHAgYnJpZGdlIGNoaXAuClRoZSBj aGlwIGNvbnZlcnRzIERTSSB0cmFuc21pdHRlZCBzaWduYWwgdG8gZURQIHNpZ25hbCwKd2hpY2gg aXMgZmVkIHRvIHRoZSBjb25uZWN0ZWQgZURQIHBhbmVsLgoKVGhpcyBjaGlwIGNhbiBiZSBjb250 cm9sbGVkIHZpYSBlaXRoZXIgaTJjIGludGVyZmFjZSBvcgpkc2kgaW50ZXJmYWNlLiBDdXJyZW50 bHkgaW4gZHJpdmVyIGFsbCB0aGUgY29udHJvbCByZWdpc3RlcnMKYXJlIGJlaW5nIGFjY2Vzc2Vk IHRocm91Z2ggaTJjIGludGVyZmFjZSBvbmx5LgpBbHNvIGFzIG9mIG5vdyBIUEQgc3VwcG9ydCBo YXMgbm90IGJlZW4gYWRkZWQgdG8gYnJpZGdlCmNoaXAgZHJpdmVyLgoKQ2hhbmdlcyBpbiB2MToK IC0gU3BsaXQgdGhlIGR0LWJpbmRpbmdzIGFuZCB0aGUgZHJpdmVyIHN1cHBvcnQgaW50byBzZXBh cmF0ZSBwYXRjaGVzCiAgIChBbmRyemVqIEhhamRhKS4KIC0gVXNlIG9mIGdwaW9kIEFQSXMgdG8g cGFyc2UgYW5kIGNvbmZpZ3VyZSBncGlvcyBpbnN0ZWFkIG9mIG9ic29sZXRlIG9uZXMKICAgKEFu ZHJ6ZWogSGFqZGEpLgogLSBVc2UgbWFjcm9zIHRvIGRlZmluZSB0aGUgcmVnaXN0ZXIgb2Zmc2V0 cyAoQW5kcnplaiBIYWpkYSkuCgpDaGFuZ2VzIGluIHYyOgogLSBTZXBhcmF0ZSBvdXQgZWRwIHBh bmVsIHNwZWNpZmljIEhXIHJlc291cmNlIGhhbmRsaW5nIGZyb20gYnJpZGdlCiAgIGRyaXZlciBh bmQgY3JlYXRlIGEgc2VwYXJhdGUgZWRwIHBhbmVsIGRyaXZlcnMgdG8gaGFuZGxlIHBhbmVsCiAg IHNwZWNpZmljIG1vZGUgaW5mb3JtYXRpb24gYW5kIEhXIHJlc291cmNlcyAoU2VhbiBQYXVsKS4K IC0gUmVwbGFjZSBwcl8qIEFQSXMgdG8gRFJNXyogQVBJcyB0byBsb2cgZXJyb3Igb3IgZGVidWcg aW5mb3JtYXRpb24KICAgKFNlYW4gUGF1bCkuCiAtIFJlbW92ZSBzb21lIG9mIHRoZSB1bm5lY2Vz c2FyeSBzdHJ1Y3R1cmUvdmFyaWFibGUgZnJvbSBkcml2ZXIgKFNlYW4KICAgUGF1bCkuCiAtIFJl bmFtZSB0aGUgZnVuY3Rpb24gYW5kIHN0cnVjdHVyZSBwcmVmaXggInNuNjVkc2k4NiIgdG8gInRp X3NuX2JyaWRnZSIKICAgKFNlYW4gUGF1bCAvIFJvYiBIZXJyaW5nKS4KIC0gUmVtb3ZlIG1vc3Qg b2YgdGhlIGhhcmQtY29kaW5nIGFuZCBtb2RpZmllZCB0aGUgYnJpZGdlIGluaXQgc2VxdWVuY2UK ICAgYmFzZWQgb24gY3VycmVudCBtb2RlIChTZWFuIFBhdWwpLgogLSBSZW1vdmUgdGhlIGV4aXN0 aW5nIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBFRElEIGRhdGEgYW5kCiAgIGltcGxlbWVudGVk IHRoaXMgYXMgYW4gaTJjX2FkYXB0ZXIgYW5kIHVzZSBkcm1fZ2V0X2VkaWQoKSAoU2VhbiBQYXVs KS4KIC0gUmVtb3ZlIHRoZSBkdW1teSBpcnEgaGFuZGxlciBpbXBsZW1lbnRhdGlvbiwgd2lsbCBh ZGQgYmFjayB0aGUKICAgcHJvcGVyIGlycSBoYW5kbGluZyBsYXRlciAoU2VhbiBQYXVsKS4KIC0g Q2FwdHVyZSB0aGUgcmVxdWlyZWQgZW5hYmxlIGdwaW9zIGluIGEgc2luZ2xlIGFycmF5IGJhc2Vk IG9uIGR0IGVudHJ5CiAgIGluc3RlYWQgb2YgaGF2aW5nIGluZGl2aWR1YWwgZGVzY3JpcHRvciBm b3IgZWFjaCBncGlvIChTZWFuIFBhdWwpLgoKQ2hhbmdlcyBpbiB2MzoKIC0gUmVtb3ZlIHVzYWdl IG9mIGlycV9ncGlvIGFuZCByZXBsYWNlIGl0IGFzICJpbnRlcnJ1cHRzIiBwcm9wZXJ0eSAoUm9i CiAgIEhlcnJpbmcpLgogLSBSZW1vdmUgdGhlIHVubmVjZXNzYXJ5IGhlYWRlciBmaWxlIGluY2x1 c2lvbnMgKFNlYW4gUGF1bCkuCiAtIFJlYXJyYW5nZSB0aGUgaGVhZGVyIGZpbGVzIGluIGFscGhh YmV0aWNhbCBvcmRlciAoU2VhbiBQYXVsKS4KIC0gVXNlIHJlZ21hcCBpbnRlcmZhY2UgdG8gcGVy Zm9ybSBpMmMgdHJhbnNhY3Rpb25zLgogLSBVcGRhdGUgQ29weXJpZ2h0L0xpY2Vuc2UgZmllbGQg YW5kIGFkZHJlc3Mgb3RoZXIgcmV2aWV3IGNvbW1lbnRzCiAgIChKb3JkYW4gQ3JvdXNlKS4KCkNo YW5nZXMgaW4gdjQ6CiAtIFVwZGF0ZSBMaWNlbnNlL0NvcHlyaWdodCAoU2VhbiBQYXVsKS4KIC0g QWRkIEtjb25maWcgYW5kIE1ha2VmaWxlIGNoYW5nZXMgKFNlYW4gUGF1bCkuCiAtIERyb3AgaTJj IGdwaW8gaGFuZGxpbmcgZnJvbSB0aGlzIGJyaWRnZSBkcml2ZXIsIHNpbmNlIGkyYyBzZGEvc2Ns IGdwaW9zCiAgIHdpbGwgYmUgaGFuZGxlZCBieSBpMmMgbWFzdGVyLgogLSBVcGRhdGUgcmVxdWly ZWQgc3VwcGxpZXMgbmFtZXMuCiAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBnb3RvIHN0YXRlbWVudHMg KFNlYW4gUGF1bCkuCiAtIEFkZCBtdXRleCBsb2NrIHRvIHBvd2VyX2N0cmwgQVBJIHRvIGF2b2lk IHJhY2UgY29uZGl0aW9ucyAoU2VhbgogICBQYXVsKS4KIC0gQWRkIHN1cHBvcnQgdG8gcGFyc2Ug cmVmZXJlbmNlIGNsayBmcmVxdWVuY3kgZnJvbSBkdChvcHRpb25hbCkuCiAtIFVwZGF0ZSB0aGUg YnJpZGdlIGNoaXAgZW5hYmxlL2Rpc2FibGUgc2VxdWVuY2UuCgpDaGFuZ2VzIGluIHY1OgogLSBG aXhlZCBLYnVpbGQgdGVzdCBzZXJ2aWNlIHJlcG9ydGVkIHdhcm5pbmdzLgoKQ2hhbmdlcyBpbiB2 NjoKIC0gVXNlIFBNIHJ1bnRpbWUgYmFzZWQgcmVmLWNvdW50aW5nIGluc3RlYWQgb2YgbG9jYWwg cmVmX2NvdW50IG1lY2hhbmlzbQogICAoU3RlcGhlbiBCb3lkKS4KIC0gQ2xlYW4gdXAgc29tZSBk ZWJ1ZyBsb2dzIGFuZCBpbmRlbnRhdGlvbnMgKFNlYW4gUGF1bCkuCiAtIFNpbXBsaWZ5IGRwIHJh dGUgY2FsY3VsYXRpb24gKFNlYW4gUGF1bCkuCiAtIEFkZCBzdXBwb3J0IHRvIGNvbmZpZ3VyZSBy ZWZjbGsgYmFzZWQgb24gaW5wdXQgUkVGQ0xLIHBpbiBvciBEQUNQL04KICAgcGluIChTdGVwaGVu IEJveWQpLgoKQ2hhbmdlcyBpbiB2NzoKIC0gVXNlIHN0YXRpYyBzdXBwbHkgZW50cmllcyBpbnN0 ZWFkIG9mIGR5bmFtaWMgYWxsb2NhdGlvbiAoQW5kcnplagogICBIYWpkYSkuCiAtIERlZmVyIGJy aWRnZSBkcml2ZXIgcHJvYmUgaWYgcGFuZWwgaXMgbm90IHByb2JlZCAoQW5kcnplaiBIYWpkYSku CiAtIFVwZGF0ZSBvZl9ncmFwaCBBUElzIGZvciBjb3JyZWN0IG5vZGUgcmVmZXJlbmNlIG1hbmFn ZW1lbnQuIChBbmRyemVqCiAgIEhhamRhKS4KIC0gUmVtb3ZlIGxvY2FsIGRpc3BsYXlfbW9kZSBv YmplY3QgKEFuZHJ6ZWogSGFqZGEpLgogLSBSZW1vdmUgdmVyc2lvbiBpZCBjaGVjayBmdW5jdGlv biBmcm9tIGRyaXZlci4KClNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGFuZGEgPHNwYW5kYUBjb2Rl YXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAgICAgIHwg ICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICAgICAgfCAgIDEgKwogZHJp dmVycy9ncHUvZHJtL2JyaWRnZS90aS1zbjY1ZHNpODYuYyB8IDY3NSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY4NSBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS1zbjY1ZHNpODYuYwoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvS2NvbmZpZwppbmRleCAzYjk5ZDVhLi44MTUzMTUwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9LY29uZmlnCkBAIC0xMDgsNiArMTA4LDE1IEBAIGNvbmZpZyBEUk1fVElfVEZQNDEwCiAJLS0t aGVscC0tLQogCSAgVGV4YXMgSW5zdHJ1bWVudHMgVEZQNDEwIERWSS9IRE1JIFRyYW5zbWl0dGVy IGRyaXZlcgogCitjb25maWcgRFJNX1RJX1NONjVEU0k4NgorCXRyaXN0YXRlICJUSSBTTjY1RFNJ ODYgRFNJIHRvIGVEUCBicmlkZ2UiCisJZGVwZW5kcyBvbiBPRgorCXNlbGVjdCBEUk1fS01TX0hF TFBFUgorCXNlbGVjdCBSRUdNQVBfSTJDCisJc2VsZWN0IERSTV9QQU5FTAorCS0tLWhlbHAtLS0K KwkgIFRleGFzIEluc3RydW1lbnRzIFNONjVEU0k4NiBEU0kgdG8gZURQIEJyaWRnZSBkcml2ZXIK Kwogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L0tjb25maWciCiAKIHNv dXJjZSAiZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL0tjb25maWciCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9NYWtlZmlsZQppbmRleCAzNzNlYjI4Li4zNzExYmU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZp bGUKQEAgLTEyLDQgKzEyLDUgQEAgb2JqLSQoQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY3KSAr PSB0YzM1ODc2Ny5vCiBvYmotJChDT05GSUdfRFJNX0FOQUxPR0lYX0RQKSArPSBhbmFsb2dpeC8K IG9iai0kKENPTkZJR19EUk1fSTJDX0FEVjc1MTEpICs9IGFkdjc1MTEvCiBvYmotJChDT05GSUdf RFJNX1RJX1RGUDQxMCkgKz0gdGktdGZwNDEwLm8KK29iai0kKENPTkZJR19EUk1fVElfU042NURT STg2KSArPSB0aS1zbjY1ZHNpODYubwogb2JqLXkgKz0gc3lub3BzeXMvCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNuNjVkc2k4Ni5jIGIvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS90aS1zbjY1ZHNpODYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z YzcxNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS1zbjY1 ZHNpODYuYwpAQCAtMCwwICsxLDY3NSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fbWlw aV9kc2kuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5l bC5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KKyNp bmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncGlvLmg+CisjaW5jbHVk ZSA8bGludXgvb2ZfZ3JhcGguaD4KKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CisjaW5j bHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVy Lmg+CisKKy8qIExpbmsgVHJhaW5pbmcgc3BlY2lmaWMgcmVnaXN0ZXJzICovCisjZGVmaW5lIFNO X0RFVklDRV9SRVZfUkVHCQkJMHgwOAorI2RlZmluZSBTTl9IUERfRElTQUJMRV9SRUcJCQkweDVD CisjZGVmaW5lIFNOX1JFRkNMS19GUkVRX1JFRwkJCTB4MEEKKyNkZWZpbmUgU05fRFNJX0xBTkVT X1JFRwkJCTB4MTAKKyNkZWZpbmUgU05fRFNJQV9DTEtfRlJFUV9SRUcJCQkweDEyCisjZGVmaW5l IFNOX0VOSF9GUkFNRV9SRUcJCQkweDVBCisjZGVmaW5lIFNOX1NTQ19DT05GSUdfUkVHCQkJMHg5 MworI2RlZmluZSBTTl9EQVRBUkFURV9DT05GSUdfUkVHCQkJMHg5NAorI2RlZmluZSBTTl9QTExf RU5BQkxFX1JFRwkJCTB4MEQKKyNkZWZpbmUgU05fU0NSQU1CTEVfQ09ORklHX1JFRwkJCTB4OTUK KyNkZWZpbmUgU05fQVVYX1dEQVRBMF9SRUcJCQkweDY0CisjZGVmaW5lIFNOX0FVWF9BRERSXzE5 XzE2X1JFRwkJCTB4NzQKKyNkZWZpbmUgU05fQVVYX0FERFJfMTVfOF9SRUcJCQkweDc1CisjZGVm aW5lIFNOX0FVWF9BRERSXzdfMF9SRUcJCQkweDc2CisjZGVmaW5lIFNOX0FVWF9MRU5HVEhfUkVH CQkJMHg3NworI2RlZmluZSBTTl9BVVhfQ01EX1JFRwkJCQkweDc4CisjZGVmaW5lIFNOX01MX1RY X01PREVfUkVHCQkJMHg5NgorLyogdmlkZW8gY29uZmlnIHNwZWNpZmljIHJlZ2lzdGVycyAqLwor I2RlZmluZSBTTl9DSEFfQUNUSVZFX0xJTkVfTEVOR1RIX0xPV19SRUcJMHgyMAorI2RlZmluZSBT Tl9DSEFfQUNUSVZFX0xJTkVfTEVOR1RIX0hJR0hfUkVHCTB4MjEKKyNkZWZpbmUgU05fQ0hBX1ZF UlRJQ0FMX0RJU1BMQVlfU0laRV9MT1dfUkVHCTB4MjQKKyNkZWZpbmUgU05fQ0hBX1ZFUlRJQ0FM X0RJU1BMQVlfU0laRV9ISUdIX1JFRwkweDI1CisjZGVmaW5lIFNOX0NIQV9IU1lOQ19QVUxTRV9X SURUSF9MT1dfUkVHCTB4MkMKKyNkZWZpbmUgU05fQ0hBX0hTWU5DX1BVTFNFX1dJRFRIX0hJR0hf UkVHCTB4MkQKKyNkZWZpbmUgU05fQ0hBX1ZTWU5DX1BVTFNFX1dJRFRIX0xPV19SRUcJMHgzMAor I2RlZmluZSBTTl9DSEFfVlNZTkNfUFVMU0VfV0lEVEhfSElHSF9SRUcJMHgzMQorI2RlZmluZSBT Tl9DSEFfSE9SSVpPTlRBTF9CQUNLX1BPUkNIX1JFRwkweDM0CisjZGVmaW5lIFNOX0NIQV9WRVJU SUNBTF9CQUNLX1BPUkNIX1JFRwkJMHgzNgorI2RlZmluZSBTTl9DSEFfSE9SSVpPTlRBTF9GUk9O VF9QT1JDSF9SRUcJMHgzOAorI2RlZmluZSBTTl9DSEFfVkVSVElDQUxfRlJPTlRfUE9SQ0hfUkVH CQkweDNBCisjZGVmaW5lIFNOX0RBVEFfRk9STUFUX1JFRwkJCTB4NUIKKworI2RlZmluZSBNSU5f RFNJX0NMS19GUkVRX01IWgk0MAorCisvKiBmdWRnZSBmYWN0b3IgcmVxdWlyZWQgdG8gYWNjb3Vu dCBmb3IgOGIvMTBiIGVuY29kaW5nICovCisjZGVmaW5lIERQX0NMS19GVURHRV9OVU0JMTAKKyNk ZWZpbmUgRFBfQ0xLX0ZVREdFX0RFTgk4CisKKyNkZWZpbmUgRFBQTExfQ0xLX1NSQ19SRUZDTEsJ MAorI2RlZmluZSBEUFBMTF9DTEtfU1JDX0RTSUNMSwkxCisKKyNkZWZpbmUgU05fRFNJQV9SRUZD TEtfT0ZGU0VUCTEKKyNkZWZpbmUgU05fRFNJQV9MQU5FX09GRlNFVAkzCisjZGVmaW5lIFNOX0RQ X0xBTkVfT0ZGU0VUCTQKKyNkZWZpbmUgU05fRFBfREFUQV9SQVRFX09GRlNFVAk1CisjZGVmaW5l IFNOX1RJTUlOR19ISUdIX09GRlNFVAk4CisKKyNkZWZpbmUgU05fRU5BQkxFX1ZJRF9TVFJFQU1f QklUCUJJVCgzKQorI2RlZmluZSBTTl9EU0lBX05VTV9MQU5FU19CSVRTCQkoQklUKDQpIHwgQklU KDMpKQorI2RlZmluZSBTTl9EUF9OVU1fTEFORVNfQklUUwkJKEJJVCg1KSB8IEJJVCg0KSkKKyNk ZWZpbmUgU05fRFBfREFUQV9SQVRFX0JJVFMJCShCSVQoNykgfCBCSVQoNikgfCBCSVQoNSkpCisj ZGVmaW5lIFNOX0hQRF9ESVNBQkxFX0JJVAkJQklUKDApCisKKyNkZWZpbmUgU05fUkVHVUxBVE9S X1NVUFBMWV9OVU0JCTQKKworc3RydWN0IHRpX3NuX2JyaWRnZSB7CisJc3RydWN0IGRldmljZQkJ CSpkZXY7CisJc3RydWN0IHJlZ21hcAkJCSpyZWdtYXA7CisJc3RydWN0IGRybV9icmlkZ2UJCWJy aWRnZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvcgkJY29ubmVjdG9yOworCXN0cnVjdCBkZXZpY2Vf bm9kZQkJKmhvc3Rfbm9kZTsKKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlCQkqZHNpOworCXN0cnVj dCBjbGsJCQkqcmVmY2xrOworCXN0cnVjdCBkcm1fcGFuZWwJCSpwYW5lbDsKKwlzdHJ1Y3QgZ3Bp b19kZXNjCQkqZW5hYmxlX2dwaW87CisJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEJc3VwcGxp ZXNbU05fUkVHVUxBVE9SX1NVUFBMWV9OVU1dOworCXN0cnVjdCBpMmNfYWRhcHRlcgkJKmRkYzsK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX3JhbmdlIHRpX3NuX2JyaWRnZV92b2xh dGlsZV9yYW5nZXNbXSA9IHsKKwl7IC5yYW5nZV9taW4gPSAwLCAucmFuZ2VfbWF4ID0gMHhmZiB9 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3RhYmxlIHRpX3NuX2Jy aWRnZV92b2xhdGlsZV90YWJsZSA9IHsKKwkueWVzX3JhbmdlcyA9IHRpX3NuX2JyaWRnZV92b2xh dGlsZV9yYW5nZXMsCisJLm5feWVzX3JhbmdlcyA9IEFSUkFZX1NJWkUodGlfc25fYnJpZGdlX3Zv bGF0aWxlX3JhbmdlcyksCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcg dGlfc25fYnJpZGdlX3JlZ21hcF9jb25maWcgPSB7CisJLnJlZ19iaXRzID0gOCwKKwkudmFsX2Jp dHMgPSA4LAorCS52b2xhdGlsZV90YWJsZSA9ICZ0aV9zbl9icmlkZ2Vfdm9sYXRpbGVfdGFibGUs CisJLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLAorfTsKKworc3RhdGljIGludCBfX21heWJl X3VudXNlZCB0aV9zbl9icmlkZ2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCByZXQg PSAwOworCisJcmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKFNOX1JFR1VMQVRPUl9TVVBQTFlf TlVNLCBwZGF0YS0+c3VwcGxpZXMpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQg dG8gZW5hYmxlIHN1cHBsaWVzICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWdw aW9kX3NldF92YWx1ZShwZGF0YS0+ZW5hYmxlX2dwaW8sIDEpOworCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGludCBfX21heWJlX3VudXNlZCB0aV9zbl9icmlkZ2Vfc3VzcGVuZChzdHJ1Y3Qg ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKKwlpbnQgcmV0ID0gMDsKKworCWdwaW9kX3NldF92YWx1ZShwZGF0YS0+ZW5h YmxlX2dwaW8sIDApOworCisJcmV0ID0gcmVndWxhdG9yX2J1bGtfZGlzYWJsZShTTl9SRUdVTEFU T1JfU1VQUExZX05VTSwgcGRhdGEtPnN1cHBsaWVzKTsKKwlpZiAocmV0KQorCQlEUk1fRVJST1Io ImZhaWxlZCB0byBkaXNhYmxlIHN1cHBsaWVzICVkXG4iLCByZXQpOworCisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHRpX3NuX2JyaWRnZV9wbV9vcHMg PSB7CisJU0VUX1JVTlRJTUVfUE1fT1BTKHRpX3NuX2JyaWRnZV9zdXNwZW5kLCB0aV9zbl9icmlk Z2VfcmVzdW1lLCBOVUxMKQorfTsKKworLyogQ29ubmVjdG9yIGZ1bmNzICovCitzdGF0aWMgc3Ry dWN0IHRpX3NuX2JyaWRnZSAqCitjb25uZWN0b3JfdG9fdGlfc25fYnJpZGdlKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3Is IHN0cnVjdCB0aV9zbl9icmlkZ2UsIGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBpbnQgdGlfc25f YnJpZGdlX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikKK3sKKwlzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGNvbm5lY3Rvcl90b190aV9zbl9i cmlkZ2UoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgZWRpZCAqZWRpZDsKKwl1MzIgbnVtX21vZGVzOwor CisJaWYgKHBkYXRhLT5wYW5lbCkgeworCQlEUk1fREVCVUdfS01TKCJnZXQgbW9kZSBmcm9tIGNv bm5lY3RlZCBkcm1fcGFuZWxcbiIpOworCQlyZXR1cm4gZHJtX3BhbmVsX2dldF9tb2RlcyhwZGF0 YS0+cGFuZWwpOworCX0KKworCWlmICghcGRhdGEtPmRkYykKKwkJcmV0dXJuIDA7CisKKwlwbV9y dW50aW1lX2dldF9zeW5jKHBkYXRhLT5kZXYpOworCWVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVj dG9yLCBwZGF0YS0+ZGRjKTsKKwlwbV9ydW50aW1lX3B1dF9zeW5jKHBkYXRhLT5kZXYpOworCWlm ICghZWRpZCkKKwkJcmV0dXJuIDA7CisKKwlkcm1fbW9kZV9jb25uZWN0b3JfdXBkYXRlX2VkaWRf cHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsKKwludW1fbW9kZXMgPSBkcm1fYWRkX2VkaWRfbW9k ZXMoY29ubmVjdG9yLCBlZGlkKTsKKwlrZnJlZShlZGlkKTsKKworCXJldHVybiBudW1fbW9kZXM7 Cit9CisKK3N0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cwordGlfc25fYnJpZGdlX2Nvbm5lY3Rv cl9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCS8qIG1heGltdW0gc3VwcG9ydGVkIHJl c29sdXRpb24gaXMgNEsgYXQgNjAgZnBzICovCisJaWYgKG1vZGUtPmNsb2NrID4gNTk0MDAwKQor CQlyZXR1cm4gTU9ERV9DTE9DS19ISUdIOworCisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgdGlfc25fYnJpZGdlX2Nvbm5lY3Rv cl9oZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9IHRpX3NuX2JyaWRnZV9jb25uZWN0b3Jf Z2V0X21vZGVzLAorCS5tb2RlX3ZhbGlkID0gdGlfc25fYnJpZGdlX2Nvbm5lY3Rvcl9tb2RlX3Zh bGlkLAorfTsKKworc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKK3RpX3NuX2JyaWRn ZV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wg Zm9yY2UpCit7CisJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBjb25uZWN0b3JfdG9fdGlf c25fYnJpZGdlKGNvbm5lY3Rvcik7CisKKwkvKioKKwkgKiBUT0RPOiBDdXJyZW50bHkgaWYgZHJt X3BhbmVsIGlzIHByZXNlbnQsIHRoZW4gYWx3YXlzCisJICogcmV0dXJuIHRoZSBzdGF0dXMgYXMg Y29ubmVjdGVkLiBOZWVkIHRvIGFkZCBzdXBwb3J0IHRvIGRldGVjdAorCSAqIGRldmljZSBzdGF0 ZSBmb3Igbm8gcGFuZWwoaG90IHBsdWdnYWJsZSkgc2NlbmFyaW9zLgorCSAqLworCWlmIChwZGF0 YS0+cGFuZWwpCisJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKKwllbHNlCisJ CXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX3Vua25vd247Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB0aV9zbl9icmlkZ2VfY29ubmVjdG9yX2Z1bmNzID0gewor CS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAor CS5kZXRlY3QgPSB0aV9zbl9icmlkZ2VfY29ubmVjdG9yX2RldGVjdCwKKwkuZGVzdHJveSA9IGRy bV9jb25uZWN0b3JfY2xlYW51cCwKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0 b3JfcmVzZXQsCisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9j b25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9h dG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAorfTsKKworc3RhdGljIHN0cnVj dCB0aV9zbl9icmlkZ2UgKmJyaWRnZV90b190aV9zbl9icmlkZ2Uoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKGJyaWRnZSwgc3RydWN0IHRpX3NuX2Jy aWRnZSwgYnJpZGdlKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0aV9zbl9icmlk Z2Vfc3VwcGx5X25hbWVzW10gPSB7CisJInZjY2EiLAorCSJ2Y2MiLAorCSJ2Y2NpbyIsCisJInZw bGwiLAorfTsKKworc3RhdGljIGludCB0aV9zbl9icmlkZ2VfcGFyc2VfcmVndWxhdG9ycyhzdHJ1 Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9 IDA7IGkgPCBTTl9SRUdVTEFUT1JfU1VQUExZX05VTTsgaSsrKQorCQlwZGF0YS0+c3VwcGxpZXNb aV0uc3VwcGx5ID0gdGlfc25fYnJpZGdlX3N1cHBseV9uYW1lc1tpXTsKKworCXJldHVybiBkZXZt X3JlZ3VsYXRvcl9idWxrX2dldChwZGF0YS0+ZGV2LCBTTl9SRUdVTEFUT1JfU1VQUExZX05VTSwK KwkJCQkgICAgICAgcGRhdGEtPnN1cHBsaWVzKTsKK30KKworc3RhdGljIGludCB0aV9zbl9icmlk Z2VfYXR0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7CisJc3RydWN0IG1pcGlfZHNp X2hvc3QgKmhvc3Q7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpOworCXN0cnVjdCB0aV9z bl9icmlkZ2UgKnBkYXRhID0gYnJpZGdlX3RvX3RpX3NuX2JyaWRnZShicmlkZ2UpOworCWludCBy ZXQ7CisJY29uc3Qgc3RydWN0IG1pcGlfZHNpX2RldmljZV9pbmZvIGluZm8gPSB7IC50eXBlID0g InRpX3NuX2JyaWRnZSIsCisJCQkJCQkgICAuY2hhbm5lbCA9IDAsCisJCQkJCQkgICAubm9kZSA9 IE5VTEwsCisJCQkJCQkgfTsKKworCWlmICghYnJpZGdlLT5lbmNvZGVyKSB7CisJCURSTV9FUlJP UigiUGFyZW50IGVuY29kZXIgb2JqZWN0IG5vdCBmb3VuZFxuIik7CisJCXJldHVybiAtRU5PREVW OworCX0KKworCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChicmlkZ2UtPmRldiwgJnBkYXRhLT5j b25uZWN0b3IsCisJCQkJICZ0aV9zbl9icmlkZ2VfY29ubmVjdG9yX2Z1bmNzLAorCQkJCSBEUk1f TU9ERV9DT05ORUNUT1JfZURQKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRv IGluaXRpYWxpemUgY29ubmVjdG9yIHdpdGggZHJtXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisK Kwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJnBkYXRhLT5jb25uZWN0b3IsCisJCQkJICZ0aV9z bl9icmlkZ2VfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisJZHJtX21vZGVfY29ubmVjdG9yX2F0 dGFjaF9lbmNvZGVyKCZwZGF0YS0+Y29ubmVjdG9yLCBicmlkZ2UtPmVuY29kZXIpOworCisJaG9z dCA9IG9mX2ZpbmRfbWlwaV9kc2lfaG9zdF9ieV9ub2RlKHBkYXRhLT5ob3N0X25vZGUpOworCWlm ICghaG9zdCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBmaW5kIGRzaSBob3N0XG4iKTsKKwkJ cmV0dXJuIC1FTk9ERVY7CisJfQorCisJZHNpID0gbWlwaV9kc2lfZGV2aWNlX3JlZ2lzdGVyX2Z1 bGwoaG9zdCwgJmluZm8pOworCWlmIChJU19FUlIoZHNpKSkgeworCQlEUk1fRVJST1IoImZhaWxl ZCB0byBjcmVhdGUgZHNpIGRldmljZVxuIik7CisJCXJldCA9IFBUUl9FUlIoZHNpKTsKKwkJcmV0 dXJuIHJldDsKKwl9CisKKwkvKiBUT0RPOiBzZXR0aW5nIHRvIDQgbGFuZXMgYWx3YXlzIGZvciBu b3cgKi8KKwlkc2ktPmxhbmVzID0gNDsKKwlkc2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4 ODg7CisJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01P REVfVklERU9fU1lOQ19QVUxTRSB8CisJCQkgIE1JUElfRFNJX01PREVfRU9UX1BBQ0tFVCB8IE1J UElfRFNJX01PREVfVklERU9fSFNFOworCisJcmV0ID0gbWlwaV9kc2lfYXR0YWNoKGRzaSk7CisJ aWYgKHJldCA8IDApIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gYXR0YWNoIGRzaSB0byBob3N0 XG4iKTsKKwkJbWlwaV9kc2lfZGV2aWNlX3VucmVnaXN0ZXIoZHNpKTsKKwkJcmV0dXJuIHJldDsK Kwl9CisKKwlwZGF0YS0+ZHNpID0gZHNpOworCisJRFJNX0RFQlVHX0tNUygidGlfc25fYnJpZGdl IGF0dGFjaGVkIHRvIGRzaVxuIik7CisJLyogYXR0YWNoIHBhbmVsIHRvIGJyaWRnZSAqLworCWlm IChwZGF0YS0+cGFuZWwpCisJCWRybV9wYW5lbF9hdHRhY2gocGRhdGEtPnBhbmVsLCAmcGRhdGEt PmNvbm5lY3Rvcik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGlfc25fYnJpZGdl X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlzdHJ1Y3QgdGlfc25fYnJp ZGdlICpwZGF0YSA9IGJyaWRnZV90b190aV9zbl9icmlkZ2UoYnJpZGdlKTsKKworCWlmIChwZGF0 YS0+cGFuZWwpIHsKKwkJZHJtX3BhbmVsX2Rpc2FibGUocGRhdGEtPnBhbmVsKTsKKwkJZHJtX3Bh bmVsX3VucHJlcGFyZShwZGF0YS0+cGFuZWwpOworCX0KKworCS8qIGRpc2FibGUgdmlkZW8gc3Ry ZWFtICovCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHBkYXRhLT5yZWdtYXAsIFNOX0VOSF9GUkFNRV9S RUcsCisJCQkgICBTTl9FTkFCTEVfVklEX1NUUkVBTV9CSVQsIDApOworCS8qIHNlbWkgYXV0byBs aW5rIHRyYWluaW5nIG1vZGUgT0ZGICovCisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNO X01MX1RYX01PREVfUkVHLCAwKTsKKwkvKiBkaXNhYmxlIERQIFBMTCAqLworCXJlZ21hcF93cml0 ZShwZGF0YS0+cmVnbWFwLCBTTl9QTExfRU5BQkxFX1JFRywgMCk7Cit9CisKK3N0YXRpYyB1MzIg dGlfc25fYnJpZGdlX2dldF9kc2lfZnJlcShzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkKK3sK Kwl1MzIgYml0X3JhdGVfa2h6LCBjbGtfZnJlcV9raHo7CisJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUgPQorCQkmcGRhdGEtPmJyaWRnZS5lbmNvZGVyLT5jcnRjLT5zdGF0ZS0+YWRqdXN0 ZWRfbW9kZTsKKworCWJpdF9yYXRlX2toeiA9IG1vZGUtPmNsb2NrICoKKwkJCW1pcGlfZHNpX3Bp eGVsX2Zvcm1hdF90b19icHAocGRhdGEtPmRzaS0+Zm9ybWF0KTsKKwljbGtfZnJlcV9raHogPSBi aXRfcmF0ZV9raHogLyAocGRhdGEtPmRzaS0+bGFuZXMgKiAyKTsKKworCXJldHVybiBjbGtfZnJl cV9raHo7Cit9CisKKyNkZWZpbmUgUkVGQ0xLX0xVVF9TSVpFCTUKKworLyogY2xrIGZyZXF1ZW5j aWVzIHN1cHBvcnRlZCBieSBicmlkZ2UgaW4gSHogaW4gY2FzZSBkZXJpdmVkIGZyb20gUkVGQ0xL IHBpbiAqLworc3RhdGljIGNvbnN0IHUzMiB0aV9zbl9icmlkZ2VfcmVmY2xrX2x1dFtdID0gewor CTEyMDAwMDAwLAorCTE5MjAwMDAwLAorCTI2MDAwMDAwLAorCTI3MDAwMDAwLAorCTM4NDAwMDAw LAorfTsKKworLyogY2xrIGZyZXF1ZW5jaWVzIHN1cHBvcnRlZCBieSBicmlkZ2UgaW4gSHogaW4g Y2FzZSBkZXJpdmVkIGZyb20gREFDUC9OIHBpbiAqLworc3RhdGljIGNvbnN0IHUzMiB0aV9zbl9i cmlkZ2VfZHNpY2xrX2x1dFtdID0geworCTQ2ODAwMDAwMCwKKwkzODQwMDAwMDAsCisJNDE2MDAw MDAwLAorCTQ4NjAwMDAwMCwKKwk0NjA4MDAwMDAsCit9OworCitzdGF0aWMgdm9pZCB0aV9zbl9i cmlkZ2Vfc2V0X3JlZmNsayhzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkKK3sKKwlpbnQgaSA9 IDA7CisJdTggcmVmY2xrX3NyYzsKKwl1MzIgcmVmY2xrX3JhdGU7CisJY29uc3QgdTMyICpyZWZj bGtfbHV0OworCisJaWYgKHBkYXRhLT5yZWZjbGspIHsKKwkJcmVmY2xrX3NyYyA9IERQUExMX0NM S19TUkNfUkVGQ0xLOworCQlyZWZjbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShwZGF0YS0+cmVmY2xr KTsKKwkJcmVmY2xrX2x1dCA9IHRpX3NuX2JyaWRnZV9yZWZjbGtfbHV0OworCQljbGtfcHJlcGFy ZV9lbmFibGUocGRhdGEtPnJlZmNsayk7CisJfSBlbHNlIHsKKwkJcmVmY2xrX3NyYyA9IERQUExM X0NMS19TUkNfRFNJQ0xLOworCQlyZWZjbGtfcmF0ZSA9IHRpX3NuX2JyaWRnZV9nZXRfZHNpX2Zy ZXEocGRhdGEpICogMTAwMDsKKwkJcmVmY2xrX2x1dCA9IHRpX3NuX2JyaWRnZV9kc2ljbGtfbHV0 OworCX0KKworCS8qIGZvciBpIGVxdWFscyB0byBSRUZDTEtfTFVUX1NJWkUgbWVhbnMgZGVmYXVs dCBmcmVxdWVuY3kgKi8KKwlmb3IgKGkgPSAwOyBpIDwgUkVGQ0xLX0xVVF9TSVpFOyBpKyspCisJ CWlmIChyZWZjbGtfbHV0W2ldID09IHJlZmNsa19yYXRlKQorCQkJYnJlYWs7CisKKwlyZWdtYXBf d3JpdGUocGRhdGEtPnJlZ21hcCwgU05fUkVGQ0xLX0ZSRVFfUkVHLAorCQkgICAgIChyZWZjbGtf c3JjIHwgKGkgPDwgU05fRFNJQV9SRUZDTEtfT0ZGU0VUKSkpOworfQorCisvKioKKyAqIExVVCBp bmRleCBjb3JyZXNwb25kcyB0byByZWdpc3RlciB2YWx1ZSBhbmQKKyAqIExVVCB2YWx1ZXMgY29y cmVzcG9uZHMgdG8gZHAgZGF0YSByYXRlIHN1cHBvcnRlZAorICogYnkgdGhlIGJyaWRnZSBpbiBN YnBzIHVuaXQuCisgKi8KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdGlfc25fYnJpZGdlX2Rw X3JhdGVfbHV0W10gPSB7CisJMCwgMTYyMCwgMjE2MCwgMjQzMCwgMjcwMCwgMzI0MCwgNDMyMCwg NTQwMAorfTsKKworc3RhdGljIHZvaWQgdGlfc25fYnJpZGdlX3NldF9kc2lfZHBfcmF0ZShzdHJ1 Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkKK3sKKwl1bnNpZ25lZCBpbnQgYml0X3JhdGVfbWh6LCBj bGtfZnJlcV9taHosIGRwX3JhdGVfbWh6OworCXVuc2lnbmVkIGludCB2YWwgPSAwLCBpID0gMDsK KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9CisJCSZwZGF0YS0+YnJpZGdlLmVuY29k ZXItPmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOworCisJLyogc2V0IERTSUEgY2xrIGZyZXF1 ZW5jeSAqLworCWJpdF9yYXRlX21oeiA9IChtb2RlLT5jbG9jayAvIDEwMDApICoKKwkJCW1pcGlf ZHNpX3BpeGVsX2Zvcm1hdF90b19icHAocGRhdGEtPmRzaS0+Zm9ybWF0KTsKKwljbGtfZnJlcV9t aHogPSBiaXRfcmF0ZV9taHogLyAocGRhdGEtPmRzaS0+bGFuZXMgKiAyKTsKKworCS8qIGZvciBl YWNoIGluY3JlbWVudCBpbiB2YWwsIGZyZXF1ZW5jeSBpbmNyZWFzZXMgYnkgNU1IeiAqLworCXZh bCA9IChNSU5fRFNJX0NMS19GUkVRX01IWiAvIDUpICsKKwkJKCgoY2xrX2ZyZXFfbWh6IC0gTUlO X0RTSV9DTEtfRlJFUV9NSFopIC8gNSkgJiAweEZGKTsKKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJl Z21hcCwgU05fRFNJQV9DTEtfRlJFUV9SRUcsIHZhbCk7CisKKwkvKiBzZXQgRFAgZGF0YSByYXRl ICovCisJZHBfcmF0ZV9taHogPSAoKGJpdF9yYXRlX21oeiAvIHBkYXRhLT5kc2ktPmxhbmVzKSAq IERQX0NMS19GVURHRV9OVU0pIC8KKwkJCQkJCQlEUF9DTEtfRlVER0VfREVOOworCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHRpX3NuX2JyaWRnZV9kcF9yYXRlX2x1dCkgLSAxOyBpKyspCisJ CWlmICh0aV9zbl9icmlkZ2VfZHBfcmF0ZV9sdXRbaV0gPiBkcF9yYXRlX21oeikKKwkJCWJyZWFr OworCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHBkYXRhLT5yZWdtYXAsIFNOX0RBVEFSQVRFX0NPTkZJ R19SRUcsCisJCQkgICBTTl9EUF9EQVRBX1JBVEVfQklUUywgaSA8PCBTTl9EUF9EQVRBX1JBVEVf T0ZGU0VUKTsKK30KKworc3RhdGljIHZvaWQgdGlfc25fYnJpZGdlX3NldF92aWRlb190aW1pbmdz KHN0cnVjdCB0aV9zbl9icmlkZ2UgKnBkYXRhKQoreworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlID0KKwkJJnBkYXRhLT5icmlkZ2UuZW5jb2Rlci0+Y3J0Yy0+c3RhdGUtPmFkanVzdGVk X21vZGU7CisKKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQ0hBX0FDVElWRV9MSU5F X0xFTkdUSF9MT1dfUkVHLAorCQkgICAgIG1vZGUtPmhkaXNwbGF5ICYgMHhGRik7CisJcmVnbWFw X3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX0NIQV9BQ1RJVkVfTElORV9MRU5HVEhfSElHSF9SRUcs CisJCSAgICAgKG1vZGUtPmhkaXNwbGF5ID4+IFNOX1RJTUlOR19ISUdIX09GRlNFVCkgJiAweEZG KTsKKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQ0hBX1ZFUlRJQ0FMX0RJU1BMQVlf U0laRV9MT1dfUkVHLAorCQkgICAgIG1vZGUtPnZkaXNwbGF5ICYgMHhGRik7CisJcmVnbWFwX3dy aXRlKHBkYXRhLT5yZWdtYXAsIFNOX0NIQV9WRVJUSUNBTF9ESVNQTEFZX1NJWkVfSElHSF9SRUcs CisJCSAgICAgKG1vZGUtPnZkaXNwbGF5ID4+IFNOX1RJTUlOR19ISUdIX09GRlNFVCkgJiAweEZG KTsKKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQ0hBX0hTWU5DX1BVTFNFX1dJRFRI X0xPV19SRUcsCisJCSAgICAgKG1vZGUtPmhzeW5jX2VuZCAtIG1vZGUtPmhzeW5jX3N0YXJ0KSAm IDB4RkYpOworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9DSEFfSFNZTkNfUFVMU0Vf V0lEVEhfSElHSF9SRUcsCisJCSAgICAgKChtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19z dGFydCkgPj4KKwkJICAgICAgU05fVElNSU5HX0hJR0hfT0ZGU0VUKSAmIDB4RkYpOworCXJlZ21h cF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9DSEFfVlNZTkNfUFVMU0VfV0lEVEhfTE9XX1JFRywK KwkJICAgICAobW9kZS0+dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNfc3RhcnQpICYgMHhGRik7CisJ cmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX0NIQV9WU1lOQ19QVUxTRV9XSURUSF9ISUdI X1JFRywKKwkJICAgICAoKG1vZGUtPnZzeW5jX2VuZCAtIG1vZGUtPnZzeW5jX3N0YXJ0KSA+Pgor CQkgICAgICBTTl9USU1JTkdfSElHSF9PRkZTRVQpICYgMHhGRik7CisJcmVnbWFwX3dyaXRlKHBk YXRhLT5yZWdtYXAsIFNOX0NIQV9IT1JJWk9OVEFMX0JBQ0tfUE9SQ0hfUkVHLAorCQkgICAgICht b2RlLT5odG90YWwgLSBtb2RlLT5oc3luY19lbmQpICYgMHhGRik7CisJcmVnbWFwX3dyaXRlKHBk YXRhLT5yZWdtYXAsIFNOX0NIQV9WRVJUSUNBTF9CQUNLX1BPUkNIX1JFRywKKwkJICAgICAobW9k ZS0+dnRvdGFsIC0gbW9kZS0+dnN5bmNfZW5kKSAmIDB4RkYpOworCXJlZ21hcF93cml0ZShwZGF0 YS0+cmVnbWFwLCBTTl9DSEFfSE9SSVpPTlRBTF9GUk9OVF9QT1JDSF9SRUcsCisJCSAgICAgKG1v ZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXkpICYgMHhGRik7CisJcmVnbWFwX3dyaXRl KHBkYXRhLT5yZWdtYXAsIFNOX0NIQV9WRVJUSUNBTF9GUk9OVF9QT1JDSF9SRUcsCisJCSAgICAg KG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXkpICYgMHhGRik7CisJdXNsZWVwX3Jh bmdlKDEwMDAwLCAxMDUwMCk7IC8qIDEwbXMgZGVsYXkgcmVjb21tZW5kZWQgYnkgc3BlYyAqLwor fQorCitzdGF0aWMgdm9pZCB0aV9zbl9icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpCit7CisJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBicmlkZ2VfdG9fdGlfc25f YnJpZGdlKGJyaWRnZSk7CisJdW5zaWduZWQgaW50IHZhbCA9IDA7CisKKwlpZiAocGRhdGEtPnBh bmVsKSB7CisJCWRybV9wYW5lbF9wcmVwYXJlKHBkYXRhLT5wYW5lbCk7CisJCS8qIGluIGNhc2Ug ZHJtX3BhbmVsIGlzIGNvbm5lY3RlZCB0aGVuIEhQRCBpcyBub3Qgc3VwcG9ydGVkICovCisJCXJl Z21hcF91cGRhdGVfYml0cyhwZGF0YS0+cmVnbWFwLCBTTl9IUERfRElTQUJMRV9SRUcsCisJCQkJ ICAgU05fSFBEX0RJU0FCTEVfQklULCBTTl9IUERfRElTQUJMRV9CSVQpOworCX0KKworCS8qIERT SV9BIGxhbmUgY29uZmlnICovCisJdmFsID0gKDQgLSBwZGF0YS0+ZHNpLT5sYW5lcykgPDwgU05f RFNJQV9MQU5FX09GRlNFVDsKKwlyZWdtYXBfdXBkYXRlX2JpdHMocGRhdGEtPnJlZ21hcCwgU05f RFNJX0xBTkVTX1JFRywKKwkJCSAgIFNOX0RTSUFfTlVNX0xBTkVTX0JJVFMsIHZhbCk7CisKKwkv KiBEUCBsYW5lIGNvbmZpZyAqLworCXZhbCA9IChwZGF0YS0+ZHNpLT5sYW5lcyAtIDEpIDw8IFNO X0RQX0xBTkVfT0ZGU0VUOworCXJlZ21hcF91cGRhdGVfYml0cyhwZGF0YS0+cmVnbWFwLCBTTl9T U0NfQ09ORklHX1JFRywKKwkJCSAgIFNOX0RQX05VTV9MQU5FU19CSVRTLCB2YWwpOworCisJLyog c2V0IGRzaS9kcCBjbGsgZnJlcXVlbmN5IHZhbHVlICovCisJdGlfc25fYnJpZGdlX3NldF9kc2lf ZHBfcmF0ZShwZGF0YSk7CisKKwkvKiBlbmFibGUgRFAgUExMICovCisJcmVnbWFwX3dyaXRlKHBk YXRhLT5yZWdtYXAsIFNOX1BMTF9FTkFCTEVfUkVHLCAxKTsKKwl1c2xlZXBfcmFuZ2UoMTAwMDAs IDEwNTAwKTsgLyogMTBtcyBkZWxheSByZWNvbW1lbmRlZCBieSBzcGVjICovCisKKwkvKioKKwkg KiBUaGUgU042NURTSTg2IG9ubHkgc3VwcG9ydHMgQVNTUiBEaXNwbGF5IEF1dGhlbnRpY2F0aW9u IG1ldGhvZCBhbmQKKwkgKiB0aGlzIG1ldGhvZCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuIEFuIGVE UCBwYW5lbCBtdXN0IHN1cHBvcnQgdGhpcworCSAqIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4gV2Ug bmVlZCB0byBlbmFibGUgdGhpcyBtZXRob2QgaW4gdGhlIGVEUCBwYW5lbAorCSAqIGF0IERpc3Bs YXlQb3J0IGFkZHJlc3MgMHgwMDEwQSBwcmlvciB0byBsaW5rIHRyYWluaW5nLgorCSAqLworCXJl Z21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9BVVhfV0RBVEEwX1JFRywgMHgwMSk7CisJcmVn bWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX0FVWF9BRERSXzE5XzE2X1JFRywgMHgwMCk7CisJ cmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX0FVWF9BRERSXzE1XzhfUkVHLCAweDAxKTsK KwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQVVYX0FERFJfN18wX1JFRywgMHgwQSk7 CisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX0FVWF9MRU5HVEhfUkVHLCAweDAxKTsK KwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQVVYX0NNRF9SRUcsIDB4ODEpOworCXVz bGVlcF9yYW5nZSgxMDAwMCwgMTA1MDApOyAvKiAxMG1zIGRlbGF5IHJlY29tbWVuZGVkIGJ5IHNw ZWMgKi8KKworCS8qIFNlbWkgYXV0byBsaW5rIHRyYWluaW5nIG1vZGUgKi8KKwlyZWdtYXBfd3Jp dGUocGRhdGEtPnJlZ21hcCwgU05fTUxfVFhfTU9ERV9SRUcsIDB4MEEpOworCW1zbGVlcCgyMCk7 IC8qIDIwbXMgZGVsYXkgcmVjb21tZW5kZWQgYnkgc3BlYyAqLworCisJLyogY29uZmlnIHZpZGVv IHBhcmFtZXRlcnMgKi8KKwl0aV9zbl9icmlkZ2Vfc2V0X3ZpZGVvX3RpbWluZ3MocGRhdGEpOwor CisJLyogZW5hYmxlIHZpZGVvIHN0cmVhbSAqLworCXJlZ21hcF91cGRhdGVfYml0cyhwZGF0YS0+ cmVnbWFwLCBTTl9FTkhfRlJBTUVfUkVHLAorCQkJICAgU05fRU5BQkxFX1ZJRF9TVFJFQU1fQklU LCBTTl9FTkFCTEVfVklEX1NUUkVBTV9CSVQpOworCisJaWYgKHBkYXRhLT5wYW5lbCkKKwkJZHJt X3BhbmVsX2VuYWJsZShwZGF0YS0+cGFuZWwpOworfQorCitzdGF0aWMgdm9pZCB0aV9zbl9icmlk Z2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQoreworCXN0cnVjdCB0aV9z bl9icmlkZ2UgKnBkYXRhID0gYnJpZGdlX3RvX3RpX3NuX2JyaWRnZShicmlkZ2UpOworCisJcG1f cnVudGltZV9nZXRfc3luYyhwZGF0YS0+ZGV2KTsKKworCS8qIGNvbmZpZ3VyZSBicmlkZ2UgQ0xL X1NSQyBhbmQgcmVmX2NsayAqLworCXRpX3NuX2JyaWRnZV9zZXRfcmVmY2xrKHBkYXRhKTsKK30K Kworc3RhdGljIHZvaWQgdGlfc25fYnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQoreworCXN0cnVjdCB0aV9zbl9icmlkZ2UgKnBkYXRhID0gYnJpZGdlX3RvX3Rp X3NuX2JyaWRnZShicmlkZ2UpOworCisJaWYgKHBkYXRhLT5yZWZjbGspCisJCWNsa19kaXNhYmxl X3VucHJlcGFyZShwZGF0YS0+cmVmY2xrKTsKKworCXBtX3J1bnRpbWVfcHV0X3N5bmMocGRhdGEt PmRldik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyB0aV9zbl9i cmlkZ2VfZnVuY3MgPSB7CisJLmF0dGFjaCA9IHRpX3NuX2JyaWRnZV9hdHRhY2gsCisJLnByZV9l bmFibGUgPSB0aV9zbl9icmlkZ2VfcHJlX2VuYWJsZSwKKwkuZW5hYmxlID0gdGlfc25fYnJpZGdl X2VuYWJsZSwKKwkuZGlzYWJsZSA9IHRpX3NuX2JyaWRnZV9kaXNhYmxlLAorCS5wb3N0X2Rpc2Fi bGUgPSB0aV9zbl9icmlkZ2VfcG9zdF9kaXNhYmxlLAorfTsKKworc3RhdGljIGludCB0aV9zbl9i cmlkZ2VfcGFyc2VfZHNpX2hvc3Qoc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEpCit7CisJc3Ry dWN0IGRldmljZV9ub2RlICpucCA9IHBkYXRhLT5kZXYtPm9mX25vZGU7CisKKwlwZGF0YS0+aG9z dF9ub2RlID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9ub2RlKG5wLCAwLCAwKTsKKworCWlmICghcGRh dGEtPmhvc3Rfbm9kZSkgeworCQlEUk1fRVJST1IoInJlbW90ZSBkc2kgaG9zdCBub2RlIG5vdCBm b3VuZFxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKwlvZl9ub2RlX3B1dChwZGF0YS0+aG9z dF9ub2RlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRpX3NuX2JyaWRnZV9wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCSBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCAqaWQpCit7CisJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGE7CisJc3RydWN0IGRldmljZV9u b2RlICpkZGNfbm9kZTsKKwlpbnQgcmV0ID0gMDsKKworCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9u YWxpdHkoY2xpZW50LT5hZGFwdGVyLCBJMkNfRlVOQ19JMkMpKSB7CisJCURSTV9FUlJPUigiZGV2 aWNlIGRvZXNuJ3Qgc3VwcG9ydCBJMkNcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlw ZGF0YSA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYsIHNpemVvZihzdHJ1Y3QgdGlfc25fYnJp ZGdlKSwKKwkJCSAgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCFwZGF0YSkKKwkJcmV0dXJuIC1FTk9N RU07CisKKwlwZGF0YS0+ZGV2ID0gJmNsaWVudC0+ZGV2OworCWRldl9zZXRfZHJ2ZGF0YSgmY2xp ZW50LT5kZXYsIHBkYXRhKTsKKworCXJldCA9IGRybV9vZl9maW5kX3BhbmVsX29yX2JyaWRnZShw ZGF0YS0+ZGV2LT5vZl9ub2RlLCAxLCAwLAorCQkJCQkgICZwZGF0YS0+cGFuZWwsIE5VTEwpOwor CWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJjb3VsZCBub3QgZmluZCBhbnkgZHJtIHBhbmVsIG5v ZGVcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCXBkYXRhLT5yZWdtYXAgPSBkZXZtX3JlZ21h cF9pbml0X2kyYyhjbGllbnQsCisJCQkJCSAgICAgJnRpX3NuX2JyaWRnZV9yZWdtYXBfY29uZmln KTsKKwlpZiAoSVNfRVJSKHBkYXRhLT5yZWdtYXApKSB7CisJCURSTV9FUlJPUigicmVnbWFwIGky YyBpbml0IGZhaWxlZFxuIik7CisJCXJldHVybiBQVFJfRVJSKHBkYXRhLT5yZWdtYXApOworCX0K KworCXBkYXRhLT5lbmFibGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KHBkYXRhLT5kZXYsCisJCQkJ CSAgICAiZW5hYmxlIiwgR1BJT0RfT1VUX0xPVyk7CisJaWYgKElTX0VSUihwZGF0YS0+ZW5hYmxl X2dwaW8pKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBlbmFibGUgZ3BpbyBmcm9tIERU XG4iKTsKKwkJcmV0ID0gUFRSX0VSUihwZGF0YS0+ZW5hYmxlX2dwaW8pOworCQlyZXR1cm4gcmV0 OworCX0KKworCXJldCA9IHRpX3NuX2JyaWRnZV9wYXJzZV9yZWd1bGF0b3JzKHBkYXRhKTsKKwlp ZiAocmV0KSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIHBhcnNlIHJlZ3VsYXRvcnNcbiIpOwor CQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHRpX3NuX2JyaWRnZV9wYXJzZV9kc2lfaG9zdChw ZGF0YSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXBtX3J1bnRpbWVfZW5hYmxlKHBk YXRhLT5kZXYpOworCisJcGRhdGEtPnJlZmNsayA9IGRldm1fY2xrX2dldChwZGF0YS0+ZGV2LCAi cmVmY2xrIik7CisKKwlkZGNfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUocGRhdGEtPmRldi0+b2Zf bm9kZSwgImRkYy1pMmMtYnVzIiwgMCk7CisJaWYgKGRkY19ub2RlKSB7CisJCXBkYXRhLT5kZGMg PSBvZl9maW5kX2kyY19hZGFwdGVyX2J5X25vZGUoZGRjX25vZGUpOworCQlvZl9ub2RlX3B1dChk ZGNfbm9kZSk7CisJCWlmICghcGRhdGEtPmRkYykgeworCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVk IHRvIHJlYWQgZGRjIG5vZGVcbiIpOworCQkJcG1fcnVudGltZV9kaXNhYmxlKHBkYXRhLT5kZXYp OworCQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CisJCX0KKwl9IGVsc2UgeworCQlEUk1fREVCVUdf S01TKCJubyBkZGMgcHJvcGVydHkgZm91bmRcbiIpOworCX0KKworCWkyY19zZXRfY2xpZW50ZGF0 YShjbGllbnQsIHBkYXRhKTsKKworCXBkYXRhLT5icmlkZ2UuZnVuY3MgPSAmdGlfc25fYnJpZGdl X2Z1bmNzOworCXBkYXRhLT5icmlkZ2Uub2Zfbm9kZSA9IGNsaWVudC0+ZGV2Lm9mX25vZGU7CisK Kwlkcm1fYnJpZGdlX2FkZCgmcGRhdGEtPmJyaWRnZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCB0aV9zbl9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7 CisJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50 KTsKKworCWlmICghcGRhdGEpCisJCXJldHVybiAtRUlOVkFMOworCisJbWlwaV9kc2lfZGV0YWNo KHBkYXRhLT5kc2kpOworCW1pcGlfZHNpX2RldmljZV91bnJlZ2lzdGVyKHBkYXRhLT5kc2kpOwor CisJZHJtX2JyaWRnZV9yZW1vdmUoJnBkYXRhLT5icmlkZ2UpOworCXBtX3J1bnRpbWVfZGlzYWJs ZShwZGF0YS0+ZGV2KTsKKwlpMmNfcHV0X2FkYXB0ZXIocGRhdGEtPmRkYyk7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRpX3NuX2JyaWRnZV9pZFtdID0g eworCXsgInRpLHNuNjVkc2k4NiIsIDB9LAorCXt9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUo aTJjLCB0aV9zbl9icmlkZ2VfaWQpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCB0aV9zbl9icmlkZ2VfbWF0Y2hfdGFibGVbXSA9IHsKKwl7LmNvbXBhdGlibGUgPSAidGksc242 NWRzaTg2In0sCisJe30sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGlfc25fYnJpZGdl X21hdGNoX3RhYmxlKTsKKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRpX3NuX2JyaWRnZV9k cml2ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAidGlfc242NWRzaTg2IiwKKwkJLm9m X21hdGNoX3RhYmxlID0gdGlfc25fYnJpZGdlX21hdGNoX3RhYmxlLAorCQkucG0gPSAmdGlfc25f YnJpZGdlX3BtX29wcywKKwl9LAorCS5wcm9iZSA9IHRpX3NuX2JyaWRnZV9wcm9iZSwKKwkucmVt b3ZlID0gdGlfc25fYnJpZGdlX3JlbW92ZSwKKwkuaWRfdGFibGUgPSB0aV9zbl9icmlkZ2VfaWQs Cit9OworCittb2R1bGVfaTJjX2RyaXZlcih0aV9zbl9icmlkZ2VfZHJpdmVyKTsKK01PRFVMRV9E RVNDUklQVElPTigic242NWRzaTg2IERTSSB0byBlRFAgYnJpZGdlIGRyaXZlciIpOworTU9EVUxF X0xJQ0VOU0UoIkdQTCB2MiIpOwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJ bmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0 aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZnJlZWRyZW5vCg==