From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH 4/7] drm/i915: Add and initialize lspcon connector Date: Tue, 22 Mar 2016 19:55:05 +0530 Message-ID: <1458656708-31228-5-git-send-email-shashank.sharma@intel.com> References: <1458656708-31228-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: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id B45666E79E for ; Tue, 22 Mar 2016 14:20:05 +0000 (UTC) In-Reply-To: <1458656708-31228-1-git-send-email-shashank.sharma@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, daniel.vetter@intel.com Cc: akashdeep.sharma@inte.com List-Id: intel-gfx@lists.freedesktop.org bHNwY29uIGlzIGEgdHJpY2t5IGRldmljZSB3aGljaCBhY3RzIGFzIERQIGluIHNvbWUgY2FzZXMK YW5kIGFzIEhETUkgaW4gc29tZS4gSGVyZSBpcyBob3c6Ci0gbHNwY29uIG5lZWRzIERQIGZvciBh bGwgdGhlIGkyY19vdmVfYXV4IHJlYWQvd3JpdGUgdHJhbnNpdGlvbnMKICBzbyBpdCBuZWVkcyB0 byBoYXZlIHNvbWUgRFAgbGV2ZWwgaW5pdGlhbGl6YXRpb25zCi0gbHNwY29uIGlzIGRldGVjdGVk IGJ5IHVzZXJzcGFjZS9zaW5rIGFzIEhETUkgZGV2aWNlLCBzbwogIGl0IG5lZWRzIHRvIGJlIGRl dGVjdGQgYXMgSERNSSBkZXZpY2UuCgpUaGlzIHBhdGNoIGFkZHMgYSBjdXN0b20gY29ubmVjdG9y IGZvciBsc3Bjb24gZGV2aWNlLCB3aGljaApjYW4gcGljayBhbmQgY2hvc2Ugd2hhdCBpdCB3YW50 cyBmcm9tIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkuCgpUaGlzIHBhdGNoIGFsc28gYWRkcyBmdW5j dGlvbnMgdG8gaW5pdCBkcCBhbmQgaGRtaSB0byB0aGUKbWluaW11bSBuZWVkLCBhbmQgdGhlbiBw bGF5IGFyb3VuZCB3aXRoIHRoZW0uCgpTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNo YXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMgICAgfCAgNiArKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICB8 IDMxICsrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAg IHwgIDggKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyAgIHwgMTcgKysr KysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sc3Bjb24uYyB8IDcyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTM0IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCmluZGV4IDkxNjU0ZmYuLmY2OGMyNTcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCkBAIC0yMTY5LDYgKzIxNjksMTIgQEAgdm9pZCBp bnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkKIAlp bnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSAoMSA8PCAwKSB8ICgxIDw8IDEpIHwgKDEgPDwgMik7 CiAJaW50ZWxfZW5jb2Rlci0+Y2xvbmVhYmxlID0gMDsKIAorCS8qIENoZWNrIGlmIExTUENPTiBp cyBjb25maWd1cmVkIG9uIHRoaXMgcG9ydCAqLworCWlmIChpbnRlbF9iaW9zX2lzX2xzcGNvbl9w cmVzZXQoZGV2LCBpbnRlbF9kaWdfcG9ydC0+cG9ydCkpIHsKKwkJaW50ZWxfbHNwY29uX2luaXRf Y29ubmVjdG9yKGludGVsX2RpZ19wb3J0KTsKKwkJcmV0dXJuOworCX0KKwogCWlmIChpbml0X2Rw KSB7CiAJCWlmICghaW50ZWxfZGRpX2luaXRfZHBfY29ubmVjdG9yKGludGVsX2RpZ19wb3J0KSkK IAkJCWdvdG8gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXggM2ZmOGYxZC4uNjAwNWMy NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC01ODk1LDYgKzU4OTUsMzcgQEAgZmFpbDoK IAlyZXR1cm4gZmFsc2U7CiB9CiAKK2ludCBpbnRlbF9kcF9pbml0X21pbmltdW0oc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqaW50ZWxfY29ubmVjdG9yKQoreworCWludCByZXQ7CisJZW51bSBwb3J0IHBvcnQgPSBpbnRl bF9kaWdfcG9ydC0+cG9ydDsKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gJmludGVsX2Rp Z19wb3J0LT5kcDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJh c2UuYmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKKworCWludGVsX2RpZ19wb3J0LT5kcC5vdXRwdXRfcmVnID0gRERJX0JVRl9D VEwocG9ydCk7CisJaWYgKFdBUk4oaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA8IDEsCisJCSAi Tm90IGVub3VnaCBsYW5lcyAoJWQpIGZvciBEUCBvbiBwb3J0ICVjXG4iLAorCQkgaW50ZWxfZGln X3BvcnQtPm1heF9sYW5lcywgcG9ydF9uYW1lKHBvcnQpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlpbnRlbF9kcC0+cHBzX3BpcGUgPSBJTlZBTElEX1BJUEU7CisJaW50ZWxfZHAtPmdldF9hdXhf Y2xvY2tfZGl2aWRlciA9IHNrbF9nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7CisJaW50ZWxfZHAtPmdl dF9hdXhfc2VuZF9jdGwgPSBza2xfZ2V0X2F1eF9zZW5kX2N0bDsKKwlpbnRlbF9kcC0+cHJlcGFy ZV9saW5rX3JldHJhaW4gPSBpbnRlbF9kZGlfcHJlcGFyZV9saW5rX3JldHJhaW47CisJaW50ZWxf ZHAtPkRQID0gSTkxNV9SRUFEKGludGVsX2RwLT5vdXRwdXRfcmVnKTsKKwlpbnRlbF9kcC0+YXR0 YWNoZWRfY29ubmVjdG9yID0gaW50ZWxfY29ubmVjdG9yOworCUlOSVRfREVMQVlFRF9XT1JLKCZp bnRlbF9kcC0+cGFuZWxfdmRkX3dvcmssCisJCQkgIGVkcF9wYW5lbF92ZGRfd29yayk7CisKKwly ZXQgPSBpbnRlbF9kcF9hdXhfaW5pdChpbnRlbF9kcCwgaW50ZWxfY29ubmVjdG9yKTsKKwlpZiAo cmV0KQorCQlEUk1fRVJST1IoIkF1eCBpbml0IGZvciBMU1BDT04gZmFpbGVkXG4iKTsKKworCXJl dHVybiByZXQ7Cit9CisKIHZvaWQKIGludGVsX2RwX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkgICAgICBpOTE1X3JlZ190IG91dHB1dF9yZWcsIGVudW0gcG9ydCBwb3J0KQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAppbmRleCBmM2U3ZTUyLi4wOTI3M2Q1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaApAQCAtMTMyNyw2ICsxMzI3LDkgQEAgdm9pZCBpbnRlbF9kcF9jb21wdXRlX3Jh dGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHBvcnRfY2xvY2ssCiBib29sIGludGVs X2RwX3NvdXJjZV9zdXBwb3J0c19oYnIyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogYm9v bAogaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVp bnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0pOworaW50IGludGVsX2RwX2lu aXRfbWluaW11bShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJ c3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKTsKKwogCiAvKiBpbnRlbF9k cF9tc3QuYyAqLwogaW50IGludGVsX2RwX21zdF9lbmNvZGVyX2luaXQoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsIGludCBjb25uX2lkKTsKQEAgLTEzMzksNiArMTM0 Miw5IEBAIHZvaWQgaW50ZWxfZHNpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lk IGludGVsX2R2b19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiAKKy8qIGludGVsX2xz cGNvbi5jICovCit2b2lkIGludGVsX2xzcGNvbl9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCk7CisKIC8qIGxlZ2FjeSBmYmRldiBlbXVsYXRp b24gaW4gaW50ZWxfZmJkZXYuYyAqLwogI2lmZGVmIENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9O CiBleHRlcm4gaW50IGludGVsX2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CkBA IC0xMzkyLDYgKzEzOTgsOCBAQCB2b2lkIGludGVsX2ZiY19jbGVhbnVwX2NmYihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9oZG1pX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaTkxNV9yZWdfdCBoZG1pX3JlZywgZW51bSBwb3J0IHBvcnQpOwogdm9p ZCBpbnRlbF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0LAogCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nv bm5lY3Rvcik7CitpbnQgaW50ZWxfaGRtaV9pbml0X21pbmltdW0oc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50 ZWxfY29ubmVjdG9yKTsKIHN0cnVjdCBpbnRlbF9oZG1pICplbmNfdG9faW50ZWxfaGRtaShzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwogYm9vbCBpbnRlbF9oZG1pX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJICAgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKaW5kZXgg ZTJkYWI0OC4uOWZjYmJkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwpAQCAtMjAzNSw2 ICsyMDM1LDIzIEBAIGludGVsX2hkbWlfYWRkX3Byb3BlcnRpZXMoc3RydWN0IGludGVsX2hkbWkg KmludGVsX2hkbWksIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjCiAJaW50ZWxfaGRtaS0+YXNwZWN0 X3JhdGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF9OT05FOwogfQogCitpbnQgaW50ZWxfaGRtaV9p bml0X21pbmltdW0oc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJ CQkgICAgICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQoreworCXN0 cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gJmludGVsX2RpZ19wb3J0LT5oZG1pOworCisJ aWYgKFdBUk4oaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA8IDQsCisJCSJOb3QgZW5vdWdoIGxh bmVzICglZCkgZm9yIEhETUkgb24gcG9ydCAlY1xuIiwKKwkJaW50ZWxfZGlnX3BvcnQtPm1heF9s YW5lcywgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0LT5wb3J0KSkpCisJCXJldHVybiAtRUlOVkFM OworCisJaW50ZWxfaGRtaS0+d3JpdGVfaW5mb2ZyYW1lID0gaHN3X3dyaXRlX2luZm9mcmFtZTsK KwlpbnRlbF9oZG1pLT5zZXRfaW5mb2ZyYW1lcyA9IGhzd19zZXRfaW5mb2ZyYW1lczsKKwlpbnRl bF9oZG1pLT5pbmZvZnJhbWVfZW5hYmxlZCA9IGhzd19pbmZvZnJhbWVfZW5hYmxlZDsKKwlpbnRl bF9oZG1pLT5hdHRhY2hlZF9jb25uZWN0b3IgPSBpbnRlbF9jb25uZWN0b3I7CisJcmV0dXJuIDA7 Cit9CisKIHZvaWQgaW50ZWxfaGRtaV9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICppbnRlbF9jb25uZWN0b3IpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9sc3Bjb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jCmluZGV4 IGY1YzkxZGIuLjlkNWVkMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xzcGNvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jCkBAIC0x MTIsMyArMTEyLDc1IEBAIGludCBsc3Bjb25faW9hX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAq YWRhcHRlciwgdTggKmJ1ZmZlciwKIAogCXJldHVybiBlcnI7CiB9CisKK3ZvaWQgaW50ZWxfbHNw Y29uX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0KQoreworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2Rp Z19wb3J0LT5iYXNlOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9lbmNvZGVyLT5i YXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGln X3BvcnQtPnBvcnQ7CisKKwlpbnRlbF9jb25uZWN0b3IgPSBpbnRlbF9jb25uZWN0b3JfYWxsb2Mo KTsKKwlpZiAoIWludGVsX2Nvbm5lY3RvcikKKwkJcmV0dXJuOworCisJY29ubmVjdG9yID0gJmlu dGVsX2Nvbm5lY3Rvci0+YmFzZTsKKwljb25uZWN0b3ItPmludGVybGFjZV9hbGxvd2VkID0gdHJ1 ZTsKKwljb25uZWN0b3ItPmRvdWJsZXNjYW5fYWxsb3dlZCA9IDA7CisKKwkvKiBpbml0IERQICov CisJaWYgKGludGVsX2RwX2luaXRfbWluaW11bShpbnRlbF9kaWdfcG9ydCwgaW50ZWxfY29ubmVj dG9yKSkgeworCQlEUk1fRVJST1IoIkRQIGluaXQgZm9yIExTUENPTiBmYWlsZWRcbiIpOworCQly ZXR1cm47CisJfQorCisJLyogaW5pdCBIRE1JICovCisJaWYgKGludGVsX2hkbWlfaW5pdF9taW5p bXVtKGludGVsX2RpZ19wb3J0LCBpbnRlbF9jb25uZWN0b3IpKSB7CisJCURSTV9FUlJPUigiSERN SSBpbml0IGZvciBMU1BDT04gZmFpbGVkXG4iKTsKKwkJcmV0dXJuOworCX0KKworCS8qIFNldCB1 cCB0aGUgaG90cGx1ZyBwaW4uICovCisJc3dpdGNoIChwb3J0KSB7CisJY2FzZSBQT1JUX0E6CisJ CWludGVsX2VuY29kZXItPmhwZF9waW4gPSBIUERfUE9SVF9BOworCQlicmVhazsKKwljYXNlIFBP UlRfQjoKKwkJaW50ZWxfZW5jb2Rlci0+aHBkX3BpbiA9IEhQRF9QT1JUX0I7CisJCWlmIChJU19C WFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKQorCQkJaW50ZWxfZW5jb2Rlci0+aHBkX3Bp biA9IEhQRF9QT1JUX0E7CisJCWJyZWFrOworCWNhc2UgUE9SVF9DOgorCQlpbnRlbF9lbmNvZGVy LT5ocGRfcGluID0gSFBEX1BPUlRfQzsKKwkJYnJlYWs7CisJY2FzZSBQT1JUX0Q6CisJCWludGVs X2VuY29kZXItPmhwZF9waW4gPSBIUERfUE9SVF9EOworCQlicmVhazsKKwljYXNlIFBPUlRfRToK KwkJaW50ZWxfZW5jb2Rlci0+aHBkX3BpbiA9IEhQRF9QT1JUX0U7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCUJVRygpOworCX0KKworCS8qCisJICogT24gQlhUIEEwL0ExLCBzdyBuZWVkcyB0byBh Y3RpdmF0ZSBERElBIEhQRCBsb2dpYyBhbmQKKwkgKiBpbnRlcnJ1cHRzIHRvIGNoZWNrIHRoZSBl eHRlcm5hbCBwYW5lbCBjb25uZWN0aW9uLgorCSAqLworCWlmIChJU19CWFRfUkVWSUQoZGV2LCAw LCBCWFRfUkVWSURfQTEpICYmIHBvcnQgPT0gUE9SVF9CKQorCQlkZXZfcHJpdi0+aG90cGx1Zy5p cnFfcG9ydFtQT1JUX0FdID0gaW50ZWxfZGlnX3BvcnQ7CisJZWxzZQorCQlkZXZfcHJpdi0+aG90 cGx1Zy5pcnFfcG9ydFtwb3J0XSA9IGludGVsX2RpZ19wb3J0OworCisJLyogRm9yIEc0WCBkZXNr dG9wIGNoaXAsIFBFR19CQU5EX0dBUF9EQVRBIDM6MCBtdXN0IGZpcnN0IGJlIHdyaXR0ZW4KKwkg KiAweGQuICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIHNwdXJpb3VzIGludGVycnVw dHMgYmVpbmcKKwkgKiBnZW5lcmF0ZWQgb24gdGhlIHBvcnQgd2hlbiBhIGNhYmxlIGlzIG5vdCBh dHRhY2hlZC4KKwkgKi8KKwlpZiAoSVNfRzRYKGRldikgJiYgIUlTX0dNNDUoZGV2KSkgeworCQl1 MzIgdGVtcCA9IEk5MTVfUkVBRChQRUdfQkFORF9HQVBfREFUQSk7CisKKwkJSTkxNV9XUklURShQ RUdfQkFORF9HQVBfREFUQSwgKHRlbXAgJiB+MHhmKSB8IDB4ZCk7CisJfQorfQotLSAKMS45LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=