From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ezequiel Garcia Subject: [PATCH v4 2/3] drm/rockchip: Add optional support for CRTC gamma LUT Date: Tue, 8 Oct 2019 20:00:37 -0300 Message-ID: <20191008230038.24037-3-ezequiel@collabora.com> References: <20191008230038.24037-1-ezequiel@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191008230038.24037-1-ezequiel@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Mark Rutland , devicetree@vger.kernel.org, Jacopo Mondi , linux-kernel@vger.kernel.org, Rob Herring , Douglas Anderson , linux-rockchip@lists.infradead.org, Boris Brezillon , Sean Paul , kernel@collabora.com, Ezequiel Garcia List-Id: devicetree@vger.kernel.org QWRkIGFuIG9wdGlvbmFsIENSVEMgZ2FtbWEgTFVUIHN1cHBvcnQsIGFuZCBlbmFibGUgaXQgb24g UkszMjg4LgpUaGlzIGlzIGN1cnJlbnRseSBlbmFibGVkIHZpYSBhIHNlcGFyYXRlIGFkZHJlc3Mg cmVzb3VyY2UsCndoaWNoIG5lZWRzIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgZGV2aWNldHJlZS4K ClRoZSBhZGRyZXNzIHJlc291cmNlIGlzIHJlcXVpcmVkIGJlY2F1c2Ugb24gc29tZSBTb0NzLCBz dWNoIGFzClJLMzI4OCwgdGhlIExVVCBhZGRyZXNzIGlzIGFmdGVyIHRoZSBNTVUgYWRkcmVzcywg YW5kIHRoZSBsYXR0ZXIKaXMgc3VwcG9ydGVkIGJ5IGEgZGlmZmVyZW50IGRyaXZlci4gVGhpcyBw cmV2ZW50cyB0aGUgRFJNIGRyaXZlcgpmcm9tIHJlcXVlc3RpbmcgYW4gZW50aXJlIHJlZ2lzdGVy IHNwYWNlLgoKVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd29ya3MgZm9yIFJHQiAxMC1iaXQg dGFibGVzLCBhcyB0aGF0CmlzIHdoYXQgc2VlbXMgdG8gd29yayBvbiBSSzMyODguCgpTaWduZWQt b2ZmLWJ5OiBFemVxdWllbCBHYXJjaWEgPGV6ZXF1aWVsQGNvbGxhYm9yYS5jb20+Ci0tLQpDaGFu Z2VzIGZyb20gdjM6CiogTW92ZSB0byBhdG9taWNfZW5hYmxlIGFuZCBhdG9taWNfYmVnaW4sCiAg YXMgZGlzY3Vzc2VkIHdpdGggU2VhbiBQYXVsLgoqIERyb3BwZWQgdGhlIFJldmlld2VkLWJ5cy4K Q2hhbmdlcyBmcm9tIHYyOgoqIE5vbmUuCkNoYW5nZXMgZnJvbSB2MToKKiBkcm9wIGV4cGxpY2l0 IGxpbmVhciBMVVQgYWZ0ZXIgZmluZGluZyBhIHByb3BlcgogIHdheSB0byBkaXNhYmxlIGdhbW1h IGNvcnJlY3Rpb24uCiogYXZvaWQgc2V0dGluZyBnYW1tYSBpcyB0aGUgQ1JUQyBpcyBub3QgYWN0 aXZlLgoqIHMvaW50L3Vuc2lnbmVkIGludCBhcyBzdWdnZXN0ZWQgYnkgSmFjb3BvLgoqIG9ubHkg ZW5hYmxlIGNvbG9yIG1hbmFnZW1lbnQgYW5kIHNldCBnYW1tYSBzaXplCiAgaWYgZ2FtbWEgTFVU IGlzIHN1cHBvcnRlZCwgc3VnZ2VzdGVkIGJ5IERvdWcuCiogZHJvcCB0aGUgcmVnLW5hbWVzIHVz YWdlLCBhbmQgaW5zdGVhZCBqdXN0IHVzZSBpbmRleGVkIHJlZwogIHNwZWNpZmllcnMsIHN1Z2dl c3RlZCBieSBEb3VnLgpDaGFuZ2VzIGZyb20gUkZDOgoqIFJlcXVlc3QgKGFuIG9wdGlvbmFsKSBh ZGRyZXNzIHJlc291cmNlIGZvciB0aGUgTFVULgoqIERyb3Agc3VwcG9ydCBmb3IgUkszMzk5LCB3 aGljaCBkb2Vzbid0IHNlZW0gdG8gd29yawogIG91dCBvZiB0aGUgYm94IGFuZCBuZWVkcyBtb3Jl IHJlc2VhcmNoLgoqIFN1cHBvcnQgcGFzcy10aHJ1IHNldHRpbmcgd2hlbiBHQU1NQV9MVVQgaXMg TlVMTC4KKiBBZGQgYSBjaGVjayBmb3IgdGhlIGdhbW1hIHNpemUsIGFzIHN1Z2dlc3RlZCBieSBJ bGlhLgoqIE1vdmUgZ2FtbWEgc2V0dGluZyB0byBhdG9taWNfY29tbWl0X3RhaWwsIGFzIHBvaW50 ZWQKICBvdXQgYnkgSmFjb3BvL0xhdXJlbnQsIGlzIHRoZSBjb3JyZWN0IHdheS4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMgIHwgICAxICsKIGRyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMgfCAxMjUgKysrKysrKysrKysrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmggfCAgIDUg KwogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYyB8ICAgMiArCiA0 IGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2RybV9mYi5jCmluZGV4IGNhMDEyMzRjMDM3Yy4uNjk3ZWUwNGI4NWNmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jCkBAIC0xNyw2ICsx Nyw3IEBACiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2Rydi5oIgogI2luY2x1ZGUgInJvY2tjaGlw X2RybV9mYi5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2RybV9nZW0uaCIKKyNpbmNsdWRlICJyb2Nr Y2hpcF9kcm1fdm9wLmgiCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1 bmNzIHJvY2tjaGlwX2RybV9mYl9mdW5jcyA9IHsKIAkuZGVzdHJveSAgICAgICA9IGRybV9nZW1f ZmJfZGVzdHJveSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fdm9wLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5j CmluZGV4IDYxMzQwNGY4NjY2OC4uODVjMTI2OWExMjE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKQEAgLTEzOSw2ICsxMzksNyBAQCBzdHJ1Y3Qgdm9w IHsKIAogCXVpbnQzMl90ICpyZWdzYmFrOwogCXZvaWQgX19pb21lbSAqcmVnczsKKwl2b2lkIF9f aW9tZW0gKmx1dF9yZWdzOwogCiAJLyogcGh5c2ljYWwgbWFwIGxlbmd0aCBvZiB2b3AgcmVnaXN0 ZXIgKi8KIAl1aW50MzJfdCBsZW47CkBAIC0xMDQ4LDYgKzEwNDksODQgQEAgc3RhdGljIGJvb2wg dm9wX2NydGNfbW9kZV9maXh1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJcmV0dXJuIHRydWU7 CiB9CiAKK3N0YXRpYyBib29sIHZvcF9kc3BfbHV0X2lzX2VuYWJsZShzdHJ1Y3Qgdm9wICp2b3Ap Cit7CisJcmV0dXJuIHZvcF9yZWFkX3JlZyh2b3AsIDAsICZ2b3AtPmRhdGEtPmNvbW1vbi0+ZHNw X2x1dF9lbik7Cit9CisKK3N0YXRpYyB2b2lkIHZvcF9jcnRjX3dyaXRlX2dhbW1hX2x1dChzdHJ1 Y3Qgdm9wICp2b3AsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2NvbG9y X2x1dCAqbHV0ID0gY3J0Yy0+c3RhdGUtPmdhbW1hX2x1dC0+ZGF0YTsKKwl1bnNpZ25lZCBpbnQg aTsKKworCWZvciAoaSA9IDA7IGkgPCBjcnRjLT5nYW1tYV9zaXplOyBpKyspIHsKKwkJdTMyIHdv cmQ7CisKKwkJd29yZCA9IChkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgMTApIDw8 IDIwKSB8CisJCSAgICAgICAoZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5ncmVlbiwgMTAp IDw8IDEwKSB8CisJCQlkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmJsdWUsIDEwKTsKKwkJ d3JpdGVsKHdvcmQsIHZvcC0+bHV0X3JlZ3MgKyBpICogNCk7CisJfQorfQorCitzdGF0aWMgdm9p ZCB2b3BfY3J0Y19nYW1tYV9zZXQoc3RydWN0IHZvcCAqdm9wLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCisJCQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKK3sK Kwl1bnNpZ25lZCBpbnQgaWRsZTsKKwlpbnQgcmV0OworCisJLyoKKwkgKiBJbiBvcmRlciB0byB3 cml0ZSB0aGUgTFVUIHRvIHRoZSBpbnRlcm5hbCBtZW1vcnksCisJICogd2UgbmVlZCB0byBmaXJz dCBtYWtlIHN1cmUgdGhlIGRzcF9sdXRfZW4gYml0IGlzIGNsZWFyZWQuCisJICovCisJc3Bpbl9s b2NrKCZ2b3AtPnJlZ19sb2NrKTsKKwlWT1BfUkVHX1NFVCh2b3AsIGNvbW1vbiwgZHNwX2x1dF9l biwgMCk7CisJdm9wX2NmZ19kb25lKHZvcCk7CisJc3Bpbl91bmxvY2soJnZvcC0+cmVnX2xvY2sp OworCisJLyoKKwkgKiBJZiB0aGUgQ1JUQyBpcyBub3QgYWN0aXZlLCBkc3BfbHV0X2VuIHdpbGwg bm90IGdldCBjbGVhcmVkLgorCSAqIEFwcGFyZW50bHkgd2Ugc3RpbGwgbmVlZCB0byBkbyB0aGUg YWJvdmUgc3RlcCB0byBmb3IKKwkgKiBnYW1tYSBjb3JyZWN0aW9uIHRvIGJlIGRpc2FibGVkLgor CSAqLworCWlmICghY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKKwkJcmV0dXJuOworCisJcmV0ID0gcmVh ZHhfcG9sbF90aW1lb3V0KHZvcF9kc3BfbHV0X2lzX2VuYWJsZSwgdm9wLAorCQkJCSBpZGxlLCAh aWRsZSwgNSwgMzAgKiAxMDAwKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1Iodm9wLT5k ZXYsICJkaXNwbGF5IExVVCBSQU0gZW5hYmxlIHRpbWVvdXQhXG4iKTsKKwkJcmV0dXJuOworCX0K KworCWlmIChjcnRjLT5zdGF0ZS0+Z2FtbWFfbHV0ICYmCisJICAgKCFvbGRfY3J0Y19zdGF0ZS0+ Z2FtbWFfbHV0IHx8IChjcnRjLT5zdGF0ZS0+Z2FtbWFfbHV0LT5iYXNlLmlkICE9CisJCQkJCW9s ZF9jcnRjX3N0YXRlLT5nYW1tYV9sdXQtPmJhc2UuaWQpKSkgeworCisJCXNwaW5fbG9jaygmdm9w LT5yZWdfbG9jayk7CisKKwkJdm9wX2NydGNfd3JpdGVfZ2FtbWFfbHV0KHZvcCwgY3J0Yyk7CisJ CVZPUF9SRUdfU0VUKHZvcCwgY29tbW9uLCBkc3BfbHV0X2VuLCAxKTsKKwkJdm9wX2NmZ19kb25l KHZvcCk7CisKKwkJc3Bpbl91bmxvY2soJnZvcC0+cmVnX2xvY2spOworCX0KK30KKworc3RhdGlj IHZvaWQgdm9wX2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkg ICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQoreworCXN0cnVjdCB2b3Ag KnZvcCA9IHRvX3ZvcChjcnRjKTsKKworCS8qCisJICogT25seSB1cGRhdGUgR0FNTUEgaWYgdGhl ICdhY3RpdmUnIGZsYWcgaXMgbm90IGNoYW5nZWQsCisJICogb3RoZXJ3aXNlIGl0J3MgdXBkYXRl ZCBieSAuYXRvbWljX2VuYWJsZS4KKwkgKi8KKwlpZiAodm9wLT5sdXRfcmVncyAmJiBjcnRjLT5z dGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkICYmCisJICAgICFjcnRjLT5zdGF0ZS0+YWN0aXZlX2No YW5nZWQpCisJCXZvcF9jcnRjX2dhbW1hX3NldCh2b3AsIGNydGMsIG9sZF9jcnRjX3N0YXRlKTsK K30KKwogc3RhdGljIHZvaWQgdm9wX2NydGNfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCiAJCQkJICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCiB7CkBAIC0x MDc1LDYgKzExNTQsMTQgQEAgc3RhdGljIHZvaWQgdm9wX2NydGNfYXRvbWljX2VuYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJCXJldHVybjsKIAl9CiAKKwkvKgorCSAqIElmIHdlIGhhdmUg YSBHQU1NQSBMVVQgaW4gdGhlIHN0YXRlLCB0aGVuIGxldCdzIG1ha2Ugc3VyZQorCSAqIGl0J3Mg dXBkYXRlZC4gV2UgbWlnaHQgYmUgY29taW5nIG91dCBvZiBzdXNwZW5kLAorCSAqIHdoaWNoIG1l YW5zIHRoZSBMVVQgaW50ZXJuYWwgbWVtb3J5IG5lZWRzIHRvIGJlIHJlLXdyaXR0ZW4uCisJICov CisJaWYgKHZvcC0+bHV0X3JlZ3MgJiYgY3J0Yy0+c3RhdGUtPmdhbW1hX2x1dCkKKwkJdm9wX2Ny dGNfZ2FtbWFfc2V0KHZvcCwgY3J0Yywgb2xkX3N0YXRlKTsKKwogCW11dGV4X2xvY2soJnZvcC0+ dm9wX2xvY2spOwogCiAJV0FSTl9PTih2b3AtPmV2ZW50KTsKQEAgLTExOTEsNiArMTI3OCwyNiBA QCBzdGF0aWMgdm9pZCB2b3Bfd2FpdF9mb3JfaXJxX2hhbmRsZXIoc3RydWN0IHZvcCAqdm9wKQog CXN5bmNocm9uaXplX2lycSh2b3AtPmlycSk7CiB9CiAKK3N0YXRpYyBpbnQgdm9wX2NydGNfYXRv bWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCB2b3AgKnZvcCA9IHRvX3ZvcChjcnRjKTsKKwor CWlmICh2b3AtPmx1dF9yZWdzICYmIGNydGNfc3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCAmJgor CSAgICBjcnRjX3N0YXRlLT5nYW1tYV9sdXQpIHsKKwkJdW5zaWduZWQgaW50IGxlbjsKKworCQls ZW4gPSBkcm1fY29sb3JfbHV0X3NpemUoY3J0Y19zdGF0ZS0+Z2FtbWFfbHV0KTsKKwkJaWYgKGxl biAhPSBjcnRjLT5nYW1tYV9zaXplKSB7CisJCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIExVVCBz aXplOyBnb3QgJWQsIGV4cGVjdGVkICVkXG4iLAorCQkJCSAgICAgIGxlbiwgY3J0Yy0+Z2FtbWFf c2l6ZSk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCiBz dGF0aWMgdm9pZCB2b3BfY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAog CQkJCSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKIHsKQEAgLTEyNDMs NiArMTM1MCw4IEBAIHN0YXRpYyB2b2lkIHZvcF9jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNz IHZvcF9jcnRjX2hlbHBlcl9mdW5jcyA9IHsKIAkubW9kZV9maXh1cCA9IHZvcF9jcnRjX21vZGVf Zml4dXAsCisJLmF0b21pY19jaGVjayA9IHZvcF9jcnRjX2F0b21pY19jaGVjaywKKwkuYXRvbWlj X2JlZ2luID0gdm9wX2NydGNfYXRvbWljX2JlZ2luLAogCS5hdG9taWNfZmx1c2ggPSB2b3BfY3J0 Y19hdG9taWNfZmx1c2gsCiAJLmF0b21pY19lbmFibGUgPSB2b3BfY3J0Y19hdG9taWNfZW5hYmxl LAogCS5hdG9taWNfZGlzYWJsZSA9IHZvcF9jcnRjX2F0b21pY19kaXNhYmxlLApAQCAtMTM2MSw2 ICsxNDcwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyB2b3BfY3J0Y19m dW5jcyA9IHsKIAkuZGlzYWJsZV92YmxhbmsgPSB2b3BfY3J0Y19kaXNhYmxlX3ZibGFuaywKIAku c2V0X2NyY19zb3VyY2UgPSB2b3BfY3J0Y19zZXRfY3JjX3NvdXJjZSwKIAkudmVyaWZ5X2NyY19z b3VyY2UgPSB2b3BfY3J0Y192ZXJpZnlfY3JjX3NvdXJjZSwKKwkuZ2FtbWFfc2V0ID0gZHJtX2F0 b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldCwKIH07CiAKIHN0YXRpYyB2b2lkIHZvcF9mYl91 bnJlZl93b3JrZXIoc3RydWN0IGRybV9mbGlwX3dvcmsgKndvcmssIHZvaWQgKnZhbCkKQEAgLTE1 MTgsNiArMTYyOCwxMCBAQCBzdGF0aWMgaW50IHZvcF9jcmVhdGVfY3J0YyhzdHJ1Y3Qgdm9wICp2 b3ApCiAJCWdvdG8gZXJyX2NsZWFudXBfcGxhbmVzOwogCiAJZHJtX2NydGNfaGVscGVyX2FkZChj cnRjLCAmdm9wX2NydGNfaGVscGVyX2Z1bmNzKTsKKwlpZiAodm9wLT5sdXRfcmVncykgeworCQlk cm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKGNydGMsIHZvcF9kYXRhLT5sdXRfc2l6ZSk7CisJ CWRybV9jcnRjX2VuYWJsZV9jb2xvcl9tZ210KGNydGMsIDAsIGZhbHNlLCB2b3BfZGF0YS0+bHV0 X3NpemUpOworCX0KIAogCS8qCiAJICogQ3JlYXRlIGRybV9wbGFuZXMgZm9yIG92ZXJsYXkgd2lu ZG93cyB3aXRoIHBvc3NpYmxlX2NydGNzIHJlc3RyaWN0ZWQKQEAgLTE4MjIsNiArMTkzNiwxNyBA QCBzdGF0aWMgaW50IHZvcF9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAq bWFzdGVyLCB2b2lkICpkYXRhKQogCWlmIChJU19FUlIodm9wLT5yZWdzKSkKIAkJcmV0dXJuIFBU Ul9FUlIodm9wLT5yZWdzKTsKIAorCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJ T1JFU09VUkNFX01FTSwgMSk7CisJaWYgKHJlcykgeworCQlpZiAoIXZvcF9kYXRhLT5sdXRfc2l6 ZSkgeworCQkJRFJNX0RFVl9FUlJPUihkZXYsICJubyBnYW1tYSBMVVQgc2l6ZSBkZWZpbmVkXG4i KTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCXZvcC0+bHV0X3JlZ3MgPSBkZXZtX2lvcmVt YXBfcmVzb3VyY2UoZGV2LCByZXMpOworCQlpZiAoSVNfRVJSKHZvcC0+bHV0X3JlZ3MpKQorCQkJ cmV0dXJuIFBUUl9FUlIodm9wLT5sdXRfcmVncyk7CisJfQorCiAJdm9wLT5yZWdzYmFrID0gZGV2 bV9remFsbG9jKGRldiwgdm9wLT5sZW4sIEdGUF9LRVJORUwpOwogCWlmICghdm9wLT5yZWdzYmFr KQogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fdm9wLmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZHJtX3ZvcC5oCmluZGV4IDIxNDlhODg5YzI5ZC4uODE5MmM5MGQ0OGM0IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgKQEAgLTcsNiArNyw4IEBACiAjaWZu ZGVmIF9ST0NLQ0hJUF9EUk1fVk9QX0gKICNkZWZpbmUgX1JPQ0tDSElQX0RSTV9WT1BfSAogCisj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KKwogLyoKICAqIG1ham9yOiBJUCBtYWpvciB2ZXJz aW9uLCB1c2VkIGZvciBJUCBzdHJ1Y3R1cmUKICAqIG1pbm9yOiBiaWcgZmVhdHVyZSBjaGFuZ2Ug dW5kZXIgc2FtZSBzdHJ1Y3R1cmUKQEAgLTY3LDYgKzY5LDcgQEAgc3RydWN0IHZvcF9jb21tb24g ewogCXN0cnVjdCB2b3BfcmVnIGRpdGhlcl9kb3duX21vZGU7CiAJc3RydWN0IHZvcF9yZWcgZGl0 aGVyX2Rvd25fZW47CiAJc3RydWN0IHZvcF9yZWcgZGl0aGVyX3VwOworCXN0cnVjdCB2b3BfcmVn IGRzcF9sdXRfZW47CiAJc3RydWN0IHZvcF9yZWcgZ2F0ZV9lbjsKIAlzdHJ1Y3Qgdm9wX3JlZyBt bXVfZW47CiAJc3RydWN0IHZvcF9yZWcgb3V0X21vZGU7CkBAIC0xNzAsNiArMTczLDcgQEAgc3Ry dWN0IHZvcF9kYXRhIHsKIAljb25zdCBzdHJ1Y3Qgdm9wX3dpbl95dXYyeXV2X2RhdGEgKndpbl95 dXYyeXV2OwogCWNvbnN0IHN0cnVjdCB2b3Bfd2luX2RhdGEgKndpbjsKIAl1bnNpZ25lZCBpbnQg d2luX3NpemU7CisJdW5zaWduZWQgaW50IGx1dF9zaXplOwogCiAjZGVmaW5lIFZPUF9GRUFUVVJF X09VVFBVVF9SR0IxMAlCSVQoMCkKICNkZWZpbmUgVk9QX0ZFQVRVUkVfSU5URVJOQUxfUkdCCUJJ VCgxKQpAQCAtMzczLDQgKzM3Nyw1IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNjbF92b3BfY2FsX2xi X21vZGUoaW50IHdpZHRoLCBib29sIGlzX3l1dikKIH0KIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBj b21wb25lbnRfb3BzIHZvcF9jb21wb25lbnRfb3BzOworCiAjZW5kaWYgLyogX1JPQ0tDSElQX0RS TV9WT1BfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X3ZvcF9yZWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMK aW5kZXggZDE0OTRiZTE0NDcxLi40MmRkY2I2OThjODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYwpAQCAtNTk4LDYgKzU5OCw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgdm9wX2NvbW1vbiByazMyODhfY29tbW9uID0gewogCS5kaXRoZXJfZG93bl9lbiA9 IFZPUF9SRUcoUkszMjg4X0RTUF9DVFJMMSwgMHgxLCAyKSwKIAkucHJlX2RpdGhlcl9kb3duID0g Vk9QX1JFRyhSSzMyODhfRFNQX0NUUkwxLCAweDEsIDEpLAogCS5kaXRoZXJfdXAgPSBWT1BfUkVH KFJLMzI4OF9EU1BfQ1RSTDEsIDB4MSwgNiksCisJLmRzcF9sdXRfZW4gPSBWT1BfUkVHKFJLMzI4 OF9EU1BfQ1RSTDEsIDB4MSwgMCksCiAJLmRhdGFfYmxhbmsgPSBWT1BfUkVHKFJLMzI4OF9EU1Bf Q1RSTDAsIDB4MSwgMTkpLAogCS5kc3BfYmxhbmsgPSBWT1BfUkVHKFJLMzI4OF9EU1BfQ1RSTDAs IDB4MywgMTgpLAogCS5vdXRfbW9kZSA9IFZPUF9SRUcoUkszMjg4X0RTUF9DVFJMMCwgMHhmLCAw KSwKQEAgLTY0Niw2ICs2NDcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9kYXRhIHJrMzI4 OF92b3AgPSB7CiAJLm91dHB1dCA9ICZyazMyODhfb3V0cHV0LAogCS53aW4gPSByazMyODhfdm9w X3dpbl9kYXRhLAogCS53aW5fc2l6ZSA9IEFSUkFZX1NJWkUocmszMjg4X3ZvcF93aW5fZGF0YSks CisJLmx1dF9zaXplID0gMTAyNCwKIH07CiAKIHN0YXRpYyBjb25zdCBpbnQgcmszMzY4X3ZvcF9p bnRyc1tdID0gewotLSAKMi4yMi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWw=