From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hoegeun Kwon Subject: [PATCH v8 2/3] drm/panel: Add support for S6E3HA2 panel driver on TM2 board Date: Wed, 11 Jan 2017 15:33:58 +0900 Message-ID: <1484116439-7275-3-git-send-email-hoegeun.kwon@samsung.com> References: <1484116439-7275-1-git-send-email-hoegeun.kwon@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1484116439-7275-1-git-send-email-hoegeun.kwon@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: krzk@kernel.org, robh@kernel.org, thierry.reding@gmail.com, airlied@linux.ie, kgene@kernel.org Cc: devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, cw00.choi@samsung.com, Donghwa Lee , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, jh80.chung@samsung.com, andi.shyti@samsung.com, Hyungwon Hwang , Hoegeun Kwon List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGQgc3VwcG9ydCBmb3IgTUlQSS1EU0kgYmFzZWQgUzZFM0hBMiBBTU9MRUQg cGFuZWwKZHJpdmVyLiBUaGlzIHBhbmVsIGhhcyAxNDQweDI1NjAgcmVzb2x1dGlvbiBpbiA1Ljct aW5jaCBwaHlzaWNhbApwYW5lbCBpbiB0aGUgVE0yIGRldmljZS4KClNpZ25lZC1vZmYtYnk6IERv bmdod2EgTGVlIDxkaDA5LmxlZUBzYW1zdW5nLmNvbT4KU2lnbmVkLW9mZi1ieTogSHl1bmd3b24g SHdhbmcgPGh1bWFuLmh3YW5nQHNhbXN1bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBIb2VnZXVuIEt3 b24gPGhvZWdldW4ua3dvbkBzYW1zdW5nLmNvbT4KVGVzdGVkLWJ5OiBDaGFud29vIENob2kgPGN3 MDAuY2hvaUBzYW1zdW5nLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJ6ZWogSGFqZGEgPGEuaGFqZGFA c2Ftc3VuZy5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgICAgICAgICAg ICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSAgICAgICAgICAg ICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmUzaGEy LmMgfCA3NTQgKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNzYx IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtc2Ftc3VuZy1zNmUzaGEyLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCmluZGV4IDYyYWJhOTcu LmQ5MTNjODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCkBAIC01Miw2ICs1MiwxMiBAQCBjb25maWcg RFJNX1BBTkVMX1BBTkFTT05JQ19WVlgxMEYwMzROMDAKIAkgIFdVWEdBICgxOTIweDEyMDApIE5v dmF0ZWsgTlQxMzk3LWJhc2VkIERTSSBwYW5lbCBhcyBmb3VuZCBpbiBzb21lCiAJICBYcGVyaWEg WjIgdGFibGV0cwogCitjb25maWcgRFJNX1BBTkVMX1NBTVNVTkdfUzZFM0hBMgorCXRyaXN0YXRl ICJTYW1zdW5nIFM2RTNIQTIgRFNJIHZpZGVvIG1vZGUgcGFuZWwiCisJZGVwZW5kcyBvbiBPRgor CWRlcGVuZHMgb24gRFJNX01JUElfRFNJCisJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTCisKIGNv bmZpZyBEUk1fUEFORUxfU0FNU1VOR19TNkU4QUEwCiAJdHJpc3RhdGUgIlNhbXN1bmcgUzZFOEFB MCBEU0kgdmlkZW8gbW9kZSBwYW5lbCIKIAlkZXBlbmRzIG9uIE9GCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZp bGUKaW5kZXggYTVjN2VjMC4uMWQ0ODNiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Bh bmVsL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQpAQCAtMyw2 ICszLDcgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9KRElfTFQwNzBNRTA1MDAwKSArPSBwYW5l bC1qZGktbHQwNzBtZTA1MDAwLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfTEdfTEc0NTczKSAr PSBwYW5lbC1sZy1sZzQ1NzMubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9QQU5BU09OSUNfVlZY MTBGMDM0TjAwKSArPSBwYW5lbC1wYW5hc29uaWMtdnZ4MTBmMDM0bjAwLm8KIG9iai0kKENPTkZJ R19EUk1fUEFORUxfU0FNU1VOR19MRDkwNDApICs9IHBhbmVsLXNhbXN1bmctbGQ5MDQwLm8KK29i ai0kKENPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkUzSEEyKSArPSBwYW5lbC1zYW1zdW5nLXM2 ZTNoYTIubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RThBQTApICs9IHBhbmVs LXNhbXN1bmctczZlOGFhMC5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFT WDAxKSArPSBwYW5lbC1zaGFycC1scTEwMXIxc3gwMS5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVM X1NIQVJQX0xTMDQzVDFMRTAxKSArPSBwYW5lbC1zaGFycC1sczA0M3QxbGUwMS5vCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmUzaGEyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmUzaGEyLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMGI5YzZmNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9wYW5lbC1zYW1zdW5nLXM2ZTNoYTIuYwpAQCAtMCwwICsxLDc1NCBAQAor LyoKKyAqIE1JUEktRFNJIGJhc2VkIHM2ZTNoYTIgQU1PTEVEIDUuNyBpbmNoIHBhbmVsIGRyaXZl ci4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0 ZC4KKyAqIERvbmdod2EgTGVlIDxkaDA5LmxlZUBzYW1zdW5nLmNvbT4KKyAqIEh5dW5nd29uIEh3 YW5nIDxodW1hbi5od2FuZ0BzYW1zdW5nLmNvbT4KKyAqIEhvZWdldW4gS3dvbiA8aG9lZ2V1bi5r d29uQHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUg PGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2luY2x1ZGUgPGRy bS9kcm1fcGFuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KKyNpbmNsdWRlIDxs aW51eC9ncGlvL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVy Lmg+CisKKyNkZWZpbmUgUzZFM0hBMl9NSU5fQlJJR0hUTkVTUwkJMAorI2RlZmluZSBTNkUzSEEy X01BWF9CUklHSFRORVNTCQkxMDAKKyNkZWZpbmUgUzZFM0hBMl9ERUZBVUxUX0JSSUdIVE5FU1MJ ODAKKworI2RlZmluZSBTNkUzSEEyX05VTV9HQU1NQV9TVEVQUwkJNDYKKyNkZWZpbmUgUzZFM0hB Ml9HQU1NQV9DTURfQ05UCQkzNQorI2RlZmluZSBTNkUzSEEyX1ZJTlRfU1RBVFVTX01BWAkJMTAK Kworc3RhdGljIGNvbnN0IHU4IGdhbW1hX3RibFtTNkUzSEEyX05VTV9HQU1NQV9TVEVQU11bUzZF M0hBMl9HQU1NQV9DTURfQ05UXSA9IHsKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODIsIDB4ODMsCisJICAweDg1LCAweDg4LCAweDhi LCAweDhiLCAweDg0LCAweDg4LCAweDgyLCAweDgyLCAweDg5LCAweDg2LCAweDhjLAorCSAgMHg5 NCwgMHg4NCwgMHhiMSwgMHhhZiwgMHg4ZSwgMHhjZiwgMHhhZCwgMHhjOSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg1LCAweDg3LCAweDhi LCAweDhhLCAweDg0LCAweDg4LCAweDgyLCAweDgyLCAweDg5LCAweDg2LCAweDhhLAorCSAgMHg5 MywgMHg4NCwgMHhiMCwgMHhhZSwgMHg4ZSwgMHhjOSwgMHhhOCwgMHhjNSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDhh LCAweDhhLCAweDg0LCAweDg4LCAweDgxLCAweDg0LCAweDhhLCAweDg4LCAweDhhLAorCSAgMHg5 MSwgMHg4NCwgMHhiMSwgMHhhZSwgMHg4YiwgMHhkNSwgMHhiMiwgMHhjYywgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDhh LCAweDhhLCAweDg0LCAweDg3LCAweDgxLCAweDg0LCAweDhhLCAweDg3LCAweDhhLAorCSAgMHg5 MSwgMHg4NSwgMHhhZSwgMHhhYywgMHg4YSwgMHhjMywgMHhhMywgMHhjMCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODUsIDB4ODUsCisJICAweDg2LCAweDg1LCAweDg4 LCAweDg5LCAweDg0LCAweDg5LCAweDgyLCAweDg0LCAweDg3LCAweDg1LCAweDhiLAorCSAgMHg5 MSwgMHg4OCwgMHhhZCwgMHhhYiwgMHg4YSwgMHhiNywgMHg5YiwgMHhiNiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDg5 LCAweDhhLCAweDg0LCAweDg5LCAweDgzLCAweDgzLCAweDg2LCAweDg0LCAweDhiLAorCSAgMHg5 MCwgMHg4NCwgMHhiMCwgMHhhZSwgMHg4YiwgMHhjZSwgMHhhZCwgMHhjOCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg3LCAweDg5 LCAweDhhLCAweDgzLCAweDg3LCAweDgyLCAweDg1LCAweDg4LCAweDg3LCAweDg5LAorCSAgMHg4 ZiwgMHg4NCwgMHhhYywgMHhhYSwgMHg4OSwgMHhiMSwgMHg5OCwgMHhhZiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDg4 LCAweDg5LCAweDg0LCAweDg4LCAweDgzLCAweDgyLCAweDg1LCAweDg0LCAweDhjLAorCSAgMHg5 MSwgMHg4NiwgMHhhYywgMHhhYSwgMHg4OSwgMHhjMiwgMHhhNSwgMHhiZCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg1LCAweDg3LCAweDg5 LCAweDhhLCAweDgzLCAweDg3LCAweDgyLCAweDg1LCAweDg4LCAweDg3LCAweDg4LAorCSAgMHg4 YiwgMHg4MiwgMHhhZCwgMHhhYSwgMHg4YSwgMHhjMiwgMHhhNSwgMHhiZCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODksIDB4ODcsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDg3 LCAweDg5LCAweDg0LCAweDg4LCAweDgzLCAweDgyLCAweDg1LCAweDg0LCAweDhhLAorCSAgMHg4 ZSwgMHg4NCwgMHhhZSwgMHhhYywgMHg4OSwgMHhkYSwgMHhiNywgMHhkMCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg1LCAweDg2LCAweDg3 LCAweDg5LCAweDg0LCAweDg4LCAweDgzLCAweDgwLCAweDgzLCAweDgyLCAweDhiLAorCSAgMHg4 ZSwgMHg4NSwgMHhhYywgMHhhYSwgMHg4OSwgMHhjOCwgMHhhYSwgMHhjMSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg1LCAweDg2LCAweDg3 LCAweDg5LCAweDgxLCAweDg1LCAweDgxLCAweDg0LCAweDg2LCAweDg0LCAweDhjLAorCSAgMHg4 YywgMHg4NCwgMHhhOSwgMHhhOCwgMHg4NywgMHhhMywgMHg5MiwgMHhhMSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg1LCAweDg2LCAweDg3 LCAweDg5LCAweDg0LCAweDg2LCAweDgzLCAweDgwLCAweDgzLCAweDgxLCAweDhjLAorCSAgMHg4 ZCwgMHg4NCwgMHhhYSwgMHhhYSwgMHg4OSwgMHhjZSwgMHhhZiwgMHhjNSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg1LCAweDg2LCAweDg3 LCAweDg5LCAweDgxLCAweDgzLCAweDgwLCAweDgzLCAweDg1LCAweDg1LCAweDhjLAorCSAgMHg4 YywgMHg4NCwgMHhhOCwgMHhhOCwgMHg4OCwgMHhiNSwgMHg5ZiwgMHhiMCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg2LCAweDg2LCAweDg3 LCAweDg4LCAweDgxLCAweDgzLCAweDgwLCAweDgzLCAweDg1LCAweDg1LCAweDhjLAorCSAgMHg4 YiwgMHg4NCwgMHhhYiwgMHhhOCwgMHg4NiwgMHhkNCwgMHhiNCwgMHhjOSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg2LCAweDg2LCAweDg3 LCAweDg4LCAweDgxLCAweDgzLCAweDgwLCAweDg0LCAweDg0LCAweDg1LCAweDhiLAorCSAgMHg4 YSwgMHg4MywgMHhhNiwgMHhhNSwgMHg4NCwgMHhiYiwgMHhhNCwgMHhiMywgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODQsIDB4ODQsCisJICAweDg2LCAweDg1LCAweDg2 LCAweDg2LCAweDgyLCAweDg1LCAweDgxLCAweDgyLCAweDgzLCAweDg0LCAweDhlLAorCSAgMHg4 YiwgMHg4MywgMHhhNCwgMHhhMywgMHg4YSwgMHhhMSwgMHg5MywgMHg5ZCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDg3 LCAweDg3LCAweDgyLCAweDg1LCAweDgxLCAweDgyLCAweDgyLCAweDg0LCAweDhlLAorCSAgMHg4 YiwgMHg4MywgMHhhNCwgMHhhMiwgMHg4NiwgMHhjMSwgMHhhOSwgMHhiNywgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDg3 LCAweDg3LCAweDgyLCAweDg1LCAweDgxLCAweDgyLCAweDgyLCAweDg0LCAweDhkLAorCSAgMHg4 OSwgMHg4MiwgMHhhMiwgMHhhMSwgMHg4NCwgMHhhNywgMHg5OCwgMHhhMSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YjgsIDB4MDAsIDB4YzMsIDB4MDAs IDB4YjEsIDB4ODgsIDB4ODYsIDB4ODcsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDg3 LCAweDg3LCAweDgyLCAweDg1LCAweDgxLCAweDgzLCAweDgzLCAweDg1LCAweDhjLAorCSAgMHg4 NywgMHg3ZiwgMHhhMiwgMHg5ZCwgMHg4OCwgMHg4ZCwgMHg4OCwgMHg4YiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YmIsIDB4MDAsIDB4YzUsIDB4MDAs IDB4YjQsIDB4ODcsIDB4ODYsIDB4ODYsIDB4ODQsIDB4ODMsCisJICAweDg2LCAweDg3LCAweDg3 LCAweDg3LCAweDgwLCAweDgyLCAweDdmLCAweDg2LCAweDg2LCAweDg4LCAweDhhLAorCSAgMHg4 NCwgMHg3ZSwgMHg5ZCwgMHg5YywgMHg4MiwgMHg4ZCwgMHg4OCwgMHg4YiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YmQsIDB4MDAsIDB4YzcsIDB4MDAs IDB4YjcsIDB4ODcsIDB4ODUsIDB4ODUsIDB4ODQsIDB4ODMsCisJICAweDg2LCAweDg2LCAweDg2 LCAweDg4LCAweDgxLCAweDgzLCAweDgwLCAweDgzLCAweDg0LCAweDg1LCAweDhhLAorCSAgMHg4 NSwgMHg3ZSwgMHg5YywgMHg5YiwgMHg4NSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YzAsIDB4MDAsIDB4Y2EsIDB4MDAs IDB4YmIsIDB4ODcsIDB4ODYsIDB4ODUsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg2LCAweDg2 LCAweDg4LCAweDgxLCAweDgzLCAweDgwLCAweDg0LCAweDg1LCAweDg2LCAweDg5LAorCSAgMHg4 MywgMHg3ZCwgMHg5YywgMHg5OSwgMHg4NywgMHg3YiwgMHg3YiwgMHg3YywgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YzQsIDB4MDAsIDB4Y2QsIDB4MDAs IDB4YmUsIDB4ODcsIDB4ODYsIDB4ODUsIDB4ODMsIDB4ODMsCisJICAweDg2LCAweDg1LCAweDg1 LCAweDg3LCAweDgxLCAweDgyLCAweDgwLCAweDgyLCAweDgyLCAweDgzLCAweDhhLAorCSAgMHg4 NSwgMHg3ZiwgMHg5ZiwgMHg5YiwgMHg4NiwgMHhiNCwgMHhhMSwgMHhhYywgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4YzcsIDB4MDAsIDB4ZDAsIDB4MDAs IDB4YzIsIDB4ODcsIDB4ODUsIDB4ODUsIDB4ODMsIDB4ODIsCisJICAweDg1LCAweDg1LCAweDg1 LCAweDg2LCAweDgyLCAweDgzLCAweDgwLCAweDgyLCAweDgyLCAweDg0LCAweDg3LAorCSAgMHg4 NiwgMHg4MCwgMHg5ZSwgMHg5YSwgMHg4NywgMHhhNywgMHg5OCwgMHhhMSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4Y2EsIDB4MDAsIDB4ZDIsIDB4MDAs IDB4YzUsIDB4ODcsIDB4ODUsIDB4ODQsIDB4ODIsIDB4ODIsCisJICAweDg0LCAweDg1LCAweDg1 LCAweDg2LCAweDgxLCAweDgyLCAweDdmLCAweDgyLCAweDgyLCAweDg0LCAweDg4LAorCSAgMHg4 NiwgMHg4MSwgMHg5ZCwgMHg5OCwgMHg4NiwgMHg4ZCwgMHg4OCwgMHg4YiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4Y2UsIDB4MDAsIDB4ZDYsIDB4MDAs IDB4Y2EsIDB4ODYsIDB4ODUsIDB4ODQsIDB4ODMsIDB4ODMsCisJICAweDg1LCAweDg0LCAweDg0 LCAweDg1LCAweDgxLCAweDgyLCAweDgwLCAweDgxLCAweDgxLCAweDgyLCAweDg5LAorCSAgMHg4 NiwgMHg4MSwgMHg5YywgMHg5NywgMHg4NiwgMHhhNywgMHg5OCwgMHhhMSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZDEsIDB4MDAsIDB4ZDksIDB4MDAs IDB4Y2UsIDB4ODYsIDB4ODQsIDB4ODMsIDB4ODMsIDB4ODIsCisJICAweDg1LCAweDg1LCAweDg1 LCAweDg2LCAweDgxLCAweDgzLCAweDgxLCAweDgyLCAweDgyLCAweDgzLCAweDg2LAorCSAgMHg4 MywgMHg3ZiwgMHg5OSwgMHg5NSwgMHg4NiwgMHhiYiwgMHhhNCwgMHhiMywgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZDQsIDB4MDAsIDB4ZGIsIDB4MDAs IDB4ZDEsIDB4ODYsIDB4ODUsIDB4ODMsIDB4ODMsIDB4ODIsCisJICAweDg1LCAweDg0LCAweDg0 LCAweDg1LCAweDgwLCAweDgzLCAweDgyLCAweDgwLCAweDgwLCAweDgxLCAweDg3LAorCSAgMHg4 NCwgMHg4MSwgMHg5OCwgMHg5MywgMHg4NSwgMHhhZSwgMHg5YywgMHhhOCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZDgsIDB4MDAsIDB4ZGUsIDB4MDAs IDB4ZDYsIDB4ODYsIDB4ODQsIDB4ODMsIDB4ODEsIDB4ODEsCisJICAweDgzLCAweDg1LCAweDg1 LCAweDg1LCAweDgyLCAweDgzLCAweDgxLCAweDgxLCAweDgxLCAweDgzLCAweDg2LAorCSAgMHg4 NCwgMHg4MCwgMHg5OCwgMHg5MSwgMHg4NSwgMHg3YiwgMHg3YiwgMHg3YywgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZGMsIDB4MDAsIDB4ZTIsIDB4MDAs IDB4ZGEsIDB4ODUsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODIsCisJICAweDg0LCAweDg0LCAweDg0 LCAweDg1LCAweDgxLCAweDgyLCAweDgyLCAweDgwLCAweDgwLCAweDgxLCAweDgzLAorCSAgMHg4 MiwgMHg3ZiwgMHg5OSwgMHg5MywgMHg4NiwgMHg5NCwgMHg4YiwgMHg5MiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZGYsIDB4MDAsIDB4ZTUsIDB4MDAs IDB4ZGUsIDB4ODUsIDB4ODQsIDB4ODIsIDB4ODIsIDB4ODIsCisJICAweDg0LCAweDgzLCAweDgz LCAweDg0LCAweDgxLCAweDgxLCAweDgwLCAweDgzLCAweDgyLCAweDg0LCAweDgyLAorCSAgMHg4 MSwgMHg3ZiwgMHg5OSwgMHg5MiwgMHg4NiwgMHg3YiwgMHg3YiwgMHg3YywgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZTQsIDB4MDAsIDB4ZTksIDB4MDAs IDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEsCisJICAweDgyLCAweDgzLCAweDgz LCAweDg0LCAweDgwLCAweDgxLCAweDgwLCAweDgzLCAweDgzLCAweDg0LCAweDgwLAorCSAgMHg4 MSwgMHg3YywgMHg5OSwgMHg5MiwgMHg4NywgMHhhMSwgMHg5MywgMHg5ZCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZTQsIDB4MDAsIDB4ZTksIDB4MDAs IDB4ZTMsIDB4ODUsIDB4ODQsIDB4ODMsIDB4ODEsIDB4ODEsCisJICAweDgyLCAweDgyLCAweDgy LCAweDgzLCAweDgwLCAweDgxLCAweDgwLCAweDgxLCAweDgwLCAweDgyLCAweDgzLAorCSAgMHg4 MiwgMHg4MCwgMHg5MSwgMHg4ZCwgMHg4MywgMHg5YSwgMHg5MCwgMHg5NiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZTQsIDB4MDAsIDB4ZTksIDB4MDAs IDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEsCisJICAweDgyLCAweDgzLCAweDgz LCAweDg0LCAweDgwLCAweDgxLCAweDgwLCAweDgxLCAweDgwLCAweDgyLCAweDgzLAorCSAgMHg4 MSwgMHg3ZiwgMHg5MSwgMHg4YywgMHg4MiwgMHg4ZCwgMHg4OCwgMHg4YiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZTQsIDB4MDAsIDB4ZTksIDB4MDAs IDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEsCisJICAweDgyLCAweDgzLCAweDgz LCAweDgzLCAweDgyLCAweDgyLCAweDgxLCAweDgxLCAweDgwLCAweDgyLCAweDgyLAorCSAgMHg4 MiwgMHg3ZiwgMHg5NCwgMHg4OSwgMHg4NCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZTQsIDB4MDAsIDB4ZTksIDB4MDAs IDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEsCisJICAweDgyLCAweDgzLCAweDgz LCAweDgzLCAweDgyLCAweDgyLCAweDgxLCAweDgxLCAweDgwLCAweDgyLCAweDgzLAorCSAgMHg4 MiwgMHg3ZiwgMHg5MSwgMHg4NSwgMHg4MSwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZTQsIDB4MDAsIDB4ZTksIDB4MDAs IDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEsCisJICAweDgyLCAweDgzLCAweDgz LCAweDgzLCAweDgwLCAweDgwLCAweDdmLCAweDgzLCAweDgyLCAweDg0LCAweDgzLAorCSAgMHg4 MiwgMHg3ZiwgMHg5MCwgMHg4NCwgMHg4MSwgMHg5YSwgMHg5MCwgMHg5NiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZTQsIDB4MDAsIDB4ZTksIDB4MDAs IDB4ZTMsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODAsIDB4ODAsCisJICAweDgyLCAweDgzLCAweDgz LCAweDgzLCAweDgwLCAweDgwLCAweDdmLCAweDgwLCAweDgwLCAweDgxLCAweDgxLAorCSAgMHg4 MiwgMHg4MywgMHg3ZSwgMHg4MCwgMHg3YywgMHhhNCwgMHg5NywgMHg5ZiwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZTksIDB4MDAsIDB4ZWMsIDB4MDAs IDB4ZTgsIDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODEsCisJICAweDgyLCAweDgyLCAweDgy LCAweDgzLCAweDdmLCAweDdmLCAweDdmLCAweDgxLCAweDgwLCAweDgyLCAweDgzLAorCSAgMHg4 MywgMHg4NCwgMHg3OSwgMHg3YywgMHg3OSwgMHhiMSwgMHhhMCwgMHhhYSwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZWQsIDB4MDAsIDB4ZjAsIDB4MDAs IDB4ZWMsIDB4ODMsIDB4ODMsIDB4ODIsIDB4ODAsIDB4ODAsCisJICAweDgxLCAweDgyLCAweDgy LCAweDgyLCAweDdmLCAweDdmLCAweDdlLCAweDgxLCAweDgxLCAweDgyLCAweDgwLAorCSAgMHg4 MSwgMHg4MSwgMHg4NCwgMHg4NCwgMHg4MywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZjEsIDB4MDAsIDB4ZjQsIDB4MDAs IDB4ZjEsIDB4ODMsIDB4ODIsIDB4ODIsIDB4ODAsIDB4ODAsCisJICAweDgxLCAweDgyLCAweDgy LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgxLCAweDdkLAorCSAgMHg3 ZSwgMHg3ZiwgMHg4NCwgMHg4NCwgMHg4MywgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZjYsIDB4MDAsIDB4ZjcsIDB4MDAs IDB4ZjUsIDB4ODIsIDB4ODIsIDB4ODEsIDB4ODAsIDB4ODAsCisJICAweDgwLCAweDgyLCAweDgy LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDdmLCAweDdmLCAweDdmLCAweDgyLAorCSAgMHg4 MiwgMHg4MiwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDAsIDB4ZmEsIDB4MDAsIDB4ZmIsIDB4MDAs IDB4ZmEsIDB4ODEsIDB4ODEsIDB4ODEsIDB4ODAsIDB4ODAsCisJICAweDgwLCAweDgyLCAweDgy LCAweDgyLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLAorCSAgMHg4 MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDEs IDB4MDAsIDB4ODAsIDB4ODAsIDB4ODAsIDB4ODAsIDB4ODAsCisJICAweDgwLCAweDgwLCAweDgw LCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLAorCSAgMHg4 MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfSwKKwl7IDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDEs IDB4MDAsIDB4ODAsIDB4ODAsIDB4ODAsIDB4ODAsIDB4ODAsCisJICAweDgwLCAweDgwLCAweDgw LCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLAorCSAgMHg4 MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkgIDB4MDAsIDB4MDAgfQorfTsKKwordW5zaWduZWQgY2hhciB2aW50X3RhYmxlW1M2 RTNIQTJfVklOVF9TVEFUVVNfTUFYXSA9IHsKKwkweDE4LCAweDE5LCAweDFhLCAweDFiLCAweDFj LAorCTB4MWQsIDB4MWUsIDB4MWYsIDB4MjAsIDB4MjEKK307CisKK3N0cnVjdCBzNmUzaGEyIHsK KwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRybV9wYW5lbCBwYW5lbDsKKwlzdHJ1Y3Qg YmFja2xpZ2h0X2RldmljZSAqYmxfZGV2OworCisJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEg c3VwcGxpZXNbMl07CisJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKKwlzdHJ1Y3QgZ3Bp b19kZXNjICplbmFibGVfZ3BpbzsKKworCS8qIFRoaXMgZmllbGQgaXMgdGVzdGVkIGJ5IGZ1bmN0 aW9ucyBkaXJlY3RseSBhY2Nlc3NpbmcgRFNJIGJ1cyBiZWZvcmUKKwkgKiB0cmFuc2ZlciwgdHJh bnNmZXIgaXMgc2tpcHBlZCBpZiBpdCBpcyBzZXQuIEluIGNhc2Ugb2YgdHJhbnNmZXIKKwkgKiBm YWlsdXJlIG9yIHVuZXhwZWN0ZWQgcmVzcG9uc2UgdGhlIGZpZWxkIGlzIHNldCB0byBlcnJvciB2 YWx1ZS4KKwkgKiBTdWNoIGNvbnN0cnVjdCBhbGxvd3MgdG8gZWxpbWluYXRlIG1hbnkgY2hlY2tz IGluIGhpZ2hlciBsZXZlbAorCSAqIGZ1bmN0aW9ucy4KKwkgKi8KKwlpbnQgZXJyb3I7Cit9Owor CitzdGF0aWMgaW50ICBzNmUzaGEyX2NsZWFyX2Vycm9yKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7 CisJaW50IHJldCA9IGN0eC0+ZXJyb3I7CisKKwljdHgtPmVycm9yID0gMDsKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgdm9pZCBzNmUzaGEyX2Rjc193cml0ZShzdHJ1Y3QgczZlM2hhMiAqY3R4 LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQoreworCXN0cnVjdCBtaXBpX2RzaV9kZXZp Y2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRldik7CisJc3NpemVfdCByZXQ7CisK KwlpZiAoY3R4LT5lcnJvciA8IDApCisJCXJldHVybjsKKworCXJldCA9IG1pcGlfZHNpX2Rjc193 cml0ZV9idWZmZXIoZHNpLCBkYXRhLCBsZW4pOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIo Y3R4LT5kZXYsICJlcnJvciAlemQgd3JpdGluZyBkY3Mgc2VxOiAlKnBoXG4iLAorCQkJCQkJcmV0 LCAoaW50KWxlbiwgZGF0YSk7CisJCWN0eC0+ZXJyb3IgPSByZXQ7CisJfQorfQorCisjZGVmaW5l IHM2ZTNoYTJfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBzZXEuLi4pIGRvIHsJXAorCXN0YXRp YyBjb25zdCB1OCBkW10gPSB7IHNlcSB9OwkJCVwKKwlzNmUzaGEyX2Rjc193cml0ZShjdHgsIGQs IEFSUkFZX1NJWkUoZCkpOwlcCit9IHdoaWxlICgwKQorCitzdGF0aWMgdm9pZCBzNmUzaGEyX3Rl c3Rfa2V5X29uX2YwKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVf c2VxX3N0YXRpYyhjdHgsIDB4ZjAsIDB4NWEsIDB4NWEpOworfQorCitzdGF0aWMgdm9pZCBzNmUz aGEyX3Rlc3Rfa2V5X29mZl9mMChzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNz X3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweGYwLCAweGE1LCAweGE1KTsKK30KKworc3RhdGljIHZv aWQgczZlM2hhMl90ZXN0X2tleV9vbl9mYyhzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNo YTJfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweGZjLCAweDVhLCAweDVhKTsKK30KKworc3Rh dGljIHZvaWQgczZlM2hhMl90ZXN0X2tleV9vZmZfZmMoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sK KwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhmYywgMHhhNSwgMHhhNSk7Cit9 CisKK3N0YXRpYyB2b2lkIHM2ZTNoYTJfc2luZ2xlX2RzaV9zZXQoc3RydWN0IHM2ZTNoYTIgKmN0 eCkKK3sKKwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhmMiwgMHg2Nyk7CisJ czZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4ZjksIDB4MDkpOworfQorCitzdGF0 aWMgdm9pZCBzNmUzaGEyX2ZyZXFfY2FsaWJyYXRpb24oc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sK KwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhmZCwgMHgxYyk7CisJczZlM2hh Ml9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4ZmUsIDB4MjAsIDB4MzkpOworCXM2ZTNoYTJf ZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweGZlLCAweGEwKTsKKwlzNmUzaGEyX2Rjc193cml0 ZV9zZXFfc3RhdGljKGN0eCwgMHhmZSwgMHgyMCk7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0 YXRpYyhjdHgsIDB4Y2UsIDB4MDMsIDB4M2IsIDB4MTIsIDB4NjIsCisJCTB4NDAsIDB4ODAsIDB4 YzAsIDB4MjgsIDB4MjgsIDB4MjgsIDB4MjgsIDB4MzksIDB4YzUpOworfQorCitzdGF0aWMgdm9p ZCBzNmUzaGEyX2Fvcl9jb250cm9sKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9k Y3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4YjIsIDB4MDMsIDB4MTApOworfQorCitzdGF0aWMg dm9pZCBzNmUzaGEyX2NhcHNfZWx2c3Nfc2V0KHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZl M2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4YjYsIDB4OWMsIDB4MGEpOworfQorCitz dGF0aWMgdm9pZCBzNmUzaGEyX2FjbF9vZmYoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUz aGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHg1NSwgMHgwMCk7Cit9CisKK3N0YXRpYyB2 b2lkIHM2ZTNoYTJfYWNsX29mZl9vcHIoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEy X2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhiNSwgMHg0MCk7Cit9CisKK3N0YXRpYyB2b2lk IHM2ZTNoYTJfdGVzdF9nbG9iYWwoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rj c193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhiMCwgMHgwNyk7Cit9CisKK3N0YXRpYyB2b2lkIHM2 ZTNoYTJfdGVzdChzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNzX3dyaXRlX3Nl cV9zdGF0aWMoY3R4LCAweGI4LCAweDE5KTsKK30KKworc3RhdGljIHZvaWQgczZlM2hhMl90b3Vj aF9oc3luY19vbjEoc3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rjc193cml0ZV9z ZXFfc3RhdGljKGN0eCwKKwkJCTB4YmQsIDB4MzMsIDB4MTEsIDB4MDIsIDB4MTYsIDB4MDIsIDB4 MTYpOworfQorCitzdGF0aWMgdm9pZCBzNmUzaGEyX3BlbnRpbGVfY29udHJvbChzdHJ1Y3QgczZl M2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweGMwLCAw eDAwLCAweDAwLCAweGQ4LCAweGQ4KTsKK30KKworc3RhdGljIHZvaWQgczZlM2hhMl9wb2NfZ2xv YmFsKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRp YyhjdHgsIDB4YjAsIDB4MjApOworfQorCitzdGF0aWMgdm9pZCBzNmUzaGEyX3BvY19zZXR0aW5n KHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhj dHgsIDB4ZmUsIDB4MDgpOworfQorCitzdGF0aWMgdm9pZCBzNmUzaGEyX3BjZF9zZXRfb2ZmKHN0 cnVjdCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgs IDB4Y2MsIDB4NDAsIDB4NTEpOworfQorCitzdGF0aWMgdm9pZCBzNmUzaGEyX2Vycl9mZ19zZXQo c3RydWN0IHM2ZTNoYTIgKmN0eCkKK3sKKwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0 eCwgMHhlZCwgMHg0NCk7Cit9CisKK3N0YXRpYyB2b2lkIHM2ZTNoYTJfaGJtX29mZihzdHJ1Y3Qg czZlM2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweDUz LCAweDAwKTsKK30KKworc3RhdGljIHZvaWQgczZlM2hhMl90ZV9zdGFydF9zZXR0aW5nKHN0cnVj dCBzNmUzaGEyICpjdHgpCit7CisJczZlM2hhMl9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4 YjksIDB4MTAsIDB4MDksIDB4ZmYsIDB4MDAsIDB4MDkpOworfQorCitzdGF0aWMgdm9pZCBzNmUz aGEyX2dhbW1hX3VwZGF0ZShzdHJ1Y3QgczZlM2hhMiAqY3R4KQoreworCXM2ZTNoYTJfZGNzX3dy aXRlX3NlcV9zdGF0aWMoY3R4LCAweGY3LCAweDAzKTsKKwluZGVsYXkoMTAwKTsgLyogbmVlZCBm b3IgMTAwbnMgZGVsYXkgKi8KKwlzNmUzaGEyX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhm NywgMHgwMCk7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3Qg YmFja2xpZ2h0X2RldmljZSAqYmxfZGV2KQoreworCXJldHVybiBibF9kZXYtPnByb3BzLmJyaWdo dG5lc3M7Cit9CisKK3N0YXRpYyB2b2lkIHM2ZTNoYTJfc2V0X3ZpbnQoc3RydWN0IHM2ZTNoYTIg KmN0eCkKK3sKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2ID0gY3R4LT5ibF9kZXY7 CisJdW5zaWduZWQgaW50IGJyaWdodG5lc3MgPSBibF9kZXYtPnByb3BzLmJyaWdodG5lc3M7CisJ dW5zaWduZWQgY2hhciBkYXRhW10gPSB7IDB4ZjQsIDB4OGIsCisJCQl2aW50X3RhYmxlW2JyaWdo dG5lc3MgKiAoUzZFM0hBMl9WSU5UX1NUQVRVU19NQVggLSAxKSAvCisJCQlTNkUzSEEyX01BWF9C UklHSFRORVNTXSB9OworCisJczZlM2hhMl9kY3Nfd3JpdGUoY3R4LCBkYXRhLCBBUlJBWV9TSVpF KGRhdGEpKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBzNmUzaGEyX2dldF9icmlnaHRuZXNz X2luZGV4KHVuc2lnbmVkIGludCBicmlnaHRuZXNzKQoreworCXJldHVybiAoYnJpZ2h0bmVzcyAq IChTNkUzSEEyX05VTV9HQU1NQV9TVEVQUyAtIDEpKSAvCisJCVM2RTNIQTJfTUFYX0JSSUdIVE5F U1M7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl91cGRhdGVfZ2FtbWEoc3RydWN0IHM2ZTNoYTIg KmN0eCwgdW5zaWduZWQgaW50IGJyaWdodG5lc3MpCit7CisJc3RydWN0IGJhY2tsaWdodF9kZXZp Y2UgKmJsX2RldiA9IGN0eC0+YmxfZGV2OworCXVuc2lnbmVkIGludCBpbmRleCA9IHM2ZTNoYTJf Z2V0X2JyaWdodG5lc3NfaW5kZXgoYnJpZ2h0bmVzcyk7CisJdTggZGF0YVtTNkUzSEEyX0dBTU1B X0NNRF9DTlQgKyAxXSA9IHsgMHhjYSwgfTsKKworCW1lbWNweShkYXRhICsgMSwgZ2FtbWFfdGJs ICsgaW5kZXgsIFM2RTNIQTJfR0FNTUFfQ01EX0NOVCk7CisJczZlM2hhMl9kY3Nfd3JpdGUoY3R4 LCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKKworCXM2ZTNoYTJfZ2FtbWFfdXBkYXRlKGN0eCk7 CisJYmxfZGV2LT5wcm9wcy5icmlnaHRuZXNzID0gYnJpZ2h0bmVzczsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHM2ZTNoYTJfc2V0X2JyaWdodG5lc3Moc3RydWN0IGJhY2tsaWdodF9k ZXZpY2UgKmJsX2RldikKK3sKKwlzdHJ1Y3QgczZlM2hhMiAqY3R4ID0gYmxfZ2V0X2RhdGEoYmxf ZGV2KTsKKwl1bnNpZ25lZCBpbnQgYnJpZ2h0bmVzcyA9IGJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVz czsKKworCWlmIChicmlnaHRuZXNzIDwgUzZFM0hBMl9NSU5fQlJJR0hUTkVTUyB8fAorCQlicmln aHRuZXNzID4gYmxfZGV2LT5wcm9wcy5tYXhfYnJpZ2h0bmVzcykgeworCQlkZXZfZXJyKGN0eC0+ ZGV2LCAiSW52YWxpZCBicmlnaHRuZXNzOiAldVxuIiwgYnJpZ2h0bmVzcyk7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCWlmIChibF9kZXYtPnByb3BzLnBvd2VyID4gRkJfQkxBTktfTk9STUFM KQorCQlyZXR1cm4gLUVQRVJNOworCisJczZlM2hhMl90ZXN0X2tleV9vbl9mMChjdHgpOworCXM2 ZTNoYTJfdXBkYXRlX2dhbW1hKGN0eCwgYnJpZ2h0bmVzcyk7CisJczZlM2hhMl9hb3JfY29udHJv bChjdHgpOworCXM2ZTNoYTJfc2V0X3ZpbnQoY3R4KTsKKwlzNmUzaGEyX3Rlc3Rfa2V5X29mZl9m MChjdHgpOworCisJcmV0dXJuIGN0eC0+ZXJyb3I7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg YmFja2xpZ2h0X29wcyBzNmUzaGEyX2JsX29wcyA9IHsKKwkuZ2V0X2JyaWdodG5lc3MgPSBzNmUz aGEyX2dldF9icmlnaHRuZXNzLAorCS51cGRhdGVfc3RhdHVzID0gczZlM2hhMl9zZXRfYnJpZ2h0 bmVzcywKK307CisKK3N0YXRpYyBpbnQgczZlM2hhMl9wYW5lbF9pbml0KHN0cnVjdCBzNmUzaGEy ICpjdHgpCit7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2 aWNlKGN0eC0+ZGV2KTsKKwlpbnQgcmV0OworCisJcmV0ID0gbWlwaV9kc2lfZGNzX2V4aXRfc2xl ZXBfbW9kZShkc2kpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCXVzbGVlcF9yYW5n ZSg1MDAwLCA2MDAwKTsKKworCXM2ZTNoYTJfdGVzdF9rZXlfb25fZjAoY3R4KTsKKwlzNmUzaGEy X3NpbmdsZV9kc2lfc2V0KGN0eCk7CisJczZlM2hhMl90ZXN0X2tleV9vbl9mYyhjdHgpOworCXM2 ZTNoYTJfZnJlcV9jYWxpYnJhdGlvbihjdHgpOworCXM2ZTNoYTJfdGVzdF9rZXlfb2ZmX2ZjKGN0 eCk7CisJczZlM2hhMl90ZXN0X2tleV9vZmZfZjAoY3R4KTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IHM2ZTNoYTJfcG93ZXJfb2ZmKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJcmV0 dXJuIHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4 LT5zdXBwbGllcyk7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9kaXNhYmxlKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBzNmUzaGEyICpjdHggPSBjb250YWluZXJfb2YocGFu ZWwsIHN0cnVjdCBzNmUzaGEyLCBwYW5lbCk7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNp ID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKKwlpbnQgcmV0OworCisJcmV0ID0gbWlw aV9kc2lfZGNzX2VudGVyX3NsZWVwX21vZGUoZHNpKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJu IHJldDsKKworCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vZmYoZHNpKTsKKwlpZiAo cmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCW1zbGVlcCg0MCk7CisJY3R4LT5ibF9kZXYtPnBy b3BzLnBvd2VyID0gRkJfQkxBTktfTk9STUFMOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgczZlM2hhMl91bnByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0 IHM2ZTNoYTIgKmN0eCA9IGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHM2ZTNoYTIsIHBhbmVs KTsKKwlpbnQgcmV0OworCisJcmV0ID0gczZlM2hhMl9jbGVhcl9lcnJvcihjdHgpOworCWlmICgh cmV0KQorCQljdHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047CisK KwlyZXR1cm4gczZlM2hhMl9wb3dlcl9vZmYoY3R4KTsKK30KKworc3RhdGljIGludCBzNmUzaGEy X3Bvd2VyX29uKHN0cnVjdCBzNmUzaGEyICpjdHgpCit7CisJaW50IHJldDsKKworCXJldCA9IHJl Z3VsYXRvcl9idWxrX2VuYWJsZShBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBs aWVzKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCW1zbGVlcCgxMjApOworCisJ Z3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+ZW5hYmxlX2dwaW8sIDApOworCXVzbGVlcF9yYW5nZSg1MDAw LCA2MDAwKTsKKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5lbmFibGVfZ3BpbywgMSk7CisKKwlncGlv ZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAxKTsKKwl1c2xlZXBfcmFuZ2UoNTAwMCwgNjAw MCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7CisJdXNsZWVwX3Jhbmdl KDUwMDAsIDYwMDApOworCisJcmV0dXJuIDA7Cit9CitzdGF0aWMgaW50IHM2ZTNoYTJfcHJlcGFy ZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgczZlM2hhMiAqY3R4ID0gY29u dGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgczZlM2hhMiwgcGFuZWwpOworCWludCByZXQ7CisKKwly ZXQgPSBzNmUzaGEyX3Bvd2VyX29uKGN0eCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7 CisKKwlyZXQgPSBzNmUzaGEyX3BhbmVsX2luaXQoY3R4KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290 byBlcnI7CisKKwlyZXQgPSBzNmUzaGEyX2NsZWFyX2Vycm9yKGN0eCk7CisJaWYgKHJldCA8IDAp CisJCWdvdG8gZXJyOworCisJY3R4LT5ibF9kZXYtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfTk9S TUFMOworCisJcmV0dXJuIDA7CisKK2VycjoKKwlzNmUzaGEyX3Bvd2VyX29mZihjdHgpOworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgczZlM2hhMl9lbmFibGUoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCit7CisJc3RydWN0IHM2ZTNoYTIgKmN0eCA9IGNvbnRhaW5lcl9vZihwYW5lbCwg c3RydWN0IHM2ZTNoYTIsIHBhbmVsKTsKKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0 b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOworCWludCByZXQ7CisKKwkvKiBjb21tb24gc2V0 dGluZyAqLworCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfdGVhcl9vbihkc2ksIE1JUElfRFNJX0RD U19URUFSX01PREVfVkJMQU5LKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXM2 ZTNoYTJfdGVzdF9rZXlfb25fZjAoY3R4KTsKKwlzNmUzaGEyX3Rlc3Rfa2V5X29uX2ZjKGN0eCk7 CisJczZlM2hhMl90b3VjaF9oc3luY19vbjEoY3R4KTsKKwlzNmUzaGEyX3BlbnRpbGVfY29udHJv bChjdHgpOworCXM2ZTNoYTJfcG9jX2dsb2JhbChjdHgpOworCXM2ZTNoYTJfcG9jX3NldHRpbmco Y3R4KTsKKwlzNmUzaGEyX3Rlc3Rfa2V5X29mZl9mYyhjdHgpOworCisJLyogcGNkIHNldHRpbmcg b2ZmIGZvciBUQiAqLworCXM2ZTNoYTJfcGNkX3NldF9vZmYoY3R4KTsKKwlzNmUzaGEyX2Vycl9m Z19zZXQoY3R4KTsKKwlzNmUzaGEyX3RlX3N0YXJ0X3NldHRpbmcoY3R4KTsKKworCS8qIGJyaWdo dG5lc3Mgc2V0dGluZyAqLworCXM2ZTNoYTJfc2V0X2JyaWdodG5lc3MoY3R4LT5ibF9kZXYpOwor CXM2ZTNoYTJfYW9yX2NvbnRyb2woY3R4KTsKKwlzNmUzaGEyX2NhcHNfZWx2c3Nfc2V0KGN0eCk7 CisJczZlM2hhMl9nYW1tYV91cGRhdGUoY3R4KTsKKwlzNmUzaGEyX2FjbF9vZmYoY3R4KTsKKwlz NmUzaGEyX2FjbF9vZmZfb3ByKGN0eCk7CisJczZlM2hhMl9oYm1fb2ZmKGN0eCk7CisKKwkvKiBl bHZzcyB0ZW1wIGNvbXBlbnNhdGlvbiAqLworCXM2ZTNoYTJfdGVzdF9nbG9iYWwoY3R4KTsKKwlz NmUzaGEyX3Rlc3QoY3R4KTsKKwlzNmUzaGEyX3Rlc3Rfa2V5X29mZl9mMChjdHgpOworCisJaWYg KGN0eC0+ZXJyb3IgIT0gMCkKKwkJcmV0dXJuIGN0eC0+ZXJyb3I7CisKKwlyZXQgPSBtaXBpX2Rz aV9kY3Nfc2V0X2Rpc3BsYXlfb24oZHNpKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsK KworCWN0eC0+YmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1VOQkxBTks7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIGRlZmF1bHRf bW9kZSA9IHsKKwkuY2xvY2sgPSAyMjIzNzIsCisJLmhkaXNwbGF5ID0gMTQ0MCwKKwkuaHN5bmNf c3RhcnQgPSAxNDQwICsgMSwKKwkuaHN5bmNfZW5kID0gMTQ0MCArIDEgKyAxLAorCS5odG90YWwg PSAxNDQwICsgMSArIDEgKyAxLAorCS52ZGlzcGxheSA9IDI1NjAsCisJLnZzeW5jX3N0YXJ0ID0g MjU2MCArIDEsCisJLnZzeW5jX2VuZCA9IDI1NjAgKyAxICsgMSwKKwkudnRvdGFsID0gMjU2MCAr IDEgKyAxICsgMTUsCisJLnZyZWZyZXNoID0gNjAsCisJLmZsYWdzID0gMCwKK307CisKK3N0YXRp YyBpbnQgczZlM2hhMl9nZXRfbW9kZXMoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHBhbmVsLT5jb25uZWN0b3I7CisJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisKKwltb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKHBh bmVsLT5kcm0sICZkZWZhdWx0X21vZGUpOworCWlmICghbW9kZSkgeworCQlEUk1fRVJST1IoImZh aWxlZCB0byBhZGQgbW9kZSAldXgldXhAJXVcbiIsCisJCQkJZGVmYXVsdF9tb2RlLmhkaXNwbGF5 LCBkZWZhdWx0X21vZGUudmRpc3BsYXksCisJCQkJZGVmYXVsdF9tb2RlLnZyZWZyZXNoKTsKKwkJ cmV0dXJuIC1FTk9NRU07CisJfQorCisJZHJtX21vZGVfc2V0X25hbWUobW9kZSk7CisKKwltb2Rl LT50eXBlID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsK Kwlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7CisKKwljb25uZWN0b3ItPmRp c3BsYXlfaW5mby53aWR0aF9tbSA9IDcxOworCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdo dF9tbSA9IDEyNTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9w YW5lbF9mdW5jcyBzNmUzaGEyX2RybV9mdW5jcyA9IHsKKwkuZGlzYWJsZSA9IHM2ZTNoYTJfZGlz YWJsZSwKKwkudW5wcmVwYXJlID0gczZlM2hhMl91bnByZXBhcmUsCisJLnByZXBhcmUgPSBzNmUz aGEyX3ByZXBhcmUsCisJLmVuYWJsZSA9IHM2ZTNoYTJfZW5hYmxlLAorCS5nZXRfbW9kZXMgPSBz NmUzaGEyX2dldF9tb2RlcywKK307CisKK3N0YXRpYyBpbnQgczZlM2hhMl9wcm9iZShzdHJ1Y3Qg bWlwaV9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJmRzaS0+ZGV2 OworCXN0cnVjdCBzNmUzaGEyICpjdHg7CisJaW50IHJldDsKKworCWN0eCA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjdHgpCisJCXJldHVybiAt RU5PTUVNOworCisJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOworCisJY3R4LT5kZXYg PSBkZXY7CisKKwlkc2ktPmxhbmVzID0gNDsKKwlkc2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9S R0I4ODg7CisJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfQ0xPQ0tfTk9OX0NPTlRJTlVPVVM7 CisKKwljdHgtPnN1cHBsaWVzWzBdLnN1cHBseSA9ICJ2ZGQzIjsKKwljdHgtPnN1cHBsaWVzWzFd LnN1cHBseSA9ICJ2Y2kiOworCisJcmV0ID0gZGV2bV9yZWd1bGF0b3JfYnVsa19nZXQoZGV2LCBB UlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLAorCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOworCWlm IChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCByZWd1bGF0b3JzOiAl ZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwljdHgtPnJlc2V0X2dwaW8gPSBkZXZt X2dwaW9kX2dldChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoY3R4 LT5yZXNldF9ncGlvKSkgeworCQlkZXZfZXJyKGRldiwgImNhbm5vdCBnZXQgcmVzZXQtZ3Bpb3Mg JWxkXG4iLAorCQkJUFRSX0VSUihjdHgtPnJlc2V0X2dwaW8pKTsKKwkJcmV0dXJuIFBUUl9FUlIo Y3R4LT5yZXNldF9ncGlvKTsKKwl9CisKKwljdHgtPmVuYWJsZV9ncGlvID0gZGV2bV9ncGlvZF9n ZXQoZGV2LCAiZW5hYmxlIiwgR1BJT0RfT1VUX0hJR0gpOworCWlmIChJU19FUlIoY3R4LT5lbmFi bGVfZ3BpbykpIHsKKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IGVuYWJsZS1ncGlvcyAlbGRc biIsCisJCQlQVFJfRVJSKGN0eC0+ZW5hYmxlX2dwaW8pKTsKKwkJcmV0dXJuIFBUUl9FUlIoY3R4 LT5lbmFibGVfZ3Bpbyk7CisJfQorCisJY3R4LT5ibF9kZXYgPSBiYWNrbGlnaHRfZGV2aWNlX3Jl Z2lzdGVyKCJzNmUzaGEyIiwgZGV2LCBjdHgsCisJCQkJCQkmczZlM2hhMl9ibF9vcHMsIE5VTEwp OworCWlmIChJU19FUlIoY3R4LT5ibF9kZXYpKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRv IHJlZ2lzdGVyIGJhY2tsaWdodCBkZXZpY2VcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPmJs X2Rldik7CisJfQorCisJY3R4LT5ibF9kZXYtPnByb3BzLm1heF9icmlnaHRuZXNzID0gUzZFM0hB Ml9NQVhfQlJJR0hUTkVTUzsKKwljdHgtPmJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVzcyA9IFM2RTNI QTJfREVGQVVMVF9CUklHSFRORVNTOworCWN0eC0+YmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JM QU5LX1BPV0VSRE9XTjsKKworCWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKKwljdHgtPnBh bmVsLmRldiA9IGRldjsKKwljdHgtPnBhbmVsLmZ1bmNzID0gJnM2ZTNoYTJfZHJtX2Z1bmNzOwor CisJcmV0ID0gZHJtX3BhbmVsX2FkZCgmY3R4LT5wYW5lbCk7CisJaWYgKHJldCA8IDApCisJCWdv dG8gdW5yZWdpc3Rlcl9iYWNrbGlnaHQ7CisKKwlyZXQgPSBtaXBpX2RzaV9hdHRhY2goZHNpKTsK KwlpZiAocmV0IDwgMCkKKwkJZ290byByZW1vdmVfcGFuZWw7CisKKwlyZXR1cm4gcmV0OworCity ZW1vdmVfcGFuZWw6CisJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7CisKK3VucmVnaXN0 ZXJfYmFja2xpZ2h0OgorCWJhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihjdHgtPmJsX2Rldik7 CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHM2ZTNoYTJfcmVtb3ZlKHN0cnVjdCBt aXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3QgczZlM2hhMiAqY3R4ID0gbWlwaV9kc2lf Z2V0X2RydmRhdGEoZHNpKTsKKworCW1pcGlfZHNpX2RldGFjaChkc2kpOworCWRybV9wYW5lbF9y ZW1vdmUoJmN0eC0+cGFuZWwpOworCWJhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihjdHgtPmJs X2Rldik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgczZlM2hhMl9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxzNmUz aGEyIiB9LAorCXsgfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHM2ZTNoYTJfb2ZfbWF0 Y2gpOworCitzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciBzNmUzaGEyX2RyaXZlciA9IHsK KwkucHJvYmUgPSBzNmUzaGEyX3Byb2JlLAorCS5yZW1vdmUgPSBzNmUzaGEyX3JlbW92ZSwKKwku ZHJpdmVyID0geworCQkubmFtZSA9ICJwYW5lbC1zYW1zdW5nLXM2ZTNoYTIiLAorCQkub2ZfbWF0 Y2hfdGFibGUgPSBzNmUzaGEyX29mX21hdGNoLAorCX0sCit9OworbW9kdWxlX21pcGlfZHNpX2Ry aXZlcihzNmUzaGEyX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1IoIkRvbmdod2EgTGVlIDxkaDA5 LmxlZUBzYW1zdW5nLmNvbT4iKTsKK01PRFVMRV9BVVRIT1IoIkh5dW5nd29uIEh3YW5nIDxodW1h bi5od2FuZ0BzYW1zdW5nLmNvbT4iKTsKK01PRFVMRV9BVVRIT1IoIkhvZWdldW4gS3dvbiA8aG9l Z2V1bi5rd29uQHNhbXN1bmcuY29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJNSVBJLURTSSBi YXNlZCBzNmUzaGEyIEFNT0xFRCBQYW5lbCBEcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwg djIiKTsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK