From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hoegeun Kwon Subject: [PATCH v10 2/3] drm/panel: Add support for S6E3HA2 panel driver on TM2 board Date: Wed, 22 Feb 2017 10:09:52 +0900 Message-ID: References: <1487574582-15746-1-git-send-email-hoegeun.kwon@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-reply-to: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: thierry.reding@gmail.com, airlied@linux.ie, robh+dt@kernel.org, mark.rutland@arm.com, catalin.marinas@arm.com, will.deacon@arm.com, kgene@kernel.org, krzk@kernel.org Cc: devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, cw00.choi@samsung.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, javier@osg.samsung.com, jh80.chung@samsung.com, andi.shyti@samsung.com, Hoegeun Kwon , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGQgc3VwcG9ydCBmb3IgTUlQSS1EU0kgYmFzZWQgUzZFM0hBMiBBTU9MRUQg cGFuZWwKZHJpdmVyLiBUaGlzIHBhbmVsIGhhcyAxNDQweDI1NjAgcmVzb2x1dGlvbiBpbiA1Ljct aW5jaCBwaHlzaWNhbApwYW5lbCBpbiB0aGUgVE0yIGRldmljZS4KClNpZ25lZC1vZmYtYnk6IERv bmdod2EgTGVlIDxkaDA5LmxlZUBzYW1zdW5nLmNvbT4KU2lnbmVkLW9mZi1ieTogSHl1bmd3b24g SHdhbmcgPGh1bWFuLmh3YW5nQHNhbXN1bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBIb2VnZXVuIEt3 b24gPGhvZWdldW4ua3dvbkBzYW1zdW5nLmNvbT4KVGVzdGVkLWJ5OiBDaGFud29vIENob2kgPGN3 MDAuY2hvaUBzYW1zdW5nLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJ6ZWogSGFqZGEgPGEuaGFqZGFA c2Ftc3VuZy5jb20+Ci0tLQogIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAg ICAgICAgICB8ICAgNiArCiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAg ICAgICAgIHwgICAxICsKICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmUz aGEyLmMgfCA3MzkgCisrKysrKysrKysrKysrKysrKysrKysrKysrCiAgMyBmaWxlcyBjaGFuZ2Vk LCA3NDYgaW5zZXJ0aW9ucygrKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v cGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmUzaGEyLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCmluZGV4IDYy YWJhOTcuLmQ5MTNjODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmln CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCkBAIC01Miw2ICs1MiwxMiBAQCBj b25maWcgRFJNX1BBTkVMX1BBTkFTT05JQ19WVlgxMEYwMzROMDAKICAJICBXVVhHQSAoMTkyMHgx MjAwKSBOb3ZhdGVrIE5UMTM5Ny1iYXNlZCBEU0kgcGFuZWwgYXMgZm91bmQgaW4gc29tZQogIAkg IFhwZXJpYSBaMiB0YWJsZXRzCiAgK2NvbmZpZyBEUk1fUEFORUxfU0FNU1VOR19TNkUzSEEyCisJ dHJpc3RhdGUgIlNhbXN1bmcgUzZFM0hBMiBEU0kgdmlkZW8gbW9kZSBwYW5lbCIKKwlkZXBlbmRz IG9uIE9GCisJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKKwlzZWxlY3QgVklERU9NT0RFX0hFTFBF UlMKKwogIGNvbmZpZyBEUk1fUEFORUxfU0FNU1VOR19TNkU4QUEwCiAgCXRyaXN0YXRlICJTYW1z dW5nIFM2RThBQTAgRFNJIHZpZGVvIG1vZGUgcGFuZWwiCiAgCWRlcGVuZHMgb24gT0YKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9w YW5lbC9NYWtlZmlsZQppbmRleCBhNWM3ZWMwLi4xZDQ4M2IwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2Vm aWxlCkBAIC0zLDYgKzMsNyBAQCBvYmotJChDT05GSUdfRFJNX1BBTkVMX0pESV9MVDA3ME1FMDUw MDApICs9IApwYW5lbC1qZGktbHQwNzBtZTA1MDAwLm8KICBvYmotJChDT05GSUdfRFJNX1BBTkVM X0xHX0xHNDU3MykgKz0gcGFuZWwtbGctbGc0NTczLm8KICBvYmotJChDT05GSUdfRFJNX1BBTkVM X1BBTkFTT05JQ19WVlgxMEYwMzROMDApICs9IApwYW5lbC1wYW5hc29uaWMtdnZ4MTBmMDM0bjAw Lm8KICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfTEQ5MDQwKSArPSBwYW5lbC1zYW1z dW5nLWxkOTA0MC5vCitvYmotJChDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfUzZFM0hBMikgKz0g cGFuZWwtc2Ftc3VuZy1zNmUzaGEyLm8KICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdf UzZFOEFBMCkgKz0gcGFuZWwtc2Ftc3VuZy1zNmU4YWEwLm8KICBvYmotJChDT05GSUdfRFJNX1BB TkVMX1NIQVJQX0xRMTAxUjFTWDAxKSArPSBwYW5lbC1zaGFycC1scTEwMXIxc3gwMS5vCiAgb2Jq LSQoQ09ORklHX0RSTV9QQU5FTF9TSEFSUF9MUzA0M1QxTEUwMSkgKz0gcGFuZWwtc2hhcnAtbHMw NDN0MWxlMDEubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1 bmctczZlM2hhMi5jIApiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zYW1zdW5nLXM2ZTNo YTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2MwOGQ3Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1bmctczZlM2hhMi5j CkBAIC0wLDAgKzEsNzM5IEBACisvKgorICogTUlQSS1EU0kgYmFzZWQgczZlM2hhMiBBTU9MRUQg NS43IGluY2ggcGFuZWwgZHJpdmVyLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBTYW1zdW5n IEVsZWN0cm9uaWNzIENvLiwgTHRkLgorICogRG9uZ2h3YSBMZWUgPGRoMDkubGVlQHNhbXN1bmcu Y29tPgorICogSHl1bmd3b24gSHdhbmcgPGh1bWFuLmh3YW5nQHNhbXN1bmcuY29tPgorICogSG9l Z2V1biBLd29uIDxob2VnZXVuLmt3b25Ac2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlf ZHNpLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2JhY2ts aWdodC5oPgorI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxsaW51 eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KKworI2RlZmluZSBTNkUzSEEyX01JTl9CUklHSFRORVNT CQkwCisjZGVmaW5lIFM2RTNIQTJfTUFYX0JSSUdIVE5FU1MJCTEwMAorI2RlZmluZSBTNkUzSEEy X0RFRkFVTFRfQlJJR0hUTkVTUwk4MAorCisjZGVmaW5lIFM2RTNIQTJfTlVNX0dBTU1BX1NURVBT CQk0NgorI2RlZmluZSBTNkUzSEEyX0dBTU1BX0NNRF9DTlQJCTM1CisjZGVmaW5lIFM2RTNIQTJf VklOVF9TVEFUVVNfTUFYCQkxMAorCitzdGF0aWMgY29uc3QgdTggCmdhbW1hX3RibFtTNkUzSEEy X05VTV9HQU1NQV9TVEVQU11bUzZFM0hBMl9HQU1NQV9DTURfQ05UXSA9IHsKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODIsIDB4ODMs CisJICAweDg1LCAweDg4LCAweDhiLCAweDhiLCAweDg0LCAweDg4LCAweDgyLCAweDgyLCAweDg5 LCAweDg2LCAweDhjLAorCSAgMHg5NCwgMHg4NCwgMHhiMSwgMHhhZiwgMHg4ZSwgMHhjZiwgMHhh ZCwgMHhjOSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg1LCAweDg3LCAweDhiLCAweDhhLCAweDg0LCAweDg4LCAweDgyLCAweDgyLCAweDg5 LCAweDg2LCAweDhhLAorCSAgMHg5MywgMHg4NCwgMHhiMCwgMHhhZSwgMHg4ZSwgMHhjOSwgMHhh OCwgMHhjNSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDhhLCAweDhhLCAweDg0LCAweDg4LCAweDgxLCAweDg0LCAweDhh LCAweDg4LCAweDhhLAorCSAgMHg5MSwgMHg4NCwgMHhiMSwgMHhhZSwgMHg4YiwgMHhkNSwgMHhi MiwgMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDhhLCAweDhhLCAweDg0LCAweDg3LCAweDgxLCAweDg0LCAweDhh LCAweDg3LCAweDhhLAorCSAgMHg5MSwgMHg4NSwgMHhhZSwgMHhhYywgMHg4YSwgMHhjMywgMHhh MywgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODUsIDB4ODUs CisJICAweDg2LCAweDg1LCAweDg4LCAweDg5LCAweDg0LCAweDg5LCAweDgyLCAweDg0LCAweDg3 LCAweDg1LCAweDhiLAorCSAgMHg5MSwgMHg4OCwgMHhhZCwgMHhhYiwgMHg4YSwgMHhiNywgMHg5 YiwgMHhiNiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDg5LCAweDhhLCAweDg0LCAweDg5LCAweDgzLCAweDgzLCAweDg2 LCAweDg0LCAweDhiLAorCSAgMHg5MCwgMHg4NCwgMHhiMCwgMHhhZSwgMHg4YiwgMHhjZSwgMHhh ZCwgMHhjOCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg3LCAweDg5LCAweDhhLCAweDgzLCAweDg3LCAweDgyLCAweDg1LCAweDg4 LCAweDg3LCAweDg5LAorCSAgMHg4ZiwgMHg4NCwgMHhhYywgMHhhYSwgMHg4OSwgMHhiMSwgMHg5 OCwgMHhhZiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDg4LCAweDg5LCAweDg0LCAweDg4LCAweDgzLCAweDgyLCAweDg1 LCAweDg0LCAweDhjLAorCSAgMHg5MSwgMHg4NiwgMHhhYywgMHhhYSwgMHg4OSwgMHhjMiwgMHhh NSwgMHhiZCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg1LCAweDg3LCAweDg5LCAweDhhLCAweDgzLCAweDg3LCAweDgyLCAweDg1LCAweDg4 LCAweDg3LCAweDg4LAorCSAgMHg4YiwgMHg4MiwgMHhhZCwgMHhhYSwgMHg4YSwgMHhjMiwgMHhh NSwgMHhiZCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDg3LCAweDg5LCAweDg0LCAweDg4LCAweDgzLCAweDgyLCAweDg1 LCAweDg0LCAweDhhLAorCSAgMHg4ZSwgMHg4NCwgMHhhZSwgMHhhYywgMHg4OSwgMHhkYSwgMHhi NywgMHhkMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg1LCAweDg2LCAweDg3LCAweDg5LCAweDg0LCAweDg4LCAweDgzLCAweDgwLCAweDgz LCAweDgyLCAweDhiLAorCSAgMHg4ZSwgMHg4NSwgMHhhYywgMHhhYSwgMHg4OSwgMHhjOCwgMHhh YSwgMHhjMSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg1LCAweDg2LCAweDg3LCAweDg5LCAweDgxLCAweDg1LCAweDgxLCAweDg0LCAweDg2 LCAweDg0LCAweDhjLAorCSAgMHg4YywgMHg4NCwgMHhhOSwgMHhhOCwgMHg4NywgMHhhMywgMHg5 MiwgMHhhMSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg1LCAweDg2LCAweDg3LCAweDg5LCAweDg0LCAweDg2LCAweDgzLCAweDgwLCAweDgz LCAweDgxLCAweDhjLAorCSAgMHg4ZCwgMHg4NCwgMHhhYSwgMHhhYSwgMHg4OSwgMHhjZSwgMHhh ZiwgMHhjNSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg1LCAweDg2LCAweDg3LCAweDg5LCAweDgxLCAweDgzLCAweDgwLCAweDgzLCAweDg1 LCAweDg1LCAweDhjLAorCSAgMHg4YywgMHg4NCwgMHhhOCwgMHhhOCwgMHg4OCwgMHhiNSwgMHg5 ZiwgMHhiMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg2LCAweDg2LCAweDg3LCAweDg4LCAweDgxLCAweDgzLCAweDgwLCAweDgzLCAweDg1 LCAweDg1LCAweDhjLAorCSAgMHg4YiwgMHg4NCwgMHhhYiwgMHhhOCwgMHg4NiwgMHhkNCwgMHhi NCwgMHhjOSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg2LCAweDg2LCAweDg3LCAweDg4LCAweDgxLCAweDgzLCAweDgwLCAweDg0LCAweDg0 LCAweDg1LCAweDhiLAorCSAgMHg4YSwgMHg4MywgMHhhNiwgMHhhNSwgMHg4NCwgMHhiYiwgMHhh NCwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQs CisJICAweDg2LCAweDg1LCAweDg2LCAweDg2LCAweDgyLCAweDg1LCAweDgxLCAweDgyLCAweDgz LCAweDg0LCAweDhlLAorCSAgMHg4YiwgMHg4MywgMHhhNCwgMHhhMywgMHg4YSwgMHhhMSwgMHg5 MywgMHg5ZCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDg3LCAweDg3LCAweDgyLCAweDg1LCAweDgxLCAweDgyLCAweDgy LCAweDg0LCAweDhlLAorCSAgMHg4YiwgMHg4MywgMHhhNCwgMHhhMiwgMHg4NiwgMHhjMSwgMHhh OSwgMHhiNywgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDg3LCAweDg3LCAweDgyLCAweDg1LCAweDgxLCAweDgyLCAweDgy LCAweDg0LCAweDhkLAorCSAgMHg4OSwgMHg4MiwgMHhhMiwgMHhhMSwgMHg4NCwgMHhhNywgMHg5 OCwgMHhhMSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YjgsIDB4MDAsIDB4YzMsIDB4MDAsIDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDg3LCAweDg3LCAweDgyLCAweDg1LCAweDgxLCAweDgzLCAweDgz LCAweDg1LCAweDhjLAorCSAgMHg4NywgMHg3ZiwgMHhhMiwgMHg5ZCwgMHg4OCwgMHg4ZCwgMHg4 OCwgMHg4YiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YmIsIDB4MDAsIDB4YzUsIDB4MDAsIDB4YjQsIDB4ODcsIDB4ODYsIDB4ODYsIDB4ODQsIDB4ODMs CisJICAweDg2LCAweDg3LCAweDg3LCAweDg3LCAweDgwLCAweDgyLCAweDdmLCAweDg2LCAweDg2 LCAweDg4LCAweDhhLAorCSAgMHg4NCwgMHg3ZSwgMHg5ZCwgMHg5YywgMHg4MiwgMHg4ZCwgMHg4 OCwgMHg4YiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YmQsIDB4MDAsIDB4YzcsIDB4MDAsIDB4YjcsIDB4ODcsIDB4ODUsIDB4ODUsIDB4ODQsIDB4ODMs CisJICAweDg2LCAweDg2LCAweDg2LCAweDg4LCAweDgxLCAweDgzLCAweDgwLCAweDgzLCAweDg0 LCAweDg1LCAweDhhLAorCSAgMHg4NSwgMHg3ZSwgMHg5YywgMHg5YiwgMHg4NSwgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YzAsIDB4MDAsIDB4Y2EsIDB4MDAsIDB4YmIsIDB4ODcsIDB4ODYsIDB4ODUsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg2LCAweDg2LCAweDg4LCAweDgxLCAweDgzLCAweDgwLCAweDg0LCAweDg1 LCAweDg2LCAweDg5LAorCSAgMHg4MywgMHg3ZCwgMHg5YywgMHg5OSwgMHg4NywgMHg3YiwgMHg3 YiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YzQsIDB4MDAsIDB4Y2QsIDB4MDAsIDB4YmUsIDB4ODcsIDB4ODYsIDB4ODUsIDB4ODMsIDB4ODMs CisJICAweDg2LCAweDg1LCAweDg1LCAweDg3LCAweDgxLCAweDgyLCAweDgwLCAweDgyLCAweDgy LCAweDgzLCAweDhhLAorCSAgMHg4NSwgMHg3ZiwgMHg5ZiwgMHg5YiwgMHg4NiwgMHhiNCwgMHhh MSwgMHhhYywgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 YzcsIDB4MDAsIDB4ZDAsIDB4MDAsIDB4YzIsIDB4ODcsIDB4ODUsIDB4ODUsIDB4ODMsIDB4ODIs CisJICAweDg1LCAweDg1LCAweDg1LCAweDg2LCAweDgyLCAweDgzLCAweDgwLCAweDgyLCAweDgy LCAweDg0LCAweDg3LAorCSAgMHg4NiwgMHg4MCwgMHg5ZSwgMHg5YSwgMHg4NywgMHhhNywgMHg5 OCwgMHhhMSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 Y2EsIDB4MDAsIDB4ZDIsIDB4MDAsIDB4YzUsIDB4ODcsIDB4ODUsIDB4ODQsIDB4ODIsIDB4ODIs CisJICAweDg0LCAweDg1LCAweDg1LCAweDg2LCAweDgxLCAweDgyLCAweDdmLCAweDgyLCAweDgy LCAweDg0LCAweDg4LAorCSAgMHg4NiwgMHg4MSwgMHg5ZCwgMHg5OCwgMHg4NiwgMHg4ZCwgMHg4 OCwgMHg4YiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 Y2UsIDB4MDAsIDB4ZDYsIDB4MDAsIDB4Y2EsIDB4ODYsIDB4ODUsIDB4ODQsIDB4ODMsIDB4ODMs CisJICAweDg1LCAweDg0LCAweDg0LCAweDg1LCAweDgxLCAweDgyLCAweDgwLCAweDgxLCAweDgx LCAweDgyLCAweDg5LAorCSAgMHg4NiwgMHg4MSwgMHg5YywgMHg5NywgMHg4NiwgMHhhNywgMHg5 OCwgMHhhMSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZDEsIDB4MDAsIDB4ZDksIDB4MDAsIDB4Y2UsIDB4ODYsIDB4ODQsIDB4ODMsIDB4ODMsIDB4ODIs CisJICAweDg1LCAweDg1LCAweDg1LCAweDg2LCAweDgxLCAweDgzLCAweDgxLCAweDgyLCAweDgy LCAweDgzLCAweDg2LAorCSAgMHg4MywgMHg3ZiwgMHg5OSwgMHg5NSwgMHg4NiwgMHhiYiwgMHhh NCwgMHhiMywgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZDQsIDB4MDAsIDB4ZGIsIDB4MDAsIDB4ZDEsIDB4ODYsIDB4ODUsIDB4ODMsIDB4ODMsIDB4ODIs CisJICAweDg1LCAweDg0LCAweDg0LCAweDg1LCAweDgwLCAweDgzLCAweDgyLCAweDgwLCAweDgw LCAweDgxLCAweDg3LAorCSAgMHg4NCwgMHg4MSwgMHg5OCwgMHg5MywgMHg4NSwgMHhhZSwgMHg5 YywgMHhhOCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZDgsIDB4MDAsIDB4ZGUsIDB4MDAsIDB4ZDYsIDB4ODYsIDB4ODQsIDB4ODMsIDB4ODEsIDB4ODEs CisJICAweDgzLCAweDg1LCAweDg1LCAweDg1LCAweDgyLCAweDgzLCAweDgxLCAweDgxLCAweDgx LCAweDgzLCAweDg2LAorCSAgMHg4NCwgMHg4MCwgMHg5OCwgMHg5MSwgMHg4NSwgMHg3YiwgMHg3 YiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZGMsIDB4MDAsIDB4ZTIsIDB4MDAsIDB4ZGEsIDB4ODUsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODIs CisJICAweDg0LCAweDg0LCAweDg0LCAweDg1LCAweDgxLCAweDgyLCAweDgyLCAweDgwLCAweDgw LCAweDgxLCAweDgzLAorCSAgMHg4MiwgMHg3ZiwgMHg5OSwgMHg5MywgMHg4NiwgMHg5NCwgMHg4 YiwgMHg5MiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZGYsIDB4MDAsIDB4ZTUsIDB4MDAsIDB4ZGUsIDB4ODUsIDB4ODQsIDB4ODIsIDB4ODIsIDB4ODIs CisJICAweDg0LCAweDgzLCAweDgzLCAweDg0LCAweDgxLCAweDgxLCAweDgwLCAweDgzLCAweDgy LCAweDg0LCAweDgyLAorCSAgMHg4MSwgMHg3ZiwgMHg5OSwgMHg5MiwgMHg4NiwgMHg3YiwgMHg3 YiwgMHg3YywgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZTQsIDB4MDAsIDB4ZTksIDB4MDAsIDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEs CisJICAweDgyLCAweDgzLCAweDgzLCAweDg0LCAweDgwLCAweDgxLCAweDgwLCAweDgzLCAweDgz LCAweDg0LCAweDgwLAorCSAgMHg4MSwgMHg3YywgMHg5OSwgMHg5MiwgMHg4NywgMHhhMSwgMHg5 MywgMHg5ZCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZTQsIDB4MDAsIDB4ZTksIDB4MDAsIDB4ZTMsIDB4ODUsIDB4ODQsIDB4ODMsIDB4ODEsIDB4ODEs CisJICAweDgyLCAweDgyLCAweDgyLCAweDgzLCAweDgwLCAweDgxLCAweDgwLCAweDgxLCAweDgw LCAweDgyLCAweDgzLAorCSAgMHg4MiwgMHg4MCwgMHg5MSwgMHg4ZCwgMHg4MywgMHg5YSwgMHg5 MCwgMHg5NiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZTQsIDB4MDAsIDB4ZTksIDB4MDAsIDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEs CisJICAweDgyLCAweDgzLCAweDgzLCAweDg0LCAweDgwLCAweDgxLCAweDgwLCAweDgxLCAweDgw LCAweDgyLCAweDgzLAorCSAgMHg4MSwgMHg3ZiwgMHg5MSwgMHg4YywgMHg4MiwgMHg4ZCwgMHg4 OCwgMHg4YiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZTQsIDB4MDAsIDB4ZTksIDB4MDAsIDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEs CisJICAweDgyLCAweDgzLCAweDgzLCAweDgzLCAweDgyLCAweDgyLCAweDgxLCAweDgxLCAweDgw LCAweDgyLCAweDgyLAorCSAgMHg4MiwgMHg3ZiwgMHg5NCwgMHg4OSwgMHg4NCwgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZTQsIDB4MDAsIDB4ZTksIDB4MDAsIDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEs CisJICAweDgyLCAweDgzLCAweDgzLCAweDgzLCAweDgyLCAweDgyLCAweDgxLCAweDgxLCAweDgw LCAweDgyLCAweDgzLAorCSAgMHg4MiwgMHg3ZiwgMHg5MSwgMHg4NSwgMHg4MSwgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZTQsIDB4MDAsIDB4ZTksIDB4MDAsIDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEs CisJICAweDgyLCAweDgzLCAweDgzLCAweDgzLCAweDgwLCAweDgwLCAweDdmLCAweDgzLCAweDgy LCAweDg0LCAweDgzLAorCSAgMHg4MiwgMHg3ZiwgMHg5MCwgMHg4NCwgMHg4MSwgMHg5YSwgMHg5 MCwgMHg5NiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZTQsIDB4MDAsIDB4ZTksIDB4MDAsIDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODAsIDB4ODAs CisJICAweDgyLCAweDgzLCAweDgzLCAweDgzLCAweDgwLCAweDgwLCAweDdmLCAweDgwLCAweDgw LCAweDgxLCAweDgxLAorCSAgMHg4MiwgMHg4MywgMHg3ZSwgMHg4MCwgMHg3YywgMHhhNCwgMHg5 NywgMHg5ZiwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZTksIDB4MDAsIDB4ZWMsIDB4MDAsIDB4ZTgsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEs CisJICAweDgyLCAweDgyLCAweDgyLCAweDgzLCAweDdmLCAweDdmLCAweDdmLCAweDgxLCAweDgw LCAweDgyLCAweDgzLAorCSAgMHg4MywgMHg4NCwgMHg3OSwgMHg3YywgMHg3OSwgMHhiMSwgMHhh MCwgMHhhYSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZWQsIDB4MDAsIDB4ZjAsIDB4MDAsIDB4ZWMsIDB4ODMsIDB4ODMsIDB4ODIsIDB4ODAsIDB4ODAs CisJICAweDgxLCAweDgyLCAweDgyLCAweDgyLCAweDdmLCAweDdmLCAweDdlLCAweDgxLCAweDgx LCAweDgyLCAweDgwLAorCSAgMHg4MSwgMHg4MSwgMHg4NCwgMHg4NCwgMHg4MywgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZjEsIDB4MDAsIDB4ZjQsIDB4MDAsIDB4ZjEsIDB4ODMsIDB4ODIsIDB4ODIsIDB4ODAsIDB4ODAs CisJICAweDgxLCAweDgyLCAweDgyLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgw LCAweDgxLCAweDdkLAorCSAgMHg3ZSwgMHg3ZiwgMHg4NCwgMHg4NCwgMHg4MywgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZjYsIDB4MDAsIDB4ZjcsIDB4MDAsIDB4ZjUsIDB4ODIsIDB4ODIsIDB4ODEsIDB4ODAsIDB4ODAs CisJICAweDgwLCAweDgyLCAweDgyLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDdmLCAweDdm LCAweDdmLCAweDgyLAorCSAgMHg4MiwgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4 ZmEsIDB4MDAsIDB4ZmIsIDB4MDAsIDB4ZmEsIDB4ODEsIDB4ODEsIDB4ODEsIDB4ODAsIDB4ODAs CisJICAweDgwLCAweDgyLCAweDgyLCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgw LCAweDgwLCAweDgwLAorCSAgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDEsIDB4 MDAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODAsIDB4ODAsIDB4ODAsIDB4ODAs CisJICAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgw LCAweDgwLCAweDgwLAorCSAgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDEsIDB4 MDAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4ODAsIDB4ODAsIDB4ODAsIDB4ODAsIDB4ODAs CisJICAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgw LCAweDgwLCAweDgwLAorCSAgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4 MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkgIDB4MDAsIDB4MDAgfQorfTsKKwordW5zaWdu ZWQgY2hhciB2aW50X3RhYmxlW1M2RTNIQTJfVklOVF9TVEFUVVNfTUFYXSA9IHsKKwkweDE4LCAw eDE5LCAweDFhLCAweDFiLCAweDFjLAorCTB4MWQsIDB4MWUsIDB4MWYsIDB4MjAsIDB4MjEKK307 CisKK3N0cnVjdCBzNmUzaGEyIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRybV9w YW5lbCBwYW5lbDsKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2OworCisJc3RydWN0 IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbMl07CisJc3RydWN0IGdwaW9fZGVzYyAqcmVz ZXRfZ3BpbzsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICplbmFibGVfZ3BpbzsKK307CisKK3N0YXRpYyBp bnQgczZlM2hhMl9kY3Nfd3JpdGUoc3RydWN0IHM2ZTNoYTIgKmN0eCwgY29uc3Qgdm9pZCAqZGF0 YSwgCnNpemVfdCBsZW4pCit7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlw aV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKKworCXJldHVybiBtaXBpX2RzaV9kY3Nfd3JpdGVfYnVm ZmVyKGRzaSwgZGF0YSwgbGVuKTsKK30KKworI2RlZmluZSBzNmUzaGEyX2Rjc193cml0ZV9zZXFf c3RhdGljKGN0eCwgc2VxLi4uKSBkbyB7CVwKKwlzdGF0aWMgY29uc3QgdTggZFtdID0geyBzZXEg fTsJCQlcCisJaW50IHJldDsJCQkJCVwKKwlyZXQgPSBzNmUzaGEyX2Rjc193cml0ZShjdHgsIGQs IEFSUkFZX1NJWkUoZCkpOwlcCisJaWYgKHJldCA8IDApCQkJCQlcCisJCXJldHVybiByZXQ7CQkJ CVwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgczZlM2hhMl9jYWxsX3dyaXRlX2Z1bmMocmV0LCBm dW5jKSBkbyB7CVwKKwlyZXQgPSAoZnVuYyk7CQkJCVwKKwlpZiAocmV0IDwgMCkJCQkJXAorCQly ZXR1cm4gcmV0OwkJCVwKK30gd2hpbGUgKDApCisKK3N0YXRpYyBpbnQgczZlM2hhMl90ZXN0X2tl eV9vbl9mMChzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNzX3dyaXRlX3NlcV9z dGF0aWMoY3R4LCAweGYwLCAweDVhLCAweDVhKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBzNmUzaGEyX3Rlc3Rfa2V5X29mZl9mMChzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNo YTJfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweGYwLCAweGE1LCAweGE1KTsKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBzNmUzaGEyX3Rlc3Rfa2V5X29uX2ZjKHN0cnVjdCBzNmUzaGEy ICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4ZmMsIDB4NWEs IDB4NWEpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHM2ZTNoYTJfdGVzdF9rZXlfb2Zm X2ZjKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRp YyhjdHgsIDB4ZmMsIDB4YTUsIDB4YTUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHM2 ZTNoYTJfc2luZ2xlX2RzaV9zZXQoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rj c193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhmMiwgMHg2Nyk7CisJczZlM2hhMl9kY3Nfd3JpdGVf c2VxX3N0YXRpYyhjdHgsIDB4ZjksIDB4MDkpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHM2ZTNoYTJfZnJlcV9jYWxpYnJhdGlvbihzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNo YTJfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweGZkLCAweDFjKTsKKwlzNmUzaGEyX2Rjc193 cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhmZSwgMHgyMCwgMHgzOSk7CisJczZlM2hhMl9kY3Nfd3Jp dGVfc2VxX3N0YXRpYyhjdHgsIDB4ZmUsIDB4YTApOworCXM2ZTNoYTJfZGNzX3dyaXRlX3NlcV9z dGF0aWMoY3R4LCAweGZlLCAweDIwKTsKKwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0 eCwgMHhjZSwgMHgwMywgMHgzYiwgMHgxMiwgMHg2MiwgMHg0MCwKKwkJCQkweDgwLCAweGMwLCAw eDI4LCAweDI4LCAweDI4LCAweDI4LCAweDM5LCAweGM1KTsKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBzNmUzaGEyX2Fvcl9jb250cm9sKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZl M2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4YjIsIDB4MDMsIDB4MTApOworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IHM2ZTNoYTJfY2Fwc19lbHZzc19zZXQoc3RydWN0IHM2ZTNo YTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhiNiwgMHg5 YywgMHgwYSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9hY2xfb2ZmKHN0 cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgs IDB4NTUsIDB4MDApOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHM2ZTNoYTJfYWNsX29m Zl9vcHIoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3Rh dGljKGN0eCwgMHhiNSwgMHg0MCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hh Ml90ZXN0X2dsb2JhbChzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNzX3dyaXRl X3NlcV9zdGF0aWMoY3R4LCAweGIwLCAweDA3KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBzNmUzaGEyX3Rlc3Qoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rjc193cml0 ZV9zZXFfc3RhdGljKGN0eCwgMHhiOCwgMHgxOSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgczZlM2hhMl90b3VjaF9oc3luY19vbjEoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUz aGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhiZCwgMHgzMywgMHgxMSwgMHgwMiwKKwkJ CQkJMHgxNiwgMHgwMiwgMHgxNik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hh Ml9wZW50aWxlX2NvbnRyb2woc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rjc193 cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhjMCwgMHgwMCwgMHgwMCwgMHhkOCwgMHhkOCk7CisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9wb2NfZ2xvYmFsKHN0cnVjdCBzNmUzaGEy ICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4YjAsIDB4MjAp OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHM2ZTNoYTJfcG9jX3NldHRpbmcoc3RydWN0 IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhm ZSwgMHgwOCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9wY2Rfc2V0X29m ZihzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNzX3dyaXRlX3NlcV9zdGF0aWMo Y3R4LCAweGNjLCAweDQwLCAweDUxKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzNmUz aGEyX2Vycl9mZ19zZXQoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rjc193cml0 ZV9zZXFfc3RhdGljKGN0eCwgMHhlZCwgMHg0NCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgczZlM2hhMl9oYm1fb2ZmKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9kY3Nf d3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4NTMsIDB4MDApOworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IHM2ZTNoYTJfdGVfc3RhcnRfc2V0dGluZyhzdHJ1Y3QgczZlM2hhMiAqY3R4KQorewor CXM2ZTNoYTJfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweGI5LCAweDEwLCAweDA5LCAweGZm LCAweDAwLCAweDA5KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzNmUzaGEyX2dhbW1h X3VwZGF0ZShzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNzX3dyaXRlX3NlcV9z dGF0aWMoY3R4LCAweGY3LCAweDAzKTsKKwluZGVsYXkoMTAwKTsgLyogbmVlZCBmb3IgMTAwbnMg ZGVsYXkgKi8KKwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhmNywgMHgwMCk7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9nZXRfYnJpZ2h0bmVzcyhzdHJ1 Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2KQoreworCXJldHVybiBibF9kZXYtPnByb3BzLmJy aWdodG5lc3M7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9zZXRfdmludChzdHJ1Y3QgczZlM2hh MiAqY3R4KQoreworCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXYgPSBjdHgtPmJsX2Rl djsKKwl1bnNpZ25lZCBpbnQgYnJpZ2h0bmVzcyA9IGJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVzczsK Kwl1bnNpZ25lZCBjaGFyIGRhdGFbXSA9IHsgMHhmNCwgMHg4YiwKKwkJCXZpbnRfdGFibGVbYnJp Z2h0bmVzcyAqIChTNkUzSEEyX1ZJTlRfU1RBVFVTX01BWCAtIDEpIC8KKwkJCVM2RTNIQTJfTUFY X0JSSUdIVE5FU1NdIH07CisKKwlyZXR1cm4gczZlM2hhMl9kY3Nfd3JpdGUoY3R4LCBkYXRhLCBB UlJBWV9TSVpFKGRhdGEpKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBzNmUzaGEyX2dldF9i cmlnaHRuZXNzX2luZGV4KHVuc2lnbmVkIGludCBicmlnaHRuZXNzKQoreworCXJldHVybiAoYnJp Z2h0bmVzcyAqIChTNkUzSEEyX05VTV9HQU1NQV9TVEVQUyAtIDEpKSAvCisJCVM2RTNIQTJfTUFY X0JSSUdIVE5FU1M7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl91cGRhdGVfZ2FtbWEoc3RydWN0 IHM2ZTNoYTIgKmN0eCwgdW5zaWduZWQgaW50IApicmlnaHRuZXNzKQoreworCXN0cnVjdCBiYWNr bGlnaHRfZGV2aWNlICpibF9kZXYgPSBjdHgtPmJsX2RldjsKKwl1bnNpZ25lZCBpbnQgaW5kZXgg PSBzNmUzaGEyX2dldF9icmlnaHRuZXNzX2luZGV4KGJyaWdodG5lc3MpOworCXU4IGRhdGFbUzZF M0hBMl9HQU1NQV9DTURfQ05UICsgMV0gPSB7IDB4Y2EsIH07CisJaW50IHJldDsKKworCW1lbWNw eShkYXRhICsgMSwgZ2FtbWFfdGJsICsgaW5kZXgsIFM2RTNIQTJfR0FNTUFfQ01EX0NOVCk7CisJ czZlM2hhMl9jYWxsX3dyaXRlX2Z1bmMocmV0LAorCQkJCXM2ZTNoYTJfZGNzX3dyaXRlKGN0eCwg ZGF0YSwgQVJSQVlfU0laRShkYXRhKSkpOworCisJczZlM2hhMl9jYWxsX3dyaXRlX2Z1bmMocmV0 LCBzNmUzaGEyX2dhbW1hX3VwZGF0ZShjdHgpKTsKKwlibF9kZXYtPnByb3BzLmJyaWdodG5lc3Mg PSBicmlnaHRuZXNzOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9zZXRf YnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2KQoreworCXN0cnVjdCBz NmUzaGEyICpjdHggPSBibF9nZXRfZGF0YShibF9kZXYpOworCXVuc2lnbmVkIGludCBicmlnaHRu ZXNzID0gYmxfZGV2LT5wcm9wcy5icmlnaHRuZXNzOworCWludCByZXQ7CisKKwlpZiAoYnJpZ2h0 bmVzcyA8IFM2RTNIQTJfTUlOX0JSSUdIVE5FU1MgfHwKKwkJYnJpZ2h0bmVzcyA+IGJsX2Rldi0+ cHJvcHMubWF4X2JyaWdodG5lc3MpIHsKKwkJZGV2X2VycihjdHgtPmRldiwgIkludmFsaWQgYnJp Z2h0bmVzczogJXVcbiIsIGJyaWdodG5lc3MpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlp ZiAoYmxfZGV2LT5wcm9wcy5wb3dlciA+IEZCX0JMQU5LX05PUk1BTCkKKwkJcmV0dXJuIC1FUEVS TTsKKworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJldCwgczZlM2hhMl90ZXN0X2tleV9vbl9m MChjdHgpKTsKKwlzNmUzaGEyX2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfdXBkYXRlX2dh bW1hKGN0eCwgYnJpZ2h0bmVzcykpOworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJldCwgczZl M2hhMl9hb3JfY29udHJvbChjdHgpKTsKKwlzNmUzaGEyX2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2 ZTNoYTJfc2V0X3ZpbnQoY3R4KSk7CisJczZlM2hhMl9jYWxsX3dyaXRlX2Z1bmMocmV0LCBzNmUz aGEyX3Rlc3Rfa2V5X29mZl9mMChjdHgpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGJhY2tsaWdodF9vcHMgczZlM2hhMl9ibF9vcHMgPSB7CisJLmdldF9icmlnaHRu ZXNzID0gczZlM2hhMl9nZXRfYnJpZ2h0bmVzcywKKwkudXBkYXRlX3N0YXR1cyA9IHM2ZTNoYTJf c2V0X2JyaWdodG5lc3MsCit9OworCitzdGF0aWMgaW50IHM2ZTNoYTJfcGFuZWxfaW5pdChzdHJ1 Y3QgczZlM2hhMiAqY3R4KQoreworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21p cGlfZHNpX2RldmljZShjdHgtPmRldik7CisJaW50IHJldDsKKworCXM2ZTNoYTJfY2FsbF93cml0 ZV9mdW5jKHJldCwgbWlwaV9kc2lfZGNzX2V4aXRfc2xlZXBfbW9kZShkc2kpKTsKKwl1c2xlZXBf cmFuZ2UoNTAwMCwgNjAwMCk7CisKKwlzNmUzaGEyX2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNo YTJfdGVzdF9rZXlfb25fZjAoY3R4KSk7CisJczZlM2hhMl9jYWxsX3dyaXRlX2Z1bmMocmV0LCBz NmUzaGEyX3NpbmdsZV9kc2lfc2V0KGN0eCkpOworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJl dCwgczZlM2hhMl90ZXN0X2tleV9vbl9mYyhjdHgpKTsKKwlzNmUzaGEyX2NhbGxfd3JpdGVfZnVu YyhyZXQsIHM2ZTNoYTJfZnJlcV9jYWxpYnJhdGlvbihjdHgpKTsKKwlzNmUzaGEyX2NhbGxfd3Jp dGVfZnVuYyhyZXQsIHM2ZTNoYTJfdGVzdF9rZXlfb2ZmX2ZjKGN0eCkpOworCXM2ZTNoYTJfY2Fs bF93cml0ZV9mdW5jKHJldCwgczZlM2hhMl90ZXN0X2tleV9vZmZfZjAoY3R4KSk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBzNmUzaGEyX3Bvd2VyX29mZihzdHJ1Y3QgczZlM2hhMiAq Y3R4KQoreworCXJldHVybiByZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoY3R4LT5z dXBwbGllcyksIGN0eC0+c3VwcGxpZXMpOworfQorCitzdGF0aWMgaW50IHM2ZTNoYTJfZGlzYWJs ZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgczZlM2hhMiAqY3R4ID0gY29u dGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgczZlM2hhMiwgcGFuZWwpOworCXN0cnVjdCBtaXBpX2Rz aV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRldik7CisJaW50IHJldDsK KworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJldCwgbWlwaV9kc2lfZGNzX2VudGVyX3NsZWVw X21vZGUoZHNpKSk7CisJczZlM2hhMl9jYWxsX3dyaXRlX2Z1bmMocmV0LCBtaXBpX2RzaV9kY3Nf c2V0X2Rpc3BsYXlfb2ZmKGRzaSkpOworCisJbXNsZWVwKDQwKTsKKwljdHgtPmJsX2Rldi0+cHJv cHMucG93ZXIgPSBGQl9CTEFOS19OT1JNQUw7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBzNmUzaGEyX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3Qg czZlM2hhMiAqY3R4ID0gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgczZlM2hhMiwgcGFuZWwp OworCisJcmV0dXJuIHM2ZTNoYTJfcG93ZXJfb2ZmKGN0eCk7Cit9CisKK3N0YXRpYyBpbnQgczZl M2hhMl9wb3dlcl9vbihzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCWludCByZXQ7CisKKwlyZXQg PSByZWd1bGF0b3JfYnVsa19lbmFibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5z dXBwbGllcyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwltc2xlZXAoMTIwKTsK KworCWdwaW9kX3NldF92YWx1ZShjdHgtPmVuYWJsZV9ncGlvLCAwKTsKKwl1c2xlZXBfcmFuZ2Uo NTAwMCwgNjAwMCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+ZW5hYmxlX2dwaW8sIDEpOworCisJ Z3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMSk7CisJdXNsZWVwX3JhbmdlKDUwMDAs IDYwMDApOworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDApOworCXVzbGVlcF9y YW5nZSg1MDAwLCA2MDAwKTsKKworCXJldHVybiAwOworfQorc3RhdGljIGludCBzNmUzaGEyX3By ZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHM2ZTNoYTIgKmN0eCA9 IGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHM2ZTNoYTIsIHBhbmVsKTsKKwlpbnQgcmV0Owor CisJcmV0ID0gczZlM2hhMl9wb3dlcl9vbihjdHgpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4g cmV0OworCisJcmV0ID0gczZlM2hhMl9wYW5lbF9pbml0KGN0eCk7CisJaWYgKHJldCA8IDApCisJ CWdvdG8gZXJyOworCisJY3R4LT5ibF9kZXYtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfTk9STUFM OworCisJcmV0dXJuIDA7CisKK2VycjoKKwlzNmUzaGEyX3Bvd2VyX29mZihjdHgpOworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9lbmFibGUoc3RydWN0IGRybV9wYW5lbCAq cGFuZWwpCit7CisJc3RydWN0IHM2ZTNoYTIgKmN0eCA9IGNvbnRhaW5lcl9vZihwYW5lbCwgc3Ry dWN0IHM2ZTNoYTIsIHBhbmVsKTsKKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19t aXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOworCWludCByZXQ7CisKKwkvKiBjb21tb24gc2V0dGlu ZyAqLworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJldCwKKwkJbWlwaV9kc2lfZGNzX3NldF90 ZWFyX29uKGRzaSwgTUlQSV9EU0lfRENTX1RFQVJfTU9ERV9WQkxBTkspKTsKKworCXM2ZTNoYTJf Y2FsbF93cml0ZV9mdW5jKHJldCwgczZlM2hhMl90ZXN0X2tleV9vbl9mMChjdHgpKTsKKwlzNmUz aGEyX2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfdGVzdF9rZXlfb25fZmMoY3R4KSk7CisJ czZlM2hhMl9jYWxsX3dyaXRlX2Z1bmMocmV0LCBzNmUzaGEyX3RvdWNoX2hzeW5jX29uMShjdHgp KTsKKwlzNmUzaGEyX2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfcGVudGlsZV9jb250cm9s KGN0eCkpOworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJldCwgczZlM2hhMl9wb2NfZ2xvYmFs KGN0eCkpOworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJldCwgczZlM2hhMl9wb2Nfc2V0dGlu ZyhjdHgpKTsKKwlzNmUzaGEyX2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfdGVzdF9rZXlf b2ZmX2ZjKGN0eCkpOworCisJLyogcGNkIHNldHRpbmcgb2ZmIGZvciBUQiAqLworCXM2ZTNoYTJf Y2FsbF93cml0ZV9mdW5jKHJldCwgczZlM2hhMl9wY2Rfc2V0X29mZihjdHgpKTsKKwlzNmUzaGEy X2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfZXJyX2ZnX3NldChjdHgpKTsKKwlzNmUzaGEy X2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfdGVfc3RhcnRfc2V0dGluZyhjdHgpKTsKKwor CS8qIGJyaWdodG5lc3Mgc2V0dGluZyAqLworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJldCwg czZlM2hhMl9zZXRfYnJpZ2h0bmVzcyhjdHgtPmJsX2RldikpOworCXM2ZTNoYTJfY2FsbF93cml0 ZV9mdW5jKHJldCwgczZlM2hhMl9hb3JfY29udHJvbChjdHgpKTsKKwlzNmUzaGEyX2NhbGxfd3Jp dGVfZnVuYyhyZXQsIHM2ZTNoYTJfY2Fwc19lbHZzc19zZXQoY3R4KSk7CisJczZlM2hhMl9jYWxs X3dyaXRlX2Z1bmMocmV0LCBzNmUzaGEyX2dhbW1hX3VwZGF0ZShjdHgpKTsKKwlzNmUzaGEyX2Nh bGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfYWNsX29mZihjdHgpKTsKKwlzNmUzaGEyX2NhbGxf d3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfYWNsX29mZl9vcHIoY3R4KSk7CisJczZlM2hhMl9jYWxs X3dyaXRlX2Z1bmMocmV0LCBzNmUzaGEyX2hibV9vZmYoY3R4KSk7CisKKwkvKiBlbHZzcyB0ZW1w IGNvbXBlbnNhdGlvbiAqLworCXM2ZTNoYTJfY2FsbF93cml0ZV9mdW5jKHJldCwgczZlM2hhMl90 ZXN0X2dsb2JhbChjdHgpKTsKKwlzNmUzaGEyX2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJf dGVzdChjdHgpKTsKKwlzNmUzaGEyX2NhbGxfd3JpdGVfZnVuYyhyZXQsIHM2ZTNoYTJfdGVzdF9r ZXlfb2ZmX2YwKGN0eCkpOworCisJczZlM2hhMl9jYWxsX3dyaXRlX2Z1bmMocmV0LCBtaXBpX2Rz aV9kY3Nfc2V0X2Rpc3BsYXlfb24oZHNpKSk7CisJY3R4LT5ibF9kZXYtPnByb3BzLnBvd2VyID0g RkJfQkxBTktfVU5CTEFOSzsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgZGVmYXVsdF9tb2RlID0geworCS5jbG9jayA9IDIyMjM3MiwKKwku aGRpc3BsYXkgPSAxNDQwLAorCS5oc3luY19zdGFydCA9IDE0NDAgKyAxLAorCS5oc3luY19lbmQg PSAxNDQwICsgMSArIDEsCisJLmh0b3RhbCA9IDE0NDAgKyAxICsgMSArIDEsCisJLnZkaXNwbGF5 ID0gMjU2MCwKKwkudnN5bmNfc3RhcnQgPSAyNTYwICsgMSwKKwkudnN5bmNfZW5kID0gMjU2MCAr IDEgKyAxLAorCS52dG90YWwgPSAyNTYwICsgMSArIDEgKyAxNSwKKwkudnJlZnJlc2ggPSA2MCwK KwkuZmxhZ3MgPSAwLAorfTsKKworc3RhdGljIGludCBzNmUzaGEyX2dldF9tb2RlcyhzdHJ1Y3Qg ZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g cGFuZWwtPmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKKworCW1v ZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUocGFuZWwtPmRybSwgJmRlZmF1bHRfbW9kZSk7CisJaWYg KCFtb2RlKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1eEAldVxuIiwK KwkJCQlkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRlZmF1bHRfbW9kZS52ZGlzcGxheSwKKwkJCQlk ZWZhdWx0X21vZGUudnJlZnJlc2gpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlkcm1fbW9k ZV9zZXRfbmFtZShtb2RlKTsKKworCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8 IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEOworCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9y LCBtb2RlKTsKKworCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gNzE7CisJY29u bmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gMTI1OworCisJcmV0dXJuIDE7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIHM2ZTNoYTJfZHJtX2Z1bmNzID0g eworCS5kaXNhYmxlID0gczZlM2hhMl9kaXNhYmxlLAorCS51bnByZXBhcmUgPSBzNmUzaGEyX3Vu cHJlcGFyZSwKKwkucHJlcGFyZSA9IHM2ZTNoYTJfcHJlcGFyZSwKKwkuZW5hYmxlID0gczZlM2hh Ml9lbmFibGUsCisJLmdldF9tb2RlcyA9IHM2ZTNoYTJfZ2V0X21vZGVzLAorfTsKKworc3RhdGlj IGludCBzNmUzaGEyX3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmZHNpLT5kZXY7CisJc3RydWN0IHM2ZTNoYTIgKmN0eDsKKwlpbnQg cmV0OworCisJY3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltaXBpX2RzaV9zZXRfZHJ2ZGF0 YShkc2ksIGN0eCk7CisKKwljdHgtPmRldiA9IGRldjsKKworCWRzaS0+bGFuZXMgPSA0OworCWRz aS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKKwlkc2ktPm1vZGVfZmxhZ3MgPSBNSVBJ X0RTSV9DTE9DS19OT05fQ09OVElOVU9VUzsKKworCWN0eC0+c3VwcGxpZXNbMF0uc3VwcGx5ID0g InZkZDMiOworCWN0eC0+c3VwcGxpZXNbMV0uc3VwcGx5ID0gInZjaSI7CisKKwlyZXQgPSBkZXZt X3JlZ3VsYXRvcl9idWxrX2dldChkZXYsIEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksCisJCQkJ ICAgICAgY3R4LT5zdXBwbGllcyk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJm YWlsZWQgdG8gZ2V0IHJlZ3VsYXRvcnM6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0K KworCWN0eC0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0Rf T1VUX0xPVyk7CisJaWYgKElTX0VSUihjdHgtPnJlc2V0X2dwaW8pKSB7CisJCWRldl9lcnIoZGV2 LCAiY2Fubm90IGdldCByZXNldC1ncGlvcyAlbGRcbiIsCisJCQlQVFJfRVJSKGN0eC0+cmVzZXRf Z3BpbykpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPnJlc2V0X2dwaW8pOworCX0KKworCWN0eC0+ ZW5hYmxlX2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJlbmFibGUiLCBHUElPRF9PVVRfSElH SCk7CisJaWYgKElTX0VSUihjdHgtPmVuYWJsZV9ncGlvKSkgeworCQlkZXZfZXJyKGRldiwgImNh bm5vdCBnZXQgZW5hYmxlLWdwaW9zICVsZFxuIiwKKwkJCVBUUl9FUlIoY3R4LT5lbmFibGVfZ3Bp bykpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPmVuYWJsZV9ncGlvKTsKKwl9CisKKwljdHgtPmJs X2RldiA9IGJhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoInM2ZTNoYTIiLCBkZXYsIGN0eCwKKwkJ CQkJCSZzNmUzaGEyX2JsX29wcywgTlVMTCk7CisJaWYgKElTX0VSUihjdHgtPmJsX2RldikpIHsK KwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgYmFja2xpZ2h0IGRldmljZVxuIik7 CisJCXJldHVybiBQVFJfRVJSKGN0eC0+YmxfZGV2KTsKKwl9CisKKwljdHgtPmJsX2Rldi0+cHJv cHMubWF4X2JyaWdodG5lc3MgPSBTNkUzSEEyX01BWF9CUklHSFRORVNTOworCWN0eC0+YmxfZGV2 LT5wcm9wcy5icmlnaHRuZXNzID0gUzZFM0hBMl9ERUZBVUxUX0JSSUdIVE5FU1M7CisJY3R4LT5i bF9kZXYtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfUE9XRVJET1dOOworCisJZHJtX3BhbmVsX2lu aXQoJmN0eC0+cGFuZWwpOworCWN0eC0+cGFuZWwuZGV2ID0gZGV2OworCWN0eC0+cGFuZWwuZnVu Y3MgPSAmczZlM2hhMl9kcm1fZnVuY3M7CisKKwlyZXQgPSBkcm1fcGFuZWxfYWRkKCZjdHgtPnBh bmVsKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byB1bnJlZ2lzdGVyX2JhY2tsaWdodDsKKworCXJl dCA9IG1pcGlfZHNpX2F0dGFjaChkc2kpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIHJlbW92ZV9w YW5lbDsKKworCXJldHVybiByZXQ7CisKK3JlbW92ZV9wYW5lbDoKKwlkcm1fcGFuZWxfcmVtb3Zl KCZjdHgtPnBhbmVsKTsKKwordW5yZWdpc3Rlcl9iYWNrbGlnaHQ6CisJYmFja2xpZ2h0X2Rldmlj ZV91bnJlZ2lzdGVyKGN0eC0+YmxfZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQgczZlM2hhMl9yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0cnVj dCBzNmUzaGEyICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOworCisJbWlwaV9kc2lf ZGV0YWNoKGRzaSk7CisJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7CisJYmFja2xpZ2h0 X2RldmljZV91bnJlZ2lzdGVyKGN0eC0+YmxfZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzNmUzaGEyX29mX21hdGNoW10gPSB7CisJeyAu Y29tcGF0aWJsZSA9ICJzYW1zdW5nLHM2ZTNoYTIiIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklD RV9UQUJMRShvZiwgczZlM2hhMl9vZl9tYXRjaCk7CisKK3N0YXRpYyBzdHJ1Y3QgbWlwaV9kc2lf ZHJpdmVyIHM2ZTNoYTJfZHJpdmVyID0geworCS5wcm9iZSA9IHM2ZTNoYTJfcHJvYmUsCisJLnJl bW92ZSA9IHM2ZTNoYTJfcmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gInBhbmVsLXNh bXN1bmctczZlM2hhMiIsCisJCS5vZl9tYXRjaF90YWJsZSA9IHM2ZTNoYTJfb2ZfbWF0Y2gsCisJ fSwKK307Cittb2R1bGVfbWlwaV9kc2lfZHJpdmVyKHM2ZTNoYTJfZHJpdmVyKTsKKworTU9EVUxF X0FVVEhPUigiRG9uZ2h3YSBMZWUgPGRoMDkubGVlQHNhbXN1bmcuY29tPiIpOworTU9EVUxFX0FV VEhPUigiSHl1bmd3b24gSHdhbmcgPGh1bWFuLmh3YW5nQHNhbXN1bmcuY29tPiIpOworTU9EVUxF X0FVVEhPUigiSG9lZ2V1biBLd29uIDxob2VnZXVuLmt3b25Ac2Ftc3VuZy5jb20+Iik7CitNT0RV TEVfREVTQ1JJUFRJT04oIk1JUEktRFNJIGJhc2VkIHM2ZTNoYTIgQU1PTEVEIFBhbmVsIERyaXZl ciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwotLSAKMS45LjEKCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==