From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yao Cheng Subject: [RFC PATCH v2 1/4] drm/i915: add i915_ved.c to setup bridge for VED Date: Tue, 21 Oct 2014 14:36:41 +0800 Message-ID: <1413873402-4331-2-git-send-email-yao.cheng@intel.com> References: <1413873402-4331-1-git-send-email-yao.cheng@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1413873402-4331-1-git-send-email-yao.cheng@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, sean.v.kelley@intel.com, daniel.vetter@intel.com Cc: michael.j.abel@intel.com, fei.jiang@intel.com, ram.r.rao@intel.com List-Id: intel-gfx@lists.freedesktop.org U2V0dXAgbWluaW11bSByZXF1aXJlZCByZXNvdXJjZXMgZHVyaW5nIGk5MTVfZHJpdmVyX2xvYWQ6 CjEuIENyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSB0byBzaGFyZSBNTUlPL0lSUSByZXNvdXJjZXMK Mi4gTWFrZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGNoaWxkIG9mIGk5MTUgZGV2aWNlIGZvciBydW50 aW1lIFBNLgozLiBDcmVhdGUgSVJRIGNoaXAgdG8gZm9yd2FyZCB0aGUgVkVEIGlycXMuClZFRCBk cml2ZXIgKGEgc3RhbmRhbG9uZSBkcm0gZHJpdmVyKSBwcm9iZXMgdGhlIFZFRCBkZXZpY2UgYW5k CmNyZWF0ZXMgYSBuZXcgZHJpIGNhcmQgb24gaW5zdGFsbC4KCkN1cnJlbnRseSBvbmx5IHN1cHBv cnRzIFZFRCBvbiB2YWxsZXl2aWV3LgpLZXJuZWxkb2MgaXMgdXBkYXRlZCBmb3IgaTkxNV92ZWQu Yy4KClNpZ25lZC1vZmYtYnk6IFlhbyBDaGVuZyA8eWFvLmNoZW5nQGludGVsLmNvbT4KLS0tCiBE b2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyB8 ICAxMSArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCB8ICAgOSArKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmVkLmMgfCAyNjQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2Vk LCAyOTkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdmVkLmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRt cGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKaW5kZXggZDdjZmM5OC4uZjE3ODdi NCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCisrKyBiL0RvY3Vt ZW50YXRpb24vRG9jQm9vay9kcm0udG1wbApAQCAtMzgwNiw2ICszODA2LDExIEBAIGludCBudW1f aW9jdGxzOzwvc3lub3BzaXM+CiAhRmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgaW50 ZWxfcnVudGltZV9wbV9kaXNhYmxlX2ludGVycnVwdHMKICFGZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYyBpbnRlbF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzCiAgICAgICA8L3Nl Y3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+VkVEIHZpZGVvIGNvcmUgaW50ZWdy YXRpb248L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZlZC5jIFZFRCB2aWRl byBjb3JlIGludGVncmF0aW9uCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmVkLmMKKyAg ICAgIDwvc2VjdDI+CiAgICAgPC9zZWN0MT4KICAgICA8c2VjdDE+CiAgICAgICA8dGl0bGU+RGlz cGxheSBIYXJkd2FyZSBIYW5kbGluZzwvdGl0bGU+CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDNh NmJjZTAuLmE0YjkyNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC04MCw2ICs4MCw5IEBAIGk5 MTUteSArPSBkdm9fY2g3MDE3Lm8gXAogaTkxNS15ICs9IGk5MTVfZG1hLm8gXAogCSAgaTkxNV91 bXMubwogCisjIFZFRCBmb3IgVkxWCitpOTE1LXkgKz0gaTkxNV92ZWQubworCiBvYmotJChDT05G SUdfRFJNX0k5MTUpICArPSBpOTE1Lm8KIAogQ0ZMQUdTX2k5MTVfdHJhY2VfcG9pbnRzLm8gOj0g LUkkKHNyYykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCmluZGV4IDg1ZDE0ZTEuLjQ3NzE0ZTEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kbWEuYwpAQCAtMTc5MSw2ICsxNzkxLDEzIEBAIGludCBpOTE1X2Ry aXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJ aWYgKElTX0dFTjUoZGV2KSkKIAkJaW50ZWxfZ3B1X2lwc19pbml0KGRldl9wcml2KTsKIAorCWlm IChJU19WQUxMRVlWSUVXKGRldikpIHsKKwkJcmV0ID0gdmx2X3NldHVwX3ZlZChkZXYpOworCQlp ZiAocmV0IDwgMCkgeworCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0dXAgVkVEIGJyaWRnZTog JWRcbiIsIHJldCk7CisJCX0KKwl9CisKIAlpbnRlbF9ydW50aW1lX3BtX2VuYWJsZShkZXZfcHJp dik7CiAKIAlyZXR1cm4gMDsKQEAgLTE4MzMsNiArMTg0MCwxMCBAQCBpbnQgaTkxNV9kcml2ZXJf dW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQgcmV0OwogCisJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkgeworCQl2bHZfdGVhcmRvd25fdmVkKGRldik7CisJfQorCiAJcmV0ID0gaTkx NV9nZW1fc3VzcGVuZChkZXYpOwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g aWRsZSBoYXJkd2FyZTogJWRcbiIsIHJldCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA4 MjFiYTI2Li45NTJkZjM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE3MDksNiArMTcw OSwxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAl1aW50MzJfdCBiaW9zX3ZnYWNu dHI7CiAKKwkvKiB1c2VkIGZvciBzZXR1cCBWRUQgYnJpZGdlICovCisJc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqdmVkX3BsYXRkZXY7CisJaW50CXZlZF9pcnE7CisKIAkvKiBPbGQgZHJpMSBzdXBw b3J0IGluZnJhc3RydWN0dXJlLCBiZXdhcmUgdGhlIGRyYWdvbnMgeWEgZm9vbHMgZW50ZXJpbmcK IAkgKiBoZXJlISAqLwogCXN0cnVjdCBpOTE1X2RyaTFfc3RhdGUgZHJpMTsKQEAgLTI3ODUsNiAr Mjc4OSwxMSBAQCB2b2lkIGk5MTVfcmVzdG9yZV9kaXNwbGF5X3JlZyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2X3By aXYpOwogdm9pZCBpOTE1X3RlYXJkb3duX3N5c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXZfcHJp dik7CiAKKy8qIGk5MTVfdmVkLmMgKi8KK2ludCB2bHZfc2V0dXBfdmVkKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwordm9pZCB2bHZfdGVhcmRvd25fdmVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owordm9pZCB2bHZfdmVkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCiAv KiBpbnRlbF9pMmMuYyAqLwogZXh0ZXJuIGludCBpbnRlbF9zZXR1cF9nbWJ1cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGludGVsX3RlYXJkb3duX2dtYnVzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5kZXggNzM3YjIzOS4uNjhj Mjk3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0yMTc3LDYgKzIxNzcsOCBAQCBzdGF0 aWMgaXJxcmV0dXJuX3QgdmFsbGV5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcp CiAJCQlzbmJfZ3RfaXJxX2hhbmRsZXIoZGV2LCBkZXZfcHJpdiwgZ3RfaWlyKTsKIAkJaWYgKHBt X2lpcikKIAkJCWdlbjZfcnBzX2lycV9oYW5kbGVyKGRldl9wcml2LCBwbV9paXIpOworCQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpICYmIChpaXIgJiBWTFZfVkVEX0JMT0NLX0lOVEVSUlVQVCkpCisJ CQl2bHZfdmVkX2lycV9oYW5kbGVyKGRldik7CiAJCS8qIENhbGwgcmVnYXJkbGVzcywgYXMgc29t ZSBzdGF0dXMgYml0cyBtaWdodCBub3QgYmUKIAkJICogc2lnbmFsbGVkIGluIGlpciAqLwogCQl2 YWxsZXl2aWV3X3BpcGVzdGF0X2lycV9oYW5kbGVyKGRldiwgaWlyKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCmluZGV4IDJlZDAyYzMuLjk1NDIxZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApA QCAtMTI4NCw2ICsxMjg0LDExIEBAIGVudW0gcHVuaXRfcG93ZXJfd2VsbCB7CiAjZGVmaW5lIFZM Vl9ESVNQTEFZX0JBU0UgMHgxODAwMDAKICNkZWZpbmUgVkxWX01JUElfQkFTRSBWTFZfRElTUExB WV9CQVNFCiAKKy8qIGZvcndhcmRpbmcgVkVEIGlycSBhbmQgc2hhcmluZyBNTUlPIHRvIHRoZSBW RUQgZHJpdmVyICovCisjZGVmaW5lIFZMVl9WRURfQkxPQ0tfSU5URVJSVVBUCQkJKDEgPDwgMjMp CisjZGVmaW5lIFZMVl9WRURfQkFTRSAweDE3MDAwMAorI2RlZmluZSBWTFZfVkVEX1NJWkUgMHgw MTAwMDAKKwogI2RlZmluZSBWTFZfR1VfQ1RMMAkoVkxWX0RJU1BMQVlfQkFTRSArIDB4MjAzMCkK ICNkZWZpbmUgVkxWX0dVX0NUTDEJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDIwMzQpCiAjZGVmaW5l IFNDUEQwCQkweDAyMDljIC8qIDkxNSsgb25seSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92ZWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmVkLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRmZTRhZgotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmVkLmMKQEAgLTAsMCArMSwyNjQgQEAKKy8q CisgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgWWFv IENoZW5nIDx5YW8uY2hlbmdAaW50ZWwuY29tPgorICoKKyAqLworCisjaW5jbHVkZSAiaTkxNV9k cnYuaCIKKworLyoqCisgKiBET0M6IFZFRCB2aWRlbyBjb3JlIGludGVncmF0aW9uCisgKgorICog TW90aXZhdGlvbjoKKyAqIFNvbWUgcGxhdGZvcm1zIChlLmcuIHZhbGxleXZpZXcpIGludGVncmF0 ZXMgYSBWRUQgaW5zaWRlIEdQVSB0byBleHRlbmQgdGhlCisgKiB2aWRlbyBkZWNvZGluZyBjYXBh YmlsaXR5LgorICogVGhlIFZFRCBpcyBkcml2ZW4gYnkgdGhlIHN0YW5kYWxvbmUgZHJtIGRyaXZl ciAiaXB2ciIgd2hpY2ggY292ZXJzIFBvd2VyVlIKKyAqIFZQVXMuIFNpbmNlIHRoZSBQb3dlclZS IFZQVXMgYXJlIGFsc28gaW50ZWdyYXRlZCBieSBub24taTkxNSBwbGF0Zm9ybXMgc3VjaAorICog YXMgR01BNTAwLCB3ZSdkIGxpa2UgdG8ga2VlcCBpcHZyIGRyaXZlciBhbmQgaTkxNSBkcml2ZXIg c2VwYXJhdGVkIGFuZAorICogaW5kZXBlbmRlbnQgdG8gZWFjaCBvdGhlci4gVG8gYWNoaWV2ZSB0 aGlzIHdlIGRvIHRoZSBtaW5pbXVtIHdvcmsgaW4gaTkxNQorICogdG8gc2V0dXAgYSBicmlkZ2Ug YmV0d2VlbiBpcHZyIGFuZCBpOTE1OgorICogMS4gQ3JlYXRlIGEgcGxhdGZvcm0gZGV2aWNlIHRv IHNoYXJlIE1NSU8vSVJRIHJlc291cmNlcworICogMi4gTWFrZSB0aGUgcGxhdGZvcm0gZGV2aWNl IGNoaWxkIG9mIGk5MTUgZGV2aWNlIGZvciBydW50aW1lIFBNLgorICogMy4gQ3JlYXRlIElSUSBj aGlwIHRvIGZvcndhcmQgdGhlIFZFRCBpcnFzLgorICogaXB2ciBkcml2ZXIgcHJvYmVzIHRoZSBW RUQgZGV2aWNlIGFuZCBjcmVhdGVzIGEgbmV3IGRyaSBjYXJkIG9uIGluc3RhbGwuCisgKgorICog VGhyZWF0czoKKyAqIER1ZSB0byB0aGUgcmVzdHJpY3Rpb24gaW4gTGludXggcGxhdGZvcm0gZGV2 aWNlIG1vZGVsLCB1c2VyIG5lZWQgbWFudWFsbHkKKyAqIHVuaW5zdGFsbCBpcHZyIGRyaXZlciBi ZWZvcmUgdW5pbnN0YWxsaW5nIGk5MTUgbW9kdWxlLCBvdGhlcndpc2UgaGUgbWlnaHQKKyAqIHJ1 biBpbnRvIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhZnRlciBpOTE1IHJlbW92ZXMgdGhlIHBsYXRm b3JtIGRldmljZS4KKyAqCisgKiBJbXBsZW1lbnRhdGlvbjoKKyAqIFRoZSBNTUlPL1JFRyBwbGF0 Zm9ybSByZXNvdXJjZXMgYXJlIGNyZWF0ZWQgYWNjb3JkaW5nIHRvIHRoZSByZWdpc3RlcnMKKyAq IHNwZWNpZmljYXRpb24uCisgKiBXaGVuIGZvcndhcmRpbmcgVkVEIGlycXMsIHRoZSBmbG93IGNv bnRyb2wgaGFuZGxlciBzZWxlY3Rpb24gZGVwZW5kcyBvbiB0aGUKKyAqIHBsYXRmb3JtLCBmb3Ig ZXhhbXBsZSBvbiB2YWxsZXl2aWV3IGhhbmRsZV9zaW1wbGVfaXJxIGlzIGVub3VnaC4KKyAqCisg Ki8KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIHZsdl92ZWRfcGxhdGRldl9jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlpbnQgcmV0OworCXN0cnVjdCByZXNvdXJj ZSAqcnNjID0gTlVMTDsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0ZGV2OworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwlwbGF0 ZGV2ID0gcGxhdGZvcm1fZGV2aWNlX2FsbG9jKCJpcHZyLXZlZC12bHYiLCAtMSk7CisJaWYgKCFw bGF0ZGV2KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIFZFRCBwbGF0Zm9ybSBk ZXZpY2VcbiIpOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycjsKKwl9CisKKwlyc2MgPSBr emFsbG9jKHNpemVvZigqcnNjKSAqIDMsIEdGUF9LRVJORUwpOworCWlmICghcnNjKSB7CisJCURS TV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHJlc291cmNlIGZvciBWRUQgcGxhdGZvcm0gZGV2 aWNlXG4iKTsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnI7CisJfQorCisJV0FSTl9PTihk ZXZfcHJpdi0+dmVkX2lycSA8IDApOworCXJzY1swXS5zdGFydCAgICA9IHJzY1swXS5lbmQgPSBk ZXZfcHJpdi0+dmVkX2lycTsKKwlyc2NbMF0uZmxhZ3MgICAgPSBJT1JFU09VUkNFX0lSUTsKKwly c2NbMF0ubmFtZSAgICAgPSAiaXB2ci12ZWQtdmx2LWlycSI7CisKKwkvKiBNTUlPL1JFRyBmb3Ig Y2hpbGQncyB1c2UgKi8KKwlyc2NbMV0uc3RhcnQgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2 LT5wZGV2LCAwKTsKKwlyc2NbMV0uZW5kICAgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5w ZGV2LCAwKSArIDIqMTAyNCoxMDI0OyAvKiBnZW43ICovCisJcnNjWzFdLmZsYWdzICAgID0gSU9S RVNPVVJDRV9NRU07CisJcnNjWzFdLm5hbWUgICAgID0gImlwdnItdmVkLXZsdi1tbWlvIjsKKwor CXJzY1syXS5zdGFydCAgICA9IFZMVl9WRURfQkFTRTsKKwlyc2NbMl0uZW5kICAgICAgPSBWTFZf VkVEX0JBU0UgKyBWTFZfVkVEX1NJWkU7CisJcnNjWzJdLmZsYWdzICAgID0gSU9SRVNPVVJDRV9S RUc7CisJcnNjWzJdLm5hbWUgICAgID0gImlwdnItdmVkLXZsdi1yZWciOworCisJcmV0ID0gcGxh dGZvcm1fZGV2aWNlX2FkZF9yZXNvdXJjZXMocGxhdGRldiwgcnNjLCAzKTsKKwlpZiAocmV0KSB7 CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCByZXNvdXJjZSBmb3IgVkVEIHBsYXRmb3JtIGRl dmljZTogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyOworCX0KKworCS8qIFJ1bnRpbWUtUE0gaG9v ayAqLworCXBsYXRkZXYtPmRldi5wYXJlbnQgPSBkZXYtPmRldjsKKwlyZXQgPSBwbGF0Zm9ybV9k ZXZpY2VfYWRkKHBsYXRkZXYpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g YWRkIFZFRCBwbGF0Zm9ybSBkZXZpY2U6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycjsKKwl9CisK KwlrZnJlZShyc2MpOworCXJldHVybiBwbGF0ZGV2OworZXJyOgorCWlmIChyc2MpCisJCWtmcmVl KHJzYyk7CisJaWYgKHBsYXRkZXYpCisJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBsYXRk ZXYpOworCXJldHVybiBFUlJfUFRSKHJldCk7Cit9CisKK3N0YXRpYyB2b2lkIHZsdl92ZWRfcGxh dGRldl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpZiAoZGV2X3ByaXYtPnZl ZF9wbGF0ZGV2KQorCQlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihkZXZfcHJpdi0+dmVkX3Bs YXRkZXYpOworfQorCitzdGF0aWMgdm9pZCB2bHZfdmVkX2lycV91bm1hc2soc3RydWN0IGlycV9k YXRhICpkKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkLT5jaGlwX2RhdGE7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICopIGRldi0+ZGV2X3ByaXZhdGU7CisJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKKwl1MzIgaW1y LCBpZXI7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3Mp OworCisJaWVyID0gSTkxNV9SRUFEKFZMVl9JRVIpOworCWllciB8PSBWTFZfVkVEX0JMT0NLX0lO VEVSUlVQVDsKKwlJOTE1X1dSSVRFKFZMVl9JRVIsIGllcik7CisJUE9TVElOR19SRUFEKFZMVl9J RVIpOworCisJaW1yID0gSTkxNV9SRUFEKFZMVl9JTVIpOworCWltciAmPSB+VkxWX1ZFRF9CTE9D S19JTlRFUlJVUFQ7CisJZGV2X3ByaXYtPmlycV9tYXNrID0gaW1yOworCUk5MTVfV1JJVEUoVkxW X0lNUiwgaW1yKTsKKwlQT1NUSU5HX1JFQUQoVkxWX0lNUik7CisKKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdzKTsKK30KKworc3RhdGljIHZvaWQg dmx2X3ZlZF9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGQtPmNoaXBfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKikgZGV2LT5kZXZfcHJpdmF0ZTsKKwl1bnNp Z25lZCBsb25nIGlycWZsYWdzOworCXUzMiBpbXIsIGllcjsKKwlzcGluX2xvY2tfaXJxc2F2ZSgm ZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7CisKKwlpZXIgPSBJOTE1X1JFQUQoVkxWX0lF Uik7CisJaWVyICY9IH5WTFZfVkVEX0JMT0NLX0lOVEVSUlVQVDsKKwlJOTE1X1dSSVRFKFZMVl9J RVIsIGllcik7CisJUE9TVElOR19SRUFEKFZMVl9JRVIpOworCisJaW1yID0gSTkxNV9SRUFEKFZM Vl9JTVIpOworCWltciB8PSBWTFZfVkVEX0JMT0NLX0lOVEVSUlVQVDsKKwlkZXZfcHJpdi0+aXJx X21hc2sgPSBpbXI7CisJSTkxNV9XUklURShWTFZfSU1SLCBpbXIpOworCVBPU1RJTkdfUkVBRChW TFZfSU1SKTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywg aXJxZmxhZ3MpOworfQorCitzdGF0aWMgc3RydWN0IGlycV9jaGlwIHZsdl92ZWRfaXJxY2hpcCA9 IHsKKwkubmFtZSA9ICJpcHZyX3ZlZF9pcnFjaGlwIiwKKwkuaXJxX21hc2sgPSB2bHZfdmVkX2ly cV9tYXNrLAorCS5pcnFfdW5tYXNrID0gdmx2X3ZlZF9pcnFfdW5tYXNrLAorfTsKKworaW50IHZs dl92ZWRfaXJxX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGlycSkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KikgZGV2LT5kZXZfcHJpdmF0ZTsKKwlXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3By aXYpKTsKKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXJfbmFtZShpcnEsCisJCSZ2bHZfdmVkX2ly cWNoaXAsCisJCWhhbmRsZV9zaW1wbGVfaXJxLAorCQkiaXB2cl92ZWRfdmx2X2lycV9oYW5kbGVy Iik7CisJcmV0dXJuIGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZGV2KTsKK30KKwordm9pZCB2bHZf dmVkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJaW50IHJldDsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWlm IChkZXZfcHJpdi0+dmVkX2lycSA8IDAgJiYgcHJpbnRrX3JhdGVsaW1pdCgpKSB7CisJCURSTV9F UlJPUigiaW52YWxpZCB2ZWQgaXJxIG51bWJlcjogJWRcbiIsIGRldl9wcml2LT52ZWRfaXJxKTsK KwkJcmV0dXJuOworCX0KKwlyZXQgPSBnZW5lcmljX2hhbmRsZV9pcnEoZGV2X3ByaXYtPnZlZF9p cnEpOworCWlmIChyZXQgJiYgcHJpbnRrX3JhdGVsaW1pdCgpKSB7CisJCURSTV9FUlJPUigiZXJy b3IgaGFuZGxpbmcgdmx2IHZlZCBpcnE6ICVkXG4iLCByZXQpOworCX0KK30KKworLyoqCisgKiB2 bHZfc2V0dXBfdmVkKCkgLSBzZXR1cCB0aGUgYnJpZGdlIGJldHdlZW4gVkVEIGRyaXZlciBhbmQg aTkxNQorICogQGRldjogdGhlIGk5MTUgZHJtIGRldmljZQorICoKKyAqIHNldCB1cCB0aGUgbWlu aW11bSByZXF1aXJlZCByZXNvdXJjZXMgZm9yIHRoZSBicmlkZ2U6IGlycSBjaGlwLCBwbGF0Zm9y bQorICogcmVzb3VyY2UgYW5kIHBsYXRmb3JtIGRldmljZS4gaTkxNSBkZXZpY2UgaXMgc2V0IGFz IHBhcmVudCBvZiB0aGUgbmV3CisgKiBwbGF0Zm9ybSBkZXZpY2UuCisgKgorICogUmV0dXJuOiAw IGlmIHN1Y2Nlc3NmdWwuIG5vbi16ZXJvIGlmIGFsbG9jYXRpb24vaW5pdGlhbGl6YXRpb24gZmFp bHMKKyAqLworaW50IHZsdl9zZXR1cF92ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlp bnQgaXJxOworCWludCByZXQ7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0ZGV2OworCWRl dl9wcml2LT52ZWRfaXJxID0gLTE7CisJZGV2X3ByaXYtPnZlZF9wbGF0ZGV2ID0gTlVMTDsKKwor CWlycSA9IGlycV9hbGxvY19kZXNjcygtMSwgMCwgMSwgMCk7CisJaWYgKGlycSA8IDApIHsKKwkJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgSVJRIGRlc2M6ICVkXG4iLCBpcnEpOworCQly ZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycjsKKwl9CisKKwlyZXQgPSB2bHZfdmVkX2lycV9pbml0 KGRldiwgaXJxKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxp emUgaXJxY2hpcCBmb3Igdmx2LXZlZDogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyOworCX0KKwlk ZXZfcHJpdi0+dmVkX2lycSA9IGlycTsKKworCXBsYXRkZXYgPSB2bHZfdmVkX3BsYXRkZXZfY3Jl YXRlKGRldik7CisJaWYgKElTX0VSUihwbGF0ZGV2KSkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0 byBjcmVhdGUgcGxhdGZvcm0gZGV2aWNlIGZvciB2bHYtdmVkOiAlbGRcbiIsIFBUUl9FUlIocGxh dGRldikpOworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIGVycjsKKwl9CisKKwlkZXZfcHJpdi0+ dmVkX3BsYXRkZXYgPSBwbGF0ZGV2OworCXJldHVybiAwOworZXJyOgorCXZsdl90ZWFyZG93bl92 ZWQoZGV2KTsKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIHZsdl90ZWFyZG93bl92ZWQoKSAt IGRlc3Ryb3kgdGhlIGJyaWRnZSBiZXR3ZWVuIFZFRCBkcml2ZXIgYW5kIGk5MTUKKyAqIEBkZXY6 IHRoZSBpOTE1IGRybSBkZXZpY2UKKyAqCisgKiByZWxlYXNlIGFsbCB0aGUgcmVzb3VyY2VzIGZv ciBWRUQgPC0+IGk5MTUgYnJpZGdlLgorICovCit2b2lkIHZsdl90ZWFyZG93bl92ZWQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOworCXZsdl92ZWRfcGxhdGRldl9kZXN0cm95KGRldik7CisJZGV2 X3ByaXYtPnZlZF9wbGF0ZGV2ID0gTlVMTDsKKwlpZiAoZGV2X3ByaXYtPnZlZF9pcnEgPj0gMCkg eworCQlpcnFfZnJlZV9kZXNjKGRldl9wcml2LT52ZWRfaXJxKTsKKwl9CisJZGV2X3ByaXYtPnZl ZF9pcnEgPSAtMTsKK30KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=