From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Thompson Subject: Re: [PATCH V4 6/8] backlight: qcom-wled: Add support for WLED4 peripheral Date: Fri, 20 Jul 2018 14:47:27 +0100 Message-ID: References: <1531131741-19971-1-git-send-email-kgunda@codeaurora.org> <1531131741-19971-7-git-send-email-kgunda@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1531131741-19971-7-git-send-email-kgunda@codeaurora.org> 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: Kiran Gunda , bjorn.andersson@linaro.org, jingoohan1@gmail.com, lee.jones@linaro.org, b.zolnierkie@samsung.com, dri-devel@lists.freedesktop.org, jacek.anaszewski@gmail.com, pavel@ucw.cz, robh+dt@kernel.org, mark.rutland@arm.com, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fbdev@vger.kernel.org Cc: linux-arm-msm@vger.kernel.org List-Id: devicetree@vger.kernel.org T24gMDkvMDcvMTggMTE6MjIsIEtpcmFuIEd1bmRhIHdyb3RlOgo+IFdMRUQ0IHBlcmlwaGVyYWwg aXMgcHJlc2VudCBvbiBzb21lIFBNSUNzIGxpa2UgcG1pODk5OCBhbmQKPiBwbTY2MGwuIEl0IGhh cyBhIGRpZmZlcmVudCByZWdpc3RlciBtYXAgYW5kIGNvbmZpZ3VyYXRpb25zCj4gYXJlIGFsc28g ZGlmZmVyZW50LiBBZGQgc3VwcG9ydCBmb3IgaXQuCj4gCj4gU2lnbmVkLW9mZi1ieTogS2lyYW4g R3VuZGEgPGtndW5kYUBjb2RlYXVyb3JhLm9yZz4KPiAtLS0KPiBDaGFuZ2VzIGZyb20gVjM6Cj4g CS0gVGhlIFdMRUQzIHNwZWNpZmljIGNoYW5nZXMgYXJlIHNwbGl0dGVkIG91dAo+IAktIE1lcmdl ZCB0aGUgd2xlZDNfc3luY190b2dnbGUgYW5kIHdsZWQ0X3N5bl90b2dnbGUgZnVuY3Rpb25zCj4g CS0gTW9kaWZpZWQgdGhlIGNvbXBhdGlibGUgLmRhdGEKPiAJLSBNb3ZlZCBmcm9tIGlmL2Vsc2Ug dG8gc3dpdGNoL2Nhc2UgdG8gc2VsZWN0IHRoZSB2ZXJzaW9uIHNwZWNpZmljIGRhdGEKPiAJLSBB ZGRyZXNzZWQgZmV3IG1vcmUgbWlub3IgY29tbWVudHMgZnJvbSBCam9ybgo+IAo+ICAgZHJpdmVy cy92aWRlby9iYWNrbGlnaHQvcWNvbS13bGVkLmMgfCAyNjQgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCj4gICAxIGZpbGUgY2hhbmdlZCwgMjU4IGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3Fj b20td2xlZC5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvcWNvbS13bGVkLmMKPiBpbmRleCA4 N2ZjMWQwLi4zNjJkMjU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3Fj b20td2xlZC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvcWNvbS13bGVkLmMKPiBA QCAtNjQsNiArNjQsMjggQEAKPiAgICNkZWZpbmUgV0xFRDNfU0lOS19SRUdfU1RSX0NBQkMobikJ CQkoMHg2NiArIChuICogMHgxMCkpCj4gICAjZGVmaW5lICBXTEVEM19TSU5LX1JFR19TVFJfQ0FC Q19NQVNLCQkJQklUKDcpCj4gICAKPiArLyogV0xFRDQgc3BlY2lmaWMgc2luayByZWdpc3RlcnMg Ki8KPiArI2RlZmluZSBXTEVENF9TSU5LX1JFR19DVVJSX1NJTksJCQkweDQ2Cj4gKyNkZWZpbmUg IFdMRUQ0X1NJTktfUkVHX0NVUlJfU0lOS19NQVNLCQkJR0VOTUFTSyg3LCA0KQo+ICsjZGVmaW5l ICBXTEVENF9TSU5LX1JFR19DVVJSX1NJTktfU0hGVAkJCTQKPiArCj4gKy8qIFdMRUQ0IHNwZWNp ZmljIHBlci0nc3RyaW5nJyByZWdpc3RlcnMgYmVsb3cgKi8KPiArI2RlZmluZSBXTEVENF9TSU5L X1JFR19TVFJfTU9EX0VOKG4pCQkJKDB4NTAgKyAobiAqIDB4MTApKQo+ICsjZGVmaW5lICBXTEVE NF9TSU5LX1JFR19TVFJfTU9EX01BU0sJCQlCSVQoNykKPiArCj4gKyNkZWZpbmUgV0xFRDRfU0lO S19SRUdfU1RSX0ZVTExfU0NBTEVfQ1VSUihuKQkJKDB4NTIgKyAobiAqIDB4MTApKQo+ICsjZGVm aW5lICBXTEVENF9TSU5LX1JFR19TVFJfRlVMTF9TQ0FMRV9DVVJSX01BU0sJR0VOTUFTSygzLCAw KQo+ICsKPiArI2RlZmluZSBXTEVENF9TSU5LX1JFR19TVFJfTU9EX1NSQyhuKQkJCSgweDUzICsg KG4gKiAweDEwKSkKPiArI2RlZmluZSAgV0xFRDRfU0lOS19SRUdfU1RSX01PRF9TUkNfTUFTSwkJ QklUKDApCj4gKyNkZWZpbmUgIFdMRUQ0X1NJTktfUkVHX1NUUl9NT0RfU1JDX0lOVAkJCTB4MDAK PiArI2RlZmluZSAgV0xFRDRfU0lOS19SRUdfU1RSX01PRF9TUkNfRVhUCQkJMHgwMQo+ICsKPiAr I2RlZmluZSBXTEVENF9TSU5LX1JFR19TVFJfQ0FCQyhuKQkJCSgweDU2ICsgKG4gKiAweDEwKSkK PiArI2RlZmluZSAgV0xFRDRfU0lOS19SRUdfU1RSX0NBQkNfTUFTSwkJCUJJVCg3KQo+ICsKPiAr I2RlZmluZSBXTEVENF9TSU5LX1JFR19CUklHSFQobikJCQkoMHg1NyArIChuICogMHgxMCkpCj4g Kwo+ICAgc3RydWN0IHdsZWRfdmFyX2NmZyB7Cj4gICAJY29uc3QgdTMyICp2YWx1ZXM7Cj4gICAJ dTMyICgqZm4pKHUzMik7Cj4gQEAgLTk4LDYgKzEyMCw3IEBAIHN0cnVjdCB3bGVkIHsKPiAgIAlz dHJ1Y3QgZGV2aWNlICpkZXY7Cj4gICAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwo+ICAgCXUxNiBj dHJsX2FkZHI7Cj4gKwl1MTYgc2lua19hZGRyOwo+ICAgCXUxNiBtYXhfc3RyaW5nX2NvdW50Owo+ ICAgCXUzMiBicmlnaHRuZXNzOwo+ICAgCXUzMiBtYXhfYnJpZ2h0bmVzczsKPiBAQCAtMTI0LDYg KzE0NywyOSBAQCBzdGF0aWMgaW50IHdsZWQzX3NldF9icmlnaHRuZXNzKHN0cnVjdCB3bGVkICp3 bGVkLCB1MTYgYnJpZ2h0bmVzcykKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg aW50IHdsZWQ0X3NldF9icmlnaHRuZXNzKHN0cnVjdCB3bGVkICp3bGVkLCB1MTYgYnJpZ2h0bmVz cykKPiArewo+ICsJaW50IHJjLCBpOwo+ICsJdTE2IGxvd19saW1pdCA9IHdsZWQtPm1heF9icmln aHRuZXNzICogNCAvIDEwMDA7Cj4gKwl1OCB2WzJdOwo+ICsKPiArCS8qIFdMRUQ0J3MgbG93ZXIg bGltaXQgb2Ygb3BlcmF0aW9uIGlzIDAuNCUgKi8KPiArCWlmIChicmlnaHRuZXNzID4gMCAmJiBi cmlnaHRuZXNzIDwgbG93X2xpbWl0KQo+ICsJCWJyaWdodG5lc3MgPSBsb3dfbGltaXQ7Cj4gKwo+ ICsJdlswXSA9IGJyaWdodG5lc3MgJiAweGZmOwo+ICsJdlsxXSA9IChicmlnaHRuZXNzID4+IDgp ICYgMHhmOwo+ICsKPiArCWZvciAoaSA9IDA7ICBpIDwgd2xlZC0+Y2ZnLm51bV9zdHJpbmdzOyAr K2kpIHsKPiArCQlyYyA9IHJlZ21hcF9idWxrX3dyaXRlKHdsZWQtPnJlZ21hcCwgd2xlZC0+c2lu a19hZGRyICsKPiArCQkJCSAgICAgICBXTEVENF9TSU5LX1JFR19CUklHSFQoaSksIHYsIDIpOwo+ ICsJCWlmIChyYyA8IDApCj4gKwkJCXJldHVybiByYzsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgd2xlZF9tb2R1bGVfZW5hYmxlKHN0cnVjdCB3bGVkICp3 bGVkLCBpbnQgdmFsKQo+ICAgewo+ICAgCWludCByYzsKPiBAQCAtMTQxLDEzICsxODcsMTMgQEAg c3RhdGljIGludCB3bGVkX3N5bmNfdG9nZ2xlKHN0cnVjdCB3bGVkICp3bGVkKQo+ICAgCXVuc2ln bmVkIGludCBtYXNrID0gR0VOTUFTSyh3bGVkLT5tYXhfc3RyaW5nX2NvdW50IC0gMSwgMCk7Cj4g ICAKPiAgIAlyYyA9IHJlZ21hcF91cGRhdGVfYml0cyh3bGVkLT5yZWdtYXAsCj4gLQkJCQl3bGVk LT5jdHJsX2FkZHIgKyBXTEVEX1NJTktfUkVHX1NZTkMsCj4gKwkJCQl3bGVkLT5zaW5rX2FkZHIg KyBXTEVEX1NJTktfUkVHX1NZTkMsCj4gICAJCQkJbWFzaywgbWFzayk7Cj4gICAJaWYgKHJjIDwg MCkKPiAgIAkJcmV0dXJuIHJjOwo+ICAgCj4gICAJcmMgPSByZWdtYXBfdXBkYXRlX2JpdHMod2xl ZC0+cmVnbWFwLAo+IC0JCQkJd2xlZC0+Y3RybF9hZGRyICsgV0xFRF9TSU5LX1JFR19TWU5DLAo+ ICsJCQkJd2xlZC0+c2lua19hZGRyICsgV0xFRF9TSU5LX1JFR19TWU5DLAo+ICAgCQkJCW1hc2ss IFdMRURfU0lOS19SRUdfU1lOQ19DTEVBUik7Cj4gICAKPiAgIAlyZXR1cm4gcmM7Cj4gQEAgLTI3 NCw2ICszMjAsMTIwIEBAIHN0YXRpYyBpbnQgd2xlZDNfc2V0dXAoc3RydWN0IHdsZWQgKndsZWQp Cj4gICAJLmNhYmMgPSBmYWxzZSwKPiAgIH07Cj4gICAKPiArc3RhdGljIGludCB3bGVkNF9zZXR1 cChzdHJ1Y3Qgd2xlZCAqd2xlZCkKPiArewo+ICsJaW50IHJjLCB0ZW1wLCBpLCBqOwo+ICsJdTE2 IGFkZHI7Cj4gKwl1OCBzaW5rX2VuID0gMDsKPiArCXUzMiBzaW5rX2NmZyA9IDA7Cj4gKwo+ICsJ cmMgPSByZWdtYXBfdXBkYXRlX2JpdHMod2xlZC0+cmVnbWFwLAo+ICsJCQkJd2xlZC0+Y3RybF9h ZGRyICsgV0xFRF9DVFJMX1JFR19PVlAsCj4gKwkJCQlXTEVEX0NUUkxfUkVHX09WUF9NQVNLLCB3 bGVkLT5jZmcub3ZwKTsKPiArCWlmIChyYyA8IDApCj4gKwkJcmV0dXJuIHJjOwo+ICsKPiArCXJj ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHdsZWQtPnJlZ21hcCwKPiArCQkJCXdsZWQtPmN0cmxfYWRk ciArIFdMRURfQ1RSTF9SRUdfSUxJTUlULAo+ICsJCQkJV0xFRF9DVFJMX1JFR19JTElNSVRfTUFT SywKPiArCQkJCXdsZWQtPmNmZy5ib29zdF9pX2xpbWl0KTsKPiArCWlmIChyYyA8IDApCj4gKwkJ cmV0dXJuIHJjOwo+ICsKPiArCXJjID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHdsZWQtPnJlZ21hcCwK PiArCQkJCXdsZWQtPmN0cmxfYWRkciArIFdMRURfQ1RSTF9SRUdfRlJFUSwKPiArCQkJCVdMRURf Q1RSTF9SRUdfRlJFUV9NQVNLLAo+ICsJCQkJd2xlZC0+Y2ZnLnN3aXRjaF9mcmVxKTsKPiArCWlm IChyYyA8IDApCj4gKwkJcmV0dXJuIHJjOwo+ICsKPiArCXJjID0gcmVnbWFwX3JlYWQod2xlZC0+ cmVnbWFwLCB3bGVkLT5zaW5rX2FkZHIgKwo+ICsJCQkgV0xFRDRfU0lOS19SRUdfQ1VSUl9TSU5L LCAmc2lua19jZmcpOwo+ICsJaWYgKHJjIDwgMCkKPiArCQlyZXR1cm4gcmM7Cj4gKwo+ICsJZm9y IChpID0gMDsgaSA8IHdsZWQtPmNmZy5udW1fc3RyaW5nczsgaSsrKSB7Cj4gKwkJaiA9IHdsZWQt PmNmZy5lbmFibGVkX3N0cmluZ3NbaV07Cj4gKwkJdGVtcCA9IGogKyBXTEVENF9TSU5LX1JFR19D VVJSX1NJTktfU0hGVDsKPiArCQlzaW5rX2VuIHw9IDEgPDwgdGVtcDsKPiArCX0KPiArCj4gKwlp ZiAoc2lua19jZmcgPT0gc2lua19lbikKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlyYyA9IHJlZ21h cF91cGRhdGVfYml0cyh3bGVkLT5yZWdtYXAsCj4gKwkJCQl3bGVkLT5zaW5rX2FkZHIgKyBXTEVE NF9TSU5LX1JFR19DVVJSX1NJTkssCj4gKwkJCQlXTEVENF9TSU5LX1JFR19DVVJSX1NJTktfTUFT SywgMCk7Cj4gKwlpZiAocmMgPCAwKQo+ICsJCXJldHVybiByYzsKPiArCj4gKwlyYyA9IHJlZ21h cF91cGRhdGVfYml0cyh3bGVkLT5yZWdtYXAsIHdsZWQtPmN0cmxfYWRkciArCj4gKwkJCQlXTEVE X0NUUkxfUkVHX01PRF9FTiwKPiArCQkJCVdMRURfQ1RSTF9SRUdfTU9EX0VOX01BU0ssIDApOwo+ ICsJaWYgKHJjIDwgMCkKPiArCQlyZXR1cm4gcmM7Cj4gKwo+ICsJLyogUGVyIHNpbmsvc3RyaW5n IGNvbmZpZ3VyYXRpb24gKi8KPiArCWZvciAoaSA9IDA7IGkgPCB3bGVkLT5jZmcubnVtX3N0cmlu Z3M7IGkrKykgewo+ICsJCWogPSB3bGVkLT5jZmcuZW5hYmxlZF9zdHJpbmdzW2ldOwo+ICsKPiAr CQlhZGRyID0gd2xlZC0+c2lua19hZGRyICsKPiArCQkJCVdMRUQ0X1NJTktfUkVHX1NUUl9NT0Rf RU4oaik7Cj4gKwkJcmMgPSByZWdtYXBfdXBkYXRlX2JpdHMod2xlZC0+cmVnbWFwLCBhZGRyLAo+ ICsJCQkJCVdMRUQ0X1NJTktfUkVHX1NUUl9NT0RfTUFTSywKPiArCQkJCQlXTEVENF9TSU5LX1JF R19TVFJfTU9EX01BU0spOwo+ICsJCWlmIChyYyA8IDApCj4gKwkJCXJldHVybiByYzsKPiArCj4g KwkJYWRkciA9IHdsZWQtPnNpbmtfYWRkciArCj4gKwkJCQlXTEVENF9TSU5LX1JFR19TVFJfRlVM TF9TQ0FMRV9DVVJSKGopOwo+ICsJCXJjID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHdsZWQtPnJlZ21h cCwgYWRkciwKPiArCQkJCQlXTEVENF9TSU5LX1JFR19TVFJfRlVMTF9TQ0FMRV9DVVJSX01BU0ss Cj4gKwkJCQkJd2xlZC0+Y2ZnLnN0cmluZ19pX2xpbWl0KTsKPiArCQlpZiAocmMgPCAwKQo+ICsJ CQlyZXR1cm4gcmM7Cj4gKwo+ICsJCWFkZHIgPSB3bGVkLT5zaW5rX2FkZHIgKwo+ICsJCQkJV0xF RDRfU0lOS19SRUdfU1RSX0NBQkMoaik7Cj4gKwkJcmMgPSByZWdtYXBfdXBkYXRlX2JpdHMod2xl ZC0+cmVnbWFwLCBhZGRyLAo+ICsJCQkJCVdMRUQ0X1NJTktfUkVHX1NUUl9DQUJDX01BU0ssCj4g KwkJCQkJd2xlZC0+Y2ZnLmNhYmMgPwo+ICsJCQkJCVdMRUQ0X1NJTktfUkVHX1NUUl9DQUJDX01B U0sgOiAwKTsKPiArCQlpZiAocmMgPCAwKQo+ICsJCQlyZXR1cm4gcmM7Cj4gKwl9Cj4gKwo+ICsJ cmMgPSByZWdtYXBfdXBkYXRlX2JpdHMod2xlZC0+cmVnbWFwLCB3bGVkLT5jdHJsX2FkZHIgKwo+ ICsJCQkJV0xFRF9DVFJMX1JFR19NT0RfRU4sCj4gKwkJCQlXTEVEX0NUUkxfUkVHX01PRF9FTl9N QVNLLAo+ICsJCQkJV0xFRF9DVFJMX1JFR19NT0RfRU5fTUFTSyk7Cj4gKwlpZiAocmMgPCAwKQo+ ICsJCXJldHVybiByYzsKPiArCj4gKwlyYyA9IHJlZ21hcF91cGRhdGVfYml0cyh3bGVkLT5yZWdt YXAsCj4gKwkJCQl3bGVkLT5zaW5rX2FkZHIgKyBXTEVENF9TSU5LX1JFR19DVVJSX1NJTkssCj4g KwkJCQlXTEVENF9TSU5LX1JFR19DVVJSX1NJTktfTUFTSywgc2lua19lbik7Cj4gKwlpZiAocmMg PCAwKQo+ICsJCXJldHVybiByYzsKPiArCj4gKwlyYyA9IHdsZWRfc3luY190b2dnbGUod2xlZCk7 Cj4gKwlpZiAocmMgPCAwKSB7Cj4gKwkJZGV2X2Vycih3bGVkLT5kZXYsICJGYWlsZWQgdG8gdG9n Z2xlIHN5bmMgcmVnIHJjOiVkXG4iLCByYyk7Cj4gKwkJcmV0dXJuIHJjOwo+ICsJfQo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHdsZWRfY29uZmlnIHds ZWQ0X2NvbmZpZ19kZWZhdWx0cyA9IHsKPiArCS5ib29zdF9pX2xpbWl0ID0gNCwKPiArCS5zdHJp bmdfaV9saW1pdCA9IDEwLAo+ICsJLm92cCA9IDEsCj4gKwkubnVtX3N0cmluZ3MgPSA0LAo+ICsJ LnN3aXRjaF9mcmVxID0gMTEsCj4gKwkuY2FiYyA9IGZhbHNlLAo+ICt9Owo+ICsKPiAgIHN0YXRp YyBjb25zdCB1MzIgd2xlZDNfYm9vc3RfaV9saW1pdF92YWx1ZXNbXSA9IHsKPiAgIAkxMDUsIDM4 NSwgNTI1LCA4MDUsIDk4MCwgMTI2MCwgMTQwMCwgMTY4MCwKPiAgIH07Cj4gQEAgLTI4Myw2ICs0 NDMsMTUgQEAgc3RhdGljIGludCB3bGVkM19zZXR1cChzdHJ1Y3Qgd2xlZCAqd2xlZCkKPiAgIAku c2l6ZSA9IEFSUkFZX1NJWkUod2xlZDNfYm9vc3RfaV9saW1pdF92YWx1ZXMpLAo+ICAgfTsKPiAg IAo+ICtzdGF0aWMgY29uc3QgdTMyIHdsZWQ0X2Jvb3N0X2lfbGltaXRfdmFsdWVzW10gPSB7Cj4g KwkxMDUsIDI4MCwgNDUwLCA2MjAsIDk3MCwgMTE1MCwgMTMwMCwgMTUwMCwKPiArfTsKPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xlZF92YXJfY2ZnIHdsZWQ0X2Jvb3N0X2lfbGltaXRfY2Zn ID0gewo+ICsJLnZhbHVlcyA9IHdsZWQ0X2Jvb3N0X2lfbGltaXRfdmFsdWVzLAo+ICsJLnNpemUg PSBBUlJBWV9TSVpFKHdsZWQ0X2Jvb3N0X2lfbGltaXRfdmFsdWVzKSwKPiArfTsKPiArCj4gICBz dGF0aWMgY29uc3QgdTMyIHdsZWQzX292cF92YWx1ZXNbXSA9IHsKPiAgIAkzNSwgMzIsIDI5LCAy NywKPiAgIH07Cj4gQEAgLTI5Miw2ICs0NjEsMTUgQEAgc3RhdGljIGludCB3bGVkM19zZXR1cChz dHJ1Y3Qgd2xlZCAqd2xlZCkKPiAgIAkuc2l6ZSA9IEFSUkFZX1NJWkUod2xlZDNfb3ZwX3ZhbHVl cyksCj4gICB9Owo+ICAgCj4gK3N0YXRpYyBjb25zdCB1MzIgd2xlZDRfb3ZwX3ZhbHVlc1tdID0g ewo+ICsJMzExMDAsIDI5NjAwLCAxOTYwMCwgMTgxMDAsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHdsZWRfdmFyX2NmZyB3bGVkNF9vdnBfY2ZnID0gewo+ICsJLnZhbHVlcyA9IHds ZWQ0X292cF92YWx1ZXMsCj4gKwkuc2l6ZSA9IEFSUkFZX1NJWkUod2xlZDRfb3ZwX3ZhbHVlcyks Cj4gK307Cj4gKwo+ICAgc3RhdGljIHUzMiB3bGVkM19udW1fc3RyaW5nc192YWx1ZXNfZm4odTMy IGlkeCkKPiAgIHsKPiAgIAlyZXR1cm4gaWR4ICsgMTsKPiBAQCAtMzAyLDYgKzQ4MCwxMSBAQCBz dGF0aWMgdTMyIHdsZWQzX251bV9zdHJpbmdzX3ZhbHVlc19mbih1MzIgaWR4KQo+ICAgCS5zaXpl ID0gMywKPiAgIH07Cj4gICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB3bGVkX3Zhcl9jZmcgd2xl ZDRfbnVtX3N0cmluZ3NfY2ZnID0gewo+ICsJLmZuID0gd2xlZDNfbnVtX3N0cmluZ3NfdmFsdWVz X2ZuLAo+ICsJLnNpemUgPSA0LAo+ICt9Owo+ICsKPiAgIHN0YXRpYyB1MzIgd2xlZDNfc3dpdGNo X2ZyZXFfdmFsdWVzX2ZuKHUzMiBpZHgpCj4gICB7Cj4gICAJcmV0dXJuIDE5MjAwIC8gKDIgKiAo MSArIGlkeCkpOwo+IEBAIC0zMTYsMTAgKzQ5OSwyNCBAQCBzdGF0aWMgdTMyIHdsZWQzX3N3aXRj aF9mcmVxX3ZhbHVlc19mbih1MzIgaWR4KQo+ICAgCS5zaXplID0gMjYsCj4gICB9Owo+ICAgCj4g K3N0YXRpYyBjb25zdCB1MzIgd2xlZDRfc3RyaW5nX2lfbGltaXRfdmFsdWVzW10gPSB7Cj4gKwkw LCAyNTAwLCA1MDAwLCA3NTAwLCAxMDAwMCwgMTI1MDAsIDE1MDAwLCAxNzUwMCwgMjAwMDAsCj4g KwkyMjUwMCwgMjUwMDAsIDI3NTAwLCAzMDAwMCwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgd2xlZF92YXJfY2ZnIHdsZWQ0X3N0cmluZ19pX2xpbWl0X2NmZyA9IHsKPiArCS52YWx1 ZXMgPSB3bGVkNF9zdHJpbmdfaV9saW1pdF92YWx1ZXMsCj4gKwkuc2l6ZSA9IEFSUkFZX1NJWkUo d2xlZDRfc3RyaW5nX2lfbGltaXRfdmFsdWVzKSwKPiArfTsKPiArCj4gICBzdGF0aWMgY29uc3Qg c3RydWN0IHdsZWRfdmFyX2NmZyB3bGVkM19zdHJpbmdfY2ZnID0gewo+ICAgCS5zaXplID0gOCwK PiAgIH07Cj4gICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB3bGVkX3Zhcl9jZmcgd2xlZDRfc3Ry aW5nX2NmZyA9IHsKPiArCS5zaXplID0gMTYsCj4gK307Cj4gKwo+ICAgc3RhdGljIHUzMiB3bGVk X3ZhbHVlcyhjb25zdCBzdHJ1Y3Qgd2xlZF92YXJfY2ZnICpjZmcsIHUzMiBpZHgpCj4gICB7Cj4g ICAJaWYgKGlkeCA+PSBjZmctPnNpemUpCj4gQEAgLTMzMiw2ICs1MjksNyBAQCBzdGF0aWMgdTMy IHdsZWRfdmFsdWVzKGNvbnN0IHN0cnVjdCB3bGVkX3Zhcl9jZmcgKmNmZywgdTMyIGlkeCkKPiAg IH0KPiAgIAo+ICAgI2RlZmluZQlXTEVEMwkzCj4gKyNkZWZpbmUJV0xFRDQJNAoKQXJlIHRoZXNl IG1hY3JvcyBhbHdheXMgZ29pbmcgdG8gZGVmaW5lIDMgdG8gYmUgMyBhbmQgNCB0byBiZSA0LiBJ ZiBzbyAKd2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGVtIChhbmQgdGhleSBzaG91bGQgYmUgcmVt b3ZlZCBmcm9tIHBhdGNoIDUvOCB0b28pLgoKVGhlcmUgaXMgYSBkZWdyZWUgb2Ygbml0cGlja2lu ZyBoZXJlIGhvd2V2ZXIuIFRoZSByZXN0IGxvb2tzIE9LIHRvIG1lLgoKCkRhbmllbC4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==