From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v2 2/5] drm/i915: add component support Date: Tue, 9 Dec 2014 11:41:17 +0200 Message-ID: <1418118078-3676-2-git-send-email-imre.deak@intel.com> References: <1418118078-3676-1-git-send-email-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1418118078-3676-1-git-send-email-imre.deak@intel.com> In-Reply-To: <1418056929-7977-3-git-send-email-imre.deak@intel.com> References: <1418056929-7977-3-git-send-email-imre.deak@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, Takashi Iwai Cc: Jani Nikula , Daniel Vetter List-Id: alsa-devel@alsa-project.org UmVnaXN0ZXIgYSBjb21wb25lbnQgdG8gYmUgdXNlZCB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgc25k X2hkYV9pbnRlbApkcml2ZXIuIFRoaXMgaXMgbWVhbnQgdG8gcmVwbGFjZSB0aGUgc2FtZSBpbnRl cmZhY2UgdGhhdCBpcyBjdXJyZW50bHkKYmFzZWQgb24gbW9kdWxlIHN5bWJvbCBsb29rdXAuCgp2 MjoKLSBjaGFuZ2Ugcm9sZXMgYmV0d2VlbiB0aGUgaGRhIGFuZCBpOTE1IGNvbXBvbmVudHMgKERh bmllbCkKLSBhZGQgdGhlIGltcGxlbWVudGF0aW9uIHRvIGEgbmV3IGZpbGUgKEphbmkpCi0gdXNl IGJldHRlciBuYW1lc3BhY2luZyAoSmFuaSkKClNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1y ZS5kZWFrQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAg ICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NvbXBvbmVudC5jIHwgMTA5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZG1hLmMgICAgICAgfCAgIDQgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICB8 ICAgNCArKwogaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCAgICAgICAgICB8ICAzOCArKysr KysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTYwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NvbXBvbmVu dC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaAoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKaW5kZXggZTQwODNlNC4uNmI1YjA4MiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKQEAgLTcsNyArNyw4IEBAIGNjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtCiAjIFBsZWFzZSBr ZWVwIHRoZXNlIGJ1aWxkIGxpc3RzIHNvcnRlZCEKIAogIyBjb3JlIGRyaXZlciBjb2RlCi1pOTE1 LXkgOj0gaTkxNV9kcnYubyBcCitpOTE1LXkgOj0gaTkxNV9jb21wb25lbnQubyBcCisJICBpOTE1 X2Rydi5vIFwKIAkgIGk5MTVfcGFyYW1zLm8gXAogICAgICAgICAgIGk5MTVfc3VzcGVuZC5vIFwK IAkgIGk5MTVfc3lzZnMubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2NvbXBvbmVudC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jb21wb25lbnQuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmI0OWYwCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jb21wb25lbnQuYwpAQCAtMCwwICsxLDEwOSBA QAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxsaW51 eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxkcm0vaTkxNV9jb21wb25lbnQuaD4KKyNpbmNsdWRl ICJpbnRlbF9kcnYuaCIKKworc3RhdGljIHZvaWQgZGlzcGxheV9jb21wb25lbnRfZ2V0X3Bvd2Vy KHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfdG9f aTkxNShkZXYpLCBQT1dFUl9ET01BSU5fQVVESU8pOworfQorCitzdGF0aWMgdm9pZCBkaXNwbGF5 X2NvbXBvbmVudF9wdXRfcG93ZXIoc3RydWN0IGRldmljZSAqZGV2KQoreworCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl90b19pOTE1KGRldiksIFBPV0VSX0RPTUFJTl9BVURJTyk7Cit9CisK Ky8qIEdldCBDRENMSyBpbiBrSHogICovCitzdGF0aWMgaW50IGRpc3BsYXlfY29tcG9uZW50X2dl dF9jZGNsa19mcmVxKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXZfdG9faTkxNShkZXYpOworCWludCByZXQ7CisKKwlpZiAoV0FS Tl9PTl9PTkNFKCFIQVNfRERJKGRldl9wcml2KSkpCisJCXJldHVybiAtRU5PREVWOworCisJaW50 ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9BVURJTyk7CisJcmV0 ID0gaW50ZWxfZGRpX2dldF9jZGNsa19mcmVxKGRldl9wcml2KTsKKwlpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0FVRElPKTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9kaXNwbGF5X2NvbXBvbmVudF9vcHMgZGlzcGxh eV9jb21wb25lbnRfb3BzID0geworCS5vd25lcgkJPSBUSElTX01PRFVMRSwKKwkuZ2V0X3Bvd2Vy CT0gZGlzcGxheV9jb21wb25lbnRfZ2V0X3Bvd2VyLAorCS5wdXRfcG93ZXIJPSBkaXNwbGF5X2Nv bXBvbmVudF9wdXRfcG93ZXIsCisJLmdldF9jZGNsa19mcmVxCT0gZGlzcGxheV9jb21wb25lbnRf Z2V0X2NkY2xrX2ZyZXEsCit9OworCitzdGF0aWMgaW50IGRpc3BsYXlfY29tcG9uZW50X2JpbmQo c3RydWN0IGRldmljZSAqaTkxNV9kZXYsCisJCQkJICBzdHJ1Y3QgZGV2aWNlICpoZGFfZGV2LCB2 b2lkICpkYXRhKQoreworCXN0cnVjdCBpOTE1X2Rpc3BsYXlfY29tcG9uZW50ICpkY29tcCA9IGRh dGE7CisKKwlpZiAoV0FSTl9PTihkY29tcC0+b3BzIHx8IGRjb21wLT5kZXYpKQorCQlyZXR1cm4g LUVFWElTVDsKKworCWRjb21wLT5vcHMgPSAmZGlzcGxheV9jb21wb25lbnRfb3BzOworCWRjb21w LT5kZXYgPSBpOTE1X2RldjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkaXNwbGF5 X2NvbXBvbmVudF91bmJpbmQoc3RydWN0IGRldmljZSAqaTkxNV9kZXYsCisJCQkJICAgICBzdHJ1 Y3QgZGV2aWNlICpoZGFfZGV2LCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBpOTE1X2Rpc3BsYXlf Y29tcG9uZW50ICpkY29tcCA9IGRhdGE7CisKKwlkY29tcC0+b3BzID0gTlVMTDsKKwlkY29tcC0+ ZGV2ID0gTlVMTDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIGRpc3Bs YXlfY29tcG9uZW50X2JpbmRfb3BzID0geworCS5iaW5kCT0gZGlzcGxheV9jb21wb25lbnRfYmlu ZCwKKwkudW5iaW5kCT0gZGlzcGxheV9jb21wb25lbnRfdW5iaW5kLAorfTsKKwordm9pZCBpOTE1 X2NvbXBvbmVudF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlp bnQgcmV0OworCisJcmV0ID0gY29tcG9uZW50X2FkZChkZXZfcHJpdi0+ZGV2LT5kZXYsICZkaXNw bGF5X2NvbXBvbmVudF9iaW5kX29wcyk7CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gYWRkIGRpc3BsYXkgY29tcG9uZW50ICglZClcbiIsIHJldCk7CisJCS8qIGNvbnRp bnVlIHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5ICovCisJCXJldHVybjsKKwl9CisKKwlkZXZf cHJpdi0+ZGlzcGxheV9jb21wb25lbnRfcmVnaXN0ZXJlZCA9IHRydWU7Cit9CisKK3ZvaWQgaTkx NV9jb21wb25lbnRfY2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7 CisJaWYgKGRldl9wcml2LT5kaXNwbGF5X2NvbXBvbmVudF9yZWdpc3RlcmVkKSB7CisJCWNvbXBv bmVudF9kZWwoZGV2X3ByaXYtPmRldi0+ZGV2LCAmZGlzcGxheV9jb21wb25lbnRfYmluZF9vcHMp OworCQlkZXZfcHJpdi0+ZGlzcGxheV9jb21wb25lbnRfcmVnaXN0ZXJlZCA9IGZhbHNlOworCX0K K30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCmluZGV4IDg4N2Q4OGYuLmI2MjM4YmIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kbWEuYwpAQCAtODMwLDYgKzgzMCw4IEBAIGludCBpOTE1X2RyaXZlcl9sb2Fk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAKIAlpbnRlbF9y dW50aW1lX3BtX2VuYWJsZShkZXZfcHJpdik7CiAKKwlpOTE1X2NvbXBvbmVudF9pbml0KGRldl9w cml2KTsKKwogCXJldHVybiAwOwogCiBvdXRfcG93ZXJfd2VsbDoKQEAgLTg3MCw2ICs4NzIsOCBA QCBpbnQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQgcmV0 OwogCisJaTkxNV9jb21wb25lbnRfY2xlYW51cChkZXZfcHJpdik7CisKIAlyZXQgPSBpOTE1X2dl bV9zdXNwZW5kKGRldik7CiAJaWYgKHJldCkgewogCQlEUk1fRVJST1IoImZhaWxlZCB0byBpZGxl IGhhcmR3YXJlOiAlZFxuIiwgcmV0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGZiMjYx NmQuLjNiN2FlMTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTY4NCw2ICsxNjg0LDkg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJYm9vbCBtY2hiYXJfbmVlZF9kaXNhYmxl OwogCisJLyogaGRhL2k5MTUgZGlzcGxheSBjb21wb25lbnQgKi8KKwlib29sIGRpc3BsYXlfY29t cG9uZW50X3JlZ2lzdGVyZWQ7CisKIAlzdHJ1Y3QgaW50ZWxfbDNfcGFyaXR5IGwzX3Bhcml0eTsK IAogCS8qIENhbm5vdCBiZSBkZXRlcm1pbmVkIGJ5IFBDSUlELiBZb3UgbXVzdCBhbHdheXMgcmVh ZCBhIHJlZ2lzdGVyLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCA2MWE4OGZhLi44 NTY3MDllIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtODA5LDYgKzgwOSwxMCBAQCBz dGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfaXJxc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIGludCBpbnRlbF9nZXRfY3J0Y19zY2FubGluZShzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0Yyk7CiB2b2lkIGdlbjhfaXJxX3Bvd2VyX3dlbGxfcG9zdF9lbmFibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAorLyogaTkxNV9jb21wb25lbnQuYyAqLwor dm9pZCBpOTE1X2NvbXBvbmVudF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cit2b2lkIGk5MTVfY29tcG9uZW50X2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKKwogLyogaW50ZWxfY3J0LmMgKi8KIHZvaWQgaW50ZWxfY3J0X2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2k5MTVfY29t cG9uZW50LmggYi9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjljNjYwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2Ry bS9pOTE1X2NvbXBvbmVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRI RSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9JOTE1X0NPTVBPTkVOVF9IXworI2RlZmluZSBf STkxNV9DT01QT05FTlRfSF8KKworc3RydWN0IGk5MTVfZGlzcGxheV9jb21wb25lbnQgeworCXN0 cnVjdCBkZXZpY2UgKmRldjsKKworCWNvbnN0IHN0cnVjdCBpOTE1X2Rpc3BsYXlfY29tcG9uZW50 X29wcyB7CisJCXN0cnVjdCBtb2R1bGUgKm93bmVyOworCQl2b2lkICgqZ2V0X3Bvd2VyKShzdHJ1 Y3QgZGV2aWNlICopOworCQl2b2lkICgqcHV0X3Bvd2VyKShzdHJ1Y3QgZGV2aWNlICopOworCQlp bnQgKCpnZXRfY2RjbGtfZnJlcSkoc3RydWN0IGRldmljZSAqKTsKKwl9ICpvcHM7Cit9OworCisj ZW5kaWYgLyogX0k5MTVfQ09NUE9ORU5UX0hfICovCi0tIAoxLjguNAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK