From mboxrd@z Thu Jan 1 00:00:00 1970 From: spanda-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [[RFC]DPU PATCH 3/4] drm/panel: add Innolux TV123WAM eDP panel driver Date: Tue, 24 Apr 2018 15:23:04 +0530 Message-ID: <24d6025f0decf52ed7faad88153c5d0e@codeaurora.org> References: <1524160568-27583-1-git-send-email-spanda@codeaurora.org> <1524160568-27583-4-git-send-email-spanda@codeaurora.org> <20180420194302.GJ73214@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180420194302.GJ73214@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, nganji-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, chandanu-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org List-Id: devicetree@vger.kernel.org T24gMjAxOC0wNC0yMSAwMToxMywgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIFRodSwgQXByIDE5LCAy MDE4IGF0IDExOjI2OjA3UE0gKzA1MzAsIFNhbmRlZXAgUGFuZGEgd3JvdGU6Cj4+IEFkZCBzdXBw b3J0IGZvciBJbm5vbHV4IFRWMTIzV0FNIDEyLjMiIHBhbmVsIHdoaWNoCj4+IGlzIGFuIGVEUCBw YW5lbC4KPiAKPiBJdCBzZWVtcyBsaWtlIHlvdSBjb3VsZCBqdXN0IHVzZSB0aGUgcGFuZWwtc2lt cGxlIGRyaXZlciwgbm8/IEdpdmVuIAo+IHRoYXQgdGhpcwo+IGRyaXZlciBkb2Vzbid0IGhhdmUg YW55IHBvd2VyIHRpbWluZywgdGhhdCB3aWxsIHByb2JhYmx5IHdvcmsgYmV0dGVyIAo+IHNpbmNl IHRoZQo+IHdhcnJhbnR5IHdvbid0IGJlIHZvaWRlZCA6KQoKV2hpbGUgZ29pbmcgdGhyb3VnaCB0 aGUgc2ltcGxlIHBhbmVsIGRyaXZlciBmaXJzdCBzYXcgY291cGxlIG9mIGNhbGxzIHRvIAptaXBp X2RzaQpBUElzLCBhbmQgc2luY2UgdGhpcyBwYW5lbCBpcyBhbiBlRFAgcGFuZWwgc28gZGVjaWRl ZCB0byBtYWtlIGEgbmV3IApkcml2ZXIgaW5zdGVhZC4KQnV0IGl0IGxvb2tzIGxpa2Ugd2UgY2Fu IHJldXNlIHNpbXBsZS1wYW5lbCBmb3IgdGhpcyBlZHAgcGFuZWwgYWxzby4gCldpbGwgdXNlIHNp bXBsZS1wYW5lbCBkcml2ZXIgaW4gbmV4dCBwYXRjaC4KPiAKPiBTZWFuCj4gCj4+IAo+PiBTaWdu ZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhbmRhIDxzcGFuZGFAY29kZWF1cm9yYS5vcmc+Cj4+IC0tLQo+ PiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWlubm9sdXgtdHYxMjN3YW0uYyB8IDI5MyAK Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgMSBmaWxlIGNoYW5nZWQsIDI5MyBpbnNl cnRpb25zKCspCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3Bh bmVsLWlubm9sdXgtdHYxMjN3YW0uYwo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9wYW5lbC1pbm5vbHV4LXR2MTIzd2FtLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL3Bh bmVsL3BhbmVsLWlubm9sdXgtdHYxMjN3YW0uYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBp bmRleCAwMDAwMDAwLi41NjMyYjAyCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLWlubm9sdXgtdHYxMjN3YW0uYwo+PiBAQCAtMCwwICsxLDI5MyBA QAo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAKPj4gbW9kaWZ5Cj4+ICsg KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMiBhbmQKPj4gKyAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+PiArICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK Pj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKPj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4+ICsjaW5jbHVk ZSA8ZHJtL2RybV9wYW5lbC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4K Pj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51 eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPj4gKwo+PiArc3RydWN0IGlubm9sdXhfZWRwXzJrX3Bh bmVsX2Rlc2Mgewo+PiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlczsKPj4g Kwl1bnNpZ25lZCBpbnQgbnVtX21vZGVzOwo+PiArCXUzMiBicGM7Cj4+ICsJdTMyIGJ1c19mbGFn czsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBpbm5vbHV4X2VkcF8ya19wYW5lbCB7Cj4+ICsJc3Ry dWN0IGRybV9wYW5lbCBiYXNlOwo+PiArCWJvb2wgZW5hYmxlZDsKPj4gKwlib29sIHByZXBhcmVk Owo+PiArCWNvbnN0IHN0cnVjdCBpbm5vbHV4X2VkcF8ya19wYW5lbF9kZXNjICpkZXNjOwo+PiAr CXN0cnVjdCByZWd1bGF0b3IgKnN1cHBseTsKPj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICplbmFibGVf Z3BpbzsKPj4gKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0Owo+PiArfTsKPj4g Kwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIGlubm9sdXhfZWRwXzJr X21vZGUgPSB7Cj4+ICsJLmNsb2NrID0gMjA2MDE2LAo+PiArCS5oZGlzcGxheSA9IDIxNjAsCj4+ ICsJLmhzeW5jX3N0YXJ0ID0gMjE2MCArIDQ4LAo+PiArCS5oc3luY19lbmQgPSAyMTYwICsgNDgg KyAzMiwKPj4gKwkuaHRvdGFsID0gMjE2MCArIDQ4ICsgMzIgKyA4MCwKPj4gKwkudmRpc3BsYXkg PSAxNDQwLAo+PiArCS52c3luY19zdGFydCA9IDE0NDAgKyAzLAo+PiArCS52c3luY19lbmQgPSAx NDQwICsgMyArIDEwLAo+PiArCS52dG90YWwgPSAxNDQwICsgMyArIDEwICsgMjcsCj4+ICsJLnZy ZWZyZXNoID0gNjAsCj4+ICsJLmZsYWdzID0gRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9E RV9GTEFHX1BWU1lOQywKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW5ub2x1 eF9lZHBfMmtfcGFuZWxfZGVzYyBpbm5vbHV4X2VkcF8yayA9IHsKPj4gKwkubW9kZXMgPSAmaW5u b2x1eF9lZHBfMmtfbW9kZSwKPj4gKwkubnVtX21vZGVzID0gMSwKPj4gKwkuYnBjID0gOCwKPj4g KwkuYnVzX2ZsYWdzID0gRFJNX0JVU19GTEFHX1BJWERBVEFfUE9TRURHRSwKPj4gK307Cj4+ICsK Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBsYXRmb3JtX29mX21hdGNoW10g PSB7Cj4+ICsJewo+PiArCQkuY29tcGF0aWJsZSA9ICJpbm5vbHV4LCBlZHBfMmtfcGFuZWwiLAo+ PiArCQkuZGF0YSA9ICZpbm5vbHV4X2VkcF8yaywKPj4gKwl9LAo+PiArfTsKPj4gKwo+PiArc3Rh dGljIGlubGluZSBzdHJ1Y3QgaW5ub2x1eF9lZHBfMmtfcGFuZWwgKgo+PiArdG9faW5ub2x1eF9l ZHBfMmtfcGFuZWwoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ICsJcmV0dXJuIGNv bnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IGlubm9sdXhfZWRwXzJrX3BhbmVsLCBiYXNlKTsKPj4g K30KPj4gKwo+PiArc3RhdGljIGludCBpbm5vbHV4X2VkcF8ya19wYW5lbF9kaXNhYmxlKHN0cnVj dCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCBpbm5vbHV4X2VkcF8ya19wYW5l bCAqcGRhdGEgPSB0b19pbm5vbHV4X2VkcF8ya19wYW5lbChwYW5lbCk7Cj4+ICsKPj4gKwlpZiAo IXBkYXRhLT5lbmFibGVkKQo+PiArCQlyZXR1cm4gMDsKPj4gKwo+PiArCWlmIChwZGF0YS0+YmFj a2xpZ2h0KSB7Cj4+ICsJCXBkYXRhLT5iYWNrbGlnaHQtPnByb3BzLnBvd2VyID0gRkJfQkxBTktf UE9XRVJET1dOOwo+PiArCQlwZGF0YS0+YmFja2xpZ2h0LT5wcm9wcy5zdGF0ZSB8PSBCTF9DT1JF X0ZCQkxBTks7Cj4+ICsJCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKHBkYXRhLT5iYWNrbGlnaHQp Owo+PiArCX0KPj4gKwo+PiArCXBkYXRhLT5lbmFibGVkID0gZmFsc2U7Cj4+ICsKPj4gKwlyZXR1 cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBpbm5vbHV4X2VkcF8ya19wYW5lbF91bnBy ZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ICsJc3RydWN0IGlubm9sdXhf ZWRwXzJrX3BhbmVsICpwZGF0YSA9IHRvX2lubm9sdXhfZWRwXzJrX3BhbmVsKHBhbmVsKTsKPj4g Kwo+PiArCWlmICghcGRhdGEtPnByZXBhcmVkKQo+PiArCQlyZXR1cm4gMDsKPj4gKwo+PiArCWlm IChwZGF0YS0+ZW5hYmxlX2dwaW8pCj4+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwZGF0 YS0+ZW5hYmxlX2dwaW8sIDApOwo+PiArCj4+ICsJcmVndWxhdG9yX2Rpc2FibGUocGRhdGEtPnN1 cHBseSk7Cj4+ICsKPj4gKwlwZGF0YS0+cHJlcGFyZWQgPSBmYWxzZTsKPj4gKwo+PiArCXJldHVy biAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGlubm9sdXhfZWRwXzJrX3BhbmVsX3ByZXBh cmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ICsJc3RydWN0IGlubm9sdXhfZWRw XzJrX3BhbmVsICpwZGF0YSA9IHRvX2lubm9sdXhfZWRwXzJrX3BhbmVsKHBhbmVsKTsKPj4gKwlp bnQgcmV0Owo+PiArCj4+ICsJaWYgKHBkYXRhLT5wcmVwYXJlZCkKPj4gKwkJcmV0dXJuIDA7Cj4+ ICsKPj4gKwlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKHBkYXRhLT5zdXBwbHkpOwo+PiArCWlmIChy ZXQgPCAwKSB7Cj4+ICsJCWRldl9lcnIocGFuZWwtPmRldiwgImZhaWxlZCB0byBlbmFibGUgc3Vw cGx5OiAlZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAo cGRhdGEtPmVuYWJsZV9ncGlvKQo+PiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocGRhdGEt PmVuYWJsZV9ncGlvLCAxKTsKPj4gKwo+PiArCXBkYXRhLT5wcmVwYXJlZCA9IHRydWU7Cj4+ICsK Pj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBpbm5vbHV4X2VkcF8ya19w YW5lbF9lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ICsJc3RydWN0IGlu bm9sdXhfZWRwXzJrX3BhbmVsICpwZGF0YSA9IHRvX2lubm9sdXhfZWRwXzJrX3BhbmVsKHBhbmVs KTsKPj4gKwo+PiArCWlmIChwZGF0YS0+ZW5hYmxlZCkKPj4gKwkJcmV0dXJuIDA7Cj4+ICsKPj4g KwlpZiAocGRhdGEtPmJhY2tsaWdodCkgewo+PiArCQlwZGF0YS0+YmFja2xpZ2h0LT5wcm9wcy5z dGF0ZSAmPSB+QkxfQ09SRV9GQkJMQU5LOwo+PiArCQlwZGF0YS0+YmFja2xpZ2h0LT5wcm9wcy5w b3dlciA9IEZCX0JMQU5LX1VOQkxBTks7Cj4+ICsJCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKHBk YXRhLT5iYWNrbGlnaHQpOwo+PiArCX0KPj4gKwo+PiArCXBkYXRhLT5lbmFibGVkID0gdHJ1ZTsK Pj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGlubm9sdXhfZWRw XzJrX3BhbmVsX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4gK3sKPj4gKwlz dHJ1Y3QgaW5ub2x1eF9lZHBfMmtfcGFuZWwgKnBkYXRhID0gdG9faW5ub2x1eF9lZHBfMmtfcGFu ZWwocGFuZWwpOwo+PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwZGF0YS0+ YmFzZS5jb25uZWN0b3I7Cj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IHBkYXRhLT5iYXNl LmRybTsKPj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPj4gKwl1bnNpZ25lZCBp bnQgaSwgbnVtID0gMDsKPj4gKwo+PiArCWlmICghcGRhdGEtPmRlc2MgfHwgIWNvbm5lY3RvciB8 fCAhZHJtKQo+PiArCQlyZXR1cm4gMDsKPj4gKwo+PiArCWZvciAoaSA9IDA7IGkgPCBwZGF0YS0+ ZGVzYy0+bnVtX21vZGVzOyBpKyspIHsKPj4gKwkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm0gPSAmcGRhdGEtPmRlc2MtPm1vZGVzW2ldOwo+PiArCj4+ICsJCW1vZGUgPSBkcm1fbW9k ZV9kdXBsaWNhdGUoZHJtLCBtKTsKPj4gKwkJaWYgKCFtb2RlKSB7Cj4+ICsJCQlkZXZfZXJyKGRy bS0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1QCV1XG4iLAo+PiArCQkJCW0tPmhkaXNw bGF5LCBtLT52ZGlzcGxheSwgbS0+dnJlZnJlc2gpOwo+PiArCQkJY29udGludWU7Cj4+ICsJCX0K Pj4gKwo+PiArCQltb2RlLT50eXBlIHw9IERSTV9NT0RFX1RZUEVfRFJJVkVSOwo+PiArCj4+ICsJ CWlmIChwZGF0YS0+ZGVzYy0+bnVtX21vZGVzID09IDEpCj4+ICsJCQltb2RlLT50eXBlIHw9IERS TV9NT0RFX1RZUEVfUFJFRkVSUkVEOwo+PiArCj4+ICsJCWRybV9tb2RlX3NldF9uYW1lKG1vZGUp Owo+PiArCj4+ICsJCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPj4gKwkJ bnVtKys7Cj4+ICsJfQo+PiArCj4+ICsJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uYnBjID0gcGRh dGEtPmRlc2MtPmJwYzsKPj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5idXNfZmxhZ3MgPSBw ZGF0YS0+ZGVzYy0+YnVzX2ZsYWdzOwo+PiArCj4+ICsJcmV0dXJuIG51bTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgaW5ub2x1eF9lZHBfMmtfcGFu ZWxfZnVuY3MgPSB7Cj4+ICsJLmRpc2FibGUgPSBpbm5vbHV4X2VkcF8ya19wYW5lbF9kaXNhYmxl LAo+PiArCS51bnByZXBhcmUgPSBpbm5vbHV4X2VkcF8ya19wYW5lbF91bnByZXBhcmUsCj4+ICsJ LnByZXBhcmUgPSBpbm5vbHV4X2VkcF8ya19wYW5lbF9wcmVwYXJlLAo+PiArCS5lbmFibGUgPSBp bm5vbHV4X2VkcF8ya19wYW5lbF9lbmFibGUsCj4+ICsJLmdldF9tb2RlcyA9IGlubm9sdXhfZWRw XzJrX3BhbmVsX2dldF9tb2RlcywKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgaW5ub2x1eF9l ZHBfMmtfcGFuZWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+PiArCWNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgKmlkOwo+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqYmFja2xpZ2h0Owo+PiArCXN0 cnVjdCBpbm5vbHV4X2VkcF8ya19wYW5lbCAqcGRhdGE7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiAr CWlkID0gb2ZfbWF0Y2hfbm9kZShwbGF0Zm9ybV9vZl9tYXRjaCwgcGRldi0+ZGV2Lm9mX25vZGUp Owo+PiArCWlmICghaWQpCj4+ICsJCXJldHVybiAtRU5PREVWOwo+PiArCj4+ICsJcGRhdGEgPSBk ZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBkYXRhKSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFw ZGF0YSkKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwlwZGF0YS0+ZW5hYmxlZCA9IGZh bHNlOwo+PiArCXBkYXRhLT5wcmVwYXJlZCA9IGZhbHNlOwo+PiArCXBkYXRhLT5kZXNjID0gaWQt PmRhdGE7Cj4+ICsKPj4gKwlwZGF0YS0+c3VwcGx5ID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRldiwg InBvd2VyIik7Cj4+ICsJaWYgKElTX0VSUihwZGF0YS0+c3VwcGx5KSkKPj4gKwkJcmV0dXJuIFBU Ul9FUlIocGRhdGEtPnN1cHBseSk7Cj4+ICsKPj4gKwlwZGF0YS0+ZW5hYmxlX2dwaW8gPSBkZXZt X2dwaW9kX2dldChkZXYsICJlbmFibGUiLCBHUElPRF9PVVRfTE9XKTsKPj4gKwlpZiAoSVNfRVJS KHBkYXRhLT5lbmFibGVfZ3BpbykpCj4+ICsJCXJldHVybiBQVFJfRVJSKHBkYXRhLT5lbmFibGVf Z3Bpbyk7Cj4+ICsKPj4gKwliYWNrbGlnaHQgPSBvZl9wYXJzZV9waGFuZGxlKGRldi0+b2Zfbm9k ZSwgImJhY2tsaWdodCIsIDApOwo+PiArCWlmIChiYWNrbGlnaHQpIHsKPj4gKwkJcGRhdGEtPmJh Y2tsaWdodCA9IG9mX2ZpbmRfYmFja2xpZ2h0X2J5X25vZGUoYmFja2xpZ2h0KTsKPj4gKwkJb2Zf bm9kZV9wdXQoYmFja2xpZ2h0KTsKPj4gKwo+PiArCQlpZiAoIXBkYXRhLT5iYWNrbGlnaHQpCj4+ ICsJCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPj4gKwl9Cj4+ICsKPj4gKwlkcm1fcGFuZWxfaW5p dCgmcGRhdGEtPmJhc2UpOwo+PiArCXBkYXRhLT5iYXNlLmRldiA9IGRldjsKPj4gKwlwZGF0YS0+ YmFzZS5mdW5jcyA9ICZpbm5vbHV4X2VkcF8ya19wYW5lbF9mdW5jczsKPj4gKwo+PiArCXJldCA9 IGRybV9wYW5lbF9hZGQoJnBkYXRhLT5iYXNlKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJZ290 byBmcmVlX2JhY2tsaWdodDsKPj4gKwo+PiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIHBkYXRhKTsK Pj4gKwo+PiArCXJldHVybiAwOwo+PiArCj4+ICtmcmVlX2JhY2tsaWdodDoKPj4gKwlpZiAocGRh dGEtPmJhY2tsaWdodCkKPj4gKwkJcHV0X2RldmljZSgmcGRhdGEtPmJhY2tsaWdodC0+ZGV2KTsK Pj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgaW5ub2x1eF9l ZHBfMmtfcGFuZWxfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPj4gKwlzdHJ1Y3QgaW5ub2x1eF9l ZHBfMmtfcGFuZWwgKnBkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+ICsKPj4gKwlkcm1f cGFuZWxfZGV0YWNoKCZwZGF0YS0+YmFzZSk7Cj4+ICsJZHJtX3BhbmVsX3JlbW92ZSgmcGRhdGEt PmJhc2UpOwo+PiArCj4+ICsJaW5ub2x1eF9lZHBfMmtfcGFuZWxfZGlzYWJsZSgmcGRhdGEtPmJh c2UpOwo+PiArCWlubm9sdXhfZWRwXzJrX3BhbmVsX3VucHJlcGFyZSgmcGRhdGEtPmJhc2UpOwo+ PiArCj4+ICsJaWYgKHBkYXRhLT5iYWNrbGlnaHQpCj4+ICsJCXB1dF9kZXZpY2UoJnBkYXRhLT5i YWNrbGlnaHQtPmRldik7Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW5ub2x1eF9lZHBfMmtfcGFuZWxfZHJpdmVyID0gewo+ PiArCS5kcml2ZXIgPSB7Cj4+ICsJCS5uYW1lID0gImlubm9sdXgtMmstZWRwLXBhbmVsIiwKPj4g KwkJLm9mX21hdGNoX3RhYmxlID0gcGxhdGZvcm1fb2ZfbWF0Y2gsCj4+ICsJfSwKPj4gKwkucHJv YmUgPSBpbm5vbHV4X2VkcF8ya19wYW5lbF9wcm9iZSwKPj4gKwkucmVtb3ZlID0gaW5ub2x1eF9l ZHBfMmtfcGFuZWxfcmVtb3ZlLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGludCBfX2luaXQgaW5u b2x1eF9lZHBfMmtfcGFuZWxfaW5pdCh2b2lkKQo+PiArewo+PiArCWludCByZXQ7Cj4+ICsKPj4g KwlyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmlubm9sdXhfZWRwXzJrX3BhbmVsX2Ry aXZlcik7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwlyZXR1 cm4gMDsKPj4gK30KPj4gK21vZHVsZV9pbml0KGlubm9sdXhfZWRwXzJrX3BhbmVsX2luaXQpOwo+ PiArCj4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgaW5ub2x1eF9lZHBfMmtfcGFuZWxfZXhpdCh2b2lk KQo+PiArewo+PiArCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZpbm5vbHV4X2VkcF8ya19w YW5lbF9kcml2ZXIpOwo+PiArfQo+PiArbW9kdWxlX2V4aXQoaW5ub2x1eF9lZHBfMmtfcGFuZWxf ZXhpdCk7Cj4+ICsKPj4gK01PRFVMRV9ERVNDUklQVElPTigiSW5ub2x1eCAyayBlRFAgcGFuZWwg ZHJpdmVyIik7Cj4+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4+IC0tCj4+IFRoZSBRdWFsY29t bSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEg Cj4+IEZvcnVtLAo+PiBhIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4+ IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJl bm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K