From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: [PATCH v2 2/3] drm/i915: initialize backlight max from VBT Date: Fri, 4 Sep 2015 16:55:14 +0300 Message-ID: <1441374915-14076-2-git-send-email-jani.nikula@intel.com> References: <1441374915-14076-1-git-send-email-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id E89867A199 for ; Fri, 4 Sep 2015 06:52:10 -0700 (PDT) In-Reply-To: <1441374915-14076-1-git-send-email-jani.nikula@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: jani.nikula@intel.com List-Id: intel-gfx@lists.freedesktop.org Tm9ybWFsbHkgd2UgZGV0ZXJtaW5lIHRoZSBiYWNrbGlnaHQgUFdNIG1vZHVsYXRpb24gZnJlcXVl bmN5ICh3aGljaCB3ZQphbHNvIHVzZSBhcyBiYWNrbGlnaHQgbWF4IHZhbHVlKSBmcm9tIHRoZSBi YWNrbGlnaHQgcmVnaXN0ZXJzIGF0IG1vZHVsZQpsb2FkIHRpbWUsIGV4cGVjdGluZyB0aGUgcmVn aXN0ZXJzIGhhdmUgYmVlbiBpbml0aWFsaXplZCBieSB0aGUgQklPUy4gSWYKdGhpcyBpcyBub3Qg dGhlIGNhc2UsIHdlIGZhaWwuCgpUaGUgVkJUIGNvbnRhaW5zIHRoZSBiYWNrbGlnaHQgbW9kdWxh dGlvbiBmcmVxdWVuY3kgaW4gSHouIEFkZCBwbGF0Zm9ybQpzcGVjaWZpYyBmdW5jdGlvbnMgdG8g Y29udmVydCB0aGUgZnJlcXVlbmN5IGluIEh6IHRvIGJhY2tsaWdodCBQV00KbW9kdWxhdGlvbiBm cmVxdWVuY3ksIGFuZCB1c2UgdGhlbSB0byBpbml0aWFsaXplIHRoZSBiYWNrbGlnaHQgd2hlbiB0 aGUKcmVnaXN0ZXJzIGFyZSBub3QgaW5pdGlhbGl6ZWQgYnkgdGhlIEJJT1MuCgp2MjogRml4IFNQ VCBhbmQgVkxWLiBUaGFua3MgdG8gQ2xpbnQgZm9yIHRoZSBWTFYgY29kZS4KCkNjOiBDbGludCBU YXlsb3IgPGNsaW50b24uYS50YXlsb3JAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8 ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIHwgMTg3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTg1IGluc2Vy dGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMTI4 NzAwNzNkNThmLi41MDNkZmY1ZDc0N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNjcx LDYgKzY3MSw4IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKIAkJCSAgICAgIHVp bnQzMl90IGxldmVsKTsKIAl2b2lkICgqZGlzYWJsZV9iYWNrbGlnaHQpKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3Rvcik7CiAJdm9pZCAoKmVuYWJsZV9iYWNrbGlnaHQpKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CisJdWludDMyX3QgKCpiYWNrbGlnaHRfaHpfdG9f cHdtKShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCXVpbnQzMl90IGh6 KTsKIH07CiAKIGVudW0gZm9yY2V3YWtlX2RvbWFpbl9pZCB7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAppbmRleCA4NGVkOWFiNDFiMGYuLjgxMmI3YjIxMWZhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCkBAIC00NjQ4LDYgKzQ2NDgsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKIAog I2RlZmluZSBDQlIxX1ZMVgkJCShWTFZfRElTUExBWV9CQVNFICsgMHg3MDQwMCkKICNkZWZpbmUg IENCUl9QTkRfREVBRExJTkVfRElTQUJMRQkoMTw8MzEpCisjZGVmaW5lICBDQlJfUFdNX0NMT0NL X01VWF9TRUxFQ1QJKDE8PDMwKQogCiAvKiBGSUZPIHdhdGVybWFyayBzaXplcyBldGMgKi8KICNk ZWZpbmUgRzRYX0ZJRk9fTElORV9TSVpFCTY0CkBAIC02MzI1LDkgKzYzMjYsMTEgQEAgZW51bSBz a2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lICBGRElfUEhBU0VfU1lOQ19PVlIocGlwZSkg KDE8PChGRElBX1BIQVNFX1NZTkNfU0hJRlRfT1ZSIC0gKChwaXBlKSAqIDIpKSkKICNkZWZpbmUg IEZESV9QSEFTRV9TWU5DX0VOKHBpcGUpICgxPDwoRkRJQV9QSEFTRV9TWU5DX1NISUZUX0VOIC0g KChwaXBlKSAqIDIpKSkKICNkZWZpbmUgIEZESV9CQ19CSUZVUkNBVElPTl9TRUxFQ1QJKDEgPDwg MTIpCisjZGVmaW5lICBTUFRfUFdNX0dSQU5VTEFSSVRZCQkoMTw8MCkKICNkZWZpbmUgU09VVEhf Q0hJQ0tFTjIJCTB4YzIwMDQKICNkZWZpbmUgIEZESV9NUEhZX0lPU0ZTQl9SRVNFVF9TVEFUVVMJ KDE8PDEzKQogI2RlZmluZSAgRkRJX01QSFlfSU9TRlNCX1JFU0VUX0NUTAkoMTw8MTIpCisjZGVm aW5lICBMUFRfUFdNX0dSQU5VTEFSSVRZCQkoMTw8NSkKICNkZWZpbmUgIERQTFNfRURQX1BQU19G SVhfRElTCQkoMTw8MCkKIAogI2RlZmluZSBfRkRJX1JYQV9DSElDS0VOICAgICAgICAgMHhjMjAw YwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKaW5kZXggNjgxNjg2ZTVkNTUwLi5kM2EzMTJj NDA5ZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwpAQCAtMTIyNCwxMCArMTIyNCwx NDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKICNlbmRpZiAvKiBDT05GSUdfQkFDS0xJR0hU X0NMQVNTX0RFVklDRSAqLwogCiAvKgotICogTm90ZTogVGhlIHNldHVwIGhvb2tzIGNhbid0IGFz c3VtZSBwaXBlIGlzIHNldCEKKyAqIFNQVDogVGhpcyB2YWx1ZSByZXByZXNlbnRzIHRoZSBwZXJp b2Qgb2YgdGhlIFBXTSBzdHJlYW0gaW4gY2xvY2sgcGVyaW9kcworICogbXVsdGlwbGllZCBieSAx NiAoZGVmYXVsdCBpbmNyZW1lbnQpIG9yIDEyOCAoYWx0ZXJuYXRlIGluY3JlbWVudCBzZWxlY3Rl ZCBpbgorICogU0NISUNLRU5fMSBiaXQgMCkuIFBXTSBjbG9jayBpcyAyNCBNSHouCisgKi8KK3N0 YXRpYyB1MzIgc3B0X2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is IHUzMiBwd21fZnJlcV9oeikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9y LT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOworCXUzMiBtdWwsIGNsb2NrOworCisJaWYgKEk5MTVfUkVBRChTT1VUSF9DSElD S0VOMSkgJiBTUFRfUFdNX0dSQU5VTEFSSVRZKQorCQltdWwgPSAxMjg7CisJZWxzZQorCQltdWwg PSAxNjsKKworCWNsb2NrID0gTUh6KDI0KTsKKworCXJldHVybiBjbG9jayAvIChwd21fZnJlcV9o eiAqIG11bCk7Cit9CisKKy8qCisgKiBMUFQ6IFRoaXMgdmFsdWUgcmVwcmVzZW50cyB0aGUgcGVy aW9kIG9mIHRoZSBQV00gc3RyZWFtIGluIGNsb2NrIHBlcmlvZHMKKyAqIG11bHRpcGxpZWQgYnkg MTI4IChkZWZhdWx0IGluY3JlbWVudCkgb3IgMTYgKGFsdGVybmF0ZSBpbmNyZW1lbnQsIHNlbGVj dGVkIGluCisgKiBMUFQgU09VVEhfQ0hJQ0tFTjIgcmVnaXN0ZXIgYml0IDUpLgorICovCitzdGF0 aWMgdTMyIGxwdF9oel90b19wd20oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1 MzIgcHdtX2ZyZXFfaHopCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKKwl1MzIgbXVsLCBjbG9jazsKKworCWlmIChJOTE1X1JFQUQoU09VVEhfQ0hJQ0tF TjIpICYgTFBUX1BXTV9HUkFOVUxBUklUWSkKKwkJbXVsID0gMTY7CisJZWxzZQorCQltdWwgPSAx Mjg7CisKKwlpZiAoZGV2X3ByaXYtPnBjaF9pZCA9PSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9U WVBFKQorCQljbG9jayA9IE1IeigxMzUpOyAvKiBMUFQ6SCAqLworCWVsc2UKKwkJY2xvY2sgPSBN SHooMjQpOyAvKiBMUFQ6TFAgKi8KKworCXJldHVybiBjbG9jayAvIChwd21fZnJlcV9oeiAqIG11 bCk7Cit9CisKKy8qCisgKiBJTEsvU05CL0lWQjogVGhpcyB2YWx1ZSByZXByZXNlbnRzIHRoZSBw ZXJpb2Qgb2YgdGhlIFBXTSBzdHJlYW0gaW4gUENICisgKiBkaXNwbGF5IHJhdyBjbG9ja3MgbXVs dGlwbGllZCBieSAxMjguCisgKi8KK3N0YXRpYyB1MzIgcGNoX2h6X3RvX3B3bShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKK3sKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKKwlpbnQgY2xvY2sgPSBNSHooaW50 ZWxfcGNoX3Jhd2NsayhkZXYpKTsKKworCXJldHVybiBjbG9jayAvIChwd21fZnJlcV9oeiAqIDEy OCk7Cit9CisKKy8qCisgKiBHZW4yOiBUaGlzIGZpZWxkIGRldGVybWluZXMgdGhlIG51bWJlciBv ZiB0aW1lIGJhc2UgZXZlbnRzIChkaXNwbGF5IGNvcmUKKyAqIGNsb2NrIGZyZXF1ZW5jeS8zMikg aW4gdG90YWwgZm9yIGEgY29tcGxldGUgY3ljbGUgb2YgbW9kdWxhdGVkIGJhY2tsaWdodAorICog Y29udHJvbC4KICAqCi0gKiBYWFg6IFF1ZXJ5IG1vZGUgY2xvY2sgb3IgaGFyZHdhcmUgY2xvY2sg YW5kIHByb2dyYW0gUFdNIG1vZHVsYXRpb24gZnJlcXVlbmN5Ci0gKiBhcHByb3ByaWF0ZWx5IHdo ZW4gaXQncyAwLiBVc2UgVkJUIGFuZC9vciBzYW5lIGRlZmF1bHRzLgorICogR2VuMzogQSB0aW1l IGJhc2UgZXZlbnQgZXF1YWxzIHRoZSBkaXNwbGF5IGNvcmUgY2xvY2sgKFtEZXZQTlZdIEhSQVcg Y2xvY2spCisgKiBkaXZpZGVkIGJ5IDMyLgorICovCitzdGF0aWMgdTMyIGk5eHhfaHpfdG9fcHdt KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQorewor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2OworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJaW50IGNsb2Nr OworCisJaWYgKElTX1BJTkVWSUVXKGRldikpCisJCWNsb2NrID0gaW50ZWxfaHJhd2NsayhkZXYp OworCWVsc2UKKwkJY2xvY2sgPSAxMDAwICogZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlf Y2xvY2tfc3BlZWQoZGV2KTsKKworCXJldHVybiBjbG9jayAvIChwd21fZnJlcV9oeiAqIDMyKTsK K30KKworLyoKKyAqIEdlbjQ6IFRoaXMgdmFsdWUgcmVwcmVzZW50cyB0aGUgcGVyaW9kIG9mIHRo ZSBQV00gc3RyZWFtIGluIGRpc3BsYXkgY29yZQorICogY2xvY2tzIG11bHRpcGxpZWQgYnkgMTI4 LgorICovCitzdGF0aWMgdTMyIGk5NjVfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CisJaW50IGNsb2NrID0gMTAwMCAqIGRldl9wcml2LT5kaXNw bGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRldik7CisKKwlyZXR1cm4gY2xvY2sgLyAocHdt X2ZyZXFfaHogKiAxMjgpOworfQorCisvKgorICogVkxWOiBUaGlzIHZhbHVlIHJlcHJlc2VudHMg dGhlIHBlcmlvZCBvZiB0aGUgUFdNIHN0cmVhbSBpbiBkaXNwbGF5IGNvcmUKKyAqIGNsb2NrcyAo W0RldkNUR10gMjAwTUh6IEhSQVcgY2xvY2tzKSBtdWx0aXBsaWVkIGJ5IDEyOCBvciAyNU1IeiBT MElYIGNsb2NrcworICogbXVsdGlwbGllZCBieSAxNi4gQ0hWIHVzZXMgYSAxOS4yTUh6IFMwSVgg Y2xvY2suCisgKi8KK3N0YXRpYyB1MzIgdmx2X2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCBjbG9jazsKKworCWlmICgoSTkxNV9SRUFE KENCUjFfVkxWKSAmIENCUl9QV01fQ0xPQ0tfTVVYX1NFTEVDVCkgPT0gMCkgeworCQlpZiAoSVNf Q0hFUlJZVklFVyhkZXYpKQorCQkJcmV0dXJuIEtIeigxOTIwMCkgLyAocHdtX2ZyZXFfaHogKiAx Nik7CisJCWVsc2UKKwkJCXJldHVybiBNSHooMjUpIC8gKHB3bV9mcmVxX2h6ICogMTYpOworCX0g ZWxzZSB7CisJCWNsb2NrID0gaW50ZWxfaHJhd2NsayhkZXYpOworCQlyZXR1cm4gTUh6KGNsb2Nr KSAvIChwd21fZnJlcV9oeiAqIDEyOCk7CisJfQorfQorCitzdGF0aWMgdTMyIGdldF9iYWNrbGln aHRfbWF4X3ZidChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1MTYgcHdtX2ZyZXFfaHog PSBkZXZfcHJpdi0+dmJ0LmJhY2tsaWdodC5wd21fZnJlcV9oejsKKwl1MzIgcHdtOworCisJaWYg KCFwd21fZnJlcV9oeikgeworCQlEUk1fREVCVUdfS01TKCJiYWNrbGlnaHQgZnJlcXVlbmN5IG5v dCBzcGVjaWZpZWQgaW4gVkJUXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKCFkZXZfcHJp di0+ZGlzcGxheS5iYWNrbGlnaHRfaHpfdG9fcHdtKSB7CisJCURSTV9ERUJVR19LTVMoImJhY2ts aWdodCBmcmVxdWVuY3kgc2V0dGluZyBmcm9tIFZCVCBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBv biB0aGlzIHBsYXRmb3JtXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcHdtID0gZGV2X3ByaXYt PmRpc3BsYXkuYmFja2xpZ2h0X2h6X3RvX3B3bShjb25uZWN0b3IsIHB3bV9mcmVxX2h6KTsKKwlp ZiAoIXB3bSkgeworCQlEUk1fREVCVUdfS01TKCJiYWNrbGlnaHQgZnJlcXVlbmN5IGNvbnZlcnNp b24gZmFpbGVkXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJRFJNX0RFQlVHX0tNUygiYmFja2xp Z2h0IGZyZXF1ZW5jeSAldSBIeiBmcm9tIFZCVFxuIiwgcHdtX2ZyZXFfaHopOworCisJcmV0dXJu IHB3bTsKK30KKworLyoKKyAqIE5vdGU6IFRoZSBzZXR1cCBob29rcyBjYW4ndCBhc3N1bWUgcGlw ZSBpcyBzZXQhCiAgKi8KIHN0YXRpYyB1MzIgZ2V0X2JhY2tsaWdodF9taW5fdmJ0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKQEAgLTEyNjcsNiArMTQwNiwxMCBAQCBzdGF0 aWMgaW50IGxwdF9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLCBlbnVtIHBpcGUgdW51cwogCiAJcGNoX2N0bDIgPSBJOTE1X1JFQUQoQkxDX1BXTV9QQ0hf Q1RMMik7CiAJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBwY2hfY3RsMiA+PiAxNjsKKworCWlmICgh cGFuZWwtPmJhY2tsaWdodC5tYXgpCisJCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gZ2V0X2JhY2ts aWdodF9tYXhfdmJ0KGNvbm5lY3Rvcik7CisKIAlpZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KQog CQlyZXR1cm4gLUVOT0RFVjsKIApAQCAtMTI5Myw2ICsxNDM2LDEwIEBAIHN0YXRpYyBpbnQgcGNo X3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIGVudW0g cGlwZSB1bnVzCiAKIAlwY2hfY3RsMiA9IEk5MTVfUkVBRChCTENfUFdNX1BDSF9DVEwyKTsKIAlw YW5lbC0+YmFja2xpZ2h0Lm1heCA9IHBjaF9jdGwyID4+IDE2OworCisJaWYgKCFwYW5lbC0+YmFj a2xpZ2h0Lm1heCkKKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBnZXRfYmFja2xpZ2h0X21heF92 YnQoY29ubmVjdG9yKTsKKwogCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCiAJCXJldHVybiAt RU5PREVWOwogCkBAIC0xMzI0LDEyICsxNDcxLDE4IEBAIHN0YXRpYyBpbnQgaTl4eF9zZXR1cF9i YWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgdW51 CiAJCXBhbmVsLT5iYWNrbGlnaHQuYWN0aXZlX2xvd19wd20gPSBjdGwgJiBCTE1fUE9MQVJJVFlf UE5WOwogCiAJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBjdGwgPj4gMTc7Ci0JaWYgKHBhbmVsLT5i YWNrbGlnaHQuY29tYmluYXRpb25fbW9kZSkKLQkJcGFuZWwtPmJhY2tsaWdodC5tYXggKj0gMHhm ZjsKKworCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpIHsKKwkJcGFuZWwtPmJhY2tsaWdodC5t YXggPSBnZXRfYmFja2xpZ2h0X21heF92YnQoY29ubmVjdG9yKTsKKwkJcGFuZWwtPmJhY2tsaWdo dC5tYXggPj49IDE7CisJfQogCiAJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKIAkJcmV0dXJu IC1FTk9ERVY7CiAKKwlpZiAocGFuZWwtPmJhY2tsaWdodC5jb21iaW5hdGlvbl9tb2RlKQorCQlw YW5lbC0+YmFja2xpZ2h0Lm1heCAqPSAweGZmOworCiAJcGFuZWwtPmJhY2tsaWdodC5taW4gPSBn ZXRfYmFja2xpZ2h0X21pbl92YnQoY29ubmVjdG9yKTsKIAogCXZhbCA9IGk5eHhfZ2V0X2JhY2ts aWdodChjb25uZWN0b3IpOwpAQCAtMTM1MywxMiArMTUwNiwxNiBAQCBzdGF0aWMgaW50IGk5NjVf c2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBw aXBlIHVudQogCiAJY3RsID0gSTkxNV9SRUFEKEJMQ19QV01fQ1RMKTsKIAlwYW5lbC0+YmFja2xp Z2h0Lm1heCA9IGN0bCA+PiAxNjsKLQlpZiAocGFuZWwtPmJhY2tsaWdodC5jb21iaW5hdGlvbl9t b2RlKQotCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCAqPSAweGZmOworCisJaWYgKCFwYW5lbC0+YmFj a2xpZ2h0Lm1heCkKKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBnZXRfYmFja2xpZ2h0X21heF92 YnQoY29ubmVjdG9yKTsKIAogCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCiAJCXJldHVybiAt RU5PREVWOwogCisJaWYgKHBhbmVsLT5iYWNrbGlnaHQuY29tYmluYXRpb25fbW9kZSkKKwkJcGFu ZWwtPmJhY2tsaWdodC5tYXggKj0gMHhmZjsKKwogCXBhbmVsLT5iYWNrbGlnaHQubWluID0gZ2V0 X2JhY2tsaWdodF9taW5fdmJ0KGNvbm5lY3Rvcik7CiAKIAl2YWwgPSBpOXh4X2dldF9iYWNrbGln aHQoY29ubmVjdG9yKTsKQEAgLTEzOTgsNiArMTU1NSwxMCBAQCBzdGF0aWMgaW50IHZsdl9zZXR1 cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUg cGlwZQogCiAJY3RsID0gSTkxNV9SRUFEKFZMVl9CTENfUFdNX0NUTChwaXBlKSk7CiAJcGFuZWwt PmJhY2tsaWdodC5tYXggPSBjdGwgPj4gMTY7CisKKwlpZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4 KQorCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IGdldF9iYWNrbGlnaHRfbWF4X3ZidChjb25uZWN0 b3IpOworCiAJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKIAkJcmV0dXJuIC1FTk9ERVY7CiAK QEAgLTE0MjQsNiArMTU4NSwxMCBAQCBieHRfc2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHVudXNlZCkKIAlwYW5lbC0+YmFja2xpZ2h0 LmFjdGl2ZV9sb3dfcHdtID0gcHdtX2N0bCAmIEJYVF9CTENfUFdNX1BPTEFSSVRZOwogCiAJcGFu ZWwtPmJhY2tsaWdodC5tYXggPSBJOTE1X1JFQUQoQlhUX0JMQ19QV01fRlJFUTEpOworCisJaWYg KCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBnZXRfYmFj a2xpZ2h0X21heF92YnQoY29ubmVjdG9yKTsKKwogCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgp CiAJCXJldHVybiAtRU5PREVWOwogCkBAIC0xNTM3LDEyICsxNzAyLDE3IEBAIHZvaWQgaW50ZWxf cGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZGV2 X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGlnaHQgPSBscHRfZGlzYWJsZV9iYWNrbGlnaHQ7 CiAJCWRldl9wcml2LT5kaXNwbGF5LnNldF9iYWNrbGlnaHQgPSBscHRfc2V0X2JhY2tsaWdodDsK IAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IGxwdF9nZXRfYmFja2xpZ2h0Owor CQlpZiAoSEFTX1BDSF9MUFQoZGV2KSkKKwkJCWRldl9wcml2LT5kaXNwbGF5LmJhY2tsaWdodF9o el90b19wd20gPSBscHRfaHpfdG9fcHdtOworCQllbHNlCisJCQlkZXZfcHJpdi0+ZGlzcGxheS5i YWNrbGlnaHRfaHpfdG9fcHdtID0gc3B0X2h6X3RvX3B3bTsKIAl9IGVsc2UgaWYgKEhBU19QQ0hf U1BMSVQoZGV2KSkgewogCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXR1cF9iYWNrbGlnaHQgPSBwY2hf c2V0dXBfYmFja2xpZ2h0OwogCQlkZXZfcHJpdi0+ZGlzcGxheS5lbmFibGVfYmFja2xpZ2h0ID0g cGNoX2VuYWJsZV9iYWNrbGlnaHQ7CiAJCWRldl9wcml2LT5kaXNwbGF5LmRpc2FibGVfYmFja2xp Z2h0ID0gcGNoX2Rpc2FibGVfYmFja2xpZ2h0OwogCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfYmFj a2xpZ2h0ID0gcGNoX3NldF9iYWNrbGlnaHQ7CiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9iYWNr bGlnaHQgPSBwY2hfZ2V0X2JhY2tsaWdodDsKKwkJZGV2X3ByaXYtPmRpc3BsYXkuYmFja2xpZ2h0 X2h6X3RvX3B3bSA9IHBjaF9oel90b19wd207CiAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKIAkJaWYgKGRldl9wcml2LT52YnQuaGFzX21pcGkpIHsKIAkJCWRldl9wcml2LT5kaXNw bGF5LnNldHVwX2JhY2tsaWdodCA9IHB3bV9zZXR1cF9iYWNrbGlnaHQ7CkBAIC0xNTU2LDYgKzE3 MjYsNyBAQCB2b2lkIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5kaXNhYmxlX2JhY2tsaWdodCA9IHZs dl9kaXNhYmxlX2JhY2tsaWdodDsKIAkJCWRldl9wcml2LT5kaXNwbGF5LnNldF9iYWNrbGlnaHQg PSB2bHZfc2V0X2JhY2tsaWdodDsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9iYWNrbGlnaHQg PSB2bHZfZ2V0X2JhY2tsaWdodDsKKwkJCWRldl9wcml2LT5kaXNwbGF5LmJhY2tsaWdodF9oel90 b19wd20gPSB2bHZfaHpfdG9fcHdtOwogCQl9CiAJfSBlbHNlIGlmIChJU19HRU40KGRldikpIHsK IAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0dXBfYmFja2xpZ2h0ID0gaTk2NV9zZXR1cF9iYWNrbGln aHQ7CkBAIC0xNTYzLDEyICsxNzM0LDE0IEBAIHZvaWQgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGln aHRfZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZGV2X3ByaXYtPmRpc3BsYXkuZGlz YWJsZV9iYWNrbGlnaHQgPSBpOTY1X2Rpc2FibGVfYmFja2xpZ2h0OwogCQlkZXZfcHJpdi0+ZGlz cGxheS5zZXRfYmFja2xpZ2h0ID0gaTl4eF9zZXRfYmFja2xpZ2h0OwogCQlkZXZfcHJpdi0+ZGlz cGxheS5nZXRfYmFja2xpZ2h0ID0gaTl4eF9nZXRfYmFja2xpZ2h0OworCQlkZXZfcHJpdi0+ZGlz cGxheS5iYWNrbGlnaHRfaHpfdG9fcHdtID0gaTk2NV9oel90b19wd207CiAJfSBlbHNlIHsKIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuc2V0dXBfYmFja2xpZ2h0ID0gaTl4eF9zZXR1cF9iYWNrbGlnaHQ7 CiAJCWRldl9wcml2LT5kaXNwbGF5LmVuYWJsZV9iYWNrbGlnaHQgPSBpOXh4X2VuYWJsZV9iYWNr bGlnaHQ7CiAJCWRldl9wcml2LT5kaXNwbGF5LmRpc2FibGVfYmFja2xpZ2h0ID0gaTl4eF9kaXNh YmxlX2JhY2tsaWdodDsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2JhY2tsaWdodCA9IGk5eHhf c2V0X2JhY2tsaWdodDsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IGk5eHhf Z2V0X2JhY2tsaWdodDsKKwkJZGV2X3ByaXYtPmRpc3BsYXkuYmFja2xpZ2h0X2h6X3RvX3B3bSA9 IGk5eHhfaHpfdG9fcHdtOwogCX0KIH0KIAotLSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==