From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerome Anand Subject: [PATCH v5 1/5] drm/i915: setup bridge for HDMI LPE audio driver Date: Wed, 25 Jan 2017 04:27:49 +0530 Message-ID: <20170124225753.9045-2-jerome.anand@intel.com> References: <20170124225753.9045-1-jerome.anand@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170124225753.9045-1-jerome.anand@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, alsa-devel@alsa-project.org Cc: tiwai@suse.de, broonie@kernel.org, rakesh.a.ughreja@intel.com List-Id: alsa-devel@alsa-project.org RW5hYmxlIHN1cHBvcnQgZm9yIEhETUkgTFBFIGF1ZGlvIG1vZGUgb24gQmF5dHJhaWwgYW5kCkNo ZXJyeXRyYWlsIHdoZW4gSERhdWRpbyBjb250cm9sbGVyIGlzIG5vdCBkZXRlY3RlZAoKU2V0dXAg bWluaW11bSByZXF1aXJlZCByZXNvdXJjZXMgZHVyaW5nIGk5MTVfZHJpdmVyX2xvYWQ6CjEuIENy ZWF0ZSBhIHBsYXRmb3JtIGRldmljZSB0byBzaGFyZSBNTUlPL0lSUSByZXNvdXJjZXMKMi4gTWFr ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGNoaWxkIG9mIGk5MTUgZGV2aWNlIGZvciBydW50aW1lIFBN LgozLiBDcmVhdGUgSVJRIGNoaXAgdG8gZm9yd2FyZCBIRE1JIExQRSBhdWRpbyBpcnFzLgoKSERN SSBMUEUgYXVkaW8gZHJpdmVyIChhIHN0YW5kYWxvbmUgc291bmQgZHJpdmVyKSBwcm9iZXMgdGhl CkxQRSBhdWRpbyBkZXZpY2UgYW5kIGNyZWF0ZXMgYSBuZXcgc291bmQgY2FyZC4KClNpZ25lZC1v ZmYtYnk6IFBpZXJyZS1Mb3VpcyBCb3NzYXJ0IDxwaWVycmUtbG91aXMuYm9zc2FydEBsaW51eC5p bnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEplcm9tZSBBbmFuZCA8amVyb21lLmFuYW5kQGludGVs LmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdCAgICAgICAgICAgICB8ICAgOSAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICB8ICAgMyArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTEgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgICAgICAgIHwgIDE2ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o ICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICAgICB8 ICAyNSArKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgIHwgICAyICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xwZV9hdWRpby5jIHwgMzIxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vaW50ZWxfbHBlX2F1ZGlvLmggICAg ICAgICAgfCAgNDYgKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDQzOCBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xwZV9hdWRpby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vaW50ZWxfbHBl X2F1ZGlvLmgKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdCBiL0RvY3Vt ZW50YXRpb24vZ3B1L2k5MTUucnN0CmluZGV4IDEwNDI5NmQuLmJkOWI3NjcgMTAwNjQ0Ci0tLSBh L0RvY3VtZW50YXRpb24vZ3B1L2k5MTUucnN0CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2k5MTUu cnN0CkBAIC0yMjUsNiArMjI1LDE1IEBAIERpc3BsYXkgUExMcwogLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmgKICAgIDppbnRlcm5hbDoKIAoraW50 ZWwgaGRtaSBscGUgYXVkaW8gc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor CisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMK KyAgIDpkb2M6ICBMUEUgQXVkaW8gaW50ZWdyYXRpb24gZm9yIEhETUkgb3IgRFAgcGxheWJhY2sK KworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xwZV9hdWRpby5j CisgICA6aW50ZXJuYWw6CisKIE1lbW9yeSBNYW5hZ2VtZW50IGFuZCBDb21tYW5kIFN1Ym1pc3Np b24KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZQppbmRleCA3NGNhMmU4Li5jNjJhYjQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAt MTI5LDYgKzEyOSw5IEBAIGk5MTUteSArPSBpbnRlbF9ndnQubwogaW5jbHVkZSAkKHNyYykvZ3Z0 L01ha2VmaWxlCiBlbmRpZgogCisjIExQRSBBdWRpbyBmb3IgVkxWIGFuZCBDSFQKK2k5MTUteSAr PSBpbnRlbF9scGVfYXVkaW8ubworCiBvYmotJChDT05GSUdfRFJNX0k5MTUpICs9IGk5MTUubwog CiBDRkxBR1NfaTkxNV90cmFjZV9wb2ludHMubyA6PSAtSSQoc3JjKQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKaW5kZXggY2ExNjhiMi4uMmUwNTc0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBA IC0xMTQwLDcgKzExNDAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2RyaXZlcl9yZWdpc3RlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYgKElTX0dFTjUoZGV2X3ByaXYpKQog CQlpbnRlbF9ncHVfaXBzX2luaXQoZGV2X3ByaXYpOwogCi0JaTkxNV9hdWRpb19jb21wb25lbnRf aW5pdChkZXZfcHJpdik7CisJaW50ZWxfYXVkaW9faW5pdChkZXZfcHJpdik7CiAKIAkvKgogCSAq IFNvbWUgcG9ydHMgcmVxdWlyZSBjb3JyZWN0bHkgc2V0LXVwIGhwZCByZWdpc3RlcnMgZm9yIGRl dGVjdGlvbiB0bwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJf cmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICovCiBzdGF0aWMg dm9pZCBpOTE1X2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKLQlpOTE1X2F1ZGlvX2NvbXBvbmVudF9jbGVhbnVwKGRldl9wcml2KTsKKwlpbnRl bF9hdWRpb19kZWluaXQoZGV2X3ByaXYpOwogCiAJaW50ZWxfZ3B1X2lwc190ZWFyZG93bigpOwog CWFjcGlfdmlkZW9fdW5yZWdpc3RlcigpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMjQ0 NjI4MC4uOGI2OGY5MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjQ1NCw2ICsyNDU0 LDEyIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkvKiBVc2VkIHRvIHNhdmUgdGhlIHBp cGUtdG8tZW5jb2RlciBtYXBwaW5nIGZvciBhdWRpbyAqLwogCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICphdl9lbmNfbWFwW0k5MTVfTUFYX1BJUEVTXTsKIAorCS8qIG5lY2Vzc2FyeSByZXNvdXJjZSBz aGFyaW5nIHdpdGggSERNSSBMUEUgYXVkaW8gZHJpdmVyLiAqLworCXN0cnVjdCB7CisJCXN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRkZXY7CisJCWludAlpcnE7CisJfSBscGVfYXVkaW87CisK IAkvKgogCSAqIE5PVEU6IFRoaXMgaXMgdGhlIGRyaTEvdW1zIGR1bmdlb24sIGRvbid0IGFkZCBz dHVmZiBoZXJlLiBZb3VyIHBhdGNoCiAJICogd2lsbCBiZSByZWplY3RlZC4gSW5zdGVhZCBsb29r IGZvciBhIGJldHRlciBwbGFjZS4KQEAgLTM1OTIsNiArMzU5OCwxMSBAQCBleHRlcm4gaW50IGk5 MTVfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9p ZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2 b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKIAorLyogaW50ZWxfbHBlX2F1ZGlvLmMgKi8KK2ludCAgaW50ZWxfbHBlX2F1ZGlvX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQgaW50ZWxfbHBlX2F1ZGlv X3RlYXJkb3duKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGludGVs X2xwZV9hdWRpb19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp OworCiAvKiBpbnRlbF9pMmMuYyAqLwogZXh0ZXJuIGludCBpbnRlbF9zZXR1cF9nbWJ1cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfdGVhcmRv d25fZ21idXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCmluZGV4IDZmZWZjMzQuLjQ3ZDYxMzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu YwpAQCAtMTkyNiw2ICsxOTI2LDEwIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB2YWxsZXl2aWV3X2ly cV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAkJICogc2lnbmFsbGVkIGluIGlpciAqLwog CQl2YWxsZXl2aWV3X3BpcGVzdGF0X2lycV9hY2soZGV2X3ByaXYsIGlpciwgcGlwZV9zdGF0cyk7 CiAKKwkJaWYgKGlpciAmIChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwKKwkJCSAgIEk5MTVf TFBFX1BJUEVfQl9JTlRFUlJVUFQpKQorCQkJaW50ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKGRl dl9wcml2KTsKKwogCQkvKgogCQkgKiBWTFZfSUlSIGlzIHNpbmdsZSBidWZmZXJlZCwgYW5kIHJl ZmxlY3RzIHRoZSBsZXZlbAogCQkgKiBmcm9tIFBJUEVTVEFUL1BPUlRfSE9UUExVR19TVEFULCBo ZW5jZSBjbGVhciBpdCBsYXN0LgpAQCAtMjAwNiw2ICsyMDEwLDExIEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBjaGVycnl2aWV3X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAkJICogc2ln bmFsbGVkIGluIGlpciAqLwogCQl2YWxsZXl2aWV3X3BpcGVzdGF0X2lycV9hY2soZGV2X3ByaXYs IGlpciwgcGlwZV9zdGF0cyk7CiAKKwkJaWYgKGlpciAmIChJOTE1X0xQRV9QSVBFX0FfSU5URVJS VVBUIHwKKwkJCSAgIEk5MTVfTFBFX1BJUEVfQl9JTlRFUlJVUFQgfAorCQkJICAgSTkxNV9MUEVf UElQRV9DX0lOVEVSUlVQVCkpCisJCQlpbnRlbF9scGVfYXVkaW9faXJxX2hhbmRsZXIoZGV2X3By aXYpOworCiAJCS8qCiAJCSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVmbGVj dHMgdGhlIGxldmVsCiAJCSAqIGZyb20gUElQRVNUQVQvUE9SVF9IT1RQTFVHX1NUQVQsIGhlbmNl IGNsZWFyIGl0IGxhc3QuCkBAIC0yOTQ4LDYgKzI5NTcsNyBAQCBzdGF0aWMgdm9pZCB2bHZfZGlz cGxheV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CXUzMiBwaXBlc3RhdF9tYXNrOwogCXUzMiBlbmFibGVfbWFzazsKIAllbnVtIHBpcGUgcGlwZTsK Kwl1MzIgdmFsOwogCiAJcGlwZXN0YXRfbWFzayA9IFBMQU5FX0ZMSVBfRE9ORV9JTlRfU1RBVFVT X1ZMViB8CiAJCQlQSVBFX0NSQ19ET05FX0lOVEVSUlVQVF9TVEFUVVM7CkBAIC0yOTY0LDYgKzI5 NzQsMTIgQEAgc3RhdGljIHZvaWQgdmx2X2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCVdBUk5fT04oZGV2X3ByaXYtPmlycV9tYXNr ICE9IH4wKTsKIAorCXZhbCA9IChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwKKwkJSTkxNV9M UEVfUElQRV9CX0lOVEVSUlVQVCB8CisJCUk5MTVfTFBFX1BJUEVfQ19JTlRFUlJVUFQpOworCisJ ZW5hYmxlX21hc2sgfD0gdmFsOworCiAJZGV2X3ByaXYtPmlycV9tYXNrID0gfmVuYWJsZV9tYXNr OwogCiAJR0VONV9JUlFfSU5JVChWTFZfLCBkZXZfcHJpdi0+aXJxX21hc2ssIGVuYWJsZV9tYXNr KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDcyZjlmMzYuLjY3MmNiMTAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaApAQCAtMjQyOCw2ICsyNDI4LDkgQEAgZW51bSBza2xfZGlzcF9wb3dl cl93ZWxscyB7CiAjZGVmaW5lIEk5MTVfQVNMRV9JTlRFUlJVUFQJCQkJKDE8PDApCiAjZGVmaW5l IEk5MTVfQlNEX1VTRVJfSU5URVJSVVBUCQkJCSgxPDwyNSkKIAorI2RlZmluZSBJOTE1X0hETUlf TFBFX0FVRElPX0JBU0UJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY1MDAwKQorI2RlZmluZSBJOTE1 X0hETUlfTFBFX0FVRElPX1NJWkUJMHgxMDAwCisKICNkZWZpbmUgR0VONl9CU0RfUk5DSUQJCQlf TU1JTygweDEyMTk4KQogCiAjZGVmaW5lIEdFTjdfRkZfVEhSRUFEX01PREUJCV9NTUlPKDB4MjBh MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCmluZGV4IDE2YzIwMjcuLjEwMzE1OWQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwpAQCAtOTU2LDMgKzk1NiwyOCBAQCB2b2lkIGk5 MTVfYXVkaW9fY29tcG9uZW50X2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCWNvbXBvbmVudF9kZWwoZGV2X3ByaXYtPmRybS5kZXYsICZpOTE1X2F1ZGlvX2NvbXBv bmVudF9iaW5kX29wcyk7CiAJZGV2X3ByaXYtPmF1ZGlvX2NvbXBvbmVudF9yZWdpc3RlcmVkID0g ZmFsc2U7CiB9CisKKy8qKgorICogaW50ZWxfYXVkaW9faW5pdCgpIC0gSW5pdGlhbGl6ZSB0aGUg YXVkaW8gZHJpdmVyIGVpdGhlciB1c2luZworICogY29tcG9uZW50IGZyYW1ld29yayBvciB1c2lu ZyBscGUgYXVkaW8gYnJpZGdlCisgKiBAZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2UgcHJp dmF0ZSBkYXRhCisgKgorICovCit2b2lkIGludGVsX2F1ZGlvX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQoreworCWlmIChpbnRlbF9scGVfYXVkaW9faW5pdChkZXZfcHJp dikgPCAwKQorCQlpOTE1X2F1ZGlvX2NvbXBvbmVudF9pbml0KGRldl9wcml2KTsKK30KKworLyoq CisgKiBpbnRlbF9hdWRpb19kZWluaXQoKSAtIGRlaW5pdGlhbGl6ZSB0aGUgYXVkaW8gZHJpdmVy CisgKiBAZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRhCisgKgorICov Cit2b2lkIGludGVsX2F1ZGlvX2RlaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit7CisJaWYgKChkZXZfcHJpdiktPmxwZV9hdWRpby5wbGF0ZGV2ICE9IE5VTEwpCisJCWlu dGVsX2xwZV9hdWRpb190ZWFyZG93bihkZXZfcHJpdik7CisJZWxzZQorCQlpOTE1X2F1ZGlvX2Nv bXBvbmVudF9jbGVhbnVwKGRldl9wcml2KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5k ZXggMGNlYzAwMS4uZjE2Mjg4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTEyMjUs NiArMTIyNSw4IEBAIHZvaWQgaW50ZWxfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAogdm9pZCBpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKTsKIHZvaWQgaTkxNV9hdWRpb19jb21wb25lbnRfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2F1ZGlvX2NvbXBv bmVudF9jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGlu dGVsX2F1ZGlvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQg aW50ZWxfYXVkaW9fZGVpbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAK IC8qIGludGVsX2Rpc3BsYXkuYyAqLwogZW51bSB0cmFuc2NvZGVyIGludGVsX2NydGNfcGNoX3Ry YW5zY29kZXIoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scGVfYXVkaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2UxYjVi Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlv LmMKQEAgLTAsMCArMSwzMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq CisgKiBBdXRob3JzOgorICogICAgUGllcnJlLUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vpcy5i b3NzYXJ0QGxpbnV4LmludGVsLmNvbT4KKyAqICAgIEplcm9tZSBBbmFuZCA8amVyb21lLmFuYW5k QGludGVsLmNvbT4KKyAqICAgIGJhc2VkIG9uIFZFRCBwYXRjaGVzCisgKgorICovCisKKy8qKgor ICogRE9DOiBMUEUgQXVkaW8gaW50ZWdyYXRpb24gZm9yIEhETUkgb3IgRFAgcGxheWJhY2sKKyAq CisgKiBNb3RpdmF0aW9uOgorICogQXRvbSBwbGF0Zm9ybXMgKGUuZy4gdmFsbGV5dmlldyBhbmQg Y2hlcnJ5VHJhaWwpIGludGVncmF0ZXMgYSBETUEtYmFzZWQKKyAqIGludGVyZmFjZSBhcyBhbiBh bHRlcm5hdGl2ZSB0byB0aGUgdHJhZGl0aW9uYWwgSERhdWRpbyBwYXRoLiBXaGlsZSB0aGlzCisg KiBtb2RlIGlzIHVucmVsYXRlZCB0byB0aGUgTFBFIGFrYSBTU1QgYXVkaW8gZW5naW5lLCB0aGUg ZG9jdW1lbnRhdGlvbiByZWZlcnMKKyAqIHRvIHRoaXMgbW9kZSBhcyBMUEUgc28gd2Uga2VlcCB0 aGlzIG5vdGF0aW9uIGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeS4KKyAqCisgKiBUaGUgaW50 ZXJmYWNlIGlzIGhhbmRsZWQgYnkgYSBzZXBhcmF0ZSBzdGFuZGFsb25lIGRyaXZlciBtYWludGFp bmVkIGluIHRoZQorICogQUxTQSBzdWJzeXN0ZW0gZm9yIHNpbXBsaWNpdHkuIFRvIG1pbmltaXpl IHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSB0d28KKyAqIHN1YnN5c3RlbXMsIGEgYnJpZGdl IGlzIHNldHVwIGJldHdlZW4gdGhlIGhkbWktbHBlLWF1ZGlvIGFuZCBpOTE1OgorICogMS4gQ3Jl YXRlIGEgcGxhdGZvcm0gZGV2aWNlIHRvIHNoYXJlIE1NSU8vSVJRIHJlc291cmNlcworICogMi4g TWFrZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGNoaWxkIG9mIGk5MTUgZGV2aWNlIGZvciBydW50aW1l IFBNLgorICogMy4gQ3JlYXRlIElSUSBjaGlwIHRvIGZvcndhcmQgdGhlIExQRSBhdWRpbyBpcnFz LgorICogdGhlIGhkbWktbHBlLWF1ZGlvIGRyaXZlciBwcm9iZXMgdGhlIGxwZSBhdWRpbyBkZXZp Y2UgYW5kIGNyZWF0ZXMgYSBuZXcKKyAqIHNvdW5kIGNhcmQKKyAqCisgKiBUaHJlYXRzOgorICog RHVlIHRvIHRoZSByZXN0cmljdGlvbiBpbiBMaW51eCBwbGF0Zm9ybSBkZXZpY2UgbW9kZWwsIHVz ZXIgbmVlZCBtYW51YWxseQorICogdW5pbnN0YWxsIHRoZSBoZG1pLWxwZS1hdWRpbyBkcml2ZXIg YmVmb3JlIHVuaW5zdGFsbGluZyBpOTE1IG1vZHVsZSwKKyAqIG90aGVyd2lzZSB3ZSBtaWdodCBy dW4gaW50byB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYWZ0ZXIgaTkxNSByZW1vdmVzIHRoZQorICog cGxhdGZvcm0gZGV2aWNlOiBldmVuIHRob3VnaCBoZG1pLWxwZS1hdWRpbyBkcml2ZXIgaXMgcmVs ZWFzZWQsIHRoZSBtb2R1bGVzCisgKiBpcyBzdGlsbCBpbiAiaW5zdGFsbGVkIiBzdGF0dXMuCisg KgorICogSW1wbGVtZW50YXRpb246CisgKiBUaGUgTU1JTy9SRUcgcGxhdGZvcm0gcmVzb3VyY2Vz IGFyZSBjcmVhdGVkIGFjY29yZGluZyB0byB0aGUgcmVnaXN0ZXJzCisgKiBzcGVjaWZpY2F0aW9u LgorICogV2hlbiBmb3J3YXJkaW5nIExQRSBhdWRpbyBpcnFzLCB0aGUgZmxvdyBjb250cm9sIGhh bmRsZXIgc2VsZWN0aW9uIGRlcGVuZHMKKyAqIG9uIHRoZSBwbGF0Zm9ybSwgZm9yIGV4YW1wbGUg b24gdmFsbGV5dmlldyBoYW5kbGVfc2ltcGxlX2lycSBpcyBlbm91Z2guCisgKgorICovCisKKyNp bmNsdWRlIDxsaW51eC9hY3BpLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVk ZSA8bGludXgvcGNpLmg+CisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgPGxpbnV4 L2RlbGF5Lmg+CisjaW5jbHVkZSA8ZHJtL2ludGVsX2xwZV9hdWRpby5oPgorCisjZGVmaW5lIEhB U19MUEVfQVVESU8oZGV2X3ByaXYpICgoZGV2X3ByaXYpLT5scGVfYXVkaW8ucGxhdGRldiAhPSBO VUxMKQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqCitscGVfYXVkaW9fcGxhdGRl dl9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWludCByZXQ7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOworCXN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2VfaW5mbyBwaW5mbyA9IHt9OworCXN0cnVjdCByZXNvdXJjZSAqcnNjOworCXN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRkZXY7CisJc3RydWN0IGludGVsX2hkbWlfbHBlX2F1 ZGlvX3BkYXRhICpwZGF0YTsKKworCXBkYXRhID0ga3phbGxvYyhzaXplb2YoKnBkYXRhKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFwZGF0YSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwly c2MgPSBrY2FsbG9jKDIsIHNpemVvZigqcnNjKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFyc2MpIHsK KwkJa2ZyZWUocGRhdGEpOworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwl9CisKKwlyc2Nb MF0uc3RhcnQgICAgPSByc2NbMF0uZW5kID0gZGV2X3ByaXYtPmxwZV9hdWRpby5pcnE7CisJcnNj WzBdLmZsYWdzICAgID0gSU9SRVNPVVJDRV9JUlE7CisJcnNjWzBdLm5hbWUgICAgID0gImhkbWkt bHBlLWF1ZGlvLWlycSI7CisKKwlyc2NbMV0uc3RhcnQgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQo ZGV2LT5wZGV2LCAwKSArCisJCUk5MTVfSERNSV9MUEVfQVVESU9fQkFTRTsKKwlyc2NbMV0uZW5k ICAgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wZGV2LCAwKSArCisJCUk5MTVfSERNSV9M UEVfQVVESU9fQkFTRSArIEk5MTVfSERNSV9MUEVfQVVESU9fU0laRSAtIDE7CisJcnNjWzFdLmZs YWdzICAgID0gSU9SRVNPVVJDRV9NRU07CisJcnNjWzFdLm5hbWUgICAgID0gImhkbWktbHBlLWF1 ZGlvLW1taW8iOworCisJcGluZm8ucGFyZW50ID0gZGV2LT5kZXY7CisJcGluZm8ubmFtZSA9ICJo ZG1pLWxwZS1hdWRpbyI7CisJcGluZm8uaWQgPSAtMTsKKwlwaW5mby5yZXMgPSByc2M7CisJcGlu Zm8ubnVtX3JlcyA9IDI7CisJcGluZm8uZGF0YSA9IHBkYXRhOworCXBpbmZvLnNpemVfZGF0YSA9 IHNpemVvZigqcGRhdGEpOworCXBpbmZvLmRtYV9tYXNrID0gRE1BX0JJVF9NQVNLKDMyKTsKKwor CXNwaW5fbG9ja19pbml0KCZwZGF0YS0+bHBlX2F1ZGlvX3Nsb2NrKTsKKworCXBsYXRkZXYgPSBw bGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbCgmcGluZm8pOworCWlmIChJU19FUlIocGxhdGRl dikpIHsKKwkJcmV0ID0gUFRSX0VSUihwbGF0ZGV2KTsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g YWxsb2NhdGUgTFBFIGF1ZGlvIHBsYXRmb3JtIGRldmljZVxuIik7CisJCWdvdG8gZXJyOworCX0K KworCWtmcmVlKHJzYyk7CisKKwlyZXR1cm4gcGxhdGRldjsKKworZXJyOgorCWtmcmVlKHJzYyk7 CisJa2ZyZWUocGRhdGEpOworCXJldHVybiBFUlJfUFRSKHJldCk7Cit9CisKK3N0YXRpYyB2b2lk IGxwZV9hdWRpb19wbGF0ZGV2X2Rlc3Ryb3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQoreworCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldl9wcml2LT5scGVfYXVkaW8u cGxhdGRldik7CisJa2ZyZWUoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2LT5kZXYuZG1hX21h c2spOworfQorCitzdGF0aWMgdm9pZCBscGVfYXVkaW9faXJxX3VubWFzayhzdHJ1Y3QgaXJxX2Rh dGEgKmQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZC0+Y2hpcF9k YXRhOworCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CisJdTMyIHZhbCA9IChJOTE1X0xQRV9QSVBF X0FfSU5URVJSVVBUIHwKKwkJSTkxNV9MUEVfUElQRV9CX0lOVEVSUlVQVCk7CisKKwlpZiAoSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpCisJCXZhbCB8PSBJOTE1X0xQRV9QSVBFX0NfSU5URVJSVVBU OworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOwor CisJZGV2X3ByaXYtPmlycV9tYXNrICY9IH52YWw7CisJSTkxNV9XUklURShWTFZfSUlSLCB2YWwp OworCUk5MTVfV1JJVEUoVkxWX0lJUiwgdmFsKTsKKwlJOTE1X1dSSVRFKFZMVl9JTVIsIGRldl9w cml2LT5pcnFfbWFzayk7CisJUE9TVElOR19SRUFEKFZMVl9JTVIpOworCisJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cit9CisKK3N0YXRpYyB2 b2lkIGxwZV9hdWRpb19pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZC0+Y2hpcF9kYXRhOworCXVuc2lnbmVkIGxvbmcg aXJxZmxhZ3M7CisJdTMyIHZhbCA9IChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwKKwkJSTkx NV9MUEVfUElQRV9CX0lOVEVSUlVQVCk7CisKKwlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp CisJCXZhbCB8PSBJOTE1X0xQRV9QSVBFX0NfSU5URVJSVVBUOworCisJc3Bpbl9sb2NrX2lycXNh dmUoJmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOworCisJZGV2X3ByaXYtPmlycV9tYXNr IHw9IHZhbDsKKwlJOTE1X1dSSVRFKFZMVl9JTVIsIGRldl9wcml2LT5pcnFfbWFzayk7CisJSTkx NV9XUklURShWTFZfSUlSLCB2YWwpOworCUk5MTVfV1JJVEUoVkxWX0lJUiwgdmFsKTsKKwlQT1NU SU5HX1JFQUQoVkxWX0lJUik7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+ aXJxX2xvY2ssIGlycWZsYWdzKTsKK30KKworc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBscGVfYXVk aW9faXJxY2hpcCA9IHsKKwkubmFtZSA9ICJoZG1pX2xwZV9hdWRpb19pcnFjaGlwIiwKKwkuaXJx X21hc2sgPSBscGVfYXVkaW9faXJxX21hc2ssCisJLmlycV91bm1hc2sgPSBscGVfYXVkaW9faXJx X3VubWFzaywKK307CisKK3N0YXRpYyBpbnQgbHBlX2F1ZGlvX2lycV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgaXJxID0gZGV2X3ByaXYtPmxwZV9hdWRp by5pcnE7CisKKwlXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKTsKKwlpcnFf c2V0X2NoaXBfYW5kX2hhbmRsZXJfbmFtZShpcnEsCisJCQkJJmxwZV9hdWRpb19pcnFjaGlwLAor CQkJCWhhbmRsZV9zaW1wbGVfaXJxLAorCQkJCSJoZG1pX2xwZV9hdWRpb19pcnFfaGFuZGxlciIp OworCisJcmV0dXJuIGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZGV2X3ByaXYpOworfQorCitzdGF0 aWMgYm9vbCBscGVfYXVkaW9fZGV0ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3sKKwlpbnQgbHBlX3ByZXNlbnQgPSBmYWxzZTsKKworCWlmIChJU19WQUxMRVlWSUVXKGRl dl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgeworCQlzdGF0aWMgY29uc3Qgc3Ry dWN0IHBjaV9kZXZpY2VfaWQgYXRvbV9oZGF1ZGlvX2lkc1tdID0geworCQkJLyogQmF5dHJhaWwg Ki8KKwkJCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfSU5URUwsIDB4MGYwNCl9LAorCQkJLyog QnJhc3dlbGwgKi8KKwkJCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfSU5URUwsIDB4MjI4NCl9 LAorCQkJe30KKwkJfTsKKworCQlpZiAoIXBjaV9kZXZfcHJlc2VudChhdG9tX2hkYXVkaW9faWRz KSkgeworCQkJRFJNX0lORk8oIiVzXG4iLCAiSERhdWRpbyBjb250cm9sbGVyIG5vdCBkZXRlY3Rl ZCwgdXNpbmcgTFBFIGF1ZGlvIGluc3RlYWRcbiIpOworCQkJbHBlX3ByZXNlbnQgPSB0cnVlOwor CQl9CisJfQorCXJldHVybiBscGVfcHJlc2VudDsKK30KKworc3RhdGljIGludCBscGVfYXVkaW9f c2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWludCByZXQ7CisK KwlkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSA9IGlycV9hbGxvY19kZXNjKDApOworCWlmIChkZXZf cHJpdi0+bHBlX2F1ZGlvLmlycSA8IDApIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2Nh dGUgSVJRIGRlc2M6ICVkXG4iLAorCQkJZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpOworCQlyZXQg PSBkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycTsKKwkJZ290byBlcnI7CisJfQorCisJRFJNX0RFQlVH KCJpcnEgPSAlZFxuIiwgZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpOworCisJcmV0ID0gbHBlX2F1 ZGlvX2lycV9pbml0KGRldl9wcml2KTsKKworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJGYWls ZWQgdG8gaW5pdGlhbGl6ZSBpcnFjaGlwIGZvciBscGUgYXVkaW86ICVkXG4iLAorCQkJcmV0KTsK KwkJZ290byBlcnJfZnJlZV9pcnE7CisJfQorCisJZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2 ID0gbHBlX2F1ZGlvX3BsYXRkZXZfY3JlYXRlKGRldl9wcml2KTsKKworCWlmIChJU19FUlIoZGV2 X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2KSkgeworCQlyZXQgPSBQVFJfRVJSKGRldl9wcml2LT5s cGVfYXVkaW8ucGxhdGRldik7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBscGUgYXVk aW8gcGxhdGZvcm0gZGV2aWNlOiAlZFxuIiwKKwkJCXJldCk7CisJCWdvdG8gZXJyX2ZyZWVfaXJx OworCX0KKworCXJldHVybiAwOworZXJyX2ZyZWVfaXJxOgorCWlycV9mcmVlX2Rlc2MoZGV2X3By aXYtPmxwZV9hdWRpby5pcnEpOworZXJyOgorCWRldl9wcml2LT5scGVfYXVkaW8uaXJxID0gLTE7 CisJZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2ID0gTlVMTDsKKwlyZXR1cm4gcmV0OworfQor CisvKioKKyAqIGludGVsX2xwZV9hdWRpb19pcnFfaGFuZGxlcigpIC0gZm9yd2FyZHMgdGhlIExQ RSBhdWRpbyBpcnEKKyAqIEBkZXZfcHJpdjogdGhlIGk5MTUgZHJtIGRldmljZSBwcml2YXRlIGRh dGEKKyAqCisgKiB0aGUgTFBFIEF1ZGlvIGlycSBpcyBmb3J3YXJkZWQgdG8gdGhlIGlycSBoYW5k bGVyIHJlZ2lzdGVyZWQgYnkgTFBFIGF1ZGlvCisgKiBkcml2ZXIuCisgKi8KK3ZvaWQgaW50ZWxf bHBlX2F1ZGlvX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3sKKwlpbnQgcmV0OworCisJaWYgKCFIQVNfTFBFX0FVRElPKGRldl9wcml2KSkKKwkJcmV0dXJu OworCisJcmV0ID0gZ2VuZXJpY19oYW5kbGVfaXJxKGRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsK KwlpZiAocmV0KQorCQlEUk1fRVJST1JfUkFURUxJTUlURUQoImVycm9yIGhhbmRsaW5nIExQRSBh dWRpbyBpcnE6ICVkXG4iLAorCQkJCXJldCk7Cit9CisKKy8qKgorICogaW50ZWxfbHBlX2F1ZGlv X2luaXQoKSAtIGRldGVjdCBhbmQgc2V0dXAgdGhlIGJyaWRnZSBiZXR3ZWVuIEhETUkgTFBFIEF1 ZGlvCisgKiBkcml2ZXIgYW5kIGk5MTUKKyAqIEBkZXZfcHJpdjogdGhlIGk5MTUgZHJtIGRldmlj ZSBwcml2YXRlIGRhdGEKKyAqCisgKiBSZXR1cm46IDAgaWYgc3VjY2Vzc2Z1bC4gbm9uLXplcm8g aWYgZGV0ZWN0aW9uIG9yCisgKiBsbG9jYXRpb24vaW5pdGlhbGl6YXRpb24gZmFpbHMKKyAqLwor aW50IGludGVsX2xwZV9hdWRpb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3sKKwlpbnQgcmV0ID0gLUVOT0RFVjsKKworCWlmIChscGVfYXVkaW9fZGV0ZWN0KGRldl9w cml2KSkgeworCQlyZXQgPSBscGVfYXVkaW9fc2V0dXAoZGV2X3ByaXYpOworCQlpZiAocmV0IDwg MCkKKwkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHNldHVwIExQRSBBdWRpbyBicmlkZ2VcbiIpOwor CX0KKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIGludGVsX2xwZV9hdWRpb190ZWFyZG93bigp IC0gZGVzdHJveSB0aGUgYnJpZGdlIGJldHdlZW4gSERNSSBMUEUKKyAqIGF1ZGlvIGRyaXZlciBh bmQgaTkxNQorICogQGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQor ICoKKyAqIHJlbGVhc2UgYWxsIHRoZSByZXNvdXJjZXMgZm9yIExQRSBhdWRpbyA8LT4gaTkxNSBi cmlkZ2UuCisgKi8KK3ZvaWQgaW50ZWxfbHBlX2F1ZGlvX3RlYXJkb3duKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2M7CisKKwlpZiAo IUhBU19MUEVfQVVESU8oZGV2X3ByaXYpKQorCQlyZXR1cm47CisKKwlkZXNjID0gaXJxX3RvX2Rl c2MoZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpOworCisJbHBlX2F1ZGlvX2lycV9tYXNrKCZkZXNj LT5pcnFfZGF0YSk7CisKKwlscGVfYXVkaW9fcGxhdGRldl9kZXN0cm95KGRldl9wcml2KTsKKwor CWlycV9mcmVlX2Rlc2MoZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpOworfQpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9kcm0vaW50ZWxfbHBlX2F1ZGlvLmggYi9pbmNsdWRlL2RybS9pbnRlbF9scGVfYXVk aW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTJkZTA1Ci0tLSAvZGV2 L251bGwKKysrIGIvaW5jbHVkZS9kcm0vaW50ZWxfbHBlX2F1ZGlvLmgKQEAgLTAsMCArMSw0NiBA QAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX0lOVEVM X0xQRV9BVURJT19IXworI2RlZmluZSBfSU5URUxfTFBFX0FVRElPX0hfCisKKyNpbmNsdWRlIDxs aW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrX3R5cGVzLmg+CisKKyNkZWZp bmUgSERNSV9NQVhfRUxEX0JZVEVTCTEyOAorCitzdHJ1Y3QgaW50ZWxfaGRtaV9scGVfYXVkaW9f ZWxkIHsKKwlpbnQgcG9ydF9pZDsKKwl1bnNpZ25lZCBjaGFyIGVsZF9kYXRhW0hETUlfTUFYX0VM RF9CWVRFU107Cit9OworCitzdHJ1Y3QgaW50ZWxfaGRtaV9scGVfYXVkaW9fcGRhdGEgeworCWJv b2wgbm90aWZ5X3BlbmRpbmc7CisJaW50IHRtZHNfY2xvY2tfc3BlZWQ7CisJYm9vbCBoZG1pX2Nv bm5lY3RlZDsKKwlzdHJ1Y3QgaW50ZWxfaGRtaV9scGVfYXVkaW9fZWxkIGVsZDsKKwl2b2lkICgq bm90aWZ5X2F1ZGlvX2xwZSkodm9pZCAqYXVkaW9fcHRyKTsKKwlzcGlubG9ja190IGxwZV9hdWRp b19zbG9jazsKK307CisKKyNlbmRpZiAvKiBfSTkxNV9MUEVfQVVESU9fSF8gKi8KLS0gCjIuOS4z CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK