From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [BXT MIPI PATCH v4 11/14] drm/i915/bxt: Modify BXT BLC according to VBT changes Date: Mon, 28 Sep 2015 16:13:58 +0300 Message-ID: <87fv1yk7op.fsf@intel.com> References: <874mirrg2q.fsf@intel.com> <1443031151-11914-1-git-send-email-uma.shankar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id E41906E6A6 for ; Mon, 28 Sep 2015 06:10:41 -0700 (PDT) In-Reply-To: <1443031151-11914-1-git-send-email-uma.shankar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Uma Shankar , intel-gfx@lists.freedesktop.org Cc: shobhit.kumar@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMyBTZXAgMjAxNSwgVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4g d3JvdGU6Cj4gRnJvbTogU3VuaWwgS2FtYXRoIDxzdW5pbC5rYW1hdGhAaW50ZWwuY29tPgo+Cj4g TGF0ZXN0IFZCVCBtZW50aW9ucyB3aGljaCBzZXQgb2YgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCBm b3IgQkxDLAo+IGFzIGNvbnRyb2xsZXIgbnVtYmVyIGZpZWxkLiBNYWtpbmcgdXNlIG9mIHRoaXMg ZmllbGQgaW4gQlhUCj4gQkxDIGltcGxlbWVudGF0aW9uLiBBbHNvLCB0aGUgcmVnaXN0ZXJzIGFy ZSB1c2VkIGluIGNhc2UgY29udHJvbAo+IHBpbiBpbmRpY2F0ZXMgZGlzcGxheSBEREkuIEFkZGlu ZyBhIGNoZWNrIGZvciB0aGlzLgo+IEFjY29yZGluZyB0byBCc3BlYywgQkxDX1BXTV8qXzIgdXNl cyB0aGUgZGlzcGxheSB1dGlsaXR5IHBpbiBmb3Igb3V0cHV0Lgo+IFRvIHVzZSBiYWNrbGlnaHQg MiwgZW5hYmxlIHRoZSB1dGlsaXR5IHBpbiB3aXRoIG1vZGUgPSBQV00KPiAgICB2MjogSmFuaSdz IHJldmlldyBjb21tZW50cwo+ICAgIGFkZHJlc3NlZAo+ICAgICAgICAtIEFkZCBhIHByZWZpeCBf IHRvIEJYVCBCTEMgcmVnaXN0ZXJzIGRlZmluaXRpb25zLgo+ICAgICAgICAtIEFkZCAiYnh0IG9u bHkiIGNvbW1lbnQgZm9yIHU4IGNvbnRyb2xsZXIKPiAgICAgICAgLSBSZW1vdmUgY29udHJvbF9w aW4gY2hlY2sgZm9yIERESSBjb250cm9sbGVyCj4gICAgICAgIC0gQ2hlY2sgZm9yIHZhbGlkIGNv bnRyb2xsZXIgdmFsdWVzCj4gICAgICAgIC0gU2V0IHBpcGUgYml0cyBpbiBVVElMX1BJTl9DVEwK PiAgICAgICAgLSBFbmFibGUvRGlzYWJsZSBVVElMX1BJTl9DVEwgaW4gZW5hYmxlL2Rpc2FibGVf YmFja2xpZ2h0KCkKPiAgICAgICAgLSBJZiBCTEMgMiBpcyB1c2VkLCByZWFkIGFjdGl2ZV9sb3df cHdtIGZyb20gVVRJTF9QSU4gcG9sYXJpdHkKPiAgICBTYXRoZWVzaCdzIHJldmlldyBjb21tZW50 IGFkZHJlc3NlZAo+ICAgICAgICAtIElmIFVUSUwgUElOIGlzIGFscmVhZHkgZW5hYmxlZCwgQklP UyB3b3VsZCBoYXZlIHByb2dyYW1tZWQgaXQuIE5vCj4gICAgICAgIG5lZWQgdG8gZGlzYWJsZSBh bmQgZW5hYmxlIGFnYWluLgo+ICAgIHYzOiBKYW5pJ3MgcmV2aWV3IGNvbW1lbnRzCj4gICAgICAg IC0gYWRkIFVUSUxfUElOX1BJUEVfTUFTSyBhbmQgVVRJTF9QSU5fTU9ERV9NQVNLCj4gICAgICAg IC0gRGlzYWJsZSBVVElMX1BJTiBpZiBjb250cm9sbGVyIDEgaXMgdXNlZAo+ICAgICAgICAtIE1h c2sgb3V0IFVUSUxfUElOX1BJUEVfTUFTSyBhbmQgVVRJTF9QSU5fTU9ERV9NQVNLIGJlZm9yZSBl bmFibGluZwo+ICAgICAgICBVVElMX1BJTgo+ICAgICAgICAtIGNoZWNrIHZhbGlkIGNvbnRyb2xs ZXIgdmFsdWUgaW4gaW50ZWxfYmlvcy5jCj4gICAgICAgIC0gYWRkIGJhY2tsaWdodC51dGlsX3Bp bl9hY3RpdmVfbG93Cj4gICAgICAgIC0gZGlzYWJsZSB1dGlsIHBpbiBiZWZvcmUgZW5hYmxpbmcK PiAgICB2NDogQ2hhbmdlIGZvciBCWFQtUE8gYnJhbmNoOgo+ICAgIFN0dWJiZWQgdW53YW50ZWQg ZGVmaW5pdGlvbiB3aGljaCB3YXMgZXhpc3RpbmcgYmVmb3JlCj4gICAgYmVjYXVzZSBvZiBEQzYg cGF0Y2guCj4gICAgVVRJTF9QSU5fTU9ERV9QV00gICAgICgweDFiIDw8IDI0KQo+Cj4gdjI6IEZp eGVkIEphbmkncyByZXZpZXcgY29tbWVudC4KPgo+IHYzOiBTcGxpdCB0aGUgYmFja2lnaHQgUFdN IGZyZXF1ZW5jeSBwcm9ncmFtbWluZyBpbnRvIHNlcGFyYXRlIHBhdGNoLAo+ICAgICBpbiBjYXNl cyBCSU9TIGRvZXNuJ3QgaW5pdGlhbGl6ZXMgaXQuCj4KPiB2NDogU3RhcnRpbmcgYWZyZXNoIGFu ZCBub3QgbW9kaWZ5aW5nIGV4aXN0aW5nIHN0YXRlIGZvciBiYWNrbGlnaHQsIGFzCj4gICAgIHBl ciBKYW5pJ3MgcmVjb21tZW5kYXRpb24uCj4KPiBTaWduZWQtb2ZmLWJ5OiBWYW5kYW5hIEthbm5h biA8dmFuZGFuYS5rYW5uYW5AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFN1bmlsIEthbWF0 aCA8c3VuaWwua2FtYXRoQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBVbWEgU2hhbmthciA8 dW1hLnNoYW5rYXJAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oICAgIHwgICAyOCArKysrKysrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgfCAgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwu YyB8ICAgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gIDMgZmlsZXMg Y2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPiBpbmRleCA4OGExNmUyLi41MTlmNzY0IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCj4gQEAgLTM1MTIsMTcgKzM1MTIsMjkgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93 ZWxscyB7Cj4gICNkZWZpbmUgVVRJTF9QSU5fQ1RMCQkweDQ4NDAwCj4gICNkZWZpbmUgICBVVElM X1BJTl9FTkFCTEUJKDEgPDwgMzEpCj4gIAo+ICsjZGVmaW5lICAgVVRJTF9QSU5fUElQRSh4KSAg ICAgKCh4KSA8PCAyOSkKPiArI2RlZmluZSAgIFVUSUxfUElOX1BJUEVfTUFTSyAgICgzIDw8IDI5 KQo+ICsjZGVmaW5lICAgVVRJTF9QSU5fTU9ERV9QV00gICAgKDEgPDwgMjQpCj4gKyNkZWZpbmUg ICBVVElMX1BJTl9NT0RFX01BU0sgICAoMHhmIDw8IDI0KQo+ICsjZGVmaW5lICAgVVRJTF9QSU5f UE9MQVJJVFkgICAgKDEgPDwgMjIpCj4gKwo+ICAvKiBCWFQgYmFja2xpZ2h0IHJlZ2lzdGVyIGRl ZmluaXRpb24uICovCj4gLSNkZWZpbmUgQlhUX0JMQ19QV01fQ1RMMQkJCTB4QzgyNTAKPiArI2Rl ZmluZSBfQlhUX0JMQ19QV01fQ1RMMQkJCTB4QzgyNTAKPiAgI2RlZmluZSAgIEJYVF9CTENfUFdN X0VOQUJMRQkJCSgxIDw8IDMxKQo+ICAjZGVmaW5lICAgQlhUX0JMQ19QV01fUE9MQVJJVFkJCQko MSA8PCAyOSkKPiAtI2RlZmluZSBCWFRfQkxDX1BXTV9GUkVRMQkJCTB4QzgyNTQKPiAtI2RlZmlu ZSBCWFRfQkxDX1BXTV9EVVRZMQkJCTB4QzgyNTgKPiAtCj4gLSNkZWZpbmUgQlhUX0JMQ19QV01f Q1RMMgkJCTB4QzgzNTAKPiAtI2RlZmluZSBCWFRfQkxDX1BXTV9GUkVRMgkJCTB4QzgzNTQKPiAt I2RlZmluZSBCWFRfQkxDX1BXTV9EVVRZMgkJCTB4QzgzNTgKPiAtCj4gKyNkZWZpbmUgX0JYVF9C TENfUFdNX0ZSRVExCQkJMHhDODI1NAo+ICsjZGVmaW5lIF9CWFRfQkxDX1BXTV9EVVRZMQkJCTB4 QzgyNTgKPiArCj4gKyNkZWZpbmUgX0JYVF9CTENfUFdNX0NUTDIJCQkweEM4MzUwCj4gKyNkZWZp bmUgX0JYVF9CTENfUFdNX0ZSRVEyCQkJMHhDODM1NAo+ICsjZGVmaW5lIF9CWFRfQkxDX1BXTV9E VVRZMgkJCTB4QzgzNTgKPiArCj4gKyNkZWZpbmUgQlhUX0JMQ19QV01fQ1RMKGNvbnRyb2xsZXIp ICAgIF9QSVBFKGNvbnRyb2xsZXIsIFwKPiArCQkJCQlfQlhUX0JMQ19QV01fQ1RMMSwgX0JYVF9C TENfUFdNX0NUTDIpCj4gKyNkZWZpbmUgQlhUX0JMQ19QV01fRlJFUShjb250cm9sbGVyKSAgIF9Q SVBFKGNvbnRyb2xsZXIsIFwKPiArCQkJCQlfQlhUX0JMQ19QV01fRlJFUTEsIF9CWFRfQkxDX1BX TV9GUkVRMikKPiArI2RlZmluZSBCWFRfQkxDX1BXTV9EVVRZKGNvbnRyb2xsZXIpICAgX1BJUEUo Y29udHJvbGxlciwgXAo+ICsJCQkJCV9CWFRfQkxDX1BXTV9EVVRZMSwgX0JYVF9CTENfUFdNX0RV VFkyKQo+ICAKPiAgI2RlZmluZSBQQ0hfR1RDX0NUTAkJMHhlNzAwMAo+ICAjZGVmaW5lICAgUENI X0dUQ19FTkFCTEUJKDEgPDwgMzEpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAx MDU5MjgzLi5kOGNhMDc1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTgy LDcgKzE4Miw5IEBAIHN0cnVjdCBpbnRlbF9wYW5lbCB7Cj4gIAkJYm9vbCBlbmFibGVkOwo+ICAJ CWJvb2wgY29tYmluYXRpb25fbW9kZTsJLyogZ2VuIDIvNCBvbmx5ICovCj4gIAkJYm9vbCBhY3Rp dmVfbG93X3B3bTsKPiArCQlib29sIHV0aWxfcGluX2FjdGl2ZV9sb3c7CS8qIGJ4dCsgKi8KPiAg CQlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqZGV2aWNlOwo+ICsJCXU4IGNvbnRyb2xsZXI7CQkv KiBieHQrIG9ubHkgKi8KPiAgCX0gYmFja2xpZ2h0Owo+ICAKPiAgCXZvaWQgKCpiYWNrbGlnaHRf cG93ZXIpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKiwgYm9vbCBlbmFibGUpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcGFuZWwuYwo+IGluZGV4IDU1YWFkMjMuLmZhZmJjY2MgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBAQCAtNTM5LDkgKzUzOSwxMCBAQCBzdGF0aWMgdTMy IHZsdl9nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAg c3RhdGljIHUzMiBieHRfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2Uu ZGV2Owo+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAgCj4gLQlyZXR1cm4gSTkxNV9SRUFEKEJYVF9CTENfUFdNX0RVVFkxKTsKPiArCXJldHVybiBJ OTE1X1JFQUQoQlhUX0JMQ19QV01fRFVUWShwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpKTsK PiAgfQo+ICAKPiAgc3RhdGljIHUzMiBpbnRlbF9wYW5lbF9nZXRfYmFja2xpZ2h0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiBAQCAtNjI4LDggKzYyOSw5IEBAIHN0YXRpYyB2 b2lkIGJ4dF9zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvciwg dTMyIGxldmVsKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5i YXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFu ZWw7Cj4gIAo+IC0JSTkxNV9XUklURShCWFRfQkxDX1BXTV9EVVRZMSwgbGV2ZWwpOwo+ICsJSTkx NV9XUklURShCWFRfQkxDX1BXTV9EVVRZKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksIGxl dmVsKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiBAQCAtNzYxLDEyICs3NjMsMjAgQEAgc3Rh dGljIHZvaWQgYnh0X2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFz ZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+IC0JdTMyIHRtcDsKPiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29u bmVjdG9yLT5wYW5lbDsKPiArCXUzMiB0bXAsIHZhbDsKPiAgCj4gIAlpbnRlbF9wYW5lbF9hY3R1 YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgMCk7Cj4gIAo+IC0JdG1wID0gSTkxNV9SRUFE KEJYVF9CTENfUFdNX0NUTDEpOwo+IC0JSTkxNV9XUklURShCWFRfQkxDX1BXTV9DVEwxLCB0bXAg JiB+QlhUX0JMQ19QV01fRU5BQkxFKTsKPiArCXRtcCA9IEk5MTVfUkVBRChCWFRfQkxDX1BXTV9D VEwocGFuZWwtPmJhY2tsaWdodC5jb250cm9sbGVyKSk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9CTENf UFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpLAo+ICsJCQl0bXAgJiB+QlhUX0JM Q19QV01fRU5BQkxFKTsKPiArCj4gKwlpZiAocGFuZWwtPmJhY2tsaWdodC5jb250cm9sbGVyID09 IDEpIHsKPiArCQl2YWwgPSBJOTE1X1JFQUQoVVRJTF9QSU5fQ1RMKTsKPiArCQl2YWwgJj0gflVU SUxfUElOX0VOQUJMRTsKPiArCQlJOTE1X1dSSVRFKFVUSUxfUElOX0NUTCwgdmFsKTsKPiArCX0K PiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9wYW5lbF9kaXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gQEAgLTk4OCwxNiArOTk4LDMxIEBAIHN0YXRpYyB2 b2lkIGJ4dF9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2Owo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAg CXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiAtCXUzMiBw d21fY3RsOwo+ICsJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9nZXRfcGlwZV9mcm9tX2Nvbm5lY3Rv cihjb25uZWN0b3IpOwo+ICsJdTMyIHB3bV9jdGwsIHZhbDsKPiArCj4gKwkvKiBUbyB1c2UgMm5k IHNldCBvZiBiYWNrbGlnaHQgcmVnaXN0ZXJzLCB1dGlsaXR5IHBpbiBoYXMgdG8gYmUKPiArCSAq IGVuYWJsZWQgd2l0aCBQV00gbW9kZS4KPiArCSAqIFRoZSBmaWVsZCBzaG91bGQgb25seSBiZSBj aGFuZ2VkIHdoZW4gdGhlIHV0aWxpdHkgcGluIGlzIGRpc2FibGVkCj4gKwkgKi8KPiArCWlmIChw YW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIgPT0gMSkgewoKUGxlYXNlIHB1dCBiYWNrIHRoaXMg cGFydCBmcm9tIHRoZSBwcmV2aW91cyBwYXRjaDoKCisJCXZhbCA9IEk5MTVfUkVBRChVVElMX1BJ Tl9DVEwpOworCQlpZiAodmFsICYgVVRJTF9QSU5fRU5BQkxFKSB7CisJCQlEUk1fREVCVUdfS01T KCJ1dGlsIHBpbiBhbHJlYWR5IGVuYWJsZWRcbiIpOworCQkJdmFsICY9IH5VVElMX1BJTl9FTkFC TEU7CisJCQlJOTE1X1dSSVRFKFVUSUxfUElOX0NUTCwgdmFsKTsKKwkJfQoKQW5kIHRoZW4gY29u dGludWUgbGlrZSBiZWxvdy4KCldpdGggdGhhdCBmaXhlcywgdGhpcyBpcwoKUmV2aWV3ZWQtYnk6 IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+CgoKPiArCQl2YWwgPSAwOwo+ICsJ CWlmIChwYW5lbC0+YmFja2xpZ2h0LnV0aWxfcGluX2FjdGl2ZV9sb3cpCj4gKwkJCXZhbCB8PSBV VElMX1BJTl9QT0xBUklUWTsKPiArCQlJOTE1X1dSSVRFKFVUSUxfUElOX0NUTCwgdmFsIHwgVVRJ TF9QSU5fUElQRShwaXBlKSB8Cj4gKwkJCQlVVElMX1BJTl9NT0RFX1BXTSB8IFVUSUxfUElOX0VO QUJMRSk7Cj4gKwl9Cj4gIAo+IC0JcHdtX2N0bCA9IEk5MTVfUkVBRChCWFRfQkxDX1BXTV9DVEwx KTsKPiArCXB3bV9jdGwgPSBJOTE1X1JFQUQoQlhUX0JMQ19QV01fQ1RMKHBhbmVsLT5iYWNrbGln aHQuY29udHJvbGxlcikpOwo+ICAJaWYgKHB3bV9jdGwgJiBCWFRfQkxDX1BXTV9FTkFCTEUpIHsK PiAgCQlEUk1fREVCVUdfS01TKCJiYWNrbGlnaHQgYWxyZWFkeSBlbmFibGVkXG4iKTsKPiAgCQlw d21fY3RsICY9IH5CWFRfQkxDX1BXTV9FTkFCTEU7Cj4gLQkJSTkxNV9XUklURShCWFRfQkxDX1BX TV9DVEwxLCBwd21fY3RsKTsKPiArCQlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+ YmFja2xpZ2h0LmNvbnRyb2xsZXIpLAo+ICsJCQkJcHdtX2N0bCk7Cj4gIAl9Cj4gIAo+IC0JSTkx NV9XUklURShCWFRfQkxDX1BXTV9GUkVRMSwgcGFuZWwtPmJhY2tsaWdodC5tYXgpOwo+ICsJSTkx NV9XUklURShCWFRfQkxDX1BXTV9GUkVRKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksCj4g KwkJCXBhbmVsLT5iYWNrbGlnaHQubWF4KTsKPiAgCj4gIAlpbnRlbF9wYW5lbF9hY3R1YWxseV9z ZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gIAo+IEBA IC0xMDA1LDkgKzEwMzAsMTAgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJaWYgKHBhbmVsLT5iYWNrbGlnaHQu YWN0aXZlX2xvd19wd20pCj4gIAkJcHdtX2N0bCB8PSBCWFRfQkxDX1BXTV9QT0xBUklUWTsKPiAg Cj4gLQlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0NUTDEsIHB3bV9jdGwpOwo+IC0JUE9TVElOR19S RUFEKEJYVF9CTENfUFdNX0NUTDEpOwo+IC0JSTkxNV9XUklURShCWFRfQkxDX1BXTV9DVEwxLCBw d21fY3RsIHwgQlhUX0JMQ19QV01fRU5BQkxFKTsKPiArCUk5MTVfV1JJVEUoQlhUX0JMQ19QV01f Q1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksIHB3bV9jdGwpOwo+ICsJUE9TVElOR19S RUFEKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpKTsKPiArCUk5 MTVfV1JJVEUoQlhUX0JMQ19QV01fQ1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksCj4g KwkJCXB3bV9jdGwgfCBCWFRfQkxDX1BXTV9FTkFCTEUpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVs X3BhbmVsX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+IEBAIC0xMzcwLDEyICsxMzk2LDI4IEBAIGJ4dF9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgdW51c2VkKQo+ICAJc3RydWN0IGlu dGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ICAJdTMyIHB3bV9jdGwsIHZh bDsKPiAgCj4gLQlwd21fY3RsID0gSTkxNV9SRUFEKEJYVF9CTENfUFdNX0NUTDEpOwo+IC0JcGFu ZWwtPmJhY2tsaWdodC5hY3RpdmVfbG93X3B3bSA9IHB3bV9jdGwgJiBCWFRfQkxDX1BXTV9QT0xB UklUWTsKPiArCS8qCj4gKwkgKiBGb3IgQlhUIGhhcmQgY29kaW5nIHRoZSBCYWNrbGlnaHQgY29u dHJvbGxlciB0byAwLgo+ICsJICogVE9ETyA6IFJlYWQgdGhlIGNvbnRyb2xsZXIgdmFsdWUgZnJv bSBWQlQgYW5kIGdlbmVyYWxpemUKPiArCSAqLwo+ICsJcGFuZWwtPmJhY2tsaWdodC5jb250cm9s bGVyID0gMDsKPiAgCj4gLQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IEk5MTVfUkVBRChCWFRfQkxD X1BXTV9GUkVRMSk7Cj4gLQlpZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KQo+IC0JCXJldHVybiAt RU5PREVWOwo+ICsJcHdtX2N0bCA9IEk5MTVfUkVBRChCWFRfQkxDX1BXTV9DVEwocGFuZWwtPmJh Y2tsaWdodC5jb250cm9sbGVyKSk7Cj4gKwo+ICsJLyogS2VlcGluZyB0aGUgY2hlY2sgaWYgY29u dHJvbGxlciAxIGlzIHRvIGJlIHByb2dyYW1tZWQuCj4gKwkgKiBUaGlzIHdpbGwgY29tZSBpbnRv IGFmZmVjdCBvbmNlIHRoZSBWQlQgcGFyc2luZwo+ICsJICogaXMgZml4ZWQgZm9yIGNvbnRyb2xs ZXIgc2VsZWN0aW9uLCBhbmQgY29udHJvbGxlciAxIGlzIHVzZWQKPiArCSAqIGZvciBhIHBydGlj dWxhciBkaXNwbGF5IGNvbmZpZ3VyYXRpb24uCj4gKwkgKi8KPiArCWlmIChwYW5lbC0+YmFja2xp Z2h0LmNvbnRyb2xsZXIgPT0gMSkgewo+ICsJCXZhbCA9IEk5MTVfUkVBRChVVElMX1BJTl9DVEwp Owo+ICsJCXBhbmVsLT5iYWNrbGlnaHQudXRpbF9waW5fYWN0aXZlX2xvdyA9Cj4gKwkJCQkJdmFs ICYgVVRJTF9QSU5fUE9MQVJJVFk7Cj4gKwl9Cj4gKwo+ICsJcGFuZWwtPmJhY2tsaWdodC5hY3Rp dmVfbG93X3B3bSA9IHB3bV9jdGwgJiBCWFRfQkxDX1BXTV9QT0xBUklUWTsKPiArCXBhbmVsLT5i YWNrbGlnaHQubWF4ID0gSTkxNV9SRUFEKAo+ICsJCQlCWFRfQkxDX1BXTV9GUkVRKHBhbmVsLT5i YWNrbGlnaHQuY29udHJvbGxlcikpOwo+ICAKPiAgCXZhbCA9IGJ4dF9nZXRfYmFja2xpZ2h0KGNv bm5lY3Rvcik7Cj4gIAlwYW5lbC0+YmFja2xpZ2h0LmxldmVsID0gaW50ZWxfcGFuZWxfY29tcHV0 ZV9icmlnaHRuZXNzKGNvbm5lY3RvciwgdmFsKTsKPiAtLSAKPiAxLjcuOS41Cj4KCi0tIApKYW5p IE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK