From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH RFC v5 14/21] drm: imx: Support Synopsys DesignWare MIPI DSI host controller Date: Wed, 24 Dec 2014 16:39:36 +0800 Message-ID: <1419410383-6359-15-git-send-email-Ying.Liu@freescale.com> References: <1419410383-6359-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: <1419410383-6359-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, a.hajda@samsung.com, mturquette@linaro.org, linux-arm-kernel@lists.infradead.org, andyshrk@gmail.com List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgTUlQSSBEU0kg aG9zdCBjb250cm9sbGVyCndoaWNoIGlzIGVtYmVkZGVkIGluIHRoZSBpLk1YNnEvc2RsIFNvQ3Mu CgpTaWduZWQtb2ZmLWJ5OiBMaXUgWWluZyA8WWluZy5MaXVAZnJlZXNjYWxlLmNvbT4KLS0tCnY0 LT52NToKICogTm9uZS4KCnYzLT52NDoKICogTW92ZSB0aGUgcmVsZXZhbnQgZHQtYmluZGluZ3Mg dG8gYSBzZXBhcmF0ZSBwYXRjaCB0byBhZGRyZXNzIFN0ZWZhbgogICBXYWhyZW4ncyBjb21tZW50 LgoKdjItPnYzOgogKiBUbyBhZGRyZXNzIEFuZHkgWWFuJ3MgY29tbWVudHMsIG1vdmUgdGhlIGNv bW1vbiBTeW5vcHN5cyBEZXNpZ25XYXJlIE1JUEkgRFNJCiAgIGhvc3QgY29udHJvbGxlciBsb2dp YyBpbnRvIGl0J3MgZHJtL2JyaWRnZSBkcml2ZXIgYW5kIGxlYXZlIHRoZSBpLk1YIHNwZWNpZmlj CiAgIGxvZ2ljIG9ubHkuCgp2MS0+djI6CiAqIEFkZHJlc3MgYWxtb3N0IGFsbCBjb21tZW50cyBm cm9tIFRoaWVycnkgUmVkaW5nIGFuZCBSdXNzZWxsLgogKiBVcGRhdGUgdGhlIERUIGRvY3VtZW50 YXRpb24gdG8gcmVtb3ZlIHRoZSBkaXNwbGF5LXRpbWluZ3Mgbm9kZSBpbiB0aGUgcGFuZWwgbm9k ZS4KICogVXBkYXRlIHRoZSBEVCBkb2N1bWVudGF0aW9uIHRvIHN0YXRlIHRoYXQgdGhlIG5vZGVz IHdoaWNoIHJlcHJlc2VudCB0aGUgcG9zc2libGUKICAgRFJNIENSVENzIHRoZSBjb250cm9sbGVy IG1heSBjb25uZWN0IHdpdGggc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgbm9kZSAicG9ydHMiLgog KiBSZW1vdmUgdGhlIGZsYWcgJ2VuYWJsZWQnIGZyb20gdGhlIHN0cnVjdCBpbXhfbWlwaV9kc2ku CiAqIE1vdmUgdGhlIGZvcm1hdF90b19icHAoKSBmdW5jdGlvbiBpbiB2MSB0byB0aGUgY29tbW9u IERSTSBNSVBJIERTSSBkcml2ZXIuCiAqIEltcHJvdmUgdGhlIHdheSB3ZSB3YWl0IGZvciBjaGVj ayBzdGF0dXMgZm9yIERQSFkgYW5kIGNvbW1hbmQgcGFja2V0IHRyYW5zZmVyLgogKiBJbXByb3Zl IHRoZSBEUE1TIHN1cHBvcnQgZm9yIHRoZSBlbmNvZGVyLgogKiBTcGxpdCB0aGUgZnVuY3Rpb25z IG9mIC0+aG9zdF9hdHRhY2goKSBhbmQgLT5tb2RlX3ZhbGlkKCkgY2xlYXJseSBhcyBzdWdnZXN0 ZWQgYnkKICAgVGhpZXJyeSBSZWRpbmcuCiAqIEltcHJvdmUgdGhlIGxvZ2ljcyBpbiBpbXhfbWlw aV9kc2lfZGNzX2xvbmdfd3JpdGUoKS4KICogRW5hYmxlL2Rpc2FibGUgdGhlIHBsbHJlZl9jbGsg YW5kIHBsbHJlZl9nYXRlX2NsayBhdCB0aGUgY29tcG9uZW50IGJpbmRpbmcvdW5iaW5kaW5nCiAg IHN0YWdlcyB0byBoZWxwIHJlbW92ZSB0aGUgZmxhZyAnZW5hYmxlZCcuCiAqIFVwZGF0ZSB0aGUg bW9kdWxlIGxpY2Vuc2UgdG8gYmUgIkdQTCIuCiAqIE90aGVyIG1pbm9yIGNoYW5nZXMsIHN1Y2gg YXMgY29kaW5nIHN0eWxlIGlzc3VlcyBhbmQgbWFjcm8gbmFtaW5nIGlzc3Vlcy4KCiBkcml2ZXJz L2dwdS9kcm0vaW14L0tjb25maWcgICAgICAgICAgIHwgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0v aW14L01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pbXgvZHdfbWlw aV9kc2ktaW14LmMgfCAyMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCAyMzQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pbXgvZHdfbWlwaV9kc2ktaW14LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaW14L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vaW14L0tjb25maWcKaW5kZXggODJm Yjc1OC4uYzU3NmY2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lteC9LY29uZmlnCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvS2NvbmZpZwpAQCAtNTEsMyArNTEsMTAgQEAgY29uZmln IERSTV9JTVhfSERNSQogCWRlcGVuZHMgb24gRFJNX0lNWAogCWhlbHAKIAkgIENob29zZSB0aGlz IGlmIHlvdSB3YW50IHRvIHVzZSBIRE1JIG9uIGkuTVg2LgorCitjb25maWcgRFJNX0lNWF9NSVBJ X0RTSQorCXRyaXN0YXRlICJGcmVlc2NhbGUgaS5NWCBEUk0gTUlQSSBEU0kiCisJc2VsZWN0IERS TV9EV19NSVBJX0RTSQorCWRlcGVuZHMgb24gRFJNX0lNWAorCWhlbHAKKwkgIENob29zZSB0aGlz IGlmIHlvdSB3YW50IHRvIHVzZSBNSVBJIERTSSBvbiBpLk1YNi4KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pbXgvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaW14L01ha2VmaWxlCmlu ZGV4IDU4MmM0MzguLmYwZGMyNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9NYWtlZmlsZQpAQCAtMTAsMyArMTAsNCBA QCBvYmotJChDT05GSUdfRFJNX0lNWF9MREIpICs9IGlteC1sZGIubwogaW14LWlwdXYzLWNydGMt b2JqcyAgOj0gaXB1djMtY3J0Yy5vIGlwdXYzLXBsYW5lLm8KIG9iai0kKENPTkZJR19EUk1fSU1Y X0lQVVYzKQkrPSBpbXgtaXB1djMtY3J0Yy5vCiBvYmotJChDT05GSUdfRFJNX0lNWF9IRE1JKSAr PSBpbXgtaGRtaS5vCitvYmotJChDT05GSUdfRFJNX0lNWF9NSVBJX0RTSSkgKz0gZHdfbWlwaV9k c2ktaW14Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvZHdfbWlwaV9kc2ktaW14 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2R3X21pcGlfZHNpLWlteC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNTE5NmIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaW14L2R3X21pcGlfZHNpLWlteC5jCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICog aS5NWCBkcm0gZHJpdmVyIC0gTUlQSSBEU0kgSG9zdCBDb250cm9sbGVyCisgKgorICogQ29weXJp Z2h0IChDKSAyMDExLTIwMTQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIKKyAqIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs IEZpZnRoIEZsb29yLCBCb3N0b24sCisgKiBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4K KyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uL2lteDZxLWlvbXV4Yy1ncHIuaD4KKyNpbmNsdWRl IDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KKyNpbmNsdWRl IDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4KKyNpbmNsdWRl IDxkcm0vYnJpZGdlL2R3X21pcGlfZHNpLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBl ci5oPgorI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KKworI2luY2x1ZGUgImlteC1kcm0u aCIKKworI2RlZmluZSBEUklWRVJfTkFNRSAJCQkiaW14LW1pcGktZHNpIgorCitzdHJ1Y3QgaW14 X21pcGlfZHNpIHsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgZGV2aWNl ICpkZXY7CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworfTsKKworc3RhdGljIGlubGluZSBzdHJ1 Y3QgaW14X21pcGlfZHNpICplbmNfdG9fZHNpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jKQorewor CXJldHVybiBjb250YWluZXJfb2YoZW5jLCBzdHJ1Y3QgaW14X21pcGlfZHNpLCBlbmNvZGVyKTsK K30KKworc3RhdGljIHZvaWQgaW14X21pcGlfZHNpX3NldF9pcHVfZGlfbXV4KHN0cnVjdCBpbXhf bWlwaV9kc2kgKmRzaSwgaW50IGlwdV9kaSkKK3sKKwlyZWdtYXBfdXBkYXRlX2JpdHMoZHNpLT5y ZWdtYXAsIElPTVVYQ19HUFIzLAorCQkJICAgSU1YNlFfR1BSM19NSVBJX01VWF9DVExfTUFTSywK KwkJCSAgIGlwdV9kaSA8PCBJTVg2UV9HUFIzX01JUElfTVVYX0NUTF9TSElGVCk7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgaW14X21pcGlfZHNpX2VuY29kZXJfZnVuY3Mg PSB7CisJLmRlc3Ryb3kgPSBpbXhfZHJtX2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyBi b29sIGlteF9taXBpX2RzaV9lbmNvZGVyX21vZGVfZml4dXAoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyLAorCQkJCQkgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJ CQkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKKwlyZXR1 cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgaW14X21pcGlfZHNpX2VuY29kZXJfcHJlcGFyZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJdTMyIGVuY29kZXJfcGl4X2ZtdCwgaW50 ZXJmYWNlX3BpeF9mbXQ7CisKKwllbmNvZGVyX3BpeF9mbXQgPSBkd19taXBpX2RzaV9nZXRfZW5j b2Rlcl9waXhlbF9mb3JtYXQoZW5jb2Rlcik7CisKKwlzd2l0Y2ggKGVuY29kZXJfcGl4X2ZtdCkg eworCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjg4ODoKKwkJaW50ZXJmYWNlX3BpeF9mbXQgPSBWNEwy X1BJWF9GTVRfUkdCMjQ7CisJCWJyZWFrOworCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjU2NToKKwkJ aW50ZXJmYWNlX3BpeF9mbXQgPSBWNEwyX1BJWF9GTVRfUkdCNTY1OworCQlicmVhazsKKwlkZWZh dWx0OgorCQlCVUcoKTsKKwkJcmV0dXJuOworCX0KKworCWlteF9kcm1fcGFuZWxfZm9ybWF0KGVu Y29kZXIsIGludGVyZmFjZV9waXhfZm10KTsKK30KKworc3RhdGljIHZvaWQgaW14X21pcGlfZHNp X2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlKQoreworfQorCitzdGF0aWMgdm9pZCBpbXhfbWlwaV9kc2lfZW5j b2Rlcl9jb21taXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBpbXhf bWlwaV9kc2kgKmRzaSA9IGVuY190b19kc2koZW5jb2Rlcik7CisJaW50IG11eCA9IGlteF9kcm1f ZW5jb2Rlcl9nZXRfbXV4X2lkKGRzaS0+ZGV2LT5vZl9ub2RlLCBlbmNvZGVyKTsKKworCWlteF9t aXBpX2RzaV9zZXRfaXB1X2RpX211eChkc2ksIG11eCk7Cit9CisKK3N0YXRpYyB2b2lkIGlteF9t aXBpX2RzaV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQorewor fQorCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBpbXhfbWlwaV9kc2lf ZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CisJLm1vZGVfZml4dXAgPSBpbXhfbWlwaV9kc2lfZW5j b2Rlcl9tb2RlX2ZpeHVwLAorCS5wcmVwYXJlID0gaW14X21pcGlfZHNpX2VuY29kZXJfcHJlcGFy ZSwKKwkubW9kZV9zZXQgPSBpbXhfbWlwaV9kc2lfZW5jb2Rlcl9tb2RlX3NldCwKKwkuY29tbWl0 ID0gaW14X21pcGlfZHNpX2VuY29kZXJfY29tbWl0LAorCS5kaXNhYmxlID0gaW14X21pcGlfZHNp X2VuY29kZXJfZGlzYWJsZSwKK307CisKK3N0YXRpYyBpbnQgaW14X21pcGlfZHNpX3JlZ2lzdGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBpbXhfbWlwaV9kc2kgKmRzaSkKK3sKKwlp bnQgcmV0OworCisJcmV0ID0gaW14X2RybV9lbmNvZGVyX3BhcnNlX29mKGRybSwgJmRzaS0+ZW5j b2RlciwgZHNpLT5kZXYtPm9mX25vZGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlk cm1fZW5jb2Rlcl9oZWxwZXJfYWRkKCZkc2ktPmVuY29kZXIsICZpbXhfbWlwaV9kc2lfZW5jb2Rl cl9oZWxwZXJfZnVuY3MpOworCWRybV9lbmNvZGVyX2luaXQoZHJtLCAmZHNpLT5lbmNvZGVyLCAm aW14X21pcGlfZHNpX2VuY29kZXJfZnVuY3MsCisJCQkgRFJNX01PREVfRU5DT0RFUl9EU0kpOwor CXJldHVybiAwOworfQorCitzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgaW14X21pcGlfZHNp X21vZGVfdmFsaWQoCisJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJ CXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCS8qIFRoZSBWSURfUEtUX1NJWkUg ZmllbGQgaW4gdGhlIERTSV9WSURfUEtUX0NGRyByZWdpc3RlciBpcyAxMS1iaXQuICovCisJaWYg KG1vZGUtPmhkaXNwbGF5ID4gMHg3ZmYpCisJCXJldHVybiBNT0RFX0JBRF9IVkFMVUU7CisKKwkv KiBUaGUgVl9BQ1RJVkVfTElORVMgZmllbGQgaW4gdGhlIERTSV9WVElNSU5HX0NGRyByZWdpc3Rl ciBpcyAxMS1iaXQuICovCisJaWYgKG1vZGUtPnZkaXNwbGF5ID4gMHg3ZmYpCisJCXJldHVybiBN T0RFX0JBRF9WVkFMVUU7CisKKwlyZXR1cm4gTU9ERV9PSzsKK30KKworc3RhdGljIHN0cnVjdCBk d19taXBpX2RzaV9wbGF0X2RhdGEgaW14NnFfbWlwaV9kc2lfZHJ2X2RhdGEgPSB7CisJLm1heF9k YXRhX2xhbmVzID0gMiwKKwkubW9kZV92YWxpZCA9IGlteF9taXBpX2RzaV9tb2RlX3ZhbGlkLAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X21pcGlfZHNpX2R0X2lk c1tdID0geworCXsKKwkgLmNvbXBhdGlibGUgPSAiZnNsLGlteDZxLW1pcGktZHNpIiwKKwkgLmRh dGEgPSAmaW14NnFfbWlwaV9kc2lfZHJ2X2RhdGEsCisJfSwKKwl7IC8qIHNlbnRpbmVsICovIH0K K307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbXhfbWlwaV9kc2lfZHRfaWRzKTsKKworc3Rh dGljIGludCBpbXhfbWlwaV9kc2lfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7CisJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAq b2ZfaWQgPQorCQkJb2ZfbWF0Y2hfZGV2aWNlKGlteF9taXBpX2RzaV9kdF9pZHMsIGRldik7CisJ Y29uc3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSAqcGRhdGEgPSBvZl9pZC0+ZGF0YTsK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGF0YTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5w ID0gZGV2LT5vZl9ub2RlOworCXN0cnVjdCBpbXhfbWlwaV9kc2kgKmRzaTsKKwlzdHJ1Y3QgcmVz b3VyY2UgKnJlczsKKwlpbnQgcmV0OworCisJZHNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCpkc2kpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRzaSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlk c2ktPmRldiA9IGRldjsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JF U09VUkNFX01FTSwgMCk7CisJaWYgKCFyZXMpCisJCXJldHVybiAtRU5PREVWOworCisJZHNpLT5y ZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAiZ3ByIik7CisJaWYg KElTX0VSUihkc2ktPnJlZ21hcCkpCisJCXJldHVybiBQVFJfRVJSKGRzaS0+cmVnbWFwKTsKKwor CXJldCA9IGlteF9taXBpX2RzaV9yZWdpc3Rlcihkcm0sIGRzaSk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGRzaSk7CisKKwlyZXR1cm4gZHdfbWlw aV9kc2lfYmluZChkZXYsIG1hc3RlciwgZGF0YSwgJmRzaS0+ZW5jb2RlciwgcmVzLCBwZGF0YSk7 Cit9CisKK3N0YXRpYyB2b2lkIGlteF9taXBpX2RzaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCisJdm9pZCAqZGF0YSkKK3sKKwlyZXR1cm4gZHdfbWlw aV9kc2lfdW5iaW5kKGRldiwgbWFzdGVyLCBkYXRhKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBjb21wb25lbnRfb3BzIGlteF9taXBpX2RzaV9vcHMgPSB7CisJLmJpbmQJPSBpbXhfbWlwaV9k c2lfYmluZCwKKwkudW5iaW5kCT0gaW14X21pcGlfZHNpX3VuYmluZCwKK307CisKK3N0YXRpYyBp bnQgaW14X21pcGlfZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJ cmV0dXJuIGNvbXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJmlteF9taXBpX2RzaV9vcHMpOworfQor CitzdGF0aWMgaW50IGlteF9taXBpX2RzaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKK3sKKwljb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsICZpbXhfbWlwaV9kc2lfb3BzKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW14X21pcGlf ZHNpX2RyaXZlciA9IHsKKwkucHJvYmUJCT0gaW14X21pcGlfZHNpX3Byb2JlLAorCS5yZW1vdmUJ CT0gaW14X21pcGlfZHNpX3JlbW92ZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm9mX21hdGNoX3RhYmxl ID0gaW14X21pcGlfZHNpX2R0X2lkcywKKwkJLm5hbWUJPSBEUklWRVJfTkFNRSwKKwl9LAorfTsK K21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW14X21pcGlfZHNpX2RyaXZlcik7CisKK01PRFVMRV9E RVNDUklQVElPTigiaS5NWCBNSVBJIERTSSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIik7CitNT0RV TEVfQVVUSE9SKCJMaXUgWWluZyA8WWluZy5MaXVAZnJlZXNjYWxlLmNvbT4iKTsKK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBEUklWRVJfTkFNRSk7Ci0t IAoyLjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK