From mboxrd@z Thu Jan 1 00:00:00 1970 From: Meng Yi Subject: [PATCH v2 3/3] drm/layerscape: Add HDMI driver for freescale DCU Date: Tue, 16 Feb 2016 09:52:47 +0800 Message-ID: <1455587567-14606-3-git-send-email-meng.yi@nxp.com> References: <1455587567-14606-1-git-send-email-meng.yi@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0082.outbound.protection.outlook.com [207.46.100.82]) by gabe.freedesktop.org (Postfix) with ESMTPS id C15FC6E212 for ; Tue, 16 Feb 2016 02:01:48 +0000 (UTC) In-Reply-To: <1455587567-14606-1-git-send-email-meng.yi@nxp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: stefan@agner.ch Cc: Meng Yi , Xiubo Li , Alison Wang , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RENVIGlzIHRoZSBzaG9ydGN1dCBvZiAnZGlzcGxheSBjb250cm9sbGVyIHVuaXQnLCBzb21lIEhE TUkgdHJhbnNtaXR0ZXIKYXR0YWNoZWQgdG8gRENVLCBzdWNoIGFzIHNpaTkwMjJhLCBhbmQgdGhp cyBkcml2ZXIgYWRkIHRoZSByZWxhdmVudApmdW5jdGlvbnMgdG8gRFJNIGZyYW1ld3Jvay4KClNp Z25lZC1vZmYtYnk6IE1lbmcgWWkgPG1lbmcueWlAbnhwLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxp c29uIFdhbmcgPGFsaXNvbi53YW5nQG54cC5jb20+ClNpZ25lZC1vZmYtYnk6IFhpdWJvIExpIDxs aXhpdWJvQGNtc3MuY2hpbmFtb2JpbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWFud2VpIFdhbmcg PGppYW53ZWkud2FuZy5jaG5AZ21haWwuY29tPgotLS0KQ2hhbmdlIGluIHYyCi1GaXhlZCBjb25m bGljdCB3aXRoIFN0ZWZhbidzIGJyYW5jaC4KIGh0dHA6Ly9naXQuYWduZXIuY2gvZ2l0d2ViLz9w PWxpbnV4LWRybS1mc2wtZGN1LmdpdDthPXN1bW1hcnkKLS0tCiAuLi4vYmluZGluZ3MvZGlzcGxh eS9icmlkZ2Uvc2lsLHNpaTkwMjJhLnR4dCAgICAgICB8ICA1NSArKysrKwogZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmggICAgICAgICAgfCAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1faGRtaS5jICAgICAgICAgfCAyNzEgKysrKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMu YyAgICAgICAgICB8ICAxMiArCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9v dXRwdXQuaCAgICAgICB8ICAxMSArCiA2IGZpbGVzIGNoYW5nZWQsIDM1MSBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rp c3BsYXkvYnJpZGdlL3NpbCxzaWk5MDIyYS50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9oZG1pLmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uvc2lsLHNpaTkwMjJhLnR4 dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9zaWws c2lpOTAyMmEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZWJiZmIK LS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlz cGxheS9icmlkZ2Uvc2lsLHNpaTkwMjJhLnR4dApAQCAtMCwwICsxLDU1IEBACitEZXZpY2UtVHJl ZSBiaW5kaW5ncyBmb3IgdGhlIFNpSTkwMnggaGRtaSB0cmFuc21pdHRlci4KKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBTaUk5MDIyQSBpcyBhbiB1bHRy YSBsb3ctcG93ZXIgSERNSSB0cmFuc21pdHRlci4gSXQgc3VwcG9ydHMgcmVzb2x1dGlvbnMgZnJv bQorc3RhbmRhcmQgZGVmaW5pdGlvbiA0ODBpL3AgYW5kIDU3NmkvcCBhbGwgdGhlIHdheSB0byBo aWdoLWRlZmluaXRpb24gNzIwcCwgMTA4MGksCithbmQgMTA4MHAsIHRoZSBoaWdoZXN0IHJlc29s dXRpb24gc3VwcG9ydGVkIGJ5IEhEVFZzIHRvZGF5LiBJdCBhbHNvIHN1cHBvcnRzIGFsbAorUEMg cmVzb2x1dGlvbnMgdXAgdG8gVVhHQSBmb3IgbmV0Ym9va3MKKworUmVxdWlyZWQgcHJvcGVydGll czoKKy0gY29tcGF0aWJsZTogCVNob3VsZCBiZSAic2lsLHNpaTkwMjJhIi4KKy0gcmVnOiAJCVRo ZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorLSBpbnRlcnJ1cHRzOglJbnRlcnJ1cHQgbnVt YmVyIHRvIHRoZSBjcHUuCisKK1JlcXVpcmVkIG5vZGVzOgorCitUaGUgc2lpOTAyMiBoYXMgb25l IHZpZGVvIHBvcnRzLiBJdHMgY29ubmVjdGlvbiBpcyBtb2RlbGxlZCB1c2luZyB0aGUgT0YKK2dy YXBoIGJpbmRpbmdzIHNwZWNpZmllZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvZ3JhcGgudHh0LgorCistIFZpZGVvIHBvcnQgMCBmb3IgdGhlIEhETUkgb3V0cHV0CisKK0V4 YW1wbGU6CistLS0tLS0tCisKKy8geworCWhkbWktb3V0IHsKKwkJY29tcGF0aWJsZSA9ICJoZG1p LWNvbm5lY3RvciI7CisJCXR5cGUgPSAiYSI7CisKKwkJcG9ydCB7CisJCQloZG1pX2NvbjogZW5k cG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmc2lpOTAyMmFfb3V0PjsKKwkJCX07CisJ CX07CisJfTsKK307CisKKyZpMmMxIHsKKyAgICBzaWk5MDIyOiBoZG1pQDM5IHsKKyAgICAgICAg ICAgIGNvbXBhdGlibGUgPSAic2lsLHNpaTkwMjJhIjsKKyAgICAgICAgICAgIHJlZyA9IDwweDM5 PjsKKyAgICAgICAgICAgIGludGVycnVwdHMgPSA8R0lDX1NQSSAxNjcgSVJRX1RZUEVfRURHRV9S SVNJTkc+OworCisgICAgICAgICAgICBwb3J0cyB7CisgICAgICAgICAgICAgICAgICAgICNhZGRy ZXNzLWNlbGxzID0gPDE+OworICAgICAgICAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsK KworICAgICAgICAgICAgICAgICAgICBwb3J0QDAgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlZyA9IDwxPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWk5MDIyX291dDog ZW5kcG9pbnQgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlLWVu ZHBvaW50ID0gPCZoZG1pX2Nvbj47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAg ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH07CisgICAgfTsKK307CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L01ha2VmaWxlCmluZGV4IDZlYTE1MjMuLjk4Y2FjYzIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L01ha2VmaWxlCkBAIC0xLDYgKzEsNyBAQAogZnNsLWRjdS1kcm0teSA6PSBmc2xfZGN1X2RybV9k cnYubyBcCiAJCSBmc2xfZGN1X2RybV9rbXMubyBcCiAJCSBmc2xfZGN1X2RybV9yZ2IubyBcCisJ CSBmc2xfZGN1X2RybV9oZG1pLm8gXAogCQkgZnNsX2RjdV9kcm1fcGxhbmUubyBcCiAJCSBmc2xf ZGN1X2RybV9jcnRjLm8gXAogCQkgZnNsX2RjdV9kcm1fZmJkZXYubwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaAppbmRleCA2NDEzYWM5Li43ZDFiMGZkIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaApAQCAtMTg5LDYgKzE4OSw3IEBA IHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgewogCXN0cnVjdCBkcm1fZmJkZXZfY21hICpmYmRl djsKIAlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsK KwlzdHJ1Y3QgZHJtX2VuY29kZXJfc2xhdmUgKnNsYXZlOwogCXN0cnVjdCBmc2xfZGN1X2RybV9j b25uZWN0b3IgY29ubmVjdG9yOwogCWNvbnN0IHN0cnVjdCBmc2xfZGN1X3NvY19kYXRhICpzb2M7 CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1faGRt aS5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1faGRtaS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMDYwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9oZG1pLmMKQEAgLTAsMCArMSwyNzEg QEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgor ICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+CisjaW5jbHVk ZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxp bnV4L2ZiLmg+CisjaW5jbHVkZSA8bGludXgvZnNsX2RldmljZXMuaD4KKyNpbmNsdWRlIDxsaW51 eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJy dXB0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvYmFja2xp Z2h0Lmg+CisjaW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+CisjaW5jbHVkZSA8dmlkZW8vb2Zf ZGlzcGxheV90aW1pbmcuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJt L2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyX3NsYXZlLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZWRp ZC5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVkZSAiZnNsX2RjdV9k cm1fb3V0cHV0LmgiCisKKyNkZWZpbmUgdG9fZHJtX2VuY29kZXJfc2xhdmUoZSkgXAorCWNvbnRh aW5lcl9vZihlLCBzdHJ1Y3QgZHJtX2VuY29kZXJfc2xhdmUsIGJhc2UpCisjZGVmaW5lIHRvX3Ns YXZlX2Z1bmNzKGUpCSh0b19kcm1fZW5jb2Rlcl9zbGF2ZShlKS0+c2xhdmVfZnVuY3MpCitzdGF0 aWMgdm9pZCBmc2xfZGN1X2RybV9oZG1pZW5jX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciwKKwkJCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCQkgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7CisJY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX3NsYXZlX2Z1bmNzICpzZnVuY3MgPSB0b19zbGF2ZV9mdW5jcyhlbmNvZGVyKTsK KworCWlmIChzZnVuY3MtPm1vZGVfc2V0KQorCQlzZnVuY3MtPm1vZGVfc2V0KGVuY29kZXIsIG1v ZGUsIGFkanVzdGVkX21vZGUpOworCit9CisKK3N0YXRpYyBpbnQKK2ZzbF9kY3VfZHJtX2hkbWll bmNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1faGRtaWVuY19kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlj b25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfc2xhdmVfZnVuY3MgKnNmdW5jcyA9IHRvX3NsYXZlX2Z1 bmNzKGVuY29kZXIpOworCisJaWYgKHNmdW5jcy0+ZHBtcykKKwkJc2Z1bmNzLT5kcG1zKGVuY29k ZXIsIERSTV9NT0RFX0RQTVNfT0ZGKTsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1faGRt aWVuY19lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCWNvbnN0IHN0cnVj dCBkcm1fZW5jb2Rlcl9zbGF2ZV9mdW5jcyAqc2Z1bmNzID0gdG9fc2xhdmVfZnVuY3MoZW5jb2Rl cik7CisKKwlpZiAoc2Z1bmNzLT5kcG1zKQorCQlzZnVuY3MtPmRwbXMoZW5jb2RlciwgRFJNX01P REVfRFBNU19PTik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVy X2Z1bmNzIGVuY29kZXJfaGVscGVyX2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sgPSBmc2xfZGN1 X2RybV9oZG1pZW5jX2F0b21pY19jaGVjaywKKwkuZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2hkbWll bmNfZGlzYWJsZSwKKwkuZW5hYmxlID0gZnNsX2RjdV9kcm1faGRtaWVuY19lbmFibGUsCisJLm1v ZGVfc2V0ID0gZnNsX2RjdV9kcm1faGRtaWVuY19tb2RlX3NldCwKK307CisKK3N0YXRpYyB2b2lk IGZzbF9kY3VfZHJtX2hkbWllbmNfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIp Cit7CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBlbmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0gZnNs X2RjdV9kcm1faGRtaWVuY19kZXN0cm95LAorfTsKK2ludCBmc2xfZGN1X2RybV9oZG1pZW5jX2Ny ZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJICAgICAgIHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2kyY19lbmNvZGVyX2RyaXZlciAqZHJp dmVyOworCXN0cnVjdCBkcm1fZW5jb2Rlcl9zbGF2ZSAqZW5jX3NsYXZlOworCXN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX3NsYXZlOworCWludCBy ZXQ7CisKKworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBvZl9maW5kX2NvbXBhdGlibGVfbm9k ZShOVUxMLAorCQkJCQlOVUxMLCAic2lsLHNpaTkwMjJhIik7CisJaWYgKG5wID09IE5VTEwpCisJ CXJldHVybiAtMTsKKworCS8qIExvY2F0ZSB0aGUgc2xhdmUgSTJDIGRldmljZSBhbmQgZHJpdmVy LiAqLworCWkyY19zbGF2ZSA9IG9mX2ZpbmRfaTJjX2RldmljZV9ieV9ub2RlKG5wKTsKKwlpZiAo IWkyY19zbGF2ZSB8fCAhaTJjX2dldF9jbGllbnRkYXRhKGkyY19zbGF2ZSkpCisJCXJldHVybiAt RVBST0JFX0RFRkVSOworCisJZW5jX3NsYXZlID0gZGV2bV9remFsbG9jKGZzbF9kZXYtPmRldiwg c2l6ZW9mKCplbmNfc2xhdmUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWVuY19zbGF2ZSkKKwkJcmV0 dXJuIC0xOworCisJLyogSW5pdGlhbGl6ZSB0aGUgc2xhdmUgZW5jb2Rlci4gKi8KKwlkcml2ZXIg PSB0b19kcm1faTJjX2VuY29kZXJfZHJpdmVyKAorCQkJCQl0b19pMmNfZHJpdmVyKGkyY19zbGF2 ZS0+ZGV2LmRyaXZlcikpOworCXJldCA9IGRyaXZlci0+ZW5jb2Rlcl9pbml0KGkyY19zbGF2ZSwg ZnNsX2Rldi0+ZHJtLCBlbmNfc2xhdmUpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gLTE7CisK Kwlmc2xfZGV2LT5zbGF2ZSA9IGVuY19zbGF2ZTsKKwllbmNvZGVyID0gJmVuY19zbGF2ZS0+YmFz ZTsKKworCisJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxOworCXJldCA9IGRybV9lbmNvZGVy X2luaXQoZnNsX2Rldi0+ZHJtLCBlbmNvZGVyLCAmZW5jb2Rlcl9mdW5jcywKKwkJCSAgICAgICBE Uk1fTU9ERV9FTkNPREVSX1RNRFMsIE5VTEwpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0 OworCisJZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZW5jb2Rlcl9oZWxwZXJfZnVu Y3MpOworCWVuY29kZXItPmNydGMgPSBjcnRjOworCisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUg dG9fZnNsX2RjdV9kcm1faGRtaWNvbihjb25uZWN0b3IpIFwKKwljb250YWluZXJfb2YoY29ubmVj dG9yLCBzdHJ1Y3QgZnNsX2RjdV9kcm1faGRtaWNvbiwgY29ubmVjdG9yKQorCitzdGF0aWMgc3Ry dWN0IGRybV9lbmNvZGVyICpmc2xfZGN1X2RybV9oZG1pX2ZpbmRfZW5jb2RlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKworCWxpc3Rf Zm9yX2VhY2hfZW50cnkoZW5jb2RlciwgJmRldi0+bW9kZV9jb25maWcuZW5jb2Rlcl9saXN0LCBo ZWFkKSB7CisJCWlmIChlbmNvZGVyLT5lbmNvZGVyX3R5cGUgPT0gRFJNX01PREVfRU5DT0RFUl9U TURTKQorCQkJcmV0dXJuIGVuY29kZXI7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRp YyB2b2lkIGZzbF9kY3VfZHJtX2hkbWljb25fZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQoreworCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOworCWRy bV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworfQorCitzdGF0aWMgZW51bSBkcm1fY29u bmVjdG9yX3N0YXR1cworZnNsX2RjdV9kcm1faGRtaWNvbl9kZXRlY3Qoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1faGRt aWNvbiAqaGRtaWNvbiA9IHRvX2ZzbF9kY3VfZHJtX2hkbWljb24oY29ubmVjdG9yKTsKKworCWlm IChoZG1pY29uLT5zdGF0dXMgPT0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQpCisJCXJl dHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKKwllbHNlCisJCXJldHVybiBjb25u ZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29u bmVjdG9yX2Z1bmNzIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKKwkuYXRvbWljX2R1 cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3Rh dGUsCisJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9y X2Rlc3Ryb3lfc3RhdGUsCisJLmRlc3Ryb3kgPSBmc2xfZGN1X2RybV9oZG1pY29uX2Rlc3Ryb3ks CisJLmRldGVjdCA9IGZzbF9kY3VfZHJtX2hkbWljb25fZGV0ZWN0LAorCS5kcG1zID0gZHJtX2F0 b21pY19oZWxwZXJfY29ubmVjdG9yX2RwbXMsCisJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3By b2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX3Jlc2V0LAorfTsKKworc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqCitmc2xf ZGN1X2RybV9oZG1pY29uX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKKworCXJl dHVybiBmc2xfZGN1X2RybV9oZG1pX2ZpbmRfZW5jb2RlcihkZXYpOworfQorCisKK3N0YXRpYyBp bnQgZnNsX2RjdV9kcm1faGRtaWNvbl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1faGRtaWNvbiAqY29uID0gdG9fZnNsX2Rj dV9kcm1faGRtaWNvbihjb25uZWN0b3IpOworCWNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9zbGF2 ZV9mdW5jcyAqc2Z1bmNzID0gY29uLT5zbGF2ZS0+c2xhdmVfZnVuY3M7CisKKwlpZiAoc2Z1bmNz LT5nZXRfbW9kZXMgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gc2Z1bmNzLT5nZXRf bW9kZXMoTlVMTCwgY29ubmVjdG9yKTsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9oZG1p Y29uX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkJICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlpZiAobW9kZS0+aGRpc3BsYXkgPiAx MDI0KQorCQlyZXR1cm4gTU9ERV9WSVJUVUFMX1g7CisJZWxzZSBpZgkobW9kZS0+dmRpc3BsYXkg PiA3NjgpCisJCXJldHVybiBNT0RFX1ZJUlRVQUxfWTsKKworCXJldHVybiBNT0RFX09LOworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGNvbm5lY3Rv cl9oZWxwZXJfZnVuY3MgPSB7CisJLmJlc3RfZW5jb2RlciA9IGZzbF9kY3VfZHJtX2hkbWljb25f YmVzdF9lbmNvZGVyLAorCS5nZXRfbW9kZXMgPSBmc2xfZGN1X2RybV9oZG1pY29uX2dldF9tb2Rl cywKKwkubW9kZV92YWxpZCA9IGZzbF9kY3VfZHJtX2hkbWljb25fbW9kZV92YWxpZCwKK307CisK K2ludCBmc2xfZGN1X2RybV9oZG1pY29uX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNl ICpmc2xfZGV2KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmc2xfZGV2LT5kcm07CisJ c3RydWN0IGZzbF9kY3VfZHJtX2hkbWljb24gKmhkbWljb247CisJc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CisJaW50IHJldDsK KworCWhkbWljb24gPSBkZXZtX2t6YWxsb2MoZnNsX2Rldi0+ZGV2LAorCQkJICAgICAgIHNpemVv ZihzdHJ1Y3QgZnNsX2RjdV9kcm1faGRtaWNvbiksIEdGUF9LRVJORUwpOworCWlmICghaGRtaWNv bikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwloZG1pY29uLT5zbGF2ZSA9IGZzbF9kZXYtPnNsYXZl OworCWNvbm5lY3RvciA9ICZoZG1pY29uLT5jb25uZWN0b3I7CisKKwljb25uZWN0b3ItPmRpc3Bs YXlfaW5mby53aWR0aF9tbSA9IDA7CisJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21t ID0gMDsKKwljb25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9IUEQ7CisKKwly ZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZnNsX2Rldi0+ZHJtLCBjb25uZWN0b3IsCisJCQkJICZm c2xfZGN1X2RybV9jb25uZWN0b3JfZnVuY3MsCisJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1J QSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwljb25uZWN0b3ItPmRwbXMgPSBE Uk1fTU9ERV9EUE1TX09GRjsKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAm Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihj b25uZWN0b3IpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9jbGVhbnVwOworCisJZW5jb2Rl ciA9IGZzbF9kY3VfZHJtX2hkbWlfZmluZF9lbmNvZGVyKGRldik7CisJaWYgKCFlbmNvZGVyKQor CQlnb3RvIGVycl9jbGVhbnVwOworCXJldCA9IGRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5j b2Rlcihjb25uZWN0b3IsIGVuY29kZXIpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9zeXNm czsKKworCWNvbm5lY3Rvci0+ZW5jb2RlciA9IGVuY29kZXI7CisKKwlkcm1fb2JqZWN0X3Byb3Bl cnR5X3NldF92YWx1ZQorCQkoJmNvbm5lY3Rvci0+YmFzZSwgZnNsX2Rldi0+ZHJtLT5tb2RlX2Nv bmZpZy5kcG1zX3Byb3BlcnR5LAorCQlEUk1fTU9ERV9EUE1TX09GRik7CisKKwlyZXR1cm4gMDsK KworZXJyX3N5c2ZzOgorCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOworZXJy X2NsZWFudXA6CisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7CisJcmV0dXJuIHJl dDsKK30KKworTU9EVUxFX0FVVEhPUigiRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4iKTsK K01PRFVMRV9ERVNDUklQVElPTigiU0lJOTAyeCBEVkkvSERNSSBkcml2ZXIiKTsKK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9k Y3VfZHJtX2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmMK aW5kZXggYzU2NGVjNi4uOTRiMTExMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fa21zLmMKQEAgLTE3LDEwICsxNywxOCBAQAogI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Ny dGMuaCIKICNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKIAorc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1fb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0 cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJ ZHJtX2ZiZGV2X2NtYV9ob3RwbHVnX2V2ZW50KGZzbF9kZXYtPmZiZGV2KTsKK30KKwogc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgZnNsX2RjdV9kcm1fbW9kZV9jb25m aWdfZnVuY3MgPSB7CiAJLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAog CS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0LAogCS5mYl9jcmVhdGUg PSBkcm1fZmJfY21hX2NyZWF0ZSwKKwkub3V0cHV0X3BvbGxfY2hhbmdlZCA9IGZzbF9kY3VfZHJt X291dHB1dF9wb2xsX2NoYW5nZWQsCiB9OwogCiBpbnQgZnNsX2RjdV9kcm1fbW9kZXNldF9pbml0 KHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpCkBAIC00MywxMCArNTEsMTQgQEAg aW50IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpm c2xfZGV2KQogCWlmIChyZXQpCiAJCWdvdG8gZmFpbF9lbmNvZGVyOwogCisJZnNsX2RjdV9kcm1f aGRtaWVuY19jcmVhdGUoZnNsX2RldiwgJmZzbF9kZXYtPmNydGMpOworCiAJcmV0ID0gZnNsX2Rj dV9kcm1fY29ubmVjdG9yX2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rldi0+ZW5jb2Rlcik7CiAJaWYg KHJldCkKIAkJZ290byBmYWlsX2Nvbm5lY3RvcjsKIAorCWZzbF9kY3VfZHJtX2hkbWljb25fY3Jl YXRlKGZzbF9kZXYpOworCiAJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGZzbF9kZXYtPmRybSk7CiAJ ZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGZzbF9kZXYtPmRybSk7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX291dHB1dC5oIGIvZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0LmgKaW5kZXggNzA5MzEwOS4uZmEwZDdlZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0LmgKQEAgLTE4 LDYgKzE4LDEzIEBAIHN0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IgewogCXN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsOwogfTsKIAorc3RydWN0IGZzbF9kY3VfZHJtX2hkbWljb24geworCXN0cnVj dCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2VuY29kZXJfc2xhdmUgKnNs YXZlOworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7CisJZW51bSBkcm1fY29ubmVjdG9yX3N0 YXR1cyBzdGF0dXM7Cit9OworCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmc2xfZGN1X2RybV9jb25u ZWN0b3IgKgogdG9fZnNsX2RjdV9jb25uZWN0b3Ioc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbikK IHsKQEAgLTI5LDUgKzM2LDkgQEAgaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoc3Ry dWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKIAkJCQkgc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKTsKIGludCBmc2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2Rj dV9kcm1fZGV2aWNlICpmc2xfZGV2LAogCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7 CitpbnQgZnNsX2RjdV9kcm1faGRtaWNvbl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2Rldmlj ZSAqZnNsX2Rldik7CitpbnQgZnNsX2RjdV9kcm1faGRtaWVuY19jcmVhdGUoc3RydWN0IGZzbF9k Y3VfZHJtX2RldmljZSAqZnNsX2RldiwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMp OworCiAKICNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9IX18gKi8KLS0gCjIuMS4w LjI3Lmc5NmRiMzI0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK