From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vladimir Zapolskiy Subject: Re: [PATCH v2 2/2] drm: bridge/dw_hdmi: add dw hdmi i2c bus adapter support Date: Sun, 30 Aug 2015 01:37:26 +0300 Message-ID: <55E23426.9010306@mentor.com> References: <1431952341-20823-1-git-send-email-vladimir_zapolskiy@mentor.com> <1431952341-20823-3-git-send-email-vladimir_zapolskiy@mentor.com> <20150813225616.GA6912@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from relay1.mentorg.com (relay1.mentorg.com [192.94.38.131]) by gabe.freedesktop.org (Postfix) with ESMTPS id 113E56EA7B for ; Sat, 29 Aug 2015 15:37:58 -0700 (PDT) In-Reply-To: <20150813225616.GA6912@n2100.arm.linux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Russell King - ARM Linux Cc: Fabio Estevam , dri-devel@lists.freedesktop.org, Yakir Yang , Andy Yan List-Id: dri-devel@lists.freedesktop.org SGkgUnVzc2VsbCwKCk9uIDE0LjA4LjIwMTUgMDE6NTYsIFJ1c3NlbGwgS2luZyAtIEFSTSBMaW51 eCB3cm90ZToKPiBPbiBNb24sIE1heSAxOCwgMjAxNSBhdCAwMzozMjoyMVBNICswMzAwLCBWbGFk aW1pciBaYXBvbHNraXkgd3JvdGU6Cj4+ICsvKiBIRE1JX0lIX0kyQ01fU1RBVDAgYW5kIEhETUlf SUhfTVVURV9JMkNNX1NUQVQwIHJlZ2lzdGVyIGJpdHMgKi8KPj4gKyNkZWZpbmUgSERNSV9JSF9J MkNNX1NUQVQwX0VSUk9SCQlCSVQoMCkKPj4gKyNkZWZpbmUgSERNSV9JSF9JMkNNX1NUQVQwX0RP TkUJCQlCSVQoMSkKPj4gKwo+PiArLyogSERNSV9JMkNNX09QRVJBVElPTiByZWdpc3RlciBiaXRz ICovCj4+ICsjZGVmaW5lIEhETUlfSTJDTV9PUEVSQVRJT05fUkVBRAkJQklUKDApCj4+ICsjZGVm aW5lIEhETUlfSTJDTV9PUEVSQVRJT05fUkVBRF9FWFQJCUJJVCgxKQo+PiArI2RlZmluZSBIRE1J X0kyQ01fT1BFUkFUSU9OX1dSSVRFCQlCSVQoNCkKPj4gKwo+PiArLyogSERNSV9JMkNNX0lOVCBy ZWdpc3RlciBiaXRzICovCj4+ICsjZGVmaW5lIEhETUlfSTJDTV9JTlRfRE9ORV9NQVNLCQkJQklU KDIpCj4+ICsjZGVmaW5lIEhETUlfSTJDTV9JTlRfRE9ORV9QT0wJCQlCSVQoMykKPj4gKwo+PiAr LyogSERNSV9JMkNNX0NUTElOVCByZWdpc3RlciBiaXRzICovCj4+ICsjZGVmaW5lIEhETUlfSTJD TV9DVExJTlRfQVJCX01BU0sJCUJJVCgyKQo+PiArI2RlZmluZSBIRE1JX0kyQ01fQ1RMSU5UX0FS Ql9QT0wJCUJJVCgzKQo+PiArI2RlZmluZSBIRE1JX0kyQ01fQ1RMSU5UX05BQ19NQVNLCQlCSVQo NikKPj4gKyNkZWZpbmUgSERNSV9JMkNNX0NUTElOVF9OQUNfUE9MCQlCSVQoNykKPiAKPiBQbGVh c2UgcHV0IHRoZXNlIGRlZmluaXRpb25zIGluIGR3X2hkbWkuaAo+IAoKb2theS4KCj4+ICsKPj4g Kwo+PiAgI2RlZmluZSBIRE1JX0VESURfTEVOCQk1MTIKPj4gIAo+PiAgI2RlZmluZSBSR0IJCQkw Cj4+IEBAIC0xMDIsNiArMTI0LDE5IEBAIHN0cnVjdCBoZG1pX2RhdGFfaW5mbyB7Cj4+ICAJc3Ry dWN0IGhkbWlfdm1vZGUgdmlkZW9fbW9kZTsKPj4gIH07Cj4+ICAKPj4gK3N0cnVjdCBkd19oZG1p X2kyYyB7Cj4+ICsJc3RydWN0IGkyY19hZGFwdGVyCWFkYXA7Cj4+ICsKPj4gKwlzcGlubG9ja190 CQlsb2NrOwo+PiArCXN0cnVjdCBjb21wbGV0aW9uCWNtcF9yOwo+PiArCXN0cnVjdCBjb21wbGV0 aW9uCWNtcF93Owo+PiArCXU4CQkJc3RhdDsKPj4gKwo+PiArCXU4CQkJb3BlcmF0aW9uX3JlZzsK Pj4gKwl1OAkJCXNsYXZlX3JlZzsKPj4gKwlib29sCQkJaXNfcmVnYWRkcjsKPj4gK307Cj4+ICsK Pj4gIHN0cnVjdCBkd19oZG1pIHsKPj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7 Cj4+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+PiBAQCAtMTExLDYgKzE0Niw3IEBA IHN0cnVjdCBkd19oZG1pIHsKPj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+ICAJc3RydWN0IGNs ayAqaXNmcl9jbGs7Cj4+ICAJc3RydWN0IGNsayAqaWFoYl9jbGs7Cj4+ICsJc3RydWN0IGR3X2hk bWlfaTJjICppMmM7Cj4+ICAKPj4gIAlzdHJ1Y3QgaGRtaV9kYXRhX2luZm8gaGRtaV9kYXRhOwo+ PiAgCWNvbnN0IHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSAqcGxhdF9kYXRhOwo+PiBAQCAtMTc5 LDYgKzIxNSwyNDkgQEAgc3RhdGljIHZvaWQgaGRtaV9tYXNrX3dyaXRlYihzdHJ1Y3QgZHdfaGRt aSAqaGRtaSwgdTggZGF0YSwgdW5zaWduZWQgaW50IHJlZywKPj4gIAloZG1pX21vZGIoaGRtaSwg ZGF0YSA8PCBzaGlmdCwgbWFzaywgcmVnKTsKPj4gIH0KPj4gIAo+PiArc3RhdGljIHZvaWQgZHdf aGRtaV9pMmNfaW5pdChzdHJ1Y3QgZHdfaGRtaSAqaGRtaSkKPj4gK3sKPj4gKwl1bnNpZ25lZCBs b25nIGZsYWdzOwo+PiArCj4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmhkbWktPmkyYy0+bG9jaywg ZmxhZ3MpOwo+PiArCj4+ICsJLyogU2V0IEZhc3QgTW9kZSBzcGVlZCAqLwo+PiArCWhkbWlfd3Jp dGViKGhkbWksIDB4MGIsIEhETUlfSTJDTV9ESVYpOwo+PiArCj4+ICsJLyogU29mdHdhcmUgcmVz ZXQgKi8KPj4gKwloZG1pX3dyaXRlYihoZG1pLCAweDAwLCBIRE1JX0kyQ01fU09GVFJTVFopOwo+ PiArCj4+ICsJLyogU2V0IGRvbmUsIG5vdCBhY2tub3dsZWRnZWQgYW5kIGFyYml0cmF0aW9uIGlu dGVycnVwdCBwb2xhcml0aWVzICovCj4+ICsJaGRtaV93cml0ZWIoaGRtaSwgSERNSV9JMkNNX0lO VF9ET05FX1BPTCwgSERNSV9JMkNNX0lOVCk7Cj4+ICsJaGRtaV93cml0ZWIoaGRtaSwgSERNSV9J MkNNX0NUTElOVF9OQUNfUE9MIHwgSERNSV9JMkNNX0NUTElOVF9BUkJfUE9MLAo+PiArCQkgICAg SERNSV9JMkNNX0NUTElOVCk7Cj4+ICsKPj4gKwkvKiBDbGVhciBET05FIGFuZCBFUlJPUiBpbnRl cnJ1cHRzICovCj4+ICsJaGRtaV93cml0ZWIoaGRtaSwgSERNSV9JSF9JMkNNX1NUQVQwX0VSUk9S IHwgSERNSV9JSF9JMkNNX1NUQVQwX0RPTkUsCj4+ICsJCSAgICBIRE1JX0lIX0kyQ01fU1RBVDAp Owo+PiArCj4+ICsJLyogTXV0ZSBET05FIGFuZCBFUlJPUiBpbnRlcnJ1cHRzICovCj4+ICsJaGRt aV93cml0ZWIoaGRtaSwgSERNSV9JSF9JMkNNX1NUQVQwX0VSUk9SIHwgSERNSV9JSF9JMkNNX1NU QVQwX0RPTkUsCj4+ICsJCSAgICBIRE1JX0lIX01VVEVfSTJDTV9TVEFUMCk7Cj4+ICsKPj4gKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZoZG1pLT5pMmMtPmxvY2ssIGZsYWdzKTsKPiAKPiBXaGF0 IGV4YWN0bHkgaXMgdGhpcyBzcGlubG9jayBwcm90ZWN0aW5nIGFnYWluc3Qgd2l0aCB0aGUgYWJv dmUgY29kZT8KPiAKCk9uIHNlY29uZCBpbnNwZWN0aW9uIEkgZG9uJ3Qgc2VlIGEgbmVlZCBvZiBs b2NraW5nIGhlcmUuCgo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGR3X2hkbWlfaTJjX3JlYWQo c3RydWN0IGR3X2hkbWkgKmhkbWksCj4+ICsJCQkgICAgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQg bGVuZ3RoKQo+PiArewo+PiArCWludCBzdGF0Owo+PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ ICsJc3RydWN0IGR3X2hkbWlfaTJjICppMmMgPSBoZG1pLT5pMmM7Cj4+ICsKPj4gKwlzcGluX2xv Y2tfaXJxc2F2ZSgmaTJjLT5sb2NrLCBmbGFncyk7Cj4+ICsKPj4gKwlpMmMtPm9wZXJhdGlvbl9y ZWcgPSBIRE1JX0kyQ01fT1BFUkFUSU9OX1JFQUQ7Cj4+ICsKPj4gKwlpZiAoIWkyYy0+aXNfcmVn YWRkcikgewo+PiArCQlkZXZfZGJnKGhkbWktPmRldiwgInNldCByZWFkIHJlZ2lzdGVyIGFkZHJl c3MgdG8gMFxuIik7Cj4+ICsJCWkyYy0+c2xhdmVfcmVnID0gMHgwMDsKPj4gKwkJaTJjLT5pc19y ZWdhZGRyID0gdHJ1ZTsKPj4gKwl9Cj4+ICsKPj4gKwl3aGlsZSAobGVuZ3RoLS0pIHsKPj4gKwkJ cmVpbml0X2NvbXBsZXRpb24oJmkyYy0+Y21wX3IpOwo+IAo+IElmIHlvdSdyZSByZS1pbml0aWFs aXNpbmcgdGhlIGNvbXBsZXRpb24gb24gZXZlcnkgYnl0ZSwgd2h5IGRvIHlvdSBuZWVkCj4gc2Vw YXJhdGUgY29tcGxldGlvbnMgZm9yIHRoZSByZWFkIHBhdGggYW5kIHRoZSB3cml0ZSBwYXRoPwo+ IAo+IElmIGEgc2luZ2xlIGNvbXBsZXRpb24gY2FuIGJlIHVzZWQsIHlvdSB0aGVuIGRvbid0IGhh dmUgdG8gc3RvcmUgdGhlCj4gb3BlcmF0aW9uIHJlZ2lzdGVyIHZhbHVlIGluIHN0cnVjdCBkd19o ZG1pX2kyYyBlaXRoZXIuCgpDb3JyZWN0LCBJIGhhZCBvbmx5IG9uZSBjb21wbGV0aW9uIGFuZCBu byBpMmMtPm9wZXJhdGlvbl9yZWcgaW4gdjEsIHdpbGwKcmV2ZXJ0IHRoZSBhZGRlZCBjb21wbGV4 aXR5IHRvIG1hdGNoIHRoZSBwcmV2aW91cyB2ZXJzaW9uCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVsLzIwMTUtTWF5LzA4Mjg4Ny5odG1sCgo+PiArCQlpMmMt PnN0YXQgPSAwOwo+IAo+IFdoYXQgdXNlIGRvZXMgemVyb2luZyB0aGlzIGhhdmU/ICBZb3UgZG9u J3QgcmVhZCBpdCwgZXhjZXB0IGFmdGVyIHlvdSd2ZQo+IGhhZCBhIHN1Y2Nlc3NmdWwgY29tcGxl dGlvbiwgd2hpY2ggaW1wbGllcyB0aGF0IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBtdXN0Cj4gaGF2 ZSB3cml0dGVuIHRvIGl0LgoKSSBhZ3JlZSwgaXQgY2FuIGJlIHJlbW92ZWQuCgo+PiArCj4+ICsJ CWhkbWlfd3JpdGViKGhkbWksIGkyYy0+c2xhdmVfcmVnKyssIEhETUlfSTJDTV9BRERSRVNTKTsK Pj4gKwkJaGRtaV93cml0ZWIoaGRtaSwgaTJjLT5vcGVyYXRpb25fcmVnLCBIRE1JX0kyQ01fT1BF UkFUSU9OKTsKPj4gKwo+PiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpMmMtPmxvY2ssIGZs YWdzKTsKPj4gKwo+PiArCQlzdGF0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxl X3RpbWVvdXQoJmkyYy0+Y21wX3IsCj4+ICsJCQkJCQkJCSBIWiAvIDEwKTsKPj4gKwkJaWYgKCFz dGF0KQo+PiArCQkJcmV0dXJuIC1FVElNRURPVVQ7Cj4+ICsJCWlmIChzdGF0IDwgMCkKPj4gKwkJ CXJldHVybiBzdGF0Owo+IAo+IENhbiBhIEREQyByZWFkL3dyaXRlIHJlYWxseSBiZSBpbnRlcnJ1 cHRlZCBhbmQgcmVzdGFydGVkIGNvcnJlY3RseT8KPiBXb24ndCB0aGlzIHJlc3RhcnQgdGhlIHRy YW5zYWN0aW9uIGZyb20gdGhlIHZlcnkgYmVnaW5uaW5nPyAgSGF2ZQo+IHlvdSB2YWxpZGF0ZWQg dGhhdCBhbGwgY29kZSBwYXRocyBjYWxsaW5nIGludG8gaGVyZSBjYW4gY29wZSB3aXRoCj4gLUVS RVNUQVJUU1lTPwo+IAo+IElmIHlvdSBsb29rIGF0IGRybV9kb19wcm9iZV9kZGNfZWRpZCgpIGZv ciBleGFtcGxlLCBpdCB3aWxsIHJldHJ5Cj4gdGhlIHRyYW5zZmVyIGlmIHlvdSByZXR1cm4gLUVS RVNUQVJUU1lTIGhlcmUsIGJ1dCBhcyB0aGUgc2lnbmFsIGhhcwo+IG5vdCBiZWVuIGhhbmRsZWQs IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KCkgd2lsbAo+IGltbWVk aWF0ZWx5IHJldHVybiAtRVJFU1RBUlRTWVMgYWdhaW4uLi4gYW5kIGFnYWluLi4uIGFuZCBhZ2Fp bi4KCkZvciBtZSBpdCBzb3VuZHMgbGlrZSBhbiBpbmNvbXBsZXRlIGVycm9yIGNvbmRpdGlvbiBj aGVja2luZyBpbgpkcm1fZG9fcHJvYmVfZGRjX2VkaWQoKS4gVGhlcmUgYXJlIDUgcmV0cmllcyBk ZWZpbmVkIHRvIGNvbXBsZXRlIEkyQwp0cmFuc2ZlciwKCmkyY190cmFuc2ZlcigpIG1heSByZXR1 cm4gLUVPUE5PVFNVUFAsIC1FQUdBSU4gb3IgYW55CmFkYXAtPmFsZ28tPm1hc3Rlcl94ZmVyKCkg dmFsdWUuCgpJJ3ZlIGNoZWNrZWQgc291cmNlIGNvZGUgb2YgdGhlIGxhc3QgMTAgYWxwaGFiZXRp Y2FsbHkgc29ydGVkIEkyQyBidXMKZHJpdmVycyBmcm9tIGkyYy9idXNzZXMvKiB3aXRoIC5tYXN0 ZXJfeGZlciBpbiBhbGdvLCBJIGhhdmUgZm91bmQgdGhhdAp0aGUgZm9sbG93aW5nIGVycm9yIGNv ZGVzIG1heSBiZSByZXBvcnRlZDoKCmkyYy1zaXJmLmMJIC1FQUdBSU4gb24gdGltZW91dAppMmMt c3QuYwkgLUVUSU1FRE9VVCBvbiB0aW1lb3V0LCAtRUJVU1ksIC1FSU8sIC1FQUdBSU4KaTJjLXN0 dTMwMC5jCSAtRVJFU1RBUlRTWVMgKGludGVycnVwdGVkKSwgLUVUSU1FRE9VVCwgLUVJTlZBTCwg LUVJTwppMmMtdGVncmEuYwkgLUVUSU1FRE9VVCwgLUVCVVNZLCAtRUlOVkFMLCAtRVJFTU9URUlP LCAtRUlPCmkyYy10aW55LXVzYi5jCSAtRU5PTUVNLCAtRVJFTU9URUlPCmkyYy12aXBlcmJvYXJk LmMgLUVSRU1PVEVJTywgLUVQUk9UTwppMmMtd210LmMJIC1FVElNRURPVVQsIC1FSU8sIC1FQlVT WQppMmMteGlpYy5jCSAtRVRJTUVET1VULCAtRUlPLCAtRUJVU1kKaTJjLXhscDl4eC5jCSAtRVRJ TUVET1VULCAtRUlPCmkyYy14bHIuYwkgLUVUSU1FRE9VVCwgLUVJTwoKU2VlbXMgdGhhdCBvbmx5 IDEgb2YgMTAgYnVzIGRyaXZlcnMgaXMgc3VwcG9ydGVkIGNvcnJlY3RseSBieQpkcm1fZG9fcHJv YmVfZGRjX2VkaWQoKS4KCj4gRWFjaCB0aW1lIHdpbGwgcXVldWUgYW5vdGhlciBvcGVyYXRpb24g X3dpdGhvdXRfIHdhaXRpbmcgZm9yIHRoZQo+IGxhc3Qgb25lIHRvIGNvbXBsZXRlLgoKSSBhZ3Jl ZSBpdCBtYXkgaGFwcGVuLCB3aGF0IHdvdWxkIGJlIHRoZSBiZXN0IHdheSB0byBhdm9pZCB0aGlz IGtpbmQgb2YKcHJvYmxlbSBpbiB5b3VyIG9waW5pb24/IE1heSBiZSBjb252ZXJ0CndhaXRfZm9y X2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KCkgdG8Kd2FpdF9mb3JfY29tcGxldGlv bl90aW1lb3V0KCkgPwoKSW4gYW55IGNhc2UgSSB3b3VsZCBwcm9wb3NlIHRvIGFkZAoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9l ZGlkLmMKaW5kZXggNzA4N2RhMy4uOTNjYjFjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9lZGlkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKQEAgLTEyNDIsNiAr MTI0Miw5IEBAIGRybV9kb19wcm9iZV9kZGNfZWRpZCh2b2lkICpkYXRhLCB1OCAqYnVmLAp1bnNp Z25lZCBpbnQgYmxvY2ssIHNpemVfdCBsZW4pCiAJCQlEUk1fREVCVUdfS01TKCJkcm06IHNraXBw aW5nIG5vbi1leGlzdGVudCBhZGFwdGVyICVzXG4iLAogCQkJCQlhZGFwdGVyLT5uYW1lKTsKIAkJ CWJyZWFrOworCQl9IGVsc2UgaWYgKHJldCA8IDAgJiYgcmV0ICE9IC1FQUdBSU4pIHsKKwkJCURS TV9FUlJPUigiSTJDIHRyYW5zZmVyIGVycm9yOiAlZFxuIiwgcmV0KTsKKwkJCWJyZWFrOwogCQl9 CiAJfSB3aGlsZSAocmV0ICE9IHhmZXJzICYmIC0tcmV0cmllcyk7CgpPciBkdWUgdG8gdGhlIHN0 YXRpc3RpY3MgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIHVzZSAtRVRJTUVET1VUIGluc3RlYWQgb2YK LUVBR0FJTiBhYm92ZS4uLgoKPj4gKwo+PiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmaTJjLT5sb2Nr LCBmbGFncyk7Cj4+ICsKPj4gKwkJLyogQ2hlY2sgZm9yIGVycm9yIGNvbmRpdGlvbiBvbiB0aGUg YnVzICovCj4+ICsJCWlmIChpMmMtPnN0YXQgJiBIRE1JX0lIX0kyQ01fU1RBVDBfRVJST1IpIHsK Pj4gKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmkyYy0+bG9jaywgZmxhZ3MpOwo+PiArCQkJ cmV0dXJuIC1FSU87Cj4+ICsJCX0KPj4gKwo+PiArCQkqYnVmKysgPSBoZG1pX3JlYWRiKGhkbWks IEhETUlfSTJDTV9EQVRBSSk7Cj4+ICsJfQo+PiArCj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmaTJjLT5sb2NrLCBmbGFncyk7Cj4gCj4gSSdkIGJlIHZlcnkgc3VycHJpc2VkIGlmIHlvdSBu ZWVkIHRoZSBzcGlubG9ja3MgaW4gdGhlIGFib3ZlIGNvZGUuCj4gWW91J2xsIHNlZSB0aGUgdXBk YXRlIHRvIGkyYy0+c3RhdCBhZnRlciB0aGUgY29tcGxldGlvbiwgYmVjdWFzZQo+IHdhaXRfZm9y X2NvbXBsZXRpb24qKCkgaXMgaW4gdGhlIHNhbWUgY2xhc3MgYXMgdGhlIG90aGVyIGV2ZW50LXdh aXRpbmcKPiBmdW5jdGlvbnMsIGFuZCBjb250YWlucyBiYXJyaWVycyB3aGljaCB3aWxsIGVuc3Vy ZSB0aGF0IHlvdSB3aWxsIG5vdAo+IHJlYWQgaTJjLT5zdGF0IGJlZm9yZSB5b3Ugc2VlIHRoZSBj b21wbGV0aW9uIGV2ZW4gb24gU01QIHBsYXRmb3Jtcy4KCkkgaGF2ZSBubyBvYmplY3Rpb25zIGFu ZCBJIHdpbGwgcmVtb3ZlIHRoaXMgc3BpbmxvY2suCgpUaGUgaW5pdGlhbCByZWFzb24gZm9yIHRo ZSBzcGlubG9jayB3YXMgdG8gYXRvbWljYWxseSB1cGRhdGUgcGFpciBvZgpIRE1JX0kyQ01fQURE UkVTUyBhbmQgSERNSV9JMkNNX09QRVJBVElPTiByZWdpc3RlcnMsIGJ1dCBpZgpkd19oZG1pX2ky Y19yZWFkKCkgYW5kIGR3X2hkbWlfaTJjX3dyaXRlKCkgYXJlIHNlcmlhbGl6ZWQgKGUuZy4gYnkK c2VyaWFsaXppbmcgZHdfaGRtaV9pMmNfeGZlcigpKSB0aGUgc3BpbmxvY2sgaXMgbm90IG5lZWRl ZCB0aGVuLgoKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+IC4uLgo+PiArc3RhdGljIGludCBk d19oZG1pX2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCwKPj4gKwkJCSAgICBzdHJ1 Y3QgaTJjX21zZyAqbXNncywgaW50IG51bSkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHdfaGRtaSAqaGRt aSA9IGkyY19nZXRfYWRhcGRhdGEoYWRhcCk7Cj4+ICsJc3RydWN0IGR3X2hkbWlfaTJjICppMmMg PSBoZG1pLT5pMmM7Cj4+ICsKPj4gKwlpbnQgaSwgcmV0Owo+PiArCXU4IGFkZHI7Cj4+ICsJdW5z aWduZWQgbG9uZyBmbGFnczsKPj4gKwo+PiArCWRldl9kYmcoaGRtaS0+ZGV2LCAieGZlcjogbnVt OiAlZCwgYWRkcjogMHgleFxuIiwgbnVtLCBtc2dzWzBdLmFkZHIpOwo+PiArCj4+ICsJc3Bpbl9s b2NrX2lycXNhdmUoJmkyYy0+bG9jaywgZmxhZ3MpOwo+PiArCj4+ICsJaGRtaV93cml0ZWIoaGRt aSwgMHgwMCwgSERNSV9JSF9NVVRFX0kyQ01fU1RBVDApOwo+PiArCj4+ICsJLyogU2V0IHNsYXZl IGRldmljZSBhZGRyZXNzIGZyb20gdGhlIGZpcnN0IHRyYW5zYWN0aW9uICovCj4+ICsJYWRkciA9 IG1zZ3NbMF0uYWRkcjsKPj4gKwloZG1pX3dyaXRlYihoZG1pLCBhZGRyLCBIRE1JX0kyQ01fU0xB VkUpOwo+PiArCj4+ICsJLyogU2V0IHNsYXZlIGRldmljZSByZWdpc3RlciBhZGRyZXNzIG9uIHRy YW5zZmVyICovCj4+ICsJaTJjLT5pc19yZWdhZGRyID0gZmFsc2U7Cj4+ICsKPj4gKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZpMmMtPmxvY2ssIGZsYWdzKTsKPj4gKwo+PiArCWZvciAoaSA9IDA7 IGkgPCBudW07IGkrKykgewo+PiArCQlkZXZfZGJnKGhkbWktPmRldiwgInhmZXI6IG51bTogJWQv JWQsIGxlbjogJWQsIGZsYWdzOiAweCV4XG4iLAo+PiArCQkJaSArIDEsIG51bSwgbXNnc1tpXS5s ZW4sIG1zZ3NbaV0uZmxhZ3MpOwo+PiArCj4+ICsJCWlmIChtc2dzW2ldLmFkZHIgIT0gYWRkcikg ewo+PiArCQkJZGV2X3dhcm4oaGRtaS0+ZGV2LAo+PiArCQkJCSAidW5zdXBwb3J0ZWQgdHJhbnNh Y3Rpb24sIGNoYW5nZWQgc2xhdmUgYWRkcmVzc1xuIik7Cj4+ICsJCQlyZXQgPSAtRU9QTk9UU1VQ UDsKPj4gKwkJCWJyZWFrOwo+PiArCQl9Cj4gCj4gUHJvYmFibHkgb3VnaHQgdG8gdmFsaWRhdGUg dGhhdCBiZWZvcmUgc3RhcnRpbmcgYW55IHRyYW5zYWN0aW9uPwo+IAo+PiArCj4+ICsJCWlmICht c2dzW2ldLmxlbiA9PSAwKSB7Cj4+ICsJCQlkZXZfZGJnKGhkbWktPmRldiwKPj4gKwkJCQkgInVu c3VwcG9ydGVkIHRyYW5zYWN0aW9uICVkLyVkLCBubyBkYXRhXG4iLAo+PiArCQkJCSBpICsgMSwg bnVtKTsKPj4gKwkJCXJldCA9IC1FT1BOT1RTVVBQOwo+PiArCQkJYnJlYWs7Cj4+ICsJCX0KPiAK PiBEaXR0by4KCkRvIHlvdSBtZWFuIHNwbGl0IHRoZSBjeWNsZSB0byBsb29wIG92ZXIgbWVzc2Fn ZSBhcnJheSBmb3IgdmFsaWRhdGlvbgpwdXJwb3NlIGFuZCB0aGVuIGF0dGVtcHQgdG8gc2VuZCBt ZXNzYWdlcyBpZmYgYWxsIG9mIHRoZW0gYXJlIHZhbGlkPwpQcm9iYWJseSBpdCBtYWtlcyBzZW5z ZSwgc2luY2UgdGhlIGV4cGVjdGVkIGxlbmd0aCBvZiBhIG1lc3NhZ2UgYXJyYXkgaXMKc21hbGws IEknbGwgaW1wbGVtZW50IGl0LgoKSXQgaXMgd29ydGggdG8gbWVudGlvbiB0aGF0IHRoZSBtZXNz YWdlIGFycmF5IGZyb20KZHJtX2RvX3Byb2JlX2RkY19lZGlkKCkgZGlzY3Vzc2VkIGFib3ZlIHdv bid0IHBhc3MgdGhpcyB2YWxpZGF0aW9uLCBpZiBhCm1vbml0b3IgaGFzIG1vcmUgdGhhbiAxIGV4 dGVuc2lvbiBibG9ja3MsIHRoZSBudW1iZXIgaXMgdGFrZW4gZnJvbSB0aGUKRXh0ZW5zaW9uIEZs YWcgMHg3RS4gVGhpcyBjYXNlIHNob3VsZCBiZSBoYW5kbGVkIHNlcGFyYXRlbHkgdXNpbmcKdW5p bXBsZW1lbnRlZCBpbiBteSBjaGFuZ2UgIkkyQyBNYXN0ZXIgSW50ZXJmYWNlIEV4dGVuZGVkIFJl YWQgTW9kZSIsCnVuZm9ydHVuYXRlbHkgSSBkb24ndCBoYXZlIHN1Y2ggbW9uaXRvciB0byBhZGQv dGVzdCB0aGlzIGZlYXR1cmUgb2YgRFcKSERNSS4gUHJvYmFibHkgSSBjYW4gZmFrZSBhIG1vbml0 b3IgYW5kIHJlYWQgRURJRCB3aXRoIG11bHRpcGxlCkV4dGVuc2lvbiBCbG9ja3MgZnJvbSBBVDI0 IEVFUFJPTSwgYnV0IEkgd291bGQgcHJlZmVyIHRvIHBvc3Rwb25lIHRoaXMKY2hhbmdlLCBob3Bl ZnVsbHkgbW9zdCBvZiBIRE1JIG1vbml0b3JzIGFyZSBzdXBwb3J0ZWQgYnkgdGhpcyB2ZXJzaW9u LgoKPj4gKwo+PiArCQlpZiAobXNnc1tpXS5mbGFncyAmIEkyQ19NX1JEKQo+PiArCQkJcmV0ID0g ZHdfaGRtaV9pMmNfcmVhZChoZG1pLCBtc2dzW2ldLmJ1ZiwgbXNnc1tpXS5sZW4pOwo+PiArCQll bHNlCj4+ICsJCQlyZXQgPSBkd19oZG1pX2kyY193cml0ZShoZG1pLCBtc2dzW2ldLmJ1ZiwgbXNn c1tpXS5sZW4pOwo+PiArCj4+ICsJCWlmIChyZXQgPCAwKQo+PiArCQkJYnJlYWs7Cj4+ICsJfQo+ PiArCj4+ICsJaWYgKCFyZXQpCj4+ICsJCXJldCA9IG51bTsKPj4gKwo+PiArCXNwaW5fbG9ja19p cnFzYXZlKCZpMmMtPmxvY2ssIGZsYWdzKTsKPj4gKwo+PiArCS8qIE11dGUgRE9ORSBhbmQgRVJS T1IgaW50ZXJydXB0cyAqLwo+PiArCWhkbWlfd3JpdGViKGhkbWksIEhETUlfSUhfSTJDTV9TVEFU MF9FUlJPUiB8IEhETUlfSUhfSTJDTV9TVEFUMF9ET05FLAo+PiArCQkgICAgSERNSV9JSF9NVVRF X0kyQ01fU1RBVDApOwo+PiArCj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaTJjLT5sb2Nr LCBmbGFncyk7Cj4gCj4gV2hhdCBleGFjdGx5IGlzIHRoaXMgc3BpbmxvY2sgcHJvdGVjdGluZyB1 cyBmcm9tPyAgQSBzaW5nbGUgd3JpdGUgdG8gYQo+IHJlZ2lzdGVyIGlzIGFsd2F5cyBhdG9taWMu CgpXaWxsIHJlbW92ZSBpdC4KCk9uIHRoZSBvdGhlciBoYW5kIEkgdGhpbmsgb2YgYWRkaW5nIGEg bXV0ZXggdG8gc2VyaWFsaXplCmR3X2hkbWlfaTJjX3hmZXIoKSBjYWxscy4KCj4+ICsKPj4gKwly ZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgdTMyIGR3X2hkbWlfaTJjX2Z1bmMoc3Ry dWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+PiArewo+PiArCXJldHVybiBJMkNfRlVOQ19JMkMg fCBJMkNfRlVOQ19TTUJVU19FTVVMOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGkyY19h bGdvcml0aG0gZHdfaGRtaV9hbGdvcml0aG0gPSB7Cj4gCj4gY29uc3Q/Cj4gCgpDZXJ0YWlubHku Cgo+PiArCS5tYXN0ZXJfeGZlcgk9IGR3X2hkbWlfaTJjX3hmZXIsCj4+ICsJLmZ1bmN0aW9uYWxp dHkJPSBkd19oZG1pX2kyY19mdW5jLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBpMmNf YWRhcHRlciAqZHdfaGRtaV9pMmNfYWRhcHRlcihzdHJ1Y3QgZHdfaGRtaSAqaGRtaSkKPj4gK3sK Pj4gKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWhk bWktPmkyYyA9IGRldm1fa3phbGxvYyhoZG1pLT5kZXYsIHNpemVvZigqaGRtaS0+aTJjKSwgR0ZQ X0tFUk5FTCk7Cj4+ICsJaWYgKCFoZG1pLT5pMmMpCj4+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOwo+IAo+IEknZCBtdWNoIHByZWZlcjoKPiAJc3RydWN0IGR3X2hkbWlfaTJjICppMmM7Cj4g Cj4gCWkyYyA9IGRldm1fa3phbGxvYyguLi4pOwo+IAo+PiArCj4+ICsJc3Bpbl9sb2NrX2luaXQo JmhkbWktPmkyYy0+bG9jayk7Cj4+ICsJaW5pdF9jb21wbGV0aW9uKCZoZG1pLT5pMmMtPmNtcF9y KTsKPj4gKwlpbml0X2NvbXBsZXRpb24oJmhkbWktPmkyYy0+Y21wX3cpOwo+PiArCj4+ICsJYWRh cCA9ICZoZG1pLT5pMmMtPmFkYXA7Cj4+ICsJYWRhcC0+Y2xhc3MgPSBJMkNfQ0xBU1NfRERDOwo+ PiArCWFkYXAtPm93bmVyID0gVEhJU19NT0RVTEU7Cj4+ICsJYWRhcC0+ZGV2LnBhcmVudCA9IGhk bWktPmRldjsKPj4gKwlhZGFwLT5hbGdvID0gJmR3X2hkbWlfYWxnb3JpdGhtOwo+PiArCXN0cmxj cHkoYWRhcC0+bmFtZSwgIkRlc2lnbldhcmUgSERNSSIsIHNpemVvZihhZGFwLT5uYW1lKSk7Cj4+ ICsJaTJjX3NldF9hZGFwZGF0YShhZGFwLCBoZG1pKTsKPj4gKwo+PiArCXJldCA9IGkyY19hZGRf YWRhcHRlcihhZGFwKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCWRldl93YXJuKGhkbWktPmRldiwg ImNhbm5vdCBhZGQgJXMgSTJDIGFkYXB0ZXJcbiIsIGFkYXAtPm5hbWUpOwo+PiArCQlkZXZtX2tm cmVlKGhkbWktPmRldiwgaGRtaS0+aTJjKTsKPj4gKwkJaGRtaS0+aTJjID0gTlVMTDsKPj4gKwkJ cmV0dXJuIEVSUl9QVFIocmV0KTsKPj4gKwl9Cj4+ICsKPiAKPiAJaGRtaS0+aTJjID0gaTJjOwo+ IAo+IHJhdGhlciB0aGFuIGhhdmluZyB0byByZW1lbWJlciB0byBjbGVhciBvdXQgaGRtaS0+aTJj IGluIGVycm9yIHBhdGhzLgoKTm8gb2JqZWN0aW9ucywgdGhlIHJlc3VsdGluZyBjb2RlIHNob3Vs ZCBiZSBzbGlnaHRseSBzaW1wbGVyLgoKPj4gKwlkZXZfaW5mbyhoZG1pLT5kZXYsICJyZWdpc3Rl cmVkICVzIEkyQyBidXMgZHJpdmVyXG4iLCBhZGFwLT5uYW1lKTsKPj4gKwo+PiArCXJldHVybiBh ZGFwOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgdm9pZCBoZG1pX3NldF9jdHNfbihzdHJ1Y3QgZHdf aGRtaSAqaGRtaSwgdW5zaWduZWQgaW50IGN0cywKPj4gIAkJCSAgIHVuc2lnbmVkIGludCBuKQo+ PiAgewo+PiBAQCAtMTQ2NiwxNiArMTc0NSw0NyBAQCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyBk d19oZG1pX2JyaWRnZV9mdW5jcyA9IHsKPj4gIAkubW9kZV9maXh1cCA9IGR3X2hkbWlfYnJpZGdl X21vZGVfZml4dXAsCj4+ICB9Owo+PiAgCj4+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZHdfaGRtaV9p MmNfaXJxKHN0cnVjdCBkd19oZG1pICpoZG1pKQo+PiArewo+PiArCXN0cnVjdCBkd19oZG1pX2ky YyAqaTJjID0gaGRtaS0+aTJjOwo+PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsKPj4gKwlz cGluX2xvY2tfaXJxc2F2ZSgmaTJjLT5sb2NrLCBmbGFncyk7Cj4+ICsKPj4gKwlpMmMtPnN0YXQg PSBoZG1pX3JlYWRiKGhkbWksIEhETUlfSUhfSTJDTV9TVEFUMCk7Cj4+ICsJaWYgKCFpMmMtPnN0 YXQpIHsKPj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaTJjLT5sb2NrLCBmbGFncyk7Cj4+ ICsJCXJldHVybiBJUlFfTk9ORTsKPj4gKwl9Cj4+ICsKPj4gKwloZG1pX3dyaXRlYihoZG1pLCBp MmMtPnN0YXQsIEhETUlfSUhfSTJDTV9TVEFUMCk7Cj4+ICsKPj4gKwlpZiAoaTJjLT5vcGVyYXRp b25fcmVnICYgSERNSV9JMkNNX09QRVJBVElPTl9SRUFEKQo+PiArCQljb21wbGV0ZSgmaTJjLT5j bXBfcik7Cj4+ICsJZWxzZQo+PiArCQljb21wbGV0ZSgmaTJjLT5jbXBfdyk7Cj4+ICsKPj4gKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZpMmMtPmxvY2ssIGZsYWdzKTsKPiAKPiBBZ2Fpbiwgd2hh dCBmdW5jdGlvbiBkb2VzIHRoaXMgc3BpbmxvY2sgcGVyZm9ybT8gIFdvdWxkbid0Ogo+IAo+IAl1 bnNpZ25lZCBpbnQgc3RhdDsKPiAKPiAJc3RhdCA9IGhkbWlfcmVhZGIoaGRtaSwgSERNSV9JSF9J MkNNX1NUQVQwKTsKPiAJaWYgKHN0YXQgPT0gMCkKPiAJCXJldHVybiBJUlFfTk9ORTsKPiAKPiAJ LyogQ2xlYXIgaW50ZXJydXB0cyAqLwo+IAloZG1pX3dyaXRlYihoZG1pLCBzdGF0LCBIRE1JX0lI X0kyQ01fU1RBVDApOwo+IAo+IAlpMmMtPnN0YXQgPSBzdGF0Owo+IAo+IAlpZiAoaTJjLT5vcGVy YXRpb25fcmVnICYgSERNSV9JMkNNX09QRVJBVElPTl9SRUFEKQo+IAkJY29tcGxldGUoJmkyYy0+ Y21wX3IpOwo+IAllbHNlCj4gCQljb21wbGV0ZSgmaTJjLT5jbXBfdyk7Cj4gCj4gYmUgZmluZSwg b3IgbWF5YmUgd2l0aCB0aGUgc3BpbmxvY2sgYXJvdW5kIHRoZSBhc3NpZ25tZW50IHRvIGkyYy0+ c3RhdAo+IGFuZCB0aGlzIHBvaW50IGlmIHlvdSBuZWVkIHRoZSBhc3NpZ25tZW50IGFuZCBjb21w bGV0aW9uIHRvIGJlIGF0b21pYz8KPiAKPiBOb3RlIHRoYXQgdGhlIHdyaXRlIHRvICdpMmMtPnN0 YXQnIHdvdWxkIGJlIGF0b21pYyBpbiBpdHNlbGYgYW55d2F5Lgo+IAo+IEluIGFueSBjYXNlLCBj b21wbGV0ZSgpIGltcGxpZXMgYSB3cml0ZSBtZW1vcnkgYmFycmllciwgc28gZXZlbiBvbiBTTVAK PiBzeXN0ZW1zLCB0aGUgd3JpdGUgdG8gaTJjLT5zdGF0IHdpbGwgYmUgdmlzaWJsZSBiZWZvcmUg dGhlIGNvbXBsZXRpb24KPiAiY29tcGxldGVzIi4gIFNvLCBJIGRvbid0IHRoaW5rIHlvdSBuZWVk IGFueSBsb2NraW5nIGhlcmUuCgpOaWNlIHRyaWNrIHdpdGggYSBsb2NhbCB2YXJpYWJsZSwgSSBh Z3JlZSBpdCBpcyBzYWZlIHRvIHJlbW92ZSB0aGUKc3BpbmxvY2sgZnJvbSB0aGUgaGFuZGxlci4K Cj4gVGhhbmtzLgo+IAoKVGhhbmsgeW91IGZvciByZXZpZXcsIEknbGwgc2VuZCB0aGUgdXBkYXRl cy4gUGxlYXNlIGNoZWNrIG15IHByb3Bvc2FscwpyZWdhcmRpbmcgZHJtX2RvX3Byb2JlX2RkY19l ZGlkKCksCgotLQpXaXRoIGJlc3Qgd2lzaGVzLApWbGFkaW1pcgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=