From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH 2/4] drm/msm/dsi: Add skeleton 10nm PHY/PLL code Date: Wed, 17 Jan 2018 11:35:25 +0530 Message-ID: <20180117060527.7935-3-architt@codeaurora.org> References: <20180117060527.7935-1-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180117060527.7935-1-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, latkinso@codeaurora.org, sibis@codeaurora.org, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org QWRkIG5ldyAxMG5tIERTSSBQTEwvUEhZIGZpbGVzIHRoYXQgd2lsbCBiZSB1c2VkIG9uIFNETTg0 NS4KCkp1c3QgcG9wdWxhdGUgZW1wdHkgcGxsL3BoeSBmdW5jcyBmb3Igbm93LiBUaGVzZSB3aWxs IGJlIGZpbGxlZCB1cApsYXRlci4KClNpZ25lZC1vZmYtYnk6IEFyY2hpdCBUYW5lamEgPGFyY2hp dHRAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnICAgICAg ICAgICAgICAgIHwgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlICAgICAgICAg ICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmggICAgICAgICAgICAg IHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmMgICAgICB8ICAg NCArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5oICAgICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHlfMTBubS5jIHwgIDUyICsrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGxsL2RzaV9wbGwuYyAgICAgIHwgICAzICsKIGRy aXZlcnMvZ3B1L2RybS9tc20vZHNpL3BsbC9kc2lfcGxsLmggICAgICB8ICAgOSArKwogZHJpdmVy cy9ncHUvZHJtL21zbS9kc2kvcGxsL2RzaV9wbGxfMTBubS5jIHwgMTc2ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDI1NSBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHlfMTBubS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGxsL2RzaV9wbGxf MTBubS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9LY29uZmlnCmluZGV4IDk5ZDM5YjJhZWZhNi4uOWViYWE3MzkxMTEzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9LY29uZmlnCkBAIC04MSwzICs4MSwxMCBAQCBjb25maWcgRFJNX01TTV9EU0lfMTRO TV9QSFkKIAlkZWZhdWx0IHkKIAloZWxwCiAJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgRFNJIFBI WSBvbiA4OTk2IGlzIHVzZWQgb24gdGhlIHBsYXRmb3JtLgorCitjb25maWcgRFJNX01TTV9EU0lf MTBOTV9QSFkKKwlib29sICJFbmFibGUgRFNJIDEwbm0gUEhZIGRyaXZlciBpbiBNU00gRFJNICh1 c2VkIGJ5IFNETTg0NSkiCisJZGVwZW5kcyBvbiBEUk1fTVNNX0RTSQorCWRlZmF1bHQgeQorCWhl bHAKKwkgIENob29zZSB0aGlzIG9wdGlvbiBpZiBEU0kgUEhZIG9uIFNETTg0NSBpcyB1c2VkIG9u IHRoZSBwbGF0Zm9ybS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCmluZGV4IDkyYjM4NDQyMDJkMi4uMTRlZGQy NDRkZjg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKQEAgLTgxLDEyICs4MSwxNCBAQCBtc20tJChDT05G SUdfRFJNX01TTV9EU0lfMjhOTV9QSFkpICs9IGRzaS9waHkvZHNpX3BoeV8yOG5tLm8KIG1zbS0k KENPTkZJR19EUk1fTVNNX0RTSV8yME5NX1BIWSkgKz0gZHNpL3BoeS9kc2lfcGh5XzIwbm0ubwog bXNtLSQoQ09ORklHX0RSTV9NU01fRFNJXzI4Tk1fODk2MF9QSFkpICs9IGRzaS9waHkvZHNpX3Bo eV8yOG5tXzg5NjAubwogbXNtLSQoQ09ORklHX0RSTV9NU01fRFNJXzE0Tk1fUEhZKSArPSBkc2kv cGh5L2RzaV9waHlfMTRubS5vCittc20tJChDT05GSUdfRFJNX01TTV9EU0lfMTBOTV9QSFkpICs9 IGRzaS9waHkvZHNpX3BoeV8xMG5tLm8KIAogaWZlcSAoJChDT05GSUdfRFJNX01TTV9EU0lfUExM KSx5KQogbXNtLXkgKz0gZHNpL3BsbC9kc2lfcGxsLm8KIG1zbS0kKENPTkZJR19EUk1fTVNNX0RT SV8yOE5NX1BIWSkgKz0gZHNpL3BsbC9kc2lfcGxsXzI4bm0ubwogbXNtLSQoQ09ORklHX0RSTV9N U01fRFNJXzI4Tk1fODk2MF9QSFkpICs9IGRzaS9wbGwvZHNpX3BsbF8yOG5tXzg5NjAubwogbXNt LSQoQ09ORklHX0RSTV9NU01fRFNJXzE0Tk1fUEhZKSArPSBkc2kvcGxsL2RzaV9wbGxfMTRubS5v Cittc20tJChDT05GSUdfRFJNX01TTV9EU0lfMTBOTV9QSFkpICs9IGRzaS9wbGwvZHNpX3BsbF8x MG5tLm8KIGVuZGlmCiAKIG9iai0kKENPTkZJR19EUk1fTVNNKQkrPSBtc20ubwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rz aS9kc2kuaAppbmRleCBlYWZkNzE0YTViODQuLjAyNGU3YTNhZjlmMSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kv ZHNpLmgKQEAgLTM2LDYgKzM2LDcgQEAgZW51bSBtc21fZHNpX3BoeV90eXBlIHsKIAlNU01fRFNJ X1BIWV8yME5NLAogCU1TTV9EU0lfUEhZXzI4Tk1fODk2MCwKIAlNU01fRFNJX1BIWV8xNE5NLAor CU1TTV9EU0lfUEhZXzEwTk0sCiAJTVNNX0RTSV9QSFlfTUFYCiB9OwogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kc2kvcGh5L2RzaV9waHkuYwppbmRleCA3OTBjYTI4MGNiZmQuLmY4MDU2ZDFkZjlhMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHkuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5jCkBAIC0zOTQsNiArMzk0LDEwIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRzaV9waHlfZHRfbWF0Y2hbXSA9IHsKICNp ZmRlZiBDT05GSUdfRFJNX01TTV9EU0lfMTROTV9QSFkKIAl7IC5jb21wYXRpYmxlID0gInFjb20s ZHNpLXBoeS0xNG5tIiwKIAkgIC5kYXRhID0gJmRzaV9waHlfMTRubV9jZmdzIH0sCisjZW5kaWYK KyNpZmRlZiBDT05GSUdfRFJNX01TTV9EU0lfMTBOTV9QSFkKKwl7IC5jb21wYXRpYmxlID0gInFj b20sZHNpLXBoeS0xMG5tIiwKKwkgIC5kYXRhID0gJmRzaV9waHlfMTBubV9jZmdzIH0sCiAjZW5k aWYKIAl7fQogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lf cGh5LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5oCmluZGV4IDE3MzNm NjYwOGEwOS4uYzU2MjY4Y2JkYjNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rz aS9waHkvZHNpX3BoeS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5 LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBtc21fZHNpX3BoeV9jZmcg ZHNpX3BoeV8yOG5tX2xwX2NmZ3M7CiBleHRlcm4gY29uc3Qgc3RydWN0IG1zbV9kc2lfcGh5X2Nm ZyBkc2lfcGh5XzIwbm1fY2ZnczsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgbXNtX2RzaV9waHlfY2Zn IGRzaV9waHlfMjhubV84OTYwX2NmZ3M7CiBleHRlcm4gY29uc3Qgc3RydWN0IG1zbV9kc2lfcGh5 X2NmZyBkc2lfcGh5XzE0bm1fY2ZnczsKK2V4dGVybiBjb25zdCBzdHJ1Y3QgbXNtX2RzaV9waHlf Y2ZnIGRzaV9waHlfMTBubV9jZmdzOwogCiBzdHJ1Y3QgbXNtX2RzaV9kcGh5X3RpbWluZyB7CiAJ dTMyIGNsa19wcmU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNp X3BoeV8xMG5tLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8xMG5tLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNzU0NWZiNjNiZjUKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeV8xMG5t LmMKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uCisgKi8KKwor I2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgorCisjaW5jbHVkZSAiZHNpX3BoeS5oIgorI2luY2x1 ZGUgImRzaS54bWwuaCIKKworc3RhdGljIGludCBkc2lfMTBubV9waHlfZW5hYmxlKHN0cnVjdCBt c21fZHNpX3BoeSAqcGh5LCBpbnQgc3JjX3BsbF9pZCwKKwkJCSAgICAgICBzdHJ1Y3QgbXNtX2Rz aV9waHlfY2xrX3JlcXVlc3QgKmNsa19yZXEpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIGRzaV8xMG5tX3BoeV9kaXNhYmxlKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5KQoreworfQor CitzdGF0aWMgaW50IGRzaV8xMG5tX3BoeV9pbml0KHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5KQor eworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBwaHktPnBkZXY7CisKKwlwaHktPmxh bmVfYmFzZSA9IG1zbV9pb3JlbWFwKHBkZXYsICJkc2lfcGh5X2xhbmUiLAorCQkJCSAgICAgIkRT SV9QSFlfTEFORSIpOworCWlmIChJU19FUlIocGh5LT5sYW5lX2Jhc2UpKSB7CisJCWRldl9lcnIo JnBkZXYtPmRldiwgIiVzOiBmYWlsZWQgdG8gbWFwIHBoeSBsYW5lIGJhc2VcbiIsCisJCQlfX2Z1 bmNfXyk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCXJldHVybiAwOworfQorCitjb25zdCBz dHJ1Y3QgbXNtX2RzaV9waHlfY2ZnIGRzaV9waHlfMTBubV9jZmdzID0geworCS50eXBlID0gTVNN X0RTSV9QSFlfMTBOTSwKKwkuc3JjX3BsbF90cnV0aHRhYmxlID0geyB7ZmFsc2UsIGZhbHNlfSwg e3RydWUsIGZhbHNlfSB9LAorCS5yZWdfY2ZnID0geworCQkubnVtID0gMSwKKwkJLnJlZ3MgPSB7 CisJCQl7InZkZHMiLCAzNjAwMCwgMzJ9LAorCQl9LAorCX0sCisJLm9wcyA9IHsKKwkJLmVuYWJs ZSA9IGRzaV8xMG5tX3BoeV9lbmFibGUsCisJCS5kaXNhYmxlID0gZHNpXzEwbm1fcGh5X2Rpc2Fi bGUsCisJCS5pbml0ID0gZHNpXzEwbm1fcGh5X2luaXQsCisJfSwKKwkuaW9fc3RhcnQgPSB7IDB4 YWU5NDQwMCwgMHhhZTk2NDAwIH0sCisJLm51bV9kc2lfcGh5ID0gMiwKK307CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9wbGwvZHNpX3BsbC5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kc2kvcGxsL2RzaV9wbGwuYwppbmRleCBiYzI4OWY1YzkwNzguLjFhYjVhNDkzODVkNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGxsL2RzaV9wbGwuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9wbGwvZHNpX3BsbC5jCkBAIC0xNjYsNiArMTY2LDkgQEAg c3RydWN0IG1zbV9kc2lfcGxsICptc21fZHNpX3BsbF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsCiAJY2FzZSBNU01fRFNJX1BIWV8xNE5NOgogCQlwbGwgPSBtc21fZHNpX3BsbF8x NG5tX2luaXQocGRldiwgaWQpOwogCQlicmVhazsKKwljYXNlIE1TTV9EU0lfUEhZXzEwTk06CisJ CXBsbCA9IG1zbV9kc2lfcGxsXzEwbm1faW5pdChwZGV2LCBpZCk7CisJCWJyZWFrOwogCWRlZmF1 bHQ6CiAJCXBsbCA9IEVSUl9QVFIoLUVOWElPKTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2RzaS9wbGwvZHNpX3BsbC5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k c2kvcGxsL2RzaV9wbGwuaAppbmRleCBmNjNlN2FkYTc0YTguLjhiMzIyNzFjYmMyNCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGxsL2RzaV9wbGwuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2RzaS9wbGwvZHNpX3BsbC5oCkBAIC0xMTUsNSArMTE1LDE0IEBAIG1zbV9k c2lfcGxsXzE0bm1faW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBpbnQgaWQpCiAJ cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CiB9CiAjZW5kaWYKKyNpZmRlZiBDT05GSUdfRFJNX01T TV9EU0lfMTBOTV9QSFkKK3N0cnVjdCBtc21fZHNpX3BsbCAqbXNtX2RzaV9wbGxfMTBubV9pbml0 KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpZCk7CisjZWxzZQorc3RhdGljIGlu bGluZSBzdHJ1Y3QgbXNtX2RzaV9wbGwgKgorbXNtX2RzaV9wbGxfMTBubV9pbml0KHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpZCkKK3sKKwlyZXR1cm4gRVJSX1BUUigtRU5PREVW KTsKK30KKyNlbmRpZgogI2VuZGlmIC8qIF9fRFNJX1BMTF9IX18gKi8KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGxsL2RzaV9wbGxfMTBubS5jIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kc2kvcGxsL2RzaV9wbGxfMTBubS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uMzRjMjQ0NDJkMzRiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kc2kvcGxsL2RzaV9wbGxfMTBubS5jCkBAIC0wLDAgKzEsMTc2IEBACisvKgor ICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKyAqIENvcHlyaWdodCAoYykgMjAx OCwgVGhlIExpbnV4IEZvdW5kYXRpb24KKyAqLworCisjaW5jbHVkZSA8bGludXgvY2xrLmg+Cisj aW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+ CisKKyNpbmNsdWRlICJkc2lfcGxsLmgiCisjaW5jbHVkZSAiZHNpLnhtbC5oIgorCitzdHJ1Y3Qg ZHNpX3BsbF8xMG5tIHsKKwlzdHJ1Y3QgbXNtX2RzaV9wbGwgYmFzZTsKKworCWludCBpZDsKKwlz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2OworCisJdm9pZCBfX2lvbWVtICpwaHlfY21uX21t aW87CisJdm9pZCBfX2lvbWVtICptbWlvOworCisJaW50IHZjb19kZWxheTsKKworCWVudW0gbXNt X2RzaV9waHlfdXNlY2FzZSB1YzsKKwlzdHJ1Y3QgZHNpX3BsbF8xMG5tICpzbGF2ZTsKK307CisK KyNkZWZpbmUgdG9fcGxsXzEwbm0oeCkJY29udGFpbmVyX29mKHgsIHN0cnVjdCBkc2lfcGxsXzEw bm0sIGJhc2UpCisKKy8qCisgKiBHbG9iYWwgbGlzdCBvZiBwcml2YXRlIERTSSBQTEwgc3RydWN0 IHBvaW50ZXJzLiBXZSBuZWVkIHRoaXMgZm9yIER1YWwgRFNJCisgKiBtb2RlLCB3aGVyZSB0aGUg bWFzdGVyIFBMTCdzIGNsa19vcHMgbmVlZHMgYWNjZXNzIHRoZSBzbGF2ZSdzIHByaXZhdGUgZGF0 YQorICovCitzdGF0aWMgc3RydWN0IGRzaV9wbGxfMTBubSAqcGxsXzEwbm1fbGlzdFtEU0lfTUFY XTsKKworc3RhdGljIGludCBkc2lfcGxsXzEwbm1fdmNvX3NldF9yYXRlKHN0cnVjdCBjbGtfaHcg Kmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCisJCQkJICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9y YXRlKQoreworCXN0cnVjdCBtc21fZHNpX3BsbCAqcGxsID0gaHdfY2xrX3RvX3BsbChodyk7CisJ c3RydWN0IGRzaV9wbGxfMTBubSAqcGxsXzEwbm0gPSB0b19wbGxfMTBubShwbGwpOworCisJREJH KCJEU0kgUExMJWQgcmF0ZT0lbHUsIHBhcmVudCdzPSVsdSIsIHBsbF8xMG5tLT5pZCwgcmF0ZSwK KwkgICAgcGFyZW50X3JhdGUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBs b25nIGRzaV9wbGxfMTBubV92Y29fcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsCisJCQkJ CQkgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpCit7CisJc3RydWN0IG1zbV9kc2lfcGxsICpw bGwgPSBod19jbGtfdG9fcGxsKGh3KTsKKwlzdHJ1Y3QgZHNpX3BsbF8xMG5tICpwbGxfMTBubSA9 IHRvX3BsbF8xMG5tKHBsbCk7CisJdTY0IHZjb19yYXRlID0gMHgwOworCisJREJHKCJEU0kgUExM JWQgcmV0dXJuaW5nIHZjbyByYXRlID0gJWx1IiwgcGxsXzEwbm0tPmlkLAorCSAgICAodW5zaWdu ZWQgbG9uZyl2Y29fcmF0ZSk7CisKKwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpdmNvX3JhdGU7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBjbGtfb3BzX2RzaV9wbGxfMTBubV92Y28g PSB7CisJLnJvdW5kX3JhdGUgPSBtc21fZHNpX3BsbF9oZWxwZXJfY2xrX3JvdW5kX3JhdGUsCisJ LnNldF9yYXRlID0gZHNpX3BsbF8xMG5tX3Zjb19zZXRfcmF0ZSwKKwkucmVjYWxjX3JhdGUgPSBk c2lfcGxsXzEwbm1fdmNvX3JlY2FsY19yYXRlLAorCS5wcmVwYXJlID0gbXNtX2RzaV9wbGxfaGVs cGVyX2Nsa19wcmVwYXJlLAorCS51bnByZXBhcmUgPSBtc21fZHNpX3BsbF9oZWxwZXJfY2xrX3Vu cHJlcGFyZSwKK307CisKKy8qCisgKiBQTEwgQ2FsbGJhY2tzCisgKi8KKworc3RhdGljIHZvaWQg ZHNpX3BsbF8xMG5tX3NhdmVfc3RhdGUoc3RydWN0IG1zbV9kc2lfcGxsICpwbGwpCit7CisJc3Ry dWN0IGRzaV9wbGxfMTBubSAqcGxsXzEwbm0gPSB0b19wbGxfMTBubShwbGwpOworCisJREJHKCJE U0kgUExMJWQiLCBwbGxfMTBubS0+aWQpOworfQorCitzdGF0aWMgaW50IGRzaV9wbGxfMTBubV9y ZXN0b3JlX3N0YXRlKHN0cnVjdCBtc21fZHNpX3BsbCAqcGxsKQoreworCXN0cnVjdCBkc2lfcGxs XzEwbm0gKnBsbF8xMG5tID0gdG9fcGxsXzEwbm0ocGxsKTsKKworCURCRygiRFNJIFBMTCVkIiwg cGxsXzEwbm0tPmlkKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRzaV9wbGxfMTBu bV9zZXRfdXNlY2FzZShzdHJ1Y3QgbXNtX2RzaV9wbGwgKnBsbCwKKwkJCQkgICAgZW51bSBtc21f ZHNpX3BoeV91c2VjYXNlIHVjKQoreworCXN0cnVjdCBkc2lfcGxsXzEwbm0gKnBsbF8xMG5tID0g dG9fcGxsXzEwbm0ocGxsKTsKKworCURCRygiRFNJIFBMTCVkIiwgcGxsXzEwbm0tPmlkKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRzaV9wbGxfMTBubV9nZXRfcHJvdmlkZXIoc3Ry dWN0IG1zbV9kc2lfcGxsICpwbGwsCisJCQkJICAgICBzdHJ1Y3QgY2xrICoqYnl0ZV9jbGtfcHJv dmlkZXIsCisJCQkJICAgICBzdHJ1Y3QgY2xrICoqcGl4ZWxfY2xrX3Byb3ZpZGVyKQoreworCXN0 cnVjdCBkc2lfcGxsXzEwbm0gKnBsbF8xMG5tID0gdG9fcGxsXzEwbm0ocGxsKTsKKworCURCRygi RFNJIFBMTCVkIiwgcGxsXzEwbm0tPmlkKTsKKworCWlmIChieXRlX2Nsa19wcm92aWRlcikKKwkJ KmJ5dGVfY2xrX3Byb3ZpZGVyID0gTlVMTDsKKwlpZiAocGl4ZWxfY2xrX3Byb3ZpZGVyKQorCQkq cGl4ZWxfY2xrX3Byb3ZpZGVyID0gTlVMTDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBkc2lfcGxsXzEwbm1fZGVzdHJveShzdHJ1Y3QgbXNtX2RzaV9wbGwgKnBsbCkKK3sKKwlzdHJ1 Y3QgZHNpX3BsbF8xMG5tICpwbGxfMTBubSA9IHRvX3BsbF8xMG5tKHBsbCk7CisKKwlEQkcoIkRT SSBQTEwlZCIsIHBsbF8xMG5tLT5pZCk7Cit9CisKK3N0YXRpYyBpbnQgcGxsXzEwbm1fcmVnaXN0 ZXIoc3RydWN0IGRzaV9wbGxfMTBubSAqcGxsXzEwbm0pCit7CisJcmV0dXJuIDA7Cit9CisKK3N0 cnVjdCBtc21fZHNpX3BsbCAqbXNtX2RzaV9wbGxfMTBubV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYsIGludCBpZCkKK3sKKwlzdHJ1Y3QgZHNpX3BsbF8xMG5tICpwbGxfMTBubTsK KwlzdHJ1Y3QgbXNtX2RzaV9wbGwgKnBsbDsKKwlpbnQgcmV0OworCisJaWYgKCFwZGV2KQorCQly ZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKKworCXBsbF8xMG5tID0gZGV2bV9remFsbG9jKCZwZGV2 LT5kZXYsIHNpemVvZigqcGxsXzEwbm0pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBsbF8xMG5tKQor CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCURCRygiRFNJIFBMTCVkIiwgaWQpOworCisJ cGxsXzEwbm0tPnBkZXYgPSBwZGV2OworCXBsbF8xMG5tLT5pZCA9IGlkOworCXBsbF8xMG5tX2xp c3RbaWRdID0gcGxsXzEwbm07CisKKwlwbGxfMTBubS0+cGh5X2Ntbl9tbWlvID0gbXNtX2lvcmVt YXAocGRldiwgImRzaV9waHkiLCAiRFNJX1BIWSIpOworCWlmIChJU19FUlJfT1JfTlVMTChwbGxf MTBubS0+cGh5X2Ntbl9tbWlvKSkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8g bWFwIENNTiBQSFkgYmFzZVxuIik7CisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCX0KKwor CXBsbF8xMG5tLT5tbWlvID0gbXNtX2lvcmVtYXAocGRldiwgImRzaV9wbGwiLCAiRFNJX1BMTCIp OworCWlmIChJU19FUlJfT1JfTlVMTChwbGxfMTBubS0+bW1pbykpIHsKKwkJZGV2X2VycigmcGRl di0+ZGV2LCAiZmFpbGVkIHRvIG1hcCBQTEwgYmFzZVxuIik7CisJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOworCX0KKworCXBsbCA9ICZwbGxfMTBubS0+YmFzZTsKKwlwbGwtPm1pbl9yYXRlID0g MTAwMDAwMDAwMFVMOworCXBsbC0+bWF4X3JhdGUgPSAzNTAwMDAwMDAwVUw7CisJcGxsLT5nZXRf cHJvdmlkZXIgPSBkc2lfcGxsXzEwbm1fZ2V0X3Byb3ZpZGVyOworCXBsbC0+ZGVzdHJveSA9IGRz aV9wbGxfMTBubV9kZXN0cm95OworCXBsbC0+c2F2ZV9zdGF0ZSA9IGRzaV9wbGxfMTBubV9zYXZl X3N0YXRlOworCXBsbC0+cmVzdG9yZV9zdGF0ZSA9IGRzaV9wbGxfMTBubV9yZXN0b3JlX3N0YXRl OworCXBsbC0+c2V0X3VzZWNhc2UgPSBkc2lfcGxsXzEwbm1fc2V0X3VzZWNhc2U7CisKKwlwbGxf MTBubS0+dmNvX2RlbGF5ID0gMTsKKworCXJldCA9IHBsbF8xMG5tX3JlZ2lzdGVyKHBsbF8xMG5t KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byByZWdpc3Rl ciBQTEw6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCX0KKworCXJldHVy biBwbGw7Cit9Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBt ZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLApob3N0ZWQgYnkgVGhlIExpbnV4IEZvdW5k YXRpb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=