From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyungwon Hwang Subject: [PATCH v2 2/3] drm/panel: add s6e63j0x03 LCD panel driver Date: Tue, 09 Dec 2014 18:29:05 +0900 Message-ID: <1418117346-9078-3-git-send-email-human.hwang@samsung.com> References: <1418117346-9078-1-git-send-email-human.hwang@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1418117346-9078-1-git-send-email-human.hwang@samsung.com> 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 Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, pawel.moll@arm.com, ijc+devicetree@hellion.org.uk, a.hajda@samsung.com, kyungmin.park@samsung.com, robh+dt@kernel.org, Hyungwon Hwang , galak@codeaurora.org, kgene.kim@samsung.com List-Id: devicetree@vger.kernel.org RnJvbTogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgoKVGhpcyBwYXRjaCBhZGRzIE1J UEktRFNJIGJhc2VkIFM2RTYzSjBYMDMgQU1PTEVEIExDRCBwYW5lbCBkcml2ZXIKd2hpY2ggdXNl cyBtaXBpX2RzaSBidXMgdG8gY29tbXVuaWNhdGUgd2l0aCBwYW5lbC4gVGhlIHBhbmVsIGhhcwoz MjDDlzMyMCByZXNvbHV0aW9uIGluIDEuNjMtaW5jaCBwaHlzaWNhbCBwYW5lbC4gVGhpcyBwYW5l bCBpcyB1c2VkIGluClNhbXN1bmcgR2FsYXh5IEdlYXIgMi4KClNpZ25lZC1vZmYtYnk6IElua2kg RGFlIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT4KU2lnbmVkLW9mZi1ieTogSHl1bmd3b24gSHdhbmcg PGh1bWFuLmh3YW5nQHNhbXN1bmcuY29tPgpBY2tlZC1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdt aW4ucGFya0BzYW1zdW5nLmNvbT4KLS0tCkNoYW5nZXMgZm9yIHYyOgotIENoYW5nZSB0aGUgZ2Ft bWEgdGFibGUgdG8gMi1kaW1lbnNpb25hbCBhcnJheQotIENoYW5nZSB0aGUgd2F5IHRvIG1ha2Ug aW5kZXggZm9yIGJyaWdodG5lc3MKLSBNYWtlIGNvbW1hbmQgZnVuY3Rpb25zIHRvIGFuIGFycmF5 IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBzaW1wbHkKLSBDaGFuZ2UgY29tbWFuZCBpZCBmb3Ig cmVhZGluZyBkZXZpY2UgSUQKLSBDaGFuZ2UgdGhlIHdheSB0byBoYW5kbGUgdGhlIGVycm9yIGNv bmRpdGlvbgotIFJlbW92ZSBwb3dlciB2YXJpYWJsZSwgYW5kIHVzZSB0aGUgc2FtZSBuYW1lIHZh cmlhYmxlIGluIGJsX2RldgotIEFkZCB0aGUgc3RhdGUgRkJfQkxBTktfTk9STUFMIHRvIHJlcHJl c2VudCB0aGUgc3RhdGUgd2hpY2ggdGhlIHBhbmVsCmlzIHdvcmtpbmcgYnV0IGJsYW5rZWQKLSBN aXNjZWxsYW5lb3VzIGNoYW5nZXMgdG8gaW5jcmVhc2UgdGhlIHJlYWRhYmlsaXR5IGFuZCBmb2xs b3cgdGhlCiAgY29kaW5nLXN0eWxlIHN0YW5kYXJkCgogZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tj b25maWcgICAgICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUg ICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zNmU2M2oweDAz LmMgfCA1NDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2Vk LCA1NTYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9w YW5lbC9wYW5lbC1zNmU2M2oweDAzLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCmluZGV4IGJlZTlmNzIu LmJjMTMzZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCkBAIC0yNyw0ICsyNywxMCBAQCBjb25maWcg RFJNX1BBTkVMX1M2RThBQTAKIAlzZWxlY3QgRFJNX01JUElfRFNJCiAJc2VsZWN0IFZJREVPTU9E RV9IRUxQRVJTCiAKK2NvbmZpZyBEUk1fUEFORUxfUzZFNjNKMFgwMworCXRyaXN0YXRlICJTNkU2 M0owWDAzIERTSSB2aWRlbyBtb2RlIHBhbmVsIgorCWRlcGVuZHMgb24gT0YKKwlzZWxlY3QgRFJN X01JUElfRFNJCisJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTCisKIGVuZG1lbnUKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9wYW5l bC9NYWtlZmlsZQppbmRleCA4YjkyOTIxLi43ZjM2ZGMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxl CkBAIC0xLDMgKzEsNCBAQAogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSU1QTEUpICs9IHBhbmVs LXNpbXBsZS5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0xEOTA0MCkgKz0gcGFuZWwtbGQ5MDQw Lm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfUzZFOEFBMCkgKz0gcGFuZWwtczZlOGFhMC5vCitv YmotJChDT05GSUdfRFJNX1BBTkVMX1M2RTYzSjBYMDMpICs9IHBhbmVsLXM2ZTYzajB4MDMubwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXM2ZTYzajB4MDMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zNmU2M2oweDAzLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMjhlNGE1MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9wYW5lbC9wYW5lbC1zNmU2M2oweDAzLmMKQEAgLTAsMCArMSw1NDkgQEAKKy8qCisgKiBN SVBJLURTSSBiYXNlZCBTNkU2M0owWDAzIEFNT0xFRCBsY2QgMS42MyBpbmNoIHBhbmVsIGRyaXZl ci4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0 ZAorICoKKyAqIElua2kgRGFlLCA8aW5raS5kYWVAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4KKyovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1f bWlwaV9kc2kuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKyNpbmNsdWRlIDxsaW51 eC9vZl9ncGlvLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgorI2luY2x1ZGUgPGxpbnV4L3Jl Z3VsYXRvci9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgorCisjaW5j bHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+CisjaW5jbHVkZSA8dmlkZW8vb2ZfdmlkZW9tb2Rl Lmg+CisjaW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+CisKKyNkZWZpbmUgUkVBRF9JRDEJCTB4 REEKKyNkZWZpbmUgUkVBRF9JRDIJCTB4REIKKyNkZWZpbmUgUkVBRF9JRDMJCTB4REMKKworI2Rl ZmluZSBNQ1NfTEVWRUwyX0tFWQkJMHhmMAorI2RlZmluZSBNQ1NfTVRQX0tFWQkJMHhmMQorI2Rl ZmluZSBNQ1NfTVRQX1NFVDMJCTB4ZDQKKworI2RlZmluZSBNSU5fQlJJR0hUTkVTUwkJMAorI2Rl ZmluZSBNQVhfQlJJR0hUTkVTUwkJMTAwCisjZGVmaW5lIERFRkFVTFRfQlJJR0hUTkVTUwk4MAor CisjZGVmaW5lIEdBTU1BX0xFVkVMX05VTQkJMzAKKyNkZWZpbmUgTlVNX0dBTU1BX1NURVBTCQk5 CisjZGVmaW5lIEdBTU1BX0NNRF9DTlQJCTI4CisKK3N0cnVjdCBzNmU2M2oweDAzIHsKKwlzdHJ1 Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRybV9wYW5lbCBwYW5lbDsKKwlzdHJ1Y3QgYmFja2xp Z2h0X2RldmljZSAqYmxfZGV2OworCisJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxp ZXNbMl07CisJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKKwl1MzIgcG93ZXJfb25fZGVs YXk7CisJdTMyIHBvd2VyX29mZl9kZWxheTsKKwl1MzIgcmVzZXRfZGVsYXk7CisJdTMyIGluaXRf ZGVsYXk7CisJYm9vbCBmbGlwX2hvcml6b250YWw7CisJYm9vbCBmbGlwX3ZlcnRpY2FsOworCXN0 cnVjdCB2aWRlb21vZGUgdm07CisJdW5zaWduZWQgaW50IHdpZHRoX21tOworCXVuc2lnbmVkIGlu dCBoZWlnaHRfbW07Cit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnYW1tYV90Ymxb TlVNX0dBTU1BX1NURVBTXVtHQU1NQV9DTURfQ05UXSA9IHsKKwl7CS8qIEdhbW1hIDEwICovCisJ CU1DU19NVFBfU0VUMywKKwkJMHgwMCwgMHgwMCwgMHgwMCwgMHg3ZiwgMHg3ZiwgMHg3ZiwgMHg1 MiwgMHg2YiwgMHg2ZiwgMHgyNiwKKwkJMHgyOCwgMHgyZCwgMHgyOCwgMHgyNiwgMHgyNywgMHgz MywgMHgzNCwgMHgzMiwgMHgzNiwgMHgzNiwKKwkJMHgzNSwgMHgwMCwgMHhhYiwgMHgwMCwgMHhh ZSwgMHgwMCwgMHhiZgorCX0sCisJewkvKiBnYW1tYSAzMCAqLworCQlNQ1NfTVRQX1NFVDMsCisJ CTB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4N2YsIDB4N2YsIDB4NGUsIDB4NjQsIDB4NjksIDB4 MjYsCisJCTB4MjcsIDB4MmEsIDB4MjgsIDB4MjksIDB4MjcsIDB4MzEsIDB4MzIsIDB4MzEsIDB4 MzUsIDB4MzQsCisJCTB4MzUsIDB4MDAsIDB4YzQsIDB4MDAsIDB4Y2EsIDB4MDAsIDB4ZGMKKwl9 LAorCXsJLyogZ2FtbWEgNjAgKi8KKwkJTUNTX01UUF9TRVQzLAorCQkweDAwLCAweDAwLCAweDAw LCAweDY1LCAweDdiLCAweDdkLCAweDVmLCAweDY3LCAweDY4LCAweDJhLAorCQkweDI4LCAweDI5 LCAweDI4LCAweDJhLCAweDI3LCAweDMxLCAweDJmLCAweDMwLCAweDM0LCAweDMzLAorCQkweDM0 LCAweDAwLCAweGQ5LCAweDAwLCAweGU0LCAweDAwLCAweGY1CisJfSwKKwl7CS8qIGdhbW1hIDkw ICovCisJCU1DU19NVFBfU0VUMywKKwkJMHgwMCwgMHgwMCwgMHgwMCwgMHg0ZCwgMHg2ZiwgMHg3 MSwgMHg2NywgMHg2YSwgMHg2YywgMHgyOSwKKwkJMHgyOCwgMHgyOCwgMHgyOCwgMHgyOSwgMHgy NywgMHgzMCwgMHgyZSwgMHgzMCwgMHgzMiwgMHgzMSwKKwkJMHgzMSwgMHgwMCwgMHhlYSwgMHgw MCwgMHhmNiwgMHgwMSwgMHgwOQorCX0sCisJewkvKiBnYW1tYSAxMjAgKi8KKwkJTUNTX01UUF9T RVQzLAorCQkweDAwLCAweDAwLCAweDAwLCAweDNkLCAweDY2LCAweDY4LCAweDY5LCAweDY5LCAw eDY5LCAweDI4LAorCQkweDI4LCAweDI3LCAweDI4LCAweDI4LCAweDI3LCAweDMwLCAweDJlLCAw eDJmLCAweDMxLCAweDMxLAorCQkweDMwLCAweDAwLCAweGY5LCAweDAxLCAweDA1LCAweDAxLCAw eDFiCisJfSwKKwl7CS8qIGdhbW1hIDE1MCAqLworCQlNQ1NfTVRQX1NFVDMsCisJCTB4MDAsIDB4 MDAsIDB4MDAsIDB4MzEsIDB4NTEsIDB4NTMsIDB4NjYsIDB4NjYsIDB4NjcsIDB4MjgsCisJCTB4 MjksIDB4MjcsIDB4MjgsIDB4MjcsIDB4MjcsIDB4MmUsIDB4MmQsIDB4MmUsIDB4MzEsIDB4MzEs CisJCTB4MzAsIDB4MDEsIDB4MDQsIDB4MDEsIDB4MTEsIDB4MDEsIDB4MjkKKwl9LAorCXsJLyog Z2FtbWEgMjAwICovCisJCU1DU19NVFBfU0VUMywKKwkJMHgwMCwgMHgwMCwgMHgwMCwgMHgyZiwg MHg0ZiwgMHg1MSwgMHg2NywgMHg2NSwgMHg2NSwgMHgyOSwKKwkJMHgyYSwgMHgyOCwgMHgyNywg MHgyNSwgMHgyNiwgMHgyZCwgMHgyYywgMHgyYywgMHgzMCwgMHgzMCwKKwkJMHgzMCwgMHgwMSwg MHgxNCwgMHgwMSwgMHgyMywgMHgwMSwgMHgzYgorCX0sCisJewkvKiBnYW1tYSAyNDAgKi8KKwkJ TUNTX01UUF9TRVQzLAorCQkweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDRkLCAweDUwLCAweDY1 LCAweDYzLCAweDY0LCAweDJhLAorCQkweDJjLCAweDI5LCAweDI2LCAweDI0LCAweDI1LCAweDJj LCAweDJiLCAweDJiLCAweDMwLCAweDMwLAorCQkweDMwLCAweDAxLCAweDFlLCAweDAxLCAweDJm LCAweDAxLCAweDQ3CisJfSwKKwl7CS8qIGdhbW1hIDMwMCAqLworCQlNQ1NfTVRQX1NFVDMsCisJ CTB4MDAsIDB4MDAsIDB4MDAsIDB4MzgsIDB4NjEsIDB4NjQsIDB4NjUsIDB4NjMsIDB4NjQsIDB4 MjgsCisJCTB4MmEsIDB4MjcsIDB4MjYsIDB4MjMsIDB4MjUsIDB4MmIsIDB4MmIsIDB4MmEsIDB4 MzAsIDB4MmYsCisJCTB4MzAsIDB4MDEsIDB4MmQsIDB4MDEsIDB4M2YsIDB4MDEsIDB4NTcKKwl9 Cit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwcmVwYXJlX2NtZHMxW11bMTVdID0g eworCXsgMywgMHhmMiwgMHgxYywgMHgyOCB9LAkJLyogcG9yY2hfYWRqdXN0bWVudCAqLworCXsg NCwgMHhiNSwgMHgwMCwgMHgwMiwgMHgwMCB9LAkJLyogZnJhbWVfZnJlcSAqLworCXsgNSwgMHgy YSwgMHgwMCwgMHgxNCwgMHgwMSwgMHg1MyB9LAkvKiBtZW1fYWRkcl9zZXRfMCAqLworCXsgNSwg MHgyYiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgzZiB9LAkvKiBtZW1fYWRkcl9zZXRfMSAqLworCXsg MTQsIDB4ZjgsIDB4MDgsIDB4MDgsIDB4MDgsIDB4MTcsCS8qIGx0cHNfdGltbWluZ19zZXRfMF82 MGh6ICovCisJICAgICAgMHgwMCwgMHgyYSwgMHgwMiwgMHgyNiwKKwkgICAgICAweDAwLCAweDAw LCAweDAyLCAweDAwLCAweDAwIH0sCisJeyAyLCAweGY3LCAweDAyIH0sCQkJLyogbHRwc190aW1t aW5nX3NldF8xICovCisJeyAyLCAweGIwLCAweDAxIH0sCQkJLyogcGFyYW1fcG9zX3RlX2VkZ2Ug Ki8KKwl7IDIsIDB4ZTIsIDB4MGYgfSwJCQkvKiB0ZV9yaXNpbmdfZWRnZSAqLworCXsgMiwgMHhi MCwgMHgwMCB9LAkJCS8qIHBhcmFtX3Bvc19kZWZhdWx0ICovCisJeyAxLCBNSVBJX0RDU19FWElU X1NMRUVQX01PREUgfSwKK307CisKK3N0YXRpYyBjb25zdCAgdW5zaWduZWQgY2hhciBwcmVwYXJl X2NtZHMyW11bNF0gPSB7CisJeyAzLCAweGIxLCAweDAwLCAweDA5IH0sCS8qIGVsdnNzX2NvbmQg Ki8KKwl7IDIsIDB4MzYsIDB4NDAgfSwJCS8qIHNldF9wb3MgKi8KKwl7IDIsIDB4NTEsIDB4ZmYg fSwJCS8qIHdoaXRlX2JyaWdodG5lc3NfZGVmYXVsdCAqLworCXsgMiwgMHg1MywgMHgyMCB9LAkJ Lyogd2hpdGVfY3RybCAqLworCXsgMiwgMHg1NSwgMHgwMCB9LAkJLyogYWNsX29mZiAqLworCXsg MSwgTUlQSV9EQ1NfU0VUX1RFQVJfT04gfSwKK307CisKKworc3RhdGljIGlubGluZSBzdHJ1Y3Qg czZlNjNqMHgwMyAqcGFuZWxfdG9fczZlNjNqMHgwMyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkK K3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgczZlNjNqMHgwMywgcGFuZWwp OworfQorCitzdGF0aWMgaW5saW5lIHNzaXplX3QgczZlNjNqMHgwM19kY3Nfd3JpdGVfc2VxKHN0 cnVjdCBzNmU2M2oweDAzICpjdHgsCisJCQkJCWNvbnN0IHU4ICpzZXEsIGNvbnN0IHVuc2lnbmVk IGNoYXIgbGVuKQoreworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNp X2RldmljZShjdHgtPmRldik7CisKKwlyZXR1cm4gbWlwaV9kc2lfZGNzX3dyaXRlKGRzaSwgc2Vx LCBsZW4pOworfQorCitzdGF0aWMgaW5saW5lIGludCBzNmU2M2oweDAzX2VuYWJsZV9sdjJfY29t bWFuZChzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4KQoreworCXVuc2lnbmVkIGNoYXIgc2VxW10gPSB7 IE1DU19MRVZFTDJfS0VZLCAweDVhLCAweDVhIH07CisKKwlyZXR1cm4gczZlNjNqMHgwM19kY3Nf d3JpdGVfc2VxKGN0eCwgc2VxLCBBUlJBWV9TSVpFKHNlcSkpOworfQorCitzdGF0aWMgaW5saW5l IGludCBzNmU2M2oweDAzX2FwcGx5X210cF9rZXkoc3RydWN0IHM2ZTYzajB4MDMgKmN0eCwgYm9v bCBvbikKK3sKKwl1bnNpZ25lZCBjaGFyIHNlcTFbM10gPSB7IE1DU19NVFBfS0VZLCAweDVhLCAw eDVhIH07CisJdW5zaWduZWQgY2hhciBzZXEyWzNdID0geyBNQ1NfTVRQX0tFWSwgMHhhNSwgMHhh NSB9OworCisJcmV0dXJuIHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShjdHgsIG9uID8gc2VxMSA6 IHNlcTIsCisJCQkJCUFSUkFZX1NJWkUoc2VxMSkpOworfQorCitzdGF0aWMgaW50IHM2ZTYzajB4 MDNfcmVhZF9tdHBfaWQoc3RydWN0IHM2ZTYzajB4MDMgKmN0eCkKK3sKKwlzdHJ1Y3QgbWlwaV9k c2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOworCXVuc2lnbmVk IGNoYXIgY21kc1szXSA9IHsgUkVBRF9JRDEsIFJFQURfSUQyLCBSRUFEX0lEMyB9OworCXVuc2ln bmVkIGNoYXIgaWRbM107CisJaW50IHJldDsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCAz OyBpKyspIHsKKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3JlYWQoZHNpLCBjbWRzW2ldLCAmaWRbaV0s IDEpOworCisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlkZXZfaW5mbyhj dHgtPmRldiwgIklEOiAweCUwMngsIDB4JTAyeCwgMHglMDJ4XG4iLCBpZFswXSwgaWRbMV0sIGlk WzJdKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHM2ZTYzajB4MDNfcG93ZXJfb24o c3RydWN0IHM2ZTYzajB4MDMgKmN0eCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gcmVndWxhdG9y X2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksIGN0eC0+c3VwcGxpZXMpOwor CWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJbXNsZWVwKGN0eC0+cG93ZXJfb25fZGVs YXkpOworCisJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7CisJdXNsZWVwX3Jh bmdlKDEwMDAsIDIwMDApOworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDEpOwor CisJdXNsZWVwX3JhbmdlKGN0eC0+cmVzZXRfZGVsYXkgKiAxMDAwLCAoY3R4LT5yZXNldF9kZWxh eSArIDEpICogMTAwMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzNmU2M2oweDAz X3Bvd2VyX29mZihzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4KQoreworCWludCByZXQ7CisKKwlncGlv ZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAwKTsKKworCXJldCA9IHJlZ3VsYXRvcl9idWxr X2Rpc2FibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5zdXBwbGllcyk7CisJaWYg KHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBz NmU2M2oweDAzX2dldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXYp Cit7CisJcmV0dXJuIGJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVzczsKK30KKworc3RhdGljIHVuc2ln bmVkIGludCBzNmU2M2oweDAzX2dldF9icmlnaHRuZXNzX2luZGV4KHVuc2lnbmVkIGludCBicmln aHRuZXNzKQoreworCXVuc2lnbmVkIGludCBpbmRleDsKKworCWluZGV4ID0gYnJpZ2h0bmVzcyAv IChNQVhfQlJJR0hUTkVTUyAvIE5VTV9HQU1NQV9TVEVQUyk7CisKKwlpZiAoaW5kZXggPj0gTlVN X0dBTU1BX1NURVBTKQorCQlpbmRleCA9IE5VTV9HQU1NQV9TVEVQUyAtIDE7CisKKwlyZXR1cm4g aW5kZXg7Cit9CisKK3N0YXRpYyBpbnQgczZlNjNqMHgwM191cGRhdGVfZ2FtbWEoc3RydWN0IHM2 ZTYzajB4MDMgKmN0eCwKKwkJCQkJdW5zaWduZWQgaW50IGJyaWdodG5lc3MpCit7CisJc3RydWN0 IGJhY2tsaWdodF9kZXZpY2UgKmJsX2RldiA9IGN0eC0+YmxfZGV2OworCXN0cnVjdCBtaXBpX2Rz aV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRldik7CisJdW5zaWduZWQg aW50IGluZGV4ID0gczZlNjNqMHgwM19nZXRfYnJpZ2h0bmVzc19pbmRleChicmlnaHRuZXNzKTsK KwlpbnQgcmV0OworCisJcmV0ID0gczZlNjNqMHgwM19hcHBseV9tdHBfa2V5KGN0eCwgdHJ1ZSk7 CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBtaXBpX2RzaV9kY3Nfd3Jp dGUoZHNpLCBnYW1tYV90YmxbaW5kZXhdLCBHQU1NQV9DTURfQ05UKTsKKwlpZiAocmV0IDwgMCkK KwkJcmV0dXJuIHJldDsKKworCXJldCA9IHM2ZTYzajB4MDNfYXBwbHlfbXRwX2tleShjdHgsIGZh bHNlKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWJsX2Rldi0+cHJvcHMuYnJp Z2h0bmVzcyA9IGJyaWdodG5lc3M7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzNmU2 M2oweDAzX3NldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXYpCit7 CisJc3RydWN0IHM2ZTYzajB4MDMgKmN0eCA9IChzdHJ1Y3QgczZlNjNqMHgwMyAqKWJsX2dldF9k YXRhKGJsX2Rldik7CisJdW5zaWduZWQgaW50IGJyaWdodG5lc3MgPSBibF9kZXYtPnByb3BzLmJy aWdodG5lc3M7CisJaW50IHJldDsKKworCWlmIChicmlnaHRuZXNzIDwgTUlOX0JSSUdIVE5FU1Mg fHwKKwkJYnJpZ2h0bmVzcyA+IGJsX2Rldi0+cHJvcHMubWF4X2JyaWdodG5lc3MpIHsKKwkJZGV2 X2VycihjdHgtPmRldiwgIkludmFsaWQgYnJpZ2h0bmVzczogJXVcbiIsIGJyaWdodG5lc3MpOwor CQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoYmxfZGV2LT5wcm9wcy5wb3dlciA+IEZCX0JM QU5LX05PUk1BTCkgeworCQlkZXZfZXJyKGN0eC0+ZGV2LAorCQkJInBhbmVsIG11c3QgYmUgYXQg bGVhc3QgaW4gZmIgYmxhbmsgbm9ybWFsIHN0YXRlXG4iKTsKKwkJcmV0dXJuIC1FUEVSTTsKKwl9 CisKKwlyZXQgPSBzNmU2M2oweDAzX3VwZGF0ZV9nYW1tYShjdHgsIGJyaWdodG5lc3MpOworCWlm IChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgYmFja2xpZ2h0X29wcyBzNmU2M2oweDAzX2JsX29wcyA9IHsKKwkuZ2V0X2JyaWdo dG5lc3MgPSBzNmU2M2oweDAzX2dldF9icmlnaHRuZXNzLAorCS51cGRhdGVfc3RhdHVzID0gczZl NjNqMHgwM19zZXRfYnJpZ2h0bmVzcywKK307CisKK3N0YXRpYyBpbnQgczZlNjNqMHgwM19kaXNh YmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBzNmU2M2oweDAzICpjdHgg PSBwYW5lbF90b19zNmU2M2oweDAzKHBhbmVsKTsKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAq YmxfZGV2ID0gY3R4LT5ibF9kZXY7CisJdTggc2VxW10gPSB7IE1JUElfRENTX1NFVF9ESVNQTEFZ X09GRiB9OworCWludCByZXQ7CisKKwlyZXQgPSBzNmU2M2oweDAzX2Rjc193cml0ZV9zZXEoY3R4 LCBzZXEsIEFSUkFZX1NJWkUoc2VxKSk7CisJaWYgKHJldCA+IDApCisJCWJsX2Rldi0+cHJvcHMu cG93ZXIgPSBGQl9CTEFOS19OT1JNQUw7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBz NmU2M2oweDAzX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3Qg czZlNjNqMHgwMyAqY3R4ID0gcGFuZWxfdG9fczZlNjNqMHgwMyhwYW5lbCk7CisJc3RydWN0IGJh Y2tsaWdodF9kZXZpY2UgKmJsX2RldiA9IGN0eC0+YmxfZGV2OworCXU4IHNlcVtdID0geyBNSVBJ X0RDU19FTlRFUl9TTEVFUF9NT0RFIH07CisJaW50IHJldDsKKworCXJldCA9IHM2ZTYzajB4MDNf ZGNzX3dyaXRlX3NlcShjdHgsIHNlcSwgQVJSQVlfU0laRShzZXEpKTsKKwlpZiAocmV0IDwgMCkK KwkJcmV0dXJuIHJldDsKKworCW1zbGVlcChjdHgtPnBvd2VyX29mZl9kZWxheSk7CisKKwlyZXQg PSBzNmU2M2oweDAzX3Bvd2VyX29mZihjdHgpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0 OworCisJYmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IHM2ZTYzajB4MDNfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVs ICpwYW5lbCkKK3sKKwlzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4ID0gcGFuZWxfdG9fczZlNjNqMHgw MyhwYW5lbCk7CisJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsX2RldiA9IGN0eC0+YmxfZGV2 OworCWludCByZXQ7CisJaW50IGk7CisKKwlyZXQgPSBzNmU2M2oweDAzX3Bvd2VyX29uKGN0eCk7 CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBzNmU2M2oweDAzX2VuYWJs ZV9sdjJfY29tbWFuZChjdHgpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0 ID0gczZlNjNqMHgwM19hcHBseV9tdHBfa2V5KGN0eCwgdHJ1ZSk7CisJaWYgKHJldCA8IDApCisJ CXJldHVybiByZXQ7CisKKwlyZXQgPSBzNmU2M2oweDAzX3JlYWRfbXRwX2lkKGN0eCk7CisJaWYg KHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShw cmVwYXJlX2NtZHMxKTsgaSsrKSB7CisJCXJldCA9IHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShj dHgsICZwcmVwYXJlX2NtZHMxW2ldWzFdLAorCQkJCQkJCXByZXBhcmVfY21kczFbaV1bMF0pOwor CQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJbXNsZWVwKDEyMCk7CisKKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShwcmVwYXJlX2NtZHMyKTsgaSsrKSB7CisJCXJldCA9 IHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShjdHgsICZwcmVwYXJlX2NtZHMyW2ldWzFdLAorCQkJ CQkJCXByZXBhcmVfY21kczJbaV1bMF0pOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7 CisJfQorCisJcmV0ID0gczZlNjNqMHgwM19hcHBseV9tdHBfa2V5KGN0eCwgZmFsc2UpOworCWlm IChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJYmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JM QU5LX05PUk1BTDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHM2ZTYzajB4MDNfZW5h YmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBzNmU2M2oweDAzICpjdHgg PSBwYW5lbF90b19zNmU2M2oweDAzKHBhbmVsKTsKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAq YmxfZGV2ID0gY3R4LT5ibF9kZXY7CisJdTggc2VxW10gPSB7IE1JUElfRENTX1NFVF9ESVNQTEFZ X09OIH07CisJaW50IHJldDsKKworCXJldCA9IHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShjdHgs IHNlcSwgQVJSQVlfU0laRShzZXEpKTsKKwlpZiAocmV0ID4gMCkKKwkJYmxfZGV2LT5wcm9wcy5w b3dlciA9IEZCX0JMQU5LX1VOQkxBTks7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBz NmU2M2oweDAzX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3RvcjsKKwlzdHJ1Y3QgczZl NjNqMHgwMyAqY3R4ID0gcGFuZWxfdG9fczZlNjNqMHgwMyhwYW5lbCk7CisJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGU7CisKKwltb2RlID0gZHJtX21vZGVfY3JlYXRlKGNvbm5lY3Rvci0+ ZGV2KTsKKwlpZiAoIW1vZGUpIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGEgbmV3 IGRpc3BsYXkgbW9kZVxuIik7CisJCXJldHVybiAwOworCX0KKworCWRybV9kaXNwbGF5X21vZGVf ZnJvbV92aWRlb21vZGUoJmN0eC0+dm0sIG1vZGUpOworCW1vZGUtPndpZHRoX21tID0gY3R4LT53 aWR0aF9tbTsKKwltb2RlLT5oZWlnaHRfbW0gPSBjdHgtPmhlaWdodF9tbTsKKwljb25uZWN0b3It PmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IG1vZGUtPndpZHRoX21tOworCWNvbm5lY3Rvci0+ZGlz cGxheV9pbmZvLmhlaWdodF9tbSA9IG1vZGUtPmhlaWdodF9tbTsKKworCW1vZGUtPnR5cGUgPSBE Uk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEOworCWRybV9tb2Rl X3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBzNmU2M2oweDAzX2Z1bmNzID0geworCS5kaXNh YmxlID0gczZlNjNqMHgwM19kaXNhYmxlLAorCS51bnByZXBhcmUgPSBzNmU2M2oweDAzX3VucHJl cGFyZSwKKwkucHJlcGFyZSA9IHM2ZTYzajB4MDNfcHJlcGFyZSwKKwkuZW5hYmxlID0gczZlNjNq MHgwM19lbmFibGUsCisJLmdldF9tb2RlcyA9IHM2ZTYzajB4MDNfZ2V0X21vZGVzLAorfTsKKwor c3RhdGljIGludCBzNmU2M2oweDAzX3BhcnNlX2R0KHN0cnVjdCBzNmU2M2oweDAzICpjdHgpCit7 CisJc3RydWN0IGRldmljZSAqZGV2ID0gY3R4LT5kZXY7CisJc3RydWN0IGRldmljZV9ub2RlICpu cCA9IGRldi0+b2Zfbm9kZTsKKwlpbnQgcmV0OworCisJcmV0ID0gb2ZfZ2V0X3ZpZGVvbW9kZShu cCwgJmN0eC0+dm0sIDApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJb2ZfcHJv cGVydHlfcmVhZF91MzIobnAsICJwb3dlci1vbi1kZWxheSIsICZjdHgtPnBvd2VyX29uX2RlbGF5 KTsKKwlvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgInBvd2VyLW9mZi1kZWxheSIsICZjdHgtPnBv d2VyX29mZl9kZWxheSk7CisJb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJyZXNldC1kZWxheSIs ICZjdHgtPnJlc2V0X2RlbGF5KTsKKwlvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImluaXQtZGVs YXkiLCAmY3R4LT5pbml0X2RlbGF5KTsKKworCWN0eC0+ZmxpcF9ob3Jpem9udGFsID0gb2ZfcHJv cGVydHlfcmVhZF9ib29sKG5wLCAiZmxpcC1ob3Jpem9udGFsIik7CisJY3R4LT5mbGlwX3ZlcnRp Y2FsID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCAiZmxpcC12ZXJ0aWNhbCIpOworCisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCBzNmU2M2oweDAzX3Byb2JlKHN0cnVjdCBtaXBpX2Rz aV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmZHNpLT5kZXY7CisJc3Ry dWN0IHM2ZTYzajB4MDMgKmN0eDsKKwlpbnQgcmV0OworCisJY3R4ID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKHN0cnVjdCBzNmU2M2oweDAzKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjdHgpCisJ CXJldHVybiAtRU5PTUVNOworCisJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOworCisJ Y3R4LT5kZXYgPSBkZXY7CisKKwlkc2ktPmxhbmVzID0gMTsKKwlkc2ktPmZvcm1hdCA9IE1JUElf RFNJX0ZNVF9SR0I4ODg7CisJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9FT1RfUEFD S0VUIHwgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVDsKKworCXJldCA9IHM2ZTYzajB4MDNfcGFy c2VfZHQoY3R4KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWN0eC0+c3VwcGxp ZXNbMF0uc3VwcGx5ID0gInZkZDMiOworCWN0eC0+c3VwcGxpZXNbMV0uc3VwcGx5ID0gInZjaSI7 CisJcmV0ID0gZGV2bV9yZWd1bGF0b3JfYnVsa19nZXQoZGV2LCBBUlJBWV9TSVpFKGN0eC0+c3Vw cGxpZXMpLAorCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOworCWlmIChyZXQgPCAwKSB7CisJCWRl dl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCByZWd1bGF0b3JzOiAlZFxuIiwgcmV0KTsKKwkJcmV0 dXJuIHJldDsKKwl9CisKKwljdHgtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJy ZXNldCIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3BpbykpIHsK KwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IHJlc2V0LWdwaW86ICVsZFxuIiwKKwkJCQlQVFJf RVJSKGN0eC0+cmVzZXRfZ3BpbykpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPnJlc2V0X2dwaW8p OworCX0KKworCWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKKwljdHgtPnBhbmVsLmRldiA9 IGRldjsKKwljdHgtPnBhbmVsLmZ1bmNzID0gJnM2ZTYzajB4MDNfZnVuY3M7CisKKwljdHgtPmJs X2RldiA9IGJhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoInM2ZTYzajB4MDMiLCBkZXYsIGN0eCwK KwkJCQkJCSZzNmU2M2oweDAzX2JsX29wcywgTlVMTCk7CisJaWYgKElTX0VSUihjdHgtPmJsX2Rl dikpIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgYmFja2xpZ2h0IGRldmlj ZVxuIik7CisJCXJldHVybiBQVFJfRVJSKGN0eC0+YmxfZGV2KTsKKwl9CisKKwljdHgtPmJsX2Rl di0+cHJvcHMubWF4X2JyaWdodG5lc3MgPSBNQVhfQlJJR0hUTkVTUzsKKwljdHgtPmJsX2Rldi0+ cHJvcHMuYnJpZ2h0bmVzcyA9IERFRkFVTFRfQlJJR0hUTkVTUzsKKwljdHgtPmJsX2Rldi0+cHJv cHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047CisKKworCXJldCA9IGRybV9wYW5lbF9hZGQo JmN0eC0+cGFuZWwpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIHVucmVnaXN0ZXJfYmFja2xpZ2h0 OworCisJcmV0ID0gbWlwaV9kc2lfYXR0YWNoKGRzaSk7CisJaWYgKHJldCA8IDApCisJCWdvdG8g cmVtb3ZlX3BhbmVsOworCisJcmV0dXJuIHJldDsKKworcmVtb3ZlX3BhbmVsOgorCWRybV9wYW5l bF9yZW1vdmUoJmN0eC0+cGFuZWwpOworCit1bnJlZ2lzdGVyX2JhY2tsaWdodDoKKwliYWNrbGln aHRfZGV2aWNlX3VucmVnaXN0ZXIoY3R4LT5ibF9kZXYpOworCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludCBzNmU2M2oweDAzX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kp Cit7CisJc3RydWN0IHM2ZTYzajB4MDMgKmN0eCA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7 CisKKwltaXBpX2RzaV9kZXRhY2goZHNpKTsKKwlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVs KTsKKworCWJhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihjdHgtPmJsX2Rldik7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgczZlNjNqMHgwM19v Zl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxzNmU2M2oweDAzIiB9LAor CXsgfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHM2ZTYzajB4MDNfb2ZfbWF0Y2gpOwor CitzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciBzNmU2M2oweDAzX2RyaXZlciA9IHsKKwku cHJvYmUgPSBzNmU2M2oweDAzX3Byb2JlLAorCS5yZW1vdmUgPSBzNmU2M2oweDAzX3JlbW92ZSwK KwkuZHJpdmVyID0geworCQkubmFtZSA9ICJwYW5lbF9zNmU2M2oweDAzIiwKKwkJLm9mX21hdGNo X3RhYmxlID0gczZlNjNqMHgwM19vZl9tYXRjaCwKKwl9LAorfTsKK21vZHVsZV9taXBpX2RzaV9k cml2ZXIoczZlNjNqMHgwM19kcml2ZXIpOworCitNT0RVTEVfQVVUSE9SKCJJbmtpIERhZSA8aW5r aS5kYWVAc2Ftc3VuZy5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk1JUEktRFNJIGJhc2Vk IHM2ZThhYTAgQU1PTEVEIExDRCBQYW5lbCBEcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwg djIiKTsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=