From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ezequiel Garcia Subject: [PATCH v2 2/3] drm/rockchip: Add optional support for CRTC gamma LUT Date: Fri, 21 Jun 2019 18:13:45 -0300 Message-ID: <20190621211346.1324-3-ezequiel@collabora.com> References: <20190621211346.1324-1-ezequiel@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190621211346.1324-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 Z2VzIGZyb20gdjE6CiogZHJvcCBleHBsaWNpdCBsaW5lYXIgTFVUIGFmdGVyIGZpbmRpbmcgYSBw cm9wZXIKICB3YXkgdG8gZGlzYWJsZSBnYW1tYSBjb3JyZWN0aW9uLgoqIGF2b2lkIHNldHRpbmcg Z2FtbWEgaXMgdGhlIENSVEMgaXMgbm90IGFjdGl2ZS4KKiBzL2ludC91bnNpZ25lZCBpbnQgYXMg c3VnZ2VzdGVkIGJ5IEphY29wby4KKiBvbmx5IGVuYWJsZSBjb2xvciBtYW5hZ2VtZW50IGFuZCBz ZXQgZ2FtbWEgc2l6ZQogIGlmIGdhbW1hIExVVCBpcyBzdXBwb3J0ZWQsIHN1Z2dlc3RlZCBieSBE b3VnLgoqIGRyb3AgdGhlIHJlZy1uYW1lcyB1c2FnZSwgYW5kIGluc3RlYWQganVzdCB1c2UgaW5k ZXhlZCByZWcKICBzcGVjaWZpZXJzLCBzdWdnZXN0ZWQgYnkgRG91Zy4KCkNoYW5nZXMgZnJvbSBS RkM6CiogUmVxdWVzdCAoYW4gb3B0aW9uYWwpIGFkZHJlc3MgcmVzb3VyY2UgZm9yIHRoZSBMVVQu CiogRHJvcCBzdXBwb3J0IGZvciBSSzMzOTksIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAg b3V0IG9mIHRoZSBib3ggYW5kIG5lZWRzIG1vcmUgcmVzZWFyY2guCiogU3VwcG9ydCBwYXNzLXRo cnUgc2V0dGluZyB3aGVuIEdBTU1BX0xVVCBpcyBOVUxMLgoqIEFkZCBhIGNoZWNrIGZvciB0aGUg Z2FtbWEgc2l6ZSwgYXMgc3VnZ2VzdGVkIGJ5IElsaWEuCiogTW92ZSBnYW1tYSBzZXR0aW5nIHRv IGF0b21pY19jb21taXRfdGFpbCwgYXMgcG9pbnRlZAogIG91dCBieSBKYWNvcG8vTGF1cmVudCwg aXMgdGhlIGNvcnJlY3Qgd2F5LgotLS0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fZmIuYyAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Ry bV92b3AuYyB8IDExNCArKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2RybV92b3AuaCB8ICAgNyArKwogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX3ZvcF9yZWcuYyB8ICAgMiArCiA0IGZpbGVzIGNoYW5nZWQsIDEyNiBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Ry bV9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jCmluZGV4 IDFjNjkwNjZiNjg5NC4uYmY5YWQ2MjQwOTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV9mYi5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicm9ja2NoaXBf ZHJtX2ZiLmgiCiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2dlbS5oIgogI2luY2x1ZGUgInJvY2tj aGlwX2RybV9wc3IuaCIKKyNpbmNsdWRlICJyb2NrY2hpcF9kcm1fdm9wLmgiCiAKIHN0YXRpYyBp bnQgcm9ja2NoaXBfZHJtX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCQkJ CSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCkBAIC0xMjgsNiArMTI5LDggQEAgcm9ja2NoaXBfYXRv bWljX2hlbHBlcl9jb21taXRfdGFpbF9ycG0oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9z dGF0ZSkKIAogCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKGRldiwg b2xkX3N0YXRlKTsKIAorCXJvY2tjaGlwX2RybV92b3BfZ2FtbWFfc2V0KG9sZF9zdGF0ZSk7CisK IAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKGRldiwgb2xkX3N0YXRl KTsKIAogCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBvbGRfc3RhdGUsCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIGIv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwppbmRleCAxMmVkNTI2 NWE5MGIuLmNmYTcwNzczYTliYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV92b3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2No aXBfZHJtX3ZvcC5jCkBAIC0xMzcsNiArMTM3LDcgQEAgc3RydWN0IHZvcCB7CiAKIAl1aW50MzJf dCAqcmVnc2JhazsKIAl2b2lkIF9faW9tZW0gKnJlZ3M7CisJdm9pZCBfX2lvbWVtICpsdXRfcmVn czsKIAogCS8qIHBoeXNpY2FsIG1hcCBsZW5ndGggb2Ygdm9wIHJlZ2lzdGVyICovCiAJdWludDMy X3QgbGVuOwpAQCAtMTE1Myw2ICsxMTU0LDEwMiBAQCBzdGF0aWMgdm9pZCB2b3Bfd2FpdF9mb3Jf aXJxX2hhbmRsZXIoc3RydWN0IHZvcCAqdm9wKQogCXN5bmNocm9uaXplX2lycSh2b3AtPmlycSk7 CiB9CiAKK3N0YXRpYyBib29sIHZvcF9kc3BfbHV0X2lzX2VuYWJsZShzdHJ1Y3Qgdm9wICp2b3Ap Cit7CisJcmV0dXJuIHZvcF9yZWFkX3JlZyh2b3AsIDAsICZ2b3AtPmRhdGEtPmNvbW1vbi0+ZHNw X2x1dF9lbik7Cit9CisKK3N0YXRpYyB2b2lkIHZvcF9jcnRjX3dyaXRlX2dhbW1hX2x1dChzdHJ1 Y3Qgdm9wICp2b3AsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2NvbG9y X2x1dCAqbHV0ID0gY3J0Yy0+c3RhdGUtPmdhbW1hX2x1dC0+ZGF0YTsKKwl1bnNpZ25lZCBpbnQg aTsKKworCWZvciAoaSA9IDA7IGkgPCBjcnRjLT5nYW1tYV9zaXplOyBpKyspIHsKKwkJdTMyIHdv cmQ7CisKKwkJd29yZCA9IChkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgMTApIDw8 IDIwKSB8CisJCSAgICAgICAoZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5ncmVlbiwgMTAp IDw8IDEwKSB8CisJCQlkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmJsdWUsIDEwKTsKKwkJ d3JpdGVsKHdvcmQsIHZvcC0+bHV0X3JlZ3MgKyBpICogNCk7CisJfQorfQorCitzdGF0aWMgdm9p ZCB2b3BfY3J0Y19nYW1tYV9zZXQoc3RydWN0IHZvcCAqdm9wLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCisJCQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCit7CisJdW5z aWduZWQgaW50IGlkbGU7CisJaW50IHJldDsKKworCS8qCisJICogSW4gb3JkZXIgdG8gd3JpdGUg dGhlIExVVCB0byB0aGUgaW50ZXJuYWwgUkFNIG1lbW9yeSwKKwkgKiB3ZSBuZWVkIHRvIGZpcnN0 IG1ha2Ugc3VyZSB0aGUgZHNwX2x1dF9lbiBiaXQgaXMgY2xlYXJlZC4KKwkgKi8KKwlzcGluX2xv Y2soJnZvcC0+cmVnX2xvY2spOworCVZPUF9SRUdfU0VUKHZvcCwgY29tbW9uLCBkc3BfbHV0X2Vu LCAwKTsKKwl2b3BfY2ZnX2RvbmUodm9wKTsKKwlzcGluX3VubG9jaygmdm9wLT5yZWdfbG9jayk7 CisKKwkvKgorCSAqIElmIHRoZSBDUlRDIGlzIG5vdCBhY3RpdmUsIGRzcF9sdXRfZW4gd2lsbCBu b3QgZ2V0IGNsZWFyZWQuCisJICogQXBwYXJlbnRseSB3ZSBzdGlsbCBuZWVkIHRvIGRvIHRoZSBh Ym92ZSBzdGVwIHRvIGZvcgorCSAqIGdhbW1hIGNvcnJlY3Rpb24gdG8gYmUgZGlzYWJsZWQuCisJ ICovCisJaWYgKCFjcnRjLT5zdGF0ZS0+YWN0aXZlKQorCQlyZXR1cm47CisKKwlyZXQgPSByZWFk eF9wb2xsX3RpbWVvdXQodm9wX2RzcF9sdXRfaXNfZW5hYmxlLCB2b3AsCisJCQkgICBpZGxlLCAh aWRsZSwgNSwgMzAgKiAxMDAwKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1Iodm9wLT5k ZXYsICJkaXNwbGF5IExVVCBSQU0gZW5hYmxlIHRpbWVvdXQhXG4iKTsKKwkJcmV0dXJuOworCX0K KworCXNwaW5fbG9jaygmdm9wLT5yZWdfbG9jayk7CisKKwlpZiAoY3J0Yy0+c3RhdGUtPmdhbW1h X2x1dCAmJgorCSAgICghb2xkX3N0YXRlLT5nYW1tYV9sdXQgfHwgKGNydGMtPnN0YXRlLT5nYW1t YV9sdXQtPmJhc2UuaWQgIT0KKwkJCQkgICAgICBvbGRfc3RhdGUtPmdhbW1hX2x1dC0+YmFzZS5p ZCkpKQorCQl2b3BfY3J0Y193cml0ZV9nYW1tYV9sdXQodm9wLCBjcnRjKTsKKworCVZPUF9SRUdf U0VUKHZvcCwgY29tbW9uLCBkc3BfbHV0X2VuLCAxKTsKKwl2b3BfY2ZnX2RvbmUodm9wKTsKKwlz cGluX3VubG9jaygmdm9wLT5yZWdfbG9jayk7Cit9CisKK3N0YXRpYyBpbnQgdm9wX2NydGNfYXRv bWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgICBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IHZvcCAqdm9wID0gdG9fdm9wKGNydGMpOwor CisJaWYgKHZvcC0+bHV0X3JlZ3MgJiYgY3J0Y19zdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkICYm CisJICAgIGNydGNfc3RhdGUtPmdhbW1hX2x1dCkgeworCQl1bnNpZ25lZCBpbnQgbGVuOworCisJ CWxlbiA9IGRybV9jb2xvcl9sdXRfc2l6ZShjcnRjX3N0YXRlLT5nYW1tYV9sdXQpOworCQlpZiAo bGVuICE9IGNydGMtPmdhbW1hX3NpemUpIHsKKwkJCURSTV9ERUJVR19LTVMoIkludmFsaWQgTFVU IHNpemU7IGdvdCAlZCwgZXhwZWN0ZWQgJWRcbiIsCisJCQkJICAgICAgbGVuLCBjcnRjLT5nYW1t YV9zaXplKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisK K3ZvaWQgcm9ja2NoaXBfZHJtX3ZvcF9nYW1tYV9zZXQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQoreworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CisJc3Ry dWN0IGRybV9jcnRjICpjcnRjOworCXVuc2lnbmVkIGludCBpOworCisJZm9yX2VhY2hfb2xkX2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7CisJCXN0cnVjdCB2 b3AgKnZvcCA9IHRvX3ZvcChjcnRjKTsKKworCQlpZiAodm9wLT5sdXRfcmVncyAmJiBjcnRjLT5z dGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkKQorCQkJdm9wX2NydGNfZ2FtbWFfc2V0KHZvcCwgY3J0 Yywgb2xkX2NydGNfc3RhdGUpOworCX0KK30KKwogc3RhdGljIHZvaWQgdm9wX2NydGNfYXRvbWlj X2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqb2xkX2NydGNfc3RhdGUpCiB7CkBAIC0xMjA1LDYgKzEzMDIsNyBAQCBzdGF0aWMgdm9pZCB2 b3BfY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyB2b3BfY3J0Y19oZWxwZXJfZnVuY3MgPSB7 CiAJLm1vZGVfZml4dXAgPSB2b3BfY3J0Y19tb2RlX2ZpeHVwLAorCS5hdG9taWNfY2hlY2sgPSB2 b3BfY3J0Y19hdG9taWNfY2hlY2ssCiAJLmF0b21pY19mbHVzaCA9IHZvcF9jcnRjX2F0b21pY19m bHVzaCwKIAkuYXRvbWljX2VuYWJsZSA9IHZvcF9jcnRjX2F0b21pY19lbmFibGUsCiAJLmF0b21p Y19kaXNhYmxlID0gdm9wX2NydGNfYXRvbWljX2Rpc2FibGUsCkBAIC0xMzIzLDYgKzE0MjEsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIHZvcF9jcnRjX2Z1bmNzID0gewog CS5kaXNhYmxlX3ZibGFuayA9IHZvcF9jcnRjX2Rpc2FibGVfdmJsYW5rLAogCS5zZXRfY3JjX3Nv dXJjZSA9IHZvcF9jcnRjX3NldF9jcmNfc291cmNlLAogCS52ZXJpZnlfY3JjX3NvdXJjZSA9IHZv cF9jcnRjX3ZlcmlmeV9jcmNfc291cmNlLAorCS5nYW1tYV9zZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9sZWdhY3lfZ2FtbWFfc2V0LAogfTsKIAogc3RhdGljIHZvaWQgdm9wX2ZiX3VucmVmX3dvcmtl cihzdHJ1Y3QgZHJtX2ZsaXBfd29yayAqd29yaywgdm9pZCAqdmFsKQpAQCAtMTQ4MCw2ICsxNTc5 LDEwIEBAIHN0YXRpYyBpbnQgdm9wX2NyZWF0ZV9jcnRjKHN0cnVjdCB2b3AgKnZvcCkKIAkJZ290 byBlcnJfY2xlYW51cF9wbGFuZXM7CiAKIAlkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMsICZ2b3Bf Y3J0Y19oZWxwZXJfZnVuY3MpOworCWlmICh2b3AtPmx1dF9yZWdzKSB7CisJCWRybV9tb2RlX2Ny dGNfc2V0X2dhbW1hX3NpemUoY3J0Yywgdm9wX2RhdGEtPmx1dF9zaXplKTsKKwkJZHJtX2NydGNf ZW5hYmxlX2NvbG9yX21nbXQoY3J0YywgMCwgZmFsc2UsIHZvcF9kYXRhLT5sdXRfc2l6ZSk7CisJ fQogCiAJLyoKIAkgKiBDcmVhdGUgZHJtX3BsYW5lcyBmb3Igb3ZlcmxheSB3aW5kb3dzIHdpdGgg cG9zc2libGVfY3J0Y3MgcmVzdHJpY3RlZApAQCAtMTc3Niw2ICsxODc5LDE3IEBAIHN0YXRpYyBp bnQgdm9wX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZv aWQgKmRhdGEpCiAJaWYgKElTX0VSUih2b3AtPnJlZ3MpKQogCQlyZXR1cm4gUFRSX0VSUih2b3At PnJlZ3MpOwogCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLCAxKTsKKwlpZiAocmVzKSB7CisJCWlmICghdm9wX2RhdGEtPmx1dF9zaXplKSB7CisJCQlE Uk1fREVWX0VSUk9SKGRldiwgIm5vIGdhbW1hIExVVCBzaXplIGRlZmluZWRcbiIpOworCQkJcmV0 dXJuIC1FSU5WQUw7CisJCX0KKwkJdm9wLT5sdXRfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJj ZShkZXYsIHJlcyk7CisJCWlmIChJU19FUlIodm9wLT5sdXRfcmVncykpCisJCQlyZXR1cm4gUFRS X0VSUih2b3AtPmx1dF9yZWdzKTsKKwl9CisKIAl2b3AtPnJlZ3NiYWsgPSBkZXZtX2t6YWxsb2Mo ZGV2LCB2b3AtPmxlbiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF2b3AtPnJlZ3NiYWspCiAJCXJldHVy biAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV92b3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgK aW5kZXggMjE0OWE4ODljMjlkLi5iZDFiY2Q1YTE0ZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX2RybV92b3AuaApAQCAtNyw2ICs3LDggQEAKICNpZm5kZWYgX1JPQ0tD SElQX0RSTV9WT1BfSAogI2RlZmluZSBfUk9DS0NISVBfRFJNX1ZPUF9ICiAKKyNpbmNsdWRlIDxk cm0vZHJtX2F0b21pYy5oPgorCiAvKgogICogbWFqb3I6IElQIG1ham9yIHZlcnNpb24sIHVzZWQg Zm9yIElQIHN0cnVjdHVyZQogICogbWlub3I6IGJpZyBmZWF0dXJlIGNoYW5nZSB1bmRlciBzYW1l IHN0cnVjdHVyZQpAQCAtNjcsNiArNjksNyBAQCBzdHJ1Y3Qgdm9wX2NvbW1vbiB7CiAJc3RydWN0 IHZvcF9yZWcgZGl0aGVyX2Rvd25fbW9kZTsKIAlzdHJ1Y3Qgdm9wX3JlZyBkaXRoZXJfZG93bl9l bjsKIAlzdHJ1Y3Qgdm9wX3JlZyBkaXRoZXJfdXA7CisJc3RydWN0IHZvcF9yZWcgZHNwX2x1dF9l bjsKIAlzdHJ1Y3Qgdm9wX3JlZyBnYXRlX2VuOwogCXN0cnVjdCB2b3BfcmVnIG1tdV9lbjsKIAlz dHJ1Y3Qgdm9wX3JlZyBvdXRfbW9kZTsKQEAgLTE3MCw2ICsxNzMsNyBAQCBzdHJ1Y3Qgdm9wX2Rh dGEgewogCWNvbnN0IHN0cnVjdCB2b3Bfd2luX3l1djJ5dXZfZGF0YSAqd2luX3l1djJ5dXY7CiAJ Y29uc3Qgc3RydWN0IHZvcF93aW5fZGF0YSAqd2luOwogCXVuc2lnbmVkIGludCB3aW5fc2l6ZTsK Kwl1bnNpZ25lZCBpbnQgbHV0X3NpemU7CiAKICNkZWZpbmUgVk9QX0ZFQVRVUkVfT1VUUFVUX1JH QjEwCUJJVCgwKQogI2RlZmluZSBWT1BfRkVBVFVSRV9JTlRFUk5BTF9SR0IJQklUKDEpCkBAIC0z NzMsNCArMzc3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgc2NsX3ZvcF9jYWxfbGJfbW9kZShpbnQg d2lkdGgsIGJvb2wgaXNfeXV2KQogfQogCiBleHRlcm4gY29uc3Qgc3RydWN0IGNvbXBvbmVudF9v cHMgdm9wX2NvbXBvbmVudF9vcHM7CisKK3ZvaWQgcm9ja2NoaXBfZHJtX3ZvcF9nYW1tYV9zZXQo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKKwogI2VuZGlmIC8qIF9ST0NLQ0hJUF9E Uk1fVk9QX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF92b3BfcmVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5j CmluZGV4IDdiOWM3NDc1MGY2ZC4uMzBkNDllZmYzNjcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMKQEAgLTU5Myw2ICs1OTMsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHZvcF9jb21tb24gcmszMjg4X2NvbW1vbiA9IHsKIAkuZGl0aGVyX2Rvd25fZW4g PSBWT1BfUkVHKFJLMzI4OF9EU1BfQ1RSTDEsIDB4MSwgMiksCiAJLnByZV9kaXRoZXJfZG93biA9 IFZPUF9SRUcoUkszMjg4X0RTUF9DVFJMMSwgMHgxLCAxKSwKIAkuZGl0aGVyX3VwID0gVk9QX1JF RyhSSzMyODhfRFNQX0NUUkwxLCAweDEsIDYpLAorCS5kc3BfbHV0X2VuID0gVk9QX1JFRyhSSzMy ODhfRFNQX0NUUkwxLCAweDEsIDApLAogCS5kYXRhX2JsYW5rID0gVk9QX1JFRyhSSzMyODhfRFNQ X0NUUkwwLCAweDEsIDE5KSwKIAkuZHNwX2JsYW5rID0gVk9QX1JFRyhSSzMyODhfRFNQX0NUUkww LCAweDMsIDE4KSwKIAkub3V0X21vZGUgPSBWT1BfUkVHKFJLMzI4OF9EU1BfQ1RSTDAsIDB4Ziwg MCksCkBAIC02NDEsNiArNjQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3BfZGF0YSByazMy ODhfdm9wID0gewogCS5vdXRwdXQgPSAmcmszMjg4X291dHB1dCwKIAkud2luID0gcmszMjg4X3Zv cF93aW5fZGF0YSwKIAkud2luX3NpemUgPSBBUlJBWV9TSVpFKHJrMzI4OF92b3Bfd2luX2RhdGEp LAorCS5sdXRfc2l6ZSA9IDEwMjQsCiB9OwogCiBzdGF0aWMgY29uc3QgaW50IHJrMzM2OF92b3Bf aW50cnNbXSA9IHsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVs