From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH v3 02/12] drm/msm/dsi: Add support for 28nm PHY on 8960 Date: Tue, 1 Dec 2015 15:30:00 +0530 Message-ID: <1448964010-18207-3-git-send-email-architt@codeaurora.org> References: <1447844131-4182-1-git-send-email-architt@codeaurora.org> <1448964010-18207-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: <1448964010-18207-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, robdclark@gmail.com Cc: linux-arm-msm@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org RFNJIFBIWSBvbiBNU004OTYwIGFuZCBBUFE4MDY0IGlzIGEgMjhubSBQSFkgdGhhdCdzIGRpZmZl cmVudCBmcm9tIHRoZQpzdXBwb3J0ZWQgMjhubSBMUCBQSFkgZm91bmQgaW4gbmV3ZXIgY2hpcHMu CgpBZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyBQSFkuCgpTaWduZWQtb2ZmLWJ5OiBBcmNoaXQgVGFu ZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vS2Nv bmZpZyAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFr ZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNp L2RzaS5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNp L3BoeS9kc2lfcGh5LmMgICAgICAgICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNp L3BoeS9kc2lfcGh5LmggICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNp L3BoeS9kc2lfcGh5XzI4bm1fODk2MC5jIHwgMTk1ICsrKysrKysrKysrKysrKysrKysrKysrKwog NiBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzI4bm1fODk2MC5jCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL21zbS9LY29u ZmlnCmluZGV4IDg0ZDNlYzkuLjIxNTQ5NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWcKQEAgLTU0LDMgKzU0 LDExIEBAIGNvbmZpZyBEUk1fTVNNX0RTSV8yME5NX1BIWQogCWRlZmF1bHQgeQogCWhlbHAKIAkg IENob29zZSB0aGlzIG9wdGlvbiBpZiB0aGUgMjBubSBEU0kgUEhZIGlzIHVzZWQgb24gdGhlIHBs YXRmb3JtLgorCitjb25maWcgRFJNX01TTV9EU0lfMjhOTV84OTYwX1BIWQorCWJvb2wgIkVuYWJs ZSBEU0kgMjhubSA4OTYwIFBIWSBkcml2ZXIgaW4gTVNNIERSTSIKKwlkZXBlbmRzIG9uIERSTV9N U01fRFNJCisJZGVmYXVsdCB5CisJaGVscAorCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHRoZSAy OG5tIERTSSBQSFkgODk2MCB2YXJpYW50IGlzIHVzZWQgb24gdGhlCisJICBwbGF0Zm9ybS4KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL01ha2VmaWxlCmluZGV4IDIyMjRmZGQuLjE4ODhmZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQpA QCAtNjMsNiArNjMsNyBAQCBtc20tJChDT05GSUdfRFJNX01TTV9EU0kpICs9IGRzaS9kc2kubyBc CiAKIG1zbS0kKENPTkZJR19EUk1fTVNNX0RTSV8yOE5NX1BIWSkgKz0gZHNpL3BoeS9kc2lfcGh5 XzI4bm0ubwogbXNtLSQoQ09ORklHX0RSTV9NU01fRFNJXzIwTk1fUEhZKSArPSBkc2kvcGh5L2Rz aV9waHlfMjBubS5vCittc20tJChDT05GSUdfRFJNX01TTV9EU0lfMjhOTV84OTYwX1BIWSkgKz0g ZHNpL3BoeS9kc2lfcGh5XzI4bm1fODk2MC5vCiAKIGlmZXEgKCQoQ09ORklHX0RSTV9NU01fRFNJ X1BMTCkseSkKIG1zbS15ICs9IGRzaS9wbGwvZHNpX3BsbC5vCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RzaS9kc2kuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oCmlu ZGV4IDVmNWEzNzMuLjgxNDBlOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNp L2RzaS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oCkBAIC0zMSw2ICszMSw3 IEBAIGVudW0gbXNtX2RzaV9waHlfdHlwZSB7CiAJTVNNX0RTSV9QSFlfMjhOTV9IUE0sCiAJTVNN X0RTSV9QSFlfMjhOTV9MUCwKIAlNU01fRFNJX1BIWV8yME5NLAorCU1TTV9EU0lfUEhZXzI4Tk1f ODk2MCwKIAlNU01fRFNJX1BIWV9NQVgKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZHNpL3BoeS9kc2lfcGh5LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNp X3BoeS5jCmluZGV4IGYxZjk1NWYuLjkxYTk1ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZHNpL3BoeS9kc2lfcGh5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5 L2RzaV9waHkuYwpAQCAtMjc3LDYgKzI3NywxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBkc2lfcGh5X2R0X21hdGNoW10gPSB7CiAJeyAuY29tcGF0aWJsZSA9ICJxY29tLGRz aS1waHktMjBubSIsCiAJICAuZGF0YSA9ICZkc2lfcGh5XzIwbm1fY2ZncyB9LAogI2VuZGlmCisj aWZkZWYgQ09ORklHX0RSTV9NU01fRFNJXzI4Tk1fODk2MF9QSFkKKwl7IC5jb21wYXRpYmxlID0g InFjb20sZHNpLXBoeS0yOG5tLTg5NjAiLAorCSAgLmRhdGEgPSAmZHNpX3BoeV8yOG5tXzg5NjBf Y2ZncyB9LAorI2VuZGlmCiAJe30KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZHNpL3BoeS9kc2lfcGh5LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3Bo eS5oCmluZGV4IDA0NTZiMjUuLjBkNTRlZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZHNpL3BoeS9kc2lfcGh5LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2Rz aV9waHkuaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgbXNtX2RzaV9waHlfY2ZnIHsKIGV4dGVy biBjb25zdCBzdHJ1Y3QgbXNtX2RzaV9waHlfY2ZnIGRzaV9waHlfMjhubV9ocG1fY2ZnczsKIGV4 dGVybiBjb25zdCBzdHJ1Y3QgbXNtX2RzaV9waHlfY2ZnIGRzaV9waHlfMjhubV9scF9jZmdzOwog ZXh0ZXJuIGNvbnN0IHN0cnVjdCBtc21fZHNpX3BoeV9jZmcgZHNpX3BoeV8yMG5tX2NmZ3M7Citl eHRlcm4gY29uc3Qgc3RydWN0IG1zbV9kc2lfcGh5X2NmZyBkc2lfcGh5XzI4bm1fODk2MF9jZmdz OwogCiBzdHJ1Y3QgbXNtX2RzaV9kcGh5X3RpbWluZyB7CiAJdTMyIGNsa19wcmU7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8yOG5tXzg5NjAuYyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzI4bm1fODk2MC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5N2IwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8yOG5tXzg5NjAuYwpAQCAtMCwwICsxLDE5 NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE1LCBUaGUgTGludXggRm91bmRhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5k CisgKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlICJkc2lf cGh5LmgiCisjaW5jbHVkZSAiZHNpLnhtbC5oIgorCitzdGF0aWMgdm9pZCBkc2lfMjhubV9kcGh5 X3NldF90aW1pbmcoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHksCisJCXN0cnVjdCBtc21fZHNpX2Rw aHlfdGltaW5nICp0aW1pbmcpCit7CisJdm9pZCBfX2lvbWVtICpiYXNlID0gcGh5LT5iYXNlOwor CisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZX1RJTUlOR19DVFJM XzAsCisJCURTSV8yOG5tXzg5NjBfUEhZX1RJTUlOR19DVFJMXzBfQ0xLX1pFUk8odGltaW5nLT5j bGtfemVybykpOworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9U SU1JTkdfQ1RSTF8xLAorCQlEU0lfMjhubV84OTYwX1BIWV9USU1JTkdfQ1RSTF8xX0NMS19UUkFJ TCh0aW1pbmctPmNsa190cmFpbCkpOworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhu bV84OTYwX1BIWV9USU1JTkdfQ1RSTF8yLAorCQlEU0lfMjhubV84OTYwX1BIWV9USU1JTkdfQ1RS TF8yX0NMS19QUkVQQVJFKHRpbWluZy0+Y2xrX3ByZXBhcmUpKTsKKwlkc2lfcGh5X3dyaXRlKGJh c2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfVElNSU5HX0NUUkxfMywgMHgwKTsKKwlkc2lfcGh5 X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfVElNSU5HX0NUUkxfNCwKKwkJRFNJ XzI4bm1fODk2MF9QSFlfVElNSU5HX0NUUkxfNF9IU19FWElUKHRpbWluZy0+aHNfZXhpdCkpOwor CWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9USU1JTkdfQ1RSTF81 LAorCQlEU0lfMjhubV84OTYwX1BIWV9USU1JTkdfQ1RSTF81X0hTX1pFUk8odGltaW5nLT5oc196 ZXJvKSk7CisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZX1RJTUlO R19DVFJMXzYsCisJCURTSV8yOG5tXzg5NjBfUEhZX1RJTUlOR19DVFJMXzZfSFNfUFJFUEFSRSh0 aW1pbmctPmhzX3ByZXBhcmUpKTsKKwlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1f ODk2MF9QSFlfVElNSU5HX0NUUkxfNywKKwkJRFNJXzI4bm1fODk2MF9QSFlfVElNSU5HX0NUUkxf N19IU19UUkFJTCh0aW1pbmctPmhzX3RyYWlsKSk7CisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVH X0RTSV8yOG5tXzg5NjBfUEhZX1RJTUlOR19DVFJMXzgsCisJCURTSV8yOG5tXzg5NjBfUEhZX1RJ TUlOR19DVFJMXzhfSFNfUlFTVCh0aW1pbmctPmhzX3Jxc3QpKTsKKwlkc2lfcGh5X3dyaXRlKGJh c2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfVElNSU5HX0NUUkxfOSwKKwkJRFNJXzI4bm1fODk2 MF9QSFlfVElNSU5HX0NUUkxfOV9UQV9HTyh0aW1pbmctPnRhX2dvKSB8CisJCURTSV8yOG5tXzg5 NjBfUEhZX1RJTUlOR19DVFJMXzlfVEFfU1VSRSh0aW1pbmctPnRhX3N1cmUpKTsKKwlkc2lfcGh5 X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfVElNSU5HX0NUUkxfMTAsCisJCURT SV8yOG5tXzg5NjBfUEhZX1RJTUlOR19DVFJMXzEwX1RBX0dFVCh0aW1pbmctPnRhX2dldCkpOwor CWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9USU1JTkdfQ1RSTF8x MSwKKwkJRFNJXzI4bm1fODk2MF9QSFlfVElNSU5HX0NUUkxfMTFfVFJJRzNfQ01EKDApKTsKK30K Kworc3RhdGljIHZvaWQgZHNpXzI4bm1fcGh5X3JlZ3VsYXRvcl9pbml0KHN0cnVjdCBtc21fZHNp X3BoeSAqcGh5KQoreworCXZvaWQgX19pb21lbSAqYmFzZSA9IHBoeS0+cmVnX2Jhc2U7CisKKwlk c2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfTUlTQ19SRUdVTEFUT1Jf Q1RSTF8wLCAweDMpOworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BI WV9NSVNDX1JFR1VMQVRPUl9DVFJMXzEsIDEpOworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19E U0lfMjhubV84OTYwX1BIWV9NSVNDX1JFR1VMQVRPUl9DVFJMXzIsIDEpOworCWRzaV9waHlfd3Jp dGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9NSVNDX1JFR1VMQVRPUl9DVFJMXzMsIDAp OworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9NSVNDX1JFR1VM QVRPUl9DVFJMXzQsCisJCTB4MTAwKTsKK30KKworc3RhdGljIHZvaWQgZHNpXzI4bm1fcGh5X3Jl Z3VsYXRvcl9jdHJsKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5KQoreworCXZvaWQgX19pb21lbSAq YmFzZSA9IHBoeS0+cmVnX2Jhc2U7CisKKwlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4 bm1fODk2MF9QSFlfTUlTQ19SRUdVTEFUT1JfQ1RSTF8wLCAweDMpOworCWRzaV9waHlfd3JpdGUo YmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9NSVNDX1JFR1VMQVRPUl9DVFJMXzEsIDB4YSk7 CisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZX01JU0NfUkVHVUxB VE9SX0NUUkxfMiwgMHg0KTsKKwlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2 MF9QSFlfTUlTQ19SRUdVTEFUT1JfQ1RSTF8zLCAweDApOworCWRzaV9waHlfd3JpdGUoYmFzZSAr IFJFR19EU0lfMjhubV84OTYwX1BIWV9NSVNDX1JFR1VMQVRPUl9DVFJMXzQsIDB4MjApOworfQor CitzdGF0aWMgdm9pZCBkc2lfMjhubV9waHlfY2FsaWJyYXRpb24oc3RydWN0IG1zbV9kc2lfcGh5 ICpwaHkpCit7CisJdm9pZCBfX2lvbWVtICpiYXNlID0gcGh5LT5yZWdfYmFzZTsKKwl1MzIgc3Rh dHVzOworCWludCBpID0gNTAwMDsKKworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhu bV84OTYwX1BIWV9NSVNDX1JFR1VMQVRPUl9DQUxfUFdSX0NGRywKKwkJCTB4Myk7CisKKwlkc2lf cGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfTUlTQ19DQUxfU1dfQ0ZHXzIs IDB4MCk7CisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZX01JU0Nf Q0FMX0hXX0NGR18xLCAweDVhKTsKKwlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1f ODk2MF9QSFlfTUlTQ19DQUxfSFdfQ0ZHXzMsIDB4MTApOworCWRzaV9waHlfd3JpdGUoYmFzZSAr IFJFR19EU0lfMjhubV84OTYwX1BIWV9NSVNDX0NBTF9IV19DRkdfNCwgMHgxKTsKKwlkc2lfcGh5 X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfTUlTQ19DQUxfSFdfQ0ZHXzAsIDB4 MSk7CisKKwlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfTUlTQ19D QUxfSFdfVFJJR0dFUiwgMHgxKTsKKwl1c2xlZXBfcmFuZ2UoNTAwMCwgNjAwMCk7CisJZHNpX3Bo eV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZX01JU0NfQ0FMX0hXX1RSSUdHRVIs IDB4MCk7CisKKwlkbyB7CisJCXN0YXR1cyA9IGRzaV9waHlfcmVhZChiYXNlICsKKwkJCQlSRUdf RFNJXzI4bm1fODk2MF9QSFlfTUlTQ19DQUxfU1RBVFVTKTsKKworCQlpZiAoIShzdGF0dXMgJiBE U0lfMjhubV84OTYwX1BIWV9NSVNDX0NBTF9TVEFUVVNfQ0FMX0JVU1kpKQorCQkJYnJlYWs7CisK KwkJdWRlbGF5KDEpOworCX0gd2hpbGUgKC0taSA+IDApOworfQorCitzdGF0aWMgdm9pZCBkc2lf MjhubV9waHlfbGFuZV9jb25maWcoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHkpCit7CisJdm9pZCBf X2lvbWVtICpiYXNlID0gcGh5LT5iYXNlOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykgeworCQlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfTE5f Q0ZHXzAoaSksIDB4ODApOworCQlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2 MF9QSFlfTE5fQ0ZHXzEoaSksIDB4NDUpOworCQlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJ XzI4bm1fODk2MF9QSFlfTE5fQ0ZHXzIoaSksIDB4MDApOworCQlkc2lfcGh5X3dyaXRlKGJhc2Ug KyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfTE5fVEVTVF9EQVRBUEFUSChpKSwKKwkJCTB4MDApOwor CQlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfTE5fVEVTVF9TVFJf MChpKSwKKwkJCTB4MDEpOworCQlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2 MF9QSFlfTE5fVEVTVF9TVFJfMShpKSwKKwkJCTB4NjYpOworCX0KKworCWRzaV9waHlfd3JpdGUo YmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9MTkNLX0NGR18wLCAweDQwKTsKKwlkc2lfcGh5 X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlfTE5DS19DRkdfMSwgMHg2Nyk7CisJ ZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZX0xOQ0tfQ0ZHXzIsIDB4 MCk7CisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZX0xOQ0tfVEVT VF9EQVRBUEFUSCwgMHgwKTsKKwlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2 MF9QSFlfTE5DS19URVNUX1NUUjAsIDB4MSk7CisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RT SV8yOG5tXzg5NjBfUEhZX0xOQ0tfVEVTVF9TVFIxLCAweDg4KTsKK30KKworc3RhdGljIGludCBk c2lfMjhubV9waHlfZW5hYmxlKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBpbnQgc3JjX3BsbF9p ZCwKKwkJY29uc3QgdW5zaWduZWQgbG9uZyBiaXRfcmF0ZSwgY29uc3QgdW5zaWduZWQgbG9uZyBl c2NfcmF0ZSkKK3sKKwlzdHJ1Y3QgbXNtX2RzaV9kcGh5X3RpbWluZyAqdGltaW5nID0gJnBoeS0+ dGltaW5nOworCXZvaWQgX19pb21lbSAqYmFzZSA9IHBoeS0+YmFzZTsKKworCURCRygiIik7CisK KwlpZiAobXNtX2RzaV9kcGh5X3RpbWluZ19jYWxjKHRpbWluZywgYml0X3JhdGUsIGVzY19yYXRl KSkgeworCQlkZXZfZXJyKCZwaHktPnBkZXYtPmRldiwKKwkJCSIlczogRC1QSFkgdGltaW5nIGNh bGN1bGF0aW9uIGZhaWxlZFxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK Kwlkc2lfMjhubV9waHlfcmVndWxhdG9yX2luaXQocGh5KTsKKworCWRzaV9waHlfd3JpdGUoYmFz ZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9MRE9fQ1RSTCwgMHgwNCk7CisKKwkvKiBzdHJlbmd0 aCBjb250cm9sICovCisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZ X1NUUkVOR1RIXzAsIDB4ZmYpOworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84 OTYwX1BIWV9TVFJFTkdUSF8xLCAweDAwKTsKKwlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJ XzI4bm1fODk2MF9QSFlfU1RSRU5HVEhfMiwgMHgwNik7CisKKwkvKiBwaHkgY3RybCAqLworCWRz aV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9DVFJMXzAsIDB4NWYpOwor CWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9DVFJMXzEsIDB4MDAp OworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9DVFJMXzIsIDB4 MDApOworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9DVFJMXzMs IDB4MTApOworCisJZHNpXzI4bm1fcGh5X3JlZ3VsYXRvcl9jdHJsKHBoeSk7CisKKwlkc2lfMjhu bV9waHlfY2FsaWJyYXRpb24ocGh5KTsKKworCWRzaV8yOG5tX3BoeV9sYW5lX2NvbmZpZyhwaHkp OworCisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RTSV8yOG5tXzg5NjBfUEhZX0JJU1RfQ1RS TF80LCAweDBmKTsKKwlkc2lfcGh5X3dyaXRlKGJhc2UgKyBSRUdfRFNJXzI4bm1fODk2MF9QSFlf QklTVF9DVFJMXzEsIDB4MDMpOworCWRzaV9waHlfd3JpdGUoYmFzZSArIFJFR19EU0lfMjhubV84 OTYwX1BIWV9CSVNUX0NUUkxfMCwgMHgwMyk7CisJZHNpX3BoeV93cml0ZShiYXNlICsgUkVHX0RT SV8yOG5tXzg5NjBfUEhZX0JJU1RfQ1RSTF80LCAweDApOworCisJZHNpXzI4bm1fZHBoeV9zZXRf dGltaW5nKHBoeSwgdGltaW5nKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkc2lf MjhubV9waHlfZGlzYWJsZShzdHJ1Y3QgbXNtX2RzaV9waHkgKnBoeSkKK3sKKwlkc2lfcGh5X3dy aXRlKHBoeS0+YmFzZSArIFJFR19EU0lfMjhubV84OTYwX1BIWV9DVFJMXzAsIDB4MCk7CisKKwkv KgorCSAqIFdhaXQgZm9yIHRoZSByZWdpc3RlcnMgd3JpdGVzIHRvIGNvbXBsZXRlIGluIG9yZGVy IHRvCisJICogZW5zdXJlIHRoYXQgdGhlIHBoeSBpcyBjb21wbGV0ZWx5IGRpc2FibGVkCisJICov CisJd21iKCk7Cit9CisKK2NvbnN0IHN0cnVjdCBtc21fZHNpX3BoeV9jZmcgZHNpX3BoeV8yOG5t Xzg5NjBfY2ZncyA9IHsKKwkudHlwZSA9IE1TTV9EU0lfUEhZXzI4Tk1fODk2MCwKKwkuc3JjX3Bs bF90cnV0aHRhYmxlID0geyB7dHJ1ZSwgdHJ1ZX0sIHtmYWxzZSwgdHJ1ZX0gfSwKKwkucmVnX2Nm ZyA9IHsKKwkJLm51bSA9IDEsCisJCS5yZWdzID0geworCQkJeyJ2ZGRpbyIsIDE4MDAwMDAsIDE4 MDAwMDAsIDEwMDAwMCwgMTAwfSwKKwkJfSwKKwl9LAorCS5vcHMgPSB7CisJCS5lbmFibGUgPSBk c2lfMjhubV9waHlfZW5hYmxlLAorCQkuZGlzYWJsZSA9IGRzaV8yOG5tX3BoeV9kaXNhYmxlLAor CX0sCit9OwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVt YmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKaG9zdGVkIGJ5IFRoZSBMaW51eCBGb3VuZGF0 aW9uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=