From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH RFC v3 12/18] drm: imx: Support Synopsys DesignWare MIPI DSI host controller Date: Tue, 23 Dec 2014 11:46:33 +0800 Message-ID: <1419306399-9387-13-git-send-email-Ying.Liu@freescale.com> References: <1419306399-9387-1-git-send-email-Ying.Liu@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1419306399-9387-1-git-send-email-Ying.Liu@freescale.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: devicetree@vger.kernel.org, linux@arm.linux.org.uk, kernel@pengutronix.de, linux-kernel@vger.kernel.org, mturquette@linaro.org, linux-arm-kernel@lists.infradead.org, andyshrk@gmail.com List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgTUlQSSBEU0kg aG9zdCBjb250cm9sbGVyCndoaWNoIGlzIGVtYmVkZGVkIGluIHRoZSBpLk1YNnEvc2RsIFNvQ3Mu CgpTaWduZWQtb2ZmLWJ5OiBMaXUgWWluZyA8WWluZy5MaXVAZnJlZXNjYWxlLmNvbT4KLS0tCnYy LT52MzoKICogVG8gYWRkcmVzcyBBbmR5IFlhbidzIGNvbW1lbnRzLCBtb3ZlIHRoZSBjb21tb24g U3lub3BzeXMgRGVzaWduV2FyZSBNSVBJIERTSQogICBob3N0IGNvbnRyb2xsZXIgbG9naWMgaW50 byBpdCdzIGRybS9icmlkZ2UgZHJpdmVyIGFuZCBsZWF2ZSB0aGUgaS5NWCBzcGVjaWZpYwogICBs b2dpYyBvbmx5LgoKdjEtPnYyOgogKiBBZGRyZXNzIGFsbW9zdCBhbGwgY29tbWVudHMgZnJvbSBU aGllcnJ5IFJlZGluZyBhbmQgUnVzc2VsbC4KICogVXBkYXRlIHRoZSBEVCBkb2N1bWVudGF0aW9u IHRvIHJlbW92ZSB0aGUgZGlzcGxheS10aW1pbmdzIG5vZGUgaW4gdGhlIHBhbmVsIG5vZGUuCiAq IFVwZGF0ZSB0aGUgRFQgZG9jdW1lbnRhdGlvbiB0byBzdGF0ZSB0aGF0IHRoZSBub2RlcyB3aGlj aCByZXByZXNlbnQgdGhlIHBvc3NpYmxlCiAgIERSTSBDUlRDcyB0aGUgY29udHJvbGxlciBtYXkg Y29ubmVjdCB3aXRoIHNob3VsZCBiZSBwbGFjZWQgaW4gdGhlIG5vZGUgInBvcnRzIi4KICogUmVt b3ZlIHRoZSBmbGFnICdlbmFibGVkJyBmcm9tIHRoZSBzdHJ1Y3QgaW14X21pcGlfZHNpLgogKiBN b3ZlIHRoZSBmb3JtYXRfdG9fYnBwKCkgZnVuY3Rpb24gaW4gdjEgdG8gdGhlIGNvbW1vbiBEUk0g TUlQSSBEU0kgZHJpdmVyLgogKiBJbXByb3ZlIHRoZSB3YXkgd2Ugd2FpdCBmb3IgY2hlY2sgc3Rh dHVzIGZvciBEUEhZIGFuZCBjb21tYW5kIHBhY2tldCB0cmFuc2Zlci4KICogSW1wcm92ZSB0aGUg RFBNUyBzdXBwb3J0IGZvciB0aGUgZW5jb2Rlci4KICogU3BsaXQgdGhlIGZ1bmN0aW9ucyBvZiAt Pmhvc3RfYXR0YWNoKCkgYW5kIC0+bW9kZV92YWxpZCgpIGNsZWFybHkgYXMgc3VnZ2VzdGVkIGJ5 CiAgIFRoaWVycnkgUmVkaW5nLgogKiBJbXByb3ZlIHRoZSBsb2dpY3MgaW4gaW14X21pcGlfZHNp X2Rjc19sb25nX3dyaXRlKCkuCiAqIEVuYWJsZS9kaXNhYmxlIHRoZSBwbGxyZWZfY2xrIGFuZCBw bGxyZWZfZ2F0ZV9jbGsgYXQgdGhlIGNvbXBvbmVudCBiaW5kaW5nL3VuYmluZGluZwogICBzdGFn ZXMgdG8gaGVscCByZW1vdmUgdGhlIGZsYWcgJ2VuYWJsZWQnLgogKiBVcGRhdGUgdGhlIG1vZHVs ZSBsaWNlbnNlIHRvIGJlICJHUEwiLgogKiBPdGhlciBtaW5vciBjaGFuZ2VzLCBzdWNoIGFzIGNv ZGluZyBzdHlsZSBpc3N1ZXMgYW5kIG1hY3JvIG5hbWluZyBpc3N1ZXMuCgogLi4uL2RldmljZXRy ZWUvYmluZGluZ3MvZHJtL2lteC9taXBpX2RzaS50eHQgICAgICAgfCAgNzUgKysrKysrKwogZHJp dmVycy9ncHUvZHJtL2lteC9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwog ZHJpdmVycy9ncHUvZHJtL2lteC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogZHJpdmVycy9ncHUvZHJtL2lteC9kd19taXBpX2RzaS1pbXguYyAgICAgICAgICAgICAgfCAy MjYgKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDMwOSBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz L2RybS9pbXgvbWlwaV9kc2kudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2lteC9kd19taXBpX2RzaS1pbXguYwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNl dHJlZS9iaW5kaW5ncy9kcm0vaW14L21pcGlfZHNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNl dHJlZS9iaW5kaW5ncy9kcm0vaW14L21pcGlfZHNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi45M2NjNGVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9pbXgvbWlwaV9kc2kudHh0CkBAIC0wLDAgKzEsNzUgQEAK K2kuTVggc3BlY2lmaWMgRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIFN5bm9wc3lzIERlc2lnbldh cmUgTUlQSSBEU0kgaG9zdCBjb250cm9sbGVyCisKK01JUEkgRFNJIGhvc3QgY29udHJvbGxlcgor PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBNSVBJIERTSSBob3N0IGNvbnRyb2xsZXIg aXMgYSBTeW5vcHN5cyBEZXNpZ25XYXJlIElQLgorVGhlIGNvbW1vbiBkZXZpY2UgdHJlZSBkb2N1 bWVudGF0aW9uIGZvciB0aGlzIGNvbnRyb2xsZXIgY2FuIGJlIGZvdW5kCithdCBbMV0uCisKK1Jl cXVpcmVkIHByb3BlcnRpZXM6CisgLSAjYWRkcmVzcy1jZWxsczogU2hvdWxkIGJlIDwxPi4KKyAt ICNzaXplLWNlbGxzOiBTaG91bGQgYmUgPDA+LgorIC0gY29tcGF0aWJsZTogVGhlIGNvbXBhdGli bGUgc3RyaW5nIHNob3VsZCBiZSAiZnNsLGlteDZxLW1pcGktZHNpIgorICAgZm9yIGkuTVg2cS9z ZGwgU29Dcy4KKyAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVy IGFuZCBsZW5ndGggb2YgbWVtb3J5CisgICBtYXBwZWQgcmVnaW9uLgorIC0gaW50ZXJydXB0czog VGhlIGNvbnRyb2xsZXIncyBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBDUFUocykuCisgLSBncHI6 IFNob3VsZCBiZSA8Jmdwcj4uCisgICBUaGUgcGhhbmRsZSBwb2ludHMgdG8gdGhlIGlvbXV4Yy1n cHIgcmVnaW9uIGNvbnRhaW5pbmcgdGhlCisgICBtdWx0aXBsZXhlciBjb250cm9sIHJlZ2lzdGVy IGZvciB0aGUgY29udHJvbGxlci4KKyAtIGNsb2NrcywgY2xvY2stbmFtZXM6IFBoYW5kbGVzIHRv IHRoZSBjb250cm9sbGVyIHBsbHJlZiwgcGxscmVmX2dhdGUKKyAgIGFuZCBjb3JlX2NmZyBjbG9j a3MsIGFzIGRlc2NyaWJlZCBpbiBbMl0gYW5kIFszXS4KKworUmVxdWlyZWQgc3ViLW5vZGVzOgor IC0gcG9ydHM6IFRoaXMgbm9kZSBtYXkgY29udGFpbiB1cCB0byBmb3VyIHBvcnQgbm9kZXMgd2l0 aCBlbmRwb2ludAorICAgZGVmaW5pdGlvbnMgYXMgZGVmaW5lZCBpbiBbNF0sIGNvcnJlc3BvbmRp bmcgdG8gdGhlIGZvdXIgaW5wdXRzIHRvCisgICB0aGUgY29udHJvbGxlciBtdWx0aXBsZXhlci4K KyAtIEEgbm9kZSB0byByZXByZXNlbnQgYSBEU0kgcGVyaXBoZXJhbCBhcyBkZXNjcmliZWQgaW4g WzVdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9icmlkZ2Uv ZHdfbWlwaV9kc2kudHh0LgorWzJdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9j bG9jay9jbG9jay1iaW5kaW5ncy50eHQKK1szXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu ZGluZ3MvY2xvY2svaW14NnEtY2xvY2sudHh0CitbNF0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0CitbNV0gRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL21pcGkvZHNpL21pcGktZHNpLWJ1cy50eHQKKworZXhhbXBsZToK KwlncHI6IGlvbXV4Yy1ncHJAMDIwZTAwMDAgeworCQkvKiAuLi4gKi8KKwl9OworCisJbWlwaV9k c2k6IG1pcGlAMDIxZTAwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2Vs bHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxLW1pcGktZHNpIjsKKwkJcmVnID0g PDB4MDIxZTAwMDAgMHg0MDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDEwMiBJUlFfVFlQRV9MRVZF TF9ISUdIPjsKKwkJZ3ByID0gPCZncHI+OworCQljbG9ja3MgPSA8JmNsa3MgSU1YNlFETF9DTEtf TUlQSV9DT1JFX0NGRz4sCisJCQkgPCZjbGtzIElNWDZRRExfQ0xLX01JUElfQ09SRV9DRkc+Owor CQljbG9jay1uYW1lcyA9ICJwbGxyZWYiLCAiY29yZV9jZmciOworCisJCXBvcnRzIHsKKwkJCXBv cnRAMCB7CisJCQkJcmVnID0gPDA+OworCisJCQkJbWlwaV9tdXhfMDogZW5kcG9pbnQgeworCQkJ CQlyZW1vdGUtZW5kcG9pbnQgPSA8JmlwdTFfZGkwX21pcGk+OworCQkJCX07CisJCQl9OworCisJ CQlwb3J0QDEgeworCQkJCXJlZyA9IDwxPjsKKworCQkJCW1pcGlfbXV4XzE6IGVuZHBvaW50IHsK KwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZpcHUxX2RpMV9taXBpPjsKKwkJCQl9OworCQkJfTsK KwkJfTsKKworCQlwYW5lbCB7CisJCQljb21wYXRpYmxlID0gInRydWx5LHRmdDQ4MDgwMC0xNi1l LWRzaSI7CisJCQlyZWcgPSA8MD47CisJCQkvKiAuLi4gKi8KKwkJfTsKKwl9OwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2lteC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2lteC9LY29u ZmlnCmluZGV4IDgyZmI3NTguLmM1NzZmNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p bXgvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L0tjb25maWcKQEAgLTUxLDMgKzUx LDEwIEBAIGNvbmZpZyBEUk1fSU1YX0hETUkKIAlkZXBlbmRzIG9uIERSTV9JTVgKIAloZWxwCiAJ ICBDaG9vc2UgdGhpcyBpZiB5b3Ugd2FudCB0byB1c2UgSERNSSBvbiBpLk1YNi4KKworY29uZmln IERSTV9JTVhfTUlQSV9EU0kKKwl0cmlzdGF0ZSAiRnJlZXNjYWxlIGkuTVggRFJNIE1JUEkgRFNJ IgorCXNlbGVjdCBEUk1fRFdfTUlQSV9EU0kKKwlkZXBlbmRzIG9uIERSTV9JTVgKKwloZWxwCisJ ICBDaG9vc2UgdGhpcyBpZiB5b3Ugd2FudCB0byB1c2UgTUlQSSBEU0kgb24gaS5NWDYuCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2lt eC9NYWtlZmlsZQppbmRleCA1ODJjNDM4Li5mMGRjMjc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaW14L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvTWFrZWZpbGUKQEAg LTEwLDMgKzEwLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9JTVhfTERCKSArPSBpbXgtbGRiLm8KIGlt eC1pcHV2My1jcnRjLW9ianMgIDo9IGlwdXYzLWNydGMubyBpcHV2My1wbGFuZS5vCiBvYmotJChD T05GSUdfRFJNX0lNWF9JUFVWMykJKz0gaW14LWlwdXYzLWNydGMubwogb2JqLSQoQ09ORklHX0RS TV9JTVhfSERNSSkgKz0gaW14LWhkbWkubworb2JqLSQoQ09ORklHX0RSTV9JTVhfTUlQSV9EU0kp ICs9IGR3X21pcGlfZHNpLWlteC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2R3 X21pcGlfZHNpLWlteC5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9kd19taXBpX2RzaS1pbXguYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjUxOTZiCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9kd19taXBpX2RzaS1pbXguYwpAQCAtMCwwICsxLDIy NiBAQAorLyoKKyAqIGkuTVggZHJtIGRyaXZlciAtIE1JUEkgRFNJIEhvc3QgQ29udHJvbGxlcgor ICoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJ bmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCisgKiBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLAorICogTUEgMDIxMTAtMTMwMSwgVVNB LgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9t ZmQvc3lzY29uLmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi9pbXg2cS1pb211eGMtZ3By Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNl Lmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYy Lmg+CisjaW5jbHVkZSA8ZHJtL2JyaWRnZS9kd19taXBpX2RzaS5oPgorI2luY2x1ZGUgPGRybS9k cm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+CisKKyNpbmNs dWRlICJpbXgtZHJtLmgiCisKKyNkZWZpbmUgRFJJVkVSX05BTUUgCQkJImlteC1taXBpLWRzaSIK Kworc3RydWN0IGlteF9taXBpX2RzaSB7CisJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7CisJ c3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKK307CisKK3N0YXRp YyBpbmxpbmUgc3RydWN0IGlteF9taXBpX2RzaSAqZW5jX3RvX2RzaShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuYykKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKGVuYywgc3RydWN0IGlteF9taXBpX2Rz aSwgZW5jb2Rlcik7Cit9CisKK3N0YXRpYyB2b2lkIGlteF9taXBpX2RzaV9zZXRfaXB1X2RpX211 eChzdHJ1Y3QgaW14X21pcGlfZHNpICpkc2ksIGludCBpcHVfZGkpCit7CisJcmVnbWFwX3VwZGF0 ZV9iaXRzKGRzaS0+cmVnbWFwLCBJT01VWENfR1BSMywKKwkJCSAgIElNWDZRX0dQUjNfTUlQSV9N VVhfQ1RMX01BU0ssCisJCQkgICBpcHVfZGkgPDwgSU1YNlFfR1BSM19NSVBJX01VWF9DVExfU0hJ RlQpOworfQorCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGlteF9taXBpX2RzaV9l bmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0gaW14X2RybV9lbmNvZGVyX2Rlc3Ryb3ksCit9 OworCitzdGF0aWMgYm9vbCBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAorCQkJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUpCit7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGlteF9taXBpX2RzaV9lbmNv ZGVyX3ByZXBhcmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCXUzMiBlbmNvZGVy X3BpeF9mbXQsIGludGVyZmFjZV9waXhfZm10OworCisJZW5jb2Rlcl9waXhfZm10ID0gZHdfbWlw aV9kc2lfZ2V0X2VuY29kZXJfcGl4ZWxfZm9ybWF0KGVuY29kZXIpOworCisJc3dpdGNoIChlbmNv ZGVyX3BpeF9mbXQpIHsKKwljYXNlIE1JUElfRFNJX0ZNVF9SR0I4ODg6CisJCWludGVyZmFjZV9w aXhfZm10ID0gVjRMMl9QSVhfRk1UX1JHQjI0OworCQlicmVhazsKKwljYXNlIE1JUElfRFNJX0ZN VF9SR0I1NjU6CisJCWludGVyZmFjZV9waXhfZm10ID0gVjRMMl9QSVhfRk1UX1JHQjU2NTsKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJQlVHKCk7CisJCXJldHVybjsKKwl9CisKKwlpbXhfZHJtX3Bh bmVsX2Zvcm1hdChlbmNvZGVyLCBpbnRlcmZhY2VfcGl4X2ZtdCk7Cit9CisKK3N0YXRpYyB2b2lk IGlteF9taXBpX2RzaV9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwKKwkJCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkJICBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKK30KKworc3RhdGljIHZvaWQgaW14 X21pcGlfZHNpX2VuY29kZXJfY29tbWl0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sK KwlzdHJ1Y3QgaW14X21pcGlfZHNpICpkc2kgPSBlbmNfdG9fZHNpKGVuY29kZXIpOworCWludCBt dXggPSBpbXhfZHJtX2VuY29kZXJfZ2V0X211eF9pZChkc2ktPmRldi0+b2Zfbm9kZSwgZW5jb2Rl cik7CisKKwlpbXhfbWlwaV9kc2lfc2V0X2lwdV9kaV9tdXgoZHNpLCBtdXgpOworfQorCitzdGF0 aWMgdm9pZCBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKK3sKK30KKworc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3Mg aW14X21pcGlfZHNpX2VuY29kZXJfaGVscGVyX2Z1bmNzID0geworCS5tb2RlX2ZpeHVwID0gaW14 X21pcGlfZHNpX2VuY29kZXJfbW9kZV9maXh1cCwKKwkucHJlcGFyZSA9IGlteF9taXBpX2RzaV9l bmNvZGVyX3ByZXBhcmUsCisJLm1vZGVfc2V0ID0gaW14X21pcGlfZHNpX2VuY29kZXJfbW9kZV9z ZXQsCisJLmNvbW1pdCA9IGlteF9taXBpX2RzaV9lbmNvZGVyX2NvbW1pdCwKKwkuZGlzYWJsZSA9 IGlteF9taXBpX2RzaV9lbmNvZGVyX2Rpc2FibGUsCit9OworCitzdGF0aWMgaW50IGlteF9taXBp X2RzaV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgaW14X21pcGlfZHNp ICpkc2kpCit7CisJaW50IHJldDsKKworCXJldCA9IGlteF9kcm1fZW5jb2Rlcl9wYXJzZV9vZihk cm0sICZkc2ktPmVuY29kZXIsIGRzaS0+ZGV2LT5vZl9ub2RlKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmZHNpLT5lbmNvZGVyLCAmaW14X21p cGlfZHNpX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKKwlkcm1fZW5jb2Rlcl9pbml0KGRybSwgJmRz aS0+ZW5jb2RlciwgJmlteF9taXBpX2RzaV9lbmNvZGVyX2Z1bmNzLAorCQkJIERSTV9NT0RFX0VO Q09ERVJfRFNJKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVz IGlteF9taXBpX2RzaV9tb2RlX3ZhbGlkKAorCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAorCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwkvKiBUaGUg VklEX1BLVF9TSVpFIGZpZWxkIGluIHRoZSBEU0lfVklEX1BLVF9DRkcgcmVnaXN0ZXIgaXMgMTEt Yml0LiAqLworCWlmIChtb2RlLT5oZGlzcGxheSA+IDB4N2ZmKQorCQlyZXR1cm4gTU9ERV9CQURf SFZBTFVFOworCisJLyogVGhlIFZfQUNUSVZFX0xJTkVTIGZpZWxkIGluIHRoZSBEU0lfVlRJTUlO R19DRkcgcmVnaXN0ZXIgaXMgMTEtYml0LiAqLworCWlmIChtb2RlLT52ZGlzcGxheSA+IDB4N2Zm KQorCQlyZXR1cm4gTU9ERV9CQURfVlZBTFVFOworCisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhIGlteDZxX21pcGlfZHNpX2Rydl9kYXRh ID0geworCS5tYXhfZGF0YV9sYW5lcyA9IDIsCisJLm1vZGVfdmFsaWQgPSBpbXhfbWlwaV9kc2lf bW9kZV92YWxpZCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteF9t aXBpX2RzaV9kdF9pZHNbXSA9IHsKKwl7CisJIC5jb21wYXRpYmxlID0gImZzbCxpbXg2cS1taXBp LWRzaSIsCisJIC5kYXRhID0gJmlteDZxX21pcGlfZHNpX2Rydl9kYXRhLAorCX0sCisJeyAvKiBz ZW50aW5lbCAqLyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X21pcGlfZHNpX2R0 X2lkcyk7CisKK3N0YXRpYyBpbnQgaW14X21pcGlfZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYpOworCWNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgKm9mX2lkID0KKwkJCW9mX21hdGNoX2RldmljZShpbXhfbWlwaV9kc2lfZHRf aWRzLCBkZXYpOworCWNvbnN0IHN0cnVjdCBkd19taXBpX2RzaV9wbGF0X2RhdGEgKnBkYXRhID0g b2ZfaWQtPmRhdGE7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRhdGE7CisJc3RydWN0IGRl dmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKKwlzdHJ1Y3QgaW14X21pcGlfZHNpICpkc2k7 CisJc3RydWN0IHJlc291cmNlICpyZXM7CisJaW50IHJldDsKKworCWRzaSA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqZHNpKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkc2kpCisJCXJldHVybiAt RU5PTUVNOworCisJZHNpLT5kZXYgPSBkZXY7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3Vy Y2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWlmICghcmVzKQorCQlyZXR1cm4gLUVOT0RF VjsKKworCWRzaS0+cmVnbWFwID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShucCwg ImdwciIpOworCWlmIChJU19FUlIoZHNpLT5yZWdtYXApKQorCQlyZXR1cm4gUFRSX0VSUihkc2kt PnJlZ21hcCk7CisKKwlyZXQgPSBpbXhfbWlwaV9kc2lfcmVnaXN0ZXIoZHJtLCBkc2kpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBkc2kpOworCisJ cmV0dXJuIGR3X21pcGlfZHNpX2JpbmQoZGV2LCBtYXN0ZXIsIGRhdGEsICZkc2ktPmVuY29kZXIs IHJlcywgcGRhdGEpOworfQorCitzdGF0aWMgdm9pZCBpbXhfbWlwaV9kc2lfdW5iaW5kKHN0cnVj dCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAorCXZvaWQgKmRhdGEpCit7CisJ cmV0dXJuIGR3X21pcGlfZHNpX3VuYmluZChkZXYsIG1hc3RlciwgZGF0YSk7Cit9CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBpbXhfbWlwaV9kc2lfb3BzID0geworCS5iaW5k CT0gaW14X21pcGlfZHNpX2JpbmQsCisJLnVuYmluZAk9IGlteF9taXBpX2RzaV91bmJpbmQsCit9 OworCitzdGF0aWMgaW50IGlteF9taXBpX2RzaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQoreworCXJldHVybiBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZpbXhfbWlwaV9k c2lfb3BzKTsKK30KKworc3RhdGljIGludCBpbXhfbWlwaV9kc2lfcmVtb3ZlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2LCAmaW14X21p cGlfZHNpX29wcyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyIGlteF9taXBpX2RzaV9kcml2ZXIgPSB7CisJLnByb2JlCQk9IGlteF9taXBpX2RzaV9wcm9i ZSwKKwkucmVtb3ZlCQk9IGlteF9taXBpX2RzaV9yZW1vdmUsCisJLmRyaXZlcgkJPSB7CisJCS5v Zl9tYXRjaF90YWJsZSA9IGlteF9taXBpX2RzaV9kdF9pZHMsCisJCS5uYW1lCT0gRFJJVkVSX05B TUUsCisJfSwKK307Cittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlteF9taXBpX2RzaV9kcml2ZXIp OworCitNT0RVTEVfREVTQ1JJUFRJT04oImkuTVggTUlQSSBEU0kgaG9zdCBjb250cm9sbGVyIGRy aXZlciIpOworTU9EVUxFX0FVVEhPUigiTGl1IFlpbmcgPFlpbmcuTGl1QGZyZWVzY2FsZS5jb20+ Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOiIgRFJJ VkVSX05BTUUpOwotLSAKMi4xLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==