From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v5 07/13] drm/i915/icl: Program DSI clock and data lane timing params Date: Thu, 19 Jul 2018 19:17:39 +0300 Message-ID: <20180719161739.GC5565@intel.com> References: <1531215614-6828-1-git-send-email-madhav.chauhan@intel.com> <1531215614-6828-8-git-send-email-madhav.chauhan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B76636E03D for ; Thu, 19 Jul 2018 16:17:45 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1531215614-6828-8-git-send-email-madhav.chauhan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Madhav Chauhan Cc: jani.nikula@intel.com, intel-gfx@lists.freedesktop.org, paulo.r.zanoni@intel.com, rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMTAsIDIwMTggYXQgMDM6MTA6MDhQTSArMDUzMCwgTWFkaGF2IENoYXVoYW4g d3JvdGU6Cj4gVGhpcyBwYXRjaCBwcm9ncmFtcyBELVBIWSB0aW1pbmcgcGFyYW1ldGVycyBmb3Ig dGhlCj4gY2xvY2sgYW5kIGRhdGEgbGFuZSAoaW4gZXNjYXBlIGNsb2Nrcykgb2YgRFNJCj4gY29u dHJvbGxlciAoRFNJIHBvcnQgMCBhbmQgMSkuCj4gVGhlc2UgcHJvZ3JhbW1lZCB0aW1pbmdzIHdv dWxkIGJlIHVzZWQgYnkgRFNJIENvbnRyb2xsZXIKPiB0byBjYWxjdWxhdGUgbGluayB0cmFuc2l0 aW9uIGxhdGVuY2llcyBvZiB0aGUgZGF0YSBhbmQKPiBjbG9jayBsYW5lcy4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBNYWRoYXYgQ2hhdWhhbiA8bWFkaGF2LmNoYXVoYW5AaW50ZWwuY29tPgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pY2xfZHNpLmMgICAgICAgfCAgMTggKysrKwo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuaCAgICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kc2lfdmJ0LmMgfCAyMDAgKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ljbF9kc2kuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ljbF9kc2kuYwo+IGluZGV4IGJjMjdlMzQuLjgzMjc3MmQg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaWNsX2RzaS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaWNsX2RzaS5jCj4gQEAgLTI4NCw2ICsyODQsMjQgQEAgc3RhdGlj IHZvaWQgZ2VuMTFfZHNpX3NldHVwX2RwaHlfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiAgCQl0bXAgfD0gaW50ZWxfZHNpLT5pbml0X2NvdW50Owo+ICAJCUk5MTVfV1JJ VEUoSUNMX0RTSV9UX0lOSVRfTUFTVEVSKHBvcnQpLCB0bXApOwo+ICAJfQo+ICsKPiArCS8qIFBy b2dyYW0gRFBIWSBjbG9jayBsYW5lcyB0aW1pbmdzICovCj4gKwlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJSTkxNV9XUklURShEUEhZX0NMS19USU1JTkdf UEFSQU0ocG9ydCksIGludGVsX2RzaS0+ZHBoeV9yZWcpOwo+ICsKPiArCQkvKiBzaGFkb3cgcmVn aXN0ZXIgaW5zaWRlIGRpc3BsYXkgY29yZSAqLwo+ICsJCUk5MTVfV1JJVEUoRFNJX0NMS19USU1J TkdfUEFSQU0ocG9ydCksIGludGVsX2RzaS0+ZHBoeV9yZWcpOwo+ICsJfQo+ICsKPiArCS8qIFBy b2dyYW0gRFBIWSBkYXRhIGxhbmVzIHRpbWluZ3MgKi8KPiArCWZvcl9lYWNoX2RzaV9wb3J0KHBv cnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiArCQlJOTE1X1dSSVRFKERQSFlfREFUQV9USU1JTkdf UEFSQU0ocG9ydCksCj4gKwkJCSAgIGludGVsX2RzaS0+ZHBoeV9kYXRhX2xhbmVfcmVnKTsKPiAr Cj4gKwkJLyogc2hhZG93IHJlZ2lzdGVyIGluc2lkZSBkaXNwbGF5IGNvcmUgKi8KPiArCQlJOTE1 X1dSSVRFKERTSV9EQVRBX1RJTUlOR19QQVJBTShwb3J0KSwKPiArCQkJICAgaW50ZWxfZHNpLT5k cGh5X2RhdGFfbGFuZV9yZWcpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZW4xMV9k c2lfZW5hYmxlX3BvcnRfYW5kX3BoeShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kc2kuaAo+IGluZGV4IGFkN2MxY2IuLjlmZDg1MjYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kc2kuaAo+IEBAIC04NSw2ICs4NSw5IEBAIHN0cnVjdCBpbnRlbF9k c2kgewo+ICAJdTMyIHBvcnRfYml0czsKPiAgCXUzMiBid190aW1lcjsKPiAgCXUzMiBkcGh5X3Jl ZzsKPiArCj4gKwkvKiBkYXRhIGxhbmVzIGRwaHkgdGltaW5nICovCj4gKwl1MzIgZHBoeV9kYXRh X2xhbmVfcmVnOwo+ICAJdTMyIHZpZGVvX2ZybXRfY2ZnX2JpdHM7Cj4gIAl1MTYgbHBfYnl0ZV9j bGs7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfdmJ0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfdmJ0LmMKPiBpbmRleCBhYzgzZDZi Li40MjgyOTBkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV92 YnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV92YnQuYwo+IEBAIC01 MDksNyArNTA5LDkgQEAgYm9vbCBpbnRlbF9kc2lfdmJ0X2luaXQoc3RydWN0IGludGVsX2RzaSAq aW50ZWxfZHNpLCB1MTYgcGFuZWxfaWQpCj4gIAl1MzIgYnBwOwo+ICAJdTMyIHRscHhfbnMsIGV4 dHJhX2J5dGVfY291bnQsIGJpdHJhdGUsIHRscHhfdWk7Cj4gIAl1MzIgdWlfbnVtLCB1aV9kZW47 Cj4gLQl1MzIgcHJlcGFyZV9jbnQsIGV4aXRfemVyb19jbnQsIGNsa196ZXJvX2NudCwgdHJhaWxf Y250Owo+ICsJdTMyIHByZXBhcmVfY250LCBleGl0X3plcm9fY250LCBjbGtfemVyb19jbnQsIHRy YWlsX2NudCwgaHNfemVyb19jbnQ7Cj4gKwl1MzIgdGNsa19wcmVfY250LCB0Y2xrX3Bvc3RfY250 Owo+ICsJdTMyIHRjbGtfcHJlX25zLCB0Y2xrX3Bvc3RfbnM7Cj4gIAl1MzIgdGhzX3ByZXBhcmVf bnMsIHRjbGtfdHJhaWxfbnM7Cj4gIAl1MzIgdGNsa19wcmVwYXJlX2Nsa3plcm8sIHRoc19wcmVw YXJlX2hzemVybzsKPiAgCXUzMiBscF90b19oc19zd2l0Y2gsIGhzX3RvX2xwX3N3aXRjaDsKPiBA QCAtNjI0LDc2ICs2MjYsMTU3IEBAIGJvb2wgaW50ZWxfZHNpX3ZidF9pbml0KHN0cnVjdCBpbnRl bF9kc2kgKmludGVsX2RzaSwgdTE2IHBhbmVsX2lkKQo+ICAKPiAgCXRjbGtfcHJlcGFyZV9jbGt6 ZXJvID0gbWlwaV9jb25maWctPnRjbGtfcHJlcGFyZV9jbGt6ZXJvOwo+ICAJdGhzX3ByZXBhcmVf aHN6ZXJvID0gbWlwaV9jb25maWctPnRoc19wcmVwYXJlX2hzemVybzsKPiAtCj4gKwl0Y2xrX3Ry YWlsX25zID0gbWF4KG1pcGlfY29uZmlnLT50Y2xrX3RyYWlsLCBtaXBpX2NvbmZpZy0+dGhzX3Ry YWlsKTsKPiArCXRoc19wcmVwYXJlX25zID0gbWF4KG1pcGlfY29uZmlnLT50aHNfcHJlcGFyZSwK PiArCQkJCW1pcGlfY29uZmlnLT50Y2xrX3ByZXBhcmUpOwo+ICAJLyoKPiAgCSAqIEIwNjAKPiAg CSAqIExQIGJ5dGUgY2xvY2sgPSBUTFBYLyAoOFVJKQo+ICAJICovCj4gIAlpbnRlbF9kc2ktPmxw X2J5dGVfY2xrID0gRElWX1JPVU5EX1VQKHRscHhfbnMgKiB1aV9kZW4sIDggKiB1aV9udW0pOwo+ ICAKPiAtCS8qIEREUiBjbG9jayBwZXJpb2QgPSAyICogVUkKPiAtCSAqIFVJKHNlYykgPSAxLyhi aXRyYXRlICogMTBeMykgKGJpdHJhdGUgaXMgaW4gS0haKQo+IC0JICogVUkobnNlYykgPSAxMF42 IC8gYml0cmF0ZQo+IC0JICogRERSIGNsb2NrIHBlcmlvZCAobnNlYykgPSAyICogVUkgPSAoMiAq IDEwXjYpLyBiaXRyYXRlCj4gLQkgKiBERFIgY2xvY2sgY291bnQgID0gbnNfdmFsdWUgLyBERFIg Y2xvY2sgcGVyaW9kCj4gLQkgKgo+ICsJLyoKPiAgCSAqIEZvciBHRU1JTklMQUtFIGRwaHlfcGFy YW1fcmVnIHdpbGwgYmUgcHJvZ3JhbW1lZCBpbiB0ZXJtcyBvZgo+ICAJICogSFMgYnl0ZSBjbG9j ayBjb3VudCBmb3Igb3RoZXIgcGxhdGZvcm0gaW4gSFMgZGRyIGNsb2NrIGNvdW50Cj4gIAkgKi8K PiAgCW11bCA9IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpID8gOCA6IDI7Cj4gLQl0aHNfcHJlcGFy ZV9ucyA9IG1heChtaXBpX2NvbmZpZy0+dGhzX3ByZXBhcmUsCj4gLQkJCSAgICAgbWlwaV9jb25m aWctPnRjbGtfcHJlcGFyZSk7Cj4gIAo+IC0JLyogcHJlcGFyZSBjb3VudCAqLwo+IC0JcHJlcGFy ZV9jbnQgPSBESVZfUk9VTkRfVVAodGhzX3ByZXBhcmVfbnMgKiB1aV9kZW4sIHVpX251bSAqIG11 bCk7Cj4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpIHsKCkknZCBzdWdnZXN0IGV4dHJhY3Rp bmcgdGhlIGljbCB2cy4gb2xkIHRoaW5ncyBpbnRvIHNlcGFyYXRlIGZ1bmN0aW9ucy4KCj4gKwkJ LyoKPiArCQkgKiBwcmVwYXJlIGNudCBpbiBlc2NhcGUgY2xvY2tzCj4gKwkJICogdGhpcyBmaWVs ZCByZXByZXNlbnRzIGEgaGV4YWRlY2ltYWwgdmFsdWUgd2l0aCBhIHByZWNpc2lvbgo+ICsJCSAq IG9mIDEuMiDigJMgaS5lLiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgaXMgdGhlIGludGVnZXIK PiArCQkgKiBhbmQgdGhlIGxlYXN0IHNpZ25pZmljYW50IDIgYml0cyBhcmUgZnJhY3Rpb24gYml0 cy4KPiArCQkgKiBzbywgdGhlIGZpZWxkIGNhbiByZXByZXNlbnQgYSByYW5nZSBvZiAwLjI1IHRv IDEuNzUKPiArCQkgKi8KPiArCQlwcmVwYXJlX2NudCA9IERJVl9ST1VORF9VUCh0aHNfcHJlcGFy ZV9ucyAqIDQsIHRscHhfbnMpOwo+ICsKPiArCQkvKiBjbGsgemVybyBjb3VudCBpbiBlc2NhcGUg Y2xvY2tzICovCj4gKwkJY2xrX3plcm9fY250ID0gRElWX1JPVU5EX1VQKAo+ICsJCQkJCSh0Y2xr X3ByZXBhcmVfY2xremVybyAtIHRoc19wcmVwYXJlX25zKSwKPiArCQkJCQl0bHB4X25zKTsKPiAr Cj4gKwkJLyogdHJhaWwgY250IGluIGVzY2FwZSBjbG9ja3MqLwo+ICsJCXRyYWlsX2NudCA9IERJ Vl9ST1VORF9VUCh0Y2xrX3RyYWlsX25zLCB0bHB4X25zKTsKPiArCj4gKwkJLyogdGNsayBwcmUv cG9zdCBjb3VudCBpbiBlc2NhcGUgY2xvY2tzICovCj4gKwkJdGNsa19wb3N0X25zID0gbWlwaV9j b25maWctPnRjbGtfcG9zdDsKPiArCQl0Y2xrX3ByZV9ucyA9IG1pcGlfY29uZmlnLT50Y2xrX3By ZTsKPiArCQl0Y2xrX3ByZV9jbnQgPSBESVZfUk9VTkRfVVAodGNsa19wcmVfbnMsIHRscHhfbnMp Owo+ICsJCXRjbGtfcG9zdF9jbnQgPSBESVZfUk9VTkRfVVAodGNsa19wb3N0X25zLCB0bHB4X25z KTsKPiArCj4gKwkJLyogaHMgemVybyBjbnQgaW4gZXNjYXBlIGNsb2NrcyAqLwo+ICsJCWhzX3pl cm9fY250ID0gRElWX1JPVU5EX1VQKAo+ICsJCQkJCSh0aHNfcHJlcGFyZV9oc3plcm8gLSB0aHNf cHJlcGFyZV9ucyksCj4gKwkJCQkJdGxweF9ucyk7Cj4gKwo+ICsJCS8qIGhzIGV4aXQgemVybyBj bnQgaW4gZXNjYXBlIGNsb2NrcyAqLwo+ICsJCWV4aXRfemVyb19jbnQgPSBESVZfUk9VTkRfVVAo bWlwaV9jb25maWctPnRoc19leGl0LCB0bHB4X25zKTsKPiArCj4gKwkJaWYgKHByZXBhcmVfY250 ID4gMHg3IHx8Cj4gKwkJICAgIGNsa196ZXJvX2NudCA+IDB4RiB8fAo+ICsJCSAgICB0Y2xrX3By ZV9jbnQgPiAweDMgfHwKPiArCQkgICAgdGNsa19wb3N0X2NudCA+IDB4NyB8fAo+ICsJCSAgICB0 cmFpbF9jbnQgPiAweDcgfHwKPiArCQkgICAgaHNfemVyb19jbnQgPiAweEYgfHwKPiArCQkgICAg ZXhpdF96ZXJvX2NudCA+IDB4Nykgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJEUEhZIHZhbHVl cyBjcm9zc2luZyBtYXggbGltaXRzLCIpOwo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJyZXN0cmlj dGluZyB0byBtYXggdmFsdWVzXG4iKTsKPiArCQl9CgpUaGlzIGRvZXNuJ3QgbWF0Y2ggaG93IHdl IGRvIGl0IG9uIHRoZSBvbGRlciBwbGF0Zm9ybXMuIFdvdWxkIGJlIG5pY2UgdG8Kc3RpY2sgdG8g YSB1bmlmb3JtIGFwcG9yb2FjaCBhY3Jvc3MgdGhlIGJvYXJkLgoKTWF5YmUgYWRkIHNvbWUga2lu ZCBvZiBzbWFsbCBoZWxwZXIgdG8gbWFrZSB0aGlzIHN0dWZmIGxlc3MgcmVwZXRpdGl2ZToKCnZv aWQgY2xhbXBfdmFsKHUzMiAqdmFsLCB1MzIgbGltaXQsIGNvbnN0IGNoYXIgKm5hbWUpCnsKCWlm ICgqdmFsIDw9IGxpbWl0KQoJCXJldHVybjsKCQoJREVCVUcoIiVzLi4uXG4iLCBuYW1lLCAuLi4p OwoJKnZhbCA9IGxpbWl0Owp9CgpDb3VsZCBldmVuIG1peCBpbiBzb21lIGNwcCBtYWdpYyB0byBz dHJpbmdpZnkgdGhlIG5hbWUgYXV0b21hZ2ljYWxseS4KCj4gKwo+ICsJCXByZXBhcmVfY250ID0g KHByZXBhcmVfY250ID4gMHg3KSA/IDB4NyA6IHByZXBhcmVfY250Owo+ICsJCWNsa196ZXJvX2Nu dCA9IChjbGtfemVyb19jbnQgPiAweEYpID8gMHhGIDogY2xrX3plcm9fY250Owo+ICsJCXRjbGtf cHJlX2NudCA9ICh0Y2xrX3ByZV9jbnQgPiAweDMpID8gMHgzIDogdGNsa19wcmVfY250Owo+ICsJ CXRjbGtfcG9zdF9jbnQgPSAodGNsa19wb3N0X2NudCA+IDB4NykgPyAweDcgOiB0Y2xrX3Bvc3Rf Y250Owo+ICsJCXRyYWlsX2NudCA9ICh0cmFpbF9jbnQgPiAweDcpID8gMHg3IDogdHJhaWxfY250 Owo+ICsJCWhzX3plcm9fY250ID0gKGhzX3plcm9fY250ID4gMHhGKSA/IDB4RiA6IGhzX3plcm9f Y250Owo+ICsJCWV4aXRfemVyb19jbnQgPSAoZXhpdF96ZXJvX2NudCA+IDB4NykgPyAweDcgOiBl eGl0X3plcm9fY250Owo+ICsKPiArCQkvKiBjbG9jayBsYW5lIGRwaHkgdGltaW5ncyAqLwo+ICsJ CWludGVsX2RzaS0+ZHBoeV9yZWcgfD0gKENMS19QUkVQX09WRVJSSURFIHwKPiArCQkJCQlDTEtf UFJFUF9USU1FKHByZXBhcmVfY250KSB8Cj4gKwkJCQkJQ0xLX1pFUk9fT1ZFUlJJREUgfAo+ICsJ CQkJCUNMS19aRVJPX1RJTUUoY2xrX3plcm9fY250KSB8Cj4gKwkJCQkJQ0xLX1BSRV9PVkVSUklE RSB8Cj4gKwkJCQkJQ0xLX1BSRV9USU1FKHRjbGtfcHJlX2NudCkgfAo+ICsJCQkJCUNMS19QT1NU X09WRVJSSURFIHwKPiArCQkJCQlDTEtfUE9TVF9USU1FKHRjbGtfcG9zdF9jbnQpIHwKPiArCQkJ CQlDTEtfVFJBSUxfT1ZFUlJJREUgfAo+ICsJCQkJCUNMS19UUkFJTF9USU1FKHRyYWlsX2NudCkp Owo+ICsKPiArCQkvKiBkYXRhIGxhbmVzIGRwaHkgdGltaW5ncyAqLwo+ICsJCWludGVsX2RzaS0+ ZHBoeV9kYXRhX2xhbmVfcmVnID0gSFNfUFJFUF9PVkVSUklERSB8Cj4gKwkJCQkJCUhTX1BSRVBf VElNRShwcmVwYXJlX2NudCkgfAo+ICsJCQkJCQlIU19aRVJPX09WRVJSSURFIHwKPiArCQkJCQkJ SFNfWkVST19USU1FKGhzX3plcm9fY250KSB8Cj4gKwkJCQkJCUhTX1RSQUlMX09WRVJSSURFIHwK PiArCQkJCQkJSFNfVFJBSUxfVElNRSh0cmFpbF9jbnQpIHwKPiArCQkJCQkJSFNfRVhJVF9PVkVS UklERSB8Cj4gKwkJCQkJCUhTX0VYSVRfVElNRShleGl0X3plcm9fY250KTsKPiArCX0gZWxzZSB7 Cj4gKwkJLyoKPiArCQkgKiBERFIgY2xvY2sgcGVyaW9kID0gMiAqIFVJCj4gKwkJICogVUkoc2Vj KSA9IDEvKGJpdHJhdGUgKiAxMF4zKSAoYml0cmF0ZSBpcyBpbiBLSFopCj4gKwkJICogVUkobnNl YykgPSAxMF42IC8gYml0cmF0ZQo+ICsJCSAqIEREUiBjbG9jayBwZXJpb2QgKG5zZWMpID0gMiAq IFVJID0gKDIgKiAxMF42KS8gYml0cmF0ZQo+ICsJCSAqIEREUiBjbG9jayBjb3VudCAgPSBuc192 YWx1ZSAvIEREUiBjbG9jayBwZXJpb2QKPiArCQkgKi8KPiAgCj4gLQlpZiAocHJlcGFyZV9jbnQg PiBQUkVQQVJFX0NOVF9NQVgpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJwcmVwYXJlIGNvdW50IHRv byBoaWdoICV1XG4iLCBwcmVwYXJlX2NudCk7Cj4gLQkJcHJlcGFyZV9jbnQgPSBQUkVQQVJFX0NO VF9NQVg7Cj4gLQl9Cj4gKwkJLyogcHJlcGFyZSBjb3VudCAqLwo+ICsJCXByZXBhcmVfY250ID0g RElWX1JPVU5EX1VQKHRoc19wcmVwYXJlX25zICogdWlfZGVuLAo+ICsJCQkJCQkJdWlfbnVtICog bXVsKTsKPiAgCj4gLQkvKiBleGl0IHplcm8gY291bnQgKi8KPiAtCWV4aXRfemVyb19jbnQgPSBE SVZfUk9VTkRfVVAoCj4gKwkJaWYgKHByZXBhcmVfY250ID4gUFJFUEFSRV9DTlRfTUFYKSB7Cj4g KwkJCURSTV9ERUJVR19LTVMoInByZXBhcmUgY291bnQgdG9vIGhpZ2ggJXVcbiIsCj4gKwkJCQkJ CQkJcHJlcGFyZV9jbnQpOwo+ICsJCQlwcmVwYXJlX2NudCA9IFBSRVBBUkVfQ05UX01BWDsKPiAr CQl9Cj4gKwo+ICsJCS8qIGV4aXQgemVybyBjb3VudCAqLwo+ICsJCWV4aXRfemVyb19jbnQgPSBE SVZfUk9VTkRfVVAoCj4gIAkJCQkodGhzX3ByZXBhcmVfaHN6ZXJvIC0gdGhzX3ByZXBhcmVfbnMp ICogdWlfZGVuLAo+ICAJCQkJdWlfbnVtICogbXVsCj4gIAkJCQkpOwo+ICAKPiAtCS8qCj4gLQkg KiBFeGl0IHplcm8gaXMgdW5pZmllZCB2YWwgdGhzX3plcm8gYW5kIHRoc19leGl0Cj4gLQkgKiBt aW5pbXVtIHZhbHVlIGZvciB0aHNfZXhpdCA9IDExMG5zCj4gLQkgKiBtaW4gKGV4aXRfemVyb19j bnQgKiAyKSA9IDExMC9VSQo+IC0JICogZXhpdF96ZXJvX2NudCA9IDU1L1VJCj4gLQkgKi8KPiAt CWlmIChleGl0X3plcm9fY250IDwgKDU1ICogdWlfZGVuIC8gdWlfbnVtKSAmJiAoNTUgKiB1aV9k ZW4pICUgdWlfbnVtKQo+IC0JCWV4aXRfemVyb19jbnQgKz0gMTsKPiAtCj4gLQlpZiAoZXhpdF96 ZXJvX2NudCA+IEVYSVRfWkVST19DTlRfTUFYKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiZXhpdCB6 ZXJvIGNvdW50IHRvbyBoaWdoICV1XG4iLCBleGl0X3plcm9fY250KTsKPiAtCQlleGl0X3plcm9f Y250ID0gRVhJVF9aRVJPX0NOVF9NQVg7Cj4gLQl9Cj4gKwkJLyoKPiArCQkgKiBFeGl0IHplcm8g aXMgdW5pZmllZCB2YWwgdGhzX3plcm8gYW5kIHRoc19leGl0Cj4gKwkJICogbWluaW11bSB2YWx1 ZSBmb3IgdGhzX2V4aXQgPSAxMTBucwo+ICsJCSAqIG1pbiAoZXhpdF96ZXJvX2NudCAqIDIpID0g MTEwL1VJCj4gKwkJICogZXhpdF96ZXJvX2NudCA9IDU1L1VJCj4gKwkJICovCj4gKwkJaWYgKGV4 aXRfemVyb19jbnQgPCAoNTUgKiB1aV9kZW4gLyB1aV9udW0pICYmCj4gKwkJCQkJKDU1ICogdWlf ZGVuKSAlIHVpX251bSkKPiArCQkJZXhpdF96ZXJvX2NudCArPSAxOwo+ICsKPiArCQlpZiAoZXhp dF96ZXJvX2NudCA+IEVYSVRfWkVST19DTlRfTUFYKSB7Cj4gKwkJCURSTV9ERUJVR19LTVMoImV4 aXQgemVybyBjb3VudCB0b28gaGlnaCAldVxuIiwKPiArCQkJCQkJCQlleGl0X3plcm9fY250KTsK PiArCQkJZXhpdF96ZXJvX2NudCA9IEVYSVRfWkVST19DTlRfTUFYOwo+ICsJCX0KPiAgCj4gLQkv KiBjbGsgemVybyBjb3VudCAqLwo+IC0JY2xrX3plcm9fY250ID0gRElWX1JPVU5EX1VQKAo+IC0J CQkJKHRjbGtfcHJlcGFyZV9jbGt6ZXJvIC0JdGhzX3ByZXBhcmVfbnMpCj4gLQkJCQkqIHVpX2Rl biwgdWlfbnVtICogbXVsKTsKPiArCQkvKiBjbGsgemVybyBjb3VudCAqLwo+ICsJCWNsa196ZXJv X2NudCA9IERJVl9ST1VORF9VUCgodGNsa19wcmVwYXJlX2Nsa3plcm8gLQo+ICsJCQkJCQl0aHNf cHJlcGFyZV9ucykKPiArCQkJCQkJKiB1aV9kZW4sIHVpX251bSAqIG11bCk7Cj4gIAo+IC0JaWYg KGNsa196ZXJvX2NudCA+IENMS19aRVJPX0NOVF9NQVgpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJj bG9jayB6ZXJvIGNvdW50IHRvbyBoaWdoICV1XG4iLCBjbGtfemVyb19jbnQpOwo+IC0JCWNsa196 ZXJvX2NudCA9IENMS19aRVJPX0NOVF9NQVg7Cj4gLQl9Cj4gKwkJaWYgKGNsa196ZXJvX2NudCA+ IENMS19aRVJPX0NOVF9NQVgpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiY2xvY2sgemVybyBjb3Vu dCB0b28gaGlnaCAldVxuIiwKPiArCQkJCQkJCQljbGtfemVyb19jbnQpOwo+ICsJCQljbGtfemVy b19jbnQgPSBDTEtfWkVST19DTlRfTUFYOwo+ICsJCX0KPiAgCj4gLQkvKiB0cmFpbCBjb3VudCAq Lwo+IC0JdGNsa190cmFpbF9ucyA9IG1heChtaXBpX2NvbmZpZy0+dGNsa190cmFpbCwgbWlwaV9j b25maWctPnRoc190cmFpbCk7Cj4gLQl0cmFpbF9jbnQgPSBESVZfUk9VTkRfVVAodGNsa190cmFp bF9ucyAqIHVpX2RlbiwgdWlfbnVtICogbXVsKTsKPiArCQkvKiB0cmFpbCBjbnQgKi8KPiArCQl0 cmFpbF9jbnQgPSBESVZfUk9VTkRfVVAodGNsa190cmFpbF9ucyAqIHVpX2RlbiwgdWlfbnVtICog bXVsKTsKPiAgCj4gLQlpZiAodHJhaWxfY250ID4gVFJBSUxfQ05UX01BWCkgewo+IC0JCURSTV9E RUJVR19LTVMoInRyYWlsIGNvdW50IHRvbyBoaWdoICV1XG4iLCB0cmFpbF9jbnQpOwo+IC0JCXRy YWlsX2NudCA9IFRSQUlMX0NOVF9NQVg7Cj4gLQl9Cj4gKwkJaWYgKHRyYWlsX2NudCA+IFRSQUlM X0NOVF9NQVgpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygidHJhaWwgY291bnQgdG9vIGhpZ2ggJXVc biIsIHRyYWlsX2NudCk7Cj4gKwkJCXRyYWlsX2NudCA9IFRSQUlMX0NOVF9NQVg7Cj4gKwkJfQo+ ICAKPiAtCS8qIEIwODAgKi8KPiAtCWludGVsX2RzaS0+ZHBoeV9yZWcgPSBleGl0X3plcm9fY250 IDw8IDI0IHwgdHJhaWxfY250IDw8IDE2IHwKPiArCQkvKiBCMDgwICovCj4gKwkJaW50ZWxfZHNp LT5kcGh5X3JlZyA9IGV4aXRfemVyb19jbnQgPDwgMjQgfCB0cmFpbF9jbnQgPDwgMTYgfAo+ICAJ CQkJCQljbGtfemVyb19jbnQgPDwgOCB8IHByZXBhcmVfY250Owo+ICsJfQo+ICAKPiAgCS8qCj4g IAkgKiBMUCB0byBIUyBzd2l0Y2ggY291bnQgPSA0VExQWCArIFBSRVBfQ09VTlQgKiBtdWwgKyBF WElUX1pFUk9fQ09VTlQgKgo+IEBAIC03MDcsOSArNzkwLDEwIEBAIGJvb2wgaW50ZWxfZHNpX3Zi dF9pbml0KHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgdTE2IHBhbmVsX2lkKQo+ICAJICov Cj4gIAl0bHB4X3VpID0gRElWX1JPVU5EX1VQKHRscHhfbnMgKiB1aV9kZW4sIHVpX251bSk7Cj4g IAo+IC0JLyogQjA0NCAqLwo+IC0JLyogRklYTUU6Cj4gLQkgKiBUaGUgY29tbWVudCBhYm92ZSBk b2VzIG5vdCBtYXRjaCB3aXRoIHRoZSBjb2RlICovCj4gKwkvKgo+ICsJICogQjA0NAo+ICsJICog RklYTUU6IGNvbW1lbnQgYWJvdmUgZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgY29kZQo+ICsJICov CgpVbnJlbGF0ZWQgY2hhbmdlcy4KCj4gIAlscF90b19oc19zd2l0Y2ggPSBESVZfUk9VTkRfVVAo NCAqIHRscHhfdWkgKyBwcmVwYXJlX2NudCAqIG11bCArCj4gIAkJCQkJCWV4aXRfemVyb19jbnQg KiBtdWwgKyAxMCwgOCk7Cj4gIAo+IEBAIC03MTgsOCArODAyLDkgQEAgYm9vbCBpbnRlbF9kc2lf dmJ0X2luaXQoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCB1MTYgcGFuZWxfaWQpCj4gIAlp bnRlbF9kc2ktPmhzX3RvX2xwX2NvdW50ID0gbWF4KGxwX3RvX2hzX3N3aXRjaCwgaHNfdG9fbHBf c3dpdGNoKTsKPiAgCWludGVsX2RzaS0+aHNfdG9fbHBfY291bnQgKz0gZXh0cmFfYnl0ZV9jb3Vu dDsKPiAgCj4gLQkvKiBCMDg4ICovCj4gLQkvKiBMUCAtPiBIUyBmb3IgY2xvY2sgbGFuZXMKPiAr CS8qCj4gKwkgKiBCMDg4Cj4gKwkgKiBMUCAtPiBIUyBmb3IgY2xvY2sgbGFuZXMKPiAgCSAqIExQ IGNsayBzeW5jICsgTFAxMSArIExQMDEgKyB0Y2xrX3ByZXBhcmUgKyB0Y2xrX3plcm8gKwo+ICAJ ICoJCQkJCQlleHRyYSBieXRlIGNvdW50Cj4gIAkgKiAyVFBMWCArIDFUTFBYICsgMSBUUExYKGlu IG5zKSArIHByZXBhcmVfY250ICogMiArIGNsa196ZXJvX2NudCAqCj4gQEAgLTczNSw3ICs4MjAs OCBAQCBib29sIGludGVsX2RzaV92YnRfaW5pdChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ks IHUxNiBwYW5lbF9pZCkKPiAgCj4gIAlpbnRlbF9kc2ktPmNsa19scF90b19oc19jb3VudCArPSBl eHRyYV9ieXRlX2NvdW50Owo+ICAKPiAtCS8qIEhTLT5MUCBmb3IgQ2xvY2sgTGFuZXMKPiArCS8q Cj4gKwkgKiBIUy0+TFAgZm9yIENsb2NrIExhbmVzCj4gIAkgKiBMb3cgUG93ZXIgY2xvY2sgc3lu Y2hyb25pc2F0aW9ucyArIDFUeCBieXRlY2xrICsgdGNsa190cmFpbCArCj4gIAkgKgkJCQkJCUV4 dHJhIGJ5dGUgY291bnQKPiAgCSAqIDJUTFBYICsgOFVJICsgKHRyYWlsX2NvdW50KjIpKGluIFVJ KSArIEV4dHJhIGJ5dGUgY291bnQKPiBAQCAtNzgyLDkgKzg2OCwxMSBAQCBib29sIGludGVsX2Rz aV92YnRfaW5pdChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUxNiBwYW5lbF9pZCkKPiAg CURSTV9ERUJVR19LTVMoIkJUQSAlc1xuIiwKPiAgCQkJZW5hYmxlZGRpc2FibGVkKCEoaW50ZWxf ZHNpLT52aWRlb19mcm10X2NmZ19iaXRzICYgRElTQUJMRV9WSURFT19CVEEpKSk7Cj4gIAo+IC0J LyogZGVsYXlzIGluIFZCVCBhcmUgaW4gdW5pdCBvZiAxMDB1cywgc28gbmVlZCB0byBjb252ZXJ0 Cj4gKwkvKgo+ICsJICogZGVsYXlzIGluIFZCVCBhcmUgaW4gdW5pdCBvZiAxMDB1cywgc28gbmVl ZCB0byBjb252ZXJ0Cj4gIAkgKiBoZXJlIGluIG1zCj4gLQkgKiBEZWxheSAoMTAwdXMpICogMTAw IC8xMDAwID0gRGVsYXkgLyAxMCAobXMpICovCj4gKwkgKiBEZWxheSAoMTAwdXMpICogMTAwIC8x MDAwID0gRGVsYXkgLyAxMCAobXMpCj4gKwkgKi8KPiAgCWludGVsX2RzaS0+YmFja2xpZ2h0X29m Zl9kZWxheSA9IHBwcy0+YmxfZGlzYWJsZV9kZWxheSAvIDEwOwo+ICAJaW50ZWxfZHNpLT5iYWNr bGlnaHRfb25fZGVsYXkgPSBwcHMtPmJsX2VuYWJsZV9kZWxheSAvIDEwOwo+ICAJaW50ZWxfZHNp LT5wYW5lbF9vbl9kZWxheSA9IHBwcy0+cGFuZWxfb25fZGVsYXkgLyAxMDsKPiAtLSAKPiAyLjcu NAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK