From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 2/2] drm/panel: add innolux,p079zca panel driver Date: Tue, 14 Mar 2017 13:01:35 -0400 Message-ID: <20170314170135.GB20329@art_vandelay> References: <1488502909-22160-1-git-send-email-zyw@rock-chips.com> <1488502909-22160-2-git-send-email-zyw@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1488502909-22160-2-git-send-email-zyw@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chris Zhong Cc: linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-rockchip.vger.kernel.org T24gRnJpLCBNYXIgMDMsIDIwMTcgYXQgMDk6MDE6NDlBTSArMDgwMCwgQ2hyaXMgWmhvbmcgd3Jv dGU6Cj4gU3VwcG9ydCBJbm5vbHV4IFAwNzlaQ0EgNy44NSIgNzY4eDEwMjQgVEZUIExDRCBwYW5l bCwgaXQgaXMgYSBNSVBJIERTSQo+IHBhbmVsLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFpo b25nIDx6eXdAcm9jay1jaGlwcy5jb20+Cj4gLS0tCj4gCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5l bC9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAxMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5l bC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5l bC9wYW5lbC1pbm5vbHV4LXAwNzl6Y2EuYyB8IDMyMiArKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ICAzIGZpbGVzIGNoYW5nZWQsIDMzNCBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaW5ub2x1eC1wMDc5emNhLmMKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9k cm0vcGFuZWwvS2NvbmZpZwo+IGluZGV4IDYyYWJhOTcuLjk5ZGQwMTAgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvS2NvbmZpZwo+IEBAIC0xOCw2ICsxOCwxNyBAQCBjb25maWcgRFJNX1BBTkVMX1NJTVBMRQo+ ICAJICB0aGF0IGl0IGNhbiBiZSBhdXRvbWF0aWNhbGx5IHR1cm5lZCBvZmYgd2hlbiB0aGUgcGFu ZWwgZ29lcyBpbnRvIGEKPiAgCSAgbG93IHBvd2VyIHN0YXRlLgo+ICAKPiArY29uZmlnIERSTV9Q QU5FTF9JTk5PTFVYX1AwNzlaQ0EKPiArCXRyaXN0YXRlICJJbm5vbHV4IFAwNzlaQ0EgcGFuZWwi Cj4gKwlkZXBlbmRzIG9uIE9GCj4gKwlkZXBlbmRzIG9uIERSTV9NSVBJX0RTSQo+ICsJZGVwZW5k cyBvbiBCQUNLTElHSFRfQ0xBU1NfREVWSUNFCj4gKwloZWxwCj4gKwkgIFNheSBZIGhlcmUgaWYg eW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIElubm9sdXggUDA3OVpDQQo+ICsJICBURlQt TENEIG1vZHVsZXMuIFRoZSBwYW5lbCBoYXMgYSAxMDI0eDc2OCByZXNvbHV0aW9uIGFuZCB1c2Vz Cj4gKwkgIDI0IGJpdCBSR0IgcGVyIHBpeGVsLiBJdCBwcm92aWRlcyBhIE1JUEkgRFNJIGludGVy ZmFjZSB0bwo+ICsJICB0aGUgaG9zdCBhbmQgaGFzIGEgYnVpbHQtaW4gTEVEIGJhY2tsaWdodC4K PiArCj4gIGNvbmZpZyBEUk1fUEFORUxfSkRJX0xUMDcwTUUwNTAwMAo+ICAJdHJpc3RhdGUgIkpE SSBMVDA3ME1FMDUwMDAgV1VYR0EgRFNJIHBhbmVsIgo+ICAJZGVwZW5kcyBvbiBPRgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvTWFrZWZpbGUKPiBpbmRleCBhNWM3ZWMwLi5iZGEyYWE0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5l bC9NYWtlZmlsZQo+IEBAIC0xLDQgKzEsNSBAQAo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJ TVBMRSkgKz0gcGFuZWwtc2ltcGxlLm8KPiArb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9JTk5PTFVY X1AwNzlaQ0EpICs9IHBhbmVsLWlubm9sdXgtcDA3OXpjYS5vCj4gIG9iai0kKENPTkZJR19EUk1f UEFORUxfSkRJX0xUMDcwTUUwNTAwMCkgKz0gcGFuZWwtamRpLWx0MDcwbWUwNTAwMC5vCj4gIG9i ai0kKENPTkZJR19EUk1fUEFORUxfTEdfTEc0NTczKSArPSBwYW5lbC1sZy1sZzQ1NzMubwo+ICBv YmotJChDT05GSUdfRFJNX1BBTkVMX1BBTkFTT05JQ19WVlgxMEYwMzROMDApICs9IHBhbmVsLXBh bmFzb25pYy12dngxMGYwMzRuMDAubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtaW5ub2x1eC1wMDc5emNhLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt aW5ub2x1eC1wMDc5emNhLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LjVkMTY3MDUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3Bh bmVsLWlubm9sdXgtcDA3OXpjYS5jCj4gQEAgLTAsMCArMSwzMjIgQEAKPiArLyoKPiArICogQ29w eXJpZ2h0IChjKSAyMDE3LCBGdXpob3UgUm9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uLCBMdGQKPiAr ICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiAr ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaW5j bHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVy Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArCj4gKyNpbmNsdWRl IDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX21pcGlfZHNpLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKwo+ICsj aW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+Cj4gKwo+ICtzdHJ1Y3QgaW5ub2x1eF9wYW5l bCB7Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsIGJhc2U7Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNl ICpsaW5rOwo+ICsKPiArCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHQ7Cj4gKwlz dHJ1Y3QgcmVndWxhdG9yICpzdXBwbHk7Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICplbmFibGVfZ3Bp bzsKPiArCj4gKwlib29sIHByZXBhcmVkOwo+ICsJYm9vbCBlbmFibGVkOwo+ICt9Owo+ICsKPiAr c3RhdGljIGlubGluZSBzdHJ1Y3QgaW5ub2x1eF9wYW5lbCAqdG9faW5ub2x1eF9wYW5lbChzdHJ1 Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwg c3RydWN0IGlubm9sdXhfcGFuZWwsIGJhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGlubm9s dXhfcGFuZWxfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0 IGlubm9sdXhfcGFuZWwgKmlubm9sdXggPSB0b19pbm5vbHV4X3BhbmVsKHBhbmVsKTsKPiArCWlu dCBlcnI7Cj4gKwo+ICsJaWYgKCFpbm5vbHV4LT5lbmFibGVkKQo+ICsJCXJldHVybiAwOwo+ICsK PiArCWlmIChpbm5vbHV4LT5iYWNrbGlnaHQpIHsKPiArCQlpbm5vbHV4LT5iYWNrbGlnaHQtPnBy b3BzLnBvd2VyID0gRkJfQkxBTktfUE9XRVJET1dOOwo+ICsJCWJhY2tsaWdodF91cGRhdGVfc3Rh dHVzKGlubm9sdXgtPmJhY2tsaWdodCk7Cj4gKwl9Cj4gKwo+ICsJaW5ub2x1eC0+bGluay0+bW9k ZV9mbGFncyAmPSB+TUlQSV9EU0lfTU9ERV9MUE07CgpDYW4geW91IGNvbW1lbnQgb24gd2h5IHlv dSBuZWVkIHRvIHJlbW92ZSB0aGlzIGZsYWcgaGVyZSAoYW5kIHJlLWVuYWJsZSBpdApldmVyeXdo ZXJlIGVsc2UpPwoKPiArCj4gKwllcnIgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKGlu bm9sdXgtPmxpbmspOwo+ICsJaWYgKGVyciA8IDApCj4gKwkJZGV2X2VycihwYW5lbC0+ZGV2LCAi ZmFpbGVkIHRvIHNldCBkaXNwbGF5IG9mZjogJWRcbiIsIGVycik7CgpEUk1fREVWX0VSUk9SIGlz IG5vdyBhIHRoaW5nLiBMZXQncyB1c2UgdGhhdCAoaGVyZSBhbmQgZWxzZXdoZXJlKS4KCj4gKwo+ ICsJaW5ub2x1eC0+ZW5hYmxlZCA9IGZhbHNlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IGlubm9sdXhfcGFuZWxfdW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBh bmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgaW5ub2x1eF9wYW5lbCAqaW5ub2x1eCA9IHRvX2lubm9sdXhf cGFuZWwocGFuZWwpOwo+ICsJaW50IGVycjsKPiArCj4gKwlpZiAoIWlubm9sdXgtPnByZXBhcmVk KQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlubm9sdXgtPmxpbmstPm1vZGVfZmxhZ3MgfD0gTUlQ SV9EU0lfTU9ERV9MUE07Cj4gKwo+ICsJZXJyID0gbWlwaV9kc2lfZGNzX2VudGVyX3NsZWVwX21v ZGUoaW5ub2x1eC0+bGluayk7Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlkZXZfZXJyKHBhbmVsLT5k ZXYsICJmYWlsZWQgdG8gZW50ZXIgc2xlZXAgbW9kZTogJWRcbiIsIGVycik7Cj4gKwo+ICsJZ3Bp b2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGlubm9sdXgtPmVuYWJsZV9ncGlvLCAwKTsKPiArCW1zbGVl cCgxMjApOwoKVGhlcmUgYXJlIGEgbG90IG9mIHNsZWVwcyBzcHJpbmtsZWQgYXJvdW5kIHRoZSBk cml2ZXIsIGFuZCBub25lIG9mIHRoZW0gYXJlCmRvY3VtZW50ZWQuIENhbiB5b3UgcGxlYXNlIHBy b3ZpZGUgY29tbWVudHMgZm9yIHRoZSBkZWxheXMgcG9pbnRpbmcgdGhlIHJlYWRlcgp0byB0aGUg Y29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgZGF0YXNoZWV0PyAoaWU6IC8qIFQ1LSAxMDAtMTMw bXMgKi8pCgo+ICsKPiArCXJlZ3VsYXRvcl9kaXNhYmxlKGlubm9sdXgtPnN1cHBseSk7CgpDaGVj ayB0aGUgcmV0dXJuIHZhbHVlPwoKPiArCj4gKwlpbm5vbHV4LT5wcmVwYXJlZCA9IGZhbHNlOwo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGlubm9sdXhfcGFuZWxfcHJl cGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGlubm9sdXhfcGFu ZWwgKmlubm9sdXggPSB0b19pbm5vbHV4X3BhbmVsKHBhbmVsKTsKPiArCWludCBlcnI7Cj4gKwo+ ICsJaWYgKGlubm9sdXgtPnByZXBhcmVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWdwaW9kX3Nl dF92YWx1ZV9jYW5zbGVlcChpbm5vbHV4LT5lbmFibGVfZ3BpbywgMCk7Cj4gKwo+ICsJZXJyID0g cmVndWxhdG9yX2VuYWJsZShpbm5vbHV4LT5zdXBwbHkpOwo+ICsJaWYgKGVyciA8IDApCj4gKwkJ cmV0dXJuIGVycjsKPiArCj4gKwl1c2xlZXBfcmFuZ2UoMTYwMDAsIDE3MDAwKTsKPiArCWdwaW9k X3NldF92YWx1ZV9jYW5zbGVlcChpbm5vbHV4LT5lbmFibGVfZ3BpbywgMSk7Cj4gKwl1c2xlZXBf cmFuZ2UoMTUwMDAsIDE2MDAwKTsKPiArCj4gKwlpbm5vbHV4LT5saW5rLT5tb2RlX2ZsYWdzIHw9 IE1JUElfRFNJX01PREVfTFBNOwo+ICsKPiArCWVyciA9IG1pcGlfZHNpX2Rjc19leGl0X3NsZWVw X21vZGUoaW5ub2x1eC0+bGluayk7Cj4gKwlpZiAoZXJyIDwgMCkgewo+ICsJCWRldl9lcnIocGFu ZWwtPmRldiwgImZhaWxlZCB0byBleGl0IHNsZWVwIG1vZGU6ICVkXG4iLCBlcnIpOwo+ICsJCWdv dG8gcG93ZXJvZmY7Cj4gKwl9Cj4gKwo+ICsJbXNsZWVwKDEyMCk7Cj4gKwo+ICsJZXJyID0gbWlw aV9kc2lfZGNzX3NldF9kaXNwbGF5X29uKGlubm9sdXgtPmxpbmspOwo+ICsJaWYgKGVyciA8IDAp IHsKPiArCQlkZXZfZXJyKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2V0IGRpc3BsYXkgb246ICVk XG4iLCBlcnIpOwo+ICsJCWdvdG8gcG93ZXJvZmY7Cj4gKwl9Cj4gKwo+ICsJdXNsZWVwX3Jhbmdl KDUwMDAsIDYwMDApOwo+ICsKPiArCWlubm9sdXgtPnByZXBhcmVkID0gdHJ1ZTsKPiArCj4gKwly ZXR1cm4gMDsKPiArCj4gK3Bvd2Vyb2ZmOgo+ICsJcmVndWxhdG9yX2Rpc2FibGUoaW5ub2x1eC0+ c3VwcGx5KTsKCkNoZWNrIHJldHVybiB2YWx1ZSBoZXJlLgoKU2hvdWxkIHlvdSBhbHNvIHJlc2V0 IHRoZSBncGlvIHZhbHVlPwoKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg aW5ub2x1eF9wYW5lbF9lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0 cnVjdCBpbm5vbHV4X3BhbmVsICppbm5vbHV4ID0gdG9faW5ub2x1eF9wYW5lbChwYW5lbCk7Cj4g Kwo+ICsJaWYgKGlubm9sdXgtPmVuYWJsZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKGlu bm9sdXgtPmJhY2tsaWdodCkgewo+ICsJCWlubm9sdXgtPmJhY2tsaWdodC0+cHJvcHMucG93ZXIg PSBGQl9CTEFOS19VTkJMQU5LOwo+ICsJCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGlubm9sdXgt PmJhY2tsaWdodCk7CgpDaGVjayByZXR1cm4gdmFsdWUKCj4gKwl9Cj4gKwo+ICsJaW5ub2x1eC0+ ZW5hYmxlZCA9IHRydWU7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBkZWZhdWx0X21vZGUgPSB7Cj4gKwkuY2xvY2sgPSA1 NjkwMCwKPiArCS5oZGlzcGxheSA9IDc2OCwKPiArCS5oc3luY19zdGFydCA9IDc2OCArIDQwLAo+ ICsJLmhzeW5jX2VuZCA9IDc2OCArIDQwICsgNDAsCj4gKwkuaHRvdGFsID0gNzY4ICsgNDAgKyA0 MCArIDQwLAo+ICsJLnZkaXNwbGF5ID0gMTAyNCwKPiArCS52c3luY19zdGFydCA9IDEwMjQgKyAy MCwKPiArCS52c3luY19lbmQgPSAxMDI0ICsgMjAgKyA0LAo+ICsJLnZ0b3RhbCA9IDEwMjQgKyAy MCArIDQgKyAyMCwKPiArCS52cmVmcmVzaCA9IDYwLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBp bm5vbHV4X3BhbmVsX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gKwo+ICsJbW9kZSA9IGRybV9tb2RlX2R1 cGxpY2F0ZShwYW5lbC0+ZHJtLCAmZGVmYXVsdF9tb2RlKTsKPiArCWlmICghbW9kZSkgewo+ICsJ CWRldl9lcnIocGFuZWwtPmRybS0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1eEAldVxu IiwKPiArCQkJZGVmYXVsdF9tb2RlLmhkaXNwbGF5LCBkZWZhdWx0X21vZGUudmRpc3BsYXksCj4g KwkJCWRlZmF1bHRfbW9kZS52cmVmcmVzaCk7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwl9Cj4g Kwo+ICsJZHJtX21vZGVfc2V0X25hbWUobW9kZSk7Cj4gKwo+ICsJZHJtX21vZGVfcHJvYmVkX2Fk ZChwYW5lbC0+Y29ubmVjdG9yLCBtb2RlKTsKPiArCj4gKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNw bGF5X2luZm8ud2lkdGhfbW0gPSAxMjA7Cj4gKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2lu Zm8uaGVpZ2h0X21tID0gMTYwOwo+ICsKPiArCXJldHVybiAxOwo+ICt9Cj4gKwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBpbm5vbHV4X3BhbmVsX2Z1bmNzID0gewo+ICsJ LmRpc2FibGUgPSBpbm5vbHV4X3BhbmVsX2Rpc2FibGUsCj4gKwkudW5wcmVwYXJlID0gaW5ub2x1 eF9wYW5lbF91bnByZXBhcmUsCj4gKwkucHJlcGFyZSA9IGlubm9sdXhfcGFuZWxfcHJlcGFyZSwK PiArCS5lbmFibGUgPSBpbm5vbHV4X3BhbmVsX2VuYWJsZSwKPiArCS5nZXRfbW9kZXMgPSBpbm5v bHV4X3BhbmVsX2dldF9tb2RlcywKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIGlubm9sdXhfb2ZfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAiaW5u b2x1eCxwMDc5emNhIiwgfSwKPiArCXsgfQo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9m LCBpbm5vbHV4X29mX21hdGNoKTsKPiArCj4gK3N0YXRpYyBpbnQgaW5ub2x1eF9wYW5lbF9hZGQo c3RydWN0IGlubm9sdXhfcGFuZWwgKmlubm9sdXgpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRl diA9ICZpbm5vbHV4LT5saW5rLT5kZXY7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwo+ICsJ aW50IGVycjsKPiArCj4gKwlpbm5vbHV4LT5zdXBwbHkgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2 LCAicG93ZXIiKTsKPiArCWlmIChJU19FUlIoaW5ub2x1eC0+c3VwcGx5KSkKPiArCQlyZXR1cm4g UFRSX0VSUihpbm5vbHV4LT5zdXBwbHkpOwo+ICsKPiArCWlubm9sdXgtPmVuYWJsZV9ncGlvID0g ZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAiZW5hYmxlIiwKPiArCQkJCQkJICAgICAgIEdQ SU9EX09VVF9ISUdIKTsKPiArCWlmIChJU19FUlIoaW5ub2x1eC0+ZW5hYmxlX2dwaW8pKSB7Cj4g KwkJZXJyID0gUFRSX0VSUihpbm5vbHV4LT5lbmFibGVfZ3Bpbyk7Cj4gKwkJZGV2X2RiZyhkZXYs ICJmYWlsZWQgdG8gZ2V0IGVuYWJsZSBncGlvOiAlZFxuIiwgZXJyKTsKPiArCQlpbm5vbHV4LT5l bmFibGVfZ3BpbyA9IE5VTEw7Cj4gKwl9Cj4gKwo+ICsJbnAgPSBvZl9wYXJzZV9waGFuZGxlKGRl di0+b2Zfbm9kZSwgImJhY2tsaWdodCIsIDApOwo+ICsJaWYgKG5wKSB7Cj4gKwkJaW5ub2x1eC0+ YmFja2xpZ2h0ID0gb2ZfZmluZF9iYWNrbGlnaHRfYnlfbm9kZShucCk7Cj4gKwkJb2Zfbm9kZV9w dXQobnApOwo+ICsKPiArCQlpZiAoIWlubm9sdXgtPmJhY2tsaWdodCkKPiArCQkJcmV0dXJuIC1F UFJPQkVfREVGRVI7Cj4gKwl9Cj4gKwo+ICsJZHJtX3BhbmVsX2luaXQoJmlubm9sdXgtPmJhc2Up Owo+ICsJaW5ub2x1eC0+YmFzZS5mdW5jcyA9ICZpbm5vbHV4X3BhbmVsX2Z1bmNzOwo+ICsJaW5u b2x1eC0+YmFzZS5kZXYgPSAmaW5ub2x1eC0+bGluay0+ZGV2Owo+ICsKPiArCWVyciA9IGRybV9w YW5lbF9hZGQoJmlubm9sdXgtPmJhc2UpOwo+ICsJaWYgKGVyciA8IDApCj4gKwkJZ290byBwdXRf YmFja2xpZ2h0Owo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArcHV0X2JhY2tsaWdodDoKPiArCWlm IChpbm5vbHV4LT5iYWNrbGlnaHQpCj4gKwkJcHV0X2RldmljZSgmaW5ub2x1eC0+YmFja2xpZ2h0 LT5kZXYpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGlubm9s dXhfcGFuZWxfZGVsKHN0cnVjdCBpbm5vbHV4X3BhbmVsICppbm5vbHV4KQo+ICt7Cj4gKwlpZiAo aW5ub2x1eC0+YmFzZS5kZXYpCj4gKwkJZHJtX3BhbmVsX3JlbW92ZSgmaW5ub2x1eC0+YmFzZSk7 Cj4gKwo+ICsJaWYgKGlubm9sdXgtPmJhY2tsaWdodCkKPiArCQlwdXRfZGV2aWNlKCZpbm5vbHV4 LT5iYWNrbGlnaHQtPmRldik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaW5ub2x1eF9wYW5lbF9w cm9iZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBpbm5vbHV4 X3BhbmVsICppbm5vbHV4Owo+ICsJaW50IGVycjsKPiArCj4gKwlkc2ktPmxhbmVzID0gNDsKPiAr CWRzaS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKPiArCWRzaS0+bW9kZV9mbGFncyA9 IE1JUElfRFNJX01PREVfVklERU8gfCBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0UgfAo+ ICsJCQkgIE1JUElfRFNJX01PREVfTFBNOwo+ICsKPiArCWlubm9sdXggPSBkZXZtX2t6YWxsb2Mo JmRzaS0+ZGV2LCBzaXplb2YoKmlubm9sdXgpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghaW5ub2x1 eCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltaXBpX2RzaV9zZXRfZHJ2ZGF0YShkc2ks IGlubm9sdXgpOwo+ICsKPiArCWlubm9sdXgtPmxpbmsgPSBkc2k7Cj4gKwo+ICsJZXJyID0gaW5u b2x1eF9wYW5lbF9hZGQoaW5ub2x1eCk7Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlyZXR1cm4gZXJy Owo+ICsKPiArCWVyciA9IG1pcGlfZHNpX2F0dGFjaChkc2kpOwo+ICsJcmV0dXJuIGVycjsKPiAr fQo+ICsKPiArc3RhdGljIGludCBpbm5vbHV4X3BhbmVsX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBpbm5vbHV4X3BhbmVsICppbm5vbHV4ID0gbWlw aV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gaW5ub2x1 eF9wYW5lbF91bnByZXBhcmUoJmlubm9sdXgtPmJhc2UpOwo+ICsJaWYgKGVyciA8IDApCj4gKwkJ ZGV2X2VycigmZHNpLT5kZXYsICJmYWlsZWQgdG8gdW5wcmVwYXJlIHBhbmVsOiAlZFxuIiwgZXJy KTsKPiArCj4gKwllcnIgPSBpbm5vbHV4X3BhbmVsX2Rpc2FibGUoJmlubm9sdXgtPmJhc2UpOwo+ ICsJaWYgKGVyciA8IDApCj4gKwkJZGV2X2VycigmZHNpLT5kZXYsICJmYWlsZWQgdG8gZGlzYWJs ZSBwYW5lbDogJWRcbiIsIGVycik7Cj4gKwo+ICsJZXJyID0gbWlwaV9kc2lfZGV0YWNoKGRzaSk7 Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlkZXZfZXJyKCZkc2ktPmRldiwgImZhaWxlZCB0byBkZXRh Y2ggZnJvbSBEU0kgaG9zdDogJWRcbiIsIGVycik7Cj4gKwo+ICsJZHJtX3BhbmVsX2RldGFjaCgm aW5ub2x1eC0+YmFzZSk7Cj4gKwlpbm5vbHV4X3BhbmVsX2RlbChpbm5vbHV4KTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW5ub2x1eF9wYW5lbF9zaHV0ZG93bihz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBpbm5vbHV4X3BhbmVs ICppbm5vbHV4ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsKPiArCj4gKwlpbm5vbHV4X3Bh bmVsX3VucHJlcGFyZSgmaW5ub2x1eC0+YmFzZSk7Cj4gKwlpbm5vbHV4X3BhbmVsX2Rpc2FibGUo Jmlubm9sdXgtPmJhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZl ciBpbm5vbHV4X3BhbmVsX2RyaXZlciA9IHsKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAi cGFuZWwtaW5ub2x1eC1wMDc5emNhIiwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBpbm5vbHV4X29m X21hdGNoLAo+ICsJfSwKPiArCS5wcm9iZSA9IGlubm9sdXhfcGFuZWxfcHJvYmUsCj4gKwkucmVt b3ZlID0gaW5ub2x1eF9wYW5lbF9yZW1vdmUsCj4gKwkuc2h1dGRvd24gPSBpbm5vbHV4X3BhbmVs X3NodXRkb3duLAo+ICt9Owo+ICttb2R1bGVfbWlwaV9kc2lfZHJpdmVyKGlubm9sdXhfcGFuZWxf ZHJpdmVyKTsKPiArCj4gK01PRFVMRV9BVVRIT1IoIkNocmlzIFpob25nIDx6eXdAcm9jay1jaGlw cy5jb20+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiSW5ub2x1eCBQMDc5WkNBIHBhbmVsIGRy aXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gLS0gCj4gMi42LjMKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==