From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: Re: [PATCH v1 1/2] drm/panel: add support for rm69299 visionox panel driver Date: Thu, 14 Nov 2019 10:12:47 -0800 Message-ID: References: <1573726588-18897-1-git-send-email-harigovi@codeaurora.org> <1573726588-18897-2-git-send-email-harigovi@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1573726588-18897-2-git-send-email-harigovi-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Harigovindan P Cc: "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , linux-arm-msm , Linux Kernel Mailing List , dri-devel , nganji-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Sean Paul , Abhinav Kumar , Thierry Reding , "Kristian H. Kristensen" , freedreno , Jeykumar Sankaran , Chandan Uddaraju List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMjoxNyBBTSBIYXJpZ292aW5kYW4gUCA8aGFyaWdvdmlA Y29kZWF1cm9yYS5vcmc+IHdyb3RlOgo+Cj4gQWRkIHN1cHBvcnQgZm9yIFZpc2lvbm94IHBhbmVs IGRyaXZlci4KPgo+IFNpZ25lZC1vZmYtYnk6IEhhcmlnb3ZpbmRhbiBQIDxoYXJpZ292aUBjb2Rl YXVyb3JhLm9yZz4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgICAgICAg ICAgICAgICAgICB8ICAgOSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdmlzaW9u b3gtcm02OTI5OS5jIHwgNDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBj aGFuZ2VkLCA0ODggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLXZpc2lvbm94LXJtNjkyOTkuYwo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25m aWcKPiBpbmRleCBmMTUyYmM0Li5jMDZjNDAzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPiBA QCAtMzU1LDQgKzM1NSwxMyBAQCBjb25maWcgRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EK PiAgICAgICAgIGhlbHAKPiAgICAgICAgICAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFi bGUgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBXUVhHQSBEdWFsIERTSQo+ICAgICAgICAgICBW aWRlbyBNb2RlIHBhbmVsCj4gKwo+ICtjb25maWcgRFJNX1BBTkVMX1ZJU0lPTk9YX1JNNjkyOTkK PiArICAgICAgIHRyaXN0YXRlICJWaXNpb25veCBSTTY5Mjk5Igo+ICsgICAgICAgZGVwZW5kcyBv biBPRgo+ICsgICAgICAgZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKPiArICAgICAgIGhlbHAKPiAr ICAgICAgICAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgVmlz aW9ub3gKPiArICAgICAgICAgUk02OTI5OSAgRFNJIFZpZGVvIE1vZGUgcGFuZWwuCj4gKwo+ICBl bmRtZW51Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+IGluZGV4IGI2Y2QzOWYuLjZmMWU0YzYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gQEAgLTM4LDMgKzM4LDQgQEAgb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9UUE9fVEQwMjhUVEVDMSkgKz0gcGFuZWwtdHBvLXRkMDI4dHRlYzEubwo+ICBv YmotJChDT05GSUdfRFJNX1BBTkVMX1RQT19URDA0M01URUExKSArPSBwYW5lbC10cG8tdGQwNDNt dGVhMS5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfVFBPX1RQRzExMCkgKz0gcGFuZWwtdHBv LXRwZzExMC5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQSkg Kz0gcGFuZWwtdHJ1bHktbnQzNTU5Ny5vCj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfVklTSU9O T1hfUk02OTI5OSkgKz0gcGFuZWwtdmlzaW9ub3gtcm02OTI5OS5vCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC12aXNpb25veC1ybTY5Mjk5LmMgYi9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvcGFuZWwtdmlzaW9ub3gtcm02OTI5OS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwLi5mYWY2ZDA1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC12aXNpb25veC1ybTY5Mjk5LmMKPiBAQCAtMCwwICsxLDQ3 OCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgKGMpIDIwMTksIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+Cj4g Kwo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5oPgo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9j b25zdW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9vZl9ncmFwaC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGluY3RybC9jb25zdW1lci5oPgo+ ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9iYWNrbGlnaHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4KPiArCj4gKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KPiAr Cj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcmVndWxhdG9yX25hbWVzW10gPSB7Cj4gKyAg ICAgICAidmRkYSIsCj4gKyAgICAgICAidmRkM3AzIiwKPiArfTsKPiArCj4gK3N0YXRpYyB1bnNp Z25lZCBsb25nIGNvbnN0IHJlZ3VsYXRvcl9lbmFibGVfbG9hZHNbXSA9IHsKPiArICAgICAgIDMy MDAwLAo+ICsgICAgICAgMTMyMDAsCj4gK307Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBj b25zdCByZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tdID0gewo+ICsgICAgICAgODAsCj4gKyAgICAg ICA4MCwKPiArfTsKPiArCj4gK3N0cnVjdCBjbWRfc2V0IHsKPiArICAgICAgIHU4IGNvbW1hbmRz WzRdOwo+ICsgICAgICAgdTggc2l6ZTsKPiArfTsKPiArCj4gK3N0cnVjdCBybTY5Mjk5X2NvbmZp ZyB7Cj4gKyAgICAgICB1MzIgd2lkdGhfbW07Cj4gKyAgICAgICB1MzIgaGVpZ2h0X21tOwo+ICsg ICAgICAgY29uc3QgY2hhciAqcGFuZWxfbmFtZTsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBjbWRf c2V0ICpwYW5lbF9vbl9jbWRzOwo+ICsgICAgICAgdTMyIG51bV9vbl9jbWRzOwo+ICsgICAgICAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRtOwo+ICt9Owo+ICsKPiArc3RydWN0IHZp c2lvbm94X3JtNjkyOTkgewo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+ICsgICAgICAg c3RydWN0IGRybV9wYW5lbCBwYW5lbDsKPiArCj4gKyAgICAgICBzdHJ1Y3QgcmVndWxhdG9yX2J1 bGtfZGF0YSBzdXBwbGllc1tBUlJBWV9TSVpFKHJlZ3VsYXRvcl9uYW1lcyldOwo+ICsKPiArICAg ICAgIHN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87Cj4gKwo+ICsgICAgICAgc3RydWN0IGJh Y2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodDsKPiArCj4gKyAgICAgICBzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpkc2k7Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgcm02OTI5OV9jb25maWcgKmNvbmZp ZzsKPiArICAgICAgIGJvb2wgcHJlcGFyZWQ7Cj4gKyAgICAgICBib29sIGVuYWJsZWQ7Cj4gK307 Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5ICpwYW5lbF90b19j dHgoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArICAgICAgIHJldHVybiBjb250YWlu ZXJfb2YocGFuZWwsIHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5LCBwYW5lbCk7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY21kX3NldCBxY29tX3JtNjkyOTlfMTA4MHBfcGFuZWxfbWFn aWNfY21kc1tdID0gewo+ICsgICAgICAgeyB7IDB4ZmUsIDB4MDAgfSwgMiB9LAo+ICsgICAgICAg eyB7IDB4YzIsIDB4MDggfSwgMiB9LAo+ICsgICAgICAgeyB7IDB4MzUsIDB4MDAgfSwgMiB9LAo+ ICsgICAgICAgeyB7IDB4NTEsIDB4ZmYgfSwgMiB9LAo+ICt9OwoKSSdtIG5vdCByZWFsbHkgc2Vl aW5nIHRoZSB2YWx1ZSBvZiBhIHRhYmxlIG9mIGNtZHMsIHZzIGp1c3QgYSBzZXF1ZW5jZQpvZiBt aXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKCkgY2FsbHMuLiBpdCBpcyBvbmx5IHVzZWQgaW4gb25l IHBsYWNlLApzbyBpdCBqdXN0IHNlZW1zIGxpa2UgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiB0aGF0 IGRvZXNuJ3QgYWRkIHZhbHVlLApjb21wYXJlZCB0byBzb21ldGhpbmcgbGlrZToKCiAgbWlwaV9k c2lfZHNjX3dyaXRlX2J1ZmZlcihkc2ksICh1OFtdKXsgMHhmZSwgMHgwMCB9LCAyKTsKCihvdG9o LCBzb21lIG9mIHRoZSBvdGhlciBwYW5lbCBzbyBtYXliZSBUaGllcnJ5IGlzIGxlc3MgcGlja3kp Cgo+ICsKPiArc3RhdGljIGludCB2aXNpb25veF9kY3Nfd3JpdGUoc3RydWN0IGRybV9wYW5lbCAq cGFuZWwsIHUzMiBjb21tYW5kKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgdmlzaW9ub3hfcm02OTI5 OSAqY3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPiArICAgICAgIGludCBpID0gMCwgcmV0Owo+ ICsKPiArICAgICAgIHJldCA9IG1pcGlfZHNpX2Rjc193cml0ZShjdHgtPmRzaSwgY29tbWFuZCwg TlVMTCwgMCk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBEUk1f REVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJjbWQgMHgleCBm YWlsZWQgZm9yIGRzaSA9ICVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQs IGkpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgdmlzaW9ub3hfZGNzX3dyaXRlX2J1ZihzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwK PiArICAgICAgIHUzMiBzaXplLCBjb25zdCB1OCAqYnVmKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qg dmlzaW9ub3hfcm02OTI5OSAqY3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPiArICAgICAgIGlu dCByZXQgPSAwOwo+ICsgICAgICAgaW50IGkgPSAwOwo+ICsKPiArICAgICAgIHJldCA9IG1pcGlf ZHNpX2Rjc193cml0ZV9idWZmZXIoY3R4LT5kc2ksIGJ1Ziwgc2l6ZSk7Cj4gKyAgICAgICBpZiAo cmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gdHggY21kIFslZF0sIGVycjogJWRcbiIs IGksIHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQoKZHJvcCB0aGVzZSB0d28gYW5kIGp1c3QgdXNlIG1p cGlfZHNpX2Rjc193cml0ZShfYnVmZmVyKSgpIGRpcmVjdGx5Li4KdGhlIG9ubHkgZXh0cmEgdGhp bmcgdGhlc2Ugc2VlbSB0byBkbyBpcyBlcnJvciByZXBvcnRpbmcsIHdoaWNoIGlzCmFscmVhZHkg ZG9uZSBhdCB0aGUgY2FsbC1zaXRlcyBvZiB0aGVzZS4KCj4gKwo+ICtzdGF0aWMgaW50IHZpc2lv bm94XzM1NTk3X3Bvd2VyX29uKHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5ICpjdHgpCj4gK3sKPiAr ICAgICAgIGludCByZXQsIGk7Cj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShj dHgtPnN1cHBsaWVzKTsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IHJlZ3VsYXRvcl9z ZXRfbG9hZChjdHgtPnN1cHBsaWVzW2ldLmNvbnN1bWVyLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZWd1bGF0b3JfZW5hYmxlX2xvYWRzW2ldKTsKPiArICAgICAg ICAgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9IHJlZ3VsYXRvcl9idWxrX2VuYWJsZShBUlJB WV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBsaWVzKTsKPiArICAgICAgIGlmIChyZXQg PCAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgIC8qCj4gKyAg ICAgICAgKiBSZXNldCBzZXF1ZW5jZSBvZiB2aXNpb25veCBwYW5lbCByZXF1aXJlcyB0aGUgcGFu ZWwgdG8gYmUKPiArICAgICAgICAqIG91dCBvZiByZXNldCBmb3IgMTBtcywgZm9sbG93ZWQgYnkg YmVpbmcgaGVsZCBpbiByZXNldAo+ICsgICAgICAgICogZm9yIDEwbXMgYW5kIHRoZW4gb3V0IGFn YWluCj4gKyAgICAgICAgKi8KPiArICAgICAgIGdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dw aW8sIDEpOwo+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7Cj4gKyAgICAgICBn cGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAwKTsKPiArICAgICAgIHVzbGVlcF9yYW5n ZSgxMDAwMCwgMjAwMDApOwo+ICsgICAgICAgZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3Bp bywgMSk7Cj4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMDAsIDIwMDAwKTsKPiArCj4gKyAgICAg ICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aXNpb25veF9ybTY5Mjk5X3Bvd2Vy X29mZihzdHJ1Y3QgdmlzaW9ub3hfcm02OTI5OSAqY3R4KQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0 ID0gMDsKPiArICAgICAgIGludCBpOwo+ICsKPiArICAgICAgIGdwaW9kX3NldF92YWx1ZShjdHgt PnJlc2V0X2dwaW8sIDApOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGN0eC0+c3VwcGxpZXMpOyBpKyspIHsKPiArICAgICAgICAgICAgICAgcmV0ID0gcmVndWxhdG9y X3NldF9sb2FkKGN0eC0+c3VwcGxpZXNbaV0uY29uc3VtZXIsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tpXSk7Cj4gKyAgICAgICAgICAg ICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0 eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZ3VsYXRvcl9zZXRf bG9hZCBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9 IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5z dXBwbGllcyk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9ERVZf RVJST1IoY3R4LT5kZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgInJlZ3VsYXRvcl9idWxr X2Rpc2FibGUgZmFpbGVkICVkXG4iLCByZXQpOwo+ICsgICAgICAgfQo+ICsgICAgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aXNpb25veF9ybTY5Mjk5X2Rpc2FibGUoc3Ry dWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCB2aXNpb25veF9ybTY5 Mjk5ICpjdHggPSBwYW5lbF90b19jdHgocGFuZWwpOwo+ICsgICAgICAgaW50IHJldDsKPiArCj4g KyAgICAgICBpZiAoIWN0eC0+ZW5hYmxlZCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4g Kwo+ICsgICAgICAgaWYgKGN0eC0+YmFja2xpZ2h0KSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9 IGJhY2tsaWdodF9kaXNhYmxlKGN0eC0+YmFja2xpZ2h0KTsKPiArICAgICAgICAgICAgICAgaWYg KHJldCA8IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0RFVl9FUlJPUihjdHgtPmRl diwgImJhY2tsaWdodCBkaXNhYmxlIGZhaWxlZCAlZFxuIiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgY3R4LT5lbmFibGVk ID0gZmFsc2U7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aXNp b25veF9ybTY5Mjk5X3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsg ICAgICAgc3RydWN0IHZpc2lvbm94X3JtNjkyOTkgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7 Cj4gKyAgICAgICBpbnQgcmV0ID0gMDsKPiArCj4gKyAgICAgICBpZiAoIWN0eC0+cHJlcGFyZWQp Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICAgIGN0eC0+ZHNpLT5tb2Rl X2ZsYWdzID0gMDsKPiArCj4gKyAgICAgICByZXQgPSB2aXNpb25veF9kY3Nfd3JpdGUocGFuZWws IE1JUElfRENTX1NFVF9ESVNQTEFZX09GRik7CgptaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2Zm KCkKCj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VS Uk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJzZXRfZGlzcGxheV9vZmYg Y21kIGZhaWxlZCByZXQgPSAlZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICByZXQpOwo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qIDEyMG1zIGRlbGF5IHJlcXVpcmVkIGhlcmUgYXMg cGVyIERDUyBzcGVjICovCj4gKyAgICAgICBtc2xlZXAoMTIwKTsKPiArCj4gKyAgICAgICByZXQg PSB2aXNpb25veF9kY3Nfd3JpdGUocGFuZWwsIE1JUElfRENTX0VOVEVSX1NMRUVQX01PREUpOwoK bWlwaV9kc2lfZGNzX2VudGVyX3NsZWVwX21vZGUoKQoKKHNhbWUgY29tbWVudCBhdCBhIGZldyBw b2ludHMgYmVsb3cgYXMgd2VsbCkKCkJSLAotUgoKCj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ ICsgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICJlbnRlcl9zbGVlcCBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLCByZXQpOwo+ICsg ICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9IHZpc2lvbm94X3JtNjkyOTlfcG93ZXJfb2ZmKGN0 eCk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgRFJNX0RFVl9FUlJP UihjdHgtPmRldiwgInBvd2VyX29mZiBmYWlsZWQgcmV0ID0gJWRcbiIsIHJldCk7Cj4gKwo+ICsg ICAgICAgY3R4LT5wcmVwYXJlZCA9IGZhbHNlOwo+ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQo+ ICsKPiArc3RhdGljIGludCB2aXNpb25veF9ybTY5Mjk5X3ByZXBhcmUoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5ICpjdHggPSBw YW5lbF90b19jdHgocGFuZWwpOwo+ICsgICAgICAgaW50IHJldDsKPiArICAgICAgIGludCBpOwo+ ICsgICAgICAgY29uc3Qgc3RydWN0IGNtZF9zZXQgKnBhbmVsX29uX2NtZHM7Cj4gKyAgICAgICBj b25zdCBzdHJ1Y3Qgcm02OTI5OV9jb25maWcgKmNvbmZpZzsKPiArICAgICAgIHUzMiBudW1fY21k czsKPiArCj4gKyAgICAgICBpZiAoY3R4LT5wcmVwYXJlZCkKPiArICAgICAgICAgICAgICAgcmV0 dXJuIDA7Cj4gKwo+ICsgICAgICAgcmV0ID0gdmlzaW9ub3hfMzU1OTdfcG93ZXJfb24oY3R4KTsK PiArICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsK PiArICAgICAgIGN0eC0+ZHNpLT5tb2RlX2ZsYWdzIHw9IE1JUElfRFNJX01PREVfTFBNOwo+ICsK PiArICAgICAgIGNvbmZpZyA9IGN0eC0+Y29uZmlnOwo+ICsgICAgICAgcGFuZWxfb25fY21kcyA9 IGNvbmZpZy0+cGFuZWxfb25fY21kczsKPiArICAgICAgIG51bV9jbWRzID0gY29uZmlnLT5udW1f b25fY21kczsKPiArCj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2NtZHM7IGkrKykgewo+ ICsgICAgICAgICAgICAgICByZXQgPSB2aXNpb25veF9kY3Nfd3JpdGVfYnVmKHBhbmVsLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxfb25fY21kc1tpXS5zaXplLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbF9vbl9jbWRzW2ldLmNv bW1hbmRzKTsKPiArICAgICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAgICAg ICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImNtZCBzZXQgdHggZmFpbGVkIGkgPSAlZCByZXQgPSAlZFxuIiwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgcmV0KTsKPiArICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIHBvd2VyX29mZjsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIHJldCA9IHZpc2lvbm94X2Rjc193cml0ZShwYW5lbCwgTUlQSV9E Q1NfRVhJVF9TTEVFUF9NT0RFKTsKPiArICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAg ICAgICAgIERSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ImV4aXRfc2xlZXBfbW9kZSBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldCk7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gcG93ZXJfb2ZmOwo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIC8qIFBlciBEU0kgc3BlYyB3YWl0IDEyMG1zIGFmdGVyIHNlbmRp bmcgZXhpdCBzbGVlcCBEQ1MgY29tbWFuZCAqLwo+ICsgICAgICAgbXNsZWVwKDEyMCk7Cj4gKwo+ ICsgICAgICAgcmV0ID0gdmlzaW9ub3hfZGNzX3dyaXRlKHBhbmVsLCBNSVBJX0RDU19TRVRfRElT UExBWV9PTik7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBEUk1f REVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJzZXRfZGlzcGxh eV9vbiBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLCByZXQpOwo+ICsgICAgICAgICAgICAgICBnb3Rv IHBvd2VyX29mZjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICAvKiBQZXIgRFNJIHNwZWMgd2Fp dCAxMjBtcyBhZnRlciBzZW5kaW5nIHNldF9kaXNwbGF5X29uIERDUyBjb21tYW5kICovCj4gKyAg ICAgICBtc2xlZXAoMTIwKTsKPiArCj4gKyAgICAgICBjdHgtPnByZXBhcmVkID0gdHJ1ZTsKPiAr Cj4gKyAgICAgICByZXR1cm4gMDsKPiArCj4gK3Bvd2VyX29mZjoKPiArICAgICAgIGlmICh2aXNp b25veF9ybTY5Mjk5X3Bvd2VyX29mZihjdHgpKQo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VS Uk9SKGN0eC0+ZGV2LCAicG93ZXJfb2ZmIGZhaWxlZFxuIik7Cj4gKyAgICAgICByZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHZpc2lvbm94X3JtNjkyOTlfZW5hYmxlKHN0cnVjdCBk cm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgdmlzaW9ub3hfcm02OTI5OSAq Y3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAg ICAgaWYgKGN0eC0+ZW5hYmxlZCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsg ICAgICAgaWYgKGN0eC0+YmFja2xpZ2h0KSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IGJhY2ts aWdodF9lbmFibGUoY3R4LT5iYWNrbGlnaHQpOwo+ICsgICAgICAgICAgICAgICBpZiAocmV0IDwg MCkKPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LCAiYmFj a2xpZ2h0IGVuYWJsZSBmYWlsZWQgJWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXQpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGN0 eC0+ZW5hYmxlZCA9IHRydWU7Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgdmlzaW9ub3hfcm02OTI5OV9nZXRfbW9kZXMoc3RydWN0IGRybV9wYW5lbCAqcGFu ZWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwYW5l bC0+Y29ubmVjdG9yOwo+ICsgICAgICAgc3RydWN0IHZpc2lvbm94X3JtNjkyOTkgKmN0eCA9IHBh bmVsX3RvX2N0eChwYW5lbCk7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZTsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBybTY5Mjk5X2NvbmZpZyAqY29uZmlnOwo+ICsKPiAr ICAgICAgIGNvbmZpZyA9IGN0eC0+Y29uZmlnOwo+ICsgICAgICAgbW9kZSA9IGRybV9tb2RlX2Ny ZWF0ZShjb25uZWN0b3ItPmRldik7Cj4gKyAgICAgICBpZiAoIW1vZGUpIHsKPiArICAgICAgICAg ICAgICAgRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAi ZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBkaXNwbGF5IG1vZGVcbiIpOwo+ICsgICAgICAgICAgICAg ICByZXR1cm4gMDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBjb25uZWN0b3ItPmRpc3BsYXlf aW5mby53aWR0aF9tbSA9IGNvbmZpZy0+d2lkdGhfbW07Cj4gKyAgICAgICBjb25uZWN0b3ItPmRp c3BsYXlfaW5mby5oZWlnaHRfbW0gPSBjb25maWctPmhlaWdodF9tbTsKPiArICAgICAgIGRybV9t b2RlX2NvcHkobW9kZSwgY29uZmlnLT5kbSk7Cj4gKyAgICAgICBtb2RlLT50eXBlID0gRFJNX01P REVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsKPiArICAgICAgIGRybV9t b2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPiArCj4gKyAgICAgICByZXR1cm4gMTsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgdmlzaW9ub3hf cm02OTI5OV9kcm1fZnVuY3MgPSB7Cj4gKyAgICAgICAuZGlzYWJsZSA9IHZpc2lvbm94X3JtNjky OTlfZGlzYWJsZSwKPiArICAgICAgIC51bnByZXBhcmUgPSB2aXNpb25veF9ybTY5Mjk5X3VucHJl cGFyZSwKPiArICAgICAgIC5wcmVwYXJlID0gdmlzaW9ub3hfcm02OTI5OV9wcmVwYXJlLAo+ICsg ICAgICAgLmVuYWJsZSA9IHZpc2lvbm94X3JtNjkyOTlfZW5hYmxlLAo+ICsgICAgICAgLmdldF9t b2RlcyA9IHZpc2lvbm94X3JtNjkyOTlfZ2V0X21vZGVzLAo+ICt9Owo+ICsKPiArc3RhdGljIGlu dCB2aXNpb25veF9ybTY5Mjk5X3BhbmVsX2FkZChzdHJ1Y3QgdmlzaW9ub3hfcm02OTI5OSAqY3R4 KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjdHgtPmRldjsKPiArICAgICAg IGludCByZXQsIGk7Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgcm02OTI5OV9jb25maWcgKmNvbmZp ZzsKPiArCj4gKyAgICAgICBjb25maWcgPSBjdHgtPmNvbmZpZzsKPiArICAgICAgIGZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpOyBpKyspCj4gKyAgICAgICAgICAgICAg IGN0eC0+c3VwcGxpZXNbaV0uc3VwcGx5ID0gcmVndWxhdG9yX25hbWVzW2ldOwo+ICsKPiArICAg ICAgIHJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGRldiwgQVJSQVlfU0laRShjdHgtPnN1 cHBsaWVzKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+c3Vw cGxpZXMpOwo+ICsgICAgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gKwo+ICsgICAgICAgY3R4LT5yZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAi cmVzZXQiLCBHUElPRF9PVVRfTE9XKTsKPiArICAgICAgIGlmIChJU19FUlIoY3R4LT5yZXNldF9n cGlvKSkgewo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGRldiwgImNhbm5vdCBnZXQg cmVzZXQgZ3BpbyAlbGRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgUFRSX0VSUihjdHgt PnJlc2V0X2dwaW8pKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNl dF9ncGlvKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBncGlvZF9kaXJlY3Rpb25f b3V0cHV0KGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKyAgICAgICBpZihyZXQgPCAwKSB7Cj4gKyAg ICAgICAgICAgICAgIHByX2VycigiZGlyZWN0aW9uIG91dHB1dCBmYWlsZWQgXG4iKTsKPiArICAg ICAgIH0KPiArCj4gKyAgICAgICBkcm1fcGFuZWxfaW5pdCgmY3R4LT5wYW5lbCk7Cj4gKyAgICAg ICBjdHgtPnBhbmVsLmRldiA9IGRldjsKPiArICAgICAgIGN0eC0+cGFuZWwuZnVuY3MgPSAmdmlz aW9ub3hfcm02OTI5OV9kcm1fZnVuY3M7Cj4gKyAgICAgICBkcm1fcGFuZWxfYWRkKCZjdHgtPnBh bmVsKTsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlIHFjb21fc2M3MTgwX210cF8xMDgwcF9tb2RlID0gewo+ICsg ICAgICAgLm5hbWUgPSAiMTA4MHgyMjQ4IiwKPiArICAgICAgIC5jbG9jayA9IDE1ODY5NSwKPiAr ICAgICAgIC5oZGlzcGxheSA9IDEwODAsCj4gKyAgICAgICAuaHN5bmNfc3RhcnQgPSAxMDgwICsg MjYsCj4gKyAgICAgICAuaHN5bmNfZW5kID0gMTA4MCArIDI2ICsgMiwKPiArICAgICAgIC5odG90 YWwgPSAxMDgwICsgMjYgKyAyICsgMzYsCj4gKyAgICAgICAudmRpc3BsYXkgPSAyMjQ4LAo+ICsg ICAgICAgLnZzeW5jX3N0YXJ0ID0gMjI0OCArIDU2LAo+ICsgICAgICAgLnZzeW5jX2VuZCA9IDIy NDggKyA1NiArIDQsCj4gKyAgICAgICAudnRvdGFsID0gMjI0OCArIDU2ICsgNCArIDQsCj4gKyAg ICAgICAudnJlZnJlc2ggPSA2MCwKPiArICAgICAgIC5mbGFncyA9IDAsCj4gK307Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHJtNjkyOTlfY29uZmlnIHJtNjkyOTlfZGlyID0gewo+ICsgICAg ICAgLndpZHRoX21tID0gNzQsCj4gKyAgICAgICAuaGVpZ2h0X21tID0gMTMxLAo+ICsgICAgICAg LnBhbmVsX25hbWUgPSAicWNvbV9zYzcxODBfbXRwXzEwODBwX3BhbmVsIiwKPiArICAgICAgIC5k bSA9ICZxY29tX3NjNzE4MF9tdHBfMTA4MHBfbW9kZSwKPiArICAgICAgIC5wYW5lbF9vbl9jbWRz ID0gcWNvbV9ybTY5Mjk5XzEwODBwX3BhbmVsX21hZ2ljX2NtZHMsCj4gKyAgICAgICAubnVtX29u X2NtZHMgPSBBUlJBWV9TSVpFKHFjb21fcm02OTI5OV8xMDgwcF9wYW5lbF9tYWdpY19jbWRzKSwK PiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdmlzaW9ub3hfcm02OTI5OV9wcm9iZShzdHJ1Y3QgbWlw aV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZk c2ktPmRldjsKPiArICAgICAgIHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5ICpjdHg7Cj4gKyAgICAg ICBpbnQgcmV0ID0gMDsKPiArCj4gKyAgICAgICBjdHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXpl b2YoKmN0eCksIEdGUF9LRVJORUwpOwo+ICsKPiArICAgICAgIGlmICghY3R4KQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAgICBjdHgtPmNvbmZpZyA9IG9mX2Rl dmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+ICsKPiArICAgICAgIGlmICghY3R4LT5jb25maWcp IHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJtaXNzaW5nIGRldmljZSBjb25maWd1 cmF0aW9uXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gKyAgICAgICB9 Cj4gKwo+ICsgICAgICAgbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOwo+ICsKPiArICAg ICAgIGN0eC0+ZGV2ID0gZGV2Owo+ICsgICAgICAgY3R4LT5kc2kgPSBkc2k7Cj4gKwo+ICsgICAg ICAgcmV0ID0gdmlzaW9ub3hfcm02OTI5OV9wYW5lbF9hZGQoY3R4KTsKPiArICAgICAgIGlmIChy ZXQpIHsKPiArICAgICAgICAgICAgICAgRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gYWRk IHBhbmVsXG4iKTsKPiArICAgICAgICAgICAgICAgZ290byBlcnJfcGFuZWxfYWRkOwo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIGRzaS0+bGFuZXMgPSA0Owo+ICsgICAgICAgZHNpLT5mb3JtYXQg PSBNSVBJX0RTSV9GTVRfUkdCODg4Owo+ICsgICAgICAgZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9E U0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVfTFBNIHwKPiArICAgICAgICAgICAgICAgTUlQ SV9EU0lfQ0xPQ0tfTk9OX0NPTlRJTlVPVVM7Cj4gKyAgICAgICByZXQgPSBtaXBpX2RzaV9hdHRh Y2goZHNpKTsKPiArICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9E RVZfRVJST1IoZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJkc2kgYXR0YWNoIGZhaWxl ZCByZXQgPSAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgZ290byBlcnJfZHNpX2F0dGFj aDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArCj4gK2Vycl9kc2lfYXR0 YWNoOgo+ICsgICAgICAgZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7Cj4gK2Vycl9wYW5l bF9hZGQ6Cj4gKyAgICAgICBtaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3Rlcihkc2kpOwo+ICsgICAg ICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aXNpb25veF9ybTY5Mjk5X3Jl bW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArICAgICAgIHN0cnVjdCB2 aXNpb25veF9ybTY5Mjk5ICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwo+ICsKPiAr ICAgICAgIGlmIChjdHgtPmRzaSkgewo+ICsgICAgICAgICAgICAgICBtaXBpX2RzaV9kZXRhY2go Y3R4LT5kc2kpOwo+ICsgICAgICAgICAgICAgICBtaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3Rlcihj dHgtPmRzaSk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZHJtX3BhbmVsX3JlbW92ZSgmY3R4 LT5wYW5lbCk7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgdmlzaW9ub3hfcm02OTI5OV9vZl9tYXRjaFtdID0gewo+ICsgICAg ICAgewo+ICsgICAgICAgICAgICAgICAuY29tcGF0aWJsZSA9ICJ2aXNpb25veCxybTY5Mjk5LTEw ODBwLWRpc3BsYXkiLAo+ICsgICAgICAgICAgICAgICAuZGF0YSA9ICZybTY5Mjk5X2RpciwKPiAr ICAgICAgIH0sCj4gKyAgICAgICB7IH0KPiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwg dmlzaW9ub3hfcm02OTI5OV9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNp X2RyaXZlciB2aXNpb25veF9ybTY5Mjk5X2RyaXZlciA9IHsKPiArICAgICAgIC5kcml2ZXIgPSB7 Cj4gKyAgICAgICAgICAgICAgIC5uYW1lID0gInBhbmVsLXZpc2lvbm94LXJtNjkyOTkiLAo+ICsg ICAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSB2aXNpb25veF9ybTY5Mjk5X29mX21hdGNo LAo+ICsgICAgICAgfSwKPiArICAgICAgIC5wcm9iZSA9IHZpc2lvbm94X3JtNjkyOTlfcHJvYmUs Cj4gKyAgICAgICAucmVtb3ZlID0gdmlzaW9ub3hfcm02OTI5OV9yZW1vdmUsCj4gK307Cj4gK21v ZHVsZV9taXBpX2RzaV9kcml2ZXIodmlzaW9ub3hfcm02OTI5OV9kcml2ZXIpOwo+ICsKPiArTU9E VUxFX0RFU0NSSVBUSU9OKCJWSVNJT05PWCBSTTY5Mjk5IERTSSBQYW5lbCBEcml2ZXIiKTsKPiAr TU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IC0tCj4gMi43LjQKPgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZy ZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83255C432C3 for ; Thu, 14 Nov 2019 18:13:03 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 641C520709 for ; Thu, 14 Nov 2019 18:13:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 641C520709 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BA6A06E3F4; Thu, 14 Nov 2019 18:13:02 +0000 (UTC) Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by gabe.freedesktop.org (Postfix) with ESMTPS id D3E2B6E3C4; Thu, 14 Nov 2019 18:13:00 +0000 (UTC) Received: by mail-wm1-x344.google.com with SMTP id a17so8112676wmb.0; Thu, 14 Nov 2019 10:13:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=e1YGkP3YYWvfobcdQXF349HfrSJSFS8d+634UN9nQdo=; b=mJOdJ7HP6SLd92EO/EhEtSCBb9VX2FVrpsYlLcYtF5nx6FvBcOzxekIMCgeuUe5Nx7 Cxg29J85jgFxHJiJaHo5urqp3ApQOXWfHmg9Rtx84v3fV0S59H25wGum8mljdn+2Cs2n wblKTezUPZUL7ZGZT4UJzUL0Qmq+FZVBZGvaPoIRqNp9JLfRvbGiHcaX1XqFJqdmQvYW nl0armJ71+aiqVodXmGFBmybgnRrdpNbzQKw+8CUjxu8hZmq9GurkVtYQyeXx4bR9ssh ZqfKyOuDQ5SeRYJxiV/ks+dChl5QkN25rY4H2CzuPUz8TtYZ8oa43kQwTM1yvNzSQgnS RYkw== X-Gm-Message-State: APjAAAURIvAJ98ONWjfVSvIInOIFUxWlcX5eQYtxA52Z0A2ZOtR9i7xU 3OUtTwhBb0GML9zP1HsZZ+bzw3E4TyNCUhyQZw4= X-Google-Smtp-Source: APXvYqzOhPqpe2Ya5w6enWDgqclI9ThBE4RliZTOVi6zALagLzNnqIkwLM4vHMjAsA+1AGTmJT9bv/qlYP1a0mshPb4= X-Received: by 2002:a1c:ed09:: with SMTP id l9mr3913059wmh.101.1573755179254; Thu, 14 Nov 2019 10:12:59 -0800 (PST) MIME-Version: 1.0 References: <1573726588-18897-1-git-send-email-harigovi@codeaurora.org> <1573726588-18897-2-git-send-email-harigovi@codeaurora.org> In-Reply-To: <1573726588-18897-2-git-send-email-harigovi@codeaurora.org> From: Rob Clark Date: Thu, 14 Nov 2019 10:12:47 -0800 Message-ID: Subject: Re: [PATCH v1 1/2] drm/panel: add support for rm69299 visionox panel driver To: Harigovindan P X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=e1YGkP3YYWvfobcdQXF349HfrSJSFS8d+634UN9nQdo=; b=g6qpTBFpu7hbN0DNlhTYKEB/EDQXwzuy/rFdXLodRIcYG/Fsd0HthDmF1CTs77jOTd WmPx34XSPqFujnqyajzICPgS8jZL6BiUJgkAYGjFI0Y/c2K/WFaGLYfeg6AZy8ZMXNbP UIftfCSQnlKNzXJEQVaWJpXedUZDKwVMOhcZWHVgtlDm4fTevcMreIURsXkHtt37Tgqi d+DmahMuDPkPKkQWEKOIcEqLN4lmefadHgmvPajbE80mMpedWQTe9t8TXEIVQSbtsDUc xIqElxLzt/0yhWiKBKZpMKD2Tp/3oEdalSKfHGagzjuoe05j0FMr6BbF7M6+QWEV7NGu qeRA== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , linux-arm-msm , Linux Kernel Mailing List , dri-devel , Sean Paul , Abhinav Kumar , Thierry Reding , "Kristian H. Kristensen" , freedreno , Chandan Uddaraju Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191114181247.3z7MY_pVS-xRJnOkOq1gZ8s-Msxg6ryoOZR-LfwKyZY@z> T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMjoxNyBBTSBIYXJpZ292aW5kYW4gUCA8aGFyaWdvdmlA Y29kZWF1cm9yYS5vcmc+IHdyb3RlOgo+Cj4gQWRkIHN1cHBvcnQgZm9yIFZpc2lvbm94IHBhbmVs IGRyaXZlci4KPgo+IFNpZ25lZC1vZmYtYnk6IEhhcmlnb3ZpbmRhbiBQIDxoYXJpZ292aUBjb2Rl YXVyb3JhLm9yZz4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgICAgICAg ICAgICAgICAgICB8ICAgOSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdmlzaW9u b3gtcm02OTI5OS5jIHwgNDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBj aGFuZ2VkLCA0ODggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLXZpc2lvbm94LXJtNjkyOTkuYwo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25m aWcKPiBpbmRleCBmMTUyYmM0Li5jMDZjNDAzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPiBA QCAtMzU1LDQgKzM1NSwxMyBAQCBjb25maWcgRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EK PiAgICAgICAgIGhlbHAKPiAgICAgICAgICAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFi bGUgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBXUVhHQSBEdWFsIERTSQo+ICAgICAgICAgICBW aWRlbyBNb2RlIHBhbmVsCj4gKwo+ICtjb25maWcgRFJNX1BBTkVMX1ZJU0lPTk9YX1JNNjkyOTkK PiArICAgICAgIHRyaXN0YXRlICJWaXNpb25veCBSTTY5Mjk5Igo+ICsgICAgICAgZGVwZW5kcyBv biBPRgo+ICsgICAgICAgZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKPiArICAgICAgIGhlbHAKPiAr ICAgICAgICAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgVmlz aW9ub3gKPiArICAgICAgICAgUk02OTI5OSAgRFNJIFZpZGVvIE1vZGUgcGFuZWwuCj4gKwo+ICBl bmRtZW51Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+IGluZGV4IGI2Y2QzOWYuLjZmMWU0YzYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gQEAgLTM4LDMgKzM4LDQgQEAgb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9UUE9fVEQwMjhUVEVDMSkgKz0gcGFuZWwtdHBvLXRkMDI4dHRlYzEubwo+ICBv YmotJChDT05GSUdfRFJNX1BBTkVMX1RQT19URDA0M01URUExKSArPSBwYW5lbC10cG8tdGQwNDNt dGVhMS5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfVFBPX1RQRzExMCkgKz0gcGFuZWwtdHBv LXRwZzExMC5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQSkg Kz0gcGFuZWwtdHJ1bHktbnQzNTU5Ny5vCj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfVklTSU9O T1hfUk02OTI5OSkgKz0gcGFuZWwtdmlzaW9ub3gtcm02OTI5OS5vCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC12aXNpb25veC1ybTY5Mjk5LmMgYi9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvcGFuZWwtdmlzaW9ub3gtcm02OTI5OS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwLi5mYWY2ZDA1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC12aXNpb25veC1ybTY5Mjk5LmMKPiBAQCAtMCwwICsxLDQ3 OCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgKGMpIDIwMTksIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+Cj4g Kwo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5oPgo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9j b25zdW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9vZl9ncmFwaC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGluY3RybC9jb25zdW1lci5oPgo+ ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9iYWNrbGlnaHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4KPiArCj4gKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KPiAr Cj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcmVndWxhdG9yX25hbWVzW10gPSB7Cj4gKyAg ICAgICAidmRkYSIsCj4gKyAgICAgICAidmRkM3AzIiwKPiArfTsKPiArCj4gK3N0YXRpYyB1bnNp Z25lZCBsb25nIGNvbnN0IHJlZ3VsYXRvcl9lbmFibGVfbG9hZHNbXSA9IHsKPiArICAgICAgIDMy MDAwLAo+ICsgICAgICAgMTMyMDAsCj4gK307Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBj b25zdCByZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tdID0gewo+ICsgICAgICAgODAsCj4gKyAgICAg ICA4MCwKPiArfTsKPiArCj4gK3N0cnVjdCBjbWRfc2V0IHsKPiArICAgICAgIHU4IGNvbW1hbmRz WzRdOwo+ICsgICAgICAgdTggc2l6ZTsKPiArfTsKPiArCj4gK3N0cnVjdCBybTY5Mjk5X2NvbmZp ZyB7Cj4gKyAgICAgICB1MzIgd2lkdGhfbW07Cj4gKyAgICAgICB1MzIgaGVpZ2h0X21tOwo+ICsg ICAgICAgY29uc3QgY2hhciAqcGFuZWxfbmFtZTsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBjbWRf c2V0ICpwYW5lbF9vbl9jbWRzOwo+ICsgICAgICAgdTMyIG51bV9vbl9jbWRzOwo+ICsgICAgICAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRtOwo+ICt9Owo+ICsKPiArc3RydWN0IHZp c2lvbm94X3JtNjkyOTkgewo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+ICsgICAgICAg c3RydWN0IGRybV9wYW5lbCBwYW5lbDsKPiArCj4gKyAgICAgICBzdHJ1Y3QgcmVndWxhdG9yX2J1 bGtfZGF0YSBzdXBwbGllc1tBUlJBWV9TSVpFKHJlZ3VsYXRvcl9uYW1lcyldOwo+ICsKPiArICAg ICAgIHN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87Cj4gKwo+ICsgICAgICAgc3RydWN0IGJh Y2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodDsKPiArCj4gKyAgICAgICBzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpkc2k7Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgcm02OTI5OV9jb25maWcgKmNvbmZp ZzsKPiArICAgICAgIGJvb2wgcHJlcGFyZWQ7Cj4gKyAgICAgICBib29sIGVuYWJsZWQ7Cj4gK307 Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5ICpwYW5lbF90b19j dHgoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArICAgICAgIHJldHVybiBjb250YWlu ZXJfb2YocGFuZWwsIHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5LCBwYW5lbCk7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY21kX3NldCBxY29tX3JtNjkyOTlfMTA4MHBfcGFuZWxfbWFn aWNfY21kc1tdID0gewo+ICsgICAgICAgeyB7IDB4ZmUsIDB4MDAgfSwgMiB9LAo+ICsgICAgICAg eyB7IDB4YzIsIDB4MDggfSwgMiB9LAo+ICsgICAgICAgeyB7IDB4MzUsIDB4MDAgfSwgMiB9LAo+ ICsgICAgICAgeyB7IDB4NTEsIDB4ZmYgfSwgMiB9LAo+ICt9OwoKSSdtIG5vdCByZWFsbHkgc2Vl aW5nIHRoZSB2YWx1ZSBvZiBhIHRhYmxlIG9mIGNtZHMsIHZzIGp1c3QgYSBzZXF1ZW5jZQpvZiBt aXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKCkgY2FsbHMuLiBpdCBpcyBvbmx5IHVzZWQgaW4gb25l IHBsYWNlLApzbyBpdCBqdXN0IHNlZW1zIGxpa2UgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiB0aGF0 IGRvZXNuJ3QgYWRkIHZhbHVlLApjb21wYXJlZCB0byBzb21ldGhpbmcgbGlrZToKCiAgbWlwaV9k c2lfZHNjX3dyaXRlX2J1ZmZlcihkc2ksICh1OFtdKXsgMHhmZSwgMHgwMCB9LCAyKTsKCihvdG9o LCBzb21lIG9mIHRoZSBvdGhlciBwYW5lbCBzbyBtYXliZSBUaGllcnJ5IGlzIGxlc3MgcGlja3kp Cgo+ICsKPiArc3RhdGljIGludCB2aXNpb25veF9kY3Nfd3JpdGUoc3RydWN0IGRybV9wYW5lbCAq cGFuZWwsIHUzMiBjb21tYW5kKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgdmlzaW9ub3hfcm02OTI5 OSAqY3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPiArICAgICAgIGludCBpID0gMCwgcmV0Owo+ ICsKPiArICAgICAgIHJldCA9IG1pcGlfZHNpX2Rjc193cml0ZShjdHgtPmRzaSwgY29tbWFuZCwg TlVMTCwgMCk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBEUk1f REVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJjbWQgMHgleCBm YWlsZWQgZm9yIGRzaSA9ICVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQs IGkpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgdmlzaW9ub3hfZGNzX3dyaXRlX2J1ZihzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwK PiArICAgICAgIHUzMiBzaXplLCBjb25zdCB1OCAqYnVmKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qg dmlzaW9ub3hfcm02OTI5OSAqY3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPiArICAgICAgIGlu dCByZXQgPSAwOwo+ICsgICAgICAgaW50IGkgPSAwOwo+ICsKPiArICAgICAgIHJldCA9IG1pcGlf ZHNpX2Rjc193cml0ZV9idWZmZXIoY3R4LT5kc2ksIGJ1Ziwgc2l6ZSk7Cj4gKyAgICAgICBpZiAo cmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gdHggY21kIFslZF0sIGVycjogJWRcbiIs IGksIHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQoKZHJvcCB0aGVzZSB0d28gYW5kIGp1c3QgdXNlIG1p cGlfZHNpX2Rjc193cml0ZShfYnVmZmVyKSgpIGRpcmVjdGx5Li4KdGhlIG9ubHkgZXh0cmEgdGhp bmcgdGhlc2Ugc2VlbSB0byBkbyBpcyBlcnJvciByZXBvcnRpbmcsIHdoaWNoIGlzCmFscmVhZHkg ZG9uZSBhdCB0aGUgY2FsbC1zaXRlcyBvZiB0aGVzZS4KCj4gKwo+ICtzdGF0aWMgaW50IHZpc2lv bm94XzM1NTk3X3Bvd2VyX29uKHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5ICpjdHgpCj4gK3sKPiAr ICAgICAgIGludCByZXQsIGk7Cj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShj dHgtPnN1cHBsaWVzKTsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IHJlZ3VsYXRvcl9z ZXRfbG9hZChjdHgtPnN1cHBsaWVzW2ldLmNvbnN1bWVyLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZWd1bGF0b3JfZW5hYmxlX2xvYWRzW2ldKTsKPiArICAgICAg ICAgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9IHJlZ3VsYXRvcl9idWxrX2VuYWJsZShBUlJB WV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBsaWVzKTsKPiArICAgICAgIGlmIChyZXQg PCAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgIC8qCj4gKyAg ICAgICAgKiBSZXNldCBzZXF1ZW5jZSBvZiB2aXNpb25veCBwYW5lbCByZXF1aXJlcyB0aGUgcGFu ZWwgdG8gYmUKPiArICAgICAgICAqIG91dCBvZiByZXNldCBmb3IgMTBtcywgZm9sbG93ZWQgYnkg YmVpbmcgaGVsZCBpbiByZXNldAo+ICsgICAgICAgICogZm9yIDEwbXMgYW5kIHRoZW4gb3V0IGFn YWluCj4gKyAgICAgICAgKi8KPiArICAgICAgIGdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dw aW8sIDEpOwo+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7Cj4gKyAgICAgICBn cGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAwKTsKPiArICAgICAgIHVzbGVlcF9yYW5n ZSgxMDAwMCwgMjAwMDApOwo+ICsgICAgICAgZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3Bp bywgMSk7Cj4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMDAsIDIwMDAwKTsKPiArCj4gKyAgICAg ICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aXNpb25veF9ybTY5Mjk5X3Bvd2Vy X29mZihzdHJ1Y3QgdmlzaW9ub3hfcm02OTI5OSAqY3R4KQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0 ID0gMDsKPiArICAgICAgIGludCBpOwo+ICsKPiArICAgICAgIGdwaW9kX3NldF92YWx1ZShjdHgt PnJlc2V0X2dwaW8sIDApOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGN0eC0+c3VwcGxpZXMpOyBpKyspIHsKPiArICAgICAgICAgICAgICAgcmV0ID0gcmVndWxhdG9y X3NldF9sb2FkKGN0eC0+c3VwcGxpZXNbaV0uY29uc3VtZXIsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tpXSk7Cj4gKyAgICAgICAgICAg ICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0 eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZ3VsYXRvcl9zZXRf bG9hZCBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9 IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5z dXBwbGllcyk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9ERVZf RVJST1IoY3R4LT5kZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgInJlZ3VsYXRvcl9idWxr X2Rpc2FibGUgZmFpbGVkICVkXG4iLCByZXQpOwo+ICsgICAgICAgfQo+ICsgICAgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aXNpb25veF9ybTY5Mjk5X2Rpc2FibGUoc3Ry dWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCB2aXNpb25veF9ybTY5 Mjk5ICpjdHggPSBwYW5lbF90b19jdHgocGFuZWwpOwo+ICsgICAgICAgaW50IHJldDsKPiArCj4g KyAgICAgICBpZiAoIWN0eC0+ZW5hYmxlZCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4g Kwo+ICsgICAgICAgaWYgKGN0eC0+YmFja2xpZ2h0KSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9 IGJhY2tsaWdodF9kaXNhYmxlKGN0eC0+YmFja2xpZ2h0KTsKPiArICAgICAgICAgICAgICAgaWYg KHJldCA8IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0RFVl9FUlJPUihjdHgtPmRl diwgImJhY2tsaWdodCBkaXNhYmxlIGZhaWxlZCAlZFxuIiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgY3R4LT5lbmFibGVk ID0gZmFsc2U7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aXNp b25veF9ybTY5Mjk5X3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsg ICAgICAgc3RydWN0IHZpc2lvbm94X3JtNjkyOTkgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7 Cj4gKyAgICAgICBpbnQgcmV0ID0gMDsKPiArCj4gKyAgICAgICBpZiAoIWN0eC0+cHJlcGFyZWQp Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICAgIGN0eC0+ZHNpLT5tb2Rl X2ZsYWdzID0gMDsKPiArCj4gKyAgICAgICByZXQgPSB2aXNpb25veF9kY3Nfd3JpdGUocGFuZWws IE1JUElfRENTX1NFVF9ESVNQTEFZX09GRik7CgptaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2Zm KCkKCj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VS Uk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJzZXRfZGlzcGxheV9vZmYg Y21kIGZhaWxlZCByZXQgPSAlZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICByZXQpOwo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qIDEyMG1zIGRlbGF5IHJlcXVpcmVkIGhlcmUgYXMg cGVyIERDUyBzcGVjICovCj4gKyAgICAgICBtc2xlZXAoMTIwKTsKPiArCj4gKyAgICAgICByZXQg PSB2aXNpb25veF9kY3Nfd3JpdGUocGFuZWwsIE1JUElfRENTX0VOVEVSX1NMRUVQX01PREUpOwoK bWlwaV9kc2lfZGNzX2VudGVyX3NsZWVwX21vZGUoKQoKKHNhbWUgY29tbWVudCBhdCBhIGZldyBw b2ludHMgYmVsb3cgYXMgd2VsbCkKCkJSLAotUgoKCj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ ICsgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICJlbnRlcl9zbGVlcCBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLCByZXQpOwo+ICsg ICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9IHZpc2lvbm94X3JtNjkyOTlfcG93ZXJfb2ZmKGN0 eCk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgRFJNX0RFVl9FUlJP UihjdHgtPmRldiwgInBvd2VyX29mZiBmYWlsZWQgcmV0ID0gJWRcbiIsIHJldCk7Cj4gKwo+ICsg ICAgICAgY3R4LT5wcmVwYXJlZCA9IGZhbHNlOwo+ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQo+ ICsKPiArc3RhdGljIGludCB2aXNpb25veF9ybTY5Mjk5X3ByZXBhcmUoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5ICpjdHggPSBw YW5lbF90b19jdHgocGFuZWwpOwo+ICsgICAgICAgaW50IHJldDsKPiArICAgICAgIGludCBpOwo+ ICsgICAgICAgY29uc3Qgc3RydWN0IGNtZF9zZXQgKnBhbmVsX29uX2NtZHM7Cj4gKyAgICAgICBj b25zdCBzdHJ1Y3Qgcm02OTI5OV9jb25maWcgKmNvbmZpZzsKPiArICAgICAgIHUzMiBudW1fY21k czsKPiArCj4gKyAgICAgICBpZiAoY3R4LT5wcmVwYXJlZCkKPiArICAgICAgICAgICAgICAgcmV0 dXJuIDA7Cj4gKwo+ICsgICAgICAgcmV0ID0gdmlzaW9ub3hfMzU1OTdfcG93ZXJfb24oY3R4KTsK PiArICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsK PiArICAgICAgIGN0eC0+ZHNpLT5tb2RlX2ZsYWdzIHw9IE1JUElfRFNJX01PREVfTFBNOwo+ICsK PiArICAgICAgIGNvbmZpZyA9IGN0eC0+Y29uZmlnOwo+ICsgICAgICAgcGFuZWxfb25fY21kcyA9 IGNvbmZpZy0+cGFuZWxfb25fY21kczsKPiArICAgICAgIG51bV9jbWRzID0gY29uZmlnLT5udW1f b25fY21kczsKPiArCj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2NtZHM7IGkrKykgewo+ ICsgICAgICAgICAgICAgICByZXQgPSB2aXNpb25veF9kY3Nfd3JpdGVfYnVmKHBhbmVsLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxfb25fY21kc1tpXS5zaXplLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbF9vbl9jbWRzW2ldLmNv bW1hbmRzKTsKPiArICAgICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAgICAg ICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImNtZCBzZXQgdHggZmFpbGVkIGkgPSAlZCByZXQgPSAlZFxuIiwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgcmV0KTsKPiArICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIHBvd2VyX29mZjsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIHJldCA9IHZpc2lvbm94X2Rjc193cml0ZShwYW5lbCwgTUlQSV9E Q1NfRVhJVF9TTEVFUF9NT0RFKTsKPiArICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAg ICAgICAgIERSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ImV4aXRfc2xlZXBfbW9kZSBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldCk7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gcG93ZXJfb2ZmOwo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIC8qIFBlciBEU0kgc3BlYyB3YWl0IDEyMG1zIGFmdGVyIHNlbmRp bmcgZXhpdCBzbGVlcCBEQ1MgY29tbWFuZCAqLwo+ICsgICAgICAgbXNsZWVwKDEyMCk7Cj4gKwo+ ICsgICAgICAgcmV0ID0gdmlzaW9ub3hfZGNzX3dyaXRlKHBhbmVsLCBNSVBJX0RDU19TRVRfRElT UExBWV9PTik7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBEUk1f REVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJzZXRfZGlzcGxh eV9vbiBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLCByZXQpOwo+ICsgICAgICAgICAgICAgICBnb3Rv IHBvd2VyX29mZjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICAvKiBQZXIgRFNJIHNwZWMgd2Fp dCAxMjBtcyBhZnRlciBzZW5kaW5nIHNldF9kaXNwbGF5X29uIERDUyBjb21tYW5kICovCj4gKyAg ICAgICBtc2xlZXAoMTIwKTsKPiArCj4gKyAgICAgICBjdHgtPnByZXBhcmVkID0gdHJ1ZTsKPiAr Cj4gKyAgICAgICByZXR1cm4gMDsKPiArCj4gK3Bvd2VyX29mZjoKPiArICAgICAgIGlmICh2aXNp b25veF9ybTY5Mjk5X3Bvd2VyX29mZihjdHgpKQo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VS Uk9SKGN0eC0+ZGV2LCAicG93ZXJfb2ZmIGZhaWxlZFxuIik7Cj4gKyAgICAgICByZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHZpc2lvbm94X3JtNjkyOTlfZW5hYmxlKHN0cnVjdCBk cm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgdmlzaW9ub3hfcm02OTI5OSAq Y3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAg ICAgaWYgKGN0eC0+ZW5hYmxlZCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsg ICAgICAgaWYgKGN0eC0+YmFja2xpZ2h0KSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IGJhY2ts aWdodF9lbmFibGUoY3R4LT5iYWNrbGlnaHQpOwo+ICsgICAgICAgICAgICAgICBpZiAocmV0IDwg MCkKPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LCAiYmFj a2xpZ2h0IGVuYWJsZSBmYWlsZWQgJWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXQpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGN0 eC0+ZW5hYmxlZCA9IHRydWU7Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgdmlzaW9ub3hfcm02OTI5OV9nZXRfbW9kZXMoc3RydWN0IGRybV9wYW5lbCAqcGFu ZWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwYW5l bC0+Y29ubmVjdG9yOwo+ICsgICAgICAgc3RydWN0IHZpc2lvbm94X3JtNjkyOTkgKmN0eCA9IHBh bmVsX3RvX2N0eChwYW5lbCk7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZTsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBybTY5Mjk5X2NvbmZpZyAqY29uZmlnOwo+ICsKPiAr ICAgICAgIGNvbmZpZyA9IGN0eC0+Y29uZmlnOwo+ICsgICAgICAgbW9kZSA9IGRybV9tb2RlX2Ny ZWF0ZShjb25uZWN0b3ItPmRldik7Cj4gKyAgICAgICBpZiAoIW1vZGUpIHsKPiArICAgICAgICAg ICAgICAgRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAi ZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBkaXNwbGF5IG1vZGVcbiIpOwo+ICsgICAgICAgICAgICAg ICByZXR1cm4gMDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBjb25uZWN0b3ItPmRpc3BsYXlf aW5mby53aWR0aF9tbSA9IGNvbmZpZy0+d2lkdGhfbW07Cj4gKyAgICAgICBjb25uZWN0b3ItPmRp c3BsYXlfaW5mby5oZWlnaHRfbW0gPSBjb25maWctPmhlaWdodF9tbTsKPiArICAgICAgIGRybV9t b2RlX2NvcHkobW9kZSwgY29uZmlnLT5kbSk7Cj4gKyAgICAgICBtb2RlLT50eXBlID0gRFJNX01P REVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsKPiArICAgICAgIGRybV9t b2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPiArCj4gKyAgICAgICByZXR1cm4gMTsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgdmlzaW9ub3hf cm02OTI5OV9kcm1fZnVuY3MgPSB7Cj4gKyAgICAgICAuZGlzYWJsZSA9IHZpc2lvbm94X3JtNjky OTlfZGlzYWJsZSwKPiArICAgICAgIC51bnByZXBhcmUgPSB2aXNpb25veF9ybTY5Mjk5X3VucHJl cGFyZSwKPiArICAgICAgIC5wcmVwYXJlID0gdmlzaW9ub3hfcm02OTI5OV9wcmVwYXJlLAo+ICsg ICAgICAgLmVuYWJsZSA9IHZpc2lvbm94X3JtNjkyOTlfZW5hYmxlLAo+ICsgICAgICAgLmdldF9t b2RlcyA9IHZpc2lvbm94X3JtNjkyOTlfZ2V0X21vZGVzLAo+ICt9Owo+ICsKPiArc3RhdGljIGlu dCB2aXNpb25veF9ybTY5Mjk5X3BhbmVsX2FkZChzdHJ1Y3QgdmlzaW9ub3hfcm02OTI5OSAqY3R4 KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjdHgtPmRldjsKPiArICAgICAg IGludCByZXQsIGk7Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgcm02OTI5OV9jb25maWcgKmNvbmZp ZzsKPiArCj4gKyAgICAgICBjb25maWcgPSBjdHgtPmNvbmZpZzsKPiArICAgICAgIGZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpOyBpKyspCj4gKyAgICAgICAgICAgICAg IGN0eC0+c3VwcGxpZXNbaV0uc3VwcGx5ID0gcmVndWxhdG9yX25hbWVzW2ldOwo+ICsKPiArICAg ICAgIHJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGRldiwgQVJSQVlfU0laRShjdHgtPnN1 cHBsaWVzKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+c3Vw cGxpZXMpOwo+ICsgICAgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gKwo+ICsgICAgICAgY3R4LT5yZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAi cmVzZXQiLCBHUElPRF9PVVRfTE9XKTsKPiArICAgICAgIGlmIChJU19FUlIoY3R4LT5yZXNldF9n cGlvKSkgewo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGRldiwgImNhbm5vdCBnZXQg cmVzZXQgZ3BpbyAlbGRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgUFRSX0VSUihjdHgt PnJlc2V0X2dwaW8pKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNl dF9ncGlvKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBncGlvZF9kaXJlY3Rpb25f b3V0cHV0KGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKyAgICAgICBpZihyZXQgPCAwKSB7Cj4gKyAg ICAgICAgICAgICAgIHByX2VycigiZGlyZWN0aW9uIG91dHB1dCBmYWlsZWQgXG4iKTsKPiArICAg ICAgIH0KPiArCj4gKyAgICAgICBkcm1fcGFuZWxfaW5pdCgmY3R4LT5wYW5lbCk7Cj4gKyAgICAg ICBjdHgtPnBhbmVsLmRldiA9IGRldjsKPiArICAgICAgIGN0eC0+cGFuZWwuZnVuY3MgPSAmdmlz aW9ub3hfcm02OTI5OV9kcm1fZnVuY3M7Cj4gKyAgICAgICBkcm1fcGFuZWxfYWRkKCZjdHgtPnBh bmVsKTsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlIHFjb21fc2M3MTgwX210cF8xMDgwcF9tb2RlID0gewo+ICsg ICAgICAgLm5hbWUgPSAiMTA4MHgyMjQ4IiwKPiArICAgICAgIC5jbG9jayA9IDE1ODY5NSwKPiAr ICAgICAgIC5oZGlzcGxheSA9IDEwODAsCj4gKyAgICAgICAuaHN5bmNfc3RhcnQgPSAxMDgwICsg MjYsCj4gKyAgICAgICAuaHN5bmNfZW5kID0gMTA4MCArIDI2ICsgMiwKPiArICAgICAgIC5odG90 YWwgPSAxMDgwICsgMjYgKyAyICsgMzYsCj4gKyAgICAgICAudmRpc3BsYXkgPSAyMjQ4LAo+ICsg ICAgICAgLnZzeW5jX3N0YXJ0ID0gMjI0OCArIDU2LAo+ICsgICAgICAgLnZzeW5jX2VuZCA9IDIy NDggKyA1NiArIDQsCj4gKyAgICAgICAudnRvdGFsID0gMjI0OCArIDU2ICsgNCArIDQsCj4gKyAg ICAgICAudnJlZnJlc2ggPSA2MCwKPiArICAgICAgIC5mbGFncyA9IDAsCj4gK307Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHJtNjkyOTlfY29uZmlnIHJtNjkyOTlfZGlyID0gewo+ICsgICAg ICAgLndpZHRoX21tID0gNzQsCj4gKyAgICAgICAuaGVpZ2h0X21tID0gMTMxLAo+ICsgICAgICAg LnBhbmVsX25hbWUgPSAicWNvbV9zYzcxODBfbXRwXzEwODBwX3BhbmVsIiwKPiArICAgICAgIC5k bSA9ICZxY29tX3NjNzE4MF9tdHBfMTA4MHBfbW9kZSwKPiArICAgICAgIC5wYW5lbF9vbl9jbWRz ID0gcWNvbV9ybTY5Mjk5XzEwODBwX3BhbmVsX21hZ2ljX2NtZHMsCj4gKyAgICAgICAubnVtX29u X2NtZHMgPSBBUlJBWV9TSVpFKHFjb21fcm02OTI5OV8xMDgwcF9wYW5lbF9tYWdpY19jbWRzKSwK PiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdmlzaW9ub3hfcm02OTI5OV9wcm9iZShzdHJ1Y3QgbWlw aV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZk c2ktPmRldjsKPiArICAgICAgIHN0cnVjdCB2aXNpb25veF9ybTY5Mjk5ICpjdHg7Cj4gKyAgICAg ICBpbnQgcmV0ID0gMDsKPiArCj4gKyAgICAgICBjdHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXpl b2YoKmN0eCksIEdGUF9LRVJORUwpOwo+ICsKPiArICAgICAgIGlmICghY3R4KQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAgICBjdHgtPmNvbmZpZyA9IG9mX2Rl dmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+ICsKPiArICAgICAgIGlmICghY3R4LT5jb25maWcp IHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJtaXNzaW5nIGRldmljZSBjb25maWd1 cmF0aW9uXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gKyAgICAgICB9 Cj4gKwo+ICsgICAgICAgbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOwo+ICsKPiArICAg ICAgIGN0eC0+ZGV2ID0gZGV2Owo+ICsgICAgICAgY3R4LT5kc2kgPSBkc2k7Cj4gKwo+ICsgICAg ICAgcmV0ID0gdmlzaW9ub3hfcm02OTI5OV9wYW5lbF9hZGQoY3R4KTsKPiArICAgICAgIGlmIChy ZXQpIHsKPiArICAgICAgICAgICAgICAgRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gYWRk IHBhbmVsXG4iKTsKPiArICAgICAgICAgICAgICAgZ290byBlcnJfcGFuZWxfYWRkOwo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIGRzaS0+bGFuZXMgPSA0Owo+ICsgICAgICAgZHNpLT5mb3JtYXQg PSBNSVBJX0RTSV9GTVRfUkdCODg4Owo+ICsgICAgICAgZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9E U0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVfTFBNIHwKPiArICAgICAgICAgICAgICAgTUlQ SV9EU0lfQ0xPQ0tfTk9OX0NPTlRJTlVPVVM7Cj4gKyAgICAgICByZXQgPSBtaXBpX2RzaV9hdHRh Y2goZHNpKTsKPiArICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9E RVZfRVJST1IoZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJkc2kgYXR0YWNoIGZhaWxl ZCByZXQgPSAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgZ290byBlcnJfZHNpX2F0dGFj aDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArCj4gK2Vycl9kc2lfYXR0 YWNoOgo+ICsgICAgICAgZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7Cj4gK2Vycl9wYW5l bF9hZGQ6Cj4gKyAgICAgICBtaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3Rlcihkc2kpOwo+ICsgICAg ICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aXNpb25veF9ybTY5Mjk5X3Jl bW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArICAgICAgIHN0cnVjdCB2 aXNpb25veF9ybTY5Mjk5ICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwo+ICsKPiAr ICAgICAgIGlmIChjdHgtPmRzaSkgewo+ICsgICAgICAgICAgICAgICBtaXBpX2RzaV9kZXRhY2go Y3R4LT5kc2kpOwo+ICsgICAgICAgICAgICAgICBtaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3Rlcihj dHgtPmRzaSk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZHJtX3BhbmVsX3JlbW92ZSgmY3R4 LT5wYW5lbCk7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgdmlzaW9ub3hfcm02OTI5OV9vZl9tYXRjaFtdID0gewo+ICsgICAg ICAgewo+ICsgICAgICAgICAgICAgICAuY29tcGF0aWJsZSA9ICJ2aXNpb25veCxybTY5Mjk5LTEw ODBwLWRpc3BsYXkiLAo+ICsgICAgICAgICAgICAgICAuZGF0YSA9ICZybTY5Mjk5X2RpciwKPiAr ICAgICAgIH0sCj4gKyAgICAgICB7IH0KPiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwg dmlzaW9ub3hfcm02OTI5OV9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNp X2RyaXZlciB2aXNpb25veF9ybTY5Mjk5X2RyaXZlciA9IHsKPiArICAgICAgIC5kcml2ZXIgPSB7 Cj4gKyAgICAgICAgICAgICAgIC5uYW1lID0gInBhbmVsLXZpc2lvbm94LXJtNjkyOTkiLAo+ICsg ICAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSB2aXNpb25veF9ybTY5Mjk5X29mX21hdGNo LAo+ICsgICAgICAgfSwKPiArICAgICAgIC5wcm9iZSA9IHZpc2lvbm94X3JtNjkyOTlfcHJvYmUs Cj4gKyAgICAgICAucmVtb3ZlID0gdmlzaW9ub3hfcm02OTI5OV9yZW1vdmUsCj4gK307Cj4gK21v ZHVsZV9taXBpX2RzaV9kcml2ZXIodmlzaW9ub3hfcm02OTI5OV9kcml2ZXIpOwo+ICsKPiArTU9E VUxFX0RFU0NSSVBUSU9OKCJWSVNJT05PWCBSTTY5Mjk5IERTSSBQYW5lbCBEcml2ZXIiKTsKPiAr TU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IC0tCj4gMi43LjQKPgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=