From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v5 4/7] drm/bridge/synopsys: Add MIPI DSI host controller bridge Date: Mon, 17 Jul 2017 13:36:57 +0530 Message-ID: <136ab12b-adfc-7acf-c3a5-3efc680eddbd@codeaurora.org> References: <1499071287-10414-1-git-send-email-philippe.cornu@st.com> <1499071287-10414-5-git-send-email-philippe.cornu@st.com> <0145b068-c28e-3664-86ae-0561c1da8eb5@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Philippe CORNU , Alexandre TORGUE , Rob Herring , Arnd Bergmann , Eric Anholt , Andrzej Hajda Cc: Mark Rutland , Neil Armstrong , "dri-devel@lists.freedesktop.org" , Thierry Reding , Chris Zhong , Mickael REULIER , Russell King , Fabien DESSENNE , Xinwei Kong , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , Chen Feng , Vincent ABRIOU , Ludovic BARRE , Yannick FERTRE , Maxime Coquelin , "zourongrong@gmail.com" , Gabriel FERNANDEZ List-Id: devicetree@vger.kernel.org CgpPbiAwNy8xNy8yMDE3IDAxOjI0IFBNLCBQaGlsaXBwZSBDT1JOVSB3cm90ZToKPiAKPiAKPiBP biAwNy8xMi8yMDE3IDA4OjA1IEFNLCBBcmNoaXQgVGFuZWphIHdyb3RlOgo+Pgo+Pgo+PiBPbiAw Ny8wMy8yMDE3IDAyOjExIFBNLCBQaGlsaXBwZSBDT1JOVSB3cm90ZToKPj4+IEFkZCBhIFN5bm9w c3lzIERlc2lnbndhcmUgTUlQSSBEU0kgaG9zdCBEUk0gYnJpZGdlIGRyaXZlciwgYmFzZWQgb24g dGhlCj4+PiBSb2NrY2hpcCB2ZXJzaW9uIGZyb20gcm9ja2NoaXAvZHctbWlwaS1kc2kuYyB3aXRo IHBoeSAmIGJyaWRnZSBBUElzLgo+Pj4KPj4KPj4gVGhlIHBhdGNoIGxvb2tzIGdvb2Qgbm93LiBP bmUgdGhpbmcgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkIGlzIHRvIG1ha2UKPj4gZHJtX2JyaWRn ZV9hZGQoKSBub3QgcmV0dXJuIGFueXRoaW5nLgo+IAo+IEhpIEFyY2hpdCBhbmQgbWFueSB0aGFu a3MgZm9yIHlvdXIgcmV2aWV3Lgo+IEkgaGF2ZSBqdXN0IHNlbnQgYSB2NiB2ZXJzaW9uIGFkZGlu ZyB0aGUgZHJtX2JyaWRnZV9hZGQoKSBzbWFsbCBmaXguCj4gCj4+Cj4+IFRoZSBsYXRlciBwYXRj aGVzIGluIHRoZSBzZXJpZXMgd291bGQgYmUgZGVwZW5kZW50IG9uIHRoaXMgcGF0Y2gsIHJpZ2h0 Pwo+IHllcwo+IAo+PiBTaW5jZSB0aGUgU1QgcGF0Y2hlcyBnbyB2aWEgZHJtLW1pc2MgdG9vLCB3 ZSBjb3VsZCBlaXRoZXIgcHVzaCBhbGwgdGhlc2UKPj4gdG9nZXRoZXIsIG9yIEkgY291bGQgcHVz aCB0aGUgYnJpZGdlIGRyaXZlciB0byBkcm0tbWlzYy1uZXh0LCBhbmQgdGhlIFNUCj4+IHBhdGNo ZXMgY2FuIGJlIHB1c2hlZCBhZnRlci4gQW55IHByZWZlcmVuY2U/IElmIG5vdCwgSSdsbCBkbyB0 aGUgbGF0dGVyLgo+Pgo+PiBBcmNoaXQKPj4KPiBUaGUgdjYgdmVyc2lvbiBoYXMgYmVlbiB0ZXN0 ZWQgb24gdG9kYXkgZHJtLW1pc2MtbmV4dCBicmFuY2ggKGZldwo+IG1pbnV0ZXMgYWdvKS4gWW91 IGNhbiBwdXNoIHRoZSBlbnRpcmUgc2VyaWUgYXMgaXQgaXMgbWF5YmUgdGhlIG1vc3QKPiBzaW1w bGUgc29sdXRpb24uIE9yIHlvdSBjYW4gcHVzaCAidXAgdG8gdGhlIHN5bm9wc3lzIHBhcnQiIGFu ZCBCZW5qYW1pbgo+ICYgSSB3aWxsIHB1c2ggdGhlIHJlbWFpbmluZyBwYXJ0LiBJbiBmYWN0LCBp dCBpcyB1cCB0byB5b3UsIHNpbXBseSB0ZWxsCj4gdXMgeW91ciBwcmVmZXJyZWQgYXBwcm9hY2gu CgpUaGFua3MuIEknbGwgcHVzaCBwYXRjaGVzIDEtNCBhZnRlciBzb21lIGJ1aWxkIHRlc3Rpbmcu IFlvdSBjYW4gcHVzaCB0aGUgcmVzdAphZnRlcndhcmRzLgoKVGhhbmtzLApBcmNoaXQKCj4gCj4g T25jZSBhZ2FpbiwgbWFueSB0aGFua3MsCj4gUGhpbGlwcGUKPiAKPiAKPj4+IFNpZ25lZC1vZmYt Ynk6IFBoaWxpcHBlIENPUk5VIDxwaGlsaXBwZS5jb3JudUBzdC5jb20+Cj4+PiAtLS0KPj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvS2NvbmZpZyAgICAgICB8ICAgNiArCj4+ PiAgICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL01ha2VmaWxlICAgICAgfCAgIDIg Kwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jIHwg OTc5Cj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gICAgaW5jbHVkZS9kcm0vYnJp ZGdlL2R3X21pcGlfZHNpLmggICAgICAgICAgICAgIHwgIDM5ICsKPj4+ICAgIDQgZmlsZXMgY2hh bmdlZCwgMTAyNiBpbnNlcnRpb25zKCspCj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jCj4+PiAgICBjcmVhdGUgbW9k ZSAxMDA2NDQgaW5jbHVkZS9kcm0vYnJpZGdlL2R3X21pcGlfZHNpLmgKPj4+Cj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9LY29uZmlnCj4+PiBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvS2NvbmZpZwo+Pj4gaW5kZXggNDBkMjgyNy4uZjAw ZWUyNiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvS2Nv bmZpZwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9LY29uZmlnCj4+ PiBAQCAtMjEsMyArMjEsOSBAQCBjb25maWcgRFJNX0RXX0hETUlfSTJTX0FVRElPCj4+PiAgICAg ICAgaGVscAo+Pj4gICAgICAgICAgU3VwcG9ydCB0aGUgSTJTIEF1ZGlvIGludGVyZmFjZSB3aGlj aCBpcyBwYXJ0IG9mIHRoZSBTeW5vcHN5cwo+Pj4gICAgICAgICAgRGVzaWdud2FyZSBIRE1JIGJs b2NrLgo+Pj4gKwo+Pj4gK2NvbmZpZyBEUk1fRFdfTUlQSV9EU0kKPj4+ICsgICAgdHJpc3RhdGUK Pj4+ICsgICAgc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4+PiArICAgIHNlbGVjdCBEUk1fTUlQSV9E U0kKPj4+ICsgICAgc2VsZWN0IERSTV9QQU5FTF9CUklER0UKPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL01ha2VmaWxlCj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2Uvc3lub3BzeXMvTWFrZWZpbGUKPj4+IGluZGV4IDE3YWE3YTYuLjVmNTdkMzYgMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL01ha2VmaWxlCj4+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL01ha2VmaWxlCj4+PiBAQCAt MywzICszLDUgQEAKPj4+ICAgIG9iai0kKENPTkZJR19EUk1fRFdfSERNSSkgKz0gZHctaGRtaS5v Cj4+PiAgICBvYmotJChDT05GSUdfRFJNX0RXX0hETUlfQUhCX0FVRElPKSArPSBkdy1oZG1pLWFo Yi1hdWRpby5vCj4+PiAgICBvYmotJChDT05GSUdfRFJNX0RXX0hETUlfSTJTX0FVRElPKSArPSBk dy1oZG1pLWkycy1hdWRpby5vCj4+PiArCj4+PiArb2JqLSQoQ09ORklHX0RSTV9EV19NSVBJX0RT SSkgKz0gZHctbWlwaS1kc2kubwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2Uvc3lub3BzeXMvZHctbWlwaS1kc2kuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5 bm9wc3lzL2R3LW1pcGktZHNpLmMKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAw MDAwMDAwLi40MDYwMDBlCj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL3N5bm9wc3lzL2R3LW1pcGktZHNpLmMKPj4+IEBAIC0wLDAgKzEsOTc5IEBACj4+ PiArLyoKPj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTYsIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJv bmljcyBDby4sIEx0ZAo+Pj4gKyAqIENvcHlyaWdodCAoQykgU1RNaWNyb2VsZWN0cm9uaWNzIFNB IDIwMTcKPj4+ICsgKgo+Pj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4+PiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPj4+ ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgo+Pj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Cj4+PiArICoKPj4+ICsgKiBNb2RpZmllZCBieSBQaGlsaXBwZSBDb3JudSA8cGhpbGlwcGUuY29y bnVAc3QuY29tPgo+Pj4gKyAqIFRoaXMgZ2VuZXJpYyBTeW5vcHN5cyBEZXNpZ25XYXJlIE1JUEkg RFNJIGhvc3QgZHJpdmVyIGlzIGJhc2VkIG9uIHRoZQo+Pj4gKyAqIFJvY2tjaGlwIHZlcnNpb24g ZnJvbSByb2NrY2hpcC9kdy1taXBpLWRzaS5jIHdpdGggcGh5ICYgYnJpZGdlIEFQSXMuCj4+PiAr ICovCj4+PiArCj4+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51 eC9jb21wb25lbnQuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+Cj4+PiArI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPj4+ ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZXNl dC5oPgo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0 b21pY19oZWxwZXIuaD4KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9icmlkZ2UuaD4KPj4+ICsjaW5j bHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIu aD4KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgo+Pj4gKyNpbmNsdWRlIDxkcm0v ZHJtX29mLmg+Cj4+PiArI2luY2x1ZGUgPGRybS9icmlkZ2UvZHdfbWlwaV9kc2kuaD4KPj4+ICsj aW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+Cj4+PiArCj4+PiArI2RlZmluZSBEU0lfVkVS U0lPTiAgICAgICAgICAgIDB4MDAKPj4+ICsjZGVmaW5lIERTSV9QV1JfVVAgICAgICAgICAgICAw eDA0Cj4+PiArI2RlZmluZSBSRVNFVCAgICAgICAgICAgICAgICAwCj4+PiArI2RlZmluZSBQT1dF UlVQICAgICAgICAgICAgICAgIEJJVCgwKQo+Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJX0NMS01HUl9D RkcgICAgICAgICAgICAweDA4Cj4+PiArI2RlZmluZSBUT19DTEtfRElWSURTSU9OKGRpdikgICAg ICAgICgoKGRpdikgJiAweGZmKSA8PCA4KQo+Pj4gKyNkZWZpbmUgVFhfRVNDX0NMS19ESVZJRFNJ T04oZGl2KSAgICAoKChkaXYpICYgMHhmZikgPDwgMCkKPj4+ICsKPj4+ICsjZGVmaW5lIERTSV9E UElfVkNJRCAgICAgICAgICAgIDB4MGMKPj4+ICsjZGVmaW5lIERQSV9WSUQodmlkKSAgICAgICAg ICAgICgoKHZpZCkgJiAweDMpIDw8IDApCj4+PiArCj4+PiArI2RlZmluZSBEU0lfRFBJX0NPTE9S X0NPRElORyAgICAgICAgMHgxMAo+Pj4gKyNkZWZpbmUgRU4xOF9MT09TRUxZICAgICAgICAgICAg QklUKDgpCj4+PiArI2RlZmluZSBEUElfQ09MT1JfQ09ESU5HXzE2QklUXzEgICAgMHgwCj4+PiAr I2RlZmluZSBEUElfQ09MT1JfQ09ESU5HXzE2QklUXzIgICAgMHgxCj4+PiArI2RlZmluZSBEUElf Q09MT1JfQ09ESU5HXzE2QklUXzMgICAgMHgyCj4+PiArI2RlZmluZSBEUElfQ09MT1JfQ09ESU5H XzE4QklUXzEgICAgMHgzCj4+PiArI2RlZmluZSBEUElfQ09MT1JfQ09ESU5HXzE4QklUXzIgICAg MHg0Cj4+PiArI2RlZmluZSBEUElfQ09MT1JfQ09ESU5HXzI0QklUICAgICAgICAweDUKPj4+ICsK Pj4+ICsjZGVmaW5lIERTSV9EUElfQ0ZHX1BPTCAgICAgICAgICAgIDB4MTQKPj4+ICsjZGVmaW5l IENPTE9STV9BQ1RJVkVfTE9XICAgICAgICBCSVQoNCkKPj4+ICsjZGVmaW5lIFNIVVREX0FDVElW RV9MT1cgICAgICAgIEJJVCgzKQo+Pj4gKyNkZWZpbmUgSFNZTkNfQUNUSVZFX0xPVyAgICAgICAg QklUKDIpCj4+PiArI2RlZmluZSBWU1lOQ19BQ1RJVkVfTE9XICAgICAgICBCSVQoMSkKPj4+ICsj ZGVmaW5lIERBVEFFTl9BQ1RJVkVfTE9XICAgICAgICBCSVQoMCkKPj4+ICsKPj4+ICsjZGVmaW5l IERTSV9EUElfTFBfQ01EX1RJTSAgICAgICAgMHgxOAo+Pj4gKyNkZWZpbmUgT1VUVkFDVF9MUENN RF9USU1FKHApICAgICAgICAoKChwKSAmIDB4ZmYpIDw8IDE2KQo+Pj4gKyNkZWZpbmUgSU5WQUNU X0xQQ01EX1RJTUUocCkgICAgICAgICgocCkgJiAweGZmKQo+Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJ X0RCSV9DRkcgICAgICAgICAgICAweDIwCj4+PiArI2RlZmluZSBEU0lfREJJX0NNRFNJWkUgICAg ICAgICAgICAweDI4Cj4+PiArCj4+PiArI2RlZmluZSBEU0lfUENLSERMX0NGRyAgICAgICAgICAg IDB4MmMKPj4+ICsjZGVmaW5lIEVOX0NSQ19SWCAgICAgICAgICAgIEJJVCg0KQo+Pj4gKyNkZWZp bmUgRU5fRUNDX1JYICAgICAgICAgICAgQklUKDMpCj4+PiArI2RlZmluZSBFTl9CVEEgICAgICAg ICAgICAgICAgQklUKDIpCj4+PiArI2RlZmluZSBFTl9FT1RQX1JYICAgICAgICAgICAgQklUKDEp Cj4+PiArI2RlZmluZSBFTl9FT1RQX1RYICAgICAgICAgICAgQklUKDApCj4+PiArCj4+PiArI2Rl ZmluZSBEU0lfTU9ERV9DRkcgICAgICAgICAgICAweDM0Cj4+PiArI2RlZmluZSBFTkFCTEVfVklE RU9fTU9ERSAgICAgICAgMAo+Pj4gKyNkZWZpbmUgRU5BQkxFX0NNRF9NT0RFICAgICAgICAgICAg QklUKDApCj4+PiArCj4+PiArI2RlZmluZSBEU0lfVklEX01PREVfQ0ZHICAgICAgICAweDM4Cj4+ PiArI2RlZmluZSBGUkFNRV9CVEFfQUNLICAgICAgICAgICAgQklUKDE0KQo+Pj4gKyNkZWZpbmUg RU5BQkxFX0xPV19QT1dFUiAgICAgICAgKDB4M2YgPDwgOCkKPj4+ICsjZGVmaW5lIEVOQUJMRV9M T1dfUE9XRVJfTUFTSyAgICAgICAgKDB4M2YgPDwgOCkKPj4+ICsjZGVmaW5lIFZJRF9NT0RFX1RZ UEVfTk9OX0JVUlNUX1NZTkNfUFVMU0VTICAgIDB4MAo+Pj4gKyNkZWZpbmUgVklEX01PREVfVFlQ RV9OT05fQlVSU1RfU1lOQ19FVkVOVFMgICAgMHgxCj4+PiArI2RlZmluZSBWSURfTU9ERV9UWVBF X0JVUlNUICAgICAgICAgICAgMHgyCj4+PiArI2RlZmluZSBWSURfTU9ERV9UWVBFX01BU0sgICAg ICAgICAgICAweDMKPj4+ICsKPj4+ICsjZGVmaW5lIERTSV9WSURfUEtUX1NJWkUgICAgICAgIDB4 M2MKPj4+ICsjZGVmaW5lIFZJRF9QS1RfU0laRShwKSAgICAgICAgICAgICgoKHApICYgMHgzZmZm KSA8PCAwKQo+Pj4gKyNkZWZpbmUgVklEX1BLVF9NQVhfU0laRSAgICAgICAgMHgzZmZmCj4+PiAr Cj4+PiArI2RlZmluZSBEU0lfVklEX0hTQV9USU1FICAgICAgICAweDQ4Cj4+PiArI2RlZmluZSBE U0lfVklEX0hCUF9USU1FICAgICAgICAweDRjCj4+PiArI2RlZmluZSBEU0lfVklEX0hMSU5FX1RJ TUUgICAgICAgIDB4NTAKPj4+ICsjZGVmaW5lIERTSV9WSURfVlNBX0xJTkVTICAgICAgICAweDU0 Cj4+PiArI2RlZmluZSBEU0lfVklEX1ZCUF9MSU5FUyAgICAgICAgMHg1OAo+Pj4gKyNkZWZpbmUg RFNJX1ZJRF9WRlBfTElORVMgICAgICAgIDB4NWMKPj4+ICsjZGVmaW5lIERTSV9WSURfVkFDVElW RV9MSU5FUyAgICAgICAgMHg2MAo+Pj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX0NGRyAgICAgICAg MHg2OAo+Pj4gKyNkZWZpbmUgTUFYX1JEX1BLVF9TSVpFX0xQICAgICAgICBCSVQoMjQpCj4+PiAr I2RlZmluZSBEQ1NfTFdfVFhfTFAgICAgICAgICAgICBCSVQoMTkpCj4+PiArI2RlZmluZSBEQ1Nf U1JfMFBfVFhfTFAgICAgICAgICAgICBCSVQoMTgpCj4+PiArI2RlZmluZSBEQ1NfU1dfMVBfVFhf TFAgICAgICAgICAgICBCSVQoMTcpCj4+PiArI2RlZmluZSBEQ1NfU1dfMFBfVFhfTFAgICAgICAg ICAgICBCSVQoMTYpCj4+PiArI2RlZmluZSBHRU5fTFdfVFhfTFAgICAgICAgICAgICBCSVQoMTQp Cj4+PiArI2RlZmluZSBHRU5fU1JfMlBfVFhfTFAgICAgICAgICAgICBCSVQoMTMpCj4+PiArI2Rl ZmluZSBHRU5fU1JfMVBfVFhfTFAgICAgICAgICAgICBCSVQoMTIpCj4+PiArI2RlZmluZSBHRU5f U1JfMFBfVFhfTFAgICAgICAgICAgICBCSVQoMTEpCj4+PiArI2RlZmluZSBHRU5fU1dfMlBfVFhf TFAgICAgICAgICAgICBCSVQoMTApCj4+PiArI2RlZmluZSBHRU5fU1dfMVBfVFhfTFAgICAgICAg ICAgICBCSVQoOSkKPj4+ICsjZGVmaW5lIEdFTl9TV18wUF9UWF9MUCAgICAgICAgICAgIEJJVCg4 KQo+Pj4gKyNkZWZpbmUgRU5fQUNLX1JRU1QgICAgICAgICAgICBCSVQoMSkKPj4+ICsjZGVmaW5l IEVOX1RFQVJfRlggICAgICAgICAgICBCSVQoMCkKPj4+ICsKPj4+ICsjZGVmaW5lIENNRF9NT0RF X0FMTF9MUCAgICAgICAgICAgIChNQVhfUkRfUEtUX1NJWkVfTFAgfCBcCj4+PiArICAgICAgICAg ICAgICAgICAgICAgRENTX0xXX1RYX0xQIHwgXAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIERD U19TUl8wUF9UWF9MUCB8IFwKPj4+ICsgICAgICAgICAgICAgICAgICAgICBEQ1NfU1dfMVBfVFhf TFAgfCBcCj4+PiArICAgICAgICAgICAgICAgICAgICAgRENTX1NXXzBQX1RYX0xQIHwgXAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgIEdFTl9MV19UWF9MUCB8IFwKPj4+ICsgICAgICAgICAgICAg ICAgICAgICBHRU5fU1JfMlBfVFhfTFAgfCBcCj4+PiArICAgICAgICAgICAgICAgICAgICAgR0VO X1NSXzFQX1RYX0xQIHwgXAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIEdFTl9TUl8wUF9UWF9M UCB8IFwKPj4+ICsgICAgICAgICAgICAgICAgICAgICBHRU5fU1dfMlBfVFhfTFAgfCBcCj4+PiAr ICAgICAgICAgICAgICAgICAgICAgR0VOX1NXXzFQX1RYX0xQIHwgXAo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgIEdFTl9TV18wUF9UWF9MUCkKPj4+ICsKPj4+ICsjZGVmaW5lIERTSV9HRU5fSERS ICAgICAgICAgICAgMHg2Ywo+Pj4gKyNkZWZpbmUgR0VOX0hEQVRBKGRhdGEpICAgICAgICAgICAg KCgoZGF0YSkgJiAweGZmZmYpIDw8IDgpCj4+PiArI2RlZmluZSBHRU5fSERBVEFfTUFTSyAgICAg ICAgICAgICgweGZmZmYgPDwgOCkKPj4+ICsjZGVmaW5lIEdFTl9IVFlQRSh0eXBlKSAgICAgICAg ICAgICgoKHR5cGUpICYgMHhmZikgPDwgMCkKPj4+ICsjZGVmaW5lIEdFTl9IVFlQRV9NQVNLICAg ICAgICAgICAgMHhmZgo+Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJX0dFTl9QTERfREFUQSAgICAgICAg MHg3MAo+Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJX0NNRF9QS1RfU1RBVFVTICAgICAgICAweDc0Cj4+ PiArI2RlZmluZSBHRU5fQ01EX0VNUFRZICAgICAgICAgICAgQklUKDApCj4+PiArI2RlZmluZSBH RU5fQ01EX0ZVTEwgICAgICAgICAgICBCSVQoMSkKPj4+ICsjZGVmaW5lIEdFTl9QTERfV19FTVBU WSAgICAgICAgICAgIEJJVCgyKQo+Pj4gKyNkZWZpbmUgR0VOX1BMRF9XX0ZVTEwgICAgICAgICAg ICBCSVQoMykKPj4+ICsjZGVmaW5lIEdFTl9QTERfUl9FTVBUWSAgICAgICAgICAgIEJJVCg0KQo+ Pj4gKyNkZWZpbmUgR0VOX1BMRF9SX0ZVTEwgICAgICAgICAgICBCSVQoNSkKPj4+ICsjZGVmaW5l IEdFTl9SRF9DTURfQlVTWSAgICAgICAgICAgIEJJVCg2KQo+Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJ X1RPX0NOVF9DRkcgICAgICAgICAgICAweDc4Cj4+PiArI2RlZmluZSBIU1RYX1RPX0NOVChwKSAg ICAgICAgICAgICgoKHApICYgMHhmZmZmKSA8PCAxNikKPj4+ICsjZGVmaW5lIExQUlhfVE9fQ05U KHApICAgICAgICAgICAgKChwKSAmIDB4ZmZmZikKPj4+ICsKPj4+ICsjZGVmaW5lIERTSV9CVEFf VE9fQ05UICAgICAgICAgICAgMHg4Ywo+Pj4gKyNkZWZpbmUgRFNJX0xQQ0xLX0NUUkwgICAgICAg ICAgICAweDk0Cj4+PiArI2RlZmluZSBBVVRPX0NMS0xBTkVfQ1RSTCAgICAgICAgQklUKDEpCj4+ PiArI2RlZmluZSBQSFlfVFhSRVFVRVNUQ0xLSFMgICAgICAgIEJJVCgwKQo+Pj4gKwo+Pj4gKyNk ZWZpbmUgRFNJX1BIWV9UTVJfTFBDTEtfQ0ZHICAgICAgICAweDk4Cj4+PiArI2RlZmluZSBQSFlf Q0xLSFMyTFBfVElNRShsYmNjKSAgICAgICAgKCgobGJjYykgJiAweDNmZikgPDwgMTYpCj4+PiAr I2RlZmluZSBQSFlfQ0xLTFAySFNfVElNRShsYmNjKSAgICAgICAgKChsYmNjKSAmIDB4M2ZmKQo+ Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJX1BIWV9UTVJfQ0ZHICAgICAgICAgICAgMHg5Ywo+Pj4gKyNk ZWZpbmUgUEhZX0hTMkxQX1RJTUUobGJjYykgICAgICAgICgoKGxiY2MpICYgMHhmZikgPDwgMjQp Cj4+PiArI2RlZmluZSBQSFlfTFAySFNfVElNRShsYmNjKSAgICAgICAgKCgobGJjYykgJiAweGZm KSA8PCAxNikKPj4+ICsjZGVmaW5lIE1BWF9SRF9USU1FKGxiY2MpICAgICAgICAoKGxiY2MpICYg MHg3ZmZmKQo+Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJX1BIWV9SU1RaICAgICAgICAgICAgMHhhMAo+ Pj4gKyNkZWZpbmUgUEhZX0RJU0ZPUkNFUExMICAgICAgICAgICAgMAo+Pj4gKyNkZWZpbmUgUEhZ X0VORk9SQ0VQTEwgICAgICAgICAgICBCSVQoMykKPj4+ICsjZGVmaW5lIFBIWV9ESVNBQkxFQ0xL ICAgICAgICAgICAgMAo+Pj4gKyNkZWZpbmUgUEhZX0VOQUJMRUNMSyAgICAgICAgICAgIEJJVCgy KQo+Pj4gKyNkZWZpbmUgUEhZX1JTVFogICAgICAgICAgICAwCj4+PiArI2RlZmluZSBQSFlfVU5S U1RaICAgICAgICAgICAgQklUKDEpCj4+PiArI2RlZmluZSBQSFlfU0hVVERPV05aICAgICAgICAg ICAgMAo+Pj4gKyNkZWZpbmUgUEhZX1VOU0hVVERPV05aICAgICAgICAgICAgQklUKDApCj4+PiAr Cj4+PiArI2RlZmluZSBEU0lfUEhZX0lGX0NGRyAgICAgICAgICAgIDB4YTQKPj4+ICsjZGVmaW5l IE5fTEFORVMobikgICAgICAgICAgICAoKCgobikgLSAxKSAmIDB4MykgPDwgMCkKPj4+ICsjZGVm aW5lIFBIWV9TVE9QX1dBSVRfVElNRShjeWNsZSkgICAgKCgoY3ljbGUpICYgMHhmZikgPDwgOCkK Pj4+ICsKPj4+ICsjZGVmaW5lIERTSV9QSFlfU1RBVFVTICAgICAgICAgICAgMHhiMAo+Pj4gKyNk ZWZpbmUgTE9DSyAgICAgICAgICAgICAgICBCSVQoMCkKPj4+ICsjZGVmaW5lIFNUT1BfU1RBVEVf Q0xLX0xBTkUgICAgICAgIEJJVCgyKQo+Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJX1BIWV9UU1RfQ1RS TDAgICAgICAgIDB4YjQKPj4+ICsjZGVmaW5lIFBIWV9URVNUQ0xLICAgICAgICAgICAgQklUKDEp Cj4+PiArI2RlZmluZSBQSFlfVU5URVNUQ0xLICAgICAgICAgICAgMAo+Pj4gKyNkZWZpbmUgUEhZ X1RFU1RDTFIgICAgICAgICAgICBCSVQoMCkKPj4+ICsjZGVmaW5lIFBIWV9VTlRFU1RDTFIgICAg ICAgICAgICAwCj4+PiArCj4+PiArI2RlZmluZSBEU0lfUEhZX1RTVF9DVFJMMSAgICAgICAgMHhi OAo+Pj4gKyNkZWZpbmUgUEhZX1RFU1RFTiAgICAgICAgICAgIEJJVCgxNikKPj4+ICsjZGVmaW5l IFBIWV9VTlRFU1RFTiAgICAgICAgICAgIDAKPj4+ICsjZGVmaW5lIFBIWV9URVNURE9VVChuKSAg ICAgICAgICAgICgoKG4pICYgMHhmZikgPDwgOCkKPj4+ICsjZGVmaW5lIFBIWV9URVNURElOKG4p ICAgICAgICAgICAgKCgobikgJiAweGZmKSA8PCAwKQo+Pj4gKwo+Pj4gKyNkZWZpbmUgRFNJX0lO VF9TVDAgICAgICAgICAgICAweGJjCj4+PiArI2RlZmluZSBEU0lfSU5UX1NUMSAgICAgICAgICAg IDB4YzAKPj4+ICsjZGVmaW5lIERTSV9JTlRfTVNLMCAgICAgICAgICAgIDB4YzQKPj4+ICsjZGVm aW5lIERTSV9JTlRfTVNLMSAgICAgICAgICAgIDB4YzgKPj4+ICsKPj4+ICsjZGVmaW5lIFBIWV9T VEFUVVNfVElNRU9VVF9VUyAgICAgICAgMTAwMDAKPj4+ICsjZGVmaW5lIENNRF9QS1RfU1RBVFVT X1RJTUVPVVRfVVMgICAgMjAwMDAKPj4+ICsKPj4+ICtzdHJ1Y3QgZHdfbWlwaV9kc2kgewo+Pj4g KyAgICBzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7Cj4+PiArICAgIHN0cnVjdCBtaXBpX2RzaV9o b3N0IGRzaV9ob3N0Owo+Pj4gKyAgICBzdHJ1Y3QgZHJtX2JyaWRnZSAqcGFuZWxfYnJpZGdlOwo+ Pj4gKyAgICBib29sIGlzX3BhbmVsX2JyaWRnZTsKPj4+ICsgICAgc3RydWN0IGRldmljZSAqZGV2 Owo+Pj4gKyAgICB2b2lkIF9faW9tZW0gKmJhc2U7Cj4+PiArCj4+PiArICAgIHN0cnVjdCBjbGsg KnBjbGs7Cj4+PiArCj4+PiArICAgIHVuc2lnbmVkIGludCBsYW5lX21icHM7IC8qIHBlciBsYW5l ICovCj4+PiArICAgIHUzMiBjaGFubmVsOwo+Pj4gKyAgICB1MzIgbGFuZXM7Cj4+PiArICAgIHUz MiBmb3JtYXQ7Cj4+PiArICAgIHVuc2lnbmVkIGxvbmcgbW9kZV9mbGFnczsKPj4+ICsKPj4+ICsg ICAgY29uc3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSAqcGxhdF9kYXRhOwo+Pj4gK307 Cj4+PiArCj4+PiArLyoKPj4+ICsgKiBUaGUgY29udHJvbGxlciBzaG91bGQgZ2VuZXJhdGUgMiBm cmFtZXMgYmVmb3JlCj4+PiArICogcHJlcGFyaW5nIHRoZSBwZXJpcGhlcmFsLgo+Pj4gKyAqLwo+ Pj4gK3N0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3dhaXRfZm9yX3R3b19mcmFtZXMoc3RydWN0IGRy bV9kaXNwbGF5X21vZGUKPj4+ICptb2RlKQo+Pj4gK3sKPj4+ICsgICAgaW50IHJlZnJlc2gsIHR3 b19mcmFtZXM7Cj4+PiArCj4+PiArICAgIHJlZnJlc2ggPSBkcm1fbW9kZV92cmVmcmVzaChtb2Rl KTsKPj4+ICsgICAgdHdvX2ZyYW1lcyA9IERJVl9ST1VORF9VUChNU0VDX1BFUl9TRUMsIHJlZnJl c2gpICogMjsKPj4+ICsgICAgbXNsZWVwKHR3b19mcmFtZXMpOwo+Pj4gK30KPj4+ICsKPj4+ICtz dGF0aWMgaW5saW5lIHN0cnVjdCBkd19taXBpX2RzaSAqaG9zdF90b19kc2koc3RydWN0IG1pcGlf ZHNpX2hvc3QKPj4+ICpob3N0KQo+Pj4gK3sKPj4+ICsgICAgcmV0dXJuIGNvbnRhaW5lcl9vZiho b3N0LCBzdHJ1Y3QgZHdfbWlwaV9kc2ksIGRzaV9ob3N0KTsKPj4+ICt9Cj4+PiArCj4+PiArc3Rh dGljIGlubGluZSBzdHJ1Y3QgZHdfbWlwaV9kc2kgKmJyaWRnZV90b19kc2koc3RydWN0IGRybV9i cmlkZ2UKPj4+ICpicmlkZ2UpCj4+PiArewo+Pj4gKyAgICByZXR1cm4gY29udGFpbmVyX29mKGJy aWRnZSwgc3RydWN0IGR3X21pcGlfZHNpLCBicmlkZ2UpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0 aWMgaW5saW5lIHZvaWQgZHNpX3dyaXRlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCB1MzIgcmVn LCB1MzIgdmFsKQo+Pj4gK3sKPj4+ICsgICAgd3JpdGVsKHZhbCwgZHNpLT5iYXNlICsgcmVnKTsK Pj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlubGluZSB1MzIgZHNpX3JlYWQoc3RydWN0IGR3X21p cGlfZHNpICpkc2ksIHUzMiByZWcpCj4+PiArewo+Pj4gKyAgICByZXR1cm4gcmVhZGwoZHNpLT5i YXNlICsgcmVnKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBkd19taXBpX2RzaV9ob3N0 X2F0dGFjaChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPj4+ICsgICAgICAgICAgICAgICAg ICAgc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZGV2aWNlKQo+Pj4gK3sKPj4+ICsgICAgc3RydWN0 IGR3X21pcGlfZHNpICpkc2kgPSBob3N0X3RvX2RzaShob3N0KTsKPj4+ICsgICAgc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZTsKPj4+ICsgICAgc3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cj4+PiAr ICAgIGludCByZXQ7Cj4+PiArCj4+PiArICAgIGlmIChkZXZpY2UtPmxhbmVzID4gZHNpLT5wbGF0 X2RhdGEtPm1heF9kYXRhX2xhbmVzKSB7Cj4+PiArICAgICAgICBkZXZfZXJyKGRzaS0+ZGV2LCAi dGhlIG51bWJlciBvZiBkYXRhIGxhbmVzKCV1KSBpcyB0b28gbWFueVxuIiwKPj4+ICsgICAgICAg ICAgICBkZXZpY2UtPmxhbmVzKTsKPj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gKyAg ICB9Cj4+PiArCj4+PiArICAgIGRzaS0+bGFuZXMgPSBkZXZpY2UtPmxhbmVzOwo+Pj4gKyAgICBk c2ktPmNoYW5uZWwgPSBkZXZpY2UtPmNoYW5uZWw7Cj4+PiArICAgIGRzaS0+Zm9ybWF0ID0gZGV2 aWNlLT5mb3JtYXQ7Cj4+PiArICAgIGRzaS0+bW9kZV9mbGFncyA9IGRldmljZS0+bW9kZV9mbGFn czsKPj4+ICsKPj4+ICsgICAgcmV0ID0gZHJtX29mX2ZpbmRfcGFuZWxfb3JfYnJpZGdlKGhvc3Qt PmRldi0+b2Zfbm9kZSwgMSwgMCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgJnBhbmVsLCAm YnJpZGdlKTsKPj4+ICsgICAgaWYgKHJldCkKPj4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4+PiAr Cj4+PiArICAgIGlmIChwYW5lbCkgewo+Pj4gKyAgICAgICAgYnJpZGdlID0gZHJtX3BhbmVsX2Jy aWRnZV9hZGQocGFuZWwsIERSTV9NT0RFX0NPTk5FQ1RPUl9EU0kpOwo+Pj4gKyAgICAgICAgaWYg KElTX0VSUihicmlkZ2UpKQo+Pj4gKyAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGJyaWRnZSk7 Cj4+PiArICAgICAgICBkc2ktPmlzX3BhbmVsX2JyaWRnZSA9IHRydWU7Cj4+PiArICAgIH0KPj4+ ICsKPj4+ICsgICAgZHNpLT5wYW5lbF9icmlkZ2UgPSBicmlkZ2U7Cj4+PiArCj4+PiArICAgIHJl dHVybiBkcm1fYnJpZGdlX2FkZCgmZHNpLT5icmlkZ2UpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0 aWMgaW50IGR3X21pcGlfZHNpX2hvc3RfZGV0YWNoKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0 LAo+Pj4gKyAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkZXZpY2Up Cj4+PiArewo+Pj4gKyAgICBzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSA9IGhvc3RfdG9fZHNpKGhv c3QpOwo+Pj4gKwo+Pj4gKyAgICBpZiAoZHNpLT5pc19wYW5lbF9icmlkZ2UpCj4+PiArICAgICAg ICBkcm1fcGFuZWxfYnJpZGdlX3JlbW92ZShkc2ktPnBhbmVsX2JyaWRnZSk7Cj4+PiArCj4+PiAr ICAgIGRybV9icmlkZ2VfcmVtb3ZlKCZkc2ktPmJyaWRnZSk7Cj4+PiArCj4+PiArICAgIHJldHVy biAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBkd19taXBpX21lc3NhZ2VfY29uZmln KHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpCj4+PiArewo+Pj4gKyAgICBib29sIGxwbSA9IG1zZy0+ ZmxhZ3MgJiBNSVBJX0RTSV9NU0dfVVNFX0xQTTsKPj4+ICsgICAgdTMyIHZhbCA9IDA7Cj4+PiAr Cj4+PiArICAgIGlmIChtc2ctPmZsYWdzICYgTUlQSV9EU0lfTVNHX1JFUV9BQ0spCj4+PiArICAg ICAgICB2YWwgfD0gRU5fQUNLX1JRU1Q7Cj4+PiArICAgIGlmIChscG0pCj4+PiArICAgICAgICB2 YWwgfD0gQ01EX01PREVfQUxMX0xQOwo+Pj4gKwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBEU0lf TFBDTEtfQ1RSTCwgbHBtID8gMCA6IFBIWV9UWFJFUVVFU1RDTEtIUyk7Cj4+PiArICAgIGRzaV93 cml0ZShkc2ksIERTSV9DTURfTU9ERV9DRkcsIHZhbCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRp YyBpbnQgZHdfbWlwaV9kc2lfZ2VuX3BrdF9oZHJfd3JpdGUoc3RydWN0IGR3X21pcGlfZHNpICpk c2ksIHUzMgo+Pj4gaGRyX3ZhbCkKPj4+ICt7Cj4+PiArICAgIGludCByZXQ7Cj4+PiArICAgIHUz MiB2YWwsIG1hc2s7Cj4+PiArCj4+PiArICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkc2kt PmJhc2UgKyBEU0lfQ01EX1BLVF9TVEFUVVMsCj4+PiArICAgICAgICAgICAgICAgICB2YWwsICEo dmFsICYgR0VOX0NNRF9GVUxMKSwgMTAwMCwKPj4+ICsgICAgICAgICAgICAgICAgIENNRF9QS1Rf U1RBVFVTX1RJTUVPVVRfVVMpOwo+Pj4gKyAgICBpZiAocmV0IDwgMCkgewo+Pj4gKyAgICAgICAg ZGV2X2Vycihkc2ktPmRldiwgImZhaWxlZCB0byBnZXQgYXZhaWxhYmxlIGNvbW1hbmQgRklGT1xu Iik7Cj4+PiArICAgICAgICByZXR1cm4gcmV0Owo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAgIGRz aV93cml0ZShkc2ksIERTSV9HRU5fSERSLCBoZHJfdmFsKTsKPj4+ICsKPj4+ICsgICAgbWFzayA9 IEdFTl9DTURfRU1QVFkgfCBHRU5fUExEX1dfRU1QVFk7Cj4+PiArICAgIHJldCA9IHJlYWRsX3Bv bGxfdGltZW91dChkc2ktPmJhc2UgKyBEU0lfQ01EX1BLVF9TVEFUVVMsCj4+PiArICAgICAgICAg ICAgICAgICB2YWwsICh2YWwgJiBtYXNrKSA9PSBtYXNrLAo+Pj4gKyAgICAgICAgICAgICAgICAg MTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7Cj4+PiArICAgIGlmIChyZXQgPCAwKSB7 Cj4+PiArICAgICAgICBkZXZfZXJyKGRzaS0+ZGV2LCAiZmFpbGVkIHRvIHdyaXRlIGNvbW1hbmQg RklGT1xuIik7Cj4+PiArICAgICAgICByZXR1cm4gcmV0Owo+Pj4gKyAgICB9Cj4+PiArCj4+PiAr ICAgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGR3X21pcGlfZHNpX2Rj c19zaG9ydF93cml0ZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwKPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9tc2cgKm1zZykKPj4+ICt7Cj4+PiArICAg IGNvbnN0IHU4ICp0eF9idWYgPSBtc2ctPnR4X2J1ZjsKPj4+ICsgICAgdTE2IGRhdGEgPSAwOwo+ Pj4gKyAgICB1MzIgdmFsOwo+Pj4gKwo+Pj4gKyAgICBpZiAobXNnLT50eF9sZW4gPiAwKQo+Pj4g KyAgICAgICAgZGF0YSB8PSB0eF9idWZbMF07Cj4+PiArICAgIGlmIChtc2ctPnR4X2xlbiA+IDEp Cj4+PiArICAgICAgICBkYXRhIHw9IHR4X2J1ZlsxXSA8PCA4Owo+Pj4gKwo+Pj4gKyAgICBpZiAo bXNnLT50eF9sZW4gPiAyKSB7Cj4+PiArICAgICAgICBkZXZfZXJyKGRzaS0+ZGV2LCAidG9vIGxv bmcgdHggYnVmIGxlbmd0aCAlenUgZm9yIHNob3J0Cj4+PiB3cml0ZVxuIiwKPj4+ICsgICAgICAg ICAgICBtc2ctPnR4X2xlbik7Cj4+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ICsgICAg fQo+Pj4gKwo+Pj4gKyAgICB2YWwgPSBHRU5fSERBVEEoZGF0YSkgfCBHRU5fSFRZUEUobXNnLT50 eXBlKTsKPj4+ICsgICAgcmV0dXJuIGR3X21pcGlfZHNpX2dlbl9wa3RfaGRyX3dyaXRlKGRzaSwg dmFsKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBkd19taXBpX2RzaV9kY3NfbG9uZ193 cml0ZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQo+Pj4gK3sKPj4+ICsgICAgY29uc3QgdTgg KnR4X2J1ZiA9IG1zZy0+dHhfYnVmOwo+Pj4gKyAgICBpbnQgbGVuID0gbXNnLT50eF9sZW4sIHBs ZF9kYXRhX2J5dGVzID0gc2l6ZW9mKHUzMiksIHJldDsKPj4+ICsgICAgdTMyIGhkcl92YWwgPSBH RU5fSERBVEEobXNnLT50eF9sZW4pIHwgR0VOX0hUWVBFKG1zZy0+dHlwZSk7Cj4+PiArICAgIHUz MiByZW1haW5kZXI7Cj4+PiArICAgIHUzMiB2YWw7Cj4+PiArCj4+PiArICAgIGlmIChtc2ctPnR4 X2xlbiA8IDMpIHsKPj4+ICsgICAgICAgIGRldl9lcnIoZHNpLT5kZXYsICJ3cm9uZyB0eCBidWYg bGVuZ3RoICV6dSBmb3IgbG9uZyB3cml0ZVxuIiwKPj4+ICsgICAgICAgICAgICBtc2ctPnR4X2xl bik7Cj4+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAg ICB3aGlsZSAoRElWX1JPVU5EX1VQKGxlbiwgcGxkX2RhdGFfYnl0ZXMpKSB7Cj4+PiArICAgICAg ICBpZiAobGVuIDwgcGxkX2RhdGFfYnl0ZXMpIHsKPj4+ICsgICAgICAgICAgICByZW1haW5kZXIg PSAwOwo+Pj4gKyAgICAgICAgICAgIG1lbWNweSgmcmVtYWluZGVyLCB0eF9idWYsIGxlbik7Cj4+ PiArICAgICAgICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX0dFTl9QTERfREFUQSwgcmVtYWluZGVy KTsKPj4+ICsgICAgICAgICAgICBsZW4gPSAwOwo+Pj4gKyAgICAgICAgfSBlbHNlIHsKPj4+ICsg ICAgICAgICAgICBtZW1jcHkoJnJlbWFpbmRlciwgdHhfYnVmLCBwbGRfZGF0YV9ieXRlcyk7Cj4+ PiArICAgICAgICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX0dFTl9QTERfREFUQSwgcmVtYWluZGVy KTsKPj4+ICsgICAgICAgICAgICB0eF9idWYgKz0gcGxkX2RhdGFfYnl0ZXM7Cj4+PiArICAgICAg ICAgICAgbGVuIC09IHBsZF9kYXRhX2J5dGVzOwo+Pj4gKyAgICAgICAgfQo+Pj4gKwo+Pj4gKyAg ICAgICAgcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGRzaS0+YmFzZSArIERTSV9DTURfUEtUX1NU QVRVUywKPj4+ICsgICAgICAgICAgICAgICAgICAgICB2YWwsICEodmFsICYgR0VOX1BMRF9XX0ZV TEwpLCAxMDAwLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIENNRF9QS1RfU1RBVFVTX1RJTUVP VVRfVVMpOwo+Pj4gKyAgICAgICAgaWYgKHJldCA8IDApIHsKPj4+ICsgICAgICAgICAgICBkZXZf ZXJyKGRzaS0+ZGV2LAo+Pj4gKyAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGdldCBhdmFpbGFi bGUgd3JpdGUgcGF5bG9hZCBGSUZPXG4iKTsKPj4+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ Pj4gKyAgICAgICAgfQo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAgIHJldHVybiBkd19taXBpX2Rz aV9nZW5fcGt0X2hkcl93cml0ZShkc2ksIGhkcl92YWwpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0 aWMgc3NpemVfdCBkd19taXBpX2RzaV9ob3N0X3RyYW5zZmVyKHN0cnVjdCBtaXBpX2RzaV9ob3N0 ICpob3N0LAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9t c2cgKm1zZykKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0gaG9zdF90 b19kc2koaG9zdCk7Cj4+PiArICAgIGludCByZXQ7Cj4+PiArCj4+PiArICAgIC8qCj4+PiArICAg ICAqIFRPRE8gZHcgZHJ2IGltcHJvdmVtZW50cwo+Pj4gKyAgICAgKiB1c2UgbWlwaV9kc2lfY3Jl YXRlX3BhY2tldCgpIGluc3RlYWQgb2YgYWxsIGZvbGxvd2luZwo+Pj4gKyAgICAgKiBmdW5jdGlv bnMgYW5kIGNvZGUgKG5vIHN3aXRjaCBjYXNlcywgbm8KPj4+ICsgICAgICogZHdfbWlwaV9kc2lf ZGNzX3Nob3J0X3dyaXRlKCksIG9ubHkgdGhlIGxvb3AgaW4gbG9uZ193cml0ZS4uLikKPj4+ICsg ICAgICogYW5kIHVzZSBwYWNrZXQuaGVhZGVyLi4uCj4+PiArICAgICAqLwo+Pj4gKyAgICBkd19t aXBpX21lc3NhZ2VfY29uZmlnKGRzaSwgbXNnKTsKPj4+ICsKPj4+ICsgICAgc3dpdGNoIChtc2ct PnR5cGUpIHsKPj4+ICsgICAgY2FzZSBNSVBJX0RTSV9EQ1NfU0hPUlRfV1JJVEU6Cj4+PiArICAg IGNhc2UgTUlQSV9EU0lfRENTX1NIT1JUX1dSSVRFX1BBUkFNOgo+Pj4gKyAgICBjYXNlIE1JUElf RFNJX1NFVF9NQVhJTVVNX1JFVFVSTl9QQUNLRVRfU0laRToKPj4+ICsgICAgICAgIHJldCA9IGR3 X21pcGlfZHNpX2Rjc19zaG9ydF93cml0ZShkc2ksIG1zZyk7Cj4+PiArICAgICAgICBicmVhazsK Pj4+ICsgICAgY2FzZSBNSVBJX0RTSV9EQ1NfTE9OR19XUklURToKPj4+ICsgICAgICAgIHJldCA9 IGR3X21pcGlfZHNpX2Rjc19sb25nX3dyaXRlKGRzaSwgbXNnKTsKPj4+ICsgICAgICAgIGJyZWFr Owo+Pj4gKyAgICBkZWZhdWx0Ogo+Pj4gKyAgICAgICAgZGV2X2Vycihkc2ktPmRldiwgInVuc3Vw cG9ydGVkIG1lc3NhZ2UgdHlwZSAweCUwMnhcbiIsCj4+PiArICAgICAgICAgICAgbXNnLT50eXBl KTsKPj4+ICsgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAg cmV0dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBpX2Rz aV9ob3N0X29wcyBkd19taXBpX2RzaV9ob3N0X29wcyA9IHsKPj4+ICsgICAgLmF0dGFjaCA9IGR3 X21pcGlfZHNpX2hvc3RfYXR0YWNoLAo+Pj4gKyAgICAuZGV0YWNoID0gZHdfbWlwaV9kc2lfaG9z dF9kZXRhY2gsCj4+PiArICAgIC50cmFuc2ZlciA9IGR3X21pcGlfZHNpX2hvc3RfdHJhbnNmZXIs Cj4+PiArfTsKPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBkd19taXBpX2RzaV92aWRlb19tb2RlX2Nv bmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPj4+ICt7Cj4+PiArICAgIHUzMiB2YWw7Cj4+ PiArCj4+PiArICAgIC8qCj4+PiArICAgICAqIFRPRE8gZHcgZHJ2IGltcHJvdmVtZW50cwo+Pj4g KyAgICAgKiBlbmFibGluZyBsb3cgcG93ZXIgaXMgcGFuZWwtZGVwZW5kZW50LCB3ZSBzaG91bGQg dXNlIHRoZQo+Pj4gKyAgICAgKiBwYW5lbCBjb25maWd1cmF0aW9uIGhlcmUuLi4KPj4+ICsgICAg ICovCj4+PiArICAgIHZhbCA9IEVOQUJMRV9MT1dfUE9XRVI7Cj4+PiArCj4+PiArICAgIGlmIChk c2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNUKQo+Pj4gKyAgICAgICAg dmFsIHw9IFZJRF9NT0RFX1RZUEVfQlVSU1Q7Cj4+PiArICAgIGVsc2UgaWYgKGRzaS0+bW9kZV9m bGFncyAmIE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRSkKPj4+ICsgICAgICAgIHZhbCB8 PSBWSURfTU9ERV9UWVBFX05PTl9CVVJTVF9TWU5DX1BVTFNFUzsKPj4+ICsgICAgZWxzZQo+Pj4g KyAgICAgICAgdmFsIHw9IFZJRF9NT0RFX1RZUEVfTk9OX0JVUlNUX1NZTkNfRVZFTlRTOwo+Pj4g Kwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBEU0lfVklEX01PREVfQ0ZHLCB2YWwpOwo+Pj4gK30K Pj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9zZXRfbW9kZShzdHJ1Y3QgZHdfbWlw aV9kc2kgKmRzaSwKPj4+ICsgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbW9kZV9mbGFn cykKPj4+ICt7Cj4+PiArICAgIGRzaV93cml0ZShkc2ksIERTSV9QV1JfVVAsIFJFU0VUKTsKPj4+ ICsKPj4+ICsgICAgaWYgKG1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPKSB7Cj4+PiAr ICAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfTU9ERV9DRkcsIEVOQUJMRV9WSURFT19NT0RFKTsK Pj4+ICsgICAgICAgIGR3X21pcGlfZHNpX3ZpZGVvX21vZGVfY29uZmlnKGRzaSk7Cj4+PiArICAg ICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfTFBDTEtfQ1RSTCwgUEhZX1RYUkVRVUVTVENMS0hTKTsK Pj4+ICsgICAgfSBlbHNlIHsKPj4+ICsgICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9NT0RFX0NG RywgRU5BQkxFX0NNRF9NT0RFKTsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICBkc2lfd3JpdGUo ZHNpLCBEU0lfUFdSX1VQLCBQT1dFUlVQKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQg ZHdfbWlwaV9kc2lfZGlzYWJsZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPj4+ICt7Cj4+PiAr ICAgIGRzaV93cml0ZShkc2ksIERTSV9QV1JfVVAsIFJFU0VUKTsKPj4+ICsgICAgZHNpX3dyaXRl KGRzaSwgRFNJX1BIWV9SU1RaLCBQSFlfUlNUWik7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2 b2lkIGR3X21pcGlfZHNpX2luaXQoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4+PiArewo+Pj4g KyAgICAvKgo+Pj4gKyAgICAgKiBUaGUgbWF4aW11bSBwZXJtaXR0ZWQgZXNjYXBlIGNsb2NrIGlz IDIwTUh6IGFuZCBpdCBpcyBkZXJpdmVkCj4+PiBmcm9tCj4+PiArICAgICAqIGxhbmVieXRlY2xr LCB3aGljaCBpcyBydW5uaW5nIGF0ICJsYW5lX21icHMgLyA4Ii4gIFRodXMgd2Ugd2FudDoKPj4+ ICsgICAgICoKPj4+ICsgICAgICogICAgIChsYW5lX21icHMgPj4gMykgLyBlc2NfY2xrX2Rpdmlz aW9uIDwgMjAKPj4+ICsgICAgICogd2hpY2ggaXM6Cj4+PiArICAgICAqICAgICAobGFuZV9tYnBz ID4+IDMpIC8gMjAgPiBlc2NfY2xrX2RpdmlzaW9uCj4+PiArICAgICAqLwo+Pj4gKyAgICB1MzIg ZXNjX2Nsa19kaXZpc2lvbiA9IChkc2ktPmxhbmVfbWJwcyA+PiAzKSAvIDIwICsgMTsKPj4+ICsK Pj4+ICsgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1BXUl9VUCwgUkVTRVQpOwo+Pj4gKwo+Pj4gKyAg ICAvKgo+Pj4gKyAgICAgKiBUT0RPIGR3IGRydiBpbXByb3ZlbWVudHMKPj4+ICsgICAgICogdGlt ZW91dCBjbG9jayBkaXZpc2lvbiBzaG91bGQgYmUgY29tcHV0ZWQgd2l0aCB0aGUKPj4+ICsgICAg ICogaGlnaCBzcGVlZCB0cmFuc21pc3Npb24gY291bnRlciB0aW1lb3V0IGFuZCBieXRlIGxhbmUu Li4KPj4+ICsgICAgICovCj4+PiArICAgIGRzaV93cml0ZShkc2ksIERTSV9DTEtNR1JfQ0ZHLCBU T19DTEtfRElWSURTSU9OKDEwKSB8Cj4+PiArICAgICAgICAgIFRYX0VTQ19DTEtfRElWSURTSU9O KGVzY19jbGtfZGl2aXNpb24pKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgZHdfbWlw aV9kc2lfZHBpX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwKPj4+ICsgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4+PiArewo+Pj4gKyAgICB1 MzIgdmFsID0gMCwgY29sb3IgPSAwOwo+Pj4gKwo+Pj4gKyAgICBzd2l0Y2ggKGRzaS0+Zm9ybWF0 KSB7Cj4+PiArICAgIGNhc2UgTUlQSV9EU0lfRk1UX1JHQjg4ODoKPj4+ICsgICAgICAgIGNvbG9y ID0gRFBJX0NPTE9SX0NPRElOR18yNEJJVDsKPj4+ICsgICAgICAgIGJyZWFrOwo+Pj4gKyAgICBj YXNlIE1JUElfRFNJX0ZNVF9SR0I2NjY6Cj4+PiArICAgICAgICBjb2xvciA9IERQSV9DT0xPUl9D T0RJTkdfMThCSVRfMiB8IEVOMThfTE9PU0VMWTsKPj4+ICsgICAgICAgIGJyZWFrOwo+Pj4gKyAg ICBjYXNlIE1JUElfRFNJX0ZNVF9SR0I2NjZfUEFDS0VEOgo+Pj4gKyAgICAgICAgY29sb3IgPSBE UElfQ09MT1JfQ09ESU5HXzE4QklUXzE7Cj4+PiArICAgICAgICBicmVhazsKPj4+ICsgICAgY2Fz ZSBNSVBJX0RTSV9GTVRfUkdCNTY1Ogo+Pj4gKyAgICAgICAgY29sb3IgPSBEUElfQ09MT1JfQ09E SU5HXzE2QklUXzE7Cj4+PiArICAgICAgICBicmVhazsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAg ICBpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX05WU1lOQykKPj4+ICsgICAgICAgIHZh bCB8PSBWU1lOQ19BQ1RJVkVfTE9XOwo+Pj4gKyAgICBpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHX05IU1lOQykKPj4+ICsgICAgICAgIHZhbCB8PSBIU1lOQ19BQ1RJVkVfTE9XOwo+Pj4g Kwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBEU0lfRFBJX1ZDSUQsIERQSV9WSUQoZHNpLT5jaGFu bmVsKSk7Cj4+PiArICAgIGRzaV93cml0ZShkc2ksIERTSV9EUElfQ09MT1JfQ09ESU5HLCBjb2xv cik7Cj4+PiArICAgIGRzaV93cml0ZShkc2ksIERTSV9EUElfQ0ZHX1BPTCwgdmFsKTsKPj4+ICsg ICAgLyoKPj4+ICsgICAgICogVE9ETyBkdyBkcnYgaW1wcm92ZW1lbnRzCj4+PiArICAgICAqIGxh cmdlc3QgcGFja2V0IHNpemVzIGR1cmluZyBoZnAgb3IgZHVyaW5nIHZzYS92cGIvdmZwCj4+PiAr ICAgICAqIHNob3VsZCBiZSBjb21wdXRlZCBhY2NvcmRpbmcgdG8gYnl0ZSBsYW5lLCBsYW5lIG51 bWJlciBhbmQgb25seQo+Pj4gKyAgICAgKiBpZiBzZW5kaW5nIGxwIGNtZHMgaW4gaGlnaCBzcGVl ZCBpcyBlbmFibGUgKFBIWV9UWFJFUVVFU1RDTEtIUykKPj4+ICsgICAgICovCj4+PiArICAgIGRz aV93cml0ZShkc2ksIERTSV9EUElfTFBfQ01EX1RJTSwgT1VUVkFDVF9MUENNRF9USU1FKDQpCj4+ PiArICAgICAgICAgIHwgSU5WQUNUX0xQQ01EX1RJTUUoNCkpOwo+Pj4gK30KPj4+ICsKPj4+ICtz dGF0aWMgdm9pZCBkd19taXBpX2RzaV9wYWNrZXRfaGFuZGxlcl9jb25maWcoc3RydWN0IGR3X21p cGlfZHNpICpkc2kpCj4+PiArewo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBEU0lfUENLSERMX0NG RywgRU5fQ1JDX1JYIHwgRU5fRUNDX1JYIHwgRU5fQlRBKTsKPj4+ICt9Cj4+PiArCj4+PiArc3Rh dGljIHZvaWQgZHdfbWlwaV9kc2lfdmlkZW9fcGFja2V0X2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9k c2kgKmRzaSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSkKPj4+ICt7Cj4+PiArICAgIC8qCj4+PiArICAgICAqIFRPRE8gZHcgZHJ2IGlt cHJvdmVtZW50cwo+Pj4gKyAgICAgKiBvbmx5IGJ1cnN0IG1vZGUgaXMgc3VwcG9ydGVkIGhlcmUu IEZvciBub24tYnVyc3QgdmlkZW8gbW9kZXMsCj4+PiArICAgICAqIHdlIHNob3VsZCBjb21wdXRl IERTSV9WSURfUEtUX1NJWkUsIERTSV9WQ0NSLk5VTUMgJgo+Pj4gKyAgICAgKiBEU0lfVk5QQ1Iu TlBTSVpFLi4uIGVzcGVjaWFsbHkgYmVjYXVzZSB0aGlzIGRyaXZlciBzdXBwb3J0cwo+Pj4gKyAg ICAgKiBub24tYnVyc3QgdmlkZW8gbW9kZXMsIHNlZSBkd19taXBpX2RzaV92aWRlb19tb2RlX2Nv bmZpZygpLi4uCj4+PiArICAgICAqLwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBEU0lfVklEX1BL VF9TSVpFLCBWSURfUEtUX1NJWkUobW9kZS0+aGRpc3BsYXkpKTsKPj4+ICt9Cj4+PiArCj4+PiAr c3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfY29tbWFuZF9tb2RlX2NvbmZpZyhzdHJ1Y3QgZHdfbWlw aV9kc2kgKmRzaSkKPj4+ICt7Cj4+PiArICAgIC8qCj4+PiArICAgICAqIFRPRE8gZHcgZHJ2IGlt cHJvdmVtZW50cwo+Pj4gKyAgICAgKiBjb21wdXRlIGhpZ2ggc3BlZWQgdHJhbnNtaXNzaW9uIGNv dW50ZXIgdGltZW91dCBhY2NvcmRpbmcKPj4+ICsgICAgICogdG8gdGhlIHRpbWVvdXQgY2xvY2sg ZGl2aXNpb24gKFRPX0NMS19ESVZJRFNJT04pIGFuZCBieXRlIGxhbmUuLi4KPj4+ICsgICAgICov Cj4+PiArICAgIGRzaV93cml0ZShkc2ksIERTSV9UT19DTlRfQ0ZHLCBIU1RYX1RPX0NOVCgxMDAw KSB8Cj4+PiBMUFJYX1RPX0NOVCgxMDAwKSk7Cj4+PiArICAgIC8qCj4+PiArICAgICAqIFRPRE8g ZHcgZHJ2IGltcHJvdmVtZW50cwo+Pj4gKyAgICAgKiB0aGUgQnVzLVR1cm4tQXJvdW5kIFRpbWVv dXQgQ291bnRlciBzaG91bGQgYmUgY29tcHV0ZWQKPj4+ICsgICAgICogYWNjb3JkaW5nIHRvIGJ5 dGUgbGFuZS4uLgo+Pj4gKyAgICAgKi8KPj4+ICsgICAgZHNpX3dyaXRlKGRzaSwgRFNJX0JUQV9U T19DTlQsIDB4ZDAwKTsKPj4+ICsgICAgZHNpX3dyaXRlKGRzaSwgRFNJX01PREVfQ0ZHLCBFTkFC TEVfQ01EX01PREUpOwo+Pj4gK30KPj4+ICsKPj4+ICsvKiBHZXQgbGFuZSBieXRlIGNsb2NrIGN5 Y2xlcy4gKi8KPj4+ICtzdGF0aWMgdTMyIGR3X21pcGlfZHNpX2dldF9oY29tcG9uZW50X2xiY2Mo c3RydWN0IGR3X21pcGlfZHNpICpkc2ksCj4+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHUz MiBoY29tcG9uZW50KQo+Pj4gK3sKPj4+ICsgICAgdTMyIGZyYWMsIGxiY2M7Cj4+PiArCj4+PiAr ICAgIGxiY2MgPSBoY29tcG9uZW50ICogZHNpLT5sYW5lX21icHMgKiBNU0VDX1BFUl9TRUMgLyA4 Owo+Pj4gKwo+Pj4gKyAgICBmcmFjID0gbGJjYyAlIG1vZGUtPmNsb2NrOwo+Pj4gKyAgICBsYmNj ID0gbGJjYyAvIG1vZGUtPmNsb2NrOwo+Pj4gKyAgICBpZiAoZnJhYykKPj4+ICsgICAgICAgIGxi Y2MrKzsKPj4+ICsKPj4+ICsgICAgcmV0dXJuIGxiY2M7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRp YyB2b2lkIGR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAq ZHNpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSkKPj4+ICt7Cj4+PiArICAgIHUzMiBodG90YWwsIGhzYSwgaGJwLCBsYmNjOwo+Pj4gKwo+ Pj4gKyAgICBodG90YWwgPSBtb2RlLT5odG90YWw7Cj4+PiArICAgIGhzYSA9IG1vZGUtPmhzeW5j X2VuZCAtIG1vZGUtPmhzeW5jX3N0YXJ0Owo+Pj4gKyAgICBoYnAgPSBtb2RlLT5odG90YWwgLSBt b2RlLT5oc3luY19lbmQ7Cj4+PiArCj4+PiArICAgIC8qCj4+PiArICAgICAqIFRPRE8gZHcgZHJ2 IGltcHJvdmVtZW50cwo+Pj4gKyAgICAgKiBjb21wdXRhdGlvbnMgYmVsb3cgbWF5IGJlIGltcHJv dmVkLi4uCj4+PiArICAgICAqLwo+Pj4gKyAgICBsYmNjID0gZHdfbWlwaV9kc2lfZ2V0X2hjb21w b25lbnRfbGJjYyhkc2ksIG1vZGUsIGh0b3RhbCk7Cj4+PiArICAgIGRzaV93cml0ZShkc2ksIERT SV9WSURfSExJTkVfVElNRSwgbGJjYyk7Cj4+PiArCj4+PiArICAgIGxiY2MgPSBkd19taXBpX2Rz aV9nZXRfaGNvbXBvbmVudF9sYmNjKGRzaSwgbW9kZSwgaHNhKTsKPj4+ICsgICAgZHNpX3dyaXRl KGRzaSwgRFNJX1ZJRF9IU0FfVElNRSwgbGJjYyk7Cj4+PiArCj4+PiArICAgIGxiY2MgPSBkd19t aXBpX2RzaV9nZXRfaGNvbXBvbmVudF9sYmNjKGRzaSwgbW9kZSwgaGJwKTsKPj4+ICsgICAgZHNp X3dyaXRlKGRzaSwgRFNJX1ZJRF9IQlBfVElNRSwgbGJjYyk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0 YXRpYyB2b2lkIGR3X21pcGlfZHNpX3ZlcnRpY2FsX3RpbWluZ19jb25maWcoc3RydWN0IGR3X21p cGlfZHNpICpkc2ksCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUpCj4+PiArewo+Pj4gKyAgICB1MzIgdmFjdGl2ZSwgdnNhLCB2ZnAs IHZicDsKPj4+ICsKPj4+ICsgICAgdmFjdGl2ZSA9IG1vZGUtPnZkaXNwbGF5Owo+Pj4gKyAgICB2 c2EgPSBtb2RlLT52c3luY19lbmQgLSBtb2RlLT52c3luY19zdGFydDsKPj4+ICsgICAgdmZwID0g bW9kZS0+dnN5bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxheTsKPj4+ICsgICAgdmJwID0gbW9kZS0+ dnRvdGFsIC0gbW9kZS0+dnN5bmNfZW5kOwo+Pj4gKwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBE U0lfVklEX1ZBQ1RJVkVfTElORVMsIHZhY3RpdmUpOwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBE U0lfVklEX1ZTQV9MSU5FUywgdnNhKTsKPj4+ICsgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1ZJRF9W RlBfTElORVMsIHZmcCk7Cj4+PiArICAgIGRzaV93cml0ZShkc2ksIERTSV9WSURfVkJQX0xJTkVT LCB2YnApOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGh5X3Rp bWluZ19jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4+PiArewo+Pj4gKyAgICAvKgo+ Pj4gKyAgICAgKiBUT0RPIGR3IGRydiBpbXByb3ZlbWVudHMKPj4+ICsgICAgICogZGF0YSAmIGNs b2NrIGxhbmUgdGltZXJzIHNob3VsZCBiZSBjb21wdXRlZCBhY2NvcmRpbmcgdG8gcGFuZWwKPj4+ ICsgICAgICogYmxhbmtpbmdzIGFuZCB0byB0aGUgYXV0b21hdGljIGNsb2NrIGxhbmUgY29udHJv bCBtb2RlLi4uCj4+PiArICAgICAqIG5vdGU6IERTSV9QSFlfVE1SX0NGRy5NQVhfUkRfVElNRSBz aG91bGQgYmUgaW4gbGluZSB3aXRoCj4+PiArICAgICAqIERTSV9DTURfTU9ERV9DRkcuTUFYX1JE X1BLVF9TSVpFX0xQIChzZWUgQ01EX01PREVfQUxMX0xQKQo+Pj4gKyAgICAgKi8KPj4+ICsgICAg ZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9UTVJfQ0ZHLCBQSFlfSFMyTFBfVElNRSgweDQwKQo+Pj4g KyAgICAgICAgICB8IFBIWV9MUDJIU19USU1FKDB4NDApIHwgTUFYX1JEX1RJTUUoMTAwMDApKTsK Pj4+ICsKPj4+ICsgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9UTVJfTFBDTEtfQ0ZHLCBQSFlf Q0xLSFMyTFBfVElNRSgweDQwKQo+Pj4gKyAgICAgICAgICB8IFBIWV9DTEtMUDJIU19USU1FKDB4 NDApKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZHBoeV9pbnRl cmZhY2VfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQo+Pj4gK3sKPj4+ICsgICAgLyoK Pj4+ICsgICAgICogVE9ETyBkdyBkcnYgaW1wcm92ZW1lbnRzCj4+PiArICAgICAqIHN0b3Agd2Fp dCB0aW1lIHNob3VsZCBiZSB0aGUgbWF4aW11bSBiZXR3ZWVuIGhvc3QgZHNpCj4+PiArICAgICAq IGFuZCBwYW5lbCBzdG9wIHdhaXQgdGltZXMKPj4+ICsgICAgICovCj4+PiArICAgIGRzaV93cml0 ZShkc2ksIERTSV9QSFlfSUZfQ0ZHLCBQSFlfU1RPUF9XQUlUX1RJTUUoMHgyMCkgfAo+Pj4gKyAg ICAgICAgICBOX0xBTkVTKGRzaS0+bGFuZXMpKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZv aWQgZHdfbWlwaV9kc2lfZHBoeV9pbml0KHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQo+Pj4gK3sK Pj4+ICsgICAgLyogQ2xlYXIgUEhZIHN0YXRlICovCj4+PiArICAgIGRzaV93cml0ZShkc2ksIERT SV9QSFlfUlNUWiwgUEhZX0RJU0ZPUkNFUExMIHwgUEhZX0RJU0FCTEVDTEsKPj4+ICsgICAgICAg ICAgfCBQSFlfUlNUWiB8IFBIWV9TSFVURE9XTlopOwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBE U0lfUEhZX1RTVF9DVFJMMCwgUEhZX1VOVEVTVENMUik7Cj4+PiArICAgIGRzaV93cml0ZShkc2ks IERTSV9QSFlfVFNUX0NUUkwwLCBQSFlfVEVTVENMUik7Cj4+PiArICAgIGRzaV93cml0ZShkc2ks IERTSV9QSFlfVFNUX0NUUkwwLCBQSFlfVU5URVNUQ0xSKTsKPj4+ICt9Cj4+PiArCj4+PiArc3Rh dGljIHZvaWQgZHdfbWlwaV9kc2lfZHBoeV9lbmFibGUoc3RydWN0IGR3X21pcGlfZHNpICpkc2kp Cj4+PiArewo+Pj4gKyAgICB1MzIgdmFsOwo+Pj4gKyAgICBpbnQgcmV0Owo+Pj4gKwo+Pj4gKyAg ICBkc2lfd3JpdGUoZHNpLCBEU0lfUEhZX1JTVFosIFBIWV9FTkZPUkNFUExMIHwgUEhZX0VOQUJM RUNMSyB8Cj4+PiArICAgICAgICAgIFBIWV9VTlJTVFogfCBQSFlfVU5TSFVURE9XTlopOwo+Pj4g Kwo+Pj4gKyAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoZHNpLT5iYXNlICsgRFNJX1BIWV9T VEFUVVMsCj4+PiArICAgICAgICAgICAgICAgICB2YWwsIHZhbCAmIExPQ0ssIDEwMDAsIFBIWV9T VEFUVVNfVElNRU9VVF9VUyk7Cj4+PiArICAgIGlmIChyZXQgPCAwKQo+Pj4gKyAgICAgICAgRFJN X0RFQlVHX0RSSVZFUigiZmFpbGVkIHRvIHdhaXQgcGh5IGxvY2sgc3RhdGVcbiIpOwo+Pj4gKwo+ Pj4gKyAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoZHNpLT5iYXNlICsgRFNJX1BIWV9TVEFU VVMsCj4+PiArICAgICAgICAgICAgICAgICB2YWwsIHZhbCAmIFNUT1BfU1RBVEVfQ0xLX0xBTkUs IDEwMDAsCj4+PiArICAgICAgICAgICAgICAgICBQSFlfU1RBVFVTX1RJTUVPVVRfVVMpOwo+Pj4g KyAgICBpZiAocmV0IDwgMCkKPj4+ICsgICAgICAgIERSTV9ERUJVR19EUklWRVIoImZhaWxlZCB0 byB3YWl0IHBoeSBjbGsgbGFuZSBzdG9wIHN0YXRlXG4iKTsKPj4+ICt9Cj4+PiArCj4+PiArc3Rh dGljIHZvaWQgZHdfbWlwaV9kc2lfY2xlYXJfZXJyKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQo+ Pj4gK3sKPj4+ICsgICAgZHNpX3JlYWQoZHNpLCBEU0lfSU5UX1NUMCk7Cj4+PiArICAgIGRzaV9y ZWFkKGRzaSwgRFNJX0lOVF9TVDEpOwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBEU0lfSU5UX01T SzAsIDApOwo+Pj4gKyAgICBkc2lfd3JpdGUoZHNpLCBEU0lfSU5UX01TSzEsIDApOwo+Pj4gK30K Pj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9icmlkZ2VfcG9zdF9kaXNhYmxlKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+PiArewo+Pj4gKyAgICBzdHJ1Y3QgZHdfbWlwaV9k c2kgKmRzaSA9IGJyaWRnZV90b19kc2koYnJpZGdlKTsKPj4+ICsKPj4+ICsgICAgLyoKPj4+ICsg ICAgICogU3dpdGNoIHRvIGNvbW1hbmQgbW9kZSBiZWZvcmUgcGFuZWwtYnJpZGdlIHBvc3RfZGlz YWJsZSAmCj4+PiArICAgICAqIHBhbmVsIHVucHJlcGFyZS4KPj4+ICsgICAgICogTm90ZTogcGFu ZWwtYnJpZGdlIGRpc2FibGUgJiBwYW5lbCBkaXNhYmxlIGhhcyBiZWVuIGNhbGxlZAo+Pj4gKyAg ICAgKiBiZWZvcmUgYnkgdGhlIGRybSBmcmFtZXdvcmsuCj4+PiArICAgICAqLwo+Pj4gKyAgICBk d19taXBpX2RzaV9zZXRfbW9kZShkc2ksIDApOwo+Pj4gKwo+Pj4gKyAgICAvKgo+Pj4gKyAgICAg KiBUT0RPIE9ubHkgd2F5IGZvdW5kIHRvIGNhbGwgcGFuZWwtYnJpZGdlIHBvc3RfZGlzYWJsZSAm Cj4+PiArICAgICAqIHBhbmVsIHVucHJlcGFyZSBiZWZvcmUgdGhlIGRzaSAiZmluYWwiIGRpc2Fi bGUuLi4KPj4+ICsgICAgICogVGhpcyBuZWVkcyB0byBiZSBmaXhlZCBpbiB0aGUgZHJtX2JyaWRn ZSBmcmFtZXdvcmsgYW5kIHRoZSBBUEkKPj4+ICsgICAgICogbmVlZHMgdG8gYmUgdXBkYXRlZCB0 byBtYW5hZ2Ugb3VyIG93biBjYWxsIGNoYWlucy4uLgo+Pj4gKyAgICAgKi8KPj4+ICsgICAgZHNp LT5wYW5lbF9icmlkZ2UtPmZ1bmNzLT5wb3N0X2Rpc2FibGUoZHNpLT5wYW5lbF9icmlkZ2UpOwo+ Pj4gKwo+Pj4gKyAgICBkd19taXBpX2RzaV9kaXNhYmxlKGRzaSk7Cj4+PiArICAgIGNsa19kaXNh YmxlX3VucHJlcGFyZShkc2ktPnBjbGspOwo+Pj4gKyAgICBwbV9ydW50aW1lX3B1dChkc2ktPmRl dik7Cj4+PiArfQo+Pj4gKwo+Pj4gK3ZvaWQgZHdfbWlwaV9kc2lfYnJpZGdlX21vZGVfc2V0KHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4+PiArICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwKPj4+ICsgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+Pj4gK3sKPj4+ICsgICAgc3RydWN0IGR3X21pcGlf ZHNpICpkc2kgPSBicmlkZ2VfdG9fZHNpKGJyaWRnZSk7Cj4+PiArICAgIGNvbnN0IHN0cnVjdCBk d19taXBpX2RzaV9waHlfb3BzICpwaHlfb3BzID0gZHNpLT5wbGF0X2RhdGEtPnBoeV9vcHM7Cj4+ PiArICAgIHZvaWQgKnByaXZfZGF0YSA9IGRzaS0+cGxhdF9kYXRhLT5wcml2X2RhdGE7Cj4+PiAr ICAgIGludCByZXQ7Cj4+PiArCj4+PiArICAgIGNsa19wcmVwYXJlX2VuYWJsZShkc2ktPnBjbGsp Owo+Pj4gKwo+Pj4gKyAgICByZXQgPSBwaHlfb3BzLT5nZXRfbGFuZV9tYnBzKHByaXZfZGF0YSwg bW9kZSwgZHNpLT5tb2RlX2ZsYWdzLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRzaS0+bGFu ZXMsIGRzaS0+Zm9ybWF0LCAmZHNpLT5sYW5lX21icHMpOwo+Pj4gKyAgICBpZiAocmV0KQo+Pj4g KyAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiUGh5IGdldF9sYW5lX21icHMoKSBmYWlsZWRcbiIp Owo+Pj4gKwo+Pj4gKyAgICBwbV9ydW50aW1lX2dldF9zeW5jKGRzaS0+ZGV2KTsKPj4+ICsgICAg ZHdfbWlwaV9kc2lfaW5pdChkc2kpOwo+Pj4gKyAgICBkd19taXBpX2RzaV9kcGlfY29uZmlnKGRz aSwgbW9kZSk7Cj4+PiArICAgIGR3X21pcGlfZHNpX3BhY2tldF9oYW5kbGVyX2NvbmZpZyhkc2kp Owo+Pj4gKyAgICBkd19taXBpX2RzaV92aWRlb19tb2RlX2NvbmZpZyhkc2kpOwo+Pj4gKyAgICBk d19taXBpX2RzaV92aWRlb19wYWNrZXRfY29uZmlnKGRzaSwgbW9kZSk7Cj4+PiArICAgIGR3X21p cGlfZHNpX2NvbW1hbmRfbW9kZV9jb25maWcoZHNpKTsKPj4+ICsgICAgZHdfbWlwaV9kc2lfbGlu ZV90aW1lcl9jb25maWcoZHNpLCBtb2RlKTsKPj4+ICsgICAgZHdfbWlwaV9kc2lfdmVydGljYWxf dGltaW5nX2NvbmZpZyhkc2ksIG1vZGUpOwo+Pj4gKwo+Pj4gKyAgICBkd19taXBpX2RzaV9kcGh5 X2luaXQoZHNpKTsKPj4+ICsgICAgZHdfbWlwaV9kc2lfZHBoeV90aW1pbmdfY29uZmlnKGRzaSk7 Cj4+PiArICAgIGR3X21pcGlfZHNpX2RwaHlfaW50ZXJmYWNlX2NvbmZpZyhkc2kpOwo+Pj4gKwo+ Pj4gKyAgICBkd19taXBpX2RzaV9jbGVhcl9lcnIoZHNpKTsKPj4+ICsKPj4+ICsgICAgcmV0ID0g cGh5X29wcy0+aW5pdChwcml2X2RhdGEpOwo+Pj4gKyAgICBpZiAocmV0KQo+Pj4gKyAgICAgICAg RFJNX0RFQlVHX0RSSVZFUigiUGh5IGluaXQoKSBmYWlsZWRcbiIpOwo+Pj4gKwo+Pj4gKyAgICBk d19taXBpX2RzaV9kcGh5X2VuYWJsZShkc2kpOwo+Pj4gKwo+Pj4gKyAgICBkd19taXBpX2RzaV93 YWl0X2Zvcl90d29fZnJhbWVzKG1vZGUpOwo+Pj4gKwo+Pj4gKyAgICAvKiBTd2l0Y2ggdG8gY21k IG1vZGUgZm9yIHBhbmVsLWJyaWRnZSBwcmVfZW5hYmxlICYgcGFuZWwgcHJlcGFyZSAqLwo+Pj4g KyAgICBkd19taXBpX2RzaV9zZXRfbW9kZShkc2ksIDApOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0 aWMgdm9pZCBkd19taXBpX2RzaV9icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UpCj4+PiArewo+Pj4gKyAgICBzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSA9IGJyaWRnZV90b19k c2koYnJpZGdlKTsKPj4+ICsKPj4+ICsgICAgLyogU3dpdGNoIHRvIHZpZGVvIG1vZGUgZm9yIHBh bmVsLWJyaWRnZSBlbmFibGUgJiBwYW5lbCBlbmFibGUgKi8KPj4+ICsgICAgZHdfbWlwaV9kc2lf c2V0X21vZGUoZHNpLCBNSVBJX0RTSV9NT0RFX1ZJREVPKTsKPj4+ICt9Cj4+PiArCj4+PiArc3Rh dGljIGVudW0gZHJtX21vZGVfc3RhdHVzCj4+PiArZHdfbWlwaV9kc2lfYnJpZGdlX21vZGVfdmFs aWQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4+ICsgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCBk d19taXBpX2RzaSAqZHNpID0gYnJpZGdlX3RvX2RzaShicmlkZ2UpOwo+Pj4gKyAgICBjb25zdCBz dHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpwZGF0YSA9IGRzaS0+cGxhdF9kYXRhOwo+Pj4g KyAgICBlbnVtIGRybV9tb2RlX3N0YXR1cyBtb2RlX3N0YXR1cyA9IE1PREVfT0s7Cj4+PiArCj4+ PiArICAgIGlmIChwZGF0YS0+bW9kZV92YWxpZCkKPj4+ICsgICAgICAgIG1vZGVfc3RhdHVzID0g cGRhdGEtPm1vZGVfdmFsaWQocGRhdGEtPnByaXZfZGF0YSwgbW9kZSk7Cj4+PiArCj4+PiArICAg IHJldHVybiBtb2RlX3N0YXR1czsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBkd19taXBp X2RzaV9icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+PiArewo+Pj4g KyAgICBzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSA9IGJyaWRnZV90b19kc2koYnJpZGdlKTsKPj4+ ICsKPj4+ICsgICAgaWYgKCFicmlkZ2UtPmVuY29kZXIpIHsKPj4+ICsgICAgICAgIERSTV9FUlJP UigiUGFyZW50IGVuY29kZXIgb2JqZWN0IG5vdCBmb3VuZFxuIik7Cj4+PiArICAgICAgICByZXR1 cm4gLUVOT0RFVjsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICAvKiBTZXQgdGhlIGVuY29kZXIg dHlwZSBhcyBjYWxsZXIgZG9lcyBub3Qga25vdyBpdCAqLwo+Pj4gKyAgICBicmlkZ2UtPmVuY29k ZXItPmVuY29kZXJfdHlwZSA9IERSTV9NT0RFX0VOQ09ERVJfRFNJOwo+Pj4gKwo+Pj4gKyAgICAv KiBBdHRhY2ggdGhlIHBhbmVsLWJyaWRnZSB0byB0aGUgZHNpIGJyaWRnZSAqLwo+Pj4gKyAgICBy ZXR1cm4gZHJtX2JyaWRnZV9hdHRhY2goYnJpZGdlLT5lbmNvZGVyLCBkc2ktPnBhbmVsX2JyaWRn ZSwKPj4+IGJyaWRnZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2JyaWRn ZV9mdW5jcyBkd19taXBpX2RzaV9icmlkZ2VfZnVuY3MgPSB7Cj4+PiArICAgIC5tb2RlX3NldCAg ICAgPSBkd19taXBpX2RzaV9icmlkZ2VfbW9kZV9zZXQsCj4+PiArICAgIC5lbmFibGUgICAgICAg ICAgPSBkd19taXBpX2RzaV9icmlkZ2VfZW5hYmxlLAo+Pj4gKyAgICAucG9zdF9kaXNhYmxlID0g ZHdfbWlwaV9kc2lfYnJpZGdlX3Bvc3RfZGlzYWJsZSwKPj4+ICsgICAgLm1vZGVfdmFsaWQgICA9 IGR3X21pcGlfZHNpX2JyaWRnZV9tb2RlX3ZhbGlkLAo+Pj4gKyAgICAuYXR0YWNoICAgICAgICAg ID0gZHdfbWlwaV9kc2lfYnJpZGdlX2F0dGFjaCwKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBz dHJ1Y3QgZHdfbWlwaV9kc2kgKgo+Pj4gK19fZHdfbWlwaV9kc2lfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldiwKPj4+ICsgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHdfbWlwaV9k c2lfcGxhdF9kYXRhICpwbGF0X2RhdGEpCj4+PiArewo+Pj4gKyAgICBzdHJ1Y3QgZGV2aWNlICpk ZXYgPSAmcGRldi0+ZGV2Owo+Pj4gKyAgICBzdHJ1Y3QgcmVzZXRfY29udHJvbCAqYXBiX3JzdDsK Pj4+ICsgICAgc3RydWN0IGR3X21pcGlfZHNpICpkc2k7Cj4+PiArICAgIHN0cnVjdCByZXNvdXJj ZSAqcmVzOwo+Pj4gKyAgICBpbnQgcmV0Owo+Pj4gKwo+Pj4gKyAgICBkc2kgPSBkZXZtX2t6YWxs b2MoZGV2LCBzaXplb2YoKmRzaSksIEdGUF9LRVJORUwpOwo+Pj4gKyAgICBpZiAoIWRzaSkKPj4+ ICsgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+Pj4gKwo+Pj4gKyAgICBkc2ktPmRl diA9IGRldjsKPj4+ICsgICAgZHNpLT5wbGF0X2RhdGEgPSBwbGF0X2RhdGE7Cj4+PiArCj4+PiAr ICAgIGlmICghcGxhdF9kYXRhLT5waHlfb3BzLT5pbml0IHx8Cj4+PiAhcGxhdF9kYXRhLT5waHlf b3BzLT5nZXRfbGFuZV9tYnBzKSB7Cj4+PiArICAgICAgICBEUk1fRVJST1IoIlBoeSBub3QgcHJv cGVybHkgY29uZmlndXJlZFxuIik7Cj4+PiArICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PREVW KTsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICBpZiAoIXBsYXRfZGF0YS0+YmFzZSkgewo+Pj4g KyAgICAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVN LCAwKTsKPj4+ICsgICAgICAgIGlmICghcmVzKQo+Pj4gKyAgICAgICAgICAgIHJldHVybiBFUlJf UFRSKC1FTk9ERVYpOwo+Pj4gKwo+Pj4gKyAgICAgICAgZHNpLT5iYXNlID0gZGV2bV9pb3JlbWFw X3Jlc291cmNlKGRldiwgcmVzKTsKPj4+ICsgICAgICAgIGlmIChJU19FUlIoZHNpLT5iYXNlKSkK Pj4+ICsgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKPj4+ICsKPj4+ICsgICAg fSBlbHNlIHsKPj4+ICsgICAgICAgIGRzaS0+YmFzZSA9IHBsYXRfZGF0YS0+YmFzZTsKPj4+ICsg ICAgfQo+Pj4gKwo+Pj4gKyAgICBkc2ktPnBjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicGNsayIp Owo+Pj4gKyAgICBpZiAoSVNfRVJSKGRzaS0+cGNsaykpIHsKPj4+ICsgICAgICAgIHJldCA9IFBU Ul9FUlIoZHNpLT5wY2xrKTsKPj4+ICsgICAgICAgIGRldl9lcnIoZGV2LCAiVW5hYmxlIHRvIGdl dCBwY2xrOiAlZFxuIiwgcmV0KTsKPj4+ICsgICAgICAgIHJldHVybiBFUlJfUFRSKHJldCk7Cj4+ PiArICAgIH0KPj4+ICsKPj4+ICsgICAgLyoKPj4+ICsgICAgICogTm90ZSB0aGF0IHRoZSByZXNl dCB3YXMgbm90IGRlZmluZWQgaW4gdGhlIGluaXRpYWwgZGV2aWNlCj4+PiB0cmVlLCBzbwo+Pj4g KyAgICAgKiB3ZSBoYXZlIHRvIGJlIHByZXBhcmVkIGZvciBpdCBub3QgYmVpbmcgZm91bmQuCj4+ PiArICAgICAqLwo+Pj4gKyAgICBhcGJfcnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldChkZXYs ICJhcGIiKTsKPj4+ICsgICAgaWYgKElTX0VSUihhcGJfcnN0KSkgewo+Pj4gKyAgICAgICAgcmV0 ID0gUFRSX0VSUihhcGJfcnN0KTsKPj4+ICsgICAgICAgIGlmIChyZXQgPT0gLUVOT0VOVCkgewo+ Pj4gKyAgICAgICAgICAgIGFwYl9yc3QgPSBOVUxMOwo+Pj4gKyAgICAgICAgfSBlbHNlIHsKPj4+ ICsgICAgICAgICAgICBkZXZfZXJyKGRldiwgIlVuYWJsZSB0byBnZXQgcmVzZXQgY29udHJvbDog JWRcbiIsIHJldCk7Cj4+PiArICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4+ICsg ICAgICAgIH0KPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICBpZiAoYXBiX3JzdCkgewo+Pj4gKyAg ICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+cGNsayk7Cj4+PiArICAgICAgICBp ZiAocmV0KSB7Cj4+PiArICAgICAgICAgICAgZGV2X2VycihkZXYsICIlczogRmFpbGVkIHRvIGVu YWJsZSBwY2xrXG4iLCBfX2Z1bmNfXyk7Cj4+PiArICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIo cmV0KTsKPj4+ICsgICAgICAgIH0KPj4+ICsKPj4+ICsgICAgICAgIHJlc2V0X2NvbnRyb2xfYXNz ZXJ0KGFwYl9yc3QpOwo+Pj4gKyAgICAgICAgdXNsZWVwX3JhbmdlKDEwLCAyMCk7Cj4+PiArICAg ICAgICByZXNldF9jb250cm9sX2RlYXNzZXJ0KGFwYl9yc3QpOwo+Pj4gKwo+Pj4gKyAgICAgICAg Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+cGNsayk7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsg ICAgcG1fcnVudGltZV9lbmFibGUoZGV2KTsKPj4+ICsKPj4+ICsgICAgZHNpLT5kc2lfaG9zdC5v cHMgPSAmZHdfbWlwaV9kc2lfaG9zdF9vcHM7Cj4+PiArICAgIGRzaS0+ZHNpX2hvc3QuZGV2ID0g ZGV2Owo+Pj4gKyAgICByZXQgPSBtaXBpX2RzaV9ob3N0X3JlZ2lzdGVyKCZkc2ktPmRzaV9ob3N0 KTsKPj4+ICsgICAgaWYgKHJldCkgewo+Pj4gKyAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQg dG8gcmVnaXN0ZXIgTUlQSSBob3N0OiAlZFxuIiwgcmV0KTsKPj4+ICsgICAgICAgIHJldHVybiBF UlJfUFRSKHJldCk7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgZHNpLT5icmlkZ2UuZHJpdmVy X3ByaXZhdGUgPSBkc2k7Cj4+PiArICAgIGRzaS0+YnJpZGdlLmZ1bmNzID0gJmR3X21pcGlfZHNp X2JyaWRnZV9mdW5jczsKPj4+ICsjaWZkZWYgQ09ORklHX09GCj4+PiArICAgIGRzaS0+YnJpZGdl Lm9mX25vZGUgPSBwZGV2LT5kZXYub2Zfbm9kZTsKPj4+ICsjZW5kaWYKPj4+ICsKPj4+ICsgICAg ZGV2X3NldF9kcnZkYXRhKGRldiwgZHNpKTsKPj4+ICsKPj4+ICsgICAgcmV0dXJuIGRzaTsKPj4+ ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgX19kd19taXBpX2RzaV9yZW1vdmUoc3RydWN0IGR3 X21pcGlfZHNpICpkc2kpCj4+PiArewo+Pj4gKyAgICBwbV9ydW50aW1lX2Rpc2FibGUoZHNpLT5k ZXYpOwo+Pj4gK30KPj4+ICsKPj4+ICsvKgo+Pj4gKyAqIFByb2JlL3JlbW92ZSBBUEksIHVzZWQg ZnJvbSBwbGF0Zm9ybXMgYmFzZWQgb24gdGhlIERSTSBicmlkZ2UgQVBJLgo+Pj4gKyAqLwo+Pj4g K2ludCBkd19taXBpX2RzaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+Pj4g KyAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSAqcGxhdF9k YXRhKQo+Pj4gK3sKPj4+ICsgICAgc3RydWN0IGR3X21pcGlfZHNpICpkc2k7Cj4+PiArCj4+PiAr ICAgIGRzaSA9IF9fZHdfbWlwaV9kc2lfcHJvYmUocGRldiwgcGxhdF9kYXRhKTsKPj4+ICsgICAg aWYgKElTX0VSUihkc2kpKQo+Pj4gKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoZHNpKTsKPj4+ICsK Pj4+ICsgICAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGR3X21pcGlf ZHNpX3Byb2JlKTsKPj4+ICsKPj4+ICt2b2lkIGR3X21pcGlfZHNpX3JlbW92ZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4gK3sKPj4+ICsgICAgc3RydWN0IGR3X21pcGlfZHNpICpk c2kgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPj4+ICsKPj4+ICsgICAgbWlwaV9kc2lf aG9zdF91bnJlZ2lzdGVyKCZkc2ktPmRzaV9ob3N0KTsKPj4+ICsKPj4+ICsgICAgX19kd19taXBp X2RzaV9yZW1vdmUoZHNpKTsKPj4+ICt9Cj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHdfbWlwaV9k c2lfcmVtb3ZlKTsKPj4+ICsKPj4+ICsvKgo+Pj4gKyAqIEJpbmQvdW5iaW5kIEFQSSwgdXNlZCBm cm9tIHBsYXRmb3JtcyBiYXNlZCBvbiB0aGUgY29tcG9uZW50Cj4+PiBmcmFtZXdvcmsuCj4+PiAr ICovCj4+PiAraW50IGR3X21pcGlfZHNpX2JpbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwgc3RydWN0IGRybV9lbmNvZGVyCj4+PiAqZW5jb2RlciwKPj4+ICsgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSAqcGxhdF9kYXRhKQo+Pj4gK3sKPj4+ICsg ICAgc3RydWN0IGR3X21pcGlfZHNpICpkc2k7Cj4+PiArICAgIGludCByZXQ7Cj4+PiArCj4+PiAr ICAgIGRzaSA9IF9fZHdfbWlwaV9kc2lfcHJvYmUocGRldiwgcGxhdF9kYXRhKTsKPj4+ICsgICAg aWYgKElTX0VSUihkc2kpKQo+Pj4gKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoZHNpKTsKPj4+ICsK Pj4+ICsgICAgcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgJmRzaS0+YnJpZGdlLCBO VUxMKTsKPj4+ICsgICAgaWYgKHJldCkgewo+Pj4gKyAgICAgICAgZHdfbWlwaV9kc2lfcmVtb3Zl KHBkZXYpOwo+Pj4gKyAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBicmlk Z2Ugd2l0aCBkcm1cbiIpOwo+Pj4gKyAgICAgICAgcmV0dXJuIHJldDsKPj4+ICsgICAgfQo+Pj4g Kwo+Pj4gKyAgICByZXR1cm4gMDsKPj4+ICt9Cj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHdfbWlw aV9kc2lfYmluZCk7Cj4+PiArCj4+PiArdm9pZCBkd19taXBpX2RzaV91bmJpbmQoc3RydWN0IGRl dmljZSAqZGV2KQo+Pj4gK3sKPj4+ICsgICAgc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKPj4+ICsKPj4+ICsgICAgX19kd19taXBpX2RzaV9yZW1vdmUoZHNp KTsKPj4+ICt9Cj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHdfbWlwaV9kc2lfdW5iaW5kKTsKPj4+ ICsKPj4+ICtNT0RVTEVfQVVUSE9SKCJDaHJpcyBaaG9uZyA8enl3QHJvY2stY2hpcHMuY29tPiIp Owo+Pj4gK01PRFVMRV9BVVRIT1IoIlBoaWxpcHBlIENvcm51IDxwaGlsaXBwZS5jb3JudUBzdC5j b20+Iik7Cj4+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJEVyBNSVBJIERTSSBob3N0IGNvbnRyb2xs ZXIgZHJpdmVyIik7Cj4+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+Pj4gK01PRFVMRV9BTElB UygicGxhdGZvcm06ZHctbWlwaS1kc2kiKTsKPj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9i cmlkZ2UvZHdfbWlwaV9kc2kuaAo+Pj4gYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfbWlwaV9kc2ku aAo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+IGluZGV4IDAwMDAwMDAuLjliMzBmZWMKPj4+ IC0tLSAvZGV2L251bGwKPj4+ICsrKyBiL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19taXBpX2RzaS5o Cj4+PiBAQCAtMCwwICsxLDM5IEBACj4+PiArLyoKPj4+ICsgKiBDb3B5cmlnaHQgKEMpIFNUTWlj cm9lbGVjdHJvbmljcyBTQSAyMDE3Cj4+PiArICoKPj4+ICsgKiBBdXRob3JzOiBQaGlsaXBwZSBD b3JudSA8cGhpbGlwcGUuY29ybnVAc3QuY29tPgo+Pj4gKyAqICAgICAgICAgIFlhbm5pY2sgRmVy dHJlIDx5YW5uaWNrLmZlcnRyZUBzdC5jb20+Cj4+PiArICoKPj4+ICsgKiBMaWNlbnNlIHRlcm1z OiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCksIHZlcnNpb24gMgo+Pj4gKyAqLwo+ Pj4gKwo+Pj4gKyNpZm5kZWYgX19EV19NSVBJX0RTSV9fCj4+PiArI2RlZmluZSBfX0RXX01JUElf RFNJX18KPj4+ICsKPj4+ICtzdHJ1Y3QgZHdfbWlwaV9kc2lfcGh5X29wcyB7Cj4+PiArICAgIGlu dCAoKmluaXQpKHZvaWQgKnByaXZfZGF0YSk7Cj4+PiArICAgIGludCAoKmdldF9sYW5lX21icHMp KHZvaWQgKnByaXZfZGF0YSwgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4+PiArICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1vZGVfZmxhZ3MsIHUzMiBsYW5lcywgdTMyIGZv cm1hdCwKPj4+ICsgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqbGFuZV9tYnBzKTsKPj4+ ICt9Owo+Pj4gKwo+Pj4gK3N0cnVjdCBkd19taXBpX2RzaV9wbGF0X2RhdGEgewo+Pj4gKyAgICB2 b2lkIF9faW9tZW0gKmJhc2U7Cj4+PiArICAgIHVuc2lnbmVkIGludCBtYXhfZGF0YV9sYW5lczsK Pj4+ICsKPj4+ICsgICAgZW51bSBkcm1fbW9kZV9zdGF0dXMgKCptb2RlX3ZhbGlkKSh2b2lkICpw cml2X2RhdGEsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZSk7Cj4+PiArCj4+PiArICAgIGNvbnN0IHN0cnVjdCBkd19taXBpX2Rz aV9waHlfb3BzICpwaHlfb3BzOwo+Pj4gKwo+Pj4gKyAgICB2b2lkICpwcml2X2RhdGE7Cj4+PiAr fTsKPj4+ICsKPj4+ICtpbnQgZHdfbWlwaV9kc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldiwKPj4+ICsgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkd19taXBpX2RzaV9wbGF0 X2RhdGEgKnBsYXRfZGF0YSk7Cj4+PiArdm9pZCBkd19taXBpX2RzaV9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldik7Cj4+PiAraW50IGR3X21pcGlfZHNpX2JpbmQoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGRybV9lbmNvZGVyCj4+PiAqZW5jb2RlciwKPj4+ ICsgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSAqcGxhdF9k YXRhKTsKPj4+ICt2b2lkIGR3X21pcGlfZHNpX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ Pj4gKwo+Pj4gKyNlbmRpZiAvKiBfX0RXX01JUElfRFNJX18gKi8KPj4+CgotLSAKUXVhbGNvbW0g SW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgQ29kZSBBdXJvcmEgRm9ydW0s CmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: architt@codeaurora.org (Archit Taneja) Date: Mon, 17 Jul 2017 13:36:57 +0530 Subject: [PATCH v5 4/7] drm/bridge/synopsys: Add MIPI DSI host controller bridge In-Reply-To: References: <1499071287-10414-1-git-send-email-philippe.cornu@st.com> <1499071287-10414-5-git-send-email-philippe.cornu@st.com> <0145b068-c28e-3664-86ae-0561c1da8eb5@codeaurora.org> Message-ID: <136ab12b-adfc-7acf-c3a5-3efc680eddbd@codeaurora.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 07/17/2017 01:24 PM, Philippe CORNU wrote: > > > On 07/12/2017 08:05 AM, Archit Taneja wrote: >> >> >> On 07/03/2017 02:11 PM, Philippe CORNU wrote: >>> Add a Synopsys Designware MIPI DSI host DRM bridge driver, based on the >>> Rockchip version from rockchip/dw-mipi-dsi.c with phy & bridge APIs. >>> >> >> The patch looks good now. One thing that needs to be updated is to make >> drm_bridge_add() not return anything. > > Hi Archit and many thanks for your review. > I have just sent a v6 version adding the drm_bridge_add() small fix. > >> >> The later patches in the series would be dependent on this patch, right? > yes > >> Since the ST patches go via drm-misc too, we could either push all these >> together, or I could push the bridge driver to drm-misc-next, and the ST >> patches can be pushed after. Any preference? If not, I'll do the latter. >> >> Archit >> > The v6 version has been tested on today drm-misc-next branch (few > minutes ago). You can push the entire serie as it is maybe the most > simple solution. Or you can push "up to the synopsys part" and Benjamin > & I will push the remaining part. In fact, it is up to you, simply tell > us your preferred approach. Thanks. I'll push patches 1-4 after some build testing. You can push the rest afterwards. Thanks, Archit > > Once again, many thanks, > Philippe > > >>> Signed-off-by: Philippe CORNU >>> --- >>> drivers/gpu/drm/bridge/synopsys/Kconfig | 6 + >>> drivers/gpu/drm/bridge/synopsys/Makefile | 2 + >>> drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 979 >>> ++++++++++++++++++++++++++ >>> include/drm/bridge/dw_mipi_dsi.h | 39 + >>> 4 files changed, 1026 insertions(+) >>> create mode 100644 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c >>> create mode 100644 include/drm/bridge/dw_mipi_dsi.h >>> >>> diff --git a/drivers/gpu/drm/bridge/synopsys/Kconfig >>> b/drivers/gpu/drm/bridge/synopsys/Kconfig >>> index 40d2827..f00ee26 100644 >>> --- a/drivers/gpu/drm/bridge/synopsys/Kconfig >>> +++ b/drivers/gpu/drm/bridge/synopsys/Kconfig >>> @@ -21,3 +21,9 @@ config DRM_DW_HDMI_I2S_AUDIO >>> help >>> Support the I2S Audio interface which is part of the Synopsys >>> Designware HDMI block. >>> + >>> +config DRM_DW_MIPI_DSI >>> + tristate >>> + select DRM_KMS_HELPER >>> + select DRM_MIPI_DSI >>> + select DRM_PANEL_BRIDGE >>> diff --git a/drivers/gpu/drm/bridge/synopsys/Makefile >>> b/drivers/gpu/drm/bridge/synopsys/Makefile >>> index 17aa7a6..5f57d36 100644 >>> --- a/drivers/gpu/drm/bridge/synopsys/Makefile >>> +++ b/drivers/gpu/drm/bridge/synopsys/Makefile >>> @@ -3,3 +3,5 @@ >>> obj-$(CONFIG_DRM_DW_HDMI) += dw-hdmi.o >>> obj-$(CONFIG_DRM_DW_HDMI_AHB_AUDIO) += dw-hdmi-ahb-audio.o >>> obj-$(CONFIG_DRM_DW_HDMI_I2S_AUDIO) += dw-hdmi-i2s-audio.o >>> + >>> +obj-$(CONFIG_DRM_DW_MIPI_DSI) += dw-mipi-dsi.o >>> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c >>> b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c >>> new file mode 100644 >>> index 0000000..406000e >>> --- /dev/null >>> +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c >>> @@ -0,0 +1,979 @@ >>> +/* >>> + * Copyright (c) 2016, Fuzhou Rockchip Electronics Co., Ltd >>> + * Copyright (C) STMicroelectronics SA 2017 >>> + * >>> + * This program is free software; you can redistribute it and/or modify >>> + * it under the terms of the GNU General Public License as published by >>> + * the Free Software Foundation; either version 2 of the License, or >>> + * (at your option) any later version. >>> + * >>> + * Modified by Philippe Cornu >>> + * This generic Synopsys DesignWare MIPI DSI host driver is based on the >>> + * Rockchip version from rockchip/dw-mipi-dsi.c with phy & bridge APIs. >>> + */ >>> + >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include