From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hai Li Subject: [PATCH] drm/msm/dsi: Introduce DSI configuration module Date: Thu, 13 Aug 2015 17:49:29 -0400 Message-ID: <1439502569-9477-1-git-send-email-hali@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id DFF966EE5F for ; Thu, 13 Aug 2015 14:49:44 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org V2l0aCBtb3JlIHBsYXRmb3JtcyBzdXBwb3J0ZWQsIHRoZSBEU0kgaG9zdApjb25maWd1cmF0aW9u IGFycmF5IGtlZXBzIGV4cGFuZGluZy4gVGhpcyBjaGFuZ2UKbW92ZXMgdGhvc2UgdG8gYSBzZXBh cmF0ZSBkc2lfY2ZnIG1vZHVsZS4KClNpZ25lZC1vZmYtYnk6IEhhaSBMaSA8aGFsaUBjb2RlYXVy b3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9jZmcuYyAgfCAgOTIgKysrKysrKysrKysrKysr KysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmggIHwgIDQ0ICsrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYyB8IDE4NiArKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE3NyBpbnNlcnRpb25zKCsp LCAxNDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21z bS9kc2kvZHNpX2NmZy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9k c2kvZHNpX2NmZy5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKaW5kZXggODlkZWJjNy4uMGE1NDNlYiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL01ha2VmaWxlCkBAIC01NCw2ICs1NCw3IEBAIG1zbS0kKENPTkZJR19EUk1fTVNNX0ZC REVWKSArPSBtc21fZmJkZXYubwogbXNtLSQoQ09ORklHX0NPTU1PTl9DTEspICs9IG1kcC9tZHA0 L21kcDRfbHZkc19wbGwubwogCiBtc20tJChDT05GSUdfRFJNX01TTV9EU0kpICs9IGRzaS9kc2ku byBcCisJCQlkc2kvZHNpX2NmZy5vIFwKIAkJCWRzaS9kc2lfaG9zdC5vIFwKIAkJCWRzaS9kc2lf bWFuYWdlci5vIFwKIAkJCWRzaS9waHkvZHNpX3BoeS5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZHNpL2RzaV9jZmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9j ZmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODcyZDVlCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5jCkBAIC0wLDAgKzEs OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKKyAq IG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworI2luY2x1ZGUgImRzaV9jZmcu aCIKKworLyogRFNJIHYyIGhhcyBub3QgYmVlbiBzdXBwb3J0ZWQgYnkgbm93ICovCitzdGF0aWMg Y29uc3Qgc3RydWN0IG1zbV9kc2lfY29uZmlnIGRzaV92Ml9jZmcgPSB7CisJLmlvX29mZnNldCA9 IDAsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1zbV9kc2lfY29uZmlnIG1zbTg5NzRfYXBx ODA4NF9kc2lfY2ZnID0geworCS5pb19vZmZzZXQgPSBEU0lfNkdfUkVHX1NISUZULAorCS5yZWdf Y2ZnID0geworCQkubnVtID0gNCwKKwkJLnJlZ3MgPSB7CisJCQl7Imdkc2MiLCAtMSwgLTEsIC0x LCAtMX0sCisJCQl7InZkZCIsIDMwMDAwMDAsIDMwMDAwMDAsIDE1MDAwMCwgMTAwfSwKKwkJCXsi dmRkYSIsIDEyMDAwMDAsIDEyMDAwMDAsIDEwMDAwMCwgMTAwfSwKKwkJCXsidmRkaW8iLCAxODAw MDAwLCAxODAwMDAwLCAxMDAwMDAsIDEwMH0sCisJCX0sCisJfSwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgbXNtX2RzaV9jb25maWcgbXNtODkxNl9kc2lfY2ZnID0geworCS5pb19vZmZzZXQg PSBEU0lfNkdfUkVHX1NISUZULAorCS5yZWdfY2ZnID0geworCQkubnVtID0gNCwKKwkJLnJlZ3Mg PSB7CisJCQl7Imdkc2MiLCAtMSwgLTEsIC0xLCAtMX0sCisJCQl7InZkZCIsIDI4NTAwMDAsIDI4 NTAwMDAsIDEwMDAwMCwgMTAwfSwKKwkJCXsidmRkYSIsIDEyMDAwMDAsIDEyMDAwMDAsIDEwMDAw MCwgMTAwfSwKKwkJCXsidmRkaW8iLCAxODAwMDAwLCAxODAwMDAwLCAxMDAwMDAsIDEwMH0sCisJ CX0sCisJfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXNtX2RzaV9jb25maWcgbXNtODk5 NF9kc2lfY2ZnID0geworCS5pb19vZmZzZXQgPSBEU0lfNkdfUkVHX1NISUZULAorCS5yZWdfY2Zn ID0geworCQkubnVtID0gNywKKwkJLnJlZ3MgPSB7CisJCQl7Imdkc2MiLCAtMSwgLTEsIC0xLCAt MX0sCisJCQl7InZkZGEiLCAxMjUwMDAwLCAxMjUwMDAwLCAxMDAwMDAsIDEwMH0sCisJCQl7InZk ZGlvIiwgMTgwMDAwMCwgMTgwMDAwMCwgMTAwMDAwLCAxMDB9LAorCQkJeyJ2Y2NhIiwgMTAwMDAw MCwgMTAwMDAwMCwgMTAwMDAsIDEwMH0sCisJCQl7InZkZCIsIDE4MDAwMDAsIDE4MDAwMDAsIDEw MDAwMCwgMTAwfSwKKwkJCXsibGFiX3JlZyIsIC0xLCAtMSwgLTEsIC0xfSwKKwkJCXsiaWJiX3Jl ZyIsIC0xLCAtMSwgLTEsIC0xfSwKKwkJfSwKKwl9Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IG1zbV9kc2lfY2ZnX2hhbmRsZXIgZHNpX2NmZ19oYW5kbGVyc1tdID0geworCXtNU01fRFNJX1ZF Ul9NQUpPUl9WMiwgVTMyX01BWCwgJmRzaV92Ml9jZmd9LAorCXtNU01fRFNJX1ZFUl9NQUpPUl82 RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfMCwKKwkJCQkJCSZtc204OTc0X2FwcTgwODRfZHNp X2NmZ30sCisJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8x LAorCQkJCQkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnfSwKKwl7TVNNX0RTSV9WRVJfTUFKT1Jf NkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzFfMSwKKwkJCQkJCSZtc204OTc0X2FwcTgwODRf ZHNpX2NmZ30sCisJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9W MV8yLAorCQkJCQkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnfSwKKwl7TVNNX0RTSV9WRVJfTUFK T1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzMsICZtc204OTk0X2RzaV9jZmd9LAorCXtN U01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfM18xLCAmbXNtODkx Nl9kc2lfY2ZnfSwKK307CisKK2NvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICptc21f ZHNpX2NmZ19nZXQodTMyIG1ham9yLCB1MzIgbWlub3IpCit7CisJY29uc3Qgc3RydWN0IG1zbV9k c2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBOVUxMOworCWludCBpOworCisJZm9yIChpID0gQVJS QVlfU0laRShkc2lfY2ZnX2hhbmRsZXJzKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisJCWlmICgoZHNp X2NmZ19oYW5kbGVyc1tpXS5tYWpvciA9PSBtYWpvcikgJiYKKwkJCShkc2lfY2ZnX2hhbmRsZXJz W2ldLm1pbm9yID09IG1pbm9yKSkgeworCQkJY2ZnX2huZCA9ICZkc2lfY2ZnX2hhbmRsZXJzW2ld OworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gY2ZnX2huZDsKK30KKwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5oIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kc2kvZHNpX2NmZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZjg4 NzIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmgK QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSwgVGhlIExpbnV4IEZv dW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFuZAorICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaWZuZGVm IF9fTVNNX0RTSV9DRkdfSF9fCisjZGVmaW5lIF9fTVNNX0RTSV9DRkdfSF9fCisKKyNpbmNsdWRl ICJkc2kuaCIKKworI2RlZmluZSBNU01fRFNJX1ZFUl9NQUpPUl9WMgkweDAyCisjZGVmaW5lIE1T TV9EU0lfVkVSX01BSk9SXzZHCTB4MDMKKyNkZWZpbmUgTVNNX0RTSV82R19WRVJfTUlOT1JfVjFf MAkweDEwMDAwMDAwCisjZGVmaW5lIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzEJMHgxMDAxMDAw MAorI2RlZmluZSBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8xXzEJMHgxMDAxMDAwMQorI2RlZmlu ZSBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8yCTB4MTAwMjAwMDAKKyNkZWZpbmUgTVNNX0RTSV82 R19WRVJfTUlOT1JfVjFfMwkweDEwMDMwMDAwCisjZGVmaW5lIE1TTV9EU0lfNkdfVkVSX01JTk9S X1YxXzNfMQkweDEwMDMwMDAxCisKKyNkZWZpbmUgRFNJXzZHX1JFR19TSElGVAk0CisKK3N0cnVj dCBtc21fZHNpX2NvbmZpZyB7CisJdTMyIGlvX29mZnNldDsKKwlzdHJ1Y3QgZHNpX3JlZ19jb25m aWcgcmVnX2NmZzsKK307CisKK3N0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyIHsKKwl1MzIgbWFq b3I7CisJdTMyIG1pbm9yOworCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NvbmZpZyAqY2ZnOworfTsK KworY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKm1zbV9kc2lfY2ZnX2dldCh1MzIg bWFqb3IsIHUzMiBtaW5vcik7CisKKyNlbmRpZiAvKiBfX01TTV9EU0lfQ0ZHX0hfXyAqLworCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwppbmRleCBhZjQwZDQyLi44ZDgyOTczZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jCkBAIC0yOCwxMTUgKzI4LDcgQEAKIAogI2luY2x1ZGUg ImRzaS5oIgogI2luY2x1ZGUgImRzaS54bWwuaCIKLQotI2RlZmluZSBNU01fRFNJX1ZFUl9NQUpP Ul9WMgkweDAyCi0jZGVmaW5lIE1TTV9EU0lfVkVSX01BSk9SXzZHCTB4MDMKLSNkZWZpbmUgTVNN X0RTSV82R19WRVJfTUlOT1JfVjFfMAkweDEwMDAwMDAwCi0jZGVmaW5lIE1TTV9EU0lfNkdfVkVS X01JTk9SX1YxXzEJMHgxMDAxMDAwMAotI2RlZmluZSBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8x XzEJMHgxMDAxMDAwMQotI2RlZmluZSBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8yCTB4MTAwMjAw MDAKLSNkZWZpbmUgTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfMwkweDEwMDMwMDAwCi0jZGVmaW5l IE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzNfMQkweDEwMDMwMDAxCi0KLSNkZWZpbmUgRFNJXzZH X1JFR19TSElGVAk0Ci0KLXN0cnVjdCBkc2lfY29uZmlnIHsKLQl1MzIgbWFqb3I7Ci0JdTMyIG1p bm9yOwotCXUzMiBpb19vZmZzZXQ7Ci0Jc3RydWN0IGRzaV9yZWdfY29uZmlnIHJlZ19jZmc7Ci19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRzaV9jb25maWcgZHNpX2NmZ3NbXSA9IHsKLQl7TVNN X0RTSV9WRVJfTUFKT1JfVjIsIDAsIDAsIHswLH0gfSwKLQl7IC8qIDg5NzQgdjEgKi8KLQkJLm1h am9yID0gTVNNX0RTSV9WRVJfTUFKT1JfNkcsCi0JCS5taW5vciA9IE1TTV9EU0lfNkdfVkVSX01J Tk9SX1YxXzAsCi0JCS5pb19vZmZzZXQgPSBEU0lfNkdfUkVHX1NISUZULAotCQkucmVnX2NmZyA9 IHsKLQkJCS5udW0gPSA0LAotCQkJLnJlZ3MgPSB7Ci0JCQkJeyJnZHNjIiwgLTEsIC0xLCAtMSwg LTF9LAotCQkJCXsidmRkIiwgMzAwMDAwMCwgMzAwMDAwMCwgMTUwMDAwLCAxMDB9LAotCQkJCXsi dmRkYSIsIDEyMDAwMDAsIDEyMDAwMDAsIDEwMDAwMCwgMTAwfSwKLQkJCQl7InZkZGlvIiwgMTgw MDAwMCwgMTgwMDAwMCwgMTAwMDAwLCAxMDB9LAotCQkJfSwKLQkJfSwKLQl9LAotCXsgLyogODk3 NCB2MiAqLwotCQkubWFqb3IgPSBNU01fRFNJX1ZFUl9NQUpPUl82RywKLQkJLm1pbm9yID0gTVNN X0RTSV82R19WRVJfTUlOT1JfVjFfMSwKLQkJLmlvX29mZnNldCA9IERTSV82R19SRUdfU0hJRlQs Ci0JCS5yZWdfY2ZnID0gewotCQkJLm51bSA9IDQsCi0JCQkucmVncyA9IHsKLQkJCQl7Imdkc2Mi LCAtMSwgLTEsIC0xLCAtMX0sCi0JCQkJeyJ2ZGQiLCAzMDAwMDAwLCAzMDAwMDAwLCAxNTAwMDAs IDEwMH0sCi0JCQkJeyJ2ZGRhIiwgMTIwMDAwMCwgMTIwMDAwMCwgMTAwMDAwLCAxMDB9LAotCQkJ CXsidmRkaW8iLCAxODAwMDAwLCAxODAwMDAwLCAxMDAwMDAsIDEwMH0sCi0JCQl9LAotCQl9LAot CX0sCi0JeyAvKiA4OTc0IHYzICovCi0JCS5tYWpvciA9IE1TTV9EU0lfVkVSX01BSk9SXzZHLAot CQkubWlub3IgPSBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8xXzEsCi0JCS5pb19vZmZzZXQgPSBE U0lfNkdfUkVHX1NISUZULAotCQkucmVnX2NmZyA9IHsKLQkJCS5udW0gPSA0LAotCQkJLnJlZ3Mg PSB7Ci0JCQkJeyJnZHNjIiwgLTEsIC0xLCAtMSwgLTF9LAotCQkJCXsidmRkIiwgMzAwMDAwMCwg MzAwMDAwMCwgMTUwMDAwLCAxMDB9LAotCQkJCXsidmRkYSIsIDEyMDAwMDAsIDEyMDAwMDAsIDEw MDAwMCwgMTAwfSwKLQkJCQl7InZkZGlvIiwgMTgwMDAwMCwgMTgwMDAwMCwgMTAwMDAwLCAxMDB9 LAotCQkJfSwKLQkJfSwKLQl9LAotCXsgLyogODA4NCAqLwotCQkubWFqb3IgPSBNU01fRFNJX1ZF Ul9NQUpPUl82RywKLQkJLm1pbm9yID0gTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfMiwKLQkJLmlv X29mZnNldCA9IERTSV82R19SRUdfU0hJRlQsCi0JCS5yZWdfY2ZnID0gewotCQkJLm51bSA9IDQs Ci0JCQkucmVncyA9IHsKLQkJCQl7Imdkc2MiLCAtMSwgLTEsIC0xLCAtMX0sCi0JCQkJeyJ2ZGQi LCAzMDAwMDAwLCAzMDAwMDAwLCAxNTAwMDAsIDEwMH0sCi0JCQkJeyJ2ZGRhIiwgMTIwMDAwMCwg MTIwMDAwMCwgMTAwMDAwLCAxMDB9LAotCQkJCXsidmRkaW8iLCAxODAwMDAwLCAxODAwMDAwLCAx MDAwMDAsIDEwMH0sCi0JCQl9LAotCQl9LAotCX0sCi0JeyAvKiA4OTE2ICovCi0JCS5tYWpvciA9 IE1TTV9EU0lfVkVSX01BSk9SXzZHLAotCQkubWlub3IgPSBNU01fRFNJXzZHX1ZFUl9NSU5PUl9W MV8zXzEsCi0JCS5pb19vZmZzZXQgPSBEU0lfNkdfUkVHX1NISUZULAotCQkucmVnX2NmZyA9IHsK LQkJCS5udW0gPSA0LAotCQkJLnJlZ3MgPSB7Ci0JCQkJeyJnZHNjIiwgLTEsIC0xLCAtMSwgLTF9 LAotCQkJCXsidmRkIiwgMjg1MDAwMCwgMjg1MDAwMCwgMTAwMDAwLCAxMDB9LAotCQkJCXsidmRk YSIsIDEyMDAwMDAsIDEyMDAwMDAsIDEwMDAwMCwgMTAwfSwKLQkJCQl7InZkZGlvIiwgMTgwMDAw MCwgMTgwMDAwMCwgMTAwMDAwLCAxMDB9LAotCQkJfSwKLQkJfSwKLQl9LAotCXsgLyogOHg5NCAq LwotCQkubWFqb3IgPSBNU01fRFNJX1ZFUl9NQUpPUl82RywKLQkJLm1pbm9yID0gTVNNX0RTSV82 R19WRVJfTUlOT1JfVjFfMywKLQkJLmlvX29mZnNldCA9IERTSV82R19SRUdfU0hJRlQsCi0JCS5y ZWdfY2ZnID0gewotCQkJLm51bSA9IDcsCi0JCQkucmVncyA9IHsKLQkJCQl7Imdkc2MiLCAtMSwg LTEsIC0xLCAtMX0sCi0JCQkJeyJ2ZGRhIiwgMTI1MDAwMCwgMTI1MDAwMCwgMTAwMDAwLCAxMDB9 LAotCQkJCXsidmRkaW8iLCAxODAwMDAwLCAxODAwMDAwLCAxMDAwMDAsIDEwMH0sCi0JCQkJeyJ2 Y2NhIiwgMTAwMDAwMCwgMTAwMDAwMCwgMTAwMDAsIDEwMH0sCi0JCQkJeyJ2ZGQiLCAxODAwMDAw LCAxODAwMDAwLCAxMDAwMDAsIDEwMH0sCi0JCQkJeyJsYWJfcmVnIiwgLTEsIC0xLCAtMSwgLTF9 LAotCQkJCXsiaWJiX3JlZyIsIC0xLCAtMSwgLTEsIC0xfSwKLQkJCX0sCi0JCX0KLQl9LAotfTsK KyNpbmNsdWRlICJkc2lfY2ZnLmgiCiAKIHN0YXRpYyBpbnQgZHNpX2dldF92ZXJzaW9uKGNvbnN0 IHZvaWQgX19pb21lbSAqYmFzZSwgdTMyICptYWpvciwgdTMyICptaW5vcikKIHsKQEAgLTIxNCw3 ICsxMDYsNyBAQCBzdHJ1Y3QgbXNtX2RzaV9ob3N0IHsKIAlzdHJ1Y3QgZ3Bpb19kZXNjICpkaXNw X2VuX2dwaW87CiAJc3RydWN0IGdwaW9fZGVzYyAqdGVfZ3BpbzsKIAotCWNvbnN0IHN0cnVjdCBk c2lfY29uZmlnICpjZmc7CisJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNmZ19o bmQ7CiAKIAlzdHJ1Y3QgY29tcGxldGlvbiBkbWFfY29tcDsKIAlzdHJ1Y3QgY29tcGxldGlvbiB2 aWRlb19jb21wOwpAQCAtMjU5LDYxICsxNTEsNTggQEAgc3RhdGljIHUzMiBkc2lfZ2V0X2JwcChj b25zdCBlbnVtIG1pcGlfZHNpX3BpeGVsX2Zvcm1hdCBmbXQpCiAKIHN0YXRpYyBpbmxpbmUgdTMy IGRzaV9yZWFkKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCB1MzIgcmVnKQogewotCXJl dHVybiBtc21fcmVhZGwobXNtX2hvc3QtPmN0cmxfYmFzZSArIG1zbV9ob3N0LT5jZmctPmlvX29m ZnNldCArIHJlZyk7CisJcmV0dXJuIG1zbV9yZWFkbChtc21faG9zdC0+Y3RybF9iYXNlICsgcmVn KTsKIH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBkc2lfd3JpdGUoc3RydWN0IG1zbV9kc2lfaG9zdCAq bXNtX2hvc3QsIHUzMiByZWcsIHUzMiBkYXRhKQogewotCW1zbV93cml0ZWwoZGF0YSwgbXNtX2hv c3QtPmN0cmxfYmFzZSArIG1zbV9ob3N0LT5jZmctPmlvX29mZnNldCArIHJlZyk7CisJbXNtX3dy aXRlbChkYXRhLCBtc21faG9zdC0+Y3RybF9iYXNlICsgcmVnKTsKIH0KIAogc3RhdGljIGludCBk c2lfaG9zdF9yZWd1bGF0b3JfZW5hYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsK IHN0YXRpYyB2b2lkIGRzaV9ob3N0X3JlZ3VsYXRvcl9kaXNhYmxlKHN0cnVjdCBtc21fZHNpX2hv c3QgKm1zbV9ob3N0KTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBkc2lfY29uZmlnICpkc2lfZ2V0 X2NvbmZpZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciAqZHNpX2dldF9jb25maWcoCisJCQkJCQlzdHJ1Y3QgbXNt X2RzaV9ob3N0ICptc21faG9zdCkKIHsKLQljb25zdCBzdHJ1Y3QgZHNpX2NvbmZpZyAqY2ZnOwor CWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0gTlVMTDsKIAlzdHJ1 Y3QgcmVndWxhdG9yICpnZHNjX3JlZzsKLQlpbnQgaSwgcmV0OworCWludCByZXQ7CiAJdTMyIG1h am9yID0gMCwgbWlub3IgPSAwOwogCiAJZ2RzY19yZWcgPSByZWd1bGF0b3JfZ2V0KCZtc21faG9z dC0+cGRldi0+ZGV2LCAiZ2RzYyIpOwogCWlmIChJU19FUlIoZ2RzY19yZWcpKSB7CiAJCXByX2Vy cigiJXM6IGNhbm5vdCBnZXQgZ2RzY1xuIiwgX19mdW5jX18pOwotCQlnb3RvIGZhaWw7CisJCWdv dG8gZXhpdDsKIAl9CiAJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShnZHNjX3JlZyk7CiAJaWYgKHJl dCkgewogCQlwcl9lcnIoIiVzOiB1bmFibGUgdG8gZW5hYmxlIGdkc2NcbiIsIF9fZnVuY19fKTsK LQkJcmVndWxhdG9yX3B1dChnZHNjX3JlZyk7Ci0JCWdvdG8gZmFpbDsKKwkJZ290byBwdXRfZ2Rz YzsKIAl9CiAJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKG1zbV9ob3N0LT5haGJfY2xrKTsKIAlp ZiAocmV0KSB7CiAJCXByX2VycigiJXM6IHVuYWJsZSB0byBlbmFibGUgYWhiX2Nsa1xuIiwgX19m dW5jX18pOwotCQlyZWd1bGF0b3JfZGlzYWJsZShnZHNjX3JlZyk7Ci0JCXJlZ3VsYXRvcl9wdXQo Z2RzY19yZWcpOwotCQlnb3RvIGZhaWw7CisJCWdvdG8gZGlzYWJsZV9nZHNjOwogCX0KIAogCXJl dCA9IGRzaV9nZXRfdmVyc2lvbihtc21faG9zdC0+Y3RybF9iYXNlLCAmbWFqb3IsICZtaW5vcik7 Ci0KLQljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3QtPmFoYl9jbGspOwotCXJlZ3VsYXRv cl9kaXNhYmxlKGdkc2NfcmVnKTsKLQlyZWd1bGF0b3JfcHV0KGdkc2NfcmVnKTsKIAlpZiAocmV0 KSB7CiAJCXByX2VycigiJXM6IEludmFsaWQgdmVyc2lvblxuIiwgX19mdW5jX18pOwotCQlnb3Rv IGZhaWw7CisJCWdvdG8gZGlzYWJsZV9jbGtzOwogCX0KIAotCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGRzaV9jZmdzKTsgaSsrKSB7Ci0JCWNmZyA9IGRzaV9jZmdzICsgaTsKLQkJaWYgKChj ZmctPm1ham9yID09IG1ham9yKSAmJiAoY2ZnLT5taW5vciA9PSBtaW5vcikpCi0JCQlyZXR1cm4g Y2ZnOwotCX0KLQlwcl9lcnIoIiVzOiBWZXJzaW9uICV4OiV4IG5vdCBzdXBwb3J0XG4iLCBfX2Z1 bmNfXywgbWFqb3IsIG1pbm9yKTsKKwljZmdfaG5kID0gbXNtX2RzaV9jZmdfZ2V0KG1ham9yLCBt aW5vcik7CiAKLWZhaWw6Ci0JcmV0dXJuIE5VTEw7CisJREJHKCIlczogVmVyc2lvbiAleDoleFxu IiwgX19mdW5jX18sIG1ham9yLCBtaW5vcik7CisKK2Rpc2FibGVfY2xrczoKKwljbGtfZGlzYWJs ZV91bnByZXBhcmUobXNtX2hvc3QtPmFoYl9jbGspOworZGlzYWJsZV9nZHNjOgorCXJlZ3VsYXRv cl9kaXNhYmxlKGdkc2NfcmVnKTsKK3B1dF9nZHNjOgorCXJlZ3VsYXRvcl9wdXQoZ2RzY19yZWcp OworZXhpdDoKKwlyZXR1cm4gY2ZnX2huZDsKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgbXNt X2RzaV9ob3N0ICp0b19tc21fZHNpX2hvc3Qoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QpCkBA IC0zMjQsOCArMjEzLDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbXNtX2RzaV9ob3N0ICp0b19t c21fZHNpX2hvc3Qoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QpCiBzdGF0aWMgdm9pZCBkc2lf aG9zdF9yZWd1bGF0b3JfZGlzYWJsZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsK IAlzdHJ1Y3QgcmVndWxhdG9yX2J1bGtfZGF0YSAqcyA9IG1zbV9ob3N0LT5zdXBwbGllczsKLQlj b25zdCBzdHJ1Y3QgZHNpX3JlZ19lbnRyeSAqcmVncyA9IG1zbV9ob3N0LT5jZmctPnJlZ19jZmcu cmVnczsKLQlpbnQgbnVtID0gbXNtX2hvc3QtPmNmZy0+cmVnX2NmZy5udW07CisJY29uc3Qgc3Ry dWN0IGRzaV9yZWdfZW50cnkgKnJlZ3MgPSBtc21faG9zdC0+Y2ZnX2huZC0+Y2ZnLT5yZWdfY2Zn LnJlZ3M7CisJaW50IG51bSA9IG1zbV9ob3N0LT5jZmdfaG5kLT5jZmctPnJlZ19jZmcubnVtOwog CWludCBpOwogCiAJREJHKCIiKTsKQEAgLTM0MCw4ICsyMjksOCBAQCBzdGF0aWMgdm9pZCBkc2lf aG9zdF9yZWd1bGF0b3JfZGlzYWJsZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHN0 YXRpYyBpbnQgZHNpX2hvc3RfcmVndWxhdG9yX2VuYWJsZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICpt c21faG9zdCkKIHsKIAlzdHJ1Y3QgcmVndWxhdG9yX2J1bGtfZGF0YSAqcyA9IG1zbV9ob3N0LT5z dXBwbGllczsKLQljb25zdCBzdHJ1Y3QgZHNpX3JlZ19lbnRyeSAqcmVncyA9IG1zbV9ob3N0LT5j ZmctPnJlZ19jZmcucmVnczsKLQlpbnQgbnVtID0gbXNtX2hvc3QtPmNmZy0+cmVnX2NmZy5udW07 CisJY29uc3Qgc3RydWN0IGRzaV9yZWdfZW50cnkgKnJlZ3MgPSBtc21faG9zdC0+Y2ZnX2huZC0+ Y2ZnLT5yZWdfY2ZnLnJlZ3M7CisJaW50IG51bSA9IG1zbV9ob3N0LT5jZmdfaG5kLT5jZmctPnJl Z19jZmcubnVtOwogCWludCByZXQsIGk7CiAKIAlEQkcoIiIpOwpAQCAtMzc0LDggKzI2Myw4IEBA IGZhaWw6CiBzdGF0aWMgaW50IGRzaV9yZWd1bGF0b3JfaW5pdChzdHJ1Y3QgbXNtX2RzaV9ob3N0 ICptc21faG9zdCkKIHsKIAlzdHJ1Y3QgcmVndWxhdG9yX2J1bGtfZGF0YSAqcyA9IG1zbV9ob3N0 LT5zdXBwbGllczsKLQljb25zdCBzdHJ1Y3QgZHNpX3JlZ19lbnRyeSAqcmVncyA9IG1zbV9ob3N0 LT5jZmctPnJlZ19jZmcucmVnczsKLQlpbnQgbnVtID0gbXNtX2hvc3QtPmNmZy0+cmVnX2NmZy5u dW07CisJY29uc3Qgc3RydWN0IGRzaV9yZWdfZW50cnkgKnJlZ3MgPSBtc21faG9zdC0+Y2ZnX2hu ZC0+Y2ZnLT5yZWdfY2ZnLnJlZ3M7CisJaW50IG51bSA9IG1zbV9ob3N0LT5jZmdfaG5kLT5jZmct PnJlZ19jZmcubnVtOwogCWludCBpLCByZXQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKysp CkBAIC03MTcsNiArNjA2LDcgQEAgc3RhdGljIHZvaWQgZHNpX2N0cmxfY29uZmlnKHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0LCBib29sIGVuYWJsZSwKIHsKIAl1MzIgZmxhZ3MgPSBtc21f aG9zdC0+bW9kZV9mbGFnczsKIAllbnVtIG1pcGlfZHNpX3BpeGVsX2Zvcm1hdCBtaXBpX2ZtdCA9 IG1zbV9ob3N0LT5mb3JtYXQ7CisJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNm Z19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKIAl1MzIgZGF0YSA9IDA7CiAKIAlpZiAoIWVuYWJs ZSkgewpAQCAtNzcwLDggKzY2MCw4IEBAIHN0YXRpYyB2b2lkIGRzaV9jdHJsX2NvbmZpZyhzdHJ1 Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgYm9vbCBlbmFibGUsCiAJZGF0YSB8PSBEU0lfVFJJ R19DVFJMX01EUF9UUklHR0VSKFRSSUdHRVJfTk9ORSk7CiAJZGF0YSB8PSBEU0lfVFJJR19DVFJM X0RNQV9UUklHR0VSKFRSSUdHRVJfU1cpOwogCWRhdGEgfD0gRFNJX1RSSUdfQ1RSTF9TVFJFQU0o bXNtX2hvc3QtPmNoYW5uZWwpOwotCWlmICgobXNtX2hvc3QtPmNmZy0+bWFqb3IgPT0gTVNNX0RT SV9WRVJfTUFKT1JfNkcpICYmCi0JCShtc21faG9zdC0+Y2ZnLT5taW5vciA+PSBNU01fRFNJXzZH X1ZFUl9NSU5PUl9WMV8yKSkKKwlpZiAoKGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01B Sk9SXzZHKSAmJgorCQkoY2ZnX2huZC0+bWlub3IgPj0gTVNNX0RTSV82R19WRVJfTUlOT1JfVjFf MikpCiAJCWRhdGEgfD0gRFNJX1RSSUdfQ1RSTF9CTE9DS19ETUFfV0lUSElOX0ZSQU1FOwogCWRz aV93cml0ZShtc21faG9zdCwgUkVHX0RTSV9UUklHX0NUUkwsIGRhdGEpOwogCkBAIC0xNTMxLDEz ICsxNDIxLDE2IEBAIGludCBtc21fZHNpX2hvc3RfaW5pdChzdHJ1Y3QgbXNtX2RzaSAqbXNtX2Rz aSkKIAkJZ290byBmYWlsOwogCX0KIAotCW1zbV9ob3N0LT5jZmcgPSBkc2lfZ2V0X2NvbmZpZyht c21faG9zdCk7Ci0JaWYgKCFtc21faG9zdC0+Y2ZnKSB7CisJbXNtX2hvc3QtPmNmZ19obmQgPSBk c2lfZ2V0X2NvbmZpZyhtc21faG9zdCk7CisJaWYgKCFtc21faG9zdC0+Y2ZnX2huZCkgewogCQly ZXQgPSAtRUlOVkFMOwogCQlwcl9lcnIoIiVzOiBnZXQgY29uZmlnIGZhaWxlZFxuIiwgX19mdW5j X18pOwogCQlnb3RvIGZhaWw7CiAJfQogCisJLyogZml4dXAgYmFzZSBhZGRyZXNzIGJ5IGlvIG9m ZnNldCAqLworCW1zbV9ob3N0LT5jdHJsX2Jhc2UgKz0gbXNtX2hvc3QtPmNmZ19obmQtPmNmZy0+ aW9fb2Zmc2V0OworCiAJcmV0ID0gZHNpX3JlZ3VsYXRvcl9pbml0KG1zbV9ob3N0KTsKIAlpZiAo cmV0KSB7CiAJCXByX2VycigiJXM6IHJlZ3VsYXRvciBpbml0IGZhaWxlZFxuIiwgX19mdW5jX18p OwpAQCAtMTcyNiw2ICsxNjE5LDcgQEAgaW50IG1zbV9kc2lfaG9zdF9jbWRfcngoc3RydWN0IG1p cGlfZHNpX2hvc3QgKmhvc3QsCiAJCQkJY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQog ewogCXN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0ID0gdG9fbXNtX2RzaV9ob3N0KGhvc3Qp OworCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0gbXNtX2hvc3Qt PmNmZ19obmQ7CiAJaW50IGRhdGFfYnl0ZSwgcnhfYnl0ZSwgZGxlbiwgZW5kOwogCWludCBzaG9y dF9yZXNwb25zZSwgZGlmZiwgcGt0X3NpemUsIHJldCA9IDA7CiAJY2hhciBjbWQ7CkBAIC0xNzY3 LDggKzE2NjEsOCBAQCBpbnQgbXNtX2RzaV9ob3N0X2NtZF9yeChzdHJ1Y3QgbWlwaV9kc2lfaG9z dCAqaG9zdCwKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAKLQkJaWYgKChtc21faG9zdC0+Y2Zn LT5tYWpvciA9PSBNU01fRFNJX1ZFUl9NQUpPUl82RykgJiYKLQkJCShtc21faG9zdC0+Y2ZnLT5t aW5vciA+PSBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8xKSkgeworCQlpZiAoKGNmZ19obmQtPm1h am9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZHKSAmJgorCQkJKGNmZ19obmQtPm1pbm9yID49IE1T TV9EU0lfNkdfVkVSX01JTk9SX1YxXzEpKSB7CiAJCQkvKiBDbGVhciB0aGUgUkRCS19EQVRBIHJl Z2lzdGVycyAqLwogCQkJZHNpX3dyaXRlKG1zbV9ob3N0LCBSRUdfRFNJX1JEQktfREFUQV9DVFJM LAogCQkJCQlEU0lfUkRCS19EQVRBX0NUUkxfQ0xSKTsKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmhv c3RlZCBieSBUaGUgTGludXggRm91bmRhdGlvbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK