From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: Re: [PATCH v10 2/2] drm/bridge: Add I2C based driver for ps8640 bridge
Date: Fri, 19 Feb 2016 10:12:25 +0100
Message-ID: <1455873145.5745.10.camel@pengutronix.de>
References: <1455870678-13959-1-git-send-email-jitao.shi@mediatek.com>
<1455870678-13959-2-git-send-email-jitao.shi@mediatek.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Return-path:
In-Reply-To: <1455870678-13959-2-git-send-email-jitao.shi@mediatek.com>
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: Jitao Shi
Cc: Mark Rutland , stonea168@163.com, dri-devel@lists.freedesktop.org, Andy Yan , Ajay Kumar , Vincent Palatin , cawa.cheng@mediatek.com, yingjoe.chen@mediatek.com, Thierry Reding , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , Rob Herring , linux-mediatek@lists.infradead.org, Russell King , Matthias Brugger , eddie.huang@mediatek.com, linux-arm-kernel@lists.infradead.org, Rahul Sharma , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Sascha Hauer , Kumar Gala
List-Id: devicetree@vger.kernel.org
QW0gRnJlaXRhZywgZGVuIDE5LjAyLjIwMTYsIDE2OjMxICswODAwIHNjaHJpZWIgSml0YW8gU2hp
Ogo+IFRoaXMgcGF0Y2ggYWRkcyBkcm1fYnJpZGdlIGRyaXZlciBmb3IgcGFyYWRlIERTSSB0byBl
RFAgYnJpZGdlIGNoaXAuCj4gCj4gU2lnbmVkLW9mZi1ieTogSml0YW8gU2hpIDxqaXRhby5zaGlA
bWVkaWF0ZWsuY29tPgo+IC0tLQo+IENoYW5nZXMgc2luY2Ugdjk6Cj4gIC0gcmVwbGFjZSBkZXZf
a21hbGxvYyB3aXRoIGRldm1fa21hbGxvYyBpbiBwczg2NDBfZ2V0X21vZGVzCj4gIC0gcmVtb3Zl
IHBzX2JyaWRnZS0+ZHNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKHN0cnVjdCBtaXBpX2Rz
aV9kZXZpY2UpLAo+IAkJCQkJR0ZQX0tFUk5FTCk7Cj4gIC0gZml4IHdyb25nIGNvbmRpdGlvbiBp
biBwczg2NDBfdmFsaWRhdGVfZmlybXdhcmUoKQo+IAo+IFRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBh
cmUgbmVlZGVkIHRvIHN1cHBvcnQgZHNpIGhvc3QgdGhyb3VnaCBub25lIGRzaSBidXM6Cj4gCj4g
aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC84Mjg5MTgxLyAoImRybS9kc2k6IGNo
ZWNrIGZvciBDT05GSUdfT0Ygd2hlbiBkZWZpbmluZyIpCj4gaHR0cHM6Ly9wYXRjaHdvcmsua2Vy
bmVsLm9yZy9wYXRjaC84Mjg5MDUxLyAoImRybS9kc2k6IFVzZSBtaXBpX2RzaV9kZXZpY2VfcmVn
aXN0ZXJfZnVsbCBmb3IgRFNJIGRldmljZSIpCj4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y
Zy9wYXRjaC84Mjg5MDgxLyAoImRybS9kc2k6IFRyeSB0byBtYXRjaCBub24tRFQgRFNJIGRldmlj
ZXMiKQo+IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvODI4OTEyMS8gKCJkcm0v
ZHNpOiBBZGQgcm91dGluZSB0byB1bnJlZ2lzdGVyIGEgRFNJIGRldmljZSIpCj4gaHR0cHM6Ly9w
YXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC84Mjg5MDkxLyAoImRybS9kc2k6IEdldCBEU0kgaG9z
dCBieSBEVCBkZXZpY2Ugbm9kZSIpCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2Nv
bmZpZyAgICAgICAgIHwgICAxMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUg
ICAgICAgIHwgICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFyYWRlLXBzODY0MC5j
IHwgMTA1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5n
ZWQsIDEwNjkgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv
ZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjQwLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv
ZHJtL2JyaWRnZS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCj4gaW5k
ZXggMjdlMjAyMi4uYjRlZGQ4YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl
L0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiBAQCAtNDAs
NCArNDAsMTUgQEAgY29uZmlnIERSTV9QQVJBREVfUFM4NjIyCj4gIAktLS1oZWxwLS0tCj4gIAkg
IFBhcmFkZSBlRFAtTFZEUyBicmlkZ2UgY2hpcCBkcml2ZXIuCj4gIAo+ICtjb25maWcgRFJNX1BB
UkFERV9QUzg2NDAKPiArCXRyaXN0YXRlICJQYXJhZGUgUFM4NjQwIE1JUEkgRFNJIHRvIGVEUCBD
b252ZXJ0ZXIiCj4gKwlkZXBlbmRzIG9uIE9GICYmIEkyQwo+ICsJc2VsZWN0IERSTV9LTVNfSEVM
UEVSCj4gKwlzZWxlY3QgRFJNX01JUElfRFNJCj4gKwlzZWxlY3QgRFJNX1BBTkVMCj4gKwktLS1o
ZWxwLS0tCj4gKwkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBQUzg2NDAgZm9yIGRp
c3BsYXkKPiArCSAgVGhlIFBTODY0MCBpcyBhIGhpZ2gtcGVyZm9ybWFuY2UgYW5kIGxvdy1wb3dl
cgo+ICsJICBNSVBJIERTSSB0byBlRFAgY29udmVydGVyCj4gKwo+ICBlbmRtZW51Cj4gZGlmZiAt
LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v
YnJpZGdlL01ha2VmaWxlCj4gaW5kZXggZjEzYzMzZC4uZmJlMzhkYyAxMDA2NDQKPiAtLS0gYS9k
cml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Jy
aWRnZS9NYWtlZmlsZQo+IEBAIC00LDMgKzQsNCBAQCBvYmotJChDT05GSUdfRFJNX0RXX0hETUkp
ICs9IGR3LWhkbWkubwo+ICBvYmotJChDT05GSUdfRFJNX0RXX0hETUlfQUhCX0FVRElPKSArPSBk
dy1oZG1pLWFoYi1hdWRpby5vCj4gIG9iai0kKENPTkZJR19EUk1fTlhQX1BUTjM0NjApICs9IG54
cC1wdG4zNDYwLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQVJBREVfUFM4NjIyKSArPSBwYXJhZGUt
cHM4NjIyLm8KPiArb2JqLSQoQ09ORklHX0RSTV9QQVJBREVfUFM4NjQwKSArPSBwYXJhZGUtcHM4
NjQwLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjQw
LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhcmFkZS1wczg2NDAuYwo+IG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNWYyNzU0OAo+IC0tLSAvZGV2L251bGwKPiArKysg
Yi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhcmFkZS1wczg2NDAuYwo+IEBAIC0wLDAgKzEsMTA1
NyBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLgo+ICsgKgo+
ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4g
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxp
bnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPiArI2luY2x1ZGUgPGxp
bnV4L2dwaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPiArI2luY2x1
ZGUgPGxpbnV4L2kyYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRl
IDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5oPgo+ICsjaW5jbHVkZSA8
bGludXgvb2ZfZ3JhcGguaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5o
Pgo+ICsjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wYW5l
bC5oPgo+ICsKPiArI2luY2x1ZGUgPGRybVAuaD4KPiArI2luY2x1ZGUgPGRybV9hdG9taWNfaGVs
cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm1fY3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybV9j
cnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm1fZWRpZC5oPgo+ICsjaW5jbHVkZSA8ZHJtX21pcGlfZHNp
Lmg+Cj4gKwo+ICsjZGVmaW5lIFBBR0UyX1NQSV9DRkczCQkweDgyCj4gKyNkZWZpbmUgSTJDX1RP
X1NQSV9SRVNFVAkweDIwCj4gKyNkZWZpbmUgUEFHRTJfUk9NQUREX0JZVEUxCTB4OGUKPiArI2Rl
ZmluZSBQQUdFMl9ST01BRERfQllURTIJMHg4Zgo+ICsjZGVmaW5lIFBBR0UyX1NXU1BJX1dEQVRB
CTB4OTAKPiArI2RlZmluZSBQQUdFMl9TV1NQSV9SREFUQQkweDkxCj4gKyNkZWZpbmUgUEFHRTJf
U1dTUElfTEVOCQkweDkyCj4gKyNkZWZpbmUgUEFHRTJfU1dTUElfQ1RMCQkweDkzCj4gKyNkZWZp
bmUgVFJJR0dFUl9OT19SRUFEQkFDSwkweDA1Cj4gKyNkZWZpbmUgVFJJR0dFUl9SRUFEQkFDSwkw
eDAxCj4gKyNkZWZpbmUgUEFHRTJfU1BJX1NUQVRVUwkweDllCj4gKyNkZWZpbmUgUEFHRTJfR1BJ
T19MCQkweGE2Cj4gKyNkZWZpbmUgUEFHRTJfR1BJT19ICQkweGE3Cj4gKyNkZWZpbmUgUFNfR1BJ
TzkJCUJJVCgxKQo+ICsjZGVmaW5lIFBBR0UyX0lST01fQ1RSTAkJMHhiMAo+ICsjZGVmaW5lIElS
T01fRU5BQkxFCQkweGMwCj4gKyNkZWZpbmUgSVJPTV9ESVNBQkxFCQkweDgwCj4gKyNkZWZpbmUg
UEFHRTJfU1dfUkVTVAkJMHhiYwo+ICsjZGVmaW5lIFNQSV9TV19SRVNFVAkJQklUKDcpCj4gKyNk
ZWZpbmUgTVBVX1NXX1JFU0VUCQlCSVQoNikKPiArI2RlZmluZSBQQUdFMl9FTkNUTFNQSV9XUgkw
eGRhCj4gKyNkZWZpbmUgUEFHRTJfSTJDX0JZUEFTUwkweGVhCj4gKyNkZWZpbmUgSTJDX0JZUEFT
U19FTgkJMHhkMAo+ICsjZGVmaW5lIFBBR0UzX1NFVF9BREQJCTB4ZmUKPiArI2RlZmluZSBQQUdF
M19TRVRfVkFMCQkweGZmCj4gKyNkZWZpbmUgVkRPX0NUTF9BREQJCTB4MTMKPiArI2RlZmluZSBW
RE9fRElTCQkJMHgxOAo+ICsjZGVmaW5lIFZET19FTgkJCTB4MWMKPiArI2RlZmluZSBQQUdFNF9S
RVZfTAkJMHhmMAo+ICsjZGVmaW5lIFBBR0U0X1JFVl9ICQkweGYxCj4gKyNkZWZpbmUgUEFHRTRf
Q0hJUF9MCQkweGYyCj4gKyNkZWZpbmUgUEFHRTRfQ0hJUF9ICQkweGYzCj4gKwo+ICsvKiBGaXJt
d2FyZSAqLwo+ICsjZGVmaW5lIFNQSV9NQVhfUkVUUllfQ05UCTgKPiArI2RlZmluZSBQU19GV19O
QU1FCQkicHM4NjR4X2Z3LmJpbiIKPiArCj4gKyNkZWZpbmUgRldfQ0hJUF9JRF9PRkZTRVQJMAo+
ICsjZGVmaW5lIEZXX1ZFUlNJT05fT0ZGU0VUCTIKPiArI2RlZmluZSBFRElEX0kyQ19BRERSCQkw
eDUwCj4gKwo+ICsjZGVmaW5lIFdSSVRFX1NUQVRVU19SRUdfQ01ECTB4MDEKPiArI2RlZmluZSBS
RUFEX1NUQVRVU19SRUdfQ01ECTB4MDUKPiArI2RlZmluZSBDTEVBUl9BTExfUFJPVEVDVAkweDAw
Cj4gKyNkZWZpbmUgQkxLX1BST1RFQ1RfQklUUwkweDBjCj4gKyNkZWZpbmUgU1RBVFVTX1JFR19Q
Uk9URUNUCUJJVCg3KQo+ICsjZGVmaW5lIFdSSVRFX0VOQUJMRV9DTUQJMHgwNgo+ICsjZGVmaW5l
IENISVBfRVJBU0VfQ01ECQkweGM3Cj4gKwo+ICsjZGVmaW5lIGJyaWRnZV90b19wczg2NDAoZSkJ
Y29udGFpbmVyX29mKGUsIHN0cnVjdCBwczg2NDAsIGJyaWRnZSkKPiArI2RlZmluZSBjb25uZWN0
b3JfdG9fcHM4NjQwKGUpCWNvbnRhaW5lcl9vZihlLCBzdHJ1Y3QgcHM4NjQwLCBjb25uZWN0b3Ip
Cj4gKwo+ICtzdHJ1Y3QgcHM4NjQwX2luZm8gewo+ICsJdTggZmFtaWx5X2lkOwo+ICsJdTggdmFy
aWFudF9pZDsKPiArCXUxNiB2ZXJzaW9uOwo+ICt9Owo+ICsKPiArc3RydWN0IHBzODY0MCB7Cj4g
KwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSBi
cmlkZ2U7Cj4gKwlzdHJ1Y3QgZWRpZCAqZWRpZDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2Ug
ZHNpOwo+ICsJc3RydWN0IGkyY19jbGllbnQgKnBhZ2VbOF07Cj4gKwlzdHJ1Y3QgaTJjX2NsaWVu
dCAqZGRjX2kyYzsKPiArCXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhIHN1cHBsaWVzWzJdOwo+
ICsJc3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvX3Jz
dF9uOwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb19zbHBfbjsKPiArCXN0cnVjdCBncGlvX2Rl
c2MgKmdwaW9fbW9kZV9zZWxfbjsKPiArCWJvb2wgZW5hYmxlZDsKPiArCj4gKwkvKiBmaXJtd2Fy
ZSBmaWxlIGluZm8gKi8KPiArCWJvb2wgaW5fZndfdXBkYXRlOwo+ICsJc3RydWN0IHBzODY0MF9p
bmZvIGluZm87Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgdTggZW5jX2N0cmxfY29kZVs2XSA9
IHsweGFhLCAweDU1LCAweDUwLCAweDQxLCAweDUyLCAweDQ0fTsKPiArCj4gK3N0YXRpYyBpbnQg
cHM4NjQwX3JlYWQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1OCAqZGF0YSwK
PiArCQkgICAgICAgdTE2IGRhdGFfbGVuKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IGky
Y19tc2cgbXNnc1tdID0gewo+ICsJCXsKPiArCQkgLmFkZHIgPSBjbGllbnQtPmFkZHIsCj4gKwkJ
IC5mbGFncyA9IDAsCj4gKwkJIC5sZW4gPSAxLAo+ICsJCSAuYnVmID0gJnJlZywKPiArCQkgfSwK
PiArCQl7Cj4gKwkJIC5hZGRyID0gY2xpZW50LT5hZGRyLAo+ICsJCSAuZmxhZ3MgPSBJMkNfTV9S
RCwKPiArCQkgLmxlbiA9IGRhdGFfbGVuLAo+ICsJCSAuYnVmID0gZGF0YSwKPiArCQkgfQo+ICsJ
fTsKPiArCj4gKwlyZXQgPSBpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCBtc2dzLCAyKTsK
PiArCj4gKwlpZiAocmV0ID09IDIpCj4gKwkJcmV0dXJuIDA7Cj4gKwlpZiAocmV0IDwgMCkKPiAr
CQlyZXR1cm4gcmV0Owo+ICsJZWxzZQo+ICsJCXJldHVybiAtRUlPOwo+ICt9Cj4gKwo+ICtzdGF0
aWMgaW50IHBzODY0MF93cml0ZV9ieXRlcyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCAq
ZGF0YSwKPiArCQkJICAgICAgdTE2IGRhdGFfbGVuKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3Ry
dWN0IGkyY19tc2cgbXNnOwo+ICsKPiArCW1zZy5hZGRyID0gY2xpZW50LT5hZGRyOwo+ICsJbXNn
LmZsYWdzID0gMDsKPiArCW1zZy5sZW4gPSBkYXRhX2xlbjsKPiArCW1zZy5idWYgPSBkYXRhOwo+
ICsKPiArCXJldCA9IGkyY190cmFuc2ZlcihjbGllbnQtPmFkYXB0ZXIsICZtc2csIDEpOwo+ICsJ
aWYgKHJldCA9PSAxKQo+ICsJCXJldHVybiAwOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJu
IHJldDsKPiArCWVsc2UKPiArCQlyZXR1cm4gLUVJTzsKPiArfQo+ICsKPiArc3RhdGljIGludCBw
czg2NDBfd3JpdGVfYnl0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcsICB1OCBk
YXRhKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IGkyY19tc2cgbXNnOwo+ICsJdTggYnVm
W10gPSB7cmVnLCBkYXRhfTsKPiArCj4gKwltc2cuYWRkciA9IGNsaWVudC0+YWRkcjsKPiArCW1z
Zy5mbGFncyA9IDA7Cj4gKwltc2cubGVuID0gc2l6ZW9mKGJ1Zik7Cj4gKwltc2cuYnVmID0gYnVm
Owo+ICsKPiArCXJldCA9IGkyY190cmFuc2ZlcihjbGllbnQtPmFkYXB0ZXIsICZtc2csIDEpOwo+
ICsJaWYgKHJldCA9PSAxKQo+ICsJCXJldHVybiAwOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0
dXJuIHJldDsKPiArCWVsc2UKPiArCQlyZXR1cm4gLUVJTzsKPiArfQo+ICsKPiArc3RhdGljIHZv
aWQgcHM4NjQwX2dldF9tY3VfZndfdmVyc2lvbihzdHJ1Y3QgcHM4NjQwICpwc19icmlkZ2UpCj4g
K3sKPiArCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwc19icmlkZ2UtPnBhZ2VbNV07Cj4g
Kwl1OCBmd192ZXJbMl07Cj4gKwo+ICsJcHM4NjQwX3JlYWQoY2xpZW50LCAweDQsIGZ3X3Zlciwg
Mik7Cj4gKwlwc19icmlkZ2UtPmluZm8udmVyc2lvbiA9IChmd192ZXJbMF0gPDwgOCkgfCBmd192
ZXJbMV07Cj4gKwo+ICsJRFJNX0lORk9fT05DRSgicHM4NjQwIHJvbSBmdyB2ZXJzaW9uICVkLiVk
XG4iLCBmd192ZXJbMF0sIGZ3X3ZlclsxXSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcHM4NjQw
X2JyaWRnZV9lbmFibGUoc3RydWN0IHBzODY0MCAqcHNfYnJpZGdlKQo+ICt7Cj4gKwlzdHJ1Y3Qg
aTJjX2NsaWVudCAqY2xpZW50ID0gcHNfYnJpZGdlLT5wYWdlWzNdOwo+ICsJdTggdmRvX2N0cmxf
YnVmWzNdID0ge1BBR0UzX1NFVF9BREQsIFZET19DVExfQURELCBWRE9fRU59Owo+ICsKPiArCXJl
dHVybiBwczg2NDBfd3JpdGVfYnl0ZXMoY2xpZW50LCB2ZG9fY3RybF9idWYsIDMpOwo+ICt9Cj4g
Kwo+ICtzdGF0aWMgaW50IHBzODY0MF9icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgcHM4NjQwICpwc19i
cmlkZ2UpCj4gK3sKPiArCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwc19icmlkZ2UtPnBh
Z2VbM107Cj4gKwl1OCB2ZG9fY3RybF9idWZbM10gPSB7UEFHRTNfU0VUX0FERCwgVkRPX0NUTF9B
REQsIFZET19ESVN9Owo+ICsKPiArCXJldHVybiBwczg2NDBfd3JpdGVfYnl0ZXMoY2xpZW50LCB2
ZG9fY3RybF9idWYsIDMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwczg2NDBfcHJlX2VuYWJs
ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4gKwlzdHJ1Y3QgcHM4NjQwICpwc19i
cmlkZ2UgPSBicmlkZ2VfdG9fcHM4NjQwKGJyaWRnZSk7Cj4gKwlzdHJ1Y3QgaTJjX2NsaWVudCAq
Y2xpZW50ID0gcHNfYnJpZGdlLT5wYWdlWzJdOwo+ICsJaW50IGVyciwgcmV0cnlfY250ID0gMDsK
PiArCXU4IHNldF92ZG9fZG9uZTsKPiArCj4gKwlpZiAocHNfYnJpZGdlLT5pbl9md191cGRhdGUp
Cj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChwc19icmlkZ2UtPmVuYWJsZWQpCj4gKwkJcmV0dXJu
Owo+ICsKPiArCWVyciA9IGRybV9wYW5lbF9wcmVwYXJlKHBzX2JyaWRnZS0+cGFuZWwpOwo+ICsJ
aWYgKGVyciA8IDApIHsKPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBwcmVwYXJlIHBhbmVsOiAl
ZFxuIiwgZXJyKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKHBz
X2JyaWRnZS0+Z3Bpb19zbHBfbiwgMSk7CgpJcyB0aGlzIHBhcnQ6Cgo+ICsJZ3Bpb2Rfc2V0X3Zh
bHVlKHBzX2JyaWRnZS0+Z3Bpb19yc3RfbiwgMCk7Cj4gKwo+ICsJZXJyID0gcmVndWxhdG9yX2J1
bGtfZW5hYmxlKEFSUkFZX1NJWkUocHNfYnJpZGdlLT5zdXBwbGllcyksCj4gKwkJCQkgICAgcHNf
YnJpZGdlLT5zdXBwbGllcyk7Cj4gKwlpZiAoZXJyIDwgMCkgewo+ICsJCURSTV9FUlJPUigiY2Fu
bm90IGVuYWJsZSByZWd1bGF0b3JzICVkXG4iLCBlcnIpOwo+ICsJCWdvdG8gZXJyX3BhbmVsX3Vu
cHJlcGFyZTsKPiArCX0KPiArCj4gKwl1c2xlZXBfcmFuZ2UoNTAwLCA3MDApOwo+ICsJZ3Bpb2Rf
c2V0X3ZhbHVlKHBzX2JyaWRnZS0+Z3Bpb19yc3RfbiwgMSk7CgouLiB1bnRpbCBoZXJlIGFuIGFz
c2VydGlvbiBvZiB0aGUgcmVzZXQgZm9yIDUwMCDCtXMgcGx1cyB3aGF0ZXZlciB0aGUKcmVndWxh
dG9yIGRlbGF5IGlzIChpZiBhbnkpPyBJdCBsb29rcyBsaWtlIHRoZSByZXNldCBhY3R1YWxseSBp
cyBhY3RpdmUKbG93LiBJZiBzbywgSSB0aGluayB0aGlzIGNvZGUgc2hvdWxkIHJhdGhlciBiZToK
CglncGlvZF9zZXRfdmFsdWUocHNfYnJpZGdlLT5ncGlvX3JzdF9uLCAxKTsKCXJlZ3VsYXRvcl9i
dWxrX2VuYWJsZSgpOwoJdXNsZWVwX3JhbmdlKCk7CglncGlvZF9zZXRfdmFsdWUocHNfYnJpZGdl
LT5ncGlvX3JzdF9uLCAwKTsKCkFuZCB0aGUgZGV2aWNlIHRyZWUgc2hvdWxkIGNvbnRhaW4gYSBy
ZXNldC1ncGlvcyBwcm9wZXJ0eSB3aXRoIHRoZQpHUElPX0FDVElWRV9MT1cgZmxhZyBzZXQuCgpT
YW1lIGdvZXMgZm9yIHNsZWVwIEdQSU8sIGlmIGl0IGlzIGFjdGl2ZSBsb3csIHRvby4KCmJlc3Qg
cmVnYXJkcwpQaGlsaXBwCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv
cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt
ZGV2ZWwK