From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH 19/22] drm/i915: BDW: Pipe level Gamma correction Date: Sat, 10 Oct 2015 00:59:09 +0530 Message-ID: <1444418952-5671-20-git-send-email-shashank.sharma@intel.com> References: <1444418952-5671-1-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1444418952-5671-1-git-send-email-shashank.sharma@intel.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, intel-gfx@lists.freedesktop.org, robert.bradford@intel.com, jim.bish@intel.com, matthew.d.roper@intel.com, daniel.vetter@intel.com Cc: annie.j.matheson@intel.com, avinash.reddy.palleti@intel.com, indranil.mukherjee@intel.com, kausalmalladi@gmail.com, jesse.barnes@intel.com, gary.k.smith@intel.com, kiran.s.kumar@intel.com List-Id: dri-devel@lists.freedesktop.org QkRXL1NLTC9CWFQgcGxhdGZvcm1zIHN1cHBvcnQgdmFyaW91cyBHYW1tYSBjb3JyZWN0aW9uIG1v ZGVzCndoaWNoIGFyZToKMS4gTGVnYWN5IDgtYml0IG1vZGUKMi4gMTAtYml0IFNwbGl0IEdhbW1h IG1vZGUKMy4gMTItYml0IG1vZGUKClRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgoxLiBB ZGRzIHRoZSBjb3JlIGZ1bmN0aW9uIHRvIHByb2dyYW0gR2FtbWEgY29ycmVjdGlvbiB2YWx1ZXMK ICAgZm9yIEJEVy9TS0wvQlhUIHBsYXRmb3JtcwoyLiBBZGRzIEdhbW1hIGNvcnJlY3Rpb24gbWFj cm9zL2RlZmluZXMKClNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hh cm1hQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogS2F1c2FsIE1hbGxhZGkgPGthdXNhbG1hbGxh ZGlAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAg ICAgICB8ICAyNSArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIu YyB8IDI0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29sb3JfbWFuYWdlci5oIHwgICA2ICsKIDMgZmlsZXMgY2hhbmdlZCwgMjc3IGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXgg NTgyNWFiMi4uZWQ1MGY3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC01NjQ3LDExICs1 NjQ3LDE1IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewogLyogbGVnYWN5IHBhbGV0dGUg Ki8KICNkZWZpbmUgX0xHQ19QQUxFVFRFX0EgICAgICAgICAgIDB4NGEwMDAKICNkZWZpbmUgX0xH Q19QQUxFVFRFX0IgICAgICAgICAgIDB4NGE4MDAKLSNkZWZpbmUgTEdDX1BBTEVUVEUocGlwZSwg aSkgKF9QSVBFKHBpcGUsIF9MR0NfUEFMRVRURV9BLCBfTEdDX1BBTEVUVEVfQikgKyAoaSkgKiA0 KQorI2RlZmluZSBfTEdDX1BBTEVUVEVfQyAgICAgICAgICAgMHg0YjAwMAorI2RlZmluZSBMR0Nf UEFMRVRURShwaXBlLCBpKSAoX1BJUEUzKHBpcGUsIF9MR0NfUEFMRVRURV9BLCBfTEdDX1BBTEVU VEVfQiwgXAorCQkJIF9MR0NfUEFMRVRURV9DKSArIChpKSAqIDQpCiAKICNkZWZpbmUgX0dBTU1B X01PREVfQQkJMHg0YTQ4MAogI2RlZmluZSBfR0FNTUFfTU9ERV9CCQkweDRhYzgwCi0jZGVmaW5l IEdBTU1BX01PREUocGlwZSkgX1BJUEUocGlwZSwgX0dBTU1BX01PREVfQSwgX0dBTU1BX01PREVf QikKKyNkZWZpbmUgX0dBTU1BX01PREVfQwkJMHg0YjQ4MAorI2RlZmluZSBHQU1NQV9NT0RFKHBp cGUpIFwKKwlfUElQRTMocGlwZSwgX0dBTU1BX01PREVfQSwgX0dBTU1BX01PREVfQiwgX0dBTU1B X01PREVfQykKICNkZWZpbmUgR0FNTUFfTU9ERV9NT0RFX01BU0sJKDMgPDwgMCkKICNkZWZpbmUg R0FNTUFfTU9ERV9NT0RFXzhCSVQJKDAgPDwgMCkKICNkZWZpbmUgR0FNTUFfTU9ERV9NT0RFXzEw QklUCSgxIDw8IDApCkBAIC04MDYyLDYgKzgwNjYsMjMgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93 ZWxscyB7CiAjZGVmaW5lIF9QSVBFX0NTQ19CQVNFKHBpcGUpIFwKIAkoX1BJUEUzKHBpcGUsIFBJ UEVBX0NHTV9DU0MsIFBJUEVCX0NHTV9DU0MsIFBJUEVDX0NHTV9DU0MpKQogCisvKiBCRFcgZ2Ft bWEgY29ycmVjdGlvbiAqLworI2RlZmluZSBQQUxfUFJFQ19JTkRFWF9BICAgICAgICAgICAgICAg ICAgICAgICAweDRBNDAwCisjZGVmaW5lIFBBTF9QUkVDX0lOREVYX0IgICAgICAgICAgICAgICAg ICAgICAgIDB4NEFDMDAKKyNkZWZpbmUgUEFMX1BSRUNfSU5ERVhfQyAgICAgICAgICAgICAgICAg ICAgICAgMHg0QjQwMAorI2RlZmluZSBQQUxfUFJFQ19EQVRBX0EgICAgICAgICAgICAgICAgICAg ICAgICAweDRBNDA0CisjZGVmaW5lIFBBTF9QUkVDX0RBVEFfQiAgICAgICAgICAgICAgICAgICAg ICAgIDB4NEFDMDQKKyNkZWZpbmUgUEFMX1BSRUNfREFUQV9DICAgICAgICAgICAgICAgICAgICAg ICAgMHg0QjQwNAorI2RlZmluZSBQQUxfUFJFQ19HQ01BWF9BCQkJMHg0QTQxMAorI2RlZmluZSBQ QUxfUFJFQ19HQ01BWF9CCQkJMHg0QUMxMAorI2RlZmluZSBQQUxfUFJFQ19HQ01BWF9DCQkJMHg0 QjQxMAorCisjZGVmaW5lIF9QUkVDX1BBTF9JTkRFWChwaXBlKSBcCisJKF9QSVBFMyhwaXBlLCBQ QUxfUFJFQ19JTkRFWF9BLCBQQUxfUFJFQ19JTkRFWF9CLCBQQUxfUFJFQ19JTkRFWF9DKSkKKyNk ZWZpbmUgX1BSRUNfUEFMX0RBVEEocGlwZSkgXAorCShfUElQRTMocGlwZSwgUEFMX1BSRUNfREFU QV9BLCBQQUxfUFJFQ19EQVRBX0IsIFBBTF9QUkVDX0RBVEFfQykpCisjZGVmaW5lIF9QUkVDX1BB TF9HQ01BWChwaXBlKSBcCisJKF9QSVBFMyhwaXBlLCBQQUxfUFJFQ19HQ01BWF9BLCBQQUxfUFJF Q19HQ01BWF9CLCBQQUxfUFJFQ19HQ01BWF9DKSkKIAogCiAjZW5kaWYgLyogX0k5MTVfUkVHX0hf ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2Vy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmMKaW5kZXggZDUz MTViMi4uNzRmOGZjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29s b3JfbWFuYWdlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFn ZXIuYwpAQCAtMjYsNiArMjYsMjUyIEBACiAgKi8KIAogI2luY2x1ZGUgImludGVsX2NvbG9yX21h bmFnZXIuaCIKK3N0YXRpYyB2b2lkIGJkd193cml0ZV8xMGJpdF9nYW1tYV9wcmVjaXNpb24oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZHJtX3IzMmczMmIzMiAqY29ycmVjdGlvbl92 YWx1ZXMsIHUzMiBwYWxfcHJlY19kYXRhLAorCQkJdTMyIG5vX29mX2NvZWZmKQoreworCXUxNiBi bHVlX2ZyYWN0LCBncmVlbl9mcmFjdCwgcmVkX2ZyYWN0OworCXUzMiB3b3JkID0gMDsKKwl1MzIg Y291bnQgPSAwOworCXUzMiBibHVlLCBncmVlbiwgcmVkOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwl3aGlsZSAoY291bnQgPCBub19v Zl9jb2VmZikgeworCisJCWJsdWUgPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uYjMyOworCQln cmVlbiA9IGNvcnJlY3Rpb25fdmFsdWVzW2NvdW50XS5nMzI7CisJCXJlZCA9IGNvcnJlY3Rpb25f dmFsdWVzW2NvdW50XS5yMzI7CisKKwkJLyoKKwkJKiBNYXhpbXVtIHBvc3NpYmxlIGdhbW1hIGNv cnJlY3Rpb24gdmFsdWUgc3VwcG9ydGVkCisJCSogZm9yIEJEVyBpcyAweEZGRkZGRkZGLCBzbyBj bGlwIHRoZSB2YWx1ZXMgYWNjb3JkaW5nbHkKKwkJKi8KKwkJaWYgKGJsdWUgPj0gQkRXX01BWF9H QU1NQSkKKwkJCWJsdWUgPSBCRFdfTUFYX0dBTU1BOworCQlpZiAoZ3JlZW4gPj0gQkRXX01BWF9H QU1NQSkKKwkJCWdyZWVuID0gQkRXX01BWF9HQU1NQTsKKwkJaWYgKHJlZCA+PSBCRFdfTUFYX0dB TU1BKQorCQkJcmVkID0gQkRXX01BWF9HQU1NQTsKKworCQkvKgorCQkqIEdhbW1hIGNvcnJlY3Rp b24gdmFsdWVzIGFyZSBzZW50IGluIDguMjQgZm9ybWF0CisJCSogd2l0aCA4IGludCBhbmQgMjQg ZnJhY3Rpb24gYml0cy4gQkRXIDEwIGJpdCBnYW1tYQorCQkqIHVuaXQgZXhwZWN0cyBjb3JyZWN0 aW9uIHJlZ2lzdGVycyB0byBiZSBwcm9ncmFtbWVkIGluCisJCSogMC4xMCBmb3JtYXQsIHdpdGgg MCBpbnQgYW5kIDE2IGZyYWN0aW9uIGJpdHMuIFNvIHRha2UKKwkJKiBNU0IgMTAgYml0IHZhbHVl cyhiaXRzIDIzLTE0KSBmcm9tIHRoZSBmcmFjdGlvbiBwYXJ0IGFuZAorCQkqIHByZXBhcmUgdGhl IGNvcnJlY3Rpb24gcmVnaXN0ZXJzLgorCQkqLworCQlibHVlX2ZyYWN0ID0gR0VUX0JJVFMoYmx1 ZSwgMTQsIDEwKTsKKwkJZ3JlZW5fZnJhY3QgPSBHRVRfQklUUyhncmVlbiwgMTQsIDEwKTsKKwkJ cmVkX2ZyYWN0ID0gR0VUX0JJVFMocmVkLCAxNCwgMTApOworCisJCS8qIEFycmFuZ2U6IFJlZCAo Mjk6MjApIEdyZWVuICgxOToxMCkgYW5kIEJsdWUgKDk6MCkgKi8KKwkJU0VUX0JJVFMod29yZCwg cmVkX2ZyYWN0LCAyMCwgMTApOworCQlTRVRfQklUUyh3b3JkLCByZWRfZnJhY3QsIDEwLCAxMCk7 CisJCVNFVF9CSVRTKHdvcmQsIHJlZF9mcmFjdCwgMCwgMTApOworCQlJOTE1X1dSSVRFKHBhbF9w cmVjX2RhdGEsIHdvcmQpOworCQljb3VudCsrOworCX0KKwlEUk1fREVCVUdfRFJJVkVSKCJHYW1t YSBjb3JyZWN0aW9uIHByb2dyYW1tZWRcbiIpOworfQorCit2b2lkIGJkd193cml0ZV8xMmJpdF9n YW1tYV9wcmVjaXNpb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZHJtX3IzMmcz MmIzMiAqY29ycmVjdGlvbl92YWx1ZXMsIHUzMiBwYWxfcHJlY19kYXRhLAorCQllbnVtIHBpcGUg cGlwZSkKK3sKKwl1aW50MTZfdCBibHVlX2ZyYWN0LCBncmVlbl9mcmFjdCwgcmVkX2ZyYWN0Owor CXVpbnQzMl90IGdjbWF4OworCXVpbnQzMl90IHdvcmQgPSAwOworCXVpbnQzMl90IGNvdW50ID0g MDsKKwl1aW50MzJfdCBnY21heF9yZWc7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCS8qIFByb2dyYW0gZmlyc3QgNTEyIHZhbHVlcyBp biBwcmVjaXNpb24gcGFsZXR0ZSAqLworCXdoaWxlIChjb3VudCA8IEJEV18xMkJJVF9HQU1NQV9N QVhfVkFMUyAtIDEpIHsKKwkJLyoKKwkJKiBGcmFtZXdvcmsncyBnZW5lcmFsIGdhbW1hIGZvcm1h dCBpcyA4LjI0ICg4IGludCAxNiBmcmFjdGlvbikKKwkJKiBCRFcgUGxhdGZvcm0ncyBzdXBwb3J0 ZWQgZ2FtbWEgZm9ybWF0IGlzIDE2IGJpdCBjb3JyZWN0aW9uCisJCSogdmFsdWVzIGluIDAuMTYg Zm9ybWF0LiBTbyBleHRyYWN0IGhpZ2hlciAxNiBmcmFjdGlvbiBiaXRzCisJCSogZnJvbSA4LjI0 IGdhbW1hIGNvcnJlY3Rpb24gdmFsdWVzLgorCQkqLworCQlyZWRfZnJhY3QgPSBHRVRfQklUUyhj b3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0ucjMyLCA4LCAxNik7CisJCWdyZWVuX2ZyYWN0ID0gR0VU X0JJVFMoY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLmczMiwgOCwgMTYpOworCQlibHVlX2ZyYWN0 ID0gR0VUX0JJVFMoY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLmIzMiwgOCwgMTYpOworCisJCS8q CisJCSogRnJvbSB0aGUgYnNwZWM6CisJCSogRm9yIDEyIGJpdCBnYW1tYSBjb3JyZWN0aW9uLCBw cm9ncmFtIHByZWNpc2lvbiBwYWxldHRlCisJCSogd2l0aCAxNiBiaXRzIHBlciBjb2xvciBpbiBh IDAuMTYgZm9ybWF0IHdpdGggMCBpbnRlZ2VyIGFuZAorCQkqIDE2IGZyYWN0aW9uYWwgYml0cyAo dXBwZXIgMTAgYml0cyBpbiBvZGQgaW5kZXhlcywgbG93ZXIgNgorCQkqIGJpdHMgaW4gZXZlbiBp bmRleGVzKQorCQkqLworCisJCS8qIEV2ZW4gaW5kZXg6IExvd2VyIDYgYml0cyBmcm9tIGNvcnJl Y3Rpb24gc2hvdWxkIGdvIGFzIE1TQiAqLworCQlTRVRfQklUUyh3b3JkLCBHRVRfQklUUyhyZWRf ZnJhY3QsIDAsIDYpLCAyNCwgNik7CisJCVNFVF9CSVRTKHdvcmQsIEdFVF9CSVRTKGdyZWVuX2Zy YWN0LCAwLCA2KSwgMTQsIDYpOworCQlTRVRfQklUUyh3b3JkLCBHRVRfQklUUyhibHVlX2ZyYWN0 LCAwLCA2KSwgNCwgNik7CisJCUk5MTVfV1JJVEUocGFsX3ByZWNfZGF0YSwgd29yZCk7CisKKwkJ d29yZCA9IDB4MDsKKwkJLyogT2RkIGluZGV4OiBVcHBlciAxMCBiaXRzIG9mIGNvcnJlY3Rpb24g c2hvdWxkIGdvIGFzIE1TQiAqLworCQlTRVRfQklUUyh3b3JkLCBHRVRfQklUUyhyZWRfZnJhY3Qs IDYsIDEwKSwgMjAsIDEwKTsKKwkJU0VUX0JJVFMod29yZCwgR0VUX0JJVFMoZ3JlZW5fZnJhY3Qs IDYsIDEwKSwgMTAsIDEwKTsKKwkJU0VUX0JJVFMod29yZCwgR0VUX0JJVFMoYmx1ZV9mcmFjdCwg NiwgMTApLCAwLCAxMCk7CisKKwkJSTkxNV9XUklURShwYWxfcHJlY19kYXRhLCB3b3JkKTsKKwkJ Y291bnQrKzsKKwl9CisKKwkvKiBOb3cgcHJvZ3JhbSB0aGUgNTEzdGggdmFsdWUgaW4gR0NNQVgg cmVncyAqLworCXdvcmQgPSAwOworCWdjbWF4X3JlZyA9IF9QUkVDX1BBTF9HQ01BWChwaXBlKTsK KwlnY21heCA9IG1pbl90KHUzMiwgR0VUX0JJVFMoY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLnIz MiwgOCwgMTcpLAorCQkJCUJEV19NQVhfR0FNTUEpOworCVNFVF9CSVRTKHdvcmQsIGdjbWF4LCAw LCAxNyk7CisJSTkxNV9XUklURShnY21heF9yZWcsIHdvcmQpOworCWdjbWF4X3JlZyArPSA0Owor CisJd29yZCA9IDA7CisJZ2NtYXggPSBtaW5fdCh1MzIsIEdFVF9CSVRTKGNvcnJlY3Rpb25fdmFs dWVzW2NvdW50XS5nMzIsIDgsIDE3KSwKKwkJCQlCRFdfTUFYX0dBTU1BKTsKKwlTRVRfQklUUyh3 b3JkLCBnY21heCwgMCwgMTcpOworCUk5MTVfV1JJVEUoZ2NtYXhfcmVnLCB3b3JkKTsKKwlnY21h eF9yZWcgKz0gNDsKKworCXdvcmQgPSAwOworCWdjbWF4ID0gbWluX3QodTMyLCBHRVRfQklUUyhj b3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uYjMyLCA4LCAxNyksCisJCQkJQkRXX01BWF9HQU1NQSk7 CisJU0VUX0JJVFMod29yZCwgZ2NtYXgsIDAsIDE3KTsKKwlJOTE1X1dSSVRFKGdjbWF4X3JlZywg d29yZCk7Cit9CisKKy8qIEFwcGx5IHVuaXR5IGdhbW1hIGZvciBnYW1tYSByZXNldCAqLworc3Rh dGljIHZvaWQgYmR3X3Jlc2V0X2dhbW1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKKwkJCWVudW0gcGlwZSBwaXBlKQoreworCXUxNiBjb3VudCA9IDA7CisJdTMyIHZhbDsKKwl1 MzIgcGFsX3ByZWNfZGF0YSA9IExHQ19QQUxFVFRFKHBpcGUsIDApOworCisJRFJNX0RFQlVHX0RS SVZFUigiXG4iKTsKKworCS8qIFJlc2V0IHRoZSBwYWxldHRlIGZvciB1bml0IGdhbW1hICovCisJ d2hpbGUgKGNvdW50IDwgQkRXXzhCSVRfR0FNTUFfTUFYX1ZBTFMpIHsKKwkJLyogUmVkICgyMzox NikgR3JlZW4gKDE1OjgpIGFuZCBCbHVlICg3OjApICovCisJCXZhbCA9IChjb3VudCA8PCAxNikg fCAoY291bnQgPDwgOCkgfCBjb3VudDsKKwkJSTkxNV9XUklURShwYWxfcHJlY19kYXRhLCB2YWwp OworCQlwYWxfcHJlY19kYXRhICs9IDQ7CisJCWNvdW50Kys7CisJfQorfQorCitzdGF0aWMgaW50 IGJkd19zZXRfZ2FtbWEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICpibG9iLAorCQkJc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXUxNiBibHVlX2Zy YWN0LCBncmVlbl9mcmFjdCwgcmVkX2ZyYWN0OworCWVudW0gcGlwZSBwaXBlOworCWludCBjb3Vu dCwgbnVtX3NhbXBsZXM7CisJdTMyIGJsdWUsIGdyZWVuLCByZWQ7CisJdTMyIG1vZGUsIHBhbF9w cmVjX2luZGV4LCBwYWxfcHJlY19kYXRhOworCXUzMiBpbmRleDsKKwl1MzIgd29yZCA9IDA7CisJ c3RydWN0IGRybV9wYWxldHRlICpnYW1tYV9kYXRhOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq c3RhdGUgPSBjcnRjLT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fcjMyZzMyYjMyICpjb3JyZWN0aW9uX3Zh bHVlcyA9IE5VTEw7CisKKwlpZiAoV0FSTl9PTighYmxvYikpCisJCXJldHVybiAtRUlOVkFMOwor CisJZ2FtbWFfZGF0YSA9IChzdHJ1Y3QgZHJtX3BhbGV0dGUgKilibG9iLT5kYXRhOworCXBpcGUg PSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOworCW51bV9zYW1wbGVzID0gZ2FtbWFfZGF0YS0+ bnVtX3NhbXBsZXM7CisKKwlwYWxfcHJlY19pbmRleCA9IF9QUkVDX1BBTF9JTkRFWChwaXBlKTsK KwlwYWxfcHJlY19kYXRhID0gX1BSRUNfUEFMX0RBVEEocGlwZSk7CisKKwljb3JyZWN0aW9uX3Zh bHVlcyA9IChzdHJ1Y3QgZHJtX3IzMmczMmIzMiAqKSZnYW1tYV9kYXRhLT5sdXQ7CisJaW5kZXgg PSBJOTE1X1JFQUQocGFsX3ByZWNfaW5kZXgpOworCisJc3dpdGNoIChudW1fc2FtcGxlcykgewor CWNhc2UgR0FNTUFfRElTQUJMRV9WQUxTOgorCisJCS8qIERpc2FibGUgR2FtbWEgZnVuY3Rpb25h bGl0eSBvbiBQaXBlICovCisJCURSTV9ERUJVR19EUklWRVIoIkRpc2FibGluZyBnYW1tYSBvbiBQ aXBlICVjXG4iLAorCQlwaXBlX25hbWUocGlwZSkpOworCQltb2RlID0gSTkxNV9SRUFEKEdBTU1B X01PREUocGlwZSkpOworCQlpZiAoKG1vZGUgJiBHQU1NQV9NT0RFX01PREVfTUFTSykgPT0gR0FN TUFfTU9ERV9NT0RFXzEyQklUKQorCQkJYmR3X3Jlc2V0X2dhbW1hKGRldl9wcml2LCBwaXBlKTsK KwkJc3RhdGUtPnBhbGV0dGVfYWZ0ZXJfY3RtX2Jsb2IgPSBOVUxMOworCQl3b3JkID0gR0FNTUFf TU9ERV9NT0RFXzhCSVQ7CisJCWJyZWFrOworCisJY2FzZSBCRFdfOEJJVF9HQU1NQV9NQVhfVkFM UzoKKworCQkvKiBMZWdhY3kgcGFsZXR0ZSAqLworCQlwYWxfcHJlY19kYXRhID0gTEdDX1BBTEVU VEUocGlwZSwgMCk7CisJCWNvdW50ID0gMDsKKwkJd2hpbGUgKGNvdW50IDwgQkRXXzhCSVRfR0FN TUFfTUFYX1ZBTFMpIHsKKwkJCWJsdWUgPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uYjMyOwor CQkJZ3JlZW4gPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uZzMyOworCQkJcmVkID0gY29ycmVj dGlvbl92YWx1ZXNbY291bnRdLnIzMjsKKworCQkJYmx1ZV9mcmFjdCA9IEdFVF9CSVRTKGJsdWUs IDE2LCA4KTsKKwkJCWdyZWVuX2ZyYWN0ID0gR0VUX0JJVFMoZ3JlZW4sIDE2LCA4KTsKKwkJCXJl ZF9mcmFjdCA9IEdFVF9CSVRTKHJlZCwgMTYsIDgpOworCisJCQkvKiBCbHVlICg3OjApIEdyZWVu ICgxNTo4KSBhbmQgUmVkICgyMzoxNikgKi8KKwkJCVNFVF9CSVRTKHdvcmQsIGJsdWVfZnJhY3Qs IDAsIDgpOworCQkJU0VUX0JJVFMod29yZCwgZ3JlZW5fZnJhY3QsIDgsIDgpOworCQkJU0VUX0JJ VFMod29yZCwgYmx1ZV9mcmFjdCwgMTYsIDgpOworCQkJSTkxNV9XUklURShwYWxfcHJlY19kYXRh LCB3b3JkKTsKKwkJCXBhbF9wcmVjX2RhdGEgKz0gNDsKKwkJCWNvdW50Kys7CisJCX0KKwkJd29y ZCA9IEdBTU1BX01PREVfTU9ERV84QklUOworCQlicmVhazsKKworCWNhc2UgQkRXX1NQTElUR0FN TUFfTUFYX1ZBTFM6CisKKwkJaW5kZXggfD0gQkRXX0lOREVYX0FVVE9fSU5DUkVNRU5UIHwgQkRX X0lOREVYX1NQTElUX01PREU7CisJCUk5MTVfV1JJVEUocGFsX3ByZWNfaW5kZXgsIGluZGV4KTsK KwkJYmR3X3dyaXRlXzEwYml0X2dhbW1hX3ByZWNpc2lvbihkZXYsIGNvcnJlY3Rpb25fdmFsdWVz LAorCQkJcGFsX3ByZWNfZGF0YSwgQkRXX1NQTElUR0FNTUFfTUFYX1ZBTFMpOworCQl3b3JkID0g R0FNTUFfTU9ERV9NT0RFX1NQTElUOworCQlicmVhazsKKworCWNhc2UgQkRXXzEyQklUX0dBTU1B X01BWF9WQUxTOgorCisJCWluZGV4IHw9IEJEV19JTkRFWF9BVVRPX0lOQ1JFTUVOVDsKKwkJaW5k ZXggJj0gfkJEV19JTkRFWF9TUExJVF9NT0RFOworCQlJOTE1X1dSSVRFKHBhbF9wcmVjX2luZGV4 LCBpbmRleCk7CisJCWJkd193cml0ZV8xMmJpdF9nYW1tYV9wcmVjaXNpb24oZGV2LCBjb3JyZWN0 aW9uX3ZhbHVlcywKKwkJCXBhbF9wcmVjX2RhdGEsIHBpcGUpOworCQl3b3JkID0gR0FNTUFfTU9E RV9NT0RFXzEyQklUOworCQlicmVhazsKKworCWNhc2UgQkRXXzEwQklUX0dBTU1BX01BWF9WQUxT OgorCQlpbmRleCB8PSBCRFdfSU5ERVhfQVVUT19JTkNSRU1FTlQ7CisJCWluZGV4ICY9IH5CRFdf SU5ERVhfU1BMSVRfTU9ERTsKKwkJSTkxNV9XUklURShwYWxfcHJlY19pbmRleCwgaW5kZXgpOwor CQliZHdfd3JpdGVfMTBiaXRfZ2FtbWFfcHJlY2lzaW9uKGRldiwgY29ycmVjdGlvbl92YWx1ZXMs CisJCQlwYWxfcHJlY19kYXRhLCBCRFdfMTBCSVRfR0FNTUFfTUFYX1ZBTFMpOworCQl3b3JkID0g R0FNTUFfTU9ERV9NT0RFXzEwQklUOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCURSTV9FUlJP UigiSW52YWxpZCBudW1iZXIgb2Ygc2FtcGxlc1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0K KworCS8qIFNldCBnYW1tYSBtb2RlIG9uIHBpcGUgY29udHJvbCByZWcgKi8KKwltb2RlID0gSTkx NV9SRUFEKEdBTU1BX01PREUocGlwZSkpOworCW1vZGUgJj0gfkdBTU1BX01PREVfTU9ERV9NQVNL OworCUk5MTVfV1JJVEUoR0FNTUFfTU9ERShwaXBlKSwgbW9kZSB8IHdvcmQpOworCURSTV9ERUJV R19EUklWRVIoIkdhbW1hIGFwcGxpZWQgb24gcGlwZSAlY1xuIiwKKwlwaXBlX25hbWUocGlwZSkp OworCXJldHVybiAwOworfQogCiBzdGF0aWMgczE2IGNodl9wcmVwYXJlX2NzY19jb2VmZihzNjQg Y3NjX3ZhbHVlKQogewpAQCAtMzE5LDYgKzU2NSw4IEBAIHZvaWQgaW50ZWxfY29sb3JfbWFuYWdl cl9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkvKiBHYW1tYSBjb3JyZWN0 aW9uIGlzIHBsYXRmb3JtIHNwZWNpZmljICovCiAJCWlmIChJU19DSEVSUllWSUVXKGRldikpCiAJ CQlyZXQgPSBjaHZfc2V0X2dhbW1hKGRldiwgYmxvYiwgY3J0Yyk7CisJCWVsc2UgaWYgKElTX0JS T0FEV0VMTChkZXYpIHx8IElTX0dFTjkoZGV2KSkKKwkJCXJldCA9IGJkd19zZXRfZ2FtbWEoZGV2 LCBibG9iLCBjcnRjKTsKIAogCQlpZiAocmV0KQogCQkJRFJNX0VSUk9SKCJzZXQgR2FtbWEgY29y cmVjdGlvbiBmYWlsZWRcbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY29sb3JfbWFuYWdlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFu YWdlci5oCmluZGV4IDI3MTI0NmEuLjZjN2NiMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jb2xvcl9tYW5hZ2VyLmgKQEAgLTkyLDMgKzkyLDkgQEAKIAogLyogR2FtbWEgb24gQkRX ICovCiAjZGVmaW5lIEJEV19TUExJVEdBTU1BX01BWF9WQUxTICAgICAgICAgICAgICAgIDUxMgor I2RlZmluZSBCRFdfOEJJVF9HQU1NQV9NQVhfVkFMUwkJMjU2CisjZGVmaW5lIEJEV18xMEJJVF9H QU1NQV9NQVhfVkFMUwkJMTAyNAorI2RlZmluZSBCRFdfMTJCSVRfR0FNTUFfTUFYX1ZBTFMJCTUx MworI2RlZmluZSBCRFdfTUFYX0dBTU1BICAgICAgICAgICAgICAgICAgICAgICAgICgoMSA8PCAy NCkgLSAxKQorI2RlZmluZSBCRFdfSU5ERVhfQVVUT19JTkNSRU1FTlQgICAgICAgICAgICAgICAo MSA8PCAxNSkKKyNkZWZpbmUgQkRXX0lOREVYX1NQTElUX01PREUgICAgICAgICAgICAgICAgICAg KDEgPDwgMzEpCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK