From mboxrd@z Thu Jan 1 00:00:00 1970 From: Meng Yi Subject: [PATCH v3 3/3] drm/layerscape: Add HDMI driver for freescale DCU Date: Wed, 9 Mar 2016 16:31:02 +0800 Message-ID: <1457512262-45984-3-git-send-email-meng.yi@nxp.com> References: <1457512262-45984-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-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0077.outbound.protection.outlook.com [157.56.111.77]) by gabe.freedesktop.org (Postfix) with ESMTPS id 409FC6E866 for ; Wed, 9 Mar 2016 08:55:28 +0000 (UTC) In-Reply-To: <1457512262-45984-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, jianwei.wang.chn@gmail.com, dri-devel@lists.freedesktop.org Cc: Meng Yi , Xiubo Li , Alison Wang List-Id: dri-devel@lists.freedesktop.org RENVIGlzIHRoZSBzaG9ydGN1dCBvZiAnZGlzcGxheSBjb250cm9sbGVyIHVuaXQnLCBzb21lIEhE TUkgdHJhbnNtaXR0ZXIKYXR0YWNoZWQgdG8gRENVLCBzdWNoIGFzIHNpaTkwMjJhLCBhbmQgdGhp cyBkcml2ZXIgYWRkIHRoZSByZWxhdmVudApmdW5jdGlvbnMgdG8gRFJNIGZyYW1ld3Jvay4KClNp Z25lZC1vZmYtYnk6IE1lbmcgWWkgPG1lbmcueWlAbnhwLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxp c29uIFdhbmcgPGFsaXNvbi53YW5nQG54cC5jb20+ClNpZ25lZC1vZmYtYnk6IFhpdWJvIExpIDxs aXhpdWJvQGNtc3MuY2hpbmFtb2JpbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWFud2VpIFdhbmcg PGppYW53ZWkud2FuZy5jaG5AZ21haWwuY29tPgotLS0KQ2hhbmdlIGluIFYzOgpVc2UgIm9mX2dy YXBoIiB0byBkZXNjcmliZSB0aGUgY29ubmVjdGlvbiB0byBEQ1UuCi0tLQoKIC4uLi9iaW5kaW5n cy9kaXNwbGF5L2JyaWRnZS9zaWwsc2lpOTAyMmEudHh0ICAgICAgIHwgIDU1ICsrKysKIGRyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRy aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5oICAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2hkbWkuYyAgICAgICAgIHwgMjky ICsrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fa21zLmMgICAgICAgICAgfCAgMTIgKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fb3V0cHV0LmggICAgICAgfCAgMTEgKwogNiBmaWxlcyBjaGFuZ2VkLCAzNzIgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy9kaXNwbGF5L2JyaWRnZS9zaWwsc2lpOTAyMmEudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1faGRtaS5jCgpkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3NpbCxzaWk5 MDIyYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlk Z2Uvc2lsLHNpaTkwMjJhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y MDY1NWY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp bmdzL2Rpc3BsYXkvYnJpZGdlL3NpbCxzaWk5MDIyYS50eHQKQEAgLTAsMCArMSw1NSBAQAorRGV2 aWNlLVRyZWUgYmluZGluZ3MgZm9yIHRoZSBTaUk5MDJ4IGhkbWkgdHJhbnNtaXR0ZXIuCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgU2lJOTAyMkEgaXMg YW4gdWx0cmEgbG93LXBvd2VyIEhETUkgdHJhbnNtaXR0ZXIuIEl0IHN1cHBvcnRzIHJlc29sdXRp b25zIGZyb20KK3N0YW5kYXJkIGRlZmluaXRpb24gNDgwaS9wIGFuZCA1NzZpL3AgYWxsIHRoZSB3 YXkgdG8gaGlnaC1kZWZpbml0aW9uIDcyMHAsIDEwODBpLAorYW5kIDEwODBwLCB0aGUgaGlnaGVz dCByZXNvbHV0aW9uIHN1cHBvcnRlZCBieSBIRFRWcyB0b2RheS4gSXQgYWxzbyBzdXBwb3J0cyBh bGwKK1BDIHJlc29sdXRpb25zIHVwIHRvIFVYR0EgZm9yIG5ldGJvb2tzCisKK1JlcXVpcmVkIHBy b3BlcnRpZXM6CistIGNvbXBhdGlibGU6IAlTaG91bGQgYmUgInNpbCxzaWk5MDIyYSIuCistIHJl ZzogCQlUaGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KKy0gaW50ZXJydXB0czoJSW50ZXJy dXB0IG51bWJlciB0byB0aGUgY3B1LgorCitSZXF1aXJlZCBub2RlczoKKworVGhlIHNpaTkwMjIg aGFzIG9uZSB2aWRlbyBwb3J0cy4gSXRzIGNvbm5lY3Rpb24gaXMgbW9kZWxsZWQgdXNpbmcgdGhl IE9GCitncmFwaCBiaW5kaW5ncyBzcGVjaWZpZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL2dyYXBoLnR4dC4KKworLSBWaWRlbyBwb3J0IDAgZm9yIHRoZSBIRE1JIG91dHB1 dAorCitFeGFtcGxlOgorLS0tLS0tLQorCisvIHsKKwloZG1pLW91dCB7CisJCWNvbXBhdGlibGUg PSAiaGRtaS1jb25uZWN0b3IiOworCQl0eXBlID0gImEiOworCisJCXBvcnQgeworCQkJaGRtaV9j b246IGVuZHBvaW50IHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnNpaTkwMjJhX291dD47CisJ CQl9OworCQl9OworCX07Cit9OworCismaTJjMSB7CisgICAgc2lpOTAyMjogaGRtaUAzOSB7Cisg ICAgICAgICAgICBjb21wYXRpYmxlID0gInNpbCxzaWk5MDIyYSI7CisgICAgICAgICAgICByZWcg PSA8MHgzOT47CisgICAgICAgICAgICBpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTY3IElSUV9UWVBF X0VER0VfUklTSU5HPjsKKworICAgICAgICAgICAgcG9ydHMgeworICAgICAgICAgICAgICAgICAg ICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKyAgICAgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMg PSA8MD47CisKKyAgICAgICAgICAgICAgICAgICAgcG9ydEAwIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZWcgPSA8MD47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lpOTAy Ml9vdXQ6IGVuZHBvaW50IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl bW90ZS1lbmRwb2ludCA9IDwmaGRtaV9jb24+OworICAgICAgICAgICAgICAgICAgICAgICAgICAg IH07CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9OworICAgIH07Cit9Owpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUgYi9kcml2ZXJzL2dw dS9kcm0vZnNsLWRjdS9NYWtlZmlsZQppbmRleCA2ZWExNTIzLi45OGNhY2MyIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9NYWtlZmlsZQpAQCAtMSw2ICsxLDcgQEAKIGZzbC1kY3UtZHJtLXkgOj0gZnNsX2Rj dV9kcm1fZHJ2Lm8gXAogCQkgZnNsX2RjdV9kcm1fa21zLm8gXAogCQkgZnNsX2RjdV9kcm1fcmdi Lm8gXAorCQkgZnNsX2RjdV9kcm1faGRtaS5vIFwKIAkJIGZzbF9kY3VfZHJtX3BsYW5lLm8gXAog CQkgZnNsX2RjdV9kcm1fY3J0Yy5vIFwKIAkJIGZzbF9kY3VfZHJtX2ZiZGV2Lm8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmgKaW5kZXggNjQxM2FjOS4uN2QxYjBmZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmgKQEAgLTE4OSw2ICsx ODksNyBAQCBzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlIHsKIAlzdHJ1Y3QgZHJtX2ZiZGV2X2Nt YSAqZmJkZXY7CiAJc3RydWN0IGRybV9jcnRjIGNydGM7CiAJc3RydWN0IGRybV9lbmNvZGVyIGVu Y29kZXI7CisJc3RydWN0IGRybV9lbmNvZGVyX3NsYXZlICpzbGF2ZTsKIAlzdHJ1Y3QgZnNsX2Rj dV9kcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKIAljb25zdCBzdHJ1Y3QgZnNsX2RjdV9zb2NfZGF0 YSAqc29jOwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3Vf ZHJtX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2hkbWkuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2Q4NjIxCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1faGRtaS5jCkBAIC0wLDAg KzEsMjkyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3Is IEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgor I2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNs dWRlIDxsaW51eC9mYi5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzbF9kZXZpY2VzLmg+CisjaW5jbHVk ZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4 L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4 L2JhY2tsaWdodC5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+CisjaW5jbHVkZSA8dmlk ZW8vdmlkZW9tb2RlLmg+CisjaW5jbHVkZSA8dmlkZW8vb2ZfZGlzcGxheV90aW1pbmcuaD4KKwor I2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyX3NsYXZlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9j cnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgorCisjaW5jbHVkZSAiZnNs X2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fb3V0cHV0LmgiCisKKyNkZWZp bmUgdG9fZHJtX2VuY29kZXJfc2xhdmUoZSkgXAorCWNvbnRhaW5lcl9vZihlLCBzdHJ1Y3QgZHJt X2VuY29kZXJfc2xhdmUsIGJhc2UpCisjZGVmaW5lIHRvX3NsYXZlX2Z1bmNzKGUpCSh0b19kcm1f ZW5jb2Rlcl9zbGF2ZShlKS0+c2xhdmVfZnVuY3MpCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9o ZG1pZW5jX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCQkgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUpCit7CisJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX3NsYXZlX2Z1bmNz ICpzZnVuY3MgPSB0b19zbGF2ZV9mdW5jcyhlbmNvZGVyKTsKKworCWlmIChzZnVuY3MtPm1vZGVf c2V0KQorCQlzZnVuY3MtPm1vZGVfc2V0KGVuY29kZXIsIG1vZGUsIGFkanVzdGVkX21vZGUpOwor Cit9CisKK3N0YXRpYyBpbnQKK2ZzbF9kY3VfZHJtX2hkbWllbmNfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAorCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1faGRtaWVuY19kaXNhYmxl KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwljb25zdCBzdHJ1Y3QgZHJtX2VuY29k ZXJfc2xhdmVfZnVuY3MgKnNmdW5jcyA9IHRvX3NsYXZlX2Z1bmNzKGVuY29kZXIpOworCisJaWYg KHNmdW5jcy0+ZHBtcykKKwkJc2Z1bmNzLT5kcG1zKGVuY29kZXIsIERSTV9NT0RFX0RQTVNfT0ZG KTsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1faGRtaWVuY19lbmFibGUoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyKQoreworCWNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9zbGF2ZV9m dW5jcyAqc2Z1bmNzID0gdG9fc2xhdmVfZnVuY3MoZW5jb2Rlcik7CisKKwlpZiAoc2Z1bmNzLT5k cG1zKQorCQlzZnVuY3MtPmRwbXMoZW5jb2RlciwgRFJNX01PREVfRFBNU19PTik7Cit9CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIGVuY29kZXJfaGVscGVy X2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sgPSBmc2xfZGN1X2RybV9oZG1pZW5jX2F0b21pY19j aGVjaywKKwkuZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2hkbWllbmNfZGlzYWJsZSwKKwkuZW5hYmxl ID0gZnNsX2RjdV9kcm1faGRtaWVuY19lbmFibGUsCisJLm1vZGVfc2V0ID0gZnNsX2RjdV9kcm1f aGRtaWVuY19tb2RlX3NldCwKK307CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2hkbWllbmNf ZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJZHJtX2VuY29kZXJfY2xl YW51cChlbmNvZGVyKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5j cyBlbmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1faGRtaWVuY19kZXN0 cm95LAorfTsKK2ludCBmc2xfZGN1X2RybV9oZG1pZW5jX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9k cm1fZGV2aWNlICpmc2xfZGV2LAorCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sK KwlzdHJ1Y3QgZHJtX2kyY19lbmNvZGVyX2RyaXZlciAqZHJpdmVyOworCXN0cnVjdCBkcm1fZW5j b2Rlcl9zbGF2ZSAqZW5jX3NsYXZlOworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKwlz dHJ1Y3QgaTJjX2NsaWVudCAqaTJjX3NsYXZlOworCWludCByZXQ7CisJc3RydWN0IGRldmljZV9u b2RlICplbnRpdHk7CisJc3RydWN0IG9mX2VuZHBvaW50ICplcDsKKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKmVwX25vZGU7CisJc3RydWN0IGRldmljZV9ub2RlICpwYXJlbnQgPSBmc2xfZGV2LT5kZXYt Pm9mX25vZGU7CisKKwllcCA9IGRldm1fa3phbGxvYyhmc2xfZGV2LT5kZXYsCisJCQkJCXNpemVv ZihzdHJ1Y3Qgb2ZfZW5kcG9pbnQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWVwKQorCQlyZXR1cm4g LUVOT01FTTsKKworCWVwX25vZGUgPSBkZXZtX2t6YWxsb2MoZnNsX2Rldi0+ZGV2LAorCQkJCQlz aXplb2Yoc3RydWN0IGRldmljZV9ub2RlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFlcF9ub2RlKQor CQlyZXR1cm4gLUVOT01FTTsKKworCWVwX25vZGUgPSBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2lu dChwYXJlbnQsIE5VTEwpOworCisJcmV0ID0gb2ZfZ3JhcGhfcGFyc2VfZW5kcG9pbnQoZXBfbm9k ZSwgZXApOworCWlmIChyZXQgPCAwKSB7CisJCW9mX25vZGVfcHV0KGVwX25vZGUpOworCQlyZXR1 cm4gcmV0OworCX0KKworCWVudGl0eSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQo ZXAtPmxvY2FsX25vZGUpOworCWlmICghZW50aXR5KSB7CisJCWRldl9kYmcoZnNsX2Rldi0+ZGV2 LCAidW5jb25uZWN0ZWQgZW5kcG9pbnQgJXMsIHNraXBwaW5nXG4iLAorCQkJZXAtPmxvY2FsX25v ZGUtPmZ1bGxfbmFtZSk7CisJCXJldHVybiAtRU5PREVWOworCX0KKwlpMmNfc2xhdmUgPSBvZl9m aW5kX2kyY19kZXZpY2VfYnlfbm9kZShlbnRpdHkpOworCisJaWYgKCFpMmNfc2xhdmUgfHwgIWky Y19nZXRfY2xpZW50ZGF0YShpMmNfc2xhdmUpKQorCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKKwor CWVuY19zbGF2ZSA9IGRldm1fa3phbGxvYyhmc2xfZGV2LT5kZXYsIHNpemVvZigqZW5jX3NsYXZl KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFlbmNfc2xhdmUpCisJCXJldHVybiAtRU5PTUVNOworCisJ LyogSW5pdGlhbGl6ZSB0aGUgc2xhdmUgZW5jb2Rlci4gKi8KKwlkcml2ZXIgPSB0b19kcm1faTJj X2VuY29kZXJfZHJpdmVyKAorCQkJCQl0b19pMmNfZHJpdmVyKGkyY19zbGF2ZS0+ZGV2LmRyaXZl cikpOworCWRyaXZlci0+ZW5jb2Rlcl9pbml0KGkyY19zbGF2ZSwgZnNsX2Rldi0+ZHJtLCBlbmNf c2xhdmUpOworCisJZnNsX2Rldi0+c2xhdmUgPSBlbmNfc2xhdmU7CisJZW5jb2RlciA9ICZlbmNf c2xhdmUtPmJhc2U7CisKKworCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMTsKKwlyZXQgPSBk cm1fZW5jb2Rlcl9pbml0KGZzbF9kZXYtPmRybSwgZW5jb2RlciwgJmVuY29kZXJfZnVuY3MsCisJ CQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9UTURTLCBOVUxMKTsKKwlpZiAocmV0IDwgMCkKKwkJ cmV0dXJuIHJldDsKKworCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZW5jb2RlciwgJmVuY29kZXJf aGVscGVyX2Z1bmNzKTsKKwllbmNvZGVyLT5jcnRjID0gY3J0YzsKKworCXJldHVybiAwOworfQor CisjZGVmaW5lIHRvX2ZzbF9kY3VfZHJtX2hkbWljb24oY29ubmVjdG9yKSBcCisJY29udGFpbmVy X29mKGNvbm5lY3Rvciwgc3RydWN0IGZzbF9kY3VfZHJtX2hkbWljb24sIGNvbm5lY3RvcikKKwor c3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqZnNsX2RjdV9kcm1faGRtaV9maW5kX2VuY29kZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7 CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVuY29kZXIsICZkZXYtPm1vZGVfY29uZmlnLmVuY29k ZXJfbGlzdCwgaGVhZCkgeworCQlpZiAoZW5jb2Rlci0+ZW5jb2Rlcl90eXBlID09IERSTV9NT0RF X0VOQ09ERVJfVE1EUykKKwkJCXJldHVybiBlbmNvZGVyOworCX0KKworCXJldHVybiBOVUxMOwor fQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9oZG1pY29uX2Rlc3Ryb3koc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVj dG9yKTsKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKK30KKworc3RhdGljIGVu dW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKK2ZzbF9kY3VfZHJtX2hkbWljb25fZGV0ZWN0KHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCit7CisJc3RydWN0IGZzbF9k Y3VfZHJtX2hkbWljb24gKmhkbWljb24gPSB0b19mc2xfZGN1X2RybV9oZG1pY29uKGNvbm5lY3Rv cik7CisKKwlpZiAoaGRtaWNvbi0+c3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVj dGVkKQorCQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7CisJZWxzZQorCQly ZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBmc2xfZGN1X2RybV9jb25uZWN0b3JfZnVuY3MgPSB7CisJ LmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVw bGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAorCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1faGRtaWNv bl9kZXN0cm95LAorCS5kZXRlY3QgPSBmc2xfZGN1X2RybV9oZG1pY29uX2RldGVjdCwKKwkuZHBt cyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAorCS5maWxsX21vZGVzID0gZHJt X2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAorCS5yZXNldCA9IGRybV9hdG9t aWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2VuY29k ZXIgKgorZnNsX2RjdV9kcm1faGRtaWNvbl9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5k ZXY7CisKKwlyZXR1cm4gZnNsX2RjdV9kcm1faGRtaV9maW5kX2VuY29kZXIoZGV2KTsKK30KKwor CitzdGF0aWMgaW50IGZzbF9kY3VfZHJtX2hkbWljb25fZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2hkbWljb24gKmNvbiA9 IHRvX2ZzbF9kY3VfZHJtX2hkbWljb24oY29ubmVjdG9yKTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Vu Y29kZXJfc2xhdmVfZnVuY3MgKnNmdW5jcyA9IGNvbi0+c2xhdmUtPnNsYXZlX2Z1bmNzOworCisJ aWYgKHNmdW5jcy0+Z2V0X21vZGVzID09IE5VTEwpCisJCXJldHVybiAwOworCisJcmV0dXJuIHNm dW5jcy0+Z2V0X21vZGVzKE5VTEwsIGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2Rj dV9kcm1faGRtaWNvbl9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is CisJCQkJCSAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJaWYgKG1vZGUtPmhk aXNwbGF5ID4gMTAyNCkKKwkJcmV0dXJuIE1PREVfVklSVFVBTF9YOworCWVsc2UgaWYJKG1vZGUt PnZkaXNwbGF5ID4gNzY4KQorCQlyZXR1cm4gTU9ERV9WSVJUVUFMX1k7CisKKwlyZXR1cm4gTU9E RV9PSzsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5j cyBjb25uZWN0b3JfaGVscGVyX2Z1bmNzID0geworCS5iZXN0X2VuY29kZXIgPSBmc2xfZGN1X2Ry bV9oZG1pY29uX2Jlc3RfZW5jb2RlciwKKwkuZ2V0X21vZGVzID0gZnNsX2RjdV9kcm1faGRtaWNv bl9nZXRfbW9kZXMsCisJLm1vZGVfdmFsaWQgPSBmc2xfZGN1X2RybV9oZG1pY29uX21vZGVfdmFs aWQsCit9OworCitpbnQgZnNsX2RjdV9kcm1faGRtaWNvbl9jcmVhdGUoc3RydWN0IGZzbF9kY3Vf ZHJtX2RldmljZSAqZnNsX2RldikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZnNsX2Rl di0+ZHJtOworCXN0cnVjdCBmc2xfZGN1X2RybV9oZG1pY29uICpoZG1pY29uOworCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwor CWludCByZXQ7CisKKwloZG1pY29uID0gZGV2bV9remFsbG9jKGZzbF9kZXYtPmRldiwKKwkJCSAg ICAgICBzaXplb2Yoc3RydWN0IGZzbF9kY3VfZHJtX2hkbWljb24pLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIWhkbWljb24pCisJCXJldHVybiAtRU5PTUVNOworCisJaGRtaWNvbi0+c2xhdmUgPSBmc2xf ZGV2LT5zbGF2ZTsKKwljb25uZWN0b3IgPSAmaGRtaWNvbi0+Y29ubmVjdG9yOworCisJY29ubmVj dG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSAwOworCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZv LmhlaWdodF9tbSA9IDA7CisJY29ubmVjdG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExf SFBEOworCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGZzbF9kZXYtPmRybSwgY29ubmVjdG9y LAorCQkJCSAmZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Z1bmNzLAorCQkJCSBEUk1fTU9ERV9DT05O RUNUT1JfSERNSUEpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJY29ubmVjdG9y LT5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7CisJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNv bm5lY3RvciwgJmNvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOworCXJldCA9IGRybV9jb25uZWN0b3Jf cmVnaXN0ZXIoY29ubmVjdG9yKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfY2xlYW51cDsK KworCWVuY29kZXIgPSBmc2xfZGN1X2RybV9oZG1pX2ZpbmRfZW5jb2RlcihkZXYpOworCWlmICgh ZW5jb2RlcikKKwkJZ290byBlcnJfY2xlYW51cDsKKwlyZXQgPSBkcm1fbW9kZV9jb25uZWN0b3Jf YXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290 byBlcnJfc3lzZnM7CisKKwljb25uZWN0b3ItPmVuY29kZXIgPSBlbmNvZGVyOworCisJZHJtX29i amVjdF9wcm9wZXJ0eV9zZXRfdmFsdWUKKwkJKCZjb25uZWN0b3ItPmJhc2UsIGZzbF9kZXYtPmRy bS0+bW9kZV9jb25maWcuZHBtc19wcm9wZXJ0eSwKKwkJRFJNX01PREVfRFBNU19PRkYpOworCisJ cmV0dXJuIDA7CisKK2Vycl9zeXNmczoKKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVj dG9yKTsKK2Vycl9jbGVhbnVwOgorCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOwor CXJldHVybiByZXQ7Cit9CisKK01PRFVMRV9BVVRIT1IoIkZyZWVzY2FsZSBTZW1pY29uZHVjdG9y LCBJbmMuIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlNJSTkwMnggRFZJL0hETUkgZHJpdmVyIik7 CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3Vf ZHJtX2ttcy5jCmluZGV4IGM1NjRlYzYuLjk0YjExMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCkBAIC0xNywxMCArMTcsMTggQEAKICNpbmNsdWRlICJmc2xf ZGN1X2RybV9jcnRjLmgiCiAjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCiAKK3N0YXRpYyB2 b2lkIGZzbF9kY3VfZHJtX291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKKworCWRybV9mYmRldl9jbWFfaG90cGx1Z19ldmVudChmc2xfZGV2LT5mYmRldik7Cit9 CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGZzbF9kY3VfZHJt X21vZGVfY29uZmlnX2Z1bmNzID0gewogCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBl cl9jaGVjaywKIAkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKIAku ZmJfY3JlYXRlID0gZHJtX2ZiX2NtYV9jcmVhdGUsCisJLm91dHB1dF9wb2xsX2NoYW5nZWQgPSBm c2xfZGN1X2RybV9vdXRwdXRfcG9sbF9jaGFuZ2VkLAogfTsKIAogaW50IGZzbF9kY3VfZHJtX21v ZGVzZXRfaW5pdChzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KQpAQCAtNDMsMTAg KzUxLDE0IEBAIGludCBmc2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoc3RydWN0IGZzbF9kY3VfZHJt X2RldmljZSAqZnNsX2RldikKIAlpZiAocmV0KQogCQlnb3RvIGZhaWxfZW5jb2RlcjsKIAorCWZz bF9kY3VfZHJtX2hkbWllbmNfY3JlYXRlKGZzbF9kZXYsICZmc2xfZGV2LT5jcnRjKTsKKwogCXJl dCA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoZnNsX2RldiwgJmZzbF9kZXYtPmVuY29k ZXIpOwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbF9jb25uZWN0b3I7CiAKKwlmc2xfZGN1X2RybV9o ZG1pY29uX2NyZWF0ZShmc2xfZGV2KTsKKwogCWRybV9tb2RlX2NvbmZpZ19yZXNldChmc2xfZGV2 LT5kcm0pOwogCWRybV9rbXNfaGVscGVyX3BvbGxfaW5pdChmc2xfZGV2LT5kcm0pOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9vdXRwdXQuaCBiL2Ry aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX291dHB1dC5oCmluZGV4IDcwOTMxMDku LmZhMGQ3ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X291dHB1dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX291dHB1 dC5oCkBAIC0xOCw2ICsxOCwxMyBAQCBzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yIHsKIAlz dHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKIH07CiAKK3N0cnVjdCBmc2xfZGN1X2RybV9oZG1pY29u IHsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7CisJc3RydWN0IGRybV9lbmNvZGVy X3NsYXZlICpzbGF2ZTsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50OworCWVudW0gZHJtX2Nv bm5lY3Rvcl9zdGF0dXMgc3RhdHVzOworfTsKKwogc3RhdGljIGlubGluZSBzdHJ1Y3QgZnNsX2Rj dV9kcm1fY29ubmVjdG9yICoKIHRvX2ZzbF9kY3VfY29ubmVjdG9yKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb24pCiB7CkBAIC0yOSw1ICszNiw5IEBAIGludCBmc2xfZGN1X2RybV9jb25uZWN0b3Jf Y3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCiAJCQkJIHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2Rlcik7CiBpbnQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9jcmVhdGUoc3Ry dWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpOworaW50IGZzbF9kY3VfZHJtX2hkbWljb25fY3JlYXRlKHN0cnVjdCBmc2xfZGN1 X2RybV9kZXZpY2UgKmZzbF9kZXYpOworaW50IGZzbF9kY3VfZHJtX2hkbWllbmNfY3JlYXRlKHN0 cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCisJCQkgICAgICAgc3RydWN0IGRybV9j cnRjICpjcnRjKTsKKwogCiAjZW5kaWYgLyogX19GU0xfRENVX0RSTV9DT05ORUNUT1JfSF9fICov Ci0tIAoyLjEuMC4yNy5nOTZkYjMyNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==