From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH RFC v4 14/21] drm: imx: Support Synopsys DesignWare MIPI DSI host controller Date: Tue, 23 Dec 2014 18:02:12 +0800 Message-ID: <1419328939-22758-15-git-send-email-Ying.Liu@freescale.com> References: <1419328939-22758-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: <1419328939-22758-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, 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 CgpTaWduZWQtb2ZmLWJ5OiBMaXUgWWluZyA8WWluZy5MaXVAZnJlZXNjYWxlLmNvbT4KLS0tCnYz LT52NDoKICogTW92ZSB0aGUgcmVsZXZhbnQgZHQtYmluZGluZ3MgdG8gYSBzZXBhcmF0ZSBwYXRj aCB0byBhZGRyZXNzIFN0ZWZhbgogICBXYWhyZW4ncyBjb21tZW50LgoKdjItPnYzOgogKiBUbyBh ZGRyZXNzIEFuZHkgWWFuJ3MgY29tbWVudHMsIG1vdmUgdGhlIGNvbW1vbiBTeW5vcHN5cyBEZXNp Z25XYXJlIE1JUEkgRFNJCiAgIGhvc3QgY29udHJvbGxlciBsb2dpYyBpbnRvIGl0J3MgZHJtL2Jy aWRnZSBkcml2ZXIgYW5kIGxlYXZlIHRoZSBpLk1YIHNwZWNpZmljCiAgIGxvZ2ljIG9ubHkuCgp2 MS0+djI6CiAqIEFkZHJlc3MgYWxtb3N0IGFsbCBjb21tZW50cyBmcm9tIFRoaWVycnkgUmVkaW5n IGFuZCBSdXNzZWxsLgogKiBVcGRhdGUgdGhlIERUIGRvY3VtZW50YXRpb24gdG8gcmVtb3ZlIHRo ZSBkaXNwbGF5LXRpbWluZ3Mgbm9kZSBpbiB0aGUgcGFuZWwgbm9kZS4KICogVXBkYXRlIHRoZSBE VCBkb2N1bWVudGF0aW9uIHRvIHN0YXRlIHRoYXQgdGhlIG5vZGVzIHdoaWNoIHJlcHJlc2VudCB0 aGUgcG9zc2libGUKICAgRFJNIENSVENzIHRoZSBjb250cm9sbGVyIG1heSBjb25uZWN0IHdpdGgg c2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgbm9kZSAicG9ydHMiLgogKiBSZW1vdmUgdGhlIGZsYWcg J2VuYWJsZWQnIGZyb20gdGhlIHN0cnVjdCBpbXhfbWlwaV9kc2kuCiAqIE1vdmUgdGhlIGZvcm1h dF90b19icHAoKSBmdW5jdGlvbiBpbiB2MSB0byB0aGUgY29tbW9uIERSTSBNSVBJIERTSSBkcml2 ZXIuCiAqIEltcHJvdmUgdGhlIHdheSB3ZSB3YWl0IGZvciBjaGVjayBzdGF0dXMgZm9yIERQSFkg YW5kIGNvbW1hbmQgcGFja2V0IHRyYW5zZmVyLgogKiBJbXByb3ZlIHRoZSBEUE1TIHN1cHBvcnQg Zm9yIHRoZSBlbmNvZGVyLgogKiBTcGxpdCB0aGUgZnVuY3Rpb25zIG9mIC0+aG9zdF9hdHRhY2go KSBhbmQgLT5tb2RlX3ZhbGlkKCkgY2xlYXJseSBhcyBzdWdnZXN0ZWQgYnkKICAgVGhpZXJyeSBS ZWRpbmcuCiAqIEltcHJvdmUgdGhlIGxvZ2ljcyBpbiBpbXhfbWlwaV9kc2lfZGNzX2xvbmdfd3Jp dGUoKS4KICogRW5hYmxlL2Rpc2FibGUgdGhlIHBsbHJlZl9jbGsgYW5kIHBsbHJlZl9nYXRlX2Ns ayBhdCB0aGUgY29tcG9uZW50IGJpbmRpbmcvdW5iaW5kaW5nCiAgIHN0YWdlcyB0byBoZWxwIHJl bW92ZSB0aGUgZmxhZyAnZW5hYmxlZCcuCiAqIFVwZGF0ZSB0aGUgbW9kdWxlIGxpY2Vuc2UgdG8g YmUgIkdQTCIuCiAqIE90aGVyIG1pbm9yIGNoYW5nZXMsIHN1Y2ggYXMgY29kaW5nIHN0eWxlIGlz c3VlcyBhbmQgbWFjcm8gbmFtaW5nIGlzc3Vlcy4KCiBkcml2ZXJzL2dwdS9kcm0vaW14L0tjb25m aWcgICAgICAgICAgIHwgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0vaW14L01ha2VmaWxlICAgICAg ICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pbXgvZHdfbWlwaV9kc2ktaW14LmMgfCAyMjYg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMzQg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pbXgvZHdf bWlwaV9kc2ktaW14LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L0tjb25maWcg Yi9kcml2ZXJzL2dwdS9kcm0vaW14L0tjb25maWcKaW5kZXggODJmYjc1OC4uYzU3NmY2YiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lteC9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pbXgvS2NvbmZpZwpAQCAtNTEsMyArNTEsMTAgQEAgY29uZmlnIERSTV9JTVhfSERNSQogCWRl cGVuZHMgb24gRFJNX0lNWAogCWhlbHAKIAkgIENob29zZSB0aGlzIGlmIHlvdSB3YW50IHRvIHVz ZSBIRE1JIG9uIGkuTVg2LgorCitjb25maWcgRFJNX0lNWF9NSVBJX0RTSQorCXRyaXN0YXRlICJG cmVlc2NhbGUgaS5NWCBEUk0gTUlQSSBEU0kiCisJc2VsZWN0IERSTV9EV19NSVBJX0RTSQorCWRl cGVuZHMgb24gRFJNX0lNWAorCWhlbHAKKwkgIENob29zZSB0aGlzIGlmIHlvdSB3YW50IHRvIHVz ZSBNSVBJIERTSSBvbiBpLk1YNi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaW14L01ha2VmaWxlCmluZGV4IDU4MmM0MzguLmYwZGMy NzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2lteC9NYWtlZmlsZQpAQCAtMTAsMyArMTAsNCBAQCBvYmotJChDT05GSUdfRFJN X0lNWF9MREIpICs9IGlteC1sZGIubwogaW14LWlwdXYzLWNydGMtb2JqcyAgOj0gaXB1djMtY3J0 Yy5vIGlwdXYzLXBsYW5lLm8KIG9iai0kKENPTkZJR19EUk1fSU1YX0lQVVYzKQkrPSBpbXgtaXB1 djMtY3J0Yy5vCiBvYmotJChDT05GSUdfRFJNX0lNWF9IRE1JKSArPSBpbXgtaGRtaS5vCitvYmot JChDT05GSUdfRFJNX0lNWF9NSVBJX0RTSSkgKz0gZHdfbWlwaV9kc2ktaW14Lm8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvZHdfbWlwaV9kc2ktaW14LmMgYi9kcml2ZXJzL2dwdS9k cm0vaW14L2R3X21pcGlfZHNpLWlteC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjVmNTE5NmIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2R3X21p cGlfZHNpLWlteC5jCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICogaS5NWCBkcm0gZHJpdmVyIC0g TUlQSSBEU0kgSG9zdCBDb250cm9sbGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQg RnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIKKyAqIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sCisgKiBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbXBv bmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KKyNpbmNsdWRlIDxsaW51eC9t ZmQvc3lzY29uL2lteDZxLWlvbXV4Yy1ncHIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K KyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4K KyNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4KKyNpbmNsdWRlIDxkcm0vYnJpZGdlL2R3X21p cGlfZHNpLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRy bS9kcm1fbWlwaV9kc2kuaD4KKworI2luY2x1ZGUgImlteC1kcm0uaCIKKworI2RlZmluZSBEUklW RVJfTkFNRSAJCQkiaW14LW1pcGktZHNpIgorCitzdHJ1Y3QgaW14X21pcGlfZHNpIHsKKwlzdHJ1 Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHJl Z21hcCAqcmVnbWFwOworfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaW14X21pcGlfZHNpICpl bmNfdG9fZHNpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jKQoreworCXJldHVybiBjb250YWluZXJf b2YoZW5jLCBzdHJ1Y3QgaW14X21pcGlfZHNpLCBlbmNvZGVyKTsKK30KKworc3RhdGljIHZvaWQg aW14X21pcGlfZHNpX3NldF9pcHVfZGlfbXV4KHN0cnVjdCBpbXhfbWlwaV9kc2kgKmRzaSwgaW50 IGlwdV9kaSkKK3sKKwlyZWdtYXBfdXBkYXRlX2JpdHMoZHNpLT5yZWdtYXAsIElPTVVYQ19HUFIz LAorCQkJICAgSU1YNlFfR1BSM19NSVBJX01VWF9DVExfTUFTSywKKwkJCSAgIGlwdV9kaSA8PCBJ TVg2UV9HUFIzX01JUElfTVVYX0NUTF9TSElGVCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2Vu Y29kZXJfZnVuY3MgaW14X21pcGlfZHNpX2VuY29kZXJfZnVuY3MgPSB7CisJLmRlc3Ryb3kgPSBp bXhfZHJtX2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyBib29sIGlteF9taXBpX2RzaV9l bmNvZGVyX21vZGVfZml4dXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkgICAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJCSAgICBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3Rh dGljIHZvaWQgaW14X21pcGlfZHNpX2VuY29kZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCit7CisJdTMyIGVuY29kZXJfcGl4X2ZtdCwgaW50ZXJmYWNlX3BpeF9mbXQ7CisK KwllbmNvZGVyX3BpeF9mbXQgPSBkd19taXBpX2RzaV9nZXRfZW5jb2Rlcl9waXhlbF9mb3JtYXQo ZW5jb2Rlcik7CisKKwlzd2l0Y2ggKGVuY29kZXJfcGl4X2ZtdCkgeworCWNhc2UgTUlQSV9EU0lf Rk1UX1JHQjg4ODoKKwkJaW50ZXJmYWNlX3BpeF9mbXQgPSBWNEwyX1BJWF9GTVRfUkdCMjQ7CisJ CWJyZWFrOworCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjU2NToKKwkJaW50ZXJmYWNlX3BpeF9mbXQg PSBWNEwyX1BJWF9GTVRfUkdCNTY1OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlCVUcoKTsKKwkJ cmV0dXJuOworCX0KKworCWlteF9kcm1fcGFuZWxfZm9ybWF0KGVuY29kZXIsIGludGVyZmFjZV9w aXhfZm10KTsKK30KKworc3RhdGljIHZvaWQgaW14X21pcGlfZHNpX2VuY29kZXJfbW9kZV9zZXQo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAorCQkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl KQoreworfQorCitzdGF0aWMgdm9pZCBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9jb21taXQoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBpbXhfbWlwaV9kc2kgKmRzaSA9IGVu Y190b19kc2koZW5jb2Rlcik7CisJaW50IG11eCA9IGlteF9kcm1fZW5jb2Rlcl9nZXRfbXV4X2lk KGRzaS0+ZGV2LT5vZl9ub2RlLCBlbmNvZGVyKTsKKworCWlteF9taXBpX2RzaV9zZXRfaXB1X2Rp X211eChkc2ksIG11eCk7Cit9CisKK3N0YXRpYyB2b2lkIGlteF9taXBpX2RzaV9lbmNvZGVyX2Rp c2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworfQorCitzdGF0aWMgc3RydWN0 IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9oZWxwZXJfZnVu Y3MgPSB7CisJLm1vZGVfZml4dXAgPSBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9tb2RlX2ZpeHVwLAor CS5wcmVwYXJlID0gaW14X21pcGlfZHNpX2VuY29kZXJfcHJlcGFyZSwKKwkubW9kZV9zZXQgPSBp bXhfbWlwaV9kc2lfZW5jb2Rlcl9tb2RlX3NldCwKKwkuY29tbWl0ID0gaW14X21pcGlfZHNpX2Vu Y29kZXJfY29tbWl0LAorCS5kaXNhYmxlID0gaW14X21pcGlfZHNpX2VuY29kZXJfZGlzYWJsZSwK K307CisKK3N0YXRpYyBpbnQgaW14X21pcGlfZHNpX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNl ICpkcm0sIHN0cnVjdCBpbXhfbWlwaV9kc2kgKmRzaSkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0g aW14X2RybV9lbmNvZGVyX3BhcnNlX29mKGRybSwgJmRzaS0+ZW5jb2RlciwgZHNpLT5kZXYtPm9m X25vZGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlkcm1fZW5jb2Rlcl9oZWxwZXJf YWRkKCZkc2ktPmVuY29kZXIsICZpbXhfbWlwaV9kc2lfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOwor CWRybV9lbmNvZGVyX2luaXQoZHJtLCAmZHNpLT5lbmNvZGVyLCAmaW14X21pcGlfZHNpX2VuY29k ZXJfZnVuY3MsCisJCQkgRFJNX01PREVfRU5DT0RFUl9EU0kpOworCXJldHVybiAwOworfQorCitz dGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgaW14X21pcGlfZHNpX21vZGVfdmFsaWQoCisJCQkJ CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlKQoreworCS8qIFRoZSBWSURfUEtUX1NJWkUgZmllbGQgaW4gdGhlIERTSV9W SURfUEtUX0NGRyByZWdpc3RlciBpcyAxMS1iaXQuICovCisJaWYgKG1vZGUtPmhkaXNwbGF5ID4g MHg3ZmYpCisJCXJldHVybiBNT0RFX0JBRF9IVkFMVUU7CisKKwkvKiBUaGUgVl9BQ1RJVkVfTElO RVMgZmllbGQgaW4gdGhlIERTSV9WVElNSU5HX0NGRyByZWdpc3RlciBpcyAxMS1iaXQuICovCisJ aWYgKG1vZGUtPnZkaXNwbGF5ID4gMHg3ZmYpCisJCXJldHVybiBNT0RFX0JBRF9WVkFMVUU7CisK KwlyZXR1cm4gTU9ERV9PSzsKK30KKworc3RhdGljIHN0cnVjdCBkd19taXBpX2RzaV9wbGF0X2Rh dGEgaW14NnFfbWlwaV9kc2lfZHJ2X2RhdGEgPSB7CisJLm1heF9kYXRhX2xhbmVzID0gMiwKKwku bW9kZV92YWxpZCA9IGlteF9taXBpX2RzaV9tb2RlX3ZhbGlkLAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X21pcGlfZHNpX2R0X2lkc1tdID0geworCXsKKwkgLmNv bXBhdGlibGUgPSAiZnNsLGlteDZxLW1pcGktZHNpIiwKKwkgLmRhdGEgPSAmaW14NnFfbWlwaV9k c2lfZHJ2X2RhdGEsCisJfSwKKwl7IC8qIHNlbnRpbmVsICovIH0KK307CitNT0RVTEVfREVWSUNF X1RBQkxFKG9mLCBpbXhfbWlwaV9kc2lfZHRfaWRzKTsKKworc3RhdGljIGludCBpbXhfbWlwaV9k c2lfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAq ZGF0YSkKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2 aWNlKGRldik7CisJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfaWQgPQorCQkJb2ZfbWF0 Y2hfZGV2aWNlKGlteF9taXBpX2RzaV9kdF9pZHMsIGRldik7CisJY29uc3Qgc3RydWN0IGR3X21p cGlfZHNpX3BsYXRfZGF0YSAqcGRhdGEgPSBvZl9pZC0+ZGF0YTsKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtID0gZGF0YTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOwor CXN0cnVjdCBpbXhfbWlwaV9kc2kgKmRzaTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlpbnQg cmV0OworCisJZHNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkc2kpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIWRzaSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkc2ktPmRldiA9IGRldjsKKwor CXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJ aWYgKCFyZXMpCisJCXJldHVybiAtRU5PREVWOworCisJZHNpLT5yZWdtYXAgPSBzeXNjb25fcmVn bWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAiZ3ByIik7CisJaWYgKElTX0VSUihkc2ktPnJlZ21h cCkpCisJCXJldHVybiBQVFJfRVJSKGRzaS0+cmVnbWFwKTsKKworCXJldCA9IGlteF9taXBpX2Rz aV9yZWdpc3Rlcihkcm0sIGRzaSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWRldl9z ZXRfZHJ2ZGF0YShkZXYsIGRzaSk7CisKKwlyZXR1cm4gZHdfbWlwaV9kc2lfYmluZChkZXYsIG1h c3RlciwgZGF0YSwgJmRzaS0+ZW5jb2RlciwgcmVzLCBwZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lk IGlteF9taXBpX2RzaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpt YXN0ZXIsCisJdm9pZCAqZGF0YSkKK3sKKwlyZXR1cm4gZHdfbWlwaV9kc2lfdW5iaW5kKGRldiwg bWFzdGVyLCBkYXRhKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIGlt eF9taXBpX2RzaV9vcHMgPSB7CisJLmJpbmQJPSBpbXhfbWlwaV9kc2lfYmluZCwKKwkudW5iaW5k CT0gaW14X21pcGlfZHNpX3VuYmluZCwKK307CisKK3N0YXRpYyBpbnQgaW14X21pcGlfZHNpX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJcmV0dXJuIGNvbXBvbmVudF9h ZGQoJnBkZXYtPmRldiwgJmlteF9taXBpX2RzaV9vcHMpOworfQorCitzdGF0aWMgaW50IGlteF9t aXBpX2RzaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwljb21wb25l bnRfZGVsKCZwZGV2LT5kZXYsICZpbXhfbWlwaV9kc2lfb3BzKTsKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW14X21pcGlfZHNpX2RyaXZlciA9IHsKKwku cHJvYmUJCT0gaW14X21pcGlfZHNpX3Byb2JlLAorCS5yZW1vdmUJCT0gaW14X21pcGlfZHNpX3Jl bW92ZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm9mX21hdGNoX3RhYmxlID0gaW14X21pcGlfZHNpX2R0 X2lkcywKKwkJLm5hbWUJPSBEUklWRVJfTkFNRSwKKwl9LAorfTsKK21vZHVsZV9wbGF0Zm9ybV9k cml2ZXIoaW14X21pcGlfZHNpX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiaS5NWCBN SVBJIERTSSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIik7CitNT0RVTEVfQVVUSE9SKCJMaXUgWWlu ZyA8WWluZy5MaXVAZnJlZXNjYWxlLmNvbT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01P RFVMRV9BTElBUygicGxhdGZvcm06IiBEUklWRVJfTkFNRSk7Ci0tIAoyLjEuMAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK