From mboxrd@z Thu Jan 1 00:00:00 1970 From: chandanu-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [DPU PATCH v2 3/3] drm/msm/dp: add support for DP PLL driver Date: Mon, 25 Feb 2019 16:15:31 -0800 Message-ID: <1f849c7dad15f4c9905eee9eaab0c814@codeaurora.org> References: <1546894271-25870-1-git-send-email-chandanu@codeaurora.org> <1546894271-25870-4-git-send-email-chandanu@codeaurora.org> <20190107221402.GA4735@ravnborg.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190107221402.GA4735-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sam Ravnborg Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: devicetree@vger.kernel.org SGVsbG8gU2FtLApPbmx5IERQIGNvcmUgZHJpdmVyIGNvbW1lbnRzIGhhdmUgYmVlbiBhZGRyZXNz ZWQgaW4gVjIuClBMTCBkcml2ZXIgY29tbWVudHMgaW4gVjEgYW5kIHlvdXIgY29tbWVudHMgaW4g VjIgdmVyc2lvbiB3aWxsIGJlIAphZGRyZXNzZWQgaW4gVjMuClJlc3BvbmRlZCB0byB5b3VyIGNv bW1lbnRzL3F1ZXJpZXMgYmVsb3cuCgpPbiAyMDE5LTAxLTA3IDE0OjE0LCBTYW0gUmF2bmJvcmcg d3JvdGU6Cj4gSGkgQ2hhbmRhbgo+IAo+IEEgZmV3IGNvbW1lbnRzIGluIHRoZSBmb2xsb3dpbmcu Cj4gTW9zdGx5IG5pdHBpY2tzIC8gc3R5bGUgc3R1ZmYsIG5vdCBhIHRocm91Z2hseSByZXZpZXcu Cj4gCj4gCVNhbQo+IAo+PiArY29uZmlnIERSTV9NU01fRFBfUExMCj4+ICsJYm9vbCAiRW5hYmxl IERQIFBMTCBkcml2ZXIgaW4gTVNNIERSTSIKPiAKPiBTbyBEUk1fTVNNX0RQX1BMTCBjYW5ub3Qg YmUgJ20nLgoKTm8sIHdlIGRvbid0IGhhdmUgc3VwcG9ydCBmb3IgbW9kdWxhciBkcml2ZXIuCgo+ IAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vTWFrZWZpbGUKPj4gQEAgLTEzNyw0ICsxMzcsMTAgQEAgbXNtLSQoQ09ORklH X0RSTV9NU01fRFNJXzE0Tk1fUEhZKSArPSAKPj4gZHNpL3BsbC9kc2lfcGxsXzE0bm0ubwo+PiAg bXNtLSQoQ09ORklHX0RSTV9NU01fRFNJXzEwTk1fUEhZKSArPSBkc2kvcGxsL2RzaV9wbGxfMTBu bS5vCj4+ICBlbmRpZgo+PiAKPj4gK2lmZXEgKCQoQ09ORklHX0RSTV9NU01fRFBfUExMKSx5KQo+ PiArbXNtLXkgKz0gZHAvcGxsL2RwX3BsbC5vCj4+ICttc20teSArPSBkcC9wbGwvZHBfcGxsXzEw bm0ubwo+PiArbXNtLXkgKz0gZHAvcGxsL2RwX3BsbF8xMG5tX3V0aWwubwo+PiArZW5kaWYKPiAK PiBQbGVhc2Ugd3JpdGUgdGhpcyBpbiB0aGUgS2J1aWxkIGNhbmluaWNhbCBzdHlsZSBsaWtlIHRo aXM6Cj4gbXNtLSQoRFJNX01TTV9EUF9QTEwpICs9IGRwL3BsbC9kcF9wbGwubwo+IG1zbS0kKERS TV9NU01fRFBfUExMKSArPSBkcC9wbGwvZHBfcGxsXzEwbm0ubwo+IGV0Yy4KPiAKV2lsbCBmaXgg dGhpcyBpbiBWMy4KCj4gT3IgZXZlbiBiZXR0ZXIgLSBkZXNjZW5kIGludG8gbXNtL2RwL3BsbCB0 byBidWlsZCBpdCAtIHRoaXMgaXMgbm9ybWFsCj4ga2VybmVsIHN0eWxlLgo+IAoKSSBhbSBmb2xs b3dpbmcgdGhlIGV4aXN0aW5nIGZvcm1hdCBpbiBkcm0vbXNtIGZvbGRlci4KCj4+ICsJaWYgKCFk cF9wYXJzZXIpIHsKPj4gKwkJRFJNX0VSUk9SKCJQYXJzZXIgbm90IGluaXRpYWxpemVkLlxuIik7 Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCXBsbF9ub2RlID0gb2ZfcGFy c2VfcGhhbmRsZShwZGV2LT5kZXYub2Zfbm9kZSwgInBsbC1ub2RlIiwgMCk7Cj4+ICsJaWYgKCFw bGxfbm9kZSkgewo+PiArCQlEUk1fREVWX0VSUk9SKCZwZGV2LT5kZXYsICJjYW5ub3QgZmluZCBw bGwgZGV2aWNlXG4iKTsKPj4gKwkJcmV0dXJuIC1FTlhJTzsKPj4gKwl9Cj4+ICsKPj4gKwlwbGxf cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGxsX25vZGUpOwo+PiArCWlmIChwbGxfcGRl dikKPj4gKwkJZHBfcGFyc2VyLT5wbGwgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwbGxfcGRldik7 Cj4+ICsKPj4gKwlvZl9ub2RlX3B1dChwbGxfbm9kZSk7Cj4+ICsKPj4gKwlpZiAoIXBsbF9wZGV2 IHx8ICFkcF9wYXJzZXItPnBsbCkgewo+PiArCQlEUk1fREVWX0VSUk9SKCZwZGV2LT5kZXYsICIl czogcGxsIGRyaXZlciBpcyBub3QgcmVhZHlcbiIsIAo+PiBfX2Z1bmNfXyk7Cj4+ICsJCXJldHVy biAtRVBST0JFX0RFRkVSOwo+PiArCX0KPiAKPiBUaGUgdXNlIG9mIERSTV8qRVJST1IgaXMgaW5j b25zaXN0ZW50Lgo+IEluIG9uZSBwbGFjZSBEUk1fRVJST1IgaXMgdXNlZCwgYW5kIHN0cmluZyBl bmRzIHdpdGggJy4nCj4gSW4gb25lIHBsYWNlIERSTV9ERVZfRVJST1IgaXMgdXNlZCB3aXRoIGEg c2ltcGxlIHN0cmluZy4KPiBJbiBvbmUgcGxhY2UgRFJNX0RFVl9FUlJPUiBpcyB1c2VkIHdoZXJl IHRoZSBfX2Z1bmNfXyBpcyBhZGRlZCBhcyAKPiBwYXJhbWV0ZXIuCj4gV2hlbiByZWFkaW5nIHRo ZSBjb2RlIHN1Y2ggaW5jb25zaXN0ZW5jaWVzIG1ha2VzIGl0IGhhcmRlciB0byBmb2xsb3cgCj4g dGhlIGNvZGUuCj4gCldpbGwgYWRkcmVzcyB0aGlzIGluIFYzLgo+PiArCj4+ICsJZHBfcGFyc2Vy LT5wbGxfZGV2ID0gZ2V0X2RldmljZSgmcGxsX3BkZXYtPmRldik7Cj4+ICsKPj4gKwlyZXR1cm4g MDsKPj4gK30KPj4gKwo+PiAgc3RhdGljIGlycXJldHVybl90IGRwX2Rpc3BsYXlfaXJxKGludCBp cnEsIHZvaWQgKmRldl9pZCkKPj4gIHsKPj4gIAlzdHJ1Y3QgZHBfZGlzcGxheV9wcml2YXRlICpk cCA9IGRldl9pZDsKPj4gQEAgLTExNCw2ICsxNTYsMTIgQEAgc3RhdGljIGludCBkcF9kaXNwbGF5 X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCAKPj4gc3RydWN0IGRldmljZSAqbWFzdGVyLAo+PiAg CQlnb3RvIGVuZDsKPj4gIAl9Cj4+IAo+PiArCXJjID0gZHBfZ2V0X3BsbChkcCk7Cj4+ICsJaWYg KHJjKSB7Cj4+ICsJCURSTV9FUlJPUigiIERQIGdldCBQTEwgaW5zdGFuY2UgZmFpbGVkXG4iKTsK PiBBbnkgcmVhc29uIHdoeSB0aGUgZXJyb3IgaXMgaW5kZW50ZWQgd2l0aCBhIHNwYWNlPwo+IEFs c28sIGlzIHRoZSBEUk0qRVJST1IgaW4gZHBfZ2V0X3BsbCgpIG5vdCBlbm91Z2g/Cj4gCldpbGwg Zml4IHRoaXMgaW4gVjMuCgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9k cF9wb3dlci5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfcG93ZXIuaAo+PiBpbmRl eCA3NmUyZDNiLi40MGQ3ZTczIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rw L2RwX3Bvd2VyLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wb3dlci5oCj4+ IEBAIC0xNCw2ICsxNCw3IEBACj4+ICAgKiBAaW5pdDogaW5pdGlhbGl6ZXMgdGhlIHJlZ3VsYXRv cnMvY29yZSBjbG9ja3MvR1BJT3MvcGluY3RybAo+PiAgICogQGRlaW5pdDogdHVybnMgb2ZmIHRo ZSByZWd1bGF0b3JzL2NvcmUgY2xvY2tzL0dQSU9zL3BpbmN0cmwKPj4gICAqIEBjbGtfZW5hYmxl OiBlbmFibGUvZGlzYWJsZSB0aGUgRFAgY2xvY2tzCj4+ICsgKiBAc2V0X2xpbmtfY2xrX3BhcmVu dDogc2V0IHRoZSBwYXJlbnQgb2YgRFAgbGluayBjbG9jawo+PiAgICogQHNldF9waXhlbF9jbGtf cGFyZW50OiBzZXQgdGhlIHBhcmVudCBvZiBEUCBwaXhlbCBjbG9jawo+PiAgICovCj4+ICBzdHJ1 Y3QgZHBfcG93ZXIgewo+IAo+IFRoaXMgY2h1bmsgaXMgdW5yZWxhdGVkIC0gaXQganVzdCBhZGRl ZCBzb21lIG1pc3NpbmcgZG9jLgo+IERvIGl0IGJlbG9uZyBpbiBhbm90aGVyIHBhdGNoPwo+IApX aWxsIHJlbW92ZSB0aGlzIGluIFYzLgoKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZHAvcGxsL2RwX3BsbC5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHAvcGxsL2RwX3Bs bC5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjI4ZjBlOTIKPj4g LS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL3BsbC9kcF9wbGwu Ywo+PiBAQCAtMCwwICsxLDE0NSBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb25seQo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAxNi0yMDE5LCBUaGUgTGlu dXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyAKPj4gcmVzZXJ2ZWQuCj4+ICsgKi8KPj4gKwo+PiAr I2luY2x1ZGUgImRwX3BsbC5oIgo+PiArCj4+ICtpbnQgbXNtX2RwX3BsbF91dGlsX3BhcnNlX2R0 X2Nsb2NrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+ICsJCQkJCXN0cnVjdCBtc21f ZHBfcGxsICpwbGwpCj4+ICt7Cj4+ICsJdTMyIGkgPSAwLCByYyA9IDA7Cj4+ICsJc3RydWN0IGRz c19tb2R1bGVfcG93ZXIgKm1wID0gJnBsbC0+bXA7Cj4+ICsJY29uc3QgY2hhciAqY2xvY2tfbmFt ZTsKPj4gKwl1MzIgY2xvY2tfcmF0ZTsKPj4gKwo+PiArCW1wLT5udW1fY2xrID0gb2ZfcHJvcGVy dHlfY291bnRfc3RyaW5ncyhwZGV2LT5kZXYub2Zfbm9kZSwKPj4gKwkJCQkJCQkiY2xvY2stbmFt ZXMiKTsKPj4gKwlpZiAobXAtPm51bV9jbGsgPD0gMCkgewo+PiArCQlEUk1fRVJST1IoImNsb2Nr cyBhcmUgbm90IGRlZmluZWRcbiIpOwo+PiArCQlnb3RvIGNsa19lcnI7Cj4+ICsJfQo+IFlvdSBo YXZlIGEgcGRldi0+ZGV2LCBzbyB1c2UgRFJNX0RFVl9FUlJPUigpCj4gCj4+ICsKPj4gK3N0cnVj dCBtc21fZHBfcGxsICptc21fZHBfcGxsX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwKPj4gKwkJCWVudW0gbXNtX2RwX3BsbF90eXBlIHR5cGUsIGludCBpZCkKPj4gK3sKPj4gKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+PiArCXN0cnVjdCBtc21fZHBfcGxsICpw bGw7Cj4+ICsKPj4gKwlzd2l0Y2ggKHR5cGUpIHsKPj4gKwljYXNlIE1TTV9EUF9QTExfMTBOTToK Pj4gKwkJcGxsID0gbXNtX2RwX3BsbF8xMG5tX2luaXQocGRldiwgaWQpOwo+PiArCQlicmVhazsK Pj4gKwlkZWZhdWx0Ogo+PiArCQlwbGwgPSBFUlJfUFRSKC1FTlhJTyk7Cj4+ICsJCWJyZWFrOwo+ PiArCX0KPj4gKwo+PiArCWlmIChJU19FUlIocGxsKSkgewo+PiArCQlEUk1fREVWX0VSUk9SKGRl diwgIiVzOiBmYWlsZWQgdG8gaW5pdCBEUCBQTExcbiIsIF9fZnVuY19fKTsKPj4gKwkJcmV0dXJu IHBsbDsKPj4gKwl9Cj4+ICsKPj4gKwlwbGwtPnR5cGUgPSB0eXBlOwo+PiArCj4+ICsJREJHKCJE UDolZCBQTEwgcmVnaXN0ZXJlZCIsIGlkKTsKPiBBdm9pZCByb2xsaW5nIHlvdXIgb3duIERFQlVH IG1hY3Jvcy4KPiAKV2lsbCBmaXggdGhpcyBpbiBWMy4KCj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRwX3BsbF9kdF9tYXRjaFtdID0gewo+PiArI2lmZGVm IENPTkZJR19EUk1fTVNNX0RQXzEwTk1fUExMCj4+ICsJeyAuY29tcGF0aWJsZSA9ICJxY29tLGRw LXBsbC0xMG5tIiB9LAo+PiArI2VuZGlmCj4+ICsJe30KPj4gK307Cj4gV2Ugb25seSBoYXZlIG9u ZSBlbnRyeSBoZXJlLgo+IApXaWxsIHJlbW92ZSB0aGUgaWZkZWZzIGluIFYzLgoKPj4gKwo+PiAr c3RhdGljIGludCBkcF9wbGxfZHJpdmVyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4+ICt7Cj4+ICsJc3RydWN0IG1zbV9kcF9wbGwgKnBsbDsKPj4gKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGRldi0+ZGV2Owo+PiArCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNo Owo+PiArCWVudW0gbXNtX2RwX3BsbF90eXBlIHR5cGU7Cj4+ICsKPj4gKwltYXRjaCA9IG9mX21h dGNoX25vZGUoZHBfcGxsX2R0X21hdGNoLCBkZXYtPm9mX25vZGUpOwo+PiArCWlmICghbWF0Y2gp Cj4+ICsJCXJldHVybiAtRU5PREVWOwo+PiArCj4+ICsJaWYgKCFzdHJjbXAobWF0Y2gtPmNvbXBh dGlibGUsICJxY29tLGRwLXBsbC0xMG5tIikpCj4+ICsJCXR5cGUgPSBNU01fRFBfUExMXzEwTk07 Cj4+ICsJZWxzZQo+PiArCQl0eXBlID0gTVNNX0RQX1BMTF9NQVg7Cj4gU28gdGhlIGlmIHdpbGwg YWx3YXlzIGJlIHRydWUsIGJlY2F1c2Ugd2UgY2FuIG9ubHkgbWF0Y2ggb25lIGNvbXBhdGlibGUg Cj4gLSBubz8KPiAKWWVzLCB5b3UgYXJlIHJpZ2h0LiBXaWxsIHJlbW92ZSB0aGlzIHVubmVjZXNz YXJ5IGNoZWNrIGluIHYzLgoKPiAKPj4gKwo+PiArCXBsbCA9IG1zbV9kcF9wbGxfaW5pdChwZGV2 LCB0eXBlLCAwKTsKPj4gKwlpZiAoSVNfRVJSX09SX05VTEwocGxsKSkgewo+PiArCQlkZXZfaW5m byhkZXYsCj4+ICsJCQkiJXM6IHBsbCBpbml0IGZhaWxlZDogJWxkLCBuZWVkIHNlcGFyYXRlIHBs bCBjbGsgZHJpdmVyXG4iLAo+PiArCQkJX19mdW5jX18sIFBUUl9FUlIocGxsKSk7Cj4gZGV2X2lu Zm8gPT4gRFJNX0RFVl9FUlJPUgo+IApXaWxsIGZpeCB0aGlzIGluIFYzLgo+IAo+PiArc3RhdGlj IGludCBkcF9wbGxfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ PiArewo+PiArCXN0cnVjdCBtc21fZHBfcGxsICpwbGwgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShw ZGV2KTsKPj4gKwo+PiArCWlmIChwbGwpIHsKPj4gKwkJLy9tc21fZHNpX3BsbF9kZXN0cm95KHBs bCk7Cj4gRGVidWcgYXJ0aWZhY3Q/Cj4gCldpbGwgZml4IHRoaXMgaW4gVjMuCj4gCj4+ICsjZGVm aW5lIFBMTF9SRUdfVyhiYXNlLCBvZmZzZXQsIGRhdGEpCVwKPj4gKwkJCQl3cml0ZWxfcmVsYXhl ZCgoZGF0YSksIChiYXNlKSArIChvZmZzZXQpKQo+PiArI2RlZmluZSBQTExfUkVHX1IoYmFzZSwg b2Zmc2V0KQlyZWFkbF9yZWxheGVkKChiYXNlKSArIChvZmZzZXQpKQo+IEkgcmVjYWxsIHlvdSB3 cm90ZSBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgdGhhdCB0aGUgX3JlbGF4ZWQKPiB2YXJpYW50cyB3 YXMgZHJvcHBlZD8KPiAKT25seSBEUCBjb3JlIGRyaXZlciBjb21tZW50cyBoYXZlIGJlZW4gYWRk cmVzc2VkIGluIFYyLiBQTEwgZHJpdmVyIApjb21tZW50cyB3aWxsIGJlIGZpeGVkIGluIFYzLgoK Pj4gKwo+PiArc3RydWN0IG1zbV9kcF9wbGwgKm1zbV9kcF9wbGxfaW5pdChzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2LAo+PiArCQkJZW51bSBtc21fZHBfcGxsX3R5cGUgdHlwZSwgaW50IGlk KTsKPj4gKwo+PiAraW50IG1zbV9kcF9wbGxfdXRpbF9wYXJzZV9kdF9jbG9jayhzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2LAo+PiArCQkJCQlzdHJ1Y3QgbXNtX2RwX3BsbCAqcGxsKTsKPiBJ bmRlbnQgb2Ygc2VuY29uZCBsaW5lIHdpdGggYWRkaXRpb25hbCBmdW5jdGlvbiBhcmd1bWVudHMK PiBoYXMgaW5jb25zaXN0ZW50IGluZGVudC4KPiBGb2xsd28gc2FtZSBzdHlsZSBpbiBhbGwgZmls ZXMsIHByZWZlcmFibGUgdGhlIERSTSBzdHlsZS4KPiAKV2lsbCBmaXggdGhlbSBpbiBWMy4KCj4+ ICsKPj4gKyNpZmRlZiBDT05GSUdfRFJNX01TTV9EUF8xME5NX1BMTAo+PiArc3RydWN0IG1zbV9k cF9wbGwgKm1zbV9kcF9wbGxfMTBubV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYs IAo+PiBpbnQgaWQpOwo+PiArI2Vsc2UKPj4gK3N0cnVjdCBtc21fZHBfcGxsICptc21fZHBfcGxs XzEwbm1faW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCAKPj4gaW50IGlkKQo+PiAr ewo+PiArCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+PiArfQo+PiArI2VuZGlmCj4gSSBjYW5u b3Qgc2VlIGhvdyB0aGlzIHdvcmtzIGlmIENPTkZJR19EUk1fTVNNX0RQXzEwTk1fUExMIGlzIG5v dCAKPiBkZWZpbmVkLgo+IEl0IGxvb2tzIGxpa2UgeW91IGhhdmUgYm90aCBhIGZ1bmN0aW9uIGlu IGEgaGVhZGVyIChubyBzdGF0aWMgaW5saW5lPykKPiBhbmQgYSBmdW5jdGlvbiB3aXRoIHRoZSBz YW1lIG5hbWUgaW4gYSAuYyBmaWxlLgo+IE1heWJlIHRoaXMgZHJpdmVyIHdhcyBub3QgYnVpbHQg d2l0aG91dCB0aGUgQ09ORklHX0RSTV9NU01fRFBfMTBOTV9QTEwgCj4gc2V0IHRvIHk/Cj4gCj4+ ICsvKgo+PiArICogRGlzcGxheSBQb3J0IFBMTCBkcml2ZXIgYmxvY2sgZGlhZ3JhbSBmb3IgYnJh bmNoIGNsb2Nrcwo+PiArICoKPj4gKyAqCQkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+PiArICoJCXwgICAgICAgICBEUF9WQ09fQ0xLICAgICAgICAgICB8Cj4+ICsgKgkJfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqCQl8ICAgICstLS0tLS0tLS0tLS0tLS0t LS0tKyAgICAgfAo+PiArICoJCXwgICAgfCAgIChEUCBQTEwvVkNPKSAgICB8ICAgICB8Cj4+ICsg KgkJfCAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSsgICAgIHwKPj4gKyAqCQl8ICAgICAgICAgICAg ICB2ICAgICAgICAgICAgICAgfAo+PiArICoJCXwgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsg ICB8Cj4+ICsgKgkJfCAgIHwgaHNjbGtfZGl2c2VsX2Nsa19zcmMgfCAgIHwKPj4gKyAqCQl8ICAg Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rICAgfAo+PiArICoJCSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCj4+ICsgKgkJCQl8Cj4+ICsgKgkgKy0tLS0tLS0tLS0tLTwtLS0tLS0tLS12 LS0tLS0tLS0tLS0tPi0tLS0tLS0tLS0rCj4+ICsgKgkgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ICsgKiArLS0tLS12LS0tLS0tLS0tLS0tKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqIHwgZHBfbGlua19jbGtfc3JjICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICogfCAgICBkaXZzZWxfdGVu ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ICsgKiArLS0tLS0tLS0t Ky0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqCXwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqCXwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqCXYgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKPj4gKyAqIElucHV0 IHRvIERJU1BDQyBibG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICog Zm9yIGxpbmsgY2xrLCBjcnlwdG8gY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ ICsgKiBhbmQgaW50ZXJmYWNlIGNsb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwKPj4gKyAqCQkJCQkJCXwKPj4gKyAqCQkJCQkJCXwKPj4gKyAqCSstLS0tLS0tLTwtLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tPC0tLSsKPj4gKyAqCXwgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICB8Cj4+ICsgKiArLS0tLS0tLXYtLS0tLS0rICArLS0tLS0t LS12LS0tLS0rICArLS0tLS0tLS12LS0tLS0tKwo+PiArICogfCB2Y29fZGl2aWRlZCAgfCAgfCB2 Y29fZGl2aWRlZCAgfCAgfCB2Y29fZGl2aWRlZCAgIHwKPj4gKyAqIHwgICAgX2Nsa19zcmMgIHwg IHwgICAgX2Nsa19zcmMgIHwgIHwgICAgX2Nsa19zcmMgICB8Cj4+ICsgKiB8ICAgICAgICAgICAg ICB8ICB8ICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgfAo+PiArICogfGRpdnNlbF9z aXggICAgfCAgfCAgZGl2c2VsX3R3byAgfCAgfCAgZGl2c2VsX2ZvdXIgIHwKPj4gKyAqICstLS0t LS0tKy0tLS0tLSsgICstLS0tLSstLS0tLS0tLSsgICstLS0tLS0tLSstLS0tLS0rCj4+ICsgKiAg ICAgICAgIHwJICAgICAgICAgICB8CQkgICAgICAgIHwKPj4gKyAqCXYtLS0tLS0tPi0tLS0tLS0t LS12LS0tLS0tLS0tLS0tLTwtLS0tLS12Cj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICB8 Cj4+ICsgKgkJKy0tLS0tLS0tLS0rLS0tLS0tLS0tKwo+PiArICoJCXwgICB2Y29fZGl2aWRlZF9j bGsgIHwKPj4gKyAqCQl8ICAgICAgIF9zcmNfbXV4ICAgICB8Cj4+ICsgKgkJKy0tLS0tLS0tLSst LS0tLS0tLS0tKwo+PiArICogICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgIHYKPj4gKyAqICAgICAgICAgICAgICBJbnB1dCB0byBESVNQQ0MgYmxv Y2sKPj4gKyAqICAgICAgICAgICAgICBmb3IgRFAgcGl4ZWwgY2xvY2sKPiBOaWNlIGRyYXdpbmch Cj4gVHJ5IHRvIGF2b2lkIG1peGluZyBzcGFjZSBhbmQgdGFicyBpbiB0aGUgYWJvdmUuCj4gCj4g CldpbGwgYmUgYWRkcmVzc2VkIGluIFYzLgoKPj4gKyAqCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1 ZGUgPGxpbnV4L2tlcm5lbC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+PiArI2luY2x1 ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvY2xrLmg+Cj4gUGxlYXNlIHNvcnQgaW4gYWxwaGFiZXRpYyBvcmRlci4KPiAK V2lsbCBmaXggdGhpcyBpbiBWMy4KCj4+ICsvKiBPcCBzdHJ1Y3R1cmVzICovCj4gT3AgPT4gT3Bz Pwo+IApXaWxsIGFkZHJlc3MgdGhpcyBpbiBWMy4KCj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQg Y2xrX211eF9kZXRlcm1pbmVfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywKPj4gKwkJCQkgICAgIHN0 cnVjdCBjbGtfcmF0ZV9yZXF1ZXN0ICpyZXEpCj4+ICt7Cj4+ICsJaW50IHJldCA9IDA7Cj4+ICsK Pj4gKwlyZXQgPSBfX2Nsa19tdXhfZGV0ZXJtaW5lX3JhdGVfY2xvc2VzdChodywgcmVxKTsKPj4g KwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJLyogU2V0IHRoZSBuZXcgcGFy ZW50IG9mIG11eCBpZiB0aGVyZSBpcyBhIG5ldyB2YWxpZCBwYXJlbnQgKi8KPj4gKwlpZiAoaHct PmNsayAmJiByZXEtPmJlc3RfcGFyZW50X2h3LT5jbGspCj4+ICsJCWNsa19zZXRfcGFyZW50KGh3 LT5jbGssIHJlcS0+YmVzdF9wYXJlbnRfaHctPmNsayk7Cj4gU2hvdWxkIHlvdSBjaGVjayBlcnJv ciBjb2RlIGhlcmU/Cj4gCldpbGwgZml4IHRoaXMgaW4gVjMuCgo+PiArCj4+ICsJcmV0dXJuIDA7 Cj4+ICt9Cj4+ICsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBkcF9wbGxfMTBubV9yZWdpc3Rl cihzdHJ1Y3QgZHBfcGxsXzEwbm0gKnBsbF8xMG5tKQo+PiArewo+PiArCWNoYXIgY2xrX25hbWVb MzJdLCBwYXJlbnRbMzJdLCB2Y29fbmFtZVszMl07Cj4+ICsJc3RydWN0IGNsa19pbml0X2RhdGEg dmNvX2luaXQgPSB7Cj4+ICsJCS5wYXJlbnRfbmFtZXMgPSAoY29uc3QgY2hhciAqW10peyAiYmlf dGN4byIgfSwKPj4gKwkJLm51bV9wYXJlbnRzID0gMSwKPj4gKwkJLm5hbWUgPSB2Y29fbmFtZSwK Pj4gKwkJLmZsYWdzID0gQ0xLX0lHTk9SRV9VTlVTRUQsCj4+ICsJCS5vcHMgPSAmZHBfMTBubV92 Y29fY2xrX29wcywKPj4gKwl9Owo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwbGxfMTBubS0+ cGRldi0+ZGV2Owo+PiArCXN0cnVjdCBjbGtfaHcgKipod3MgPSBwbGxfMTBubS0+aHdzOwo+PiAr CXN0cnVjdCBjbGtfaHdfb25lY2VsbF9kYXRhICpod19kYXRhOwo+PiArCXN0cnVjdCBjbGtfaHcg Kmh3Owo+PiArCWludCBudW0gPSAwOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlEQkcoIkRQLT5p ZCA9ICVkIiwgcGxsXzEwbm0tPmlkKTsKPiBBdm9pZCBvd24gREJHIG1hY3Jvcy4KPiAKPj4gKwo+ PiArCURCRygiRFAgUExMJWQiLCBpZCk7Cj4gQWdhaW4uCgpXaWxsIHJlcGxhY2UgREJHIHdpdGgg RFJNX0RFQlVHX0RQIGluIFYzLgoKCgpUaGFua3MKQ2hhbmRhbgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVk cmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8=