From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH v4 3/7] drm/i2c: adv7511: Initial support for ADV7533 Date: Mon, 16 May 2016 16:11:06 +0530 Message-ID: <1463395270-3100-4-git-send-email-architt@codeaurora.org> References: <1457521038-5906-1-git-send-email-architt@codeaurora.org> <1463395270-3100-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: <1463395270-3100-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: dri-devel@lists.freedesktop.org, laurent.pinchart@ideasonboard.com, xinliang.liu@linaro.org Cc: linux-arm-msm@vger.kernel.org, amit.kucheria@linaro.org, srinivas.kandagatla@linaro.org, treding@nvidia.com List-Id: linux-arm-msm@vger.kernel.org QURWNzUzMyBpcyBhIERTSSB0byBIRE1JIGVuY29kZXIgY2hpcC4gSXQgaXMgYSBkZXJpdmF0aXZl IG9mIEFEVjc1MTEsCndpdGggYWRkaXRpb25hbCBibG9ja3MgdG8gdHJhbnNsYXRlIGlucHV0IERT SSBkYXRhIHRvIHBhcmFsbGVsIFJHQgpkYXRhLiBCZXNpZGVzIHRoZSBBRFY3NTExIEkyQyByZWdp c3RlciBtYXAsIGl0IGhhcyBhZGRpdGlvbmFsIHJlZ2lzdGVycwp0aGF0IHJlcXVpcmUgdG8gYmUg Y29uZmlndXJlZCB0byBhY3RpdmF0ZSB0aGUgRFNJIFJ4IGJsb2NrLgoKQ3JlYXRlIGEgbmV3IGNv bmZpZyB0aGF0IGVuYWJsZXMgQURWNzUzMyBzdXBwb3J0LiBVc2UgRFQgY29tcGF0aWJsZQpzdHJp bmdzIHRvIHBvcHVsYXRlIHRoZSBBRFY3NTMzIHR5cGUgZW51bS4gQWRkIG1pbmltYWwgcmVnaXN0 ZXIKY29uZmlndXJhdGlvbnMgYmVsb25naW5nIHRvIHRoZSBEU0kvQ0VDIHJlZ2lzdGVyIG1hcC4g S2VlcCB0aGUgQURWNzUzMwpjb2RlIGluIGEgc2VwYXJhdGUgZmlsZS4KCk9yaWdpbmFsbHkgd29y a2VkIG9uIGJ5IExhcnMtUGV0ZXIgQ2xhdXNlbiA8bGFyc0BtZXRhZm9vLmRlPgoKU2lnbmVkLW9m Zi1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTJjL0tjb25maWcgICB8ICAgNyArKysKIGRyaXZlcnMvZ3B1L2RybS9pMmMvTWFr ZWZpbGUgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTJjL2Fkdjc1MTEuYyB8IDEwMCArKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9p MmMvYWR2NzUxMS5oIHwgIDY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9pMmMvYWR2NzUzMy5jIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyMjggaW5zZXJ0aW9ucygrKSwgNTAgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2kyYy9hZHY3NTMz LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTJjL0tjb25maWcgYi9kcml2ZXJzL2dw dS9kcm0vaTJjL0tjb25maWcKaW5kZXggMjJjN2VkNi4uMDNjNTUyOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2kyYy9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvS2NvbmZp ZwpAQCAtNyw2ICs3LDEzIEBAIGNvbmZpZyBEUk1fSTJDX0FEVjc1MTEKIAloZWxwCiAJICBTdXBw b3J0IGZvciB0aGUgQW5hbG9nIERldmljZSBBRFY3NTExKFcpIGFuZCBBRFY3NTEzIEhETUkgZW5j b2RlcnMuCiAKK2NvbmZpZyBEUk1fSTJDX0FEVjc1MzMKKwlib29sICJBRFY3NTMzIGVuY29kZXIi CisJZGVwZW5kcyBvbiBEUk1fSTJDX0FEVjc1MTEKKwlkZWZhdWx0IHkKKwloZWxwCisJICBTdXBw b3J0IGZvciB0aGUgQW5hbG9nIERldmljZXMgQURWNzUzMyBEU0kgdG8gSERNSSBlbmNvZGVyLgor CiBjb25maWcgRFJNX0kyQ19DSDcwMDYKIAl0cmlzdGF0ZSAiQ2hyb250ZWwgY2g3MDA2IFRWIGVu Y29kZXIiCiAJZGVmYXVsdCBtIGlmIERSTV9OT1VWRUFVCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTJjL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2kyYy9NYWtlZmlsZQppbmRleCAy YzcyZWI1Li5jZDJjMjJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTJjL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvTWFrZWZpbGUKQEAgLTEsNiArMSw4IEBACiBjY2Zs YWdzLXkgOj0gLUlpbmNsdWRlL2RybQogCi1vYmotJChDT05GSUdfRFJNX0kyQ19BRFY3NTExKSAr PSBhZHY3NTExLm8KK2Fkdjc1eHgteSA6PSBhZHY3NTExLm8KK2Fkdjc1eHgtJChDT05GSUdfRFJN X0kyQ19BRFY3NTMzKSArPSBhZHY3NTMzLm8KK29iai0kKENPTkZJR19EUk1fSTJDX0FEVjc1MTEp ICs9IGFkdjc1eHgubwogCiBjaDcwMDYteSA6PSBjaDcwMDZfZHJ2Lm8gY2g3MDA2X21vZGUubwog b2JqLSQoQ09ORklHX0RSTV9JMkNfQ0g3MDA2KSArPSBjaDcwMDYubwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2kyYy9hZHY3NTExLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL2Fkdjc1MTEu YwppbmRleCBjMDBkMTFkLi45ZGViNGZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTJj L2Fkdjc1MTEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL2Fkdjc1MTEuYwpAQCAtOCw0OCAr OCwxNyBAQAogCiAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvZ3Bp by9jb25zdW1lci5oPgotI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2Rl dmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAogI2luY2x1ZGUgPGRybS9kcm1QLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19o ZWxwZXIuaD4KLSNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9lZGlkLmg+CiAKICNpbmNsdWRlICJhZHY3NTExLmgiCiAKLXN0cnVjdCBhZHY3NTExIHsK LQlzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX21haW47Ci0Jc3RydWN0IGkyY19jbGllbnQgKmkyY19l ZGlkOwotCi0Jc3RydWN0IHJlZ21hcCAqcmVnbWFwOwotCXN0cnVjdCByZWdtYXAgKnBhY2tldF9t ZW1vcnlfcmVnbWFwOwotCWVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzOwotCWJvb2wg cG93ZXJlZDsKLQotCXVuc2lnbmVkIGludCBmX3RtZHM7Ci0KLQl1bnNpZ25lZCBpbnQgY3VycmVu dF9lZGlkX3NlZ21lbnQ7Ci0JdWludDhfdCBlZGlkX2J1ZlsyNTZdOwotCWJvb2wgZWRpZF9yZWFk OwotCi0Jd2FpdF9xdWV1ZV9oZWFkX3Qgd3E7Ci0Jc3RydWN0IGRybV9icmlkZ2UgYnJpZGdlOwot CXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKLQotCWJvb2wgZW1iZWRkZWRfc3luYzsK LQllbnVtIGFkdjc1MTFfc3luY19wb2xhcml0eSB2c3luY19wb2xhcml0eTsKLQllbnVtIGFkdjc1 MTFfc3luY19wb2xhcml0eSBoc3luY19wb2xhcml0eTsKLQlib29sIHJnYjsKLQotCXN0cnVjdCBl ZGlkICplZGlkOwotCi0Jc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb19wZDsKLX07Ci0KIC8qIEFESSBy ZWNvbW1lbmRlZCB2YWx1ZXMgZm9yIHByb3BlciBvcGVyYXRpb24uICovCiBzdGF0aWMgY29uc3Qg c3RydWN0IHJlZ19zZXF1ZW5jZSBhZHY3NTExX2ZpeGVkX3JlZ2lzdGVyc1tdID0gewogCXsgMHg5 OCwgMHgwMyB9LApAQCAtMzkxLDYgKzM2MCw5IEBAIHN0YXRpYyB2b2lkIGFkdjc1MTFfcG93ZXJf b24oc3RydWN0IGFkdjc1MTEgKmFkdjc1MTEpCiAJICovCiAJcmVnY2FjaGVfc3luYyhhZHY3NTEx LT5yZWdtYXApOwogCisJaWYgKGFkdjc1MTEtPnR5cGUgPT0gQURWNzUzMykKKwkJYWR2NzUzM19k c2lfcG93ZXJfb24oYWR2NzUxMSk7CisKIAlhZHY3NTExLT5wb3dlcmVkID0gdHJ1ZTsKIH0KIApA QCAtNDAyLDYgKzM3NCw5IEBAIHN0YXRpYyB2b2lkIGFkdjc1MTFfcG93ZXJfb2ZmKHN0cnVjdCBh ZHY3NTExICphZHY3NTExKQogCQkJICAgQURWNzUxMV9QT1dFUl9QT1dFUl9ET1dOKTsKIAlyZWdj YWNoZV9tYXJrX2RpcnR5KGFkdjc1MTEtPnJlZ21hcCk7CiAKKwlpZiAoYWR2NzUxMS0+dHlwZSA9 PSBBRFY3NTMzKQorCQlhZHY3NTMzX2RzaV9wb3dlcl9vZmYoYWR2NzUxMSk7CisKIAlhZHY3NTEx LT5wb3dlcmVkID0gZmFsc2U7CiB9CiAKQEAgLTg3MSw4ICs4NDYsNiBAQCBzdGF0aWMgaW50IGFk djc1MTFfcGFyc2VfZHQoc3RydWN0IGRldmljZV9ub2RlICpucCwKIAljb25zdCBjaGFyICpzdHI7 CiAJaW50IHJldDsKIAotCW1lbXNldChjb25maWcsIDAsIHNpemVvZigqY29uZmlnKSk7Ci0KIAlv Zl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFkaSxpbnB1dC1kZXB0aCIsICZjb25maWctPmlucHV0 X2NvbG9yX2RlcHRoKTsKIAlpZiAoY29uZmlnLT5pbnB1dF9jb2xvcl9kZXB0aCAhPSA4ICYmIGNv bmZpZy0+aW5wdXRfY29sb3JfZGVwdGggIT0gMTAgJiYKIAkgICAgY29uZmlnLT5pbnB1dF9jb2xv cl9kZXB0aCAhPSAxMikKQEAgLTk3Miw5ICs5NDUsMTggQEAgc3RhdGljIGludCBhZHY3NTExX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMsIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICpp ZCkKIAlhZHY3NTExLT5wb3dlcmVkID0gZmFsc2U7CiAJYWR2NzUxMS0+c3RhdHVzID0gY29ubmVj dG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7CiAKLQlyZXQgPSBhZHY3NTExX3BhcnNlX2R0KGRldi0+ b2Zfbm9kZSwgJmxpbmtfY29uZmlnKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCWlmIChk ZXYtPm9mX25vZGUpCisJCWFkdjc1MTEtPnR5cGUgPSAoZW51bSBhZHY3NTExX3R5cGUpb2ZfZGV2 aWNlX2dldF9tYXRjaF9kYXRhKGRldik7CisJZWxzZQorCQlhZHY3NTExLT50eXBlID0gaWQtPmRy aXZlcl9kYXRhOworCisJbWVtc2V0KCZsaW5rX2NvbmZpZywgMCwgc2l6ZW9mKGxpbmtfY29uZmln KSk7CisKKwlpZiAoYWR2NzUxMS0+dHlwZSA9PSBBRFY3NTExKSB7CisJCXJldCA9IGFkdjc1MTFf cGFyc2VfZHQoZGV2LT5vZl9ub2RlLCAmbGlua19jb25maWcpOworCQlpZiAocmV0KQorCQkJcmV0 dXJuIHJldDsKKwl9CiAKIAkvKgogCSAqIFRoZSBwb3dlciBkb3duIEdQSU8gaXMgb3B0aW9uYWwu IElmIHByZXNlbnQsIHRvZ2dsZSBpdCBmcm9tIGFjdGl2ZSB0bwpAQCAtOTk4LDggKzk4MCwxMiBA QCBzdGF0aWMgaW50IGFkdjc1MTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYywgY29uc3Qg c3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogCQlyZXR1cm4gcmV0OwogCWRldl9kYmcoZGV2LCAi UmV2LiAlZFxuIiwgdmFsKTsKIAotCXJldCA9IHJlZ21hcF9yZWdpc3Rlcl9wYXRjaChhZHY3NTEx LT5yZWdtYXAsIGFkdjc1MTFfZml4ZWRfcmVnaXN0ZXJzLAotCQkJCSAgICBBUlJBWV9TSVpFKGFk djc1MTFfZml4ZWRfcmVnaXN0ZXJzKSk7CisJaWYgKGFkdjc1MTEtPnR5cGUgPT0gQURWNzUxMSkK KwkJcmV0ID0gcmVnbWFwX3JlZ2lzdGVyX3BhdGNoKGFkdjc1MTEtPnJlZ21hcCwKKwkJCQkJICAg IGFkdjc1MTFfZml4ZWRfcmVnaXN0ZXJzLAorCQkJCQkgICAgQVJSQVlfU0laRShhZHY3NTExX2Zp eGVkX3JlZ2lzdGVycykpOworCWVsc2UKKwkJcmV0ID0gYWR2NzUzM19wYXRjaF9yZWdpc3RlcnMo YWR2NzUxMSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTAxNCw2ICsxMDAwLDEy IEBAIHN0YXRpYyBpbnQgYWR2NzUxMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLCBjb25z dCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCiAJaWYgKCFhZHY3NTExLT5pMmNfZWRpZCkKIAkJ cmV0dXJuIC1FTk9NRU07CiAKKwlpZiAoYWR2NzUxMS0+dHlwZSA9PSBBRFY3NTMzKSB7CisJCXJl dCA9IGFkdjc1MzNfaW5pdF9jZWMoYWR2NzUxMSk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycl9p MmNfdW5yZWdpc3Rlcl9lZGlkOworCX0KKwogCWlmIChpMmMtPmlycSkgewogCQlpbml0X3dhaXRx dWV1ZV9oZWFkKCZhZHY3NTExLT53cSk7CiAKQEAgLTEwMjIsNyArMTAxNCw3IEBAIHN0YXRpYyBp bnQgYWR2NzUxMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLCBjb25zdCBzdHJ1Y3QgaTJj X2RldmljZV9pZCAqaWQpCiAJCQkJCQlJUlFGX09ORVNIT1QsIGRldl9uYW1lKGRldiksCiAJCQkJ CQlhZHY3NTExKTsKIAkJaWYgKHJldCkKLQkJCWdvdG8gZXJyX2kyY191bnJlZ2lzdGVyX2Rldmlj ZTsKKwkJCWdvdG8gZXJyX3VucmVnaXN0ZXJfY2VjOwogCX0KIAogCS8qIENFQyBpcyB1bnVzZWQg Zm9yIG5vdyAqLwpAQCAtMTAzMyw3ICsxMDI1LDggQEAgc3RhdGljIGludCBhZHY3NTExX3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50ICppMmMsIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkK IAogCWkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGFkdjc1MTEpOwogCi0JYWR2NzUxMV9zZXRfbGlu a19jb25maWcoYWR2NzUxMSwgJmxpbmtfY29uZmlnKTsKKwlpZiAoYWR2NzUxMS0+dHlwZSA9PSBB RFY3NTExKQorCQlhZHY3NTExX3NldF9saW5rX2NvbmZpZyhhZHY3NTExLCAmbGlua19jb25maWcp OwogCiAJYWR2NzUxMS0+YnJpZGdlLmZ1bmNzID0gJmFkdjc1MTFfYnJpZGdlX2Z1bmNzOwogCWFk djc1MTEtPmJyaWRnZS5vZl9ub2RlID0gZGV2LT5vZl9ub2RlOwpAQCAtMTA0MSwxMiArMTAzNCwx NCBAQCBzdGF0aWMgaW50IGFkdjc1MTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYywgY29u c3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogCXJldCA9IGRybV9icmlkZ2VfYWRkKCZhZHY3 NTExLT5icmlkZ2UpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWRk IGFkdjc1MTEgYnJpZGdlXG4iKTsKLQkJZ290byBlcnJfaTJjX3VucmVnaXN0ZXJfZGV2aWNlOwor CQlnb3RvIGVycl91bnJlZ2lzdGVyX2NlYzsKIAl9CiAKIAlyZXR1cm4gMDsKIAotZXJyX2kyY191 bnJlZ2lzdGVyX2RldmljZToKK2Vycl91bnJlZ2lzdGVyX2NlYzoKKwlhZHY3NTMzX3VuaW5pdF9j ZWMoYWR2NzUxMSk7CitlcnJfaTJjX3VucmVnaXN0ZXJfZWRpZDoKIAlpMmNfdW5yZWdpc3Rlcl9k ZXZpY2UoYWR2NzUxMS0+aTJjX2VkaWQpOwogCiAJcmV0dXJuIHJldDsKQEAgLTEwNTgsNiArMTA1 Myw3IEBAIHN0YXRpYyBpbnQgYWR2NzUxMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykK IAogCWRybV9icmlkZ2VfcmVtb3ZlKCZhZHY3NTExLT5icmlkZ2UpOwogCisJYWR2NzUzM191bmlu aXRfY2VjKGFkdjc1MTEpOwogCWkyY191bnJlZ2lzdGVyX2RldmljZShhZHY3NTExLT5pMmNfZWRp ZCk7CiAKIAlrZnJlZShhZHY3NTExLT5lZGlkKTsKQEAgLTEwNjYsMTcgKzEwNjIsMjMgQEAgc3Rh dGljIGludCBhZHY3NTExX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQogfQogCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYWR2NzUxMV9pMmNfaWRzW10gPSB7Ci0JeyAi YWR2NzUxMSIsIDAgfSwKLQl7ICJhZHY3NTExdyIsIDAgfSwKLQl7ICJhZHY3NTEzIiwgMCB9LAor CXsgImFkdjc1MTEiLCBBRFY3NTExIH0sCisJeyAiYWR2NzUxMXciLCBBRFY3NTExIH0sCisJeyAi YWR2NzUxMyIsIEFEVjc1MTEgfSwKKyNpZmRlZiBDT05GSUdfRFJNX0kyQ19BRFY3NTMzCisJeyAi YWR2NzUzMyIsIEFEVjc1MzMgfSwKKyNlbmRpZgogCXsgfQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFC TEUoaTJjLCBhZHY3NTExX2kyY19pZHMpOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBhZHY3NTExX29mX2lkc1tdID0gewotCXsgLmNvbXBhdGlibGUgPSAiYWRpLGFkdjc1MTEi LCB9LAotCXsgLmNvbXBhdGlibGUgPSAiYWRpLGFkdjc1MTF3IiwgfSwKLQl7IC5jb21wYXRpYmxl ID0gImFkaSxhZHY3NTEzIiwgfSwKKwl7IC5jb21wYXRpYmxlID0gImFkaSxhZHY3NTExIiwgLmRh dGEgPSAodm9pZCAqKUFEVjc1MTEgfSwKKwl7IC5jb21wYXRpYmxlID0gImFkaSxhZHY3NTExdyIs IC5kYXRhID0gKHZvaWQgKilBRFY3NTExIH0sCisJeyAuY29tcGF0aWJsZSA9ICJhZGksYWR2NzUx MyIsIC5kYXRhID0gKHZvaWQgKilBRFY3NTExIH0sCisjaWZkZWYgQ09ORklHX0RSTV9JMkNfQURW NzUzMworCXsgLmNvbXBhdGlibGUgPSAiYWRpLGFkdjc1MzMiLCAuZGF0YSA9ICh2b2lkICopQURW NzUzMyB9LAorI2VuZGlmCiAJeyB9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYWR2NzUx MV9vZl9pZHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2kyYy9hZHY3NTExLmggYi9k cml2ZXJzL2dwdS9kcm0vaTJjL2Fkdjc1MTEuaAppbmRleCAzODUxNWIzLi41NDFjNWQ3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTJjL2Fkdjc1MTEuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTJjL2Fkdjc1MTEuaApAQCAtMTAsNiArMTAsMTAgQEAKICNkZWZpbmUgX19EUk1fSTJDX0FE Vjc1MTFfSF9fCiAKICNpbmNsdWRlIDxsaW51eC9oZG1pLmg+CisjaW5jbHVkZSA8bGludXgvaTJj Lmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNf aGVscGVyLmg+CiAKICNkZWZpbmUgQURWNzUxMV9SRUdfQ0hJUF9SRVZJU0lPTgkJMHgwMAogI2Rl ZmluZSBBRFY3NTExX1JFR19OMAkJCQkweDAxCkBAIC0yODYsNCArMjkwLDY3IEBAIHN0cnVjdCBh ZHY3NTExX3ZpZGVvX2NvbmZpZyB7CiAJc3RydWN0IGhkbWlfYXZpX2luZm9mcmFtZSBhdmlfaW5m b2ZyYW1lOwogfTsKIAorZW51bSBhZHY3NTExX3R5cGUgeworCUFEVjc1MTEsCisJQURWNzUzMywK K307CisKK3N0cnVjdCBhZHY3NTExIHsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX21haW47CisJ c3RydWN0IGkyY19jbGllbnQgKmkyY19lZGlkOworCXN0cnVjdCBpMmNfY2xpZW50ICppMmNfY2Vj OworCisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCXN0cnVjdCByZWdtYXAgKnJlZ21hcF9jZWM7 CisJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7CisJYm9vbCBwb3dlcmVkOworCisJ dW5zaWduZWQgaW50IGZfdG1kczsKKworCXVuc2lnbmVkIGludCBjdXJyZW50X2VkaWRfc2VnbWVu dDsKKwl1aW50OF90IGVkaWRfYnVmWzI1Nl07CisJYm9vbCBlZGlkX3JlYWQ7CisKKwl3YWl0X3F1 ZXVlX2hlYWRfdCB3cTsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7CisJc3RydWN0IGRybV9j b25uZWN0b3IgY29ubmVjdG9yOworCisJYm9vbCBlbWJlZGRlZF9zeW5jOworCWVudW0gYWR2NzUx MV9zeW5jX3BvbGFyaXR5IHZzeW5jX3BvbGFyaXR5OworCWVudW0gYWR2NzUxMV9zeW5jX3BvbGFy aXR5IGhzeW5jX3BvbGFyaXR5OworCWJvb2wgcmdiOworCisJc3RydWN0IGVkaWQgKmVkaWQ7CisK KwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvX3BkOworCisJZW51bSBhZHY3NTExX3R5cGUgdHlwZTsK K307CisKKyNpZmRlZiBDT05GSUdfRFJNX0kyQ19BRFY3NTMzCit2b2lkIGFkdjc1MzNfZHNpX3Bv d2VyX29uKHN0cnVjdCBhZHY3NTExICphZHYpOwordm9pZCBhZHY3NTMzX2RzaV9wb3dlcl9vZmYo c3RydWN0IGFkdjc1MTEgKmFkdik7CitpbnQgYWR2NzUzM19wYXRjaF9yZWdpc3RlcnMoc3RydWN0 IGFkdjc1MTEgKmFkdik7Cit2b2lkIGFkdjc1MzNfdW5pbml0X2NlYyhzdHJ1Y3QgYWR2NzUxMSAq YWR2KTsKK2ludCBhZHY3NTMzX2luaXRfY2VjKHN0cnVjdCBhZHY3NTExICphZHYpOworI2Vsc2UK K3N0YXRpYyBpbmxpbmUgdm9pZCBhZHY3NTMzX2RzaV9wb3dlcl9vbihzdHJ1Y3QgYWR2NzUxMSAq YWR2KQoreworfQorc3RhdGljIGlubGluZSB2b2lkIGFkdjc1MzNfZHNpX3Bvd2VyX29mZihzdHJ1 Y3QgYWR2NzUxMSAqYWR2KQoreworfQorc3RhdGljIGlubGluZSBpbnQgYWR2NzUzM19wYXRjaF9y ZWdpc3RlcnMoc3RydWN0IGFkdjc1MTEgKmFkdikKK3sKKwlyZXR1cm4gLUVOT0RFVjsKK30KK3N0 YXRpYyBpbmxpbmUgdm9pZCBhZHY3NTMzX3VuaW5pdF9jZWMoc3RydWN0IGFkdjc1MTEgKmFkdikK K3sKK30KK3N0YXRpYyBpbmxpbmUgaW50IGFkdjc1MzNfaW5pdF9jZWMoc3RydWN0IGFkdjc1MTEg KmFkdikKK3sKKwlyZXR1cm4gLUVOT0RFVjsKK30KKyNlbmRpZgorCiAjZW5kaWYgLyogX19EUk1f STJDX0FEVjc1MTFfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTJjL2Fkdjc1 MzMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvYWR2NzUzMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmNiNGNhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTJjL2Fkdjc1MzMuYwpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg MjAxNiwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgdmVyc2lvbiAyIGFuZAorICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAqLworCisjaW5jbHVkZSAiYWR2NzUxMS5oIgorCitzdGF0aWMgY29uc3Qgc3RydWN0IHJl Z19zZXF1ZW5jZSBhZHY3NTMzX2ZpeGVkX3JlZ2lzdGVyc1tdID0geworCXsgMHgxNiwgMHgyMCB9 LAorCXsgMHg5YSwgMHhlMCB9LAorCXsgMHhiYSwgMHg3MCB9LAorCXsgMHhkZSwgMHg4MiB9LAor CXsgMHhlNCwgMHg0MCB9LAorCXsgMHhlNSwgMHg4MCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCByZWdfc2VxdWVuY2UgYWR2NzUzM19jZWNfZml4ZWRfcmVnaXN0ZXJzW10gPSB7CisJeyAw eDE1LCAweGQwIH0sCisJeyAweDE3LCAweGQwIH0sCisJeyAweDI0LCAweDIwIH0sCisJeyAweDU3 LCAweDExIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgYWR2NzUz M19jZWNfcmVnbWFwX2NvbmZpZyA9IHsKKwkucmVnX2JpdHMgPSA4LAorCS52YWxfYml0cyA9IDgs CisKKwkubWF4X3JlZ2lzdGVyID0gMHhmZiwKKwkuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX1JCVFJF RSwKK307CisKK3ZvaWQgYWR2NzUzM19kc2lfcG93ZXJfb24oc3RydWN0IGFkdjc1MTEgKmFkdikK K3sKKwkvKiBzZXQgbnVtYmVyIG9mIGRzaSBsYW5lcyAoaGFyZGNvZGVkIHRvIDQgZm9yIG5vdykg Ki8KKwlyZWdtYXBfd3JpdGUoYWR2LT5yZWdtYXBfY2VjLCAweDFjLCA0IDw8IDQpOworCS8qIGRp c2FibGUgaW50ZXJuYWwgdGltaW5nIGdlbmVyYXRvciAqLworCXJlZ21hcF93cml0ZShhZHYtPnJl Z21hcF9jZWMsIDB4MjcsIDB4MGIpOworCS8qIGVuYWJsZSBoZG1pICovCisJcmVnbWFwX3dyaXRl KGFkdi0+cmVnbWFwX2NlYywgMHgwMywgMHg4OSk7CisJLyogZGlzYWJsZSB0ZXN0IG1vZGUgKi8K KwlyZWdtYXBfd3JpdGUoYWR2LT5yZWdtYXBfY2VjLCAweDU1LCAweDAwKTsKKworCXJlZ21hcF9y ZWdpc3Rlcl9wYXRjaChhZHYtPnJlZ21hcF9jZWMsIGFkdjc1MzNfY2VjX2ZpeGVkX3JlZ2lzdGVy cywKKwkJCSAgICAgIEFSUkFZX1NJWkUoYWR2NzUzM19jZWNfZml4ZWRfcmVnaXN0ZXJzKSk7Cit9 CisKK3ZvaWQgYWR2NzUzM19kc2lfcG93ZXJfb2ZmKHN0cnVjdCBhZHY3NTExICphZHYpCit7CisJ LyogZGlzYWJsZSBoZG1pICovCisJcmVnbWFwX3dyaXRlKGFkdi0+cmVnbWFwX2NlYywgMHgwMywg MHgwYik7Cit9CisKK2ludCBhZHY3NTMzX3BhdGNoX3JlZ2lzdGVycyhzdHJ1Y3QgYWR2NzUxMSAq YWR2KQoreworCXJldHVybiByZWdtYXBfcmVnaXN0ZXJfcGF0Y2goYWR2LT5yZWdtYXAsCisJCQkJ ICAgICBhZHY3NTMzX2ZpeGVkX3JlZ2lzdGVycywKKwkJCQkgICAgIEFSUkFZX1NJWkUoYWR2NzUz M19maXhlZF9yZWdpc3RlcnMpKTsKK30KKwordm9pZCBhZHY3NTMzX3VuaW5pdF9jZWMoc3RydWN0 IGFkdjc1MTEgKmFkdikKK3sKKwlpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoYWR2LT5pMmNfY2VjKTsK K30KKworc3RhdGljIGNvbnN0IGludCBjZWNfaTJjX2FkZHIgPSAweDc4OworCitpbnQgYWR2NzUz M19pbml0X2NlYyhzdHJ1Y3QgYWR2NzUxMSAqYWR2KQoreworCWludCByZXQ7CisKKwlhZHYtPmky Y19jZWMgPSBpMmNfbmV3X2R1bW15KGFkdi0+aTJjX21haW4tPmFkYXB0ZXIsIGNlY19pMmNfYWRk ciA+PiAxKTsKKwlpZiAoIWFkdi0+aTJjX2NlYykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlhZHYt PnJlZ21hcF9jZWMgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhhZHYtPmkyY19jZWMsCisJCQkJCSZh ZHY3NTMzX2NlY19yZWdtYXBfY29uZmlnKTsKKwlpZiAoSVNfRVJSKGFkdi0+cmVnbWFwX2NlYykp IHsKKwkJcmV0ID0gUFRSX0VSUihhZHYtPnJlZ21hcF9jZWMpOworCQlnb3RvIGVycjsKKwl9CisK KwlyZXQgPSByZWdtYXBfcmVnaXN0ZXJfcGF0Y2goYWR2LT5yZWdtYXBfY2VjLAorCQkJCSAgICBh ZHY3NTMzX2NlY19maXhlZF9yZWdpc3RlcnMsCisJCQkJICAgIEFSUkFZX1NJWkUoYWR2NzUzM19j ZWNfZml4ZWRfcmVnaXN0ZXJzKSk7CisJaWYgKHJldCkKKwkJZ290byBlcnI7CisKKwlyZXR1cm4g MDsKK2VycjoKKwlhZHY3NTMzX3VuaW5pdF9jZWMoYWR2KTsKKwlyZXR1cm4gcmV0OworfQotLSAK VGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBD b2RlIEF1cm9yYSBGb3J1bSwKaG9zdGVkIGJ5IFRoZSBMaW51eCBGb3VuZGF0aW9uCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK