From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: Re: [PATCH v6 1/2] drm/panel: Add support for Truly NT35597 panel
driver
Date: Mon, 27 Aug 2018 14:41:00 +0200
Message-ID: <1535373660.5076.7.camel@pengutronix.de>
References: <1534558020-9921-1-git-send-email-abhinavk@codeaurora.org>
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Return-path:
In-Reply-To: <1534558020-9921-1-git-send-email-abhinavk@codeaurora.org>
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: Abhinav Kumar , dri-devel@lists.freedesktop.org
Cc: linux-arm-msm@vger.kernel.org, hoegsberg@google.com, thierry.reding@gmail.com, seanpaul@chromium.org, chandanu@codeaurora.org
List-Id: linux-arm-msm@vger.kernel.org
SGkgQWJoaW5hdiwKCkkgaGF2ZSBhIGZldyBjb21tZW50cyBiZWxvdy4KCk9uIEZyaSwgMjAxOC0w
OC0xNyBhdCAxOTowNiAtMDcwMCwgQWJoaW5hdiBLdW1hciB3cm90ZToKPiBGcm9tOiAiYWJoaW5h
dmtAY29kZWF1cm9yYS5vcmciIDxhYmhpbmF2a0Bjb2RlYXVyb3JhLm9yZz4KPiAKPiBBZGQgc3Vw
cG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBwYW5lbCBkcml2ZXIgdXNlZAo+IGluIE1TTSByZWZlcmVu
Y2UgcGxhdGZvcm1zLgo+IAo+IFRoaXMgcGFuZWwgZHJpdmVyIHN1cHBvcnRzIGJvdGggc2luZ2xl
IERTSSBhbmQgZHVhbCBEU0kKPiBtb2Rlcy4KPiAKPiBIb3dldmVyLCB0aGlzIHBhdGNoIHNlcmll
cyBhZGRzIHN1cHBvcnQgb25seSBmb3IKPiBkdWFsIERTSSBtb2RlLgo+IAo+IENoYW5nZXMgaW4g
djY6Cj4gLSBJbnRyb2R1Y2UgcGFuZWwgY29uZmlnIHRvIHN0b3JlIHBhbmVsIHNwZWNpZmljCj4g
ICBkZXRhaWxzCj4gLSBCcmluZyBiYWNrIHRoZSBzaXplIG1lbWJlciBmb3IgdGhlIHBhbmVsIGNv
bW1hbmQKPiAgIHN0cnVjdHVyZSB0byBtYWtlIHRoZSBkZXNpZ24gbW9yZSBzY2FsYWJsZQo+IC0g
TW92ZSB0aGUgZGlzcGxheSBtb2RlIGZyb20gdGhlIERUIHRvIGRyaXZlcgo+IC0gQ2hhbmdlIHRo
ZSBjb21wYXRpYmxlIHN0cmluZyB0byBpbmRpY2F0ZSB3aGljaAo+ICAgd2hpY2ggYm9hcmQgYW5k
IHBhbmVsIGl0IHdpbGwgYmUgdXNlZCBmb3IKPiAtIFJlbmFtZSB0aGUgZnVuY3Rpb25zIHRvIG1h
dGNoIHRoZSBwYW5lbCBkcml2ZXIKPiAtIEhhdmUgYSBkYXRhIG1lbWJlciBmb3IgZWFjaCBjb21w
YXRpYmxlIHN0cmluZwo+IC0gUmVtb3ZlIHRoZSBwYW5lbCBjb21tYW5kcyBzcGxpdCBhcyBpdHMg
bm90Cj4gICByZXF1aXJlZCBmb3IgdGhlIHBhbmVsIGluaXQgZnVuY3Rpb25hbGl0eQo+IAo+IFNp
Z25lZC1vZmYtYnk6IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+Cj4gU2ln
bmVkLW9mZi1ieTogQWJoaW5hdiBLdW1hciA8YWJoaW5hdmtAY29kZWF1cm9yYS5vcmc+Cj4gLS0t
Cj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgICAgfCAgIDggKwo+
ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsKPiAg
ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRydWx5LW50MzU1OTcuYyB8IDcwNSArKysrKysr
KysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzE0IGluc2VydGlvbnMo
KykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cnVs
eS1udDM1NTk3LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25m
aWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+IGluZGV4IDYwMjBjMzAuLjdhZTc0
YzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPiArKysgYi9k
cml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+IEBAIC0xODYsNCArMTg2LDEyIEBAIGNvbmZp
ZyBEUk1fUEFORUxfU0lUUk9OSVhfU1Q3Nzg5Vgo+ICAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50
IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgU2l0cm9uaXgKPiAgCSAgU1Q3Nzg5ViBjb250cm9s
bGVyIGZvciAyNDB4MzIwIExDRCBwYW5lbHMKPiAgCj4gK2NvbmZpZyBEUk1fUEFORUxfVFJVTFlf
TlQzNTU5N19XUVhHQQo+ICsJdHJpc3RhdGUgIlRydWx5IFdRWEdBIgo+ICsJZGVwZW5kcyBvbiBP
Rgo+ICsJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKPiArCXNlbGVjdCBWSURFT01PREVfSEVMUEVS
Uwo+ICsJaGVscAo+ICsJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0
IGZvciBUcnVseSBOVDM1NTk3IFdRWEdBIER1YWwgRFNJCj4gKwkgIFZpZGVvIE1vZGUgcGFuZWwK
PiAgZW5kbWVudQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUg
Yi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBpbmRleCA1Y2NhYWE5Li44MGZkMTlm
IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+ICsrKyBiL2Ry
aXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+IEBAIC0xOSwzICsxOSw0IEBAIG9iai0kKENP
TkZJR19EUk1fUEFORUxfU0VJS09fNDNXVkYxRykgKz0gcGFuZWwtc2Vpa28tNDN3dmYxZy5vCj4g
IG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFExMDFSMVNYMDEpICs9IHBhbmVsLXNoYXJw
LWxxMTAxcjFzeDAxLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSEFSUF9MUzA0M1QxTEUw
MSkgKz0gcGFuZWwtc2hhcnAtbHMwNDN0MWxlMDEubwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVM
X1NJVFJPTklYX1NUNzc4OVYpICs9IHBhbmVsLXNpdHJvbml4LXN0Nzc4OXYubwo+ICtvYmotJChD
T05GSUdfRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EpICs9IHBhbmVsLXRydWx5LW50MzU1
OTcubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHJ1bHktbnQz
NTU5Ny5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRydWx5LW50MzU1OTcuYwo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNjkxYmUwMwo+IC0tLSAvZGV2L251
bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHJ1bHktbnQzNTU5Ny5jCj4g
QEAgLTAsMCArMSw3MDUgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAK
PiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25z
dW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KPiArI2luY2x1ZGUgPGxpbnV4
L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGluY3RybC9jb25zdW1l
ci5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gKwo+ICsjaW5jbHVkZSA8dmlk
ZW8vbWlwaV9kaXNwbGF5Lmg+Cj4gKyNpbmNsdWRlIDx2aWRlby9vZl92aWRlb21vZGUuaD4KPiAr
I2luY2x1ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+
Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlf
ZHNpLmg+Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJlZ3VsYXRvcl9uYW1lc1td
ID0gewo+ICsJInZkZGEiLAo+ICsJInZkaXNwcCIsCj4gKwkidmRpc3BuIiwKPiArfTsKPiArCj4g
K3N0YXRpYyB1bnNpZ25lZCBsb25nIGNvbnN0IHJlZ3VsYXRvcl9lbmFibGVfbG9hZHNbXSA9IHsK
PiArCTYyMDAwLAo+ICsJMTAwMDAwLAo+ICsJMTAwMDAwLAo+ICt9Owo+ICsKPiArc3RhdGljIHVu
c2lnbmVkIGxvbmcgY29uc3QgcmVndWxhdG9yX2Rpc2FibGVfbG9hZHNbXSA9IHsKPiArCTgwLAo+
ICsJMTAwLAo+ICsJMTAwLAo+ICt9Owo+ICsKPiArc3RydWN0IG50MzU1OTdfY29uZmlnIHsKPiAr
CXUzMiB3aWR0aF9tbTsKPiArCXUzMiBoZWlnaHRfbW07Cj4gKwljaGFyIHBhbmVsX25hbWVbMjU2
XTsKCldoeSBub3QKCWNvbnN0IGNoYXIgKnBhbmVsX25hbWU7Cj8KCj4gKwl2b2lkICpwYW5lbF9v
bl9jbWRzOwoKCWNvbnN0IHZvaWQgKnBhbmVsX29uX2NtZHM7Cgo+ICsJdTMyIG51bV9vbl9jbWRz
Owo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRtOwoKCWNvbnN0IHN0cnVjdCBkcm1fZGlz
cGxheV9tb2RlICpkbTsKCj4gK307Cj4gKwo+ICtzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyB7Cj4gKwlz
dHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsIHBhbmVsOwo+ICsKPiArCXN0
cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhIHN1cHBsaWVzW0FSUkFZX1NJWkUocmVndWxhdG9yX25h
bWVzKV07Cj4gKwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKPiArCXN0cnVjdCBn
cGlvX2Rlc2MgKm1vZGVfZ3BpbzsKPiArCj4gKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFj
a2xpZ2h0Owo+ICsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaVsyXTsKPiArCj4gKwlj
b25zdCBzdHJ1Y3QgbnQzNTU5N19jb25maWcgKmNvbmZpZzsKPiArCWJvb2wgcHJlcGFyZWQ7Cj4g
Kwlib29sIGVuYWJsZWQ7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB0cnVseV9u
dDM1NTk3ICpwYW5lbF90b19jdHgoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXJl
dHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCB0cnVseV9udDM1NTk3LCBwYW5lbCk7Cj4g
K30KPiArCj4gKyNkZWZpbmUgTUFYX0xFTgk1Cj4gKyNkZWZpbmUgU0hPUlRfUEFDS0VUIDIKPiAr
I2RlZmluZSBMT05HX1BBQ0tFVCA0Cj4gKwo+ICtzdHJ1Y3QgY21kX3NldCB7Cj4gKwl1OCBjb21t
YW5kc1tNQVhfTEVOXTsKPiArCWludCBzaXplOwoKQ29uc2lkZXIgY2hhbmdpbmcgdGhpcyB0bwoJ
dTggc2l6ZTsKCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGNtZF9zZXQgcWNvbV8ya19wYW5l
bF9tYWdpY19jbWRzW10gPSB7Cj4gKwkvKiBDTUQyX1AwICovClsuLi5dCj4gKwkvKiBWQlArVlNB
PSxWRlAgPSAxMEggKi8KPiArCXsgeyAweDNCLCAweDAzLCAweDBBLCAweDBBIH0sIDQgfSwKPiAr
CS8qIEZURSBvbiAqLwo+ICsJeyB7IDB4MzUsIDB4MDAgfSwgMiB9LAo+ICsJLyogRU5fQksgPTEo
YXV0byBibGFjaykgKi8KPiArCXsgeyAweEU1LCAweDAxIH0sIDIgfSwKPiArCS8qIENNRCBtb2Rl
KDEwKSBWRE8gbW9kZSgwMykgKi8KPiArCXsgeyAweEJCLCAweDAzIH0sIDIgfSwKPiArCS8qIE5v
biBSZWxvYWQgTVRQICovCj4gKwl7IHsgMHhGQiwgMHgwMSB9LCAyIH0sCj4gK307Cj4gKwo+ICtz
dGF0aWMgaW50IHRydWx5X2Rjc193cml0ZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwgdTMyIGNv
bW1hbmQpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19jdHgo
cGFuZWwpOwo+ICsJaW50IGksIHJldDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la
RShjdHgtPmRzaSk7IGkrKykgewo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc193cml0ZShjdHgtPmRz
aVtpXSwKPiArCQkJY29tbWFuZCwgTlVMTCwgMCk7Cj4gKwkJaWYgKHJldCA8IDApIHsKPiArCQkJ
RFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJCSJzZXRfZGlzcGxheV9vZmYgY21kIGZhaWxl
ZCBmb3IgZHNpID0gJWRcbiIsCgpUaGlzIGVycm9yIG1lc3NhZ2UgaXMgbm90IGFjY3VyYXRlLgp0
cnVseV9kY3Nfd3JpdGUgaXMgYWxzbyBjYWxsZWQgZnJvbSB0cnVseV9udDM1NTk3X3ByZXBhcmUu
Cgo+ICsJCQlpKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr
c3RhdGljIGludCB0cnVseV9kY3Nfd3JpdGVfYnVmKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLAo+
ICsJdTMyIHNpemUsIHU4ICpidWYpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHgg
PSBwYW5lbF90b19jdHgocGFuZWwpOwo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgaTsKPiArCj4g
Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPmRzaSk7IGkrKykgewo+ICsJCXJldCA9
IG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoY3R4LT5kc2lbaV0sCj4gKwkJCWJ1ZiwKPiArCQkJ
c2l6ZSk7Cj4gKwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCURSTV9ERVZfRVJST1IoY3R4LT5k
ZXYsCj4gKwkJCQkiZmFpbGVkIHRvIHR4IGNtZCBbJWRdLCBlcnI6ICVkXG4iLAo+ICsJCQkJaSwg
cmV0KTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsK
PiArfQo+ICsKPiArI2RlZmluZSB0cnVseV9jYWxsX3dyaXRlX2Z1bmMocmV0LCBmdW5jLCBwYW5l
bCwgY29tbWFuZCkge1wKPiArCXJldCA9IGZ1bmMocGFuZWwsIGNvbW1hbmQpOyAgICAgXAo+ICt9
Cj4gKwo+ICsjZGVmaW5lIHRydWx5X3dyaXRlX2J1Zl9mdW5jKHJldCwgZnVuYywgcGFuZWwsIHNp
emUsIGJ1Zikge1wKPiArCXJldCA9IGZ1bmMocGFuZWwsIHNpemUsIGJ1Zik7IFwKPiArfQoKVGhl
c2UgbWFjcm9zIGp1c3Qgb2JmdXNjYXRlIHRoaW5ncy4gSnVzdCBjYWxsIHRoZSBmdW5jdGlvbiBk
aXJlY3RseQpiZWxvdy4KCj4gKwo+ICtzdGF0aWMgaW50IHRydWx5XzM1NTk3X3Bvd2VyX29uKHN0
cnVjdCB0cnVseV9udDM1NTk3ICpjdHgpCj4gK3sKPiArCWludCByZXQsIGk7Cj4gKwo+ICsJZm9y
IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyk7IGkrKykgewo+ICsJCXJldCA9
IHJlZ3VsYXRvcl9zZXRfbG9hZChjdHgtPnN1cHBsaWVzW2ldLmNvbnN1bWVyLAo+ICsJCQkJCXJl
Z3VsYXRvcl9lbmFibGVfbG9hZHNbaV0pOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7
Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUoY3R4
LT5zdXBwbGllcyksIGN0eC0+c3VwcGxpZXMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJu
IHJldDsKPiArCj4gKwkvKiBSZXNldCBzZXF1ZW5jZSBvZiB0cnVseSBwYW5lbCByZXF1aXJlcwo+
ICsJICogdGhlIHJlc2V0IHBpbiB0byBiZSBwdWxsZWQgaGlnaCBmb3IgMTBtcwo+ICsJICogZm9s
bG93ZWQgYnkgYSBsb3cgcGVyaW9kIG9mIDEwbXMgYW5kIHRoZW4KPiArCSAqIHB1bGxlZCBoaWdo
IGFnYWluCj4gKwkgKi8KClRoZSBjb21tZW50IHNheXMgMTAgbXMKCj4gKwlncGlvZF9zZXRfdmFs
dWUoY3R4LT5yZXNldF9ncGlvLCAxKTsKPiArCW1zbGVlcCgyMCk7CgpidXQgdGhlbiB0aGUgc2xl
ZXAgaXMgZm9yIDIwIG1zLgpNYXliZSB1c2UKCXVzbGVlcF9yYW5nZSgxMDAwMCwgMjAwMDApOwo/
Cgo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKwltc2xlZXAoMjAp
Owo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMSk7CgpTbyB0aGlzIGlzIGFu
IGFjdGl2ZSBsb3cgcmVzZXQ/ClNob3VsZCB0aGlzIG1heWJlIHVzZSBHUElPX0FDVElWRV9MT1cg
aW4gdGhlIERUIGFuZCB0aGVuCgoJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7
CglncGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAxKTsKCWdwaW9kX3NldF92YWx1ZShj
dHgtPnJlc2V0X2dwaW8sIDApOwoKaGVyZT8KCj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g
K3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19wb3dlcl9vZmYoc3RydWN0IHRydWx5X250MzU1OTcg
KmN0eCkKPiArewo+ICsJaW50IHJldCwgaTsKPiArCj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5y
ZXNldF9ncGlvLCAwKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPnN1
cHBsaWVzKTsgaSsrKSB7Cj4gKwkJcmV0ID0gcmVndWxhdG9yX3NldF9sb2FkKGN0eC0+c3VwcGxp
ZXNbaV0uY29uc3VtZXIsCj4gKwkJCQlyZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tpXSk7Cj4gKwkJ
aWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmVndWxhdG9y
X2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBsaWVzKTsK
PiArfQo+ICsKPiArc3RhdGljIGludCB0cnVseV9udDM1NTk3X2Rpc2FibGUoc3RydWN0IGRybV9w
YW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90
b19jdHgocGFuZWwpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWN0eC0+ZW5hYmxlZCkKPiAr
CQlyZXR1cm4gMDsKPiArCj4gKwlpZiAoY3R4LT5iYWNrbGlnaHQpIHsKPiArCQlyZXQgPSBiYWNr
bGlnaHRfZGlzYWJsZShjdHgtPmJhY2tsaWdodCk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCURS
TV9ERVZfRVJST1IoY3R4LT5kZXYsICJiYWNrbGlnaHQgZGlzYWJsZSBmYWlsZWQgJWRcbiIsCj4g
KwkJCQlyZXQpOwo+ICsJfQo+ICsKPiArCWN0eC0+ZW5hYmxlZCA9IGZhbHNlOwo+ICsJcmV0dXJu
IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N191bnByZXBhcmUoc3RydWN0
IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBw
YW5lbF90b19jdHgocGFuZWwpOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJaWYgKCFjdHgtPnBy
ZXBhcmVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWN0eC0+ZHNpWzBdLT5tb2RlX2ZsYWdzID0g
MDsKPiArCWN0eC0+ZHNpWzFdLT5tb2RlX2ZsYWdzID0gMDsKPiArCj4gKwl0cnVseV9jYWxsX3dy
aXRlX2Z1bmMocmV0LCB0cnVseV9kY3Nfd3JpdGUsIHBhbmVsLAo+ICsJCU1JUElfRENTX1NFVF9E
SVNQTEFZX09GRik7CgpTZWUgYWJvdmUsIGp1c3QKCglyZXQgPSB0cnVseV9kY3Nfd3JpdGUocGFu
ZWwsIE1JUElfRENTX1NFVF9ESVNQTEFZX09GRik7Cgp3b3VsZCBiZSBhIGxvdCBtb3JlIHJlYWRh
YmxlLgoKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiAr
CQkJInNldF9kaXNwbGF5X29mZiBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLAo+ICsJCQlyZXQpOwo+
ICsJfQo+ICsKPiArCS8qIDEyMG1zIGRlbGF5IHJlcXVpcmVkIGhlcmUgYXMgcGVyIERDUyBzcGVj
ICovCj4gKwltc2xlZXAoMTIwKTsKPiArCj4gKwl0cnVseV9jYWxsX3dyaXRlX2Z1bmMocmV0LCB0
cnVseV9kY3Nfd3JpdGUsIHBhbmVsLAo+ICsJCU1JUElfRENTX0VOVEVSX1NMRUVQX01PREUpOwoK
U2VlIGFib3ZlLgoKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRl
diwKPiArCQkJImVudGVyX3NsZWVwIGNtZCBmYWlsZWQgcmV0ID0gJWRcbiIsCj4gKwkJCXJldCk7
Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gdHJ1bHlfbnQzNTU5N19wb3dlcl9vZmYoY3R4KTsKPiArCWlm
IChyZXQgPCAwKQo+ICsJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4gKwkJCSJ0cnVseV9udDM1
NTk3X3Bvd2VyX29mZiBmYWlsZWQgcmV0ID0gJWRcbiIsCj4gKwkJCXJldCk7Cj4gKwo+ICsJY3R4
LT5wcmVwYXJlZCA9IGZhbHNlOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGlu
dCB0cnVseV9udDM1NTk3X3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiAr
CXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19jdHgocGFuZWwpOwo+ICsJaW50
IHJldDsKPiArCWludCBpOwo+ICsJc3RydWN0IGNtZF9zZXQgKnBhbmVsX29uX2NtZHM7Cj4gKwlj
b25zdCBzdHJ1Y3QgbnQzNTU5N19jb25maWcgKmNvbmZpZzsKPiArCXUzMiBudW1fY21kczsKPiAr
Cj4gKwlpZiAoY3R4LT5wcmVwYXJlZCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlyZXQgPSB0cnVs
eV8zNTU5N19wb3dlcl9vbihjdHgpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsK
PiArCj4gKwljdHgtPmRzaVswXS0+bW9kZV9mbGFncyB8PSBNSVBJX0RTSV9NT0RFX0xQTTsKPiAr
CWN0eC0+ZHNpWzFdLT5tb2RlX2ZsYWdzIHw9IE1JUElfRFNJX01PREVfTFBNOwo+ICsKPiArCWNv
bmZpZyA9IGN0eC0+Y29uZmlnOwo+ICsJcGFuZWxfb25fY21kcyA9IChzdHJ1Y3QgY21kX3NldCAq
KWNvbmZpZy0+cGFuZWxfb25fY21kczsKPiArCW51bV9jbWRzID0gY29uZmlnLT5udW1fb25fY21k
czsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2NtZHM7IGkrKykKPiArCQl0cnVseV93cml0
ZV9idWZfZnVuYyhyZXQsIHRydWx5X2Rjc193cml0ZV9idWYsCj4gKwkJCXBhbmVsLCBwYW5lbF9v
bl9jbWRzW2ldLnNpemUsCj4gKwkJCXBhbmVsX29uX2NtZHNbaV0uY29tbWFuZHMpOwoKU2VlIGFi
b3ZlLiBBbHNvLCB3aHkgbm90IHN0b3AgaW1tZWRpYXRlbHkgd2hlbiBhIGRjcyB3cml0ZSBjb21t
YW5kCmZhaWxzPwoKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRl
diwKPiArCQkJInBhbmVsX2NtZHNfc2V0IGZhaWxlZCByZXQgPSAlZFxuIiwKPiArCQkJcmV0KTsK
PiArCX0KPiArCj4gKwkvKiBBcyBwZXIgRFNJIHNwZWMgbmVlZCB0byB3YWl0IGZvciAxMjBtcwo+
ICsJICogYWZ0ZXIgc2VuZGluZyB0aGUgZXhpdCBzbGVlcCBEQ1MgY29tbWFuZAo+ICsJICovCj4g
Kwl0cnVseV9jYWxsX3dyaXRlX2Z1bmMocmV0LCB0cnVseV9kY3Nfd3JpdGUsIHBhbmVsLAo+ICsJ
CU1JUElfRENTX0VYSVRfU0xFRVBfTU9ERSk7CgpTZWUgYWJvdmUuCgo+ICsKPiArCWlmIChyZXQg
PCAwKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJImV4aXRfc2xlZXBfbW9k
ZSBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLAo+ICsJCQlyZXQpOwo+ICsJfQo+ICsKPiArCW1zbGVl
cCgxMjApOwo+ICsKPiArCXRydWx5X2NhbGxfd3JpdGVfZnVuYyhyZXQsIHRydWx5X2Rjc193cml0
ZSwgcGFuZWwsCj4gKwkJTUlQSV9EQ1NfU0VUX0RJU1BMQVlfT04pOwo+ICsKPiArCWlmIChyZXQg
PCAwKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJInNldF9kaXNwbGF5X29u
IGNtZCBmYWlsZWQgcmV0ID0gJWRcbiIsCj4gKwkJCXJldCk7Cj4gKwl9Cj4gKwo+ICsJLyogQWRk
aW5nIDEyMG1zIGRlbGF5IGJlZm9yZSB0aGUgc3RhcnQgb2YKPiArCSAqIHBpeGVsIHN0cmVhbSB0
byB0aGUgcGFuZWwgYWZ0ZXIgc2VuZGluZwo+ICsJICogdGhlIHNldF9kaXNwbGF5X29uIERDUyBj
b21tYW5kCj4gKwkgKi8KPiArCj4gKwltc2xlZXAoMTIwKTsKPiArCj4gKwljdHgtPnByZXBhcmVk
ID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0cnVseV9u
dDM1NTk3X2VuYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IHRy
dWx5X250MzU1OTcgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4gKwlpbnQgcmV0Owo+ICsK
PiArCWlmIChjdHgtPmVuYWJsZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKGN0eC0+YmFj
a2xpZ2h0KSB7Cj4gKwkJcmV0ID0gYmFja2xpZ2h0X2VuYWJsZShjdHgtPmJhY2tsaWdodCk7Cj4g
KwkJaWYgKHJldCA8IDApCj4gKwkJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsICJiYWNrbGlnaHQg
ZW5hYmxlIGZhaWxlZCAlZFxuIiwKPiArCQkJCQkJICByZXQpOwo+ICsJfQo+ICsKPiArCWN0eC0+
ZW5hYmxlZCA9IHRydWU7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg
dHJ1bHlfbnQzNTU5N19nZXRfbW9kZXMoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiAr
CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwYW5lbC0+Y29ubmVjdG9yOwo+ICsJ
c3RydWN0IHRydWx5X250MzU1OTcgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4gKwlzdHJ1
Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiArCWNvbnN0IHN0cnVjdCBudDM1NTk3X2NvbmZp
ZyAqY29uZmlnOwo+ICsKPiArCWNvbmZpZyA9IGN0eC0+Y29uZmlnOwo+ICsJbW9kZSA9IGRybV9t
b2RlX2NyZWF0ZShjb25uZWN0b3ItPmRldik7Cj4gKwlpZiAoIW1vZGUpIHsKPiArCQlEUk1fREVW
X0VSUk9SKGN0eC0+ZGV2LAo+ICsJCQkiZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBkaXNwbGF5IG1v
ZGVcbiIpOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9p
bmZvLndpZHRoX21tID0gY29uZmlnLT53aWR0aF9tbTsKPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9p
bmZvLmhlaWdodF9tbSA9IGNvbmZpZy0+aGVpZ2h0X21tOwo+ICsJLyogQ29weSB0aGUgbW9kZSBm
cm9tIHRoZSBEVCBhbmQgYWRkIGl0ICovCgpUaGlzIGNvbW1lbnQgaXMgbm90IGFjY3VyYXRlLCB0
aGUgbW9kZSBpcyBmcm9tIGluc2lkZSB0aGUgZHJpdmVyLApjdXJyZW50bHkgcWNvbV9zZG04NDVf
bXRwXzJrX21vZGUgYmVsb3cuCgo+ICsJZHJtX21vZGVfY29weShtb2RlLCBjb25maWctPmRtKTsK
PiArCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVfUFJF
RkVSUkVEOwo+ICsJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG1vZGUpOwo+ICsKPiAr
CXJldHVybiAxOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5j
cyB0cnVseV9udDM1NTk3X2RybV9mdW5jcyA9IHsKPiArCS5kaXNhYmxlID0gdHJ1bHlfbnQzNTU5
N19kaXNhYmxlLAo+ICsJLnVucHJlcGFyZSA9IHRydWx5X250MzU1OTdfdW5wcmVwYXJlLAo+ICsJ
LnByZXBhcmUgPSB0cnVseV9udDM1NTk3X3ByZXBhcmUsCj4gKwkuZW5hYmxlID0gdHJ1bHlfbnQz
NTU5N19lbmFibGUsCj4gKwkuZ2V0X21vZGVzID0gdHJ1bHlfbnQzNTU5N19nZXRfbW9kZXMsCj4g
K307Cj4gKwo+ICtzdGF0aWMgaW50IHRydWx5X250MzU1OTdfcGFuZWxfYWRkKHN0cnVjdCB0cnVs
eV9udDM1NTk3ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2Owo+
ICsJaW50IHJldCwgaTsKPiArCWNvbnN0IHN0cnVjdCBudDM1NTk3X2NvbmZpZyAqY29uZmlnOwo+
ICsKPiArCWNvbmZpZyA9IGN0eC0+Y29uZmlnOwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ
WkUoY3R4LT5zdXBwbGllcyk7IGkrKykKPiArCQljdHgtPnN1cHBsaWVzW2ldLnN1cHBseSA9IHJl
Z3VsYXRvcl9uYW1lc1tpXTsKPiArCj4gKwlyZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChk
ZXYsIEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksCj4gKwkJCQkgICAgICBjdHgtPnN1cHBsaWVz
KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJY3R4LT5yZXNldF9n
cGlvID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAicmVzZXQiLCBHUElPRF9PVVRfSElHSCk7Cj4gKwlp
ZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3BpbykpIHsKPiArCQlEUk1fREVWX0VSUk9SKGRldiwgImNh
bm5vdCBnZXQgcmVzZXQgZ3BpbyAlbGRcbiIsCj4gKwkJCVBUUl9FUlIoY3R4LT5yZXNldF9ncGlv
KSk7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKTsKPiArCX0KPiArCj4gKwlj
dHgtPm1vZGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgIm1vZGUiLCBHUElPRF9PVVRfTE9X
KTsKPiArCWlmIChJU19FUlIoY3R4LT5tb2RlX2dwaW8pKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihk
ZXYsICJjYW5ub3QgZ2V0IG1vZGUgZ3BpbyAlbGRcbiIsCj4gKwkJCVBUUl9FUlIoY3R4LT5tb2Rl
X2dwaW8pKTsKPiArCQlyZXR1cm4gUFRSX0VSUihjdHgtPm1vZGVfZ3Bpbyk7Cj4gKwl9Cj4gKwo+
ICsJLyogZHVhbCBwb3J0ICovCj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5tb2RlX2dwaW8sIDAp
Owo+ICsKPiArCWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKPiArCWN0eC0+cGFuZWwuZGV2
ID0gZGV2Owo+ICsJY3R4LT5wYW5lbC5mdW5jcyA9ICZ0cnVseV9udDM1NTk3X2RybV9mdW5jczsK
PiArCWRybV9wYW5lbF9hZGQoJmN0eC0+cGFuZWwpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g
Kwo+ICtzdGF0aWMgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgcWNvbV9zZG04NDVfbXRwXzJrX21v
ZGUgPSB7CgpzdGF0aWMgY29uc3QgLi4uCgo+ICsJLm5hbWUgPSAiMTQ0MHgyNTYwIiwKPiArCS5j
bG9jayA9IDI2ODMxNiwKPiArCS5oZGlzcGxheSA9IDE0NDAsCj4gKwkuaHN5bmNfc3RhcnQgPSAx
NDQwICsgMjAwLAo+ICsJLmhzeW5jX2VuZCA9IDE0NDAgKyAyMDAgKyAzMiwKPiArCS5odG90YWwg
PSAxNDQwICsgMjAwICsgMzIgKyA2NCwKPiArCS52ZGlzcGxheSA9IDI1NjAsCj4gKwkudnN5bmNf
c3RhcnQgPSAyNTYwICsgOCwKPiArCS52c3luY19lbmQgPSAyNTYwICsgOCArIDEsCj4gKwkudnRv
dGFsID0gMjU2MCArIDggKyAxICsgNywKPiArCS52cmVmcmVzaCA9IDYwLAo+ICsJLmZsYWdzID0g
MCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgbnQzNTU5N19jb25maWcgbnQzNTU5N19kaXIg
PSB7CgpzdGF0aWMgY29uc3QgLi4uCgo+ICsJLndpZHRoX21tID0gNzQsCj4gKwkuaGVpZ2h0X21t
ID0gMTMxLAo+ICsJLnBhbmVsX25hbWUgPSAicWNvbV9zZG04NDVfbXRwXzJrX3BhbmVsIiwKPiAr
CS5kbSA9ICZxY29tX3NkbTg0NV9tdHBfMmtfbW9kZSwKPiArCS5wYW5lbF9vbl9jbWRzID0gcWNv
bV8ya19wYW5lbF9tYWdpY19jbWRzLAo+ICsJLm51bV9vbl9jbWRzID0gQVJSQVlfU0laRShxY29t
XzJrX3BhbmVsX21hZ2ljX2NtZHMpLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCB0cnVseV9udDM1
NTk3X3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPiArewo+ICsJc3RydWN0IGRl
dmljZSAqZGV2ID0gJmRzaS0+ZGV2Owo+ICsJc3RydWN0IHRydWx5X250MzU1OTcgKmN0eDsKPiAr
CXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaTFfZGV2aWNlOwo+ICsJc3RydWN0IGRldmljZV9u
b2RlICpkc2kxOwo+ICsJc3RydWN0IG1pcGlfZHNpX2hvc3QgKmRzaTFfaG9zdDsKPiArCXN0cnVj
dCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXY7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCWludCBpOwo+
ICsKPiArCWNvbnN0IHN0cnVjdCBtaXBpX2RzaV9kZXZpY2VfaW5mbyBpbmZvID0gey50eXBlID0g
InRydWx5bnQzNTU5NyIsCgoudHlwZSBzaG91bGQgYmUgb24gdGhlIG5leHQgbGluZS4KCj4gKwkJ
LmNoYW5uZWwgPSAwLAo+ICsJCS5ub2RlID0gTlVMTCwKPiArCX07Cj4gKwo+ICsJY3R4ID0gZGV2
bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKPiArCj4gKwlpZiAoIWN0
eCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwkvKiBUaGlzIGRldmljZSByZXByZXNlbnRz
IGl0c2VsZiBhcyBvbmUgd2l0aAo+ICsJICogdHdvIGlucHV0IHBvcnRzIHdoaWNoIGFyZSBmZWQg
YnkgdGhlIG91dHB1dAo+ICsJICogcG9ydHMgb2YgdGhlIHR3byBEU0kgY29udHJvbGxlcnMgLiBU
aGUgRFNJMAo+ICsJICogaXMgdGhlIG1hc3RlciBjb250cm9sbGVyIGFuZCBoYXMgbW9zdCBvZiB0
aGUKPiArCSAqIHBhbmVsIHJlbGF0ZWQgaW5mbyBpbiBpdHMgY2hpbGQgbm9kZS4KPiArCSAqLwo+
ICsKPiArCWN0eC0+Y29uZmlnID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7Cj4gKwo+
ICsJaWYgKCFjdHgtPmNvbmZpZykgewo+ICsJCWRldl9lcnIoZGV2LCAibWlzc2luZyBkZXZpY2Ug
Y29uZmlndXJhdGlvblxuIik7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwo+ICsJZHNp
MSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfbm9kZShkc2ktPmRldi5vZl9ub2RlLCAxLCAtMSk7Cj4g
KwlpZiAoIWRzaTEpIHsKPiArCQlEUk1fREVWX0VSUk9SKGRldiwKPiArCQkJImZhaWxlZCB0byBn
ZXQgcmVtb3RlIG5vZGUgZm9yIGRzaTFfZGV2aWNlXG4iKTsKPiArCQlyZXQgPSAtRU5PREVWOwo+
ICsJCWdvdG8gZXJyX2dldF9yZW1vdGU7Cj4gKwl9Cj4gKwo+ICsJZHNpMV9ob3N0ID0gb2ZfZmlu
ZF9taXBpX2RzaV9ob3N0X2J5X25vZGUoZHNpMSk7Cj4gKwlpZiAoIWRzaTFfaG9zdCkgewo+ICsJ
CURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRvIGZpbmQgZHNpIGhvc3RcbiIpOwo+ICsJCXJl
dCA9IC1FUFJPQkVfREVGRVI7Cj4gKwkJZ290byBlcnJfaG9zdDsKPiArCX0KPiArCj4gKwlvZl9u
b2RlX3B1dChkc2kxKTsKPiArCj4gKwkvKiByZWdpc3RlciB0aGUgc2Vjb25kIERTSSBkZXZpY2Ug
Ki8KPiArCWRzaTFfZGV2aWNlID0gbWlwaV9kc2lfZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoZHNpMV9o
b3N0LCAmaW5mbyk7Cj4gKwlpZiAoSVNfRVJSKGRzaTFfZGV2aWNlKSkgewo+ICsJCURSTV9ERVZf
RVJST1IoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBkc2kgZGV2aWNlXG4iKTsKPiArCQlyZXQgPSBQ
VFJfRVJSKGRzaSk7Cj4gKwkJZ290byBlcnJfZHNpX2RldmljZTsKPiArCX0KPiArCj4gKwltaXBp
X2RzaV9zZXRfZHJ2ZGF0YShkc2ksIGN0eCk7Cj4gKwo+ICsJY3R4LT5kZXYgPSBkZXY7Cj4gKwlj
dHgtPmRzaVswXSA9IGRzaTsKPiArCWN0eC0+ZHNpWzFdID0gZHNpMV9kZXZpY2U7Cj4gKwo+ICsJ
cmV0ID0gdHJ1bHlfbnQzNTU5N19wYW5lbF9hZGQoY3R4KTsKPiArCWlmIChyZXQpIHsKPiArCQlE
Uk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBhZGQgcGFuZWxcbiIpOwo+ICsJCWdvdG8gZXJy
X3BhbmVsX2FkZDsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdHgt
PmRzaSk7IGkrKykgewo+ICsJCWRzaV9kZXYgPSBjdHgtPmRzaVtpXTsKPiArCQlkc2lfZGV2LT5s
YW5lcyA9IDQ7Cj4gKwkJZHNpX2Rldi0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKPiAr
CQlkc2lfZGV2LT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01P
REVfTFBNIHwKPiArCQkJTUlQSV9EU0lfQ0xPQ0tfTk9OX0NPTlRJTlVPVVM7Cj4gKwkJcmV0ID0g
bWlwaV9kc2lfYXR0YWNoKGRzaV9kZXYpOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCURSTV9E
RVZfRVJST1IoZGV2LAo+ICsJCQkJImRzaSBhdHRhY2ggZmFpbGVkIGkgPSAlZFxuIiwgaSk7Cj4g
KwkJCQlnb3RvIGVycl9kc2lfYXR0YWNoOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gMDsK
PiArCj4gK2Vycl9kc2lfYXR0YWNoOgo+ICsJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7
Cj4gK2Vycl9wYW5lbF9hZGQ6Cj4gKwltaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3Rlcihkc2kxX2Rl
dmljZSk7Cj4gK2Vycl9kc2lfZGV2aWNlOgo+ICtlcnJfaG9zdDoKPiArCW9mX25vZGVfcHV0KGRz
aTEpOwo+ICtlcnJfZ2V0X3JlbW90ZToKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRp
YyBpbnQgdHJ1bHlfbnQzNTU5N19yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQo+
ICt7Cj4gKwlzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEo
ZHNpKTsKPiArCj4gKwlpZiAoY3R4LT5kc2lbMF0pCj4gKwkJbWlwaV9kc2lfZGV0YWNoKGN0eC0+
ZHNpWzBdKTsKPiArCWlmIChjdHgtPmRzaVsxXSkgewo+ICsJCW1pcGlfZHNpX2RldGFjaChjdHgt
PmRzaVsxXSk7Cj4gKwkJbWlwaV9kc2lfZGV2aWNlX3VucmVnaXN0ZXIoY3R4LT5kc2lbMV0pOwo+
ICsJfQo+ICsKPiArCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOwo+ICsJcmV0dXJuIDA7
Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRydWx5X3dxeGdh
X29mX21hdGNoW10gPSB7CgpTaG91bGQgdGhpcyB0YWJsZSBiZSByZW5hbWVkIHRvIHRydWx5X250
MzY2OTdfb2ZfbWF0Y2g/Cgo+ICsJewkuY29tcGF0aWJsZSA9ICJxY29tLHNkbTg0NS1tdHAtMkst
ZGlzcGxheSIsCj4gKwkJLmRhdGEgPSAmbnQzNTU5N19kaXIsCj4gKwl9LAo+ICsKPiArCXsgfQo+
ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0cnVseV93cXhnYV9vZl9tYXRjaCk7Cj4g
Kwo+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciB0cnVseV93cXhnYV9kcml2ZXIgPSB7
Cj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1lID0gInBhbmVsX3RydWx5X250MzU1OTciLAo+ICsJ
CS5vZl9tYXRjaF90YWJsZSA9IHRydWx5X3dxeGdhX29mX21hdGNoLAo+ICsJfSwKPiArCS5wcm9i
ZSA9IHRydWx5X250MzU1OTdfcHJvYmUsCj4gKwkucmVtb3ZlID0gdHJ1bHlfbnQzNTU5N19yZW1v
dmUsCj4gK307Cj4gK21vZHVsZV9taXBpX2RzaV9kcml2ZXIodHJ1bHlfd3F4Z2FfZHJpdmVyKTsK
PiArCj4gK01PRFVMRV9ERVNDUklQVElPTigiVHJ1bHkgTlQzNTU5NyBEU0kgUGFuZWwgRHJpdmVy
Iik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKCnJlZ2FyZHMKUGhpbGlwcApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu
ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl
ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK