From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: [Resend][PATCH v2 2/3] drm/panel: add s6e63j0x03 LCD panel driver Date: Tue, 06 Jan 2015 00:28:22 +0900 Message-ID: <54AAAD96.2050004@samsung.com> References: <1418117346-9078-3-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-3-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: Thierry Reding , DRI mailing list Cc: Mark Rutland , "devicetree@vger.kernel.org" , "linux-samsung-soc@vger.kernel.org" , Pawel Moll , Ian Campbell , Andrzej Hajda , Kyungmin Park , Rob Herring , Kumar Gala , Kukjin Kim List-Id: devicetree@vger.kernel.org Ckp1c3QgcmVzZW5kIGl0IHdpdGggVGhpZXJyeSdzIHJlcXVlc3QuCgpUaGFua3MsCklua2kgRGFl CgotLS0tLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tLS0tClN1YmplY3Q6IFtQQVRDSCB2MiAy LzNdIGRybS9wYW5lbDogYWRkIHM2ZTYzajB4MDMgTENEIHBhbmVsIGRyaXZlcgpEYXRlOiBUdWUs IDA5IERlYyAyMDE0IDE4OjI5OjA1ICswOTAwCkZyb206IEh5dW5nd29uIEh3YW5nIDxodW1hbi5o d2FuZ0BzYW1zdW5nLmNvbT4KVG86IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ0M6 IGFpcmxpZWRAbGludXguaWUsIGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnLCByb2JoK2R0QGtl cm5lbC5vcmcsCnBhd2VsLm1vbGxAYXJtLmNvbSwgbWFyay5ydXRsYW5kQGFybS5jb20sIGlqYytk ZXZpY2V0cmVlQGhlbGxpb24ub3JnLnVrLApnYWxha0Bjb2RlYXVyb3JhLm9yZywgbGludXgtc2Ft c3VuZy1zb2NAdmdlci5rZXJuZWwub3JnLApreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tLCBpbmtp LmRhZUBzYW1zdW5nLmNvbSwgYS5oYWpkYUBzYW1zdW5nLmNvbSwKa2dlbmUua2ltQHNhbXN1bmcu Y29tLCB0aGllcnJ5LnJlZGluZ0BnbWFpbC5jb20sIEh5dW5nd29uIEh3YW5nCjxodW1hbi5od2Fu Z0BzYW1zdW5nLmNvbT4KCkZyb206IElua2kgRGFlIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT4KClRo aXMgcGF0Y2ggYWRkcyBNSVBJLURTSSBiYXNlZCBTNkU2M0owWDAzIEFNT0xFRCBMQ0QgcGFuZWwg ZHJpdmVyCndoaWNoIHVzZXMgbWlwaV9kc2kgYnVzIHRvIGNvbW11bmljYXRlIHdpdGggcGFuZWwu IFRoZSBwYW5lbCBoYXMKMzIww5czMjAgcmVzb2x1dGlvbiBpbiAxLjYzLWluY2ggcGh5c2ljYWwg cGFuZWwuIFRoaXMgcGFuZWwgaXMgdXNlZCBpbgpTYW1zdW5nIEdhbGF4eSBHZWFyIDIuCgpTaWdu ZWQtb2ZmLWJ5OiBJbmtpIERhZSA8aW5raS5kYWVAc2Ftc3VuZy5jb20+ClNpZ25lZC1vZmYtYnk6 IEh5dW5nd29uIEh3YW5nIDxodW1hbi5od2FuZ0BzYW1zdW5nLmNvbT4KQWNrZWQtYnk6IEt5dW5n bWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0tLQpDaGFuZ2VzIGZvciB2MjoK LSBDaGFuZ2UgdGhlIGdhbW1hIHRhYmxlIHRvIDItZGltZW5zaW9uYWwgYXJyYXkKLSBDaGFuZ2Ug dGhlIHdheSB0byBtYWtlIGluZGV4IGZvciBicmlnaHRuZXNzCi0gTWFrZSBjb21tYW5kIGZ1bmN0 aW9ucyB0byBhbiBhcnJheSBzbyB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgc2ltcGx5Ci0gQ2hhbmdl IGNvbW1hbmQgaWQgZm9yIHJlYWRpbmcgZGV2aWNlIElECi0gQ2hhbmdlIHRoZSB3YXkgdG8gaGFu ZGxlIHRoZSBlcnJvciBjb25kaXRpb24KLSBSZW1vdmUgcG93ZXIgdmFyaWFibGUsIGFuZCB1c2Ug dGhlIHNhbWUgbmFtZSB2YXJpYWJsZSBpbiBibF9kZXYKLSBBZGQgdGhlIHN0YXRlIEZCX0JMQU5L X05PUk1BTCB0byByZXByZXNlbnQgdGhlIHN0YXRlIHdoaWNoIHRoZSBwYW5lbAppcyB3b3JraW5n IGJ1dCBibGFua2VkCi0gTWlzY2VsbGFuZW91cyBjaGFuZ2VzIHRvIGluY3JlYXNlIHRoZSByZWFk YWJpbGl0eSBhbmQgZm9sbG93IHRoZQogIGNvZGluZy1zdHlsZSBzdGFuZGFyZAoKIGRyaXZlcnMv Z3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUvZHJt L3BhbmVsL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtczZlNjNqMHgwMy5jIHwgNTQ5CisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDMgZmlsZXMgY2hhbmdlZCwgNTU2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtczZlNjNqMHgwMy5jCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZp ZwppbmRleCBiZWU5ZjcyLi5iYzEzM2UyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpAQCAtMjcsNCAr MjcsMTAgQEAgY29uZmlnIERSTV9QQU5FTF9TNkU4QUEwCiAJc2VsZWN0IERSTV9NSVBJX0RTSQog CXNlbGVjdCBWSURFT01PREVfSEVMUEVSUwoKK2NvbmZpZyBEUk1fUEFORUxfUzZFNjNKMFgwMwor CXRyaXN0YXRlICJTNkU2M0owWDAzIERTSSB2aWRlbyBtb2RlIHBhbmVsIgorCWRlcGVuZHMgb24g T0YKKwlzZWxlY3QgRFJNX01JUElfRFNJCisJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTCisKIGVu ZG1lbnUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQppbmRleCA4YjkyOTIxLi43ZjM2ZGMyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL01ha2VmaWxlCkBAIC0xLDMgKzEsNCBAQAogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9T SU1QTEUpICs9IHBhbmVsLXNpbXBsZS5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0xEOTA0MCkg Kz0gcGFuZWwtbGQ5MDQwLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfUzZFOEFBMCkgKz0gcGFu ZWwtczZlOGFhMC5vCitvYmotJChDT05GSUdfRFJNX1BBTkVMX1M2RTYzSjBYMDMpICs9IHBhbmVs LXM2ZTYzajB4MDMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXM2 ZTYzajB4MDMuYwpiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zNmU2M2oweDAzLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhlNGE1MQotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zNmU2M2oweDAzLmMKQEAgLTAsMCArMSw1 NDkgQEAKKy8qCisgKiBNSVBJLURTSSBiYXNlZCBTNkU2M0owWDAzIEFNT0xFRCBsY2QgMS42MyBp bmNoIHBhbmVsIGRyaXZlci4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVj dHJvbmljcyBDby4sIEx0ZAorICoKKyAqIElua2kgRGFlLCA8aW5raS5kYWVAc2Ftc3VuZy5jb20+ CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisK KyNpbmNsdWRlIDxsaW51eC9vZl9ncGlvLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgorI2lu Y2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2JhY2ts aWdodC5oPgorCisjaW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+CisjaW5jbHVkZSA8dmlk ZW8vb2ZfdmlkZW9tb2RlLmg+CisjaW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+CisKKyNkZWZp bmUgUkVBRF9JRDEJCTB4REEKKyNkZWZpbmUgUkVBRF9JRDIJCTB4REIKKyNkZWZpbmUgUkVBRF9J RDMJCTB4REMKKworI2RlZmluZSBNQ1NfTEVWRUwyX0tFWQkJMHhmMAorI2RlZmluZSBNQ1NfTVRQ X0tFWQkJMHhmMQorI2RlZmluZSBNQ1NfTVRQX1NFVDMJCTB4ZDQKKworI2RlZmluZSBNSU5fQlJJ R0hUTkVTUwkJMAorI2RlZmluZSBNQVhfQlJJR0hUTkVTUwkJMTAwCisjZGVmaW5lIERFRkFVTFRf QlJJR0hUTkVTUwk4MAorCisjZGVmaW5lIEdBTU1BX0xFVkVMX05VTQkJMzAKKyNkZWZpbmUgTlVN X0dBTU1BX1NURVBTCQk5CisjZGVmaW5lIEdBTU1BX0NNRF9DTlQJCTI4CisKK3N0cnVjdCBzNmU2 M2oweDAzIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRybV9wYW5lbCBwYW5lbDsK KwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2OworCisJc3RydWN0IHJlZ3VsYXRvcl9i dWxrX2RhdGEgc3VwcGxpZXNbMl07CisJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKKwl1 MzIgcG93ZXJfb25fZGVsYXk7CisJdTMyIHBvd2VyX29mZl9kZWxheTsKKwl1MzIgcmVzZXRfZGVs YXk7CisJdTMyIGluaXRfZGVsYXk7CisJYm9vbCBmbGlwX2hvcml6b250YWw7CisJYm9vbCBmbGlw X3ZlcnRpY2FsOworCXN0cnVjdCB2aWRlb21vZGUgdm07CisJdW5zaWduZWQgaW50IHdpZHRoX21t OworCXVuc2lnbmVkIGludCBoZWlnaHRfbW07Cit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBnYW1tYV90YmxbTlVNX0dBTU1BX1NURVBTXVtHQU1NQV9DTURfQ05UXSA9IHsKKwl7CS8q IEdhbW1hIDEwICovCisJCU1DU19NVFBfU0VUMywKKwkJMHgwMCwgMHgwMCwgMHgwMCwgMHg3Ziwg MHg3ZiwgMHg3ZiwgMHg1MiwgMHg2YiwgMHg2ZiwgMHgyNiwKKwkJMHgyOCwgMHgyZCwgMHgyOCwg MHgyNiwgMHgyNywgMHgzMywgMHgzNCwgMHgzMiwgMHgzNiwgMHgzNiwKKwkJMHgzNSwgMHgwMCwg MHhhYiwgMHgwMCwgMHhhZSwgMHgwMCwgMHhiZgorCX0sCisJewkvKiBnYW1tYSAzMCAqLworCQlN Q1NfTVRQX1NFVDMsCisJCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4N2YsIDB4N2YsIDB4NGUs IDB4NjQsIDB4NjksIDB4MjYsCisJCTB4MjcsIDB4MmEsIDB4MjgsIDB4MjksIDB4MjcsIDB4MzEs IDB4MzIsIDB4MzEsIDB4MzUsIDB4MzQsCisJCTB4MzUsIDB4MDAsIDB4YzQsIDB4MDAsIDB4Y2Es IDB4MDAsIDB4ZGMKKwl9LAorCXsJLyogZ2FtbWEgNjAgKi8KKwkJTUNTX01UUF9TRVQzLAorCQkw eDAwLCAweDAwLCAweDAwLCAweDY1LCAweDdiLCAweDdkLCAweDVmLCAweDY3LCAweDY4LCAweDJh LAorCQkweDI4LCAweDI5LCAweDI4LCAweDJhLCAweDI3LCAweDMxLCAweDJmLCAweDMwLCAweDM0 LCAweDMzLAorCQkweDM0LCAweDAwLCAweGQ5LCAweDAwLCAweGU0LCAweDAwLCAweGY1CisJfSwK Kwl7CS8qIGdhbW1hIDkwICovCisJCU1DU19NVFBfU0VUMywKKwkJMHgwMCwgMHgwMCwgMHgwMCwg MHg0ZCwgMHg2ZiwgMHg3MSwgMHg2NywgMHg2YSwgMHg2YywgMHgyOSwKKwkJMHgyOCwgMHgyOCwg MHgyOCwgMHgyOSwgMHgyNywgMHgzMCwgMHgyZSwgMHgzMCwgMHgzMiwgMHgzMSwKKwkJMHgzMSwg MHgwMCwgMHhlYSwgMHgwMCwgMHhmNiwgMHgwMSwgMHgwOQorCX0sCisJewkvKiBnYW1tYSAxMjAg Ki8KKwkJTUNTX01UUF9TRVQzLAorCQkweDAwLCAweDAwLCAweDAwLCAweDNkLCAweDY2LCAweDY4 LCAweDY5LCAweDY5LCAweDY5LCAweDI4LAorCQkweDI4LCAweDI3LCAweDI4LCAweDI4LCAweDI3 LCAweDMwLCAweDJlLCAweDJmLCAweDMxLCAweDMxLAorCQkweDMwLCAweDAwLCAweGY5LCAweDAx LCAweDA1LCAweDAxLCAweDFiCisJfSwKKwl7CS8qIGdhbW1hIDE1MCAqLworCQlNQ1NfTVRQX1NF VDMsCisJCTB4MDAsIDB4MDAsIDB4MDAsIDB4MzEsIDB4NTEsIDB4NTMsIDB4NjYsIDB4NjYsIDB4 NjcsIDB4MjgsCisJCTB4MjksIDB4MjcsIDB4MjgsIDB4MjcsIDB4MjcsIDB4MmUsIDB4MmQsIDB4 MmUsIDB4MzEsIDB4MzEsCisJCTB4MzAsIDB4MDEsIDB4MDQsIDB4MDEsIDB4MTEsIDB4MDEsIDB4 MjkKKwl9LAorCXsJLyogZ2FtbWEgMjAwICovCisJCU1DU19NVFBfU0VUMywKKwkJMHgwMCwgMHgw MCwgMHgwMCwgMHgyZiwgMHg0ZiwgMHg1MSwgMHg2NywgMHg2NSwgMHg2NSwgMHgyOSwKKwkJMHgy YSwgMHgyOCwgMHgyNywgMHgyNSwgMHgyNiwgMHgyZCwgMHgyYywgMHgyYywgMHgzMCwgMHgzMCwK KwkJMHgzMCwgMHgwMSwgMHgxNCwgMHgwMSwgMHgyMywgMHgwMSwgMHgzYgorCX0sCisJewkvKiBn YW1tYSAyNDAgKi8KKwkJTUNTX01UUF9TRVQzLAorCQkweDAwLCAweDAwLCAweDAwLCAweDJjLCAw eDRkLCAweDUwLCAweDY1LCAweDYzLCAweDY0LCAweDJhLAorCQkweDJjLCAweDI5LCAweDI2LCAw eDI0LCAweDI1LCAweDJjLCAweDJiLCAweDJiLCAweDMwLCAweDMwLAorCQkweDMwLCAweDAxLCAw eDFlLCAweDAxLCAweDJmLCAweDAxLCAweDQ3CisJfSwKKwl7CS8qIGdhbW1hIDMwMCAqLworCQlN Q1NfTVRQX1NFVDMsCisJCTB4MDAsIDB4MDAsIDB4MDAsIDB4MzgsIDB4NjEsIDB4NjQsIDB4NjUs IDB4NjMsIDB4NjQsIDB4MjgsCisJCTB4MmEsIDB4MjcsIDB4MjYsIDB4MjMsIDB4MjUsIDB4MmIs IDB4MmIsIDB4MmEsIDB4MzAsIDB4MmYsCisJCTB4MzAsIDB4MDEsIDB4MmQsIDB4MDEsIDB4M2Ys IDB4MDEsIDB4NTcKKwl9Cit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwcmVwYXJl X2NtZHMxW11bMTVdID0geworCXsgMywgMHhmMiwgMHgxYywgMHgyOCB9LAkJLyogcG9yY2hfYWRq dXN0bWVudCAqLworCXsgNCwgMHhiNSwgMHgwMCwgMHgwMiwgMHgwMCB9LAkJLyogZnJhbWVfZnJl cSAqLworCXsgNSwgMHgyYSwgMHgwMCwgMHgxNCwgMHgwMSwgMHg1MyB9LAkvKiBtZW1fYWRkcl9z ZXRfMCAqLworCXsgNSwgMHgyYiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgzZiB9LAkvKiBtZW1fYWRk cl9zZXRfMSAqLworCXsgMTQsIDB4ZjgsIDB4MDgsIDB4MDgsIDB4MDgsIDB4MTcsCS8qIGx0cHNf dGltbWluZ19zZXRfMF82MGh6ICovCisJICAgICAgMHgwMCwgMHgyYSwgMHgwMiwgMHgyNiwKKwkg ICAgICAweDAwLCAweDAwLCAweDAyLCAweDAwLCAweDAwIH0sCisJeyAyLCAweGY3LCAweDAyIH0s CQkJLyogbHRwc190aW1taW5nX3NldF8xICovCisJeyAyLCAweGIwLCAweDAxIH0sCQkJLyogcGFy YW1fcG9zX3RlX2VkZ2UgKi8KKwl7IDIsIDB4ZTIsIDB4MGYgfSwJCQkvKiB0ZV9yaXNpbmdfZWRn ZSAqLworCXsgMiwgMHhiMCwgMHgwMCB9LAkJCS8qIHBhcmFtX3Bvc19kZWZhdWx0ICovCisJeyAx LCBNSVBJX0RDU19FWElUX1NMRUVQX01PREUgfSwKK307CisKK3N0YXRpYyBjb25zdCAgdW5zaWdu ZWQgY2hhciBwcmVwYXJlX2NtZHMyW11bNF0gPSB7CisJeyAzLCAweGIxLCAweDAwLCAweDA5IH0s CS8qIGVsdnNzX2NvbmQgKi8KKwl7IDIsIDB4MzYsIDB4NDAgfSwJCS8qIHNldF9wb3MgKi8KKwl7 IDIsIDB4NTEsIDB4ZmYgfSwJCS8qIHdoaXRlX2JyaWdodG5lc3NfZGVmYXVsdCAqLworCXsgMiwg MHg1MywgMHgyMCB9LAkJLyogd2hpdGVfY3RybCAqLworCXsgMiwgMHg1NSwgMHgwMCB9LAkJLyog YWNsX29mZiAqLworCXsgMSwgTUlQSV9EQ1NfU0VUX1RFQVJfT04gfSwKK307CisKKworc3RhdGlj IGlubGluZSBzdHJ1Y3QgczZlNjNqMHgwMyAqcGFuZWxfdG9fczZlNjNqMHgwMyhzdHJ1Y3QgZHJt X3BhbmVsCipwYW5lbCkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgczZl NjNqMHgwMywgcGFuZWwpOworfQorCitzdGF0aWMgaW5saW5lIHNzaXplX3QgczZlNjNqMHgwM19k Y3Nfd3JpdGVfc2VxKHN0cnVjdCBzNmU2M2oweDAzICpjdHgsCisJCQkJCWNvbnN0IHU4ICpzZXEs IGNvbnN0IHVuc2lnbmVkIGNoYXIgbGVuKQoreworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRz aSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRldik7CisKKwlyZXR1cm4gbWlwaV9kc2lfZGNz X3dyaXRlKGRzaSwgc2VxLCBsZW4pOworfQorCitzdGF0aWMgaW5saW5lIGludCBzNmU2M2oweDAz X2VuYWJsZV9sdjJfY29tbWFuZChzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4KQoreworCXVuc2lnbmVk IGNoYXIgc2VxW10gPSB7IE1DU19MRVZFTDJfS0VZLCAweDVhLCAweDVhIH07CisKKwlyZXR1cm4g czZlNjNqMHgwM19kY3Nfd3JpdGVfc2VxKGN0eCwgc2VxLCBBUlJBWV9TSVpFKHNlcSkpOworfQor CitzdGF0aWMgaW5saW5lIGludCBzNmU2M2oweDAzX2FwcGx5X210cF9rZXkoc3RydWN0IHM2ZTYz ajB4MDMgKmN0eCwgYm9vbCBvbikKK3sKKwl1bnNpZ25lZCBjaGFyIHNlcTFbM10gPSB7IE1DU19N VFBfS0VZLCAweDVhLCAweDVhIH07CisJdW5zaWduZWQgY2hhciBzZXEyWzNdID0geyBNQ1NfTVRQ X0tFWSwgMHhhNSwgMHhhNSB9OworCisJcmV0dXJuIHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShj dHgsIG9uID8gc2VxMSA6IHNlcTIsCisJCQkJCUFSUkFZX1NJWkUoc2VxMSkpOworfQorCitzdGF0 aWMgaW50IHM2ZTYzajB4MDNfcmVhZF9tdHBfaWQoc3RydWN0IHM2ZTYzajB4MDMgKmN0eCkKK3sK KwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5k ZXYpOworCXVuc2lnbmVkIGNoYXIgY21kc1szXSA9IHsgUkVBRF9JRDEsIFJFQURfSUQyLCBSRUFE X0lEMyB9OworCXVuc2lnbmVkIGNoYXIgaWRbM107CisJaW50IHJldDsKKwlpbnQgaTsKKworCWZv ciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3JlYWQoZHNpLCBj bWRzW2ldLCAmaWRbaV0sIDEpOworCisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9 CisKKwlkZXZfaW5mbyhjdHgtPmRldiwgIklEOiAweCUwMngsIDB4JTAyeCwgMHglMDJ4XG4iLCBp ZFswXSwgaWRbMV0sIGlkWzJdKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHM2ZTYz ajB4MDNfcG93ZXJfb24oc3RydWN0IHM2ZTYzajB4MDMgKmN0eCkKK3sKKwlpbnQgcmV0OworCisJ cmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksIGN0 eC0+c3VwcGxpZXMpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJbXNsZWVwKGN0 eC0+cG93ZXJfb25fZGVsYXkpOworCisJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3Bpbywg MCk7CisJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJl c2V0X2dwaW8sIDEpOworCisJdXNsZWVwX3JhbmdlKGN0eC0+cmVzZXRfZGVsYXkgKiAxMDAwLCAo Y3R4LT5yZXNldF9kZWxheSArIDEpICogMTAwMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBzNmU2M2oweDAzX3Bvd2VyX29mZihzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4KQoreworCWlu dCByZXQ7CisKKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAwKTsKKworCXJldCA9 IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5z dXBwbGllcyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBzNmU2M2oweDAzX2dldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNrbGlnaHRf ZGV2aWNlICpibF9kZXYpCit7CisJcmV0dXJuIGJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVzczsKK30K Kworc3RhdGljIHVuc2lnbmVkIGludCBzNmU2M2oweDAzX2dldF9icmlnaHRuZXNzX2luZGV4KHVu c2lnbmVkIGludApicmlnaHRuZXNzKQoreworCXVuc2lnbmVkIGludCBpbmRleDsKKworCWluZGV4 ID0gYnJpZ2h0bmVzcyAvIChNQVhfQlJJR0hUTkVTUyAvIE5VTV9HQU1NQV9TVEVQUyk7CisKKwlp ZiAoaW5kZXggPj0gTlVNX0dBTU1BX1NURVBTKQorCQlpbmRleCA9IE5VTV9HQU1NQV9TVEVQUyAt IDE7CisKKwlyZXR1cm4gaW5kZXg7Cit9CisKK3N0YXRpYyBpbnQgczZlNjNqMHgwM191cGRhdGVf Z2FtbWEoc3RydWN0IHM2ZTYzajB4MDMgKmN0eCwKKwkJCQkJdW5zaWduZWQgaW50IGJyaWdodG5l c3MpCit7CisJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsX2RldiA9IGN0eC0+YmxfZGV2Owor CXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRl dik7CisJdW5zaWduZWQgaW50IGluZGV4ID0gczZlNjNqMHgwM19nZXRfYnJpZ2h0bmVzc19pbmRl eChicmlnaHRuZXNzKTsKKwlpbnQgcmV0OworCisJcmV0ID0gczZlNjNqMHgwM19hcHBseV9tdHBf a2V5KGN0eCwgdHJ1ZSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBt aXBpX2RzaV9kY3Nfd3JpdGUoZHNpLCBnYW1tYV90YmxbaW5kZXhdLCBHQU1NQV9DTURfQ05UKTsK KwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHM2ZTYzajB4MDNfYXBwbHlf bXRwX2tleShjdHgsIGZhbHNlKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWJs X2Rldi0+cHJvcHMuYnJpZ2h0bmVzcyA9IGJyaWdodG5lc3M7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBzNmU2M2oweDAzX3NldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNrbGlnaHRfZGV2 aWNlICpibF9kZXYpCit7CisJc3RydWN0IHM2ZTYzajB4MDMgKmN0eCA9IChzdHJ1Y3QgczZlNjNq MHgwMyAqKWJsX2dldF9kYXRhKGJsX2Rldik7CisJdW5zaWduZWQgaW50IGJyaWdodG5lc3MgPSBi bF9kZXYtPnByb3BzLmJyaWdodG5lc3M7CisJaW50IHJldDsKKworCWlmIChicmlnaHRuZXNzIDwg TUlOX0JSSUdIVE5FU1MgfHwKKwkJYnJpZ2h0bmVzcyA+IGJsX2Rldi0+cHJvcHMubWF4X2JyaWdo dG5lc3MpIHsKKwkJZGV2X2VycihjdHgtPmRldiwgIkludmFsaWQgYnJpZ2h0bmVzczogJXVcbiIs IGJyaWdodG5lc3MpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoYmxfZGV2LT5wcm9w cy5wb3dlciA+IEZCX0JMQU5LX05PUk1BTCkgeworCQlkZXZfZXJyKGN0eC0+ZGV2LAorCQkJInBh bmVsIG11c3QgYmUgYXQgbGVhc3QgaW4gZmIgYmxhbmsgbm9ybWFsIHN0YXRlXG4iKTsKKwkJcmV0 dXJuIC1FUEVSTTsKKwl9CisKKwlyZXQgPSBzNmU2M2oweDAzX3VwZGF0ZV9nYW1tYShjdHgsIGJy aWdodG5lc3MpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmFja2xpZ2h0X29wcyBzNmU2M2oweDAzX2JsX29wcyA9 IHsKKwkuZ2V0X2JyaWdodG5lc3MgPSBzNmU2M2oweDAzX2dldF9icmlnaHRuZXNzLAorCS51cGRh dGVfc3RhdHVzID0gczZlNjNqMHgwM19zZXRfYnJpZ2h0bmVzcywKK307CisKK3N0YXRpYyBpbnQg czZlNjNqMHgwM19kaXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBz NmU2M2oweDAzICpjdHggPSBwYW5lbF90b19zNmU2M2oweDAzKHBhbmVsKTsKKwlzdHJ1Y3QgYmFj a2xpZ2h0X2RldmljZSAqYmxfZGV2ID0gY3R4LT5ibF9kZXY7CisJdTggc2VxW10gPSB7IE1JUElf RENTX1NFVF9ESVNQTEFZX09GRiB9OworCWludCByZXQ7CisKKwlyZXQgPSBzNmU2M2oweDAzX2Rj c193cml0ZV9zZXEoY3R4LCBzZXEsIEFSUkFZX1NJWkUoc2VxKSk7CisJaWYgKHJldCA+IDApCisJ CWJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19OT1JNQUw7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBzNmU2M2oweDAzX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKK3sKKwlzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4ID0gcGFuZWxfdG9fczZlNjNqMHgwMyhwYW5l bCk7CisJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsX2RldiA9IGN0eC0+YmxfZGV2OworCXU4 IHNlcVtdID0geyBNSVBJX0RDU19FTlRFUl9TTEVFUF9NT0RFIH07CisJaW50IHJldDsKKworCXJl dCA9IHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShjdHgsIHNlcSwgQVJSQVlfU0laRShzZXEpKTsK KwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCW1zbGVlcChjdHgtPnBvd2VyX29mZl9k ZWxheSk7CisKKwlyZXQgPSBzNmU2M2oweDAzX3Bvd2VyX29mZihjdHgpOworCWlmIChyZXQgPCAw KQorCQlyZXR1cm4gcmV0OworCisJYmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VS RE9XTjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHM2ZTYzajB4MDNfcHJlcGFyZShz dHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4ID0gcGFu ZWxfdG9fczZlNjNqMHgwMyhwYW5lbCk7CisJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsX2Rl diA9IGN0eC0+YmxfZGV2OworCWludCByZXQ7CisJaW50IGk7CisKKwlyZXQgPSBzNmU2M2oweDAz X3Bvd2VyX29uKGN0eCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBz NmU2M2oweDAzX2VuYWJsZV9sdjJfY29tbWFuZChjdHgpOworCWlmIChyZXQgPCAwKQorCQlyZXR1 cm4gcmV0OworCisJcmV0ID0gczZlNjNqMHgwM19hcHBseV9tdHBfa2V5KGN0eCwgdHJ1ZSk7CisJ aWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBzNmU2M2oweDAzX3JlYWRfbXRw X2lkKGN0eCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShwcmVwYXJlX2NtZHMxKTsgaSsrKSB7CisJCXJldCA9IHM2ZTYzajB4MDNf ZGNzX3dyaXRlX3NlcShjdHgsICZwcmVwYXJlX2NtZHMxW2ldWzFdLAorCQkJCQkJCXByZXBhcmVf Y21kczFbaV1bMF0pOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJbXNs ZWVwKDEyMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShwcmVwYXJlX2NtZHMyKTsg aSsrKSB7CisJCXJldCA9IHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShjdHgsICZwcmVwYXJlX2Nt ZHMyW2ldWzFdLAorCQkJCQkJCXByZXBhcmVfY21kczJbaV1bMF0pOworCQlpZiAocmV0IDwgMCkK KwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gczZlNjNqMHgwM19hcHBseV9tdHBfa2V5KGN0 eCwgZmFsc2UpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJYmxfZGV2LT5wcm9w cy5wb3dlciA9IEZCX0JMQU5LX05PUk1BTDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHM2ZTYzajB4MDNfZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBz NmU2M2oweDAzICpjdHggPSBwYW5lbF90b19zNmU2M2oweDAzKHBhbmVsKTsKKwlzdHJ1Y3QgYmFj a2xpZ2h0X2RldmljZSAqYmxfZGV2ID0gY3R4LT5ibF9kZXY7CisJdTggc2VxW10gPSB7IE1JUElf RENTX1NFVF9ESVNQTEFZX09OIH07CisJaW50IHJldDsKKworCXJldCA9IHM2ZTYzajB4MDNfZGNz X3dyaXRlX3NlcShjdHgsIHNlcSwgQVJSQVlfU0laRShzZXEpKTsKKwlpZiAocmV0ID4gMCkKKwkJ YmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1VOQkxBTks7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBzNmU2M2oweDAzX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3Rv cjsKKwlzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4ID0gcGFuZWxfdG9fczZlNjNqMHgwMyhwYW5lbCk7 CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisKKwltb2RlID0gZHJtX21vZGVfY3Jl YXRlKGNvbm5lY3Rvci0+ZGV2KTsKKwlpZiAoIW1vZGUpIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQg dG8gY3JlYXRlIGEgbmV3IGRpc3BsYXkgbW9kZVxuIik7CisJCXJldHVybiAwOworCX0KKworCWRy bV9kaXNwbGF5X21vZGVfZnJvbV92aWRlb21vZGUoJmN0eC0+dm0sIG1vZGUpOworCW1vZGUtPndp ZHRoX21tID0gY3R4LT53aWR0aF9tbTsKKwltb2RlLT5oZWlnaHRfbW0gPSBjdHgtPmhlaWdodF9t bTsKKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IG1vZGUtPndpZHRoX21tOwor CWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IG1vZGUtPmhlaWdodF9tbTsKKwor CW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVfUFJFRkVS UkVEOworCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKKworCXJldHVybiAx OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBzNmU2M2oweDAzX2Z1 bmNzID0geworCS5kaXNhYmxlID0gczZlNjNqMHgwM19kaXNhYmxlLAorCS51bnByZXBhcmUgPSBz NmU2M2oweDAzX3VucHJlcGFyZSwKKwkucHJlcGFyZSA9IHM2ZTYzajB4MDNfcHJlcGFyZSwKKwku ZW5hYmxlID0gczZlNjNqMHgwM19lbmFibGUsCisJLmdldF9tb2RlcyA9IHM2ZTYzajB4MDNfZ2V0 X21vZGVzLAorfTsKKworc3RhdGljIGludCBzNmU2M2oweDAzX3BhcnNlX2R0KHN0cnVjdCBzNmU2 M2oweDAzICpjdHgpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY3R4LT5kZXY7CisJc3RydWN0 IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKKwlpbnQgcmV0OworCisJcmV0ID0gb2Zf Z2V0X3ZpZGVvbW9kZShucCwgJmN0eC0+dm0sIDApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4g cmV0OworCisJb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJwb3dlci1vbi1kZWxheSIsICZjdHgt PnBvd2VyX29uX2RlbGF5KTsKKwlvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgInBvd2VyLW9mZi1k ZWxheSIsICZjdHgtPnBvd2VyX29mZl9kZWxheSk7CisJb2ZfcHJvcGVydHlfcmVhZF91MzIobnAs ICJyZXNldC1kZWxheSIsICZjdHgtPnJlc2V0X2RlbGF5KTsKKwlvZl9wcm9wZXJ0eV9yZWFkX3Uz MihucCwgImluaXQtZGVsYXkiLCAmY3R4LT5pbml0X2RlbGF5KTsKKworCWN0eC0+ZmxpcF9ob3Jp em9udGFsID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCAiZmxpcC1ob3Jpem9udGFsIik7CisJ Y3R4LT5mbGlwX3ZlcnRpY2FsID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCAiZmxpcC12ZXJ0 aWNhbCIpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBzNmU2M2oweDAzX3Byb2Jl KHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAm ZHNpLT5kZXY7CisJc3RydWN0IHM2ZTYzajB4MDMgKmN0eDsKKwlpbnQgcmV0OworCisJY3R4ID0g ZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKHN0cnVjdCBzNmU2M2oweDAzKSwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFjdHgpCisJCXJldHVybiAtRU5PTUVNOworCisJbWlwaV9kc2lfc2V0X2RydmRhdGEo ZHNpLCBjdHgpOworCisJY3R4LT5kZXYgPSBkZXY7CisKKwlkc2ktPmxhbmVzID0gMTsKKwlkc2kt PmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7CisJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9E U0lfTU9ERV9FT1RfUEFDS0VUIHwgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVDsKKworCXJldCA9 IHM2ZTYzajB4MDNfcGFyc2VfZHQoY3R4KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsK KworCWN0eC0+c3VwcGxpZXNbMF0uc3VwcGx5ID0gInZkZDMiOworCWN0eC0+c3VwcGxpZXNbMV0u c3VwcGx5ID0gInZjaSI7CisJcmV0ID0gZGV2bV9yZWd1bGF0b3JfYnVsa19nZXQoZGV2LCBBUlJB WV9TSVpFKGN0eC0+c3VwcGxpZXMpLAorCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOworCWlmIChy ZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCByZWd1bGF0b3JzOiAlZFxu IiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwljdHgtPnJlc2V0X2dwaW8gPSBkZXZtX2dw aW9kX2dldChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKGN0eC0+ cmVzZXRfZ3BpbykpIHsKKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IHJlc2V0LWdwaW86ICVs ZFxuIiwKKwkJCQlQVFJfRVJSKGN0eC0+cmVzZXRfZ3BpbykpOworCQlyZXR1cm4gUFRSX0VSUihj dHgtPnJlc2V0X2dwaW8pOworCX0KKworCWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKKwlj dHgtPnBhbmVsLmRldiA9IGRldjsKKwljdHgtPnBhbmVsLmZ1bmNzID0gJnM2ZTYzajB4MDNfZnVu Y3M7CisKKwljdHgtPmJsX2RldiA9IGJhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoInM2ZTYzajB4 MDMiLCBkZXYsIGN0eCwKKwkJCQkJCSZzNmU2M2oweDAzX2JsX29wcywgTlVMTCk7CisJaWYgKElT X0VSUihjdHgtPmJsX2RldikpIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIg YmFja2xpZ2h0IGRldmljZVxuIik7CisJCXJldHVybiBQVFJfRVJSKGN0eC0+YmxfZGV2KTsKKwl9 CisKKwljdHgtPmJsX2Rldi0+cHJvcHMubWF4X2JyaWdodG5lc3MgPSBNQVhfQlJJR0hUTkVTUzsK KwljdHgtPmJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVzcyA9IERFRkFVTFRfQlJJR0hUTkVTUzsKKwlj dHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047CisKKworCXJldCA9 IGRybV9wYW5lbF9hZGQoJmN0eC0+cGFuZWwpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIHVucmVn aXN0ZXJfYmFja2xpZ2h0OworCisJcmV0ID0gbWlwaV9kc2lfYXR0YWNoKGRzaSk7CisJaWYgKHJl dCA8IDApCisJCWdvdG8gcmVtb3ZlX3BhbmVsOworCisJcmV0dXJuIHJldDsKKworcmVtb3ZlX3Bh bmVsOgorCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOworCit1bnJlZ2lzdGVyX2JhY2ts aWdodDoKKwliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoY3R4LT5ibF9kZXYpOworCisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCBzNmU2M2oweDAzX3JlbW92ZShzdHJ1Y3QgbWlwaV9k c2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IHM2ZTYzajB4MDMgKmN0eCA9IG1pcGlfZHNpX2dl dF9kcnZkYXRhKGRzaSk7CisKKwltaXBpX2RzaV9kZXRhY2goZHNpKTsKKwlkcm1fcGFuZWxfcmVt b3ZlKCZjdHgtPnBhbmVsKTsKKworCWJhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihjdHgtPmJs X2Rldik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgczZlNjNqMHgwM19vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxz NmU2M2oweDAzIiB9LAorCXsgfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHM2ZTYzajB4 MDNfb2ZfbWF0Y2gpOworCitzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciBzNmU2M2oweDAz X2RyaXZlciA9IHsKKwkucHJvYmUgPSBzNmU2M2oweDAzX3Byb2JlLAorCS5yZW1vdmUgPSBzNmU2 M2oweDAzX3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJwYW5lbF9zNmU2M2oweDAz IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gczZlNjNqMHgwM19vZl9tYXRjaCwKKwl9LAorfTsKK21v ZHVsZV9taXBpX2RzaV9kcml2ZXIoczZlNjNqMHgwM19kcml2ZXIpOworCitNT0RVTEVfQVVUSE9S KCJJbmtpIERhZSA8aW5raS5kYWVAc2Ftc3VuZy5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04o Ik1JUEktRFNJIGJhc2VkIHM2ZThhYTAgQU1PTEVEIExDRCBQYW5lbCBEcml2ZXIiKTsKK01PRFVM RV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0gCjEuOS4xCgoKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=