From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH RFC v9 13/20] drm: imx: Support Synopsys DesignWare MIPI DSI host controller Date: Thu, 12 Feb 2015 14:01:36 +0800 Message-ID: <1423720903-24806-14-git-send-email-Ying.Liu@freescale.com> References: <1423720903-24806-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: <1423720903-24806-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: stefan.wahren@i2se.com, devicetree@vger.kernel.org, linux@arm.linux.org.uk, kernel@pengutronix.de, sboyd@codeaurora.org, linux-kernel@vger.kernel.org, a.hajda@samsung.com, andy.yan@rock-chips.com, mturquette@linaro.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgTUlQSSBEU0kg aG9zdCBjb250cm9sbGVyCndoaWNoIGlzIGVtYmVkZGVkIGluIHRoZSBpLk1YNnEvc2RsIFNvQ3Mu CgpTaWduZWQtb2ZmLWJ5OiBMaXUgWWluZyA8WWluZy5MaXVAZnJlZXNjYWxlLmNvbT4KLS0tCnY4 LT52OToKICogUmViYXNlIG9udG8gdGhlIGlteC1kcm0vbmV4dCBicmFuY2ggb2YgUGhpbGlwcCBa YWJlbCdzIG9wZW4gZ2l0IHJlcG9zaXRvcnkuCiAqIEFkZCBkcml2ZXIgY29weXJpZ2h0IGZvciAy MDE1LgoKdjctPnY4OgogKiBOb25lLgoKdjYtPnY3OgogKiBOb25lLgoKdjUtPnY2OgogKiBNYWtl IHRoZSBjaGVja3BhdGNoLnBsIHNjcmlwdCBiZSBoYXBwaWVyLgoKdjQtPnY1OgogKiBOb25lLgoK djMtPnY0OgogKiBNb3ZlIHRoZSByZWxldmFudCBkdC1iaW5kaW5ncyB0byBhIHNlcGFyYXRlIHBh dGNoIHRvIGFkZHJlc3MgU3RlZmFuCiAgIFdhaHJlbidzIGNvbW1lbnQuCgp2Mi0+djM6CiAqIFRv IGFkZHJlc3MgQW5keSBZYW4ncyBjb21tZW50cywgbW92ZSB0aGUgY29tbW9uIFN5bm9wc3lzIERl c2lnbldhcmUgTUlQSSBEU0kKICAgaG9zdCBjb250cm9sbGVyIGxvZ2ljIGludG8gaXQncyBkcm0v YnJpZGdlIGRyaXZlciBhbmQgbGVhdmUgdGhlIGkuTVggc3BlY2lmaWMKICAgbG9naWMgb25seS4K CnYxLT52MjoKICogQWRkcmVzcyBhbG1vc3QgYWxsIGNvbW1lbnRzIGZyb20gVGhpZXJyeSBSZWRp bmcgYW5kIFJ1c3NlbGwuCiAqIFVwZGF0ZSB0aGUgRFQgZG9jdW1lbnRhdGlvbiB0byByZW1vdmUg dGhlIGRpc3BsYXktdGltaW5ncyBub2RlIGluIHRoZSBwYW5lbCBub2RlLgogKiBVcGRhdGUgdGhl IERUIGRvY3VtZW50YXRpb24gdG8gc3RhdGUgdGhhdCB0aGUgbm9kZXMgd2hpY2ggcmVwcmVzZW50 IHRoZSBwb3NzaWJsZQogICBEUk0gQ1JUQ3MgdGhlIGNvbnRyb2xsZXIgbWF5IGNvbm5lY3Qgd2l0 aCBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBub2RlICJwb3J0cyIuCiAqIFJlbW92ZSB0aGUgZmxh ZyAnZW5hYmxlZCcgZnJvbSB0aGUgc3RydWN0IGlteF9taXBpX2RzaS4KICogTW92ZSB0aGUgZm9y bWF0X3RvX2JwcCgpIGZ1bmN0aW9uIGluIHYxIHRvIHRoZSBjb21tb24gRFJNIE1JUEkgRFNJIGRy aXZlci4KICogSW1wcm92ZSB0aGUgd2F5IHdlIHdhaXQgZm9yIGNoZWNrIHN0YXR1cyBmb3IgRFBI WSBhbmQgY29tbWFuZCBwYWNrZXQgdHJhbnNmZXIuCiAqIEltcHJvdmUgdGhlIERQTVMgc3VwcG9y dCBmb3IgdGhlIGVuY29kZXIuCiAqIFNwbGl0IHRoZSBmdW5jdGlvbnMgb2YgLT5ob3N0X2F0dGFj aCgpIGFuZCAtPm1vZGVfdmFsaWQoKSBjbGVhcmx5IGFzIHN1Z2dlc3RlZCBieQogICBUaGllcnJ5 IFJlZGluZy4KICogSW1wcm92ZSB0aGUgbG9naWNzIGluIGlteF9taXBpX2RzaV9kY3NfbG9uZ193 cml0ZSgpLgogKiBFbmFibGUvZGlzYWJsZSB0aGUgcGxscmVmX2NsayBhbmQgcGxscmVmX2dhdGVf Y2xrIGF0IHRoZSBjb21wb25lbnQgYmluZGluZy91bmJpbmRpbmcKICAgc3RhZ2VzIHRvIGhlbHAg cmVtb3ZlIHRoZSBmbGFnICdlbmFibGVkJy4KICogVXBkYXRlIHRoZSBtb2R1bGUgbGljZW5zZSB0 byBiZSAiR1BMIi4KICogT3RoZXIgbWlub3IgY2hhbmdlcywgc3VjaCBhcyBjb2Rpbmcgc3R5bGUg aXNzdWVzIGFuZCBtYWNybyBuYW1pbmcgaXNzdWVzLgoKIGRyaXZlcnMvZ3B1L2RybS9pbXgvS2Nv bmZpZyAgICAgICAgICAgfCAgIDcgKysKIGRyaXZlcnMvZ3B1L2RybS9pbXgvTWFrZWZpbGUgICAg ICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2lteC9kd19taXBpX2RzaS1pbXguYyB8IDIz MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDIz OCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2lteC9k d19taXBpX2RzaS1pbXguYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvS2NvbmZpZwppbmRleCAzM2NkZGRmLi43ZmFlYjQ5IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2lteC9LY29uZmlnCkBAIC01MywzICs1MywxMCBAQCBjb25maWcgRFJNX0lNWF9IRE1JCiAJ ZGVwZW5kcyBvbiBEUk1fSU1YCiAJaGVscAogCSAgQ2hvb3NlIHRoaXMgaWYgeW91IHdhbnQgdG8g dXNlIEhETUkgb24gaS5NWDYuCisKK2NvbmZpZyBEUk1fSU1YX01JUElfRFNJCisJdHJpc3RhdGUg IkZyZWVzY2FsZSBpLk1YIERSTSBNSVBJIERTSSIKKwlzZWxlY3QgRFJNX0RXX01JUElfRFNJCisJ ZGVwZW5kcyBvbiBEUk1fSU1YCisJaGVscAorCSAgQ2hvb3NlIHRoaXMgaWYgeW91IHdhbnQgdG8g dXNlIE1JUEkgRFNJIG9uIGkuTVg2LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2lteC9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvTWFrZWZpbGUKaW5kZXggZjNlY2Q4OS4uOTM5 MTliNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lteC9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaW14L01ha2VmaWxlCkBAIC0xMCwzICsxMCw0IEBAIG9iai0kKENPTkZJR19E Uk1fSU1YX0xEQikgKz0gaW14LWxkYi5vCiBpbXgtaXB1djMtY3J0Yy1vYmpzICA6PSBpcHV2My1j cnRjLm8gaXB1djMtcGxhbmUubwogb2JqLSQoQ09ORklHX0RSTV9JTVhfSVBVVjMpCSs9IGlteC1p cHV2My1jcnRjLm8KIG9iai0kKENPTkZJR19EUk1fSU1YX0hETUkpICs9IGR3X2hkbWktaW14Lm8K K29iai0kKENPTkZJR19EUk1fSU1YX01JUElfRFNJKSArPSBkd19taXBpX2RzaS1pbXgubwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2lteC9kd19taXBpX2RzaS1pbXguYyBiL2RyaXZlcnMv Z3B1L2RybS9pbXgvZHdfbWlwaV9kc2ktaW14LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNWU2ZjYyZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgv ZHdfbWlwaV9kc2ktaW14LmMKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBpLk1YIGRybSBkcml2 ZXIgLSBNSVBJIERTSSBIb3N0IENvbnRyb2xsZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt MjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg KiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMgorICogb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5jbHVkZSA8bGlu dXgvY29tcG9uZW50Lmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2luY2x1ZGUg PGxpbnV4L21mZC9zeXNjb24vaW14NnEtaW9tdXhjLWdwci5oPgorI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jl Z21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5oPgorI2luY2x1ZGUgPGRybS9icmlk Z2UvZHdfbWlwaV9kc2kuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorCisjaW5jbHVkZSAiaW14LWRybS5oIgorCisjZGVm aW5lIERSSVZFUl9OQU1FCSJpbXgtbWlwaS1kc2kiCisKK3N0cnVjdCBpbXhfbWlwaV9kc2kgewor CXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1 Y3QgcmVnbWFwICpyZWdtYXA7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpbXhfbWlwaV9k c2kgKmVuY190b19kc2koc3RydWN0IGRybV9lbmNvZGVyICplbmMpCit7CisJcmV0dXJuIGNvbnRh aW5lcl9vZihlbmMsIHN0cnVjdCBpbXhfbWlwaV9kc2ksIGVuY29kZXIpOworfQorCitzdGF0aWMg dm9pZCBpbXhfbWlwaV9kc2lfc2V0X2lwdV9kaV9tdXgoc3RydWN0IGlteF9taXBpX2RzaSAqZHNp LCBpbnQgaXB1X2RpKQoreworCXJlZ21hcF91cGRhdGVfYml0cyhkc2ktPnJlZ21hcCwgSU9NVVhD X0dQUjMsCisJCQkgICBJTVg2UV9HUFIzX01JUElfTVVYX0NUTF9NQVNLLAorCQkJICAgaXB1X2Rp IDw8IElNWDZRX0dQUjNfTUlQSV9NVVhfQ1RMX1NISUZUKTsKK30KKworc3RhdGljIHN0cnVjdCBk cm1fZW5jb2Rlcl9mdW5jcyBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9mdW5jcyA9IHsKKwkuZGVzdHJv eSA9IGlteF9kcm1fZW5jb2Rlcl9kZXN0cm95LAorfTsKKworc3RhdGljIGJvb2wgaW14X21pcGlf ZHNpX2VuY29kZXJfbW9kZV9maXh1cChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkJ CWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCQlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj IHZvaWQgaW14X21pcGlfZHNpX2VuY29kZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIpCit7CisJdTMyIGVuY29kZXJfcGl4X2ZtdCwgaW50ZXJmYWNlX3BpeF9mbXQ7CisKKwll bmNvZGVyX3BpeF9mbXQgPSBkd19taXBpX2RzaV9nZXRfZW5jb2Rlcl9waXhlbF9mb3JtYXQoZW5j b2Rlcik7CisKKwlzd2l0Y2ggKGVuY29kZXJfcGl4X2ZtdCkgeworCWNhc2UgTUlQSV9EU0lfRk1U X1JHQjg4ODoKKwkJaW50ZXJmYWNlX3BpeF9mbXQgPSBWNEwyX1BJWF9GTVRfUkdCMjQ7CisJCWJy ZWFrOworCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjU2NToKKwkJaW50ZXJmYWNlX3BpeF9mbXQgPSBW NEwyX1BJWF9GTVRfUkdCNTY1OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlCVUcoKTsKKwkJcmV0 dXJuOworCX0KKworCWlteF9kcm1fcGFuZWxfZm9ybWF0KGVuY29kZXIsIGludGVyZmFjZV9waXhf Zm10KTsKK30KKworc3RhdGljIHZvaWQgaW14X21pcGlfZHNpX2VuY29kZXJfbW9kZV9zZXQoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSwKKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7Cit9 CisKK3N0YXRpYyB2b2lkIGlteF9taXBpX2RzaV9lbmNvZGVyX2NvbW1pdChzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0IGlteF9taXBpX2RzaSAqZHNpID0gZW5jX3RvX2Rz aShlbmNvZGVyKTsKKwlpbnQgbXV4ID0gaW14X2RybV9lbmNvZGVyX2dldF9tdXhfaWQoZHNpLT5k ZXYtPm9mX25vZGUsIGVuY29kZXIpOworCisJaW14X21pcGlfZHNpX3NldF9pcHVfZGlfbXV4KGRz aSwgbXV4KTsKK30KKworc3RhdGljIHZvaWQgaW14X21pcGlfZHNpX2VuY29kZXJfZGlzYWJsZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2Vu Y29kZXJfaGVscGVyX2Z1bmNzIGlteF9taXBpX2RzaV9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsK KwkubW9kZV9maXh1cCA9IGlteF9taXBpX2RzaV9lbmNvZGVyX21vZGVfZml4dXAsCisJLnByZXBh cmUgPSBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9wcmVwYXJlLAorCS5tb2RlX3NldCA9IGlteF9taXBp X2RzaV9lbmNvZGVyX21vZGVfc2V0LAorCS5jb21taXQgPSBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9j b21taXQsCisJLmRpc2FibGUgPSBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9kaXNhYmxlLAorfTsKKwor c3RhdGljIGludCBpbXhfbWlwaV9kc2lfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwK KwkJCQkgc3RydWN0IGlteF9taXBpX2RzaSAqZHNpKQoreworCWludCByZXQ7CisKKwlyZXQgPSBp bXhfZHJtX2VuY29kZXJfcGFyc2Vfb2YoZHJtLCAmZHNpLT5lbmNvZGVyLCBkc2ktPmRldi0+b2Zf bm9kZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWRybV9lbmNvZGVyX2hlbHBlcl9h ZGQoJmRzaS0+ZW5jb2RlciwKKwkJCSAgICAgICAmaW14X21pcGlfZHNpX2VuY29kZXJfaGVscGVy X2Z1bmNzKTsKKwlkcm1fZW5jb2Rlcl9pbml0KGRybSwgJmRzaS0+ZW5jb2RlciwgJmlteF9taXBp X2RzaV9lbmNvZGVyX2Z1bmNzLAorCQkJIERSTV9NT0RFX0VOQ09ERVJfRFNJKTsKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzIGlteF9taXBpX2RzaV9tb2RlX3Zh bGlkKAorCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCQlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwkvKgorCSAqIFRoZSBWSURfUEtUX1NJWkUgZmll bGQgaW4gdGhlIERTSV9WSURfUEtUX0NGRworCSAqIHJlZ2lzdGVyIGlzIDExLWJpdC4KKwkgKi8K KwlpZiAobW9kZS0+aGRpc3BsYXkgPiAweDdmZikKKwkJcmV0dXJuIE1PREVfQkFEX0hWQUxVRTsK KworCS8qCisJICogVGhlIFZfQUNUSVZFX0xJTkVTIGZpZWxkIGluIHRoZSBEU0lfVlRJTUlOR19D RkcKKwkgKiByZWdpc3RlciBpcyAxMS1iaXQuCisJICovCisJaWYgKG1vZGUtPnZkaXNwbGF5ID4g MHg3ZmYpCisJCXJldHVybiBNT0RFX0JBRF9WVkFMVUU7CisKKwlyZXR1cm4gTU9ERV9PSzsKK30K Kworc3RhdGljIHN0cnVjdCBkd19taXBpX2RzaV9wbGF0X2RhdGEgaW14NnFfbWlwaV9kc2lfZHJ2 X2RhdGEgPSB7CisJLm1heF9kYXRhX2xhbmVzID0gMiwKKwkubW9kZV92YWxpZCA9IGlteF9taXBp X2RzaV9tb2RlX3ZhbGlkLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg aW14X21pcGlfZHNpX2R0X2lkc1tdID0geworCXsKKwkgLmNvbXBhdGlibGUgPSAiZnNsLGlteDZx LW1pcGktZHNpIiwKKwkgLmRhdGEgPSAmaW14NnFfbWlwaV9kc2lfZHJ2X2RhdGEsCisJfSwKKwl7 IC8qIHNlbnRpbmVsICovIH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbXhfbWlwaV9k c2lfZHRfaWRzKTsKKworc3RhdGljIGludCBpbXhfbWlwaV9kc2lfYmluZChzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKKwkJCSAgICAgdm9pZCAqZGF0YSkKK3sKKwlz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7CisJ Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfaWQgPQorCQkJb2ZfbWF0Y2hfZGV2aWNlKGlt eF9taXBpX2RzaV9kdF9pZHMsIGRldik7CisJY29uc3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRf ZGF0YSAqcGRhdGEgPSBvZl9pZC0+ZGF0YTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGF0 YTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOworCXN0cnVjdCBpbXhf bWlwaV9kc2kgKmRzaTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlpbnQgcmV0OworCisJZHNp ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkc2kpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRz aSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkc2ktPmRldiA9IGRldjsKKworCXJlcyA9IHBsYXRm b3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYgKCFyZXMpCisJ CXJldHVybiAtRU5PREVWOworCisJZHNpLT5yZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9i eV9waGFuZGxlKG5wLCAiZ3ByIik7CisJaWYgKElTX0VSUihkc2ktPnJlZ21hcCkpCisJCXJldHVy biBQVFJfRVJSKGRzaS0+cmVnbWFwKTsKKworCXJldCA9IGlteF9taXBpX2RzaV9yZWdpc3Rlcihk cm0sIGRzaSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWRldl9zZXRfZHJ2ZGF0YShk ZXYsIGRzaSk7CisKKwlyZXR1cm4gZHdfbWlwaV9kc2lfYmluZChkZXYsIG1hc3RlciwgZGF0YSwg JmRzaS0+ZW5jb2RlciwgcmVzLCBwZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkIGlteF9taXBpX2Rz aV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCisJdm9p ZCAqZGF0YSkKK3sKKwlyZXR1cm4gZHdfbWlwaV9kc2lfdW5iaW5kKGRldiwgbWFzdGVyLCBkYXRh KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIGlteF9taXBpX2RzaV9v cHMgPSB7CisJLmJpbmQJPSBpbXhfbWlwaV9kc2lfYmluZCwKKwkudW5iaW5kCT0gaW14X21pcGlf ZHNpX3VuYmluZCwKK307CisKK3N0YXRpYyBpbnQgaW14X21pcGlfZHNpX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJcmV0dXJuIGNvbXBvbmVudF9hZGQoJnBkZXYtPmRl diwgJmlteF9taXBpX2RzaV9vcHMpOworfQorCitzdGF0aWMgaW50IGlteF9taXBpX2RzaV9yZW1v dmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwljb21wb25lbnRfZGVsKCZwZGV2 LT5kZXYsICZpbXhfbWlwaV9kc2lfb3BzKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgaW14X21pcGlfZHNpX2RyaXZlciA9IHsKKwkucHJvYmUJCT0gaW14 X21pcGlfZHNpX3Byb2JlLAorCS5yZW1vdmUJCT0gaW14X21pcGlfZHNpX3JlbW92ZSwKKwkuZHJp dmVyCQk9IHsKKwkJLm9mX21hdGNoX3RhYmxlID0gaW14X21pcGlfZHNpX2R0X2lkcywKKwkJLm5h bWUJPSBEUklWRVJfTkFNRSwKKwl9LAorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW14X21p cGlfZHNpX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiaS5NWCBNSVBJIERTSSBob3N0 IGNvbnRyb2xsZXIgZHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJMaXUgWWluZyA8WWluZy5MaXVA ZnJlZXNjYWxlLmNvbT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygi cGxhdGZvcm06IiBEUklWRVJfTkFNRSk7Ci0tIAoyLjEuMAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK