From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [GLK MIPI DSI V7] drm/i915/glk: Add MIPIIO Enable/disable sequence Date: Wed, 01 Mar 2017 13:03:01 +0200 Message-ID: <87r32hcl96.fsf@intel.com> References: <1488352893-29916-1-git-send-email-madhav.chauhan@intel.com> <1488352893-29916-2-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1E1C289229 for ; Wed, 1 Mar 2017 11:03:05 +0000 (UTC) In-Reply-To: <1488352893-29916-2-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: ander.conselvan.de.oliveira@intel.com, Deepak M List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAwMSBNYXIgMjAxNywgTWFkaGF2IENoYXVoYW4gPG1hZGhhdi5jaGF1aGFuQGludGVs LmNvbT4gd3JvdGU6Cj4gRnJvbTogRGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4KPgo+IHYy OiBBZGRyZXNzZWQgSmFuaSdzIFJldmlldyBjb21tZW50cyhyZW5hbWVkIGJpdCBmaWVsZCBtYWNy b3MpCj4gdjM6IEphbmkncyBSZXZpZXcgY29tbWVudCBmb3IgYWxpZ25pbmcgY29kZSB0byBwbGF0 Zm9ybXMgYW5kIGFkZGVkCj4gd3JhcHBlciBmdW5jdGlvbnMuCj4gdjQ6IENvcnJlY3RlZCBlbmFi bGUvZGlzYWJsZSBzZXVxZW5jZSBhcyBwZXIgQlNQRUMKPiB2NTogQ29ycmVjdGVkIHdhaXRpbmcg dHdpY2UgZm9yIHNhbWUgYml0IChSZXZpZXcgY29tbWVudHM6IEphbmkpCj4gdjY6IFJlYmFzZWQg dG8gSGFuJ3MgcGF0Y2hlcyhkc2kgcmVzdHJ1Y3R1cmluZyBjb2RlKQo+Cj4gU2lnbmVkLW9mZi1i eTogRGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYWRoYXYg Q2hhdWhhbiA8bWFkaGF2LmNoYXVoYW5AaW50ZWwuY29tPgoKUHVzaGVkIHRvIGRybS1pbnRlbC1u ZXh0LXF1ZXVlZCwgdGhhbmtzIGZvciB0aGUgcGF0Y2guCgpCUiwKSmFuaS4KCj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIHwgMjA2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyks IDExIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiBpbmRleCAyMGVk Nzk5Li44ZTk3YmFlMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gQEAgLTM1Nyw2 ICszNTcsMTA5IEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+ICtzdGF0 aWMgdm9pZCBnbGtfZHNpX2RldmljZV9yZWFkeShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShl bmNvZGVyLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNf dG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiArCWVudW0gcG9ydCBwb3J0Owo+ICsJdTMy IHRtcCwgdmFsOwo+ICsKPiArCS8qIFNldCB0aGUgTUlQSSBtb2RlCj4gKwkgKiBJZiBNSVBJX01v ZGUgaXMgb2ZmLCB0aGVuIHdyaXRpbmcgdG8gTFBfV2FrZSBiaXQgaXMgbm90IHJlZmxlY3Rpbmcu Cj4gKwkgKiBQb3dlciBPTiBNSVBJIElPIGZpcnN0IGFuZCB0aGVuIHdyaXRlIGludG8gSU8gcmVz ZXQgYW5kIExQIHdha2UgYml0cwo+ICsJICovCj4gKwlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBp bnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJdG1wID0gSTkxNV9SRUFEKE1JUElfQ1RSTChwb3J0KSk7 Cj4gKwkJSTkxNV9XUklURShNSVBJX0NUUkwocG9ydCksIHRtcCB8IEdMS19NSVBJSU9fRU5BQkxF KTsKPiArCX0KPiArCj4gKwkvKiBQdXQgdGhlIElPIGludG8gcmVzZXQgKi8KPiArCXRtcCA9IEk5 MTVfUkVBRChNSVBJX0NUUkwoUE9SVF9BKSk7Cj4gKwl0bXAgJj0gfkdMS19NSVBJSU9fUkVTRVRf UkVMRUFTRUQ7Cj4gKwlJOTE1X1dSSVRFKE1JUElfQ1RSTChQT1JUX0EpLCB0bXApOwo+ICsKPiAr CS8qIFByb2dyYW0gTFAgV2FrZSAqLwo+ICsJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxf ZHNpLT5wb3J0cykgewo+ICsJCXRtcCA9IEk5MTVfUkVBRChNSVBJX0NUUkwocG9ydCkpOwo+ICsJ CXRtcCB8PSBHTEtfTFBfV0FLRTsKPiArCQlJOTE1X1dSSVRFKE1JUElfQ1RSTChwb3J0KSwgdG1w KTsKPiArCX0KPiArCj4gKwkvKiBXYWl0IGZvciBQd3IgQUNLICovCj4gKwlmb3JfZWFjaF9kc2lf cG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJaWYgKGludGVsX3dhaXRfZm9yX3Jl Z2lzdGVyKGRldl9wcml2LAo+ICsJCQkJTUlQSV9DVFJMKHBvcnQpLCBHTEtfTUlQSUlPX1BPUlRf UE9XRVJFRCwKPiArCQkJCUdMS19NSVBJSU9fUE9SVF9QT1dFUkVELCAyMCkpCj4gKwkJCURSTV9F UlJPUigiTUlQSU8gcG9ydCBpcyBwb3dlcmdhdGVkXG4iKTsKPiArCX0KPiArCj4gKwkvKiBXYWl0 IGZvciBNSVBJIFBIWSBzdGF0dXMgYml0IHRvIHNldCAqLwo+ICsJZm9yX2VhY2hfZHNpX3BvcnQo cG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ICsJCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3Rl cihkZXZfcHJpdiwKPiArCQkJCU1JUElfQ1RSTChwb3J0KSwgR0xLX1BIWV9TVEFUVVNfUE9SVF9S RUFEWSwKPiArCQkJCUdMS19QSFlfU1RBVFVTX1BPUlRfUkVBRFksIDIwKSkKPiArCQkJRFJNX0VS Uk9SKCJQSFkgaXMgbm90IE9OXG4iKTsKPiArCX0KPiArCj4gKwkvKiBHZXQgSU8gb3V0IG9mIHJl c2V0ICovCj4gKwl0bXAgPSBJOTE1X1JFQUQoTUlQSV9DVFJMKFBPUlRfQSkpOwo+ICsJSTkxNV9X UklURShNSVBJX0NUUkwoUE9SVF9BKSwgdG1wIHwgR0xLX01JUElJT19SRVNFVF9SRUxFQVNFRCk7 Cj4gKwo+ICsJLyogR2V0IElPIG91dCBvZiBMb3cgcG93ZXIgc3RhdGUqLwo+ICsJZm9yX2VhY2hf ZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ICsJCWlmICghKEk5MTVfUkVBRChN SVBJX0RFVklDRV9SRUFEWShwb3J0KSkgJiBERVZJQ0VfUkVBRFkpKSB7Cj4gKwkJCXZhbCA9IEk5 MTVfUkVBRChNSVBJX0RFVklDRV9SRUFEWShwb3J0KSk7Cj4gKwkJCXZhbCAmPSB+VUxQU19TVEFU RV9NQVNLOwo+ICsJCQl2YWwgfD0gREVWSUNFX1JFQURZOwo+ICsJCQlJOTE1X1dSSVRFKE1JUElf REVWSUNFX1JFQURZKHBvcnQpLCB2YWwpOwo+ICsJCQl1c2xlZXBfcmFuZ2UoMTAsIDE1KTsKPiAr CQl9Cj4gKwo+ICsJCS8qIEVudGVyIFVMUFMgKi8KPiArCQl2YWwgPSBJOTE1X1JFQUQoTUlQSV9E RVZJQ0VfUkVBRFkocG9ydCkpOwo+ICsJCXZhbCAmPSB+VUxQU19TVEFURV9NQVNLOwo+ICsJCXZh bCB8PSAoVUxQU19TVEFURV9FTlRFUiB8IERFVklDRV9SRUFEWSk7Cj4gKwkJSTkxNV9XUklURShN SVBJX0RFVklDRV9SRUFEWShwb3J0KSwgdmFsKTsKPiArCj4gKwkJLyogV2FpdCBmb3IgVUxQUyBO b3QgYWN0aXZlICovCj4gKwkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ ICsJCQkJTUlQSV9DVFJMKHBvcnQpLCBHTEtfVUxQU19OT1RfQUNUSVZFLAo+ICsJCQkJR0xLX1VM UFNfTk9UX0FDVElWRSwgMjApKQo+ICsKPiArCQkvKiBFeGl0IFVMUFMgKi8KPiArCQl2YWwgPSBJ OTE1X1JFQUQoTUlQSV9ERVZJQ0VfUkVBRFkocG9ydCkpOwo+ICsJCXZhbCAmPSB+VUxQU19TVEFU RV9NQVNLOwo+ICsJCXZhbCB8PSAoVUxQU19TVEFURV9FWElUIHwgREVWSUNFX1JFQURZKTsKPiAr CQlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBvcnQpLCB2YWwpOwo+ICsKPiArCQkvKiBF bnRlciBOb3JtYWwgTW9kZSAqLwo+ICsJCXZhbCA9IEk5MTVfUkVBRChNSVBJX0RFVklDRV9SRUFE WShwb3J0KSk7Cj4gKwkJdmFsICY9IH5VTFBTX1NUQVRFX01BU0s7Cj4gKwkJdmFsIHw9IChVTFBT X1NUQVRFX05PUk1BTF9PUEVSQVRJT04gfCBERVZJQ0VfUkVBRFkpOwo+ICsJCUk5MTVfV1JJVEUo TUlQSV9ERVZJQ0VfUkVBRFkocG9ydCksIHZhbCk7Cj4gKwo+ICsJCXRtcCA9IEk5MTVfUkVBRChN SVBJX0NUUkwocG9ydCkpOwo+ICsJCXRtcCAmPSB+R0xLX0xQX1dBS0U7Cj4gKwkJSTkxNV9XUklU RShNSVBJX0NUUkwocG9ydCksIHRtcCk7Cj4gKwl9Cj4gKwo+ICsJLyogV2FpdCBmb3IgU3RvcCBz dGF0ZSAqLwo+ICsJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ ICsJCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCU1JUElfQ1RS TChwb3J0KSwgR0xLX0RBVEFfTEFORV9TVE9QX1NUQVRFLAo+ICsJCQkJR0xLX0RBVEFfTEFORV9T VE9QX1NUQVRFLCAyMCkpCj4gKwkJCURSTV9FUlJPUigiRGF0ZSBsYW5lIG5vdCBpbiBTVE9QIHN0 YXRlXG4iKTsKPiArCX0KPiArCj4gKwkvKiBXYWl0IGZvciBBRkUgTEFUQ0ggKi8KPiArCWZvcl9l YWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiArCQlpZiAoaW50ZWxfd2Fp dF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQlCWFRfTUlQSV9QT1JUX0NUUkwocG9ydCks IEFGRV9MQVRDSE9VVCwKPiArCQkJCUFGRV9MQVRDSE9VVCwgMjApKQo+ICsJCQlEUk1fRVJST1Io IkQtUEhZIG5vdCBlbnRlcmluZyBMUC0xMSBzdGF0ZVxuIik7Cj4gKwl9Cj4gK30KPiArCj4gIHN0 YXRpYyB2b2lkIGJ4dF9kc2lfZGV2aWNlX3JlYWR5KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGVuY29kZXItPmJhc2UuZGV2KTsKPiBAQCAtNDI5LDExICs1MzIsNzkgQEAgc3RhdGljIHZvaWQg aW50ZWxfZHNpX2RldmljZV9yZWFkeShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAg Cj4gIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpCj4gIAkJdmx2X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7Cj4gLQllbHNlIGlmIChJU19H RU45X0xQKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ICAJ CWJ4dF9kc2lfZGV2aWNlX3JlYWR5KGVuY29kZXIpOwo+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFL RShkZXZfcHJpdikpCj4gKwkJZ2xrX2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7Cj4gIH0KPiAg Cj4gLXN0YXRpYyB2b2lkIGludGVsX2RzaV9jbGVhcl9kZXZpY2VfcmVhZHkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCj4gK3N0YXRpYyB2b2lkIGdsa19kc2lfZW50ZXJfbG93X3Bvd2Vy X21vZGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJ c3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+ YmFzZSk7Cj4gKwllbnVtIHBvcnQgcG9ydDsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJLyogRW50ZXIg VUxQUyAqLwo+ICsJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ ICsJCXZhbCA9IEk5MTVfUkVBRChNSVBJX0RFVklDRV9SRUFEWShwb3J0KSk7Cj4gKwkJdmFsICY9 IH5VTFBTX1NUQVRFX01BU0s7Cj4gKwkJdmFsIHw9IChVTFBTX1NUQVRFX0VOVEVSIHwgREVWSUNF X1JFQURZKTsKPiArCQlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBvcnQpLCB2YWwpOwo+ ICsJfQo+ICsKPiArCS8qIFdhaXQgZm9yIE1JUEkgUEhZIHN0YXR1cyBiaXQgdG8gdW5zZXQgKi8K PiArCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiArCQlpZiAo aW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkJICAgIE1JUElfQ1RSTChw b3J0KSwKPiArCQkJCQkgICAgR0xLX1BIWV9TVEFUVVNfUE9SVF9SRUFEWSwgMCwgMjApKQo+ICsJ CQlEUk1fRVJST1IoIlBIWSBpcyBub3QgdHVybmluZyBPRkZcbiIpOwo+ICsJfQo+ICsKPiArCS8q IFdhaXQgZm9yIFB3ciBBQ0sgYml0IHRvIHVuc2V0ICovCj4gKwlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVy KGRldl9wcml2LAo+ICsJCQkJCSAgICBNSVBJX0NUUkwocG9ydCksCj4gKwkJCQkJICAgIEdMS19N SVBJSU9fUE9SVF9QT1dFUkVELCAwLCAyMCkpCj4gKwkJCURSTV9FUlJPUigiTUlQSSBJTyBQb3J0 IGlzIG5vdCBwb3dlcmdhdGVkXG4iKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ2xr X2RzaV9kaXNhYmxlX21pcGlfaW8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwo+ICsJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVs X2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gKwllbnVtIHBvcnQgcG9ydDsKPiArCXUzMiB0bXA7Cj4g Kwo+ICsJLyogUHV0IHRoZSBJTyBpbnRvIHJlc2V0ICovCj4gKwl0bXAgPSBJOTE1X1JFQUQoTUlQ SV9DVFJMKFBPUlRfQSkpOwo+ICsJdG1wICY9IH5HTEtfTUlQSUlPX1JFU0VUX1JFTEVBU0VEOwo+ ICsJSTkxNV9XUklURShNSVBJX0NUUkwoUE9SVF9BKSwgdG1wKTsKPiArCj4gKwkvKiBXYWl0IGZv ciBNSVBJIFBIWSBzdGF0dXMgYml0IHRvIHVuc2V0ICovCj4gKwlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVy KGRldl9wcml2LAo+ICsJCQkJCSAgICBNSVBJX0NUUkwocG9ydCksCj4gKwkJCQkJICAgIEdMS19Q SFlfU1RBVFVTX1BPUlRfUkVBRFksIDAsIDIwKSkKPiArCQkJRFJNX0VSUk9SKCJQSFkgaXMgbm90 IHR1cm5pbmcgT0ZGXG4iKTsKPiArCX0KPiArCj4gKwkvKiBDbGVhciBNSVBJIG1vZGUgKi8KPiAr CWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiArCQl0bXAgPSBJ OTE1X1JFQUQoTUlQSV9DVFJMKHBvcnQpKTsKPiArCQl0bXAgJj0gfkdMS19NSVBJSU9fRU5BQkxF Owo+ICsJCUk5MTVfV1JJVEUoTUlQSV9DVFJMKHBvcnQpLCB0bXApOwo+ICsJfQo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBnbGtfZHNpX2NsZWFyX2RldmljZV9yZWFkeShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcikKPiArewo+ICsJZ2xrX2RzaV9lbnRlcl9sb3dfcG93ZXJfbW9kZShlbmNv ZGVyKTsKPiArCWdsa19kc2lfZGlzYWJsZV9taXBpX2lvKGVuY29kZXIpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCB2bHZfZHNpX2NsZWFyX2RldmljZV9yZWFkeShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9k c2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiBAQCAtNjcwLDYgKzg0MSwx NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gIAl9Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGludGVsX2RzaV9jbGVh cl9kZXZpY2VfcmVhZHkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwo+ICsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSB8fAo+ICsJICAgIElTX0JST1hUT04oZGV2X3ByaXYpKQo+ICsJCXZsdl9kc2lf Y2xlYXJfZGV2aWNlX3JlYWR5KGVuY29kZXIpOwo+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpCj4gKwkJZ2xrX2RzaV9jbGVhcl9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7Cj4gK30K PiArCj4gIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wb3N0X2Rpc2FibGUoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcsCj4gIAkJCQkgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkK PiBAQCAtMTMxNCwxOCArMTQ5NiwyMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfdW5wcmVwYXJl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJZW51bSBwb3J0IHBvcnQ7Cj4gIAl1 MzIgdmFsOwo+ICAKPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMp IHsKPiAtCQkvKiBQYW5lbCBjb21tYW5kcyBjYW4gYmUgc2VudCB3aGVuIGNsb2NrIGlzIGluIExQ MTEgKi8KPiAtCQlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBvcnQpLCAweDApOwo+ICsJ aWYgKCFJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ICsJCWZvcl9lYWNoX2RzaV9wb3J0KHBv cnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiArCQkJLyogUGFuZWwgY29tbWFuZHMgY2FuIGJlIHNl bnQgd2hlbiBjbG9jayBpcyBpbiBMUDExICovCj4gKwkJCUk5MTVfV1JJVEUoTUlQSV9ERVZJQ0Vf UkVBRFkocG9ydCksIDB4MCk7Cj4gIAo+IC0JCWludGVsX2RzaV9yZXNldF9jbG9ja3MoZW5jb2Rl ciwgcG9ydCk7Cj4gLQkJSTkxNV9XUklURShNSVBJX0VPVF9ESVNBQkxFKHBvcnQpLCBDTE9DS1NU T1ApOwo+ICsJCQlpbnRlbF9kc2lfcmVzZXRfY2xvY2tzKGVuY29kZXIsIHBvcnQpOwo+ICsJCQlJ OTE1X1dSSVRFKE1JUElfRU9UX0RJU0FCTEUocG9ydCksIENMT0NLU1RPUCk7Cj4gIAo+IC0JCXZh bCA9IEk5MTVfUkVBRChNSVBJX0RTSV9GVU5DX1BSRyhwb3J0KSk7Cj4gLQkJdmFsICY9IH5WSURf TU9ERV9GT1JNQVRfTUFTSzsKPiAtCQlJOTE1X1dSSVRFKE1JUElfRFNJX0ZVTkNfUFJHKHBvcnQp LCB2YWwpOwo+ICsJCQl2YWwgPSBJOTE1X1JFQUQoTUlQSV9EU0lfRlVOQ19QUkcocG9ydCkpOwo+ ICsJCQl2YWwgJj0gflZJRF9NT0RFX0ZPUk1BVF9NQVNLOwo+ICsJCQlJOTE1X1dSSVRFKE1JUElf RFNJX0ZVTkNfUFJHKHBvcnQpLCB2YWwpOwo+ICAKPiAtCQlJOTE1X1dSSVRFKE1JUElfREVWSUNF X1JFQURZKHBvcnQpLCAweDEpOwo+ICsJCQlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBv cnQpLCAweDEpOwo+ICsJCX0KPiAgCX0KPiAgfQoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVu IFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK