From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v6 06/20] drm/i915/icl: Program DSI clock and data lane timing params Date: Wed, 26 Sep 2018 15:59:12 +0300 Message-ID: <87h8ictnxb.fsf@intel.com> References: <1537095223-5184-1-git-send-email-madhav.chauhan@intel.com> <1537095223-5184-7-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8578D6E449 for ; Wed, 26 Sep 2018 12:59:13 +0000 (UTC) In-Reply-To: <1537095223-5184-7-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 , intel-gfx@lists.freedesktop.org Cc: komala.b.rangappa@intel.com, rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gU3VuLCAxNiBTZXAgMjAxOCwgTWFkaGF2IENoYXVoYW4gPG1hZGhhdi5jaGF1aGFuQGludGVs LmNvbT4gd3JvdGU6Cj4gVGhpcyBwYXRjaCBwcm9ncmFtcyBELVBIWSB0aW1pbmcgcGFyYW1ldGVy cyBmb3IgdGhlCj4gY2xvY2sgYW5kIGRhdGEgbGFuZSAoaW4gZXNjYXBlIGNsb2Nrcykgb2YgRFNJ Cj4gY29udHJvbGxlciAoRFNJIHBvcnQgMCBhbmQgMSkuCj4gVGhlc2UgcHJvZ3JhbW1lZCB0aW1p bmdzIHdvdWxkIGJlIHVzZWQgYnkgRFNJIENvbnRyb2xsZXIKPiB0byBjYWxjdWxhdGUgbGluayB0 cmFuc2l0aW9uIGxhdGVuY2llcyBvZiB0aGUgZGF0YSBhbmQKPiBjbG9jayBsYW5lcy4KPgo+IHYy OiBVc2UgbmV3bHkgZGVmaW5lZCBiaXRmaWVsZHMgZm9yIGRhdGEgYW5kIGNsb2NrIGxhbmUKClZp bGxlJ3MgcmV2aWV3IFsxXSBoYXNuJ3QgYmVlbiBhZGRyZXNzZWQuCgpCUiwKSmFuaS4KClsxXSBo dHRwOi8vbWlkLm1haWwtYXJjaGl2ZS5jb20vMjAxODA3MTkxNjE3MzkuR0M1NTY1QGludGVsLmNv bQoKPgo+IFNpZ25lZC1vZmYtYnk6IE1hZGhhdiBDaGF1aGFuIDxtYWRoYXYuY2hhdWhhbkBpbnRl bC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ljbF9kc2kuYyAgICAgICB8ICAx OCArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oICAgICB8ICAgMyArCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV92YnQuYyB8IDIwMCArKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25z KCspLCA1NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pY2xfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pY2xfZHNpLmMKPiBpbmRleCBmZjVi Mjg1Li45NjAyYjY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ljbF9kc2ku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ljbF9kc2kuYwo+IEBAIC0yOTEsNiArMjkx LDI0IEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9zZXR1cF9kcGh5X3RpbWluZ3Moc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkJdG1wIHw9IGludGVsX2RzaS0+aW5pdF9jb3VudDsK PiAgCQlJOTE1X1dSSVRFKElDTF9EU0lfVF9JTklUX01BU1RFUihwb3J0KSwgdG1wKTsKPiAgCX0K PiArCj4gKwkvKiBQcm9ncmFtIERQSFkgY2xvY2sgbGFuZXMgdGltaW5ncyAqLwo+ICsJZm9yX2Vh Y2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ICsJCUk5MTVfV1JJVEUoRFBI WV9DTEtfVElNSU5HX1BBUkFNKHBvcnQpLCBpbnRlbF9kc2ktPmRwaHlfcmVnKTsKPiArCj4gKwkJ Lyogc2hhZG93IHJlZ2lzdGVyIGluc2lkZSBkaXNwbGF5IGNvcmUgKi8KPiArCQlJOTE1X1dSSVRF KERTSV9DTEtfVElNSU5HX1BBUkFNKHBvcnQpLCBpbnRlbF9kc2ktPmRwaHlfcmVnKTsKPiArCX0K PiArCj4gKwkvKiBQcm9ncmFtIERQSFkgZGF0YSBsYW5lcyB0aW1pbmdzICovCj4gKwlmb3JfZWFj aF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJSTkxNV9XUklURShEUEhZ X0RBVEFfVElNSU5HX1BBUkFNKHBvcnQpLAo+ICsJCQkgICBpbnRlbF9kc2ktPmRwaHlfZGF0YV9s YW5lX3JlZyk7Cj4gKwo+ICsJCS8qIHNoYWRvdyByZWdpc3RlciBpbnNpZGUgZGlzcGxheSBjb3Jl ICovCj4gKwkJSTkxNV9XUklURShEU0lfREFUQV9USU1JTkdfUEFSQU0ocG9ydCksCj4gKwkJCSAg IGludGVsX2RzaS0+ZHBoeV9kYXRhX2xhbmVfcmVnKTsKPiArCX0KPiAgfQo+ICAKPiAgc3RhdGlj IHZvaWQgZ2VuMTFfZHNpX2VuYWJsZV9wb3J0X2FuZF9waHkoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmgKPiBpbmRleCBhZDdjMWNiLi45ZmQ4 NTI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmgKPiBAQCAtODUsNiArODUsOSBAQCBz dHJ1Y3QgaW50ZWxfZHNpIHsKPiAgCXUzMiBwb3J0X2JpdHM7Cj4gIAl1MzIgYndfdGltZXI7Cj4g IAl1MzIgZHBoeV9yZWc7Cj4gKwo+ICsJLyogZGF0YSBsYW5lcyBkcGh5IHRpbWluZyAqLwo+ICsJ dTMyIGRwaHlfZGF0YV9sYW5lX3JlZzsKPiAgCXUzMiB2aWRlb19mcm10X2NmZ19iaXRzOwo+ICAJ dTE2IGxwX2J5dGVfY2xrOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpX3ZidC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3ZidC5jCj4g aW5kZXggYWM4M2Q2Yi4uZmJiMTU5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kc2lfdmJ0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lf dmJ0LmMKPiBAQCAtNTA5LDcgKzUwOSw5IEBAIGJvb2wgaW50ZWxfZHNpX3ZidF9pbml0KHN0cnVj dCBpbnRlbF9kc2kgKmludGVsX2RzaSwgdTE2IHBhbmVsX2lkKQo+ICAJdTMyIGJwcDsKPiAgCXUz MiB0bHB4X25zLCBleHRyYV9ieXRlX2NvdW50LCBiaXRyYXRlLCB0bHB4X3VpOwo+ICAJdTMyIHVp X251bSwgdWlfZGVuOwo+IC0JdTMyIHByZXBhcmVfY250LCBleGl0X3plcm9fY250LCBjbGtfemVy b19jbnQsIHRyYWlsX2NudDsKPiArCXUzMiBwcmVwYXJlX2NudCwgZXhpdF96ZXJvX2NudCwgY2xr X3plcm9fY250LCB0cmFpbF9jbnQsIGhzX3plcm9fY250Owo+ICsJdTMyIHRjbGtfcHJlX2NudCwg dGNsa19wb3N0X2NudDsKPiArCXUzMiB0Y2xrX3ByZV9ucywgdGNsa19wb3N0X25zOwo+ICAJdTMy IHRoc19wcmVwYXJlX25zLCB0Y2xrX3RyYWlsX25zOwo+ICAJdTMyIHRjbGtfcHJlcGFyZV9jbGt6 ZXJvLCB0aHNfcHJlcGFyZV9oc3plcm87Cj4gIAl1MzIgbHBfdG9faHNfc3dpdGNoLCBoc190b19s cF9zd2l0Y2g7Cj4gQEAgLTYyNCw3NiArNjI2LDE1NyBAQCBib29sIGludGVsX2RzaV92YnRfaW5p dChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUxNiBwYW5lbF9pZCkKPiAgCj4gIAl0Y2xr X3ByZXBhcmVfY2xremVybyA9IG1pcGlfY29uZmlnLT50Y2xrX3ByZXBhcmVfY2xremVybzsKPiAg CXRoc19wcmVwYXJlX2hzemVybyA9IG1pcGlfY29uZmlnLT50aHNfcHJlcGFyZV9oc3plcm87Cj4g LQo+ICsJdGNsa190cmFpbF9ucyA9IG1heChtaXBpX2NvbmZpZy0+dGNsa190cmFpbCwgbWlwaV9j b25maWctPnRoc190cmFpbCk7Cj4gKwl0aHNfcHJlcGFyZV9ucyA9IG1heChtaXBpX2NvbmZpZy0+ dGhzX3ByZXBhcmUsCj4gKwkJCQltaXBpX2NvbmZpZy0+dGNsa19wcmVwYXJlKTsKPiAgCS8qCj4g IAkgKiBCMDYwCj4gIAkgKiBMUCBieXRlIGNsb2NrID0gVExQWC8gKDhVSSkKPiAgCSAqLwo+ICAJ aW50ZWxfZHNpLT5scF9ieXRlX2NsayA9IERJVl9ST1VORF9VUCh0bHB4X25zICogdWlfZGVuLCA4 ICogdWlfbnVtKTsKPiAgCj4gLQkvKiBERFIgY2xvY2sgcGVyaW9kID0gMiAqIFVJCj4gLQkgKiBV SShzZWMpID0gMS8oYml0cmF0ZSAqIDEwXjMpIChiaXRyYXRlIGlzIGluIEtIWikKPiAtCSAqIFVJ KG5zZWMpID0gMTBeNiAvIGJpdHJhdGUKPiAtCSAqIEREUiBjbG9jayBwZXJpb2QgKG5zZWMpID0g MiAqIFVJID0gKDIgKiAxMF42KS8gYml0cmF0ZQo+IC0JICogRERSIGNsb2NrIGNvdW50ICA9IG5z X3ZhbHVlIC8gRERSIGNsb2NrIHBlcmlvZAo+IC0JICoKPiArCS8qCj4gIAkgKiBGb3IgR0VNSU5J TEFLRSBkcGh5X3BhcmFtX3JlZyB3aWxsIGJlIHByb2dyYW1tZWQgaW4gdGVybXMgb2YKPiAgCSAq IEhTIGJ5dGUgY2xvY2sgY291bnQgZm9yIG90aGVyIHBsYXRmb3JtIGluIEhTIGRkciBjbG9jayBj b3VudAo+ICAJICovCj4gIAltdWwgPSBJU19HRU1JTklMQUtFKGRldl9wcml2KSA/IDggOiAyOwo+ IC0JdGhzX3ByZXBhcmVfbnMgPSBtYXgobWlwaV9jb25maWctPnRoc19wcmVwYXJlLAo+IC0JCQkg ICAgIG1pcGlfY29uZmlnLT50Y2xrX3ByZXBhcmUpOwo+ICAKPiAtCS8qIHByZXBhcmUgY291bnQg Ki8KPiAtCXByZXBhcmVfY250ID0gRElWX1JPVU5EX1VQKHRoc19wcmVwYXJlX25zICogdWlfZGVu LCB1aV9udW0gKiBtdWwpOwo+ICsJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwkJLyoK PiArCQkgKiBwcmVwYXJlIGNudCBpbiBlc2NhcGUgY2xvY2tzCj4gKwkJICogdGhpcyBmaWVsZCBy ZXByZXNlbnRzIGEgaGV4YWRlY2ltYWwgdmFsdWUgd2l0aCBhIHByZWNpc2lvbgo+ICsJCSAqIG9m IDEuMiDigJMgaS5lLiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgaXMgdGhlIGludGVnZXIKPiAr CQkgKiBhbmQgdGhlIGxlYXN0IHNpZ25pZmljYW50IDIgYml0cyBhcmUgZnJhY3Rpb24gYml0cy4K PiArCQkgKiBzbywgdGhlIGZpZWxkIGNhbiByZXByZXNlbnQgYSByYW5nZSBvZiAwLjI1IHRvIDEu NzUKPiArCQkgKi8KPiArCQlwcmVwYXJlX2NudCA9IERJVl9ST1VORF9VUCh0aHNfcHJlcGFyZV9u cyAqIDQsIHRscHhfbnMpOwo+ICsKPiArCQkvKiBjbGsgemVybyBjb3VudCBpbiBlc2NhcGUgY2xv Y2tzICovCj4gKwkJY2xrX3plcm9fY250ID0gRElWX1JPVU5EX1VQKAo+ICsJCQkJCSh0Y2xrX3By ZXBhcmVfY2xremVybyAtIHRoc19wcmVwYXJlX25zKSwKPiArCQkJCQl0bHB4X25zKTsKPiArCj4g KwkJLyogdHJhaWwgY250IGluIGVzY2FwZSBjbG9ja3MqLwo+ICsJCXRyYWlsX2NudCA9IERJVl9S T1VORF9VUCh0Y2xrX3RyYWlsX25zLCB0bHB4X25zKTsKPiArCj4gKwkJLyogdGNsayBwcmUvcG9z dCBjb3VudCBpbiBlc2NhcGUgY2xvY2tzICovCj4gKwkJdGNsa19wb3N0X25zID0gbWlwaV9jb25m aWctPnRjbGtfcG9zdDsKPiArCQl0Y2xrX3ByZV9ucyA9IG1pcGlfY29uZmlnLT50Y2xrX3ByZTsK PiArCQl0Y2xrX3ByZV9jbnQgPSBESVZfUk9VTkRfVVAodGNsa19wcmVfbnMsIHRscHhfbnMpOwo+ ICsJCXRjbGtfcG9zdF9jbnQgPSBESVZfUk9VTkRfVVAodGNsa19wb3N0X25zLCB0bHB4X25zKTsK PiArCj4gKwkJLyogaHMgemVybyBjbnQgaW4gZXNjYXBlIGNsb2NrcyAqLwo+ICsJCWhzX3plcm9f Y250ID0gRElWX1JPVU5EX1VQKAo+ICsJCQkJCSh0aHNfcHJlcGFyZV9oc3plcm8gLSB0aHNfcHJl cGFyZV9ucyksCj4gKwkJCQkJdGxweF9ucyk7Cj4gKwo+ICsJCS8qIGhzIGV4aXQgemVybyBjbnQg aW4gZXNjYXBlIGNsb2NrcyAqLwo+ICsJCWV4aXRfemVyb19jbnQgPSBESVZfUk9VTkRfVVAobWlw aV9jb25maWctPnRoc19leGl0LCB0bHB4X25zKTsKPiArCj4gKwkJaWYgKHByZXBhcmVfY250ID4g MHg3IHx8Cj4gKwkJICAgIGNsa196ZXJvX2NudCA+IDB4RiB8fAo+ICsJCSAgICB0Y2xrX3ByZV9j bnQgPiAweDMgfHwKPiArCQkgICAgdGNsa19wb3N0X2NudCA+IDB4NyB8fAo+ICsJCSAgICB0cmFp bF9jbnQgPiAweDcgfHwKPiArCQkgICAgaHNfemVyb19jbnQgPiAweEYgfHwKPiArCQkgICAgZXhp dF96ZXJvX2NudCA+IDB4Nykgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJEUEhZIHZhbHVlcyBj cm9zc2luZyBtYXggbGltaXRzLCIpOwo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJyZXN0cmljdGlu ZyB0byBtYXggdmFsdWVzXG4iKTsKPiArCQl9Cj4gKwo+ICsJCXByZXBhcmVfY250ID0gKHByZXBh cmVfY250ID4gMHg3KSA/IDB4NyA6IHByZXBhcmVfY250Owo+ICsJCWNsa196ZXJvX2NudCA9IChj bGtfemVyb19jbnQgPiAweEYpID8gMHhGIDogY2xrX3plcm9fY250Owo+ICsJCXRjbGtfcHJlX2Nu dCA9ICh0Y2xrX3ByZV9jbnQgPiAweDMpID8gMHgzIDogdGNsa19wcmVfY250Owo+ICsJCXRjbGtf cG9zdF9jbnQgPSAodGNsa19wb3N0X2NudCA+IDB4NykgPyAweDcgOiB0Y2xrX3Bvc3RfY250Owo+ ICsJCXRyYWlsX2NudCA9ICh0cmFpbF9jbnQgPiAweDcpID8gMHg3IDogdHJhaWxfY250Owo+ICsJ CWhzX3plcm9fY250ID0gKGhzX3plcm9fY250ID4gMHhGKSA/IDB4RiA6IGhzX3plcm9fY250Owo+ ICsJCWV4aXRfemVyb19jbnQgPSAoZXhpdF96ZXJvX2NudCA+IDB4NykgPyAweDcgOiBleGl0X3pl cm9fY250Owo+ICsKPiArCQkvKiBjbG9jayBsYW5lIGRwaHkgdGltaW5ncyAqLwo+ICsJCWludGVs X2RzaS0+ZHBoeV9yZWcgfD0gKENMS19QUkVQQVJFX09WRVJSSURFIHwKPiArCQkJCQlDTEtfUFJF UEFSRShwcmVwYXJlX2NudCkgfAo+ICsJCQkJCUNMS19aRVJPX09WRVJSSURFIHwKPiArCQkJCQlD TEtfWkVSTyhjbGtfemVyb19jbnQpIHwKPiArCQkJCQlDTEtfUFJFX09WRVJSSURFIHwKPiArCQkJ CQlDTEtfUFJFKHRjbGtfcHJlX2NudCkgfAo+ICsJCQkJCUNMS19QT1NUX09WRVJSSURFIHwKPiAr CQkJCQlDTEtfUE9TVCh0Y2xrX3Bvc3RfY250KSB8Cj4gKwkJCQkJQ0xLX1RSQUlMX09WRVJSSURF IHwKPiArCQkJCQlDTEtfVFJBSUwodHJhaWxfY250KSk7Cj4gKwo+ICsJCS8qIGRhdGEgbGFuZXMg ZHBoeSB0aW1pbmdzICovCj4gKwkJaW50ZWxfZHNpLT5kcGh5X2RhdGFfbGFuZV9yZWcgPSBIU19Q UkVQQVJFX09WRVJSSURFIHwKPiArCQkJCQkJSFNfUFJFUEFSRShwcmVwYXJlX2NudCkgfAo+ICsJ CQkJCQlIU19aRVJPX09WRVJSSURFIHwKPiArCQkJCQkJSFNfWkVSTyhoc196ZXJvX2NudCkgfAo+ ICsJCQkJCQlIU19UUkFJTF9PVkVSUklERSB8Cj4gKwkJCQkJCUhTX1RSQUlMKHRyYWlsX2NudCkg fAo+ICsJCQkJCQlIU19FWElUX09WRVJSSURFIHwKPiArCQkJCQkJSFNfRVhJVChleGl0X3plcm9f Y250KTsKPiArCX0gZWxzZSB7Cj4gKwkJLyoKPiArCQkgKiBERFIgY2xvY2sgcGVyaW9kID0gMiAq IFVJCj4gKwkJICogVUkoc2VjKSA9IDEvKGJpdHJhdGUgKiAxMF4zKSAoYml0cmF0ZSBpcyBpbiBL SFopCj4gKwkJICogVUkobnNlYykgPSAxMF42IC8gYml0cmF0ZQo+ICsJCSAqIEREUiBjbG9jayBw ZXJpb2QgKG5zZWMpID0gMiAqIFVJID0gKDIgKiAxMF42KS8gYml0cmF0ZQo+ICsJCSAqIEREUiBj bG9jayBjb3VudCAgPSBuc192YWx1ZSAvIEREUiBjbG9jayBwZXJpb2QKPiArCQkgKi8KPiAgCj4g LQlpZiAocHJlcGFyZV9jbnQgPiBQUkVQQVJFX0NOVF9NQVgpIHsKPiAtCQlEUk1fREVCVUdfS01T KCJwcmVwYXJlIGNvdW50IHRvbyBoaWdoICV1XG4iLCBwcmVwYXJlX2NudCk7Cj4gLQkJcHJlcGFy ZV9jbnQgPSBQUkVQQVJFX0NOVF9NQVg7Cj4gLQl9Cj4gKwkJLyogcHJlcGFyZSBjb3VudCAqLwo+ ICsJCXByZXBhcmVfY250ID0gRElWX1JPVU5EX1VQKHRoc19wcmVwYXJlX25zICogdWlfZGVuLAo+ ICsJCQkJCQkJdWlfbnVtICogbXVsKTsKPiAgCj4gLQkvKiBleGl0IHplcm8gY291bnQgKi8KPiAt CWV4aXRfemVyb19jbnQgPSBESVZfUk9VTkRfVVAoCj4gKwkJaWYgKHByZXBhcmVfY250ID4gUFJF UEFSRV9DTlRfTUFYKSB7Cj4gKwkJCURSTV9ERUJVR19LTVMoInByZXBhcmUgY291bnQgdG9vIGhp Z2ggJXVcbiIsCj4gKwkJCQkJCQkJcHJlcGFyZV9jbnQpOwo+ICsJCQlwcmVwYXJlX2NudCA9IFBS RVBBUkVfQ05UX01BWDsKPiArCQl9Cj4gKwo+ICsJCS8qIGV4aXQgemVybyBjb3VudCAqLwo+ICsJ CWV4aXRfemVyb19jbnQgPSBESVZfUk9VTkRfVVAoCj4gIAkJCQkodGhzX3ByZXBhcmVfaHN6ZXJv IC0gdGhzX3ByZXBhcmVfbnMpICogdWlfZGVuLAo+ICAJCQkJdWlfbnVtICogbXVsCj4gIAkJCQkp Owo+ICAKPiAtCS8qCj4gLQkgKiBFeGl0IHplcm8gaXMgdW5pZmllZCB2YWwgdGhzX3plcm8gYW5k IHRoc19leGl0Cj4gLQkgKiBtaW5pbXVtIHZhbHVlIGZvciB0aHNfZXhpdCA9IDExMG5zCj4gLQkg KiBtaW4gKGV4aXRfemVyb19jbnQgKiAyKSA9IDExMC9VSQo+IC0JICogZXhpdF96ZXJvX2NudCA9 IDU1L1VJCj4gLQkgKi8KPiAtCWlmIChleGl0X3plcm9fY250IDwgKDU1ICogdWlfZGVuIC8gdWlf bnVtKSAmJiAoNTUgKiB1aV9kZW4pICUgdWlfbnVtKQo+IC0JCWV4aXRfemVyb19jbnQgKz0gMTsK PiAtCj4gLQlpZiAoZXhpdF96ZXJvX2NudCA+IEVYSVRfWkVST19DTlRfTUFYKSB7Cj4gLQkJRFJN X0RFQlVHX0tNUygiZXhpdCB6ZXJvIGNvdW50IHRvbyBoaWdoICV1XG4iLCBleGl0X3plcm9fY250 KTsKPiAtCQlleGl0X3plcm9fY250ID0gRVhJVF9aRVJPX0NOVF9NQVg7Cj4gLQl9Cj4gKwkJLyoK PiArCQkgKiBFeGl0IHplcm8gaXMgdW5pZmllZCB2YWwgdGhzX3plcm8gYW5kIHRoc19leGl0Cj4g KwkJICogbWluaW11bSB2YWx1ZSBmb3IgdGhzX2V4aXQgPSAxMTBucwo+ICsJCSAqIG1pbiAoZXhp dF96ZXJvX2NudCAqIDIpID0gMTEwL1VJCj4gKwkJICogZXhpdF96ZXJvX2NudCA9IDU1L1VJCj4g KwkJICovCj4gKwkJaWYgKGV4aXRfemVyb19jbnQgPCAoNTUgKiB1aV9kZW4gLyB1aV9udW0pICYm Cj4gKwkJCQkJKDU1ICogdWlfZGVuKSAlIHVpX251bSkKPiArCQkJZXhpdF96ZXJvX2NudCArPSAx Owo+ICsKPiArCQlpZiAoZXhpdF96ZXJvX2NudCA+IEVYSVRfWkVST19DTlRfTUFYKSB7Cj4gKwkJ CURSTV9ERUJVR19LTVMoImV4aXQgemVybyBjb3VudCB0b28gaGlnaCAldVxuIiwKPiArCQkJCQkJ CQlleGl0X3plcm9fY250KTsKPiArCQkJZXhpdF96ZXJvX2NudCA9IEVYSVRfWkVST19DTlRfTUFY Owo+ICsJCX0KPiAgCj4gLQkvKiBjbGsgemVybyBjb3VudCAqLwo+IC0JY2xrX3plcm9fY250ID0g RElWX1JPVU5EX1VQKAo+IC0JCQkJKHRjbGtfcHJlcGFyZV9jbGt6ZXJvIC0JdGhzX3ByZXBhcmVf bnMpCj4gLQkJCQkqIHVpX2RlbiwgdWlfbnVtICogbXVsKTsKPiArCQkvKiBjbGsgemVybyBjb3Vu dCAqLwo+ICsJCWNsa196ZXJvX2NudCA9IERJVl9ST1VORF9VUCgodGNsa19wcmVwYXJlX2Nsa3pl cm8gLQo+ICsJCQkJCQl0aHNfcHJlcGFyZV9ucykKPiArCQkJCQkJKiB1aV9kZW4sIHVpX251bSAq IG11bCk7Cj4gIAo+IC0JaWYgKGNsa196ZXJvX2NudCA+IENMS19aRVJPX0NOVF9NQVgpIHsKPiAt CQlEUk1fREVCVUdfS01TKCJjbG9jayB6ZXJvIGNvdW50IHRvbyBoaWdoICV1XG4iLCBjbGtfemVy b19jbnQpOwo+IC0JCWNsa196ZXJvX2NudCA9IENMS19aRVJPX0NOVF9NQVg7Cj4gLQl9Cj4gKwkJ aWYgKGNsa196ZXJvX2NudCA+IENMS19aRVJPX0NOVF9NQVgpIHsKPiArCQkJRFJNX0RFQlVHX0tN UygiY2xvY2sgemVybyBjb3VudCB0b28gaGlnaCAldVxuIiwKPiArCQkJCQkJCQljbGtfemVyb19j bnQpOwo+ICsJCQljbGtfemVyb19jbnQgPSBDTEtfWkVST19DTlRfTUFYOwo+ICsJCX0KPiAgCj4g LQkvKiB0cmFpbCBjb3VudCAqLwo+IC0JdGNsa190cmFpbF9ucyA9IG1heChtaXBpX2NvbmZpZy0+ dGNsa190cmFpbCwgbWlwaV9jb25maWctPnRoc190cmFpbCk7Cj4gLQl0cmFpbF9jbnQgPSBESVZf Uk9VTkRfVVAodGNsa190cmFpbF9ucyAqIHVpX2RlbiwgdWlfbnVtICogbXVsKTsKPiArCQkvKiB0 cmFpbCBjbnQgKi8KPiArCQl0cmFpbF9jbnQgPSBESVZfUk9VTkRfVVAodGNsa190cmFpbF9ucyAq IHVpX2RlbiwgdWlfbnVtICogbXVsKTsKPiAgCj4gLQlpZiAodHJhaWxfY250ID4gVFJBSUxfQ05U X01BWCkgewo+IC0JCURSTV9ERUJVR19LTVMoInRyYWlsIGNvdW50IHRvbyBoaWdoICV1XG4iLCB0 cmFpbF9jbnQpOwo+IC0JCXRyYWlsX2NudCA9IFRSQUlMX0NOVF9NQVg7Cj4gLQl9Cj4gKwkJaWYg KHRyYWlsX2NudCA+IFRSQUlMX0NOVF9NQVgpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygidHJhaWwg Y291bnQgdG9vIGhpZ2ggJXVcbiIsIHRyYWlsX2NudCk7Cj4gKwkJCXRyYWlsX2NudCA9IFRSQUlM X0NOVF9NQVg7Cj4gKwkJfQo+ICAKPiAtCS8qIEIwODAgKi8KPiAtCWludGVsX2RzaS0+ZHBoeV9y ZWcgPSBleGl0X3plcm9fY250IDw8IDI0IHwgdHJhaWxfY250IDw8IDE2IHwKPiArCQkvKiBCMDgw ICovCj4gKwkJaW50ZWxfZHNpLT5kcGh5X3JlZyA9IGV4aXRfemVyb19jbnQgPDwgMjQgfCB0cmFp bF9jbnQgPDwgMTYgfAo+ICAJCQkJCQljbGtfemVyb19jbnQgPDwgOCB8IHByZXBhcmVfY250Owo+ ICsJfQo+ICAKPiAgCS8qCj4gIAkgKiBMUCB0byBIUyBzd2l0Y2ggY291bnQgPSA0VExQWCArIFBS RVBfQ09VTlQgKiBtdWwgKyBFWElUX1pFUk9fQ09VTlQgKgo+IEBAIC03MDcsOSArNzkwLDEwIEBA IGJvb2wgaW50ZWxfZHNpX3ZidF9pbml0KHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgdTE2 IHBhbmVsX2lkKQo+ICAJICovCj4gIAl0bHB4X3VpID0gRElWX1JPVU5EX1VQKHRscHhfbnMgKiB1 aV9kZW4sIHVpX251bSk7Cj4gIAo+IC0JLyogQjA0NCAqLwo+IC0JLyogRklYTUU6Cj4gLQkgKiBU aGUgY29tbWVudCBhYm92ZSBkb2VzIG5vdCBtYXRjaCB3aXRoIHRoZSBjb2RlICovCj4gKwkvKgo+ ICsJICogQjA0NAo+ICsJICogRklYTUU6IGNvbW1lbnQgYWJvdmUgZG9lcyBub3QgbWF0Y2ggd2l0 aCB0aGUgY29kZQo+ICsJICovCj4gIAlscF90b19oc19zd2l0Y2ggPSBESVZfUk9VTkRfVVAoNCAq IHRscHhfdWkgKyBwcmVwYXJlX2NudCAqIG11bCArCj4gIAkJCQkJCWV4aXRfemVyb19jbnQgKiBt dWwgKyAxMCwgOCk7Cj4gIAo+IEBAIC03MTgsOCArODAyLDkgQEAgYm9vbCBpbnRlbF9kc2lfdmJ0 X2luaXQoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCB1MTYgcGFuZWxfaWQpCj4gIAlpbnRl bF9kc2ktPmhzX3RvX2xwX2NvdW50ID0gbWF4KGxwX3RvX2hzX3N3aXRjaCwgaHNfdG9fbHBfc3dp dGNoKTsKPiAgCWludGVsX2RzaS0+aHNfdG9fbHBfY291bnQgKz0gZXh0cmFfYnl0ZV9jb3VudDsK PiAgCj4gLQkvKiBCMDg4ICovCj4gLQkvKiBMUCAtPiBIUyBmb3IgY2xvY2sgbGFuZXMKPiArCS8q Cj4gKwkgKiBCMDg4Cj4gKwkgKiBMUCAtPiBIUyBmb3IgY2xvY2sgbGFuZXMKPiAgCSAqIExQIGNs ayBzeW5jICsgTFAxMSArIExQMDEgKyB0Y2xrX3ByZXBhcmUgKyB0Y2xrX3plcm8gKwo+ICAJICoJ CQkJCQlleHRyYSBieXRlIGNvdW50Cj4gIAkgKiAyVFBMWCArIDFUTFBYICsgMSBUUExYKGluIG5z KSArIHByZXBhcmVfY250ICogMiArIGNsa196ZXJvX2NudCAqCj4gQEAgLTczNSw3ICs4MjAsOCBA QCBib29sIGludGVsX2RzaV92YnRfaW5pdChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUx NiBwYW5lbF9pZCkKPiAgCj4gIAlpbnRlbF9kc2ktPmNsa19scF90b19oc19jb3VudCArPSBleHRy YV9ieXRlX2NvdW50Owo+ICAKPiAtCS8qIEhTLT5MUCBmb3IgQ2xvY2sgTGFuZXMKPiArCS8qCj4g KwkgKiBIUy0+TFAgZm9yIENsb2NrIExhbmVzCj4gIAkgKiBMb3cgUG93ZXIgY2xvY2sgc3luY2hy b25pc2F0aW9ucyArIDFUeCBieXRlY2xrICsgdGNsa190cmFpbCArCj4gIAkgKgkJCQkJCUV4dHJh IGJ5dGUgY291bnQKPiAgCSAqIDJUTFBYICsgOFVJICsgKHRyYWlsX2NvdW50KjIpKGluIFVJKSAr IEV4dHJhIGJ5dGUgY291bnQKPiBAQCAtNzgyLDkgKzg2OCwxMSBAQCBib29sIGludGVsX2RzaV92 YnRfaW5pdChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUxNiBwYW5lbF9pZCkKPiAgCURS TV9ERUJVR19LTVMoIkJUQSAlc1xuIiwKPiAgCQkJZW5hYmxlZGRpc2FibGVkKCEoaW50ZWxfZHNp LT52aWRlb19mcm10X2NmZ19iaXRzICYgRElTQUJMRV9WSURFT19CVEEpKSk7Cj4gIAo+IC0JLyog ZGVsYXlzIGluIFZCVCBhcmUgaW4gdW5pdCBvZiAxMDB1cywgc28gbmVlZCB0byBjb252ZXJ0Cj4g KwkvKgo+ICsJICogZGVsYXlzIGluIFZCVCBhcmUgaW4gdW5pdCBvZiAxMDB1cywgc28gbmVlZCB0 byBjb252ZXJ0Cj4gIAkgKiBoZXJlIGluIG1zCj4gLQkgKiBEZWxheSAoMTAwdXMpICogMTAwIC8x MDAwID0gRGVsYXkgLyAxMCAobXMpICovCj4gKwkgKiBEZWxheSAoMTAwdXMpICogMTAwIC8xMDAw ID0gRGVsYXkgLyAxMCAobXMpCj4gKwkgKi8KPiAgCWludGVsX2RzaS0+YmFja2xpZ2h0X29mZl9k ZWxheSA9IHBwcy0+YmxfZGlzYWJsZV9kZWxheSAvIDEwOwo+ICAJaW50ZWxfZHNpLT5iYWNrbGln aHRfb25fZGVsYXkgPSBwcHMtPmJsX2VuYWJsZV9kZWxheSAvIDEwOwo+ICAJaW50ZWxfZHNpLT5w YW5lbF9vbl9kZWxheSA9IHBwcy0+cGFuZWxfb25fZGVsYXkgLyAxMDsKCi0tIApKYW5pIE5pa3Vs YSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=