From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH 2nd RESEND v2 3/3] drm/bridge: add Silicon Image SiI8620 driver Date: Mon, 26 Sep 2016 11:36:19 +0200 Message-ID: <8f2adec2-87ea-2dec-14cf-6d9568be16dd@samsung.com> References: <1473842027-21670-1-git-send-email-a.hajda@samsung.com> <1473842027-21670-4-git-send-email-a.hajda@samsung.com> <57E802D6.8010900@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id ED9B76E433 for ; Mon, 26 Sep 2016 09:36:24 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OE3003BHUOLIF00@mailout1.w1.samsung.com> for dri-devel@lists.freedesktop.org; Mon, 26 Sep 2016 10:36:22 +0100 (BST) In-reply-to: <57E802D6.8010900@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Archit Taneja , "open list:DRM DRIVERS" , Inki Dae , Daniel Vetter Cc: Bartlomiej Zolnierkiewicz , Marek Szyprowski List-Id: dri-devel@lists.freedesktop.org SGksCgpUaGFua3MgZm9yIHJldmlldy4KCgpPbiAyNS4wOS4yMDE2IDE5OjAxLCBBcmNoaXQgVGFu ZWphIHdyb3RlOgo+IEhpLAo+Cj4gT24gOS8xNC8yMDE2IDI6MDMgUE0sIEFuZHJ6ZWogSGFqZGEg d3JvdGU6Cj4+IFNpSTg2MjAgdHJhbnNtaXR0ZXIgY29udmVydHMgZVRNRFMvSERNSSBzaWduYWwg dG8gTUhMIDMuMC4KPj4gSXQgaXMgY29udHJvbGxlZCB2aWEgSTJDIGJ1cy4gSXRzIGludGVyYWN0 aW9uIHdpdGggb3RoZXIKPj4gZGV2aWNlcyBpbiB2aWRlbyBwaXBlbGluZSBpcyBwZXJmb3JtZWQg bWFpbmx5IG9uIEhXIGxldmVsLgo+PiBUaGUgb25seSBpbnRlcmFjdGlvbiBpdCBkb2VzIG9uIGRl dmljZSBkcml2ZXIgbGV2ZWwgaXMKPj4gZmlsdGVyaW5nLW91dCB1bnN1cHBvcnRlZCB2aWRlbyBt b2RlcywgaXQgZXhwb3NlcyBkcm1fYnJpZGdlCj4+IGludGVyZmFjZSB0byBwZXJmb3JtIHRoaXMg b3BlcmF0aW9uLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNh bXN1bmcuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAg ICAgfCAgICA3ICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlICAgICAgfCAg ICAxICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIwLmMgfCAxNTY4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL3NpbC1zaWk4NjIwLmggfCAxNTE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCAzMDkzIGluc2VydGlvbnMoKykKPj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWwtc2lpODYyMC5jCj4+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lsLXNpaTg2MjAuaAo+Pgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9LY29uZmlnCj4+IGluZGV4IGI1OTBlNjcuLmU3ZmIxNzkgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL0tjb25maWcKPj4gQEAgLTUwLDYgKzUwLDEzIEBAIGNvbmZpZyBEUk1fUEFSQURF X1BTODYyMgo+PiAgIAktLS1oZWxwLS0tCj4+ICAgCSAgUGFyYWRlIGVEUC1MVkRTIGJyaWRnZSBj aGlwIGRyaXZlci4KPj4KPj4gK2NvbmZpZyBEUk1fU0lMX1NJSTg2MjAKPj4gKwl0cmlzdGF0ZSAi U2lsaWNvbiBJbWFnZSBTSUk4NjIwIEhETUkvTUhMIGJyaWRnZSIKPj4gKwlkZXBlbmRzIG9uIE9G Cj4+ICsJc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4+ICsJaGVscAo+PiArCSAgU2lsaWNvbiBJbWFn ZSBTSUk4NjIwIEhETUkvTUhMIGJyaWRnZSBjaGlwIGRyaXZlci4KPj4gKwo+PiAgIGNvbmZpZyBE Uk1fU0lJOTAyWAo+PiAgIAl0cmlzdGF0ZSAiU2lsaWNvbiBJbWFnZSBzaWk5MDJ4IFJHQi9IRE1J IGJyaWRnZSIKPj4gICAJZGVwZW5kcyBvbiBPRgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPj4g aW5kZXggZWZkYjA3ZS4uMzA0Y2Y5ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4+ IEBAIC01LDYgKzUsNyBAQCBvYmotJChDT05GSUdfRFJNX0RXX0hETUkpICs9IGR3LWhkbWkubwo+ PiAgIG9iai0kKENPTkZJR19EUk1fRFdfSERNSV9BSEJfQVVESU8pICs9IGR3LWhkbWktYWhiLWF1 ZGlvLm8KPj4gICBvYmotJChDT05GSUdfRFJNX05YUF9QVE4zNDYwKSArPSBueHAtcHRuMzQ2MC5v Cj4+ICAgb2JqLSQoQ09ORklHX0RSTV9QQVJBREVfUFM4NjIyKSArPSBwYXJhZGUtcHM4NjIyLm8K Pj4gK29iai0kKENPTkZJR19EUk1fU0lMX1NJSTg2MjApICs9IHNpbC1zaWk4NjIwLm8KPj4gICBv YmotJChDT05GSUdfRFJNX1NJSTkwMlgpICs9IHNpaTkwMngubwo+PiAgIG9iai0kKENPTkZJR19E Uk1fVE9TSElCQV9UQzM1ODc2NykgKz0gdGMzNTg3Njcubwo+PiAgIG9iai0kKENPTkZJR19EUk1f QU5BTE9HSVhfRFApICs9IGFuYWxvZ2l4Lwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9zaWwtc2lpODYyMC5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWwtc2lpODYy MC5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjNiMjczYzcKPj4g LS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIw LmMKPj4gQEAgLTAsMCArMSwxNTY4IEBACj4+ICsvKgo+PiArICogRHJpdmVyIGZvciBTaWxpY29u IEltYWdlIFNpSTg2MjAgTW9iaWxlIEhEIFRyYW5zbWl0dGVyCj4gV291bGQgYmUgbmljZSB0byBt ZW50aW9uICJlVE1EUy9IRE1JIHNpZ25hbCB0byBNSEwgMy4wLiIgaGVyZSwgc28gdGhhdAo+IHBl b3BsZSBrbm93IHdoYXQgaXQncyB1c2VkIGZvciB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIHJl c3Qgb2YgdGhlCj4gZHJpdmVyLgoKT0sKCj4KPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTUsIFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCj4+ICsgKiBBbmRyemVqIEhhamRhIDxh LmhhamRhQHNhbXN1bmcuY29tPgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4+ICsgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MiBhcwo+PiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4+ ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+PiArI2luY2x1ZGUgPGRy bS9kcm1fZWRpZC5oPgo+PiArCj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4+ICsjaW5jbHVk ZSA8bGludXgvZGVsYXkuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4+ ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+ Cj4+ICsjaW5jbHVkZSA8bGludXgvaXJxLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+ Cj4+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L21obC5oPgo+ PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+ Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4+ICsjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgo+PiArCj4+ICsjaW5jbHVkZSAic2lsLXNpaTg2MjAuaCIKPj4gKwo+PiAr I2RlZmluZSBWQUxfUlhfSERNSV9DVFJMMl9ERUZWQUwJVkFMX1JYX0hETUlfQ1RSTDJfSURMRV9D TlQoMykKPj4gKwo+PiArZW51bSBzaWk4NjIwX21vZGUgewo+PiArCUNNX0RJU0NPTk5FQ1RFRCwK Pj4gKwlDTV9ESVNDT1ZFUlksCj4+ICsJQ01fTUhMMSwKPj4gKwlDTV9NSEwzLAo+PiArCUNNX0VD QlVTX1MKPj4gK307Cj4+ICsKPj4gK2VudW0gc2lpODYyMF9zaW5rX3R5cGUgewo+PiArCVNJTktf Tk9ORSwKPj4gKwlTSU5LX0hETUksCj4+ICsJU0lOS19EVkkKPj4gK307Cj4+ICsKPj4gK2VudW0g c2lpODYyMF9tdF9zdGF0ZSB7Cj4+ICsJTVRfU1RBVEVfUkVBRFksCj4+ICsJTVRfU1RBVEVfQlVT WSwKPj4gKwlNVF9TVEFURV9ET05FCj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3Qgc2lpODYyMCB7Cj4+ ICsJc3RydWN0IGRybV9icmlkZ2UgYnJpZGdlOwo+PiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPj4g KwlzdHJ1Y3QgY2xrICpjbGtfeHRhbDsKPj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvX3Jlc2V0 Owo+PiArCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9faW50Owo+PiArCXN0cnVjdCByZWd1bGF0b3Jf YnVsa19kYXRhIHN1cHBsaWVzWzJdOwo+PiArCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBjb250ZXh0 IGxvY2ssIHByb3RlY3RzIGZpZWxkcyBiZWxvdyAqLwo+PiArCWludCBlcnJvcjsKPj4gKwllbnVt IHNpaTg2MjBfbW9kZSBtb2RlOwo+PiArCWVudW0gc2lpODYyMF9zaW5rX3R5cGUgc2lua190eXBl Owo+PiArCXU4IGNidXNfc3RhdHVzOwo+PiArCXU4IHN0YXRbTUhMX0RTVF9TSVpFXTsKPj4gKwl1 OCB4c3RhdFtNSExfWERTX1NJWkVdOwo+PiArCXU4IGRldmNhcFtNSExfRENBUF9TSVpFXTsKPj4g Kwl1OCB4ZGV2Y2FwW01ITF9YRENfU0laRV07Cj4+ICsJdTggYXZpZlsxOV07Cj4+ICsJc3RydWN0 IGVkaWQgKmVkaWQ7Cj4+ICsJdW5zaWduZWQgaW50IGdlbjJfd3JpdGVfYnVyc3Q6MTsKPj4gKwll bnVtIHNpaTg2MjBfbXRfc3RhdGUgbXRfc3RhdGU7Cj4+ICsJc3RydWN0IGxpc3RfaGVhZCBtdF9x dWV1ZTsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBzaWk4NjIwX210X21zZzsKPj4gKwo+PiArdHlw ZWRlZiB2b2lkICgqc2lpODYyMF9tdF9tc2dfY2IpKHN0cnVjdCBzaWk4NjIwICpjdHgsCj4+ICsJ CQkJICBzdHJ1Y3Qgc2lpODYyMF9tdF9tc2cgKm1zZyk7Cj4+ICsKPj4gK3N0cnVjdCBzaWk4NjIw X210X21zZyB7Cj4+ICsJc3RydWN0IGxpc3RfaGVhZCBub2RlOwo+PiArCXU4IHJlZ1s0XTsKPj4g Kwl1OCByZXQ7Cj4+ICsJc2lpODYyMF9tdF9tc2dfY2Igc2VuZDsKPj4gKwlzaWk4NjIwX210X21z Z19jYiByZWN2Owo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHU4IHNpaTg2MjBfaTJjX3Bh Z2VbXSA9IHsKPj4gKwkweDM5LCAvKiBNYWluIFN5c3RlbSAqLwo+PiArCTB4M2QsIC8qIFRETSBh bmQgSFNJQyAqLwo+PiArCTB4NDksIC8qIFRNRFMgUmVjZWl2ZXIsIE1ITCBFRElEICovCj4+ICsJ MHg0ZCwgLyogZU1TQywgSERDUCwgSFNJQyAqLwo+PiArCTB4NWQsIC8qIE1ITCBTcGVjICovCj4+ ICsJMHg2NCwgLyogTUhMIENCVVMgKi8KPj4gKwkweDU5LCAvKiBIYXJkd2FyZSBUUEkgKFRyYW5z bWl0dGVyIFByb2dyYW1taW5nIEludGVyZmFjZSkgKi8KPj4gKwkweDYxLCAvKiBlQ0JVUy1TLCBl Q0JVUy1EICovCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgdm9pZCBzaWk4NjIwX2ZldGNoX2VkaWQo c3RydWN0IHNpaTg2MjAgKmN0eCk7Cj4+ICtzdGF0aWMgdm9pZCBzaWk4NjIwX3NldF91cHN0cmVh bV9lZGlkKHN0cnVjdCBzaWk4NjIwICpjdHgpOwo+PiArc3RhdGljIHZvaWQgc2lpODYyMF9lbmFi bGVfaHBkKHN0cnVjdCBzaWk4NjIwICpjdHgpOwo+PiArc3RhdGljIHZvaWQgc2lpODYyMF9taGxf ZGlzY29ubmVjdGVkKHN0cnVjdCBzaWk4NjIwICpjdHgpOwo+PiArCj4+ICtzdGF0aWMgaW50IHNp aTg2MjBfY2xlYXJfZXJyb3Ioc3RydWN0IHNpaTg2MjAgKmN0eCkKPj4gK3sKPj4gKwlpbnQgcmV0 ID0gY3R4LT5lcnJvcjsKPj4gKwo+PiArCWN0eC0+ZXJyb3IgPSAwOwo+PiArCXJldHVybiByZXQ7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHNpaTg2MjBfcmVhZF9idWYoc3RydWN0IHNpaTg2 MjAgKmN0eCwgdTE2IGFkZHIsIHU4ICpidWYsIGludCBsZW4pCj4+ICt7Cj4+ICsJc3RydWN0IGRl dmljZSAqZGV2ID0gY3R4LT5kZXY7Cj4+ICsJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRv X2kyY19jbGllbnQoZGV2KTsKPj4gKwl1OCBkYXRhID0gYWRkcjsKPj4gKwlzdHJ1Y3QgaTJjX21z ZyBtc2dbXSA9IHsKPj4gKwkJewo+PiArCQkJLmFkZHIgPSBzaWk4NjIwX2kyY19wYWdlW2FkZHIg Pj4gOF0sCj4+ICsJCQkuZmxhZ3MgPSBjbGllbnQtPmZsYWdzLAo+PiArCQkJLmxlbiA9IDEsCj4+ ICsJCQkuYnVmID0gJmRhdGEKPj4gKwkJfSwKPj4gKwkJewo+PiArCQkJLmFkZHIgPSBzaWk4NjIw X2kyY19wYWdlW2FkZHIgPj4gOF0sCj4+ICsJCQkuZmxhZ3MgPSBjbGllbnQtPmZsYWdzIHwgSTJD X01fUkQsCj4+ICsJCQkubGVuID0gbGVuLAo+PiArCQkJLmJ1ZiA9IGJ1Zgo+PiArCQl9LAo+PiAr CX07Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlmIChjdHgtPmVycm9yKQo+PiArCQlyZXR1cm47 Cj4+ICsKPj4gKwlyZXQgPSBpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCBtc2csIDIpOwo+ PiArCWRldl9kYmcoZGV2LCAicmVhZCBhdCAlMDR4OiAlKnBoLCAlZFxuIiwgYWRkciwgbGVuLCBi dWYsIHJldCk7Cj4+ICsKPj4gKwlpZiAocmV0ICE9IDIpIHsKPj4gKwkJZGV2X2VycihkZXYsICJS ZWFkIGF0ICUjMDZ4IG9mICVkIGJ5dGVzIGZhaWxlZCB3aXRoIGNvZGUgJWQuXG4iLAo+PiArCQkJ YWRkciwgbGVuLCByZXQpOwo+PiArCQljdHgtPmVycm9yID0gcmV0IDwgMCA/IHJldCA6IC1FSU87 Cj4+ICsJfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgdTggc2lpODYyMF9yZWFkYihzdHJ1Y3Qgc2lp ODYyMCAqY3R4LCB1MTYgYWRkcikKPj4gK3sKPj4gKwl1OCByZXQ7Cj4+ICsKPj4gKwlzaWk4NjIw X3JlYWRfYnVmKGN0eCwgYWRkciwgJnJldCwgMSk7Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIHZvaWQgc2lpODYyMF93cml0ZV9idWYoc3RydWN0IHNpaTg2MjAgKmN0eCwg dTE2IGFkZHIsIGNvbnN0IHU4ICpidWYsCj4+ICsJCQkgICAgICBpbnQgbGVuKQo+PiArewo+PiAr CXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2Owo+PiArCXN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7Cj4+ICsJdTggZGF0YVsyXTsKPj4gKwlzdHJ1Y3Qg aTJjX21zZyBtc2cgPSB7Cj4+ICsJCS5hZGRyID0gc2lpODYyMF9pMmNfcGFnZVthZGRyID4+IDhd LAo+PiArCQkuZmxhZ3MgPSBjbGllbnQtPmZsYWdzLAo+PiArCQkubGVuID0gbGVuICsgMSwKPj4g Kwl9Owo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlpZiAoY3R4LT5lcnJvcikKPj4gKwkJcmV0dXJu Owo+PiArCj4+ICsJaWYgKGxlbiA+IDEpIHsKPj4gKwkJbXNnLmJ1ZiA9IGttYWxsb2MobGVuICsg MSwgR0ZQX0tFUk5FTCk7Cj4+ICsJCWlmICghbXNnLmJ1Zikgewo+PiArCQkJY3R4LT5lcnJvciA9 IC1FTk9NRU07Cj4+ICsJCQlyZXR1cm47Cj4+ICsJCX0KPj4gKwkJbWVtY3B5KG1zZy5idWYgKyAx LCBidWYsIGxlbik7Cj4+ICsJfSBlbHNlIHsKPj4gKwkJbXNnLmJ1ZiA9IGRhdGE7Cj4+ICsJCW1z Zy5idWZbMV0gPSAqYnVmOwo+PiArCX0KPj4gKwo+PiArCW1zZy5idWZbMF0gPSBhZGRyOwo+PiAr Cj4+ICsJcmV0ID0gaTJjX3RyYW5zZmVyKGNsaWVudC0+YWRhcHRlciwgJm1zZywgMSk7Cj4+ICsJ ZGV2X2RiZyhkZXYsICJ3cml0ZSBhdCAlMDR4OiAlKnBoLCAlZFxuIiwgYWRkciwgbGVuLCBidWYs IHJldCk7Cj4+ICsKPj4gKwlpZiAocmV0ICE9IDEpIHsKPj4gKwkJZGV2X2VycihkZXYsICJXcml0 ZSBhdCAlIzA2eCBvZiAlKnBoIGZhaWxlZCB3aXRoIGNvZGUgJWQuXG4iLAo+PiArCQkJYWRkciwg bGVuLCBidWYsIHJldCk7Cj4+ICsJCWN0eC0+ZXJyb3IgPSByZXQgPzogLUVJTzsKPj4gKwl9Cj4+ ICsKPj4gKwlpZiAobGVuID4gMSkKPj4gKwkJa2ZyZWUobXNnLmJ1Zik7Cj4+ICt9Cj4+ICsKPj4g KyNkZWZpbmUgc2lpODYyMF93cml0ZShjdHgsIGFkZHIsIGFyci4uLikgXAo+PiArKHtcCj4+ICsJ dTggZFtdID0geyBhcnIgfTsgXAo+PiArCXNpaTg2MjBfd3JpdGVfYnVmKGN0eCwgYWRkciwgZCwg QVJSQVlfU0laRShkKSk7IFwKPj4gK30pCj4+ICsKPj4gK3N0YXRpYyB2b2lkIF9fc2lpODYyMF93 cml0ZV9zZXEoc3RydWN0IHNpaTg2MjAgKmN0eCwgdTE2ICpzZXEsIGludCBsZW4pCj4+ICt7Cj4+ ICsJaW50IGk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpCj4+ICsJCXNp aTg2MjBfd3JpdGUoY3R4LCBzZXFbaV0sIHNlcVtpICsgMV0pOwo+PiArfQo+PiArCj4+ICsjZGVm aW5lIHNpaTg2MjBfd3JpdGVfc2VxKGN0eCwgc2VxLi4uKSBcCj4+ICsoe1wKPj4gKwl1MTYgZFtd ID0geyBzZXEgfTsgXAo+PiArCV9fc2lpODYyMF93cml0ZV9zZXEoY3R4LCBkLCBBUlJBWV9TSVpF KGQpKTsgXAo+PiArfSkKPj4gKwo+IElzIGl0IHBvc3NpYmxlIHRvIHVzZSByZWdtYXBfYnVsa19y ZWFkL3dyaXRlIGFwaSBoZXJlIGluc3RlYWQ/CgpzaWk4NjIwIGFkZHJlc3Mgc3BhY2UgaXMgZGl2 aWRlZCBpbnRvIDggcGFnZXMgKHNlZSBzaWk4NjIwX2kyY19wYWdlCnZhcmlhYmxlKSwgZXZlcnkg cGFnZSBpcyBtYXBwZWQgdG8gc2VwYXJhdGUgaTJjIHNsYXZlIGFkZHJlc3MuCkkvTyBhY2Nlc3Mg aGVscGVycyBkZWZpbmVkIGFib3ZlIHdvcmtzIHdpdGggdGhpcyBhZGRyZXNzIHNwYWNlLAppdCBp cyBpbXBvcnRhbnQgZXNwZWNpYWxseSBmb3Igc2lpODYyMF93cml0ZV9zZXEsIHdoaWNoIGFsbG93 IHRvIHNldApyZWdpc3RlcnMgbG9jYXRlZCBpbiBkaWZmZXJlbnQgcGFnZXMgd2l0aGluIG9uZSBj YWxsLgoKVGhlb3JldGljYWxseSBpdCBjb3VsZCBiZSBwb3NzaWJsZSB0byByZWdpc3RlciBzZXBh cmF0ZSByZWdtYXAgZm9yIGV2ZXJ5CnBhZ2UgYW5kIHJld3JpdGUgaGVscGVycyBhYm92ZSB0byB1 c2UgdGhlbSwgYnV0IHRoZSBidXJkZW4gc2VlbXMKdG8gYmUgc2ltaWxhciBvciBiaWdnZXIgYW5k IG5vIHJlYWwgYmVuZWZpdC4KPgo+PiArc3RhdGljIHZvaWQgc2lpODYyMF9zZXRiaXRzKHN0cnVj dCBzaWk4NjIwICpjdHgsIHUxNiBhZGRyLCB1OCBtYXNrLCB1OCB2YWwpCj4+ICt7Cj4+ICsJdmFs ID0gKHZhbCAmIG1hc2spIHwgKHNpaTg2MjBfcmVhZGIoY3R4LCBhZGRyKSAmIH5tYXNrKTsKPj4g KwlzaWk4NjIwX3dyaXRlKGN0eCwgYWRkciwgdmFsKTsKPj4gK30KPj4gKwoKKC4uLikKCj4+ICsK Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHNpaTg2MjAgKmJyaWRnZV90b19zaWk4NjIwKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+ICt7Cj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihicmlk Z2UsIHN0cnVjdCBzaWk4NjIwLCBicmlkZ2UpOwo+PiArfQo+PiArCj4+ICt2b2lkIHNpaTg2MjBf YnJpZGdlX2R1bW15KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+ICt7Cj4+ICsKPj4gK30K Pj4gKwo+IFdlIGNhbiBub3cgZ2V0IHJpZCBvZiB0aGUgZHVtbXkgYnJpZGdlIG9wcyBhbmQgbm90 IHBvcHVsYXRlIGFueXRoaW5nLgoKWWVhaCwgd29ybGQgaGFzIGNoYW5nZWQgYmV0d2VlbiByZXNl bmRzLCBJIHdpbGwgcmVtb3ZlIGl0IGluIG5leHQgaXRlcmF0aW9uLgoKPgo+PiArYm9vbCBzaWk4 NjIwX21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4gKwkJICAgY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4+ICsJCSAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlKQo+PiArewo+PiArCXN0cnVjdCBzaWk4NjIwICpjdHggPSBi cmlkZ2VfdG9fc2lpODYyMChicmlkZ2UpOwo+PiArCWJvb2wgcmV0ID0gZmFsc2U7Cj4+ICsJaW50 IG1heF9jbG9jayA9IDc0MjUwOwo+PiArCj4+ICsJbXV0ZXhfbG9jaygmY3R4LT5sb2NrKTsKPj4g Kwo+PiArCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+PiArCQln b3RvIG91dDsKPj4gKwo+PiArCWlmIChjdHgtPmRldmNhcFtNSExfRENBUF9WSURfTElOS19NT0RF XSAmIE1ITF9EQ0FQX1ZJRF9MSU5LX1BQSVhFTCkKPj4gKwkJbWF4X2Nsb2NrID0gMzAwMDAwOwo+ PiArCj4+ICsJcmV0ID0gbW9kZS0+Y2xvY2sgPD0gbWF4X2Nsb2NrOwo+PiArCj4+ICtvdXQ6Cj4+ ICsJbXV0ZXhfdW5sb2NrKCZjdHgtPmxvY2spOwo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30K Pj4gKwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgc2lpODYy MF9icmlkZ2VfZnVuY3MgPSB7Cj4+ICsJLnByZV9lbmFibGUgPSBzaWk4NjIwX2JyaWRnZV9kdW1t eSwKPj4gKwkuZW5hYmxlID0gc2lpODYyMF9icmlkZ2VfZHVtbXksCj4+ICsJLmRpc2FibGUgPSBz aWk4NjIwX2JyaWRnZV9kdW1teSwKPj4gKwkucG9zdF9kaXNhYmxlID0gc2lpODYyMF9icmlkZ2Vf ZHVtbXksCj4+ICsJLm1vZGVfZml4dXAgPSBzaWk4NjIwX21vZGVfZml4dXAsCj4+ICt9Owo+PiAr Cj4+ICtzdGF0aWMgaW50IHNpaTg2MjBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwK Pj4gKwkJCSBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4+ICt7Cj4+ICsJc3RydWN0 IGRldmljZSAqZGV2ID0gJmNsaWVudC0+ZGV2Owo+PiArCXN0cnVjdCBzaWk4NjIwICpjdHg7Cj4+ ICsJaW50IHJldDsKPj4gKwo+PiArCWN0eCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY3R4 KSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFjdHgpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiAr Cj4+ICsJY3R4LT5kZXYgPSBkZXY7Cj4+ICsJbXV0ZXhfaW5pdCgmY3R4LT5sb2NrKTsKPj4gKwlJ TklUX0xJU1RfSEVBRCgmY3R4LT5tdF9xdWV1ZSk7Cj4+ICsKPj4gKwljdHgtPmNsa194dGFsID0g ZGV2bV9jbGtfZ2V0KGRldiwgInh0YWwiKTsKPj4gKwlpZiAoSVNfRVJSKGN0eC0+Y2xrX3h0YWwp KSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCB4dGFsIGNsb2NrIGZyb20gRFRc biIpOwo+PiArCQlyZXR1cm4gUFRSX0VSUihjdHgtPmNsa194dGFsKTsKPj4gKwl9Cj4+ICsKPj4g KwlpZiAoIWNsaWVudC0+aXJxKSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAibm8gaXJxIHByb3ZpZGVk XG4iKTsKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJfQo+PiArCWlycV9zZXRfc3RhdHVzX2Zs YWdzKGNsaWVudC0+aXJxLCBJUlFfTk9BVVRPRU4pOwo+PiArCXJldCA9IGRldm1fcmVxdWVzdF90 aHJlYWRlZF9pcnEoZGV2LCBjbGllbnQtPmlycSwgTlVMTCwKPj4gKwkJCXNpaTg2MjBfaXJxX3Ro cmVhZCwgSVJRRl9UUklHR0VSX0hJR0ggfCBJUlFGX09ORVNIT1QsCj4+ICsJCQkic2lpODYyMCIs IGN0eCk7Cj4+ICsKPj4gKwljdHgtPmdwaW9fcmVzZXQgPSBkZXZtX2dwaW9kX2dldChkZXYsICJy ZXNldCIsIEdQSU9EX09VVF9ISUdIKTsKPj4gKwlpZiAoSVNfRVJSKGN0eC0+Z3Bpb19yZXNldCkp IHsKPj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHJlc2V0IGdwaW8gZnJvbSBEVFxu Iik7Cj4+ICsJCXJldHVybiBQVFJfRVJSKGN0eC0+Z3Bpb19yZXNldCk7Cj4+ICsJfQo+PiArCj4+ ICsJY3R4LT5zdXBwbGllc1swXS5zdXBwbHkgPSAiY3ZjYzEwIjsKPj4gKwljdHgtPnN1cHBsaWVz WzFdLnN1cHBseSA9ICJpb3ZjYzE4IjsKPj4gKwlyZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dl dChkZXYsIDIsIGN0eC0+c3VwcGxpZXMpOwo+PiArCWlmIChyZXQpCj4+ICsJCXJldHVybiByZXQ7 Cj4+ICsKPj4gKwlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBjdHgpOwo+PiArCj4+ICsJY3R4 LT5icmlkZ2UuZnVuY3MgPSAmc2lpODYyMF9icmlkZ2VfZnVuY3M7Cj4+ICsJY3R4LT5icmlkZ2Uu b2Zfbm9kZSA9IGRldi0+b2Zfbm9kZTsKPj4gKwlkcm1fYnJpZGdlX2FkZCgmY3R4LT5icmlkZ2Up Owo+PiArCj4+ICsJc2lpODYyMF9jYWJsZV9pbihjdHgpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc2lpODYyMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPj4gK3sKPj4gKwlzdHJ1Y3Qgc2lpODYyMCAqY3R4ID0gaTJjX2dldF9jbGllbnRk YXRhKGNsaWVudCk7Cj4+ICsKPj4gKwlkaXNhYmxlX2lycSh0b19pMmNfY2xpZW50KGN0eC0+ZGV2 KS0+aXJxKTsKPj4gKwltdXRleF9sb2NrKCZjdHgtPmxvY2spOwo+PiArCWRybV9icmlkZ2VfcmVt b3ZlKCZjdHgtPmJyaWRnZSk7Cj4gRG8gd2UgbmVlZCB0byBjYWxsIGRybV9icmlkZ2VfcmVtb3Zl IHdpdGggdGhlIGxvY2sgaGVsZCB0b28/CgpObywgaW4gZmFjdCBhZnRlciBkaXNhYmxpbmcgaXJx IHRoZXJlIHdpbGwgYmUgbm8gY29uY3VycmVudCBhY2Nlc3MKdG8gdGhlIGNvbnRleHQgc28gbG9j a2luZyBoZXJlIGNhbiBiZSByZW1vdmVkLgoKT24gdGhlIG90aGVyIHNpZGUgZHJtX2JyaWRnZV9y ZW1vdmUgZG9lcyBub3RoaW5nIGV4Y2VwdCByZW1vdmluZwpmcm9tIGJyaWRnZSBsaXN0LCBzbyBp dCBpcyBwb3NzaWJsZSB0aGF0IGJyaWRnZSBjYW4gYmUgdW5ib3VuZCB3aGVuIGl0IGlzCmF0dGFj aGVkIHRvIHdvcmtpbmcgZW5jb2RlciwgaW4gc3VjaCBzaXR1YXRpb24gZW5jb2RlciB3aWxsIHN0 YXkgd2l0aApwb2ludGVyIHRvIG5vbi1leGlzdGluZyBicmlkZ2UgLSBpbiBzdWNoIHNpdHVhdGlv biBldmVyeXRoaW5nIGNhbiBoYXBwZW4uCkkgc3VwcG9zZSB0aGlzIGJ1ZyBhZmZlY3RzIG1vc3Qg YnJpZGdlcyBhbmQgcGFuZWxzIGFuZCBldmVuIGlmIGl0IGNvdWxkIGJlCmZpeGVkIGluIGJyaWRn ZSBkcml2ZXIgSSBndWVzcyBkcm1fY29yZSBzaG91bGQgYmUgYmV0dGVyIHBsYWNlIGZvciBpdC4K ClJlZ2FyZHMKQW5kcnplagoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=