From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH v3 03/10] drm/msm/hdmi: Create a separate HDMI PHY driver Date: Thu, 25 Feb 2016 11:22:38 +0530 Message-ID: <1456379565-15045-4-git-send-email-architt@codeaurora.org> References: <1456379565-15045-1-git-send-email-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1456379565-15045-1-git-send-email-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: robdclark@gmail.com Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, arnd@arndb.de List-Id: linux-arm-msm@vger.kernel.org Q3JlYXRlIGEgUEhZIGRldmljZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRYIFBIWSBhbmQgUExMIHBh cnRzIG9mIHRoZSBIRE1JCmJsb2NrLgoKVGhpcyBtYWtlcyBtYW5hZ2VtZW50IG9mIFBIWSBzcGVj aWZpYyByZXNvdXJjZXMgKHJlZ3VsYXRvcnMgYW5kIGNsb2NrcykKbXVjaCBlYXNpZXIsIGFuZCBt YWtlcyB0aGUgUEhZIGFuZCBQTEwgdXNhYmxlIGluZGVwZW5kZW50bHkuIEl0IGFsc28Kc2ltcGxp ZmllcyB0aGUgY29yZSBIRE1JIGRyaXZlciwgd2hpY2ggY3VycmVudGx5IGFzc2lnbnMgcGh5IG9w cyBhbW9uZwptYW55IG90aGVyIHRoaW5ncy4KClRoZSBQSFkgZHJpdmVyIGltcGxlbWVudGF0aW9u IGRvbmUgaGVyZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIFBIWSBkcml2ZXIKd2UgYWxyZWFkeSBo YXZlIGZvciBEU0kuCgpLZWVwIHRoZSBvbGQgaGRtaV9waHlfZnVuY3Mgb3BzIGZvciBub3cuIFRo ZSBkcml2ZXIgd2lsbCB1c2UgdGhlc2UgdW50aWwKdGhlIEhETUkgUEhZL1BMTCByZWdpc3RlciBv ZmZzZXRzIGFyZW4ndCBjb25zaWRlcmVkIGFzIHNlcGFyYXRlCmRvbWFpbnMgKGkuZS4gdGhlaXIg b2Zmc2V0cyBzdGFydCBmcm9tIDApLgoKVGhlIGRyaXZlciBkb2Vzbid0IHVzZSB0aGUgY29tbW9u IFBIWSBmcmFtZXdvcmsgZm9yIG5vdy4gVGhpcyBpcyBiZWNhdXNlCml0J3MgaGFyZCB0byBtYXAg b3VyIG9wcyB3aXRoIHRoZSBvcHMgcHJvdmlkZWQgYnkgdGhlIGZyYW1ld29yay4gVGhlCmJpbmRp bmdzIHVzZWQgZm9yIHRoaXMgaXMgdGhlIGdlbmVyaWMgcGh5IGJpbmRpbmdzLiBTbywgdGhpcyBj YW4gYmUKYWRhcHRlZCB0byB0aGUgUEhZIGZyYW1ld29yayBpbiB0aGUgZnV0dXJlLCBpZiBwb3Nz aWJsZS4KClNpZ25lZC1vZmYtYnk6IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5v cmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMSAr CiBkcml2ZXJzL2dwdS9kcm0vbXNtL2hkbWkvaGRtaS5jICAgICAgICAgIHwgICAyICsKIGRyaXZl cnMvZ3B1L2RybS9tc20vaGRtaS9oZG1pLmggICAgICAgICAgfCAgNDggKysrKysrKy0KIGRyaXZl cnMvZ3B1L2RybS9tc20vaGRtaS9oZG1pX3BoeS5jICAgICAgfCAxOTAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWlfcGh5Xzg5NjAu YyB8ICAxOCArKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vaGRtaS9oZG1pX3BoeV84eDYwLmMgfCAg IDYgKwogZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWlfcGh5Xzh4NzQuYyB8ICAyMCArKysr CiA3IGZpbGVzIGNoYW5nZWQsIDI4MSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vaGRtaS9oZG1pX3BoeS5jCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9t c20vTWFrZWZpbGUKaW5kZXggMDY1YWQ0MS4uNmFkMGY3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCkBA IC0xMiw2ICsxMiw3IEBAIG1zbS15IDo9IFwKIAloZG1pL2hkbWlfY29ubmVjdG9yLm8gXAogCWhk bWkvaGRtaV9oZGNwLm8gXAogCWhkbWkvaGRtaV9pMmMubyBcCisJaGRtaS9oZG1pX3BoeS5vIFwK IAloZG1pL2hkbWlfcGh5Xzg5NjAubyBcCiAJaGRtaS9oZG1pX3BoeV84eDYwLm8gXAogCWhkbWkv aGRtaV9waHlfOHg3NC5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vaGRtaS9o ZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2hkbWkvaGRtaS5jCmluZGV4IDY4Y2MzY2QuLjBm ZTU0MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vaGRtaS9oZG1pLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWkuYwpAQCAtNTAyLDEwICs1MDIsMTIgQEAgc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaGRtaV9kcml2ZXIgPSB7CiAKIHZvaWQgX19pbml0 IGhkbWlfcmVnaXN0ZXIodm9pZCkKIHsKKwloZG1pX3BoeV9kcml2ZXJfcmVnaXN0ZXIoKTsKIAlw bGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmhkbWlfZHJpdmVyKTsKIH0KIAogdm9pZCBfX2V4aXQg aGRtaV91bnJlZ2lzdGVyKHZvaWQpCiB7CiAJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmhk bWlfZHJpdmVyKTsKKwloZG1pX3BoeV9kcml2ZXJfdW5yZWdpc3RlcigpOwogfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWkuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20v aGRtaS9oZG1pLmgKaW5kZXggZDcxNTMzMi4uMzQwNDIzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9oZG1pL2hkbWkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2hkbWkvaGRt aS5oCkBAIC0xMzksMjUgKzEzOSw2NSBAQCBzdGF0aWMgaW5saW5lIHUzMiBoZG1pX3FmcHJvbV9y ZWFkKHN0cnVjdCBoZG1pICpoZG1pLCB1MzIgcmVnKQogfQogCiAvKgotICogVGhlIHBoeSBhcHBl YXJzIHRvIGJlIGRpZmZlcmVudCwgZm9yIGV4YW1wbGUgYmV0d2VlbiA4OTYwIGFuZCA4eDYwLAot ICogc28gc3BsaXQgdGhlIHBoeSByZWxhdGVkIGZ1bmN0aW9ucyBvdXQgYW5kIGxvYWQgdGhlIGNv cnJlY3Qgb25lIGF0Ci0gKiBydW50aW1lOgorICogaGRtaSBwaHk6CiAgKi8KLQogc3RydWN0IGhk bWlfcGh5X2Z1bmNzIHsKIAl2b2lkICgqZGVzdHJveSkoc3RydWN0IGhkbWlfcGh5ICpwaHkpOwog CXZvaWQgKCpwb3dlcnVwKShzdHJ1Y3QgaGRtaV9waHkgKnBoeSwgdW5zaWduZWQgbG9uZyBpbnQg cGl4Y2xvY2spOwogCXZvaWQgKCpwb3dlcmRvd24pKHN0cnVjdCBoZG1pX3BoeSAqcGh5KTsKIH07 CiAKK2VudW0gaGRtaV9waHlfdHlwZSB7CisJTVNNX0hETUlfUEhZXzh4NjAsCisJTVNNX0hETUlf UEhZXzg5NjAsCisJTVNNX0hETUlfUEhZXzh4NzQsCisJTVNNX0hETUlfUEhZX01BWCwKK307CisK K3N0cnVjdCBoZG1pX3BoeV9jZmcgeworCWVudW0gaGRtaV9waHlfdHlwZSB0eXBlOworCXZvaWQg KCpwb3dlcnVwKShzdHJ1Y3QgaGRtaV9waHkgKnBoeSwgdW5zaWduZWQgbG9uZyBpbnQgcGl4Y2xv Y2spOworCXZvaWQgKCpwb3dlcmRvd24pKHN0cnVjdCBoZG1pX3BoeSAqcGh5KTsKKwljb25zdCBj aGFyICogY29uc3QgKnJlZ19uYW1lczsKKwlpbnQgbnVtX3JlZ3M7CisJY29uc3QgY2hhciAqIGNv bnN0ICpjbGtfbmFtZXM7CisJaW50IG51bV9jbGtzOworfTsKKworZXh0ZXJuIGNvbnN0IHN0cnVj dCBoZG1pX3BoeV9jZmcgaGRtaV9waHlfOHg2MF9jZmc7CitleHRlcm4gY29uc3Qgc3RydWN0IGhk bWlfcGh5X2NmZyBoZG1pX3BoeV84OTYwX2NmZzsKK2V4dGVybiBjb25zdCBzdHJ1Y3QgaGRtaV9w aHlfY2ZnIGhkbWlfcGh5Xzh4NzRfY2ZnOworCiBzdHJ1Y3QgaGRtaV9waHkgeworCXN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXY7CisJdm9pZCBfX2lvbWVtICptbWlvOworCXN0cnVjdCBoZG1p X3BoeV9jZmcgKmNmZzsKIAljb25zdCBzdHJ1Y3QgaGRtaV9waHlfZnVuY3MgKmZ1bmNzOworCXN0 cnVjdCByZWd1bGF0b3IgKipyZWdzOworCXN0cnVjdCBjbGsgKipjbGtzOwogfTsKIAogc3RydWN0 IGhkbWlfcGh5ICpoZG1pX3BoeV84OTYwX2luaXQoc3RydWN0IGhkbWkgKmhkbWkpOwogc3RydWN0 IGhkbWlfcGh5ICpoZG1pX3BoeV84eDYwX2luaXQoc3RydWN0IGhkbWkgKmhkbWkpOwogc3RydWN0 IGhkbWlfcGh5ICpoZG1pX3BoeV84eDc0X2luaXQoc3RydWN0IGhkbWkgKmhkbWkpOwogCitzdGF0 aWMgaW5saW5lIHZvaWQgaGRtaV9waHlfd3JpdGUoc3RydWN0IGhkbWlfcGh5ICpwaHksIHUzMiBy ZWcsIHUzMiBkYXRhKQoreworCW1zbV93cml0ZWwoZGF0YSwgcGh5LT5tbWlvICsgcmVnKTsKK30K Kworc3RhdGljIGlubGluZSB1MzIgaGRtaV9waHlfcmVhZChzdHJ1Y3QgaGRtaV9waHkgKnBoeSwg dTMyIHJlZykKK3sKKwlyZXR1cm4gbXNtX3JlYWRsKHBoeS0+bW1pbyArIHJlZyk7Cit9CisKK2lu dCBoZG1pX3BoeV9yZXNvdXJjZV9lbmFibGUoc3RydWN0IGhkbWlfcGh5ICpwaHkpOwordm9pZCBo ZG1pX3BoeV9yZXNvdXJjZV9kaXNhYmxlKHN0cnVjdCBoZG1pX3BoeSAqcGh5KTsKK3ZvaWQgaGRt aV9waHlfcG93ZXJ1cChzdHJ1Y3QgaGRtaV9waHkgKnBoeSwgdW5zaWduZWQgbG9uZyBpbnQgcGl4 Y2xvY2spOwordm9pZCBoZG1pX3BoeV9wb3dlcmRvd24oc3RydWN0IGhkbWlfcGh5ICpwaHkpOwor dm9pZCBfX2luaXQgaGRtaV9waHlfZHJpdmVyX3JlZ2lzdGVyKHZvaWQpOwordm9pZCBfX2V4aXQg aGRtaV9waHlfZHJpdmVyX3VucmVnaXN0ZXIodm9pZCk7CisKIC8qCiAgKiBhdWRpbzoKICAqLwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWlfcGh5LmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2hkbWkvaGRtaV9waHkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5kZTNmMGY1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9o ZG1pL2hkbWlfcGh5LmMKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw MTYsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKKyAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorCisjaW5jbHVkZSAiaGRtaS5o IgorCitzdGF0aWMgaW50IGhkbWlfcGh5X3Jlc291cmNlX2luaXQoc3RydWN0IGhkbWlfcGh5ICpw aHkpCit7CisJc3RydWN0IGhkbWlfcGh5X2NmZyAqY2ZnID0gcGh5LT5jZmc7CisJc3RydWN0IGRl dmljZSAqZGV2ID0gJnBoeS0+cGRldi0+ZGV2OworCWludCBpLCByZXQ7CisKKwlwaHktPnJlZ3Mg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YocGh5LT5yZWdzWzBdKSAqIGNmZy0+bnVtX3JlZ3Ms CisJCQkJIEdGUF9LRVJORUwpOworCWlmICghcGh5LT5yZWdzKQorCQlyZXR1cm4gLUVOT01FTTsK KworCXBoeS0+Y2xrcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZihwaHktPmNsa3NbMF0pICog Y2ZnLT5udW1fY2xrcywKKwkJCQkgR0ZQX0tFUk5FTCk7CisJaWYgKCFwaHktPmNsa3MpCisJCXJl dHVybiAtRU5PTUVNOworCisJZm9yIChpID0gMDsgaSA8IGNmZy0+bnVtX3JlZ3M7IGkrKykgewor CQlzdHJ1Y3QgcmVndWxhdG9yICpyZWc7CisKKwkJcmVnID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRl diwgY2ZnLT5yZWdfbmFtZXNbaV0pOworCQlpZiAoSVNfRVJSKHJlZykpIHsKKwkJCXJldCA9IFBU Ul9FUlIocmVnKTsKKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBwaHkgcmVndWxhdG9y OiAlcyAoJWQpXG4iLAorCQkJCWNmZy0+cmVnX25hbWVzW2ldLCByZXQpOworCQkJcmV0dXJuIHJl dDsKKwkJfQorCisJCXBoeS0+cmVnc1tpXSA9IHJlZzsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwg Y2ZnLT5udW1fY2xrczsgaSsrKSB7CisJCXN0cnVjdCBjbGsgKmNsazsKKworCQljbGsgPSBkZXZt X2Nsa19nZXQoZGV2LCBjZmctPmNsa19uYW1lc1tpXSk7CisJCWlmIChJU19FUlIoY2xrKSkgewor CQkJcmV0ID0gUFRSX0VSUihjbGspOworCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHBo eSBjbG9jazogJXMgKCVkKVxuIiwKKwkJCQljZmctPmNsa19uYW1lc1tpXSwgcmV0KTsKKwkJCXJl dHVybiByZXQ7CisJCX0KKworCQlwaHktPmNsa3NbaV0gPSBjbGs7CisJfQorCisJcmV0dXJuIDA7 Cit9CisKK2ludCBoZG1pX3BoeV9yZXNvdXJjZV9lbmFibGUoc3RydWN0IGhkbWlfcGh5ICpwaHkp Cit7CisJc3RydWN0IGhkbWlfcGh5X2NmZyAqY2ZnID0gcGh5LT5jZmc7CisJc3RydWN0IGRldmlj ZSAqZGV2ID0gJnBoeS0+cGRldi0+ZGV2OworCWludCBpLCByZXQgPSAwOworCisJcG1fcnVudGlt ZV9nZXRfc3luYyhkZXYpOworCisJZm9yIChpID0gMDsgaSA8IGNmZy0+bnVtX3JlZ3M7IGkrKykg eworCQlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKHBoeS0+cmVnc1tpXSk7CisJCWlmIChyZXQpCisJ CQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgcmVndWxhdG9yOiAlcyAoJWQpXG4iLAor CQkJCWNmZy0+cmVnX25hbWVzW2ldLCByZXQpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBjZmct Pm51bV9jbGtzOyBpKyspIHsKKwkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHBoeS0+Y2xrc1tp XSk7CisJCWlmIChyZXQpCisJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgY2xvY2s6 ICVzICglZClcbiIsCisJCQkJY2ZnLT5jbGtfbmFtZXNbaV0sIHJldCk7CisJfQorCisJcmV0dXJu IHJldDsKK30KKwordm9pZCBoZG1pX3BoeV9yZXNvdXJjZV9kaXNhYmxlKHN0cnVjdCBoZG1pX3Bo eSAqcGh5KQoreworCXN0cnVjdCBoZG1pX3BoeV9jZmcgKmNmZyA9IHBoeS0+Y2ZnOworCXN0cnVj dCBkZXZpY2UgKmRldiA9ICZwaHktPnBkZXYtPmRldjsKKwlpbnQgaTsKKworCWZvciAoaSA9IGNm Zy0+bnVtX2Nsa3MgLSAxOyBpID49IDA7IGktLSkKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHBo eS0+Y2xrc1tpXSk7CisKKwlmb3IgKGkgPSBjZmctPm51bV9yZWdzIC0gMTsgaSA+PSAwOyBpLS0p CisJCXJlZ3VsYXRvcl9kaXNhYmxlKHBoeS0+cmVnc1tpXSk7CisKKwlwbV9ydW50aW1lX3B1dF9z eW5jKGRldik7Cit9CisKK3ZvaWQgaGRtaV9waHlfcG93ZXJ1cChzdHJ1Y3QgaGRtaV9waHkgKnBo eSwgdW5zaWduZWQgbG9uZyBpbnQgcGl4Y2xvY2spCit7CisJaWYgKCFwaHkgfHwgIXBoeS0+Y2Zn LT5wb3dlcnVwKQorCQlyZXR1cm47CisKKwlwaHktPmNmZy0+cG93ZXJ1cChwaHksIHBpeGNsb2Nr KTsKK30KKwordm9pZCBoZG1pX3BoeV9wb3dlcmRvd24oc3RydWN0IGhkbWlfcGh5ICpwaHkpCit7 CisJaWYgKCFwaHkgfHwgIXBoeS0+Y2ZnLT5wb3dlcmRvd24pCisJCXJldHVybjsKKworCXBoeS0+ Y2ZnLT5wb3dlcmRvd24ocGh5KTsKK30KKworc3RhdGljIGludCBoZG1pX3BoeV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2 LT5kZXY7CisJc3RydWN0IGhkbWlfcGh5ICpwaHk7CisJaW50IHJldDsKKworCXBoeSA9IGRldm1f a3phbGxvYyhkZXYsIHNpemVvZigqcGh5KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwaHkpCisJCXJl dHVybiAtRU5PREVWOworCisJcGh5LT5jZmcgPSAoc3RydWN0IGhkbWlfcGh5X2NmZyAqKW9mX2Rl dmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOworCWlmICghcGh5LT5jZmcpCisJCXJldHVybiAtRU5P REVWOworCisJcGh5LT5tbWlvID0gbXNtX2lvcmVtYXAocGRldiwgImhkbWlfcGh5IiwgIkhETUlf UEhZIik7CisJaWYgKElTX0VSUihwaHktPm1taW8pKSB7CisJCWRldl9lcnIoZGV2LCAiJXM6IGZh aWxlZCB0byBtYXAgcGh5IGJhc2VcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJ fQorCisJcGh5LT5wZGV2ID0gcGRldjsKKworCXJldCA9IGhkbWlfcGh5X3Jlc291cmNlX2luaXQo cGh5KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcG1fcnVudGltZV9lbmFibGUoJnBk ZXYtPmRldik7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwaHkpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgaGRtaV9waHlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCit7CisJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGhkbWlfcGh5X2R0X21h dGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJxY29tLGhkbWktcGh5LTg2NjAiLAorCSAgLmRh dGEgPSAmaGRtaV9waHlfOHg2MF9jZmcgfSwKKwl7IC5jb21wYXRpYmxlID0gInFjb20saGRtaS1w aHktODk2MCIsCisJICAuZGF0YSA9ICZoZG1pX3BoeV84OTYwX2NmZyB9LAorCXsgLmNvbXBhdGli bGUgPSAicWNvbSxoZG1pLXBoeS04OTc0IiwKKwkgIC5kYXRhID0gJmhkbWlfcGh5Xzh4NzRfY2Zn IH0sCisJeyAuY29tcGF0aWJsZSA9ICJxY29tLGhkbWktcGh5LTgwODQiLAorCSAgLmRhdGEgPSAm aGRtaV9waHlfOHg3NF9jZmcgfSwKKwl7fQorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgaGRtaV9waHlfcGxhdGZvcm1fZHJpdmVyID0geworCS5wcm9iZSAgICAgID0gaGRtaV9w aHlfcHJvYmUsCisJLnJlbW92ZSAgICAgPSBoZG1pX3BoeV9yZW1vdmUsCisJLmRyaXZlciAgICAg PSB7CisJCS5uYW1lICAgPSAibXNtX2hkbWlfcGh5IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gaGRt aV9waHlfZHRfbWF0Y2gsCisJfSwKK307CisKK3ZvaWQgX19pbml0IGhkbWlfcGh5X2RyaXZlcl9y ZWdpc3Rlcih2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmaGRtaV9waHlfcGxh dGZvcm1fZHJpdmVyKTsKK30KKwordm9pZCBfX2V4aXQgaGRtaV9waHlfZHJpdmVyX3VucmVnaXN0 ZXIodm9pZCkKK3sKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmaGRtaV9waHlfcGxhdGZv cm1fZHJpdmVyKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vaGRtaS9oZG1p X3BoeV84OTYwLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2hkbWkvaGRtaV9waHlfODk2MC5jCmlu ZGV4IDNhMDFjYjUuLmNiZGQ3MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vaGRt aS9oZG1pX3BoeV84OTYwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWlfcGh5 Xzg5NjAuYwpAQCAtNDY0LDYgKzQ2NCwyNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGhkbWlfcGh5 X2Z1bmNzIGhkbWlfcGh5Xzg5NjBfZnVuY3MgPSB7CiAJCS5wb3dlcmRvd24gPSBoZG1pX3BoeV84 OTYwX3Bvd2VyZG93biwKIH07CiAKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaGRtaV9waHlf ODk2MF9yZWdfbmFtZXNbXSA9IHsKKwkiY29yZS12ZGRhIiwKK307CisKK3N0YXRpYyBjb25zdCBj aGFyICogY29uc3QgaGRtaV9waHlfODk2MF9jbGtfbmFtZXNbXSA9IHsKKwkic2xhdmVfaWZhY2Vf Y2xrIiwKK307CisKK2NvbnN0IHN0cnVjdCBoZG1pX3BoeV9jZmcgaGRtaV9waHlfODk2MF9jZmcg PSB7CisJLnR5cGUgPSBNU01fSERNSV9QSFlfODk2MCwKKwkucG93ZXJ1cCA9IGhkbWlfcGh5Xzg5 NjBfcG93ZXJ1cCwKKwkucG93ZXJkb3duID0gaGRtaV9waHlfODk2MF9wb3dlcmRvd24sCisJLnJl Z19uYW1lcyA9IGhkbWlfcGh5Xzg5NjBfcmVnX25hbWVzLAorCS5udW1fcmVncyA9IEFSUkFZX1NJ WkUoaGRtaV9waHlfODk2MF9yZWdfbmFtZXMpLAorCS5jbGtfbmFtZXMgPSBoZG1pX3BoeV84OTYw X2Nsa19uYW1lcywKKwkubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKGhkbWlfcGh5Xzg5NjBfY2xrX25h bWVzKSwKK307CisKIHN0cnVjdCBoZG1pX3BoeSAqaGRtaV9waHlfODk2MF9pbml0KHN0cnVjdCBo ZG1pICpoZG1pKQogewogCXN0cnVjdCBoZG1pX3BoeV84OTYwICpwaHlfODk2MDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vaGRtaS9oZG1pX3BoeV84eDYwLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2hkbWkvaGRtaV9waHlfOHg2MC5jCmluZGV4IGNiMDE0MjEuLmQ1MjkxNjQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vaGRtaS9oZG1pX3BoeV84eDYwLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWlfcGh5Xzh4NjAuYwpAQCAtMTU1LDYgKzE1NSwx MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGhkbWlfcGh5X2Z1bmNzIGhkbWlfcGh5Xzh4NjBfZnVu Y3MgPSB7CiAJCS5wb3dlcmRvd24gPSBoZG1pX3BoeV84eDYwX3Bvd2VyZG93biwKIH07CiAKK2Nv bnN0IHN0cnVjdCBoZG1pX3BoeV9jZmcgaGRtaV9waHlfOHg2MF9jZmcgPSB7CisJLnR5cGUgPSBN U01fSERNSV9QSFlfOHg2MCwKKwkucG93ZXJ1cCA9IGhkbWlfcGh5Xzh4NjBfcG93ZXJ1cCwKKwku cG93ZXJkb3duID0gaGRtaV9waHlfOHg2MF9wb3dlcmRvd24sCit9OworCiBzdHJ1Y3QgaGRtaV9w aHkgKmhkbWlfcGh5Xzh4NjBfaW5pdChzdHJ1Y3QgaGRtaSAqaGRtaSkKIHsKIAlzdHJ1Y3QgaGRt aV9waHlfOHg2MCAqcGh5Xzh4NjA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2hk bWkvaGRtaV9waHlfOHg3NC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9oZG1pL2hkbWlfcGh5Xzh4 NzQuYwppbmRleCA1NmFiODkxLi41ZTQyZDkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2hkbWkvaGRtaV9waHlfOHg3NC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vaGRtaS9o ZG1pX3BoeV84eDc0LmMKQEAgLTY3LDYgKzY3LDI2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGRt aV9waHlfZnVuY3MgaGRtaV9waHlfOHg3NF9mdW5jcyA9IHsKIAkJLnBvd2VyZG93biA9IGhkbWlf cGh5Xzh4NzRfcG93ZXJkb3duLAogfTsKIAorc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoZG1p X3BoeV84eDc0X3JlZ19uYW1lc1tdID0geworCSJjb3JlLXZkZGEiLAorCSJ2ZGRpbyIsCit9Owor CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhkbWlfcGh5Xzh4NzRfY2xrX25hbWVzW10gPSB7 CisJImlmYWNlX2NsayIsCisJImFsdF9pZmFjZV9jbGsiCit9OworCitjb25zdCBzdHJ1Y3QgaGRt aV9waHlfY2ZnIGhkbWlfcGh5Xzh4NzRfY2ZnID0geworCS50eXBlID0gTVNNX0hETUlfUEhZXzh4 NzQsCisJLnBvd2VydXAgPSBoZG1pX3BoeV84eDc0X3Bvd2VydXAsCisJLnBvd2VyZG93biA9IGhk bWlfcGh5Xzh4NzRfcG93ZXJkb3duLAorCS5yZWdfbmFtZXMgPSBoZG1pX3BoeV84eDc0X3JlZ19u YW1lcywKKwkubnVtX3JlZ3MgPSBBUlJBWV9TSVpFKGhkbWlfcGh5Xzh4NzRfcmVnX25hbWVzKSwK KwkuY2xrX25hbWVzID0gaGRtaV9waHlfOHg3NF9jbGtfbmFtZXMsCisJLm51bV9jbGtzID0gQVJS QVlfU0laRShoZG1pX3BoeV84eDc0X2Nsa19uYW1lcyksCit9OworCiBzdHJ1Y3QgaGRtaV9waHkg KmhkbWlfcGh5Xzh4NzRfaW5pdChzdHJ1Y3QgaGRtaSAqaGRtaSkKIHsKIAlzdHJ1Y3QgaGRtaV9w aHlfOHg3NCAqcGh5Xzh4NzQ7Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIElu Yy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLApob3N0ZWQgYnkgVGhlIExp bnV4IEZvdW5kYXRpb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=