From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yetunde Adebisi Subject: [PATCH 2/3] drm/i915: Add Backlight Control using DPCD for eDP connectors (v8) Date: Wed, 30 Mar 2016 15:27:20 +0100 Message-ID: <1459348041-28165-3-git-send-email-yetundex.adebisi@intel.com> References: <1459348041-28165-1-git-send-email-yetundex.adebisi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 6CE0D6E828 for ; Wed, 30 Mar 2016 14:27:48 +0000 (UTC) In-Reply-To: <1459348041-28165-1-git-send-email-yetundex.adebisi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Yetunde Adebisi , Jani Nikula , isg-gms@eclists.intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVEUCBiYWNrbGlnaHQgY29udHJvbCB1c2luZyBE UENEIHJlZ2lzdGVycyB0bwpiYWNrbGlnaHQgaG9va3MgaW4gaW50ZWxfcGFuZWwuCgpJdCBjaGVj a3MgZm9yIGJhY2tsaWdodCBjb250cm9sIG92ZXIgQVVYIGNoYW5uZWwgY2FwYWJpbGl0eSBhbmQg c2V0cyB1cApmdW5jdGlvbiBwb2ludGVycyB0byBnZXQgYW5kIHNldCB0aGUgYmFja2xpZ2h0IGJy aWdodG5lc3MgbGV2ZWwgaWYKc3VwcG9ydGVkLgoKdjI6IE1vdmVkIGJhY2tsaWdodCBmdW5jdGlv bnMgZnJvbSBpbnRlbF9kcC5jIGludG8gYSBuZXcgZmlsZQppbnRlbF9kcF9hdXhfYmFja2xpZ2h0 LmMuIEFsc28gbW92ZWQgcmVhZGluZyBvZiBlRFAgZGlzcGxheSBjb250cm9sCnJlZ2lzdGVycyB0 byBpbnRlbF9kcF9nZXRfZHBjZAoKdjM6IENvcnJlY3Qgc29tZSBmb3JtYXR0aW5nIG1pc3Rha2Vz Cgp2NDogVXBkYXRlZCB0byB1c2UgQVVYIGJhY2tsaWdodCBjb250cm9sIGlmIFBXTSBjb250cm9s IGlzIG5vdCBwb3NzaWJsZQoJKEphbmkpCnY1OiBNb3ZlZCBjYWxsIHRvIGluaXRpYWxpemUgYmFj a2xpZ2h0IHJlZ2lzdGVycyB0byBkcF9hdXhfc2V0dXBfYmFja2xpZ2h0CnY2OiBDaGVjayBEUF9F RFBfQkFDS0xJR0hUX1BJTl9FTkFCTEVfQ0FQIGlzIGRpc2FibGVkIGJlZm9yZSBzZXR0aW5nIHVw IEFVWApiYWNrbGlnaHQgY29udHJvbC4gVG8gZml4IEJMTV9QV01fRU5BQkxFIGlndCB0ZXN0IHdh cm5pbmdzIG9uIGJkd191bHRyYQp2NzogQWRkIGVuYWJsZV9kcGNkX2JhY2tsaWdodCBtb2R1bGUg cGFyYW1ldGVyLgp2ODogUmViYXNlIG9udG8gbGF0ZXN0IGRybS1pbnRlbC1uaWdodGx5IGJyYW5j aAoKVGhpcyBwYXRjaCBkZXBlbmRzIG9uIGh0dHA6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3Jn L3BhdGNoLzY0MjUzLwoKQ2M6IEJvYiBQYWF1d2UgPGJvYi5qLnBhYXV3ZUBpbnRlbC5jb20+CkNj OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgpBY2tlZC1ieTogSmVzc2UgQmFy bmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+ClNpZ25lZC1vZmYtYnk6IFlldHVuZGUgQWRl YmlzaSA8eWV0dW5kZXguYWRlYmlzaUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGFyYW1zLmMgICAgICAgICAgICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BhcmFtcy5oICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyAgICAgICAgICAgICAgIHwgIDE3ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHBfYXV4X2JhY2tsaWdodC5jIHwgMTcwICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICAgICAgfCAgIDYgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgICAgICAgICAgIHwgICA1ICsKIDcgZmls ZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQppbmRleCA3ZmZiNTFiLi4xMWNjM2U2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQpAQCAtNzksNiArNzksNyBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKIAkgIGR2b190 ZnA0MTAubyBcCiAJICBpbnRlbF9jcnQubyBcCiAJICBpbnRlbF9kZGkubyBcCisJICBpbnRlbF9k cF9hdXhfYmFja2xpZ2h0Lm8gXAogCSAgaW50ZWxfZHBfbGlua190cmFpbmluZy5vIFwKIAkgIGlu dGVsX2RwX21zdC5vIFwKIAkgIGludGVsX2RwLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1z LmMKaW5kZXggMTc3OWYwMi4uMzgzYzA3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wYXJhbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5j CkBAIC01OCw2ICs1OCw3IEBAIHN0cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHkg PSB7CiAJLmd1Y19sb2dfbGV2ZWwgPSAtMSwKIAkuZW5hYmxlX2RwX21zdCA9IHRydWUsCiAJLmlu amVjdF9sb2FkX2ZhaWx1cmUgPSAwLAorCS5lbmFibGVfZHBjZF9iYWNrbGlnaHQgPSBmYWxzZSwK IH07CiAKIG1vZHVsZV9wYXJhbV9uYW1lZChtb2Rlc2V0LCBpOTE1Lm1vZGVzZXQsIGludCwgMDQw MCk7CkBAIC0yMTAsMyArMjExLDYgQEAgTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZHBfbXN0LAog bW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShpbmplY3RfbG9hZF9mYWlsdXJlLCBpOTE1LmluamVj dF9sb2FkX2ZhaWx1cmUsIHVpbnQsIDA0MDApOwogTU9EVUxFX1BBUk1fREVTQyhpbmplY3RfbG9h ZF9mYWlsdXJlLAogCSJGb3JjZSBhbiBlcnJvciBhZnRlciBhIG51bWJlciBvZiBmYWlsdXJlIGNo ZWNrIHBvaW50cyAoMDpkaXNhYmxlZCAoZGVmYXVsdCksIE46Zm9yY2UgZmFpbHVyZSBhdCB0aGUg TnRoIGZhaWx1cmUgY2hlY2sgcG9pbnQpIik7Cittb2R1bGVfcGFyYW1fbmFtZWQoZW5hYmxlX2Rw Y2RfYmFja2xpZ2h0LCBpOTE1LmVuYWJsZV9kcGNkX2JhY2tsaWdodCwgYm9vbCwgMDYwMCk7CitN T0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9kcGNkX2JhY2tsaWdodCwKKwkiRW5hYmxlIHN1cHBvcnQg Zm9yIERQQ0QgYmFja2xpZ2h0IGNvbnRyb2wgKGRlZmF1bHQ6ZmFsc2UpIik7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wYXJhbXMuaAppbmRleCAwMmJjMjc4Li42NWU3M2RkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGFyYW1zLmgKQEAgLTYxLDYgKzYxLDcgQEAgc3RydWN0IGk5MTVfcGFyYW1zIHsKIAli b29sIHZlcmJvc2Vfc3RhdGVfY2hlY2tzOwogCWJvb2wgbnVjbGVhcl9wYWdlZmxpcDsKIAlib29s IGVuYWJsZV9kcF9tc3Q7CisJYm9vbCBlbmFibGVfZHBjZF9iYWNrbGlnaHQ7CiB9OwogCiBleHRl cm4gc3RydWN0IGk5MTVfcGFyYW1zIGk5MTUgX19yZWFkX21vc3RseTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCmluZGV4IDNiZGQ4YmEuLjllOWU3ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpA QCAtMzEwOSw3ICszMTA5LDcgQEAgc3RhdGljIHZvaWQgY2h2X2RwX3Bvc3RfcGxsX2Rpc2FibGUo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAgKiBTaW5rcyBhcmUgKnN1cHBvc2VkKiB0 byBjb21lIHVwIHdpdGhpbiAxbXMgZnJvbSBhbiBvZmYgc3RhdGUsIGJ1dCB3ZSdyZSBhbHNvCiAg KiBzdXBwb3NlZCB0byByZXRyeSAzIHRpbWVzIHBlciB0aGUgc3BlYy4KICAqLwotc3RhdGljIHNz aXplX3QKK3NzaXplX3QKIGludGVsX2RwX2RwY2RfcmVhZF93YWtlKHN0cnVjdCBkcm1fZHBfYXV4 ICphdXgsIHVuc2lnbmVkIGludCBvZmZzZXQsCiAJCQl2b2lkICpidWZmZXIsIHNpemVfdCBzaXpl KQogewpAQCAtMzc3Niw3ICszNzc2LDYgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRw X3RvX2RpZ19wb3J0KGludGVsX2RwKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGlnX3Bv cnQtPmJhc2UuYmFzZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKLQl1aW50OF90IHJldjsKIAogCWlmIChpbnRlbF9kcF9kcGNkX3Jl YWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgMHgwMDAsIGludGVsX2RwLT5kcGNkLAogCQkJCSAgICBz aXplb2YoaW50ZWxfZHAtPmRwY2QpKSA8IDApCkBAIC0zODEyLDYgKzM4MTEsMTUgQEAgaW50ZWxf ZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJCURSTV9ERUJVR19LTVMo IlBTUjIgJXMgb24gc2luayIsCiAJCQkJZGV2X3ByaXYtPnBzci5wc3IyX3N1cHBvcnQgPyAic3Vw cG9ydGVkIiA6ICJub3Qgc3VwcG9ydGVkIik7CiAJCX0KKworCQkvKiBSZWFkIHRoZSBlRFAgRGlz cGxheSBjb250cm9sIGNhcGFiaWxpdGllcyByZWdpc3RlcnMgKi8KKwkJbWVtc2V0KGludGVsX2Rw LT5lZHBfZHBjZCwgMCwgc2l6ZW9mKGludGVsX2RwLT5lZHBfZHBjZCkpOworCQlpZiAoKGludGVs X2RwLT5kcGNkW0RQX0VEUF9DT05GSUdVUkFUSU9OX0NBUF0gJiBEUF9EUENEX0RJU1BMQVlfQ09O VFJPTF9DQVBBQkxFKSAmJgorCQkJCShpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAt PmF1eCwgRFBfRURQX0RQQ0RfUkVWLAorCQkJCQkJaW50ZWxfZHAtPmVkcF9kcGNkLCBzaXplb2Yo aW50ZWxfZHAtPmVkcF9kcGNkKSkgPT0KKwkJCQkJCQkJc2l6ZW9mKGludGVsX2RwLT5lZHBfZHBj ZCkpKQorCQkJRFJNX0RFQlVHX0tNUygiRURQIERQQ0QgOiAlKnBoXG4iLCAoaW50KSBzaXplb2Yo aW50ZWxfZHAtPmVkcF9kcGNkKSwKKwkJCQkJaW50ZWxfZHAtPmVkcF9kcGNkKTsKIAl9CiAKIAlE Uk1fREVCVUdfS01TKCJEaXNwbGF5IFBvcnQgVFBTMyBzdXBwb3J0OiBzb3VyY2UgJXMsIHNpbmsg JXNcbiIsCkBAIC0zODE5LDEwICszODI3LDcgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKIAkJICAgICAgeWVzbm8oZHJtX2RwX3RwczNfc3VwcG9ydGVkKGlu dGVsX2RwLT5kcGNkKSkpOwogCiAJLyogSW50ZXJtZWRpYXRlIGZyZXF1ZW5jeSBzdXBwb3J0ICov Ci0JaWYgKGlzX2VkcChpbnRlbF9kcCkgJiYKLQkgICAgKGludGVsX2RwLT5kcGNkW0RQX0VEUF9D T05GSUdVUkFUSU9OX0NBUF0gJglEUF9EUENEX0RJU1BMQVlfQ09OVFJPTF9DQVBBQkxFKSAmJgot CSAgICAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQX0VEUF9EUENE X1JFViwgJnJldiwgMSkgPT0gMSkgJiYKLQkgICAgKHJldiA+PSAweDAzKSkgeyAvKiBlRHAgdjEu NCBvciBoaWdoZXIgKi8KKwlpZiAoaXNfZWRwKGludGVsX2RwKSAmJiAoaW50ZWxfZHAtPmVkcF9k cGNkWzBdID49IDB4MDMpKSB7IC8qIGVEcCB2MS40IG9yIGhpZ2hlciAqLwogCQlfX2xlMTYgc2lu a19yYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXTsKIAkJaW50IGk7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hNTM2MWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCkBAIC0wLDAgKzEsMTcwIEBACisvKgor ICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpbnRlbF9k cnYuaCIKKworc3RhdGljIHZvaWQgc2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxlKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGJvb2wgZW5hYmxlKQoreworCXVpbnQ4X3QgcmVnX3ZhbCA9IDA7CisK KwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQX0VEUF9ESVNQ TEFZX0NPTlRST0xfUkVHSVNURVIsCisJCQkmcmVnX3ZhbCwgc2l6ZW9mKHJlZ192YWwpKSA8IDAp IHsKKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgRFBDRCByZWdpc3RlciAweCV4XG4i LAorCQkJCURQX0VEUF9ESVNQTEFZX0NPTlRST0xfUkVHSVNURVIpOworCQlyZXR1cm47CisJfQor CWlmIChlbmFibGUpCisJCXJlZ192YWwgfD0gRFBfRURQX0JBQ0tMSUdIVF9FTkFCTEU7CisJZWxz ZQorCQlyZWdfdmFsICY9IH4oRFBfRURQX0JBQ0tMSUdIVF9FTkFCTEUpOworCisJaWYgKGRybV9k cF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJ U1RFUiwKKwkJCXJlZ192YWwpIDwgMCkgeworCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gJXMg YXV4IGJhY2tsaWdodFxuIiwKKwkJCQllbmFibGUgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIik7CisJ fQorfQorCisvKgorICogUmVhZCB0aGUgY3VycmVudCBiYWNrbGlnaHQgdmFsdWUgZnJvbSBEUENE IHJlZ2lzdGVyKHMpIGJhc2VkCisgKiBvbiBpZiA4LWJpdChNU0IpIG9yIDE2LWJpdChNU0IgYW5k IExTQikgdmFsdWVzIGFyZSBzdXBwb3J0ZWQKKyAqLworc3RhdGljIHVpbnQzMl90IGludGVsX2Rw X2F1eF9nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sK KwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3It PmVuY29kZXItPmJhc2UpOworCXVpbnQ4X3QgcmVhZF92YWxbMl0gPSB7IDB4MCB9OworCXVpbnQx Nl90IGxldmVsID0gMDsKKworCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAt PmF1eCwgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQiwKKwkJCSZyZWFkX3ZhbCwgc2l6 ZW9mKHJlYWRfdmFsKSkgPCAwKSB7CisJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIERQ Q0QgcmVnaXN0ZXIgMHgleFxuIiwKKwkJCQlEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTVNC KTsKKwkJcmV0dXJuIDA7CisJfQorCWxldmVsID0gcmVhZF92YWxbMF07CisJaWYgKGludGVsX2Rw LT5lZHBfZHBjZFsyXSAmIERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKQor CQlsZXZlbCA9IChyZWFkX3ZhbFswXSA8PCA4IHwgcmVhZF92YWxbMV0pOworCisJcmV0dXJuIGxl dmVsOworfQorCisvKgorICogU2VuZHMgdGhlIGN1cnJlbnQgYmFja2xpZ2h0IGxldmVsIG92ZXIg dGhlIGF1eCBjaGFubmVsLCBjaGVja2luZyBpZiBpdHMgdXNpbmcKKyAqIDgtYml0IG9yIDE2IGJp dCB2YWx1ZSAoTVNCIGFuZCBMU0IpCisgKi8KK3N0YXRpYyB2b2lkCitpbnRlbF9kcF9hdXhfc2V0 X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBsZXZlbCkK K3sKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0 b3ItPmVuY29kZXItPmJhc2UpOworCXVpbnQ4X3QgdmFsc1syXSA9IHsgMHgwIH07CisKKwl2YWxz WzBdID0gbGV2ZWw7CisKKwkvKiBXcml0ZSB0aGUgTVNCIGFuZC9vciBMU0IgKi8KKwkgaWYgKGlu dGVsX2RwLT5lZHBfZHBjZFsyXSAmIERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19CWVRFX0NP VU5UKSB7CisJCXZhbHNbMF0gPSAobGV2ZWwgJiAweEZGMDApID4+IDg7CisJCXZhbHNbMV0gPSAo bGV2ZWwgJiAweEZGKTsKKwl9CisJaWYgKGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kcC0+YXV4 LCBEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTVNCLAorCQkJdmFscywgc2l6ZW9mKHZhbHMp KSA8IDApIHsKKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHdyaXRlIGF1eCBiYWNrbGlnaHQg bGV2ZWxcbiIpOworCQlyZXR1cm47CisJfQorfQorCitzdGF0aWMgdm9pZCBpbnRlbF9kcF9hdXhf ZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJ c3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5l bmNvZGVyLT5iYXNlKTsKKwl1aW50OF90IGRwY2RfYnVmID0gMDsKKworCXNldF9hdXhfYmFja2xp Z2h0X2VuYWJsZShpbnRlbF9kcCwgdHJ1ZSk7CisKKwlpZiAoKGludGVsX2RwX2RwY2RfcmVhZF93 YWtlKCZpbnRlbF9kcC0+YXV4LAorCQkJRFBfRURQX0JBQ0tMSUdIVF9NT0RFX1NFVF9SRUdJU1RF UiwgJmRwY2RfYnVmLCAxKSA9PSAxKSAmJgorCQkJKChkcGNkX2J1ZiAmIERQX0VEUF9CQUNLTElH SFRfQ09OVFJPTF9NT0RFX01BU0spID09CisJCQkJCURQX0VEUF9CQUNLTElHSFRfQ09OVFJPTF9N T0RFX1BSRVNFVCkpCisJCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfRURQ X0JBQ0tMSUdIVF9NT0RFX1NFVF9SRUdJU1RFUiwKKwkJCQkoZHBjZF9idWYgfCBEUF9FRFBfQkFD S0xJR0hUX0NPTlRST0xfTU9ERV9EUENEKSk7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX2RwX2F1 eF9kaXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7 CisJc2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxlKGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5l bmNvZGVyLT5iYXNlKSwgZmFsc2UpOworfQorCitzdGF0aWMgaW50IGludGVsX2RwX2F1eF9zZXR1 cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJZW51bSBw aXBlIHBpcGUpCit7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9k cCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKTsKKwlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVs ID0gJmNvbm5lY3Rvci0+cGFuZWw7CisKKwlpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodChj b25uZWN0b3IpOworCisJaWYgKGludGVsX2RwLT5lZHBfZHBjZFsyXSAmIERQX0VEUF9CQUNLTElH SFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKQorCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IDB4RkZG RjsKKwllbHNlCisJCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gMHhGRjsKKworCXBhbmVsLT5iYWNr bGlnaHQubWluID0gMDsKKwlwYW5lbC0+YmFja2xpZ2h0LmxldmVsID0gaW50ZWxfZHBfYXV4X2dl dF9iYWNrbGlnaHQoY29ubmVjdG9yKTsKKworCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlZCA9IHBh bmVsLT5iYWNrbGlnaHQubGV2ZWwgIT0gMDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgYm9v bAoraW50ZWxfZHBfYXV4X2Rpc3BsYXlfY29udHJvbF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29kZXItPmJhc2UpOworCisJLyogQ2hlY2sgdGhlICBl RFAgRGlzcGxheSBjb250cm9sIGNhcGFiaWxpdGllcyByZWdpc3RlcnMgdG8gZGV0ZXJtaW5lIGlm CisJICogdGhlIHBhbmVsIGNhbiBzdXBwb3J0IGJhY2tsaWdodCBjb250cm9sIG92ZXIgdGhlIGF1 eCBjaGFubmVsCisJICovCisJaWYgKGludGVsX2RwLT5lZHBfZHBjZFsxXSAmIERQX0VEUF9UQ09O X0JBQ0tMSUdIVF9BREpVU1RNRU5UX0NBUCAmJgorCQkJKGludGVsX2RwLT5lZHBfZHBjZFsxXSAm IERQX0VEUF9CQUNLTElHSFRfQVVYX0VOQUJMRV9DQVApICYmCisJCQkhKChpbnRlbF9kcC0+ZWRw X2RwY2RbMV0gJiBEUF9FRFBfQkFDS0xJR0hUX1BJTl9FTkFCTEVfQ0FQKSB8fAorCQkJCQkoaW50 ZWxfZHAtPmVkcF9kcGNkWzJdICYgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX1BXTV9QSU5f Q0FQKSkpIHsKKworCQlEUk1fREVCVUdfS01TKCJBVVggQmFja2xpZ2h0IENvbnRyb2wgU3VwcG9y dGVkIVxuIik7CisJCXJldHVybiB0cnVlOworCX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKK2ludCBp bnRlbF9kcF9hdXhfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX2Nvbm5lY3RvciAq aW50ZWxfY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmaW50ZWxf Y29ubmVjdG9yLT5wYW5lbDsKKworCWlmICghaW50ZWxfZHBfYXV4X2Rpc3BsYXlfY29udHJvbF9j YXBhYmxlKGludGVsX2Nvbm5lY3RvcikpCisJCXJldHVybiAtRU5PREVWOworCisJcGFuZWwtPmJh Y2tsaWdodC5zZXR1cCA9IGludGVsX2RwX2F1eF9zZXR1cF9iYWNrbGlnaHQ7CisJcGFuZWwtPmJh Y2tsaWdodC5lbmFibGUgPSBpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodDsKKwlwYW5lbC0+ YmFja2xpZ2h0LmRpc2FibGUgPSBpbnRlbF9kcF9hdXhfZGlzYWJsZV9iYWNrbGlnaHQ7CisJcGFu ZWwtPmJhY2tsaWdodC5zZXQgPSBpbnRlbF9kcF9hdXhfc2V0X2JhY2tsaWdodDsKKwlwYW5lbC0+ YmFja2xpZ2h0LmdldCA9IGludGVsX2RwX2F1eF9nZXRfYmFja2xpZ2h0OworCisJcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IGM4N2I0NTAuLjc4MmExMDMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC04MDMsNiArODAzLDcgQEAgc3RydWN0IGludGVsX2Rw IHsKIAl1aW50OF90IGRwY2RbRFBfUkVDRUlWRVJfQ0FQX1NJWkVdOwogCXVpbnQ4X3QgcHNyX2Rw Y2RbRURQX1BTUl9SRUNFSVZFUl9DQVBfU0laRV07CiAJdWludDhfdCBkb3duc3RyZWFtX3BvcnRz W0RQX01BWF9ET1dOU1RSRUFNX1BPUlRTXTsKKwl1aW50OF90IGVkcF9kcGNkW0VEUF9ESVNQTEFZ X0NUTF9DQVBfU0laRV07CiAJLyogc2luayByYXRlcyBhcyByZXBvcnRlZCBieSBEUF9TVVBQT1JU RURfTElOS19SQVRFUyAqLwogCXVpbnQ4X3QgbnVtX3NpbmtfcmF0ZXM7CiAJaW50IHNpbmtfcmF0 ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU107CkBAIC0xMzE4LDYgKzEzMTksMTEgQEAgdm9pZCBp bnRlbF9kcF9jb21wdXRlX3JhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHBvcnRf Y2xvY2ssCiBib29sIGludGVsX2RwX3NvdXJjZV9zdXBwb3J0c19oYnIyKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwogYm9vbAogaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0p Oworc3NpemVfdCBpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4 LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorCQl2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKTsKKwor LyogaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jICovCitpbnQgaW50ZWxfZHBfYXV4X2luaXRfYmFj a2xpZ2h0X2Z1bmNzKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3Rvcik7CiAK IC8qIGludGVsX2RwX21zdC5jICovCiBpbnQgaW50ZWxfZHBfbXN0X2VuY29kZXJfaW5pdChzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwgaW50IGNvbm5faWQpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKaW5kZXggOGM4OTk2Zi4uY2RmY2RhZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wYW5lbC5jCkBAIC0xNzE4LDYgKzE3MTgsMTEgQEAgaW50ZWxfcGFuZWxf aW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCkKIAkJY29udGFp bmVyX29mKHBhbmVsLCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yLCBwYW5lbCk7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsK IAorCWlmIChpOTE1LmVuYWJsZV9kcGNkX2JhY2tsaWdodCAmJgorCQkJKGNvbm5lY3Rvci0+YmFz ZS5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQICYmCisJCQkJCWludGVs X2RwX2F1eF9pbml0X2JhY2tsaWdodF9mdW5jcyhjb25uZWN0b3IpID09IDApKQorCQlyZXR1cm47 CisKIAlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKIAkJcGFuZWwtPmJhY2tsaWdodC5zZXR1 cCA9IGJ4dF9zZXR1cF9iYWNrbGlnaHQ7CiAJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0gYnh0 X2VuYWJsZV9iYWNrbGlnaHQ7Ci0tIAoxLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==