From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 068/117] drm/amdgpu: add vcn ip block functions (v2) Date: Wed, 10 May 2017 14:46:59 -0400 Message-ID: <1494442068-8202-61-git-send-email-alexander.deucher@amd.com> References: <1494442068-8202-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1494442068-8202-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Alex Deucher , Leo Liu RnJvbTogTGVvIExpdSA8bGVvLmxpdUBhbWQuY29tPgoKRmlsbCBpbiB0aGUgY29yZSBWQ04gMS4w IHNldHVwIGZ1bmN0aW9uYWxpdHkuCgp2Mjogc3F1YXNoIGluIGZpeHVwIChBbGV4KQoKU2lnbmVk LW9mZi1ieTogTGVvIExpdSA8bGVvLmxpdUBhbWQuY29tPgpBY2tlZC1ieTogQ2h1bm1pbmcgWmhv dSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4KQWNrZWQtYnk6IEhhd2tpbmcgWmhhbmcgPEhhd2tpbmcu WmhhbmdAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1 Y2hlckBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlICAg IHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWguaCB8ICAgMyAr LQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNuX3YxXzAuYyAgfCA0MTcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQyMSBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L3Zjbl92MV8wLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCmluZGV4 IGYzYzgyNDUuLjc2NjA1NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCkBAIC0x MDEsNyArMTAxLDggQEAgYW1kZ3B1LXkgKz0gXAogCiAjIGFkZCBWQ04gYmxvY2sKIGFtZGdwdS15 ICs9IFwKLQlhbWRncHVfdmNuLm8KKwlhbWRncHVfdmNuLm8gXAorCXZjbl92MV8wLm8KIAogIyBh ZGQgYW1ka2ZkIGludGVyZmFjZXMKIGFtZGdwdS15ICs9IFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2loLmgKaW5kZXggYTNkYTFhMS4uM2RlOGU3NCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2loLmgKQEAgLTYyLDggKzYyLDkgQEAgZW51bSBhbWRncHVfaWhfY2xp ZW50aWQKICAgICBBTURHUFVfSUhfQ0xJRU5USURfTVAwCSAgICA9IDB4MWUsCiAgICAgQU1ER1BV X0lIX0NMSUVOVElEX01QMQkgICAgPSAweDFmLAogCi0gICAgQU1ER1BVX0lIX0NMSUVOVElEX01B WAorICAgIEFNREdQVV9JSF9DTElFTlRJRF9NQVgsCiAKKyAgICBBTURHUFVfSUhfQ0xJRU5USURf VkNOCSAgICA9IEFNREdQVV9JSF9DTElFTlRJRF9VVkQKIH07CiAKICNkZWZpbmUgQU1ER1BVX0lI X0NMSUVOVElEX0xFR0FDWSAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS92Y25fdjFfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNuX3YxXzAuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQyNjhmCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNuX3YxXzAuYwpAQCAtMCwwICsxLDQxNyBA QAorLyoKKyAqIENvcHlyaWdodCAyMDE2IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAq CisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9M REVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgor ICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisjaW5j bHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlICJhbWRncHUuaCIKKyNpbmNsdWRlICJhbWRncHVf dmNuLmgiCisjaW5jbHVkZSAic29jMTVkLmgiCisjaW5jbHVkZSAic29jMTVfY29tbW9uLmgiCisK KyNpbmNsdWRlICJ2ZWdhMTAvc29jMTVpcC5oIgorI2luY2x1ZGUgInJhdmVuMS9WQ04vdmNuXzFf MF9vZmZzZXQuaCIKKyNpbmNsdWRlICJyYXZlbjEvVkNOL3Zjbl8xXzBfc2hfbWFzay5oIgorI2lu Y2x1ZGUgInZlZ2ExMC9IRFAvaGRwXzRfMF9vZmZzZXQuaCIKKyNpbmNsdWRlICJyYXZlbjEvTU1I VUIvbW1odWJfOV8xX29mZnNldC5oIgorI2luY2x1ZGUgInJhdmVuMS9NTUhVQi9tbWh1Yl85XzFf c2hfbWFzay5oIgorCitzdGF0aWMgaW50IHZjbl92MV8wX3N0YXJ0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KTsKK3N0YXRpYyBpbnQgdmNuX3YxXzBfc3RvcChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldik7CisKKy8qKgorICogdmNuX3YxXzBfZWFybHlfaW5pdCAtIHNldCBmdW5jdGlvbiBw b2ludGVycworICoKKyAqIEBoYW5kbGU6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgorICoKKyAqIFNl dCByaW5nIGFuZCBpcnEgZnVuY3Rpb24gcG9pbnRlcnMKKyAqLworc3RhdGljIGludCB2Y25fdjFf MF9lYXJseV9pbml0KHZvaWQgKmhhbmRsZSkKK3sKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiB2 Y25fdjFfMF9zd19pbml0IC0gc3cgaW5pdCBmb3IgVkNOIGJsb2NrCisgKgorICogQGhhbmRsZTog YW1kZ3B1X2RldmljZSBwb2ludGVyCisgKgorICogTG9hZCBmaXJtd2FyZSBhbmQgc3cgaW5pdGlh bGl6YXRpb24KKyAqLworc3RhdGljIGludCB2Y25fdjFfMF9zd19pbml0KHZvaWQgKmhhbmRsZSkK K3sKKwlpbnQgcjsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqKWhhbmRsZTsKKworCS8qIFZDTiBUUkFQICovCisJciA9IGFtZGdwdV9pcnFfYWRk X2lkKGFkZXYsIEFNREdQVV9JSF9DTElFTlRJRF9WQ04sIDEyNCwgJmFkZXYtPnZjbi5pcnEpOwor CWlmIChyKQorCQlyZXR1cm4gcjsKKworCXIgPSBhbWRncHVfdmNuX3N3X2luaXQoYWRldik7CisJ aWYgKHIpCisJCXJldHVybiByOworCisJciA9IGFtZGdwdV92Y25fcmVzdW1lKGFkZXYpOworCWlm IChyKQorCQlyZXR1cm4gcjsKKworCXJldHVybiByOworfQorCisvKioKKyAqIHZjbl92MV8wX3N3 X2ZpbmkgLSBzdyBmaW5pIGZvciBWQ04gYmxvY2sKKyAqCisgKiBAaGFuZGxlOiBhbWRncHVfZGV2 aWNlIHBvaW50ZXIKKyAqCisgKiBWQ04gc3VzcGVuZCBhbmQgZnJlZSB1cCBzdyBhbGxvY2F0aW9u CisgKi8KK3N0YXRpYyBpbnQgdmNuX3YxXzBfc3dfZmluaSh2b2lkICpoYW5kbGUpCit7CisJaW50 IHI7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KiloYW5kbGU7CisKKwlyID0gYW1kZ3B1X3Zjbl9zdXNwZW5kKGFkZXYpOworCWlmIChyKQorCQly ZXR1cm4gcjsKKworCXIgPSBhbWRncHVfdmNuX3N3X2ZpbmkoYWRldik7CisKKwlyZXR1cm4gcjsK K30KKworLyoqCisgKiB2Y25fdjFfMF9od19pbml0IC0gc3RhcnQgYW5kIHRlc3QgVkNOIGJsb2Nr CisgKgorICogQGhhbmRsZTogYW1kZ3B1X2RldmljZSBwb2ludGVyCisgKgorICogSW5pdGlhbGl6 ZSB0aGUgaGFyZHdhcmUsIGJvb3QgdXAgdGhlIFZDUFUgYW5kIGRvIHNvbWUgdGVzdGluZworICov CitzdGF0aWMgaW50IHZjbl92MV8wX2h3X2luaXQodm9pZCAqaGFuZGxlKQoreworCXN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCXN0 cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZhZGV2LT52Y24ucmluZ19kZWM7CisJaW50IHI7CisK KwlyID0gdmNuX3YxXzBfc3RhcnQoYWRldik7CisJaWYgKHIpCisJCWdvdG8gZG9uZTsKKworCXJp bmctPnJlYWR5ID0gdHJ1ZTsKKwlyID0gYW1kZ3B1X3JpbmdfdGVzdF9yaW5nKHJpbmcpOworCWlm IChyKSB7CisJCXJpbmctPnJlYWR5ID0gZmFsc2U7CisJCWdvdG8gZG9uZTsKKwl9CisKK2RvbmU6 CisJaWYgKCFyKQorCQlEUk1fSU5GTygiVkNOIGRlY29kZSBpbml0aWFsaXplZCBzdWNjZXNzZnVs bHkuXG4iKTsKKworCXJldHVybiByOworfQorCisvKioKKyAqIHZjbl92MV8wX2h3X2ZpbmkgLSBz dG9wIHRoZSBoYXJkd2FyZSBibG9jaworICoKKyAqIEBoYW5kbGU6IGFtZGdwdV9kZXZpY2UgcG9p bnRlcgorICoKKyAqIFN0b3AgdGhlIFZDTiBibG9jaywgbWFyayByaW5nIGFzIG5vdCByZWFkeSBh bnkgbW9yZQorICovCitzdGF0aWMgaW50IHZjbl92MV8wX2h3X2Zpbmkodm9pZCAqaGFuZGxlKQor eworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICop aGFuZGxlOworCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZhZGV2LT52Y24ucmluZ19kZWM7 CisJaW50IHI7CisKKwlyID0gdmNuX3YxXzBfc3RvcChhZGV2KTsKKwlpZiAocikKKwkJcmV0dXJu IHI7CisKKwlyaW5nLT5yZWFkeSA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICog dmNuX3YxXzBfc3VzcGVuZCAtIHN1c3BlbmQgVkNOIGJsb2NrCisgKgorICogQGhhbmRsZTogYW1k Z3B1X2RldmljZSBwb2ludGVyCisgKgorICogSFcgZmluaSBhbmQgc3VzcGVuZCBWQ04gYmxvY2sK KyAqLworc3RhdGljIGludCB2Y25fdjFfMF9zdXNwZW5kKHZvaWQgKmhhbmRsZSkKK3sKKwlpbnQg cjsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq KWhhbmRsZTsKKworCXIgPSB2Y25fdjFfMF9od19maW5pKGFkZXYpOworCWlmIChyKQorCQlyZXR1 cm4gcjsKKworCXIgPSBhbWRncHVfdmNuX3N1c3BlbmQoYWRldik7CisKKwlyZXR1cm4gcjsKK30K KworLyoqCisgKiB2Y25fdjFfMF9yZXN1bWUgLSByZXN1bWUgVkNOIGJsb2NrCisgKgorICogQGhh bmRsZTogYW1kZ3B1X2RldmljZSBwb2ludGVyCisgKgorICogUmVzdW1lIGZpcm13YXJlIGFuZCBo dyBpbml0IFZDTiBibG9jaworICovCitzdGF0aWMgaW50IHZjbl92MV8wX3Jlc3VtZSh2b2lkICpo YW5kbGUpCit7CisJaW50IHI7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisKKwlyID0gYW1kZ3B1X3Zjbl9yZXN1bWUoYWRldik7 CisJaWYgKHIpCisJCXJldHVybiByOworCisJciA9IHZjbl92MV8wX2h3X2luaXQoYWRldik7CisK KwlyZXR1cm4gcjsKK30KKworLyoqCisgKiB2Y25fdjFfMF9tY19yZXN1bWUgLSBtZW1vcnkgY29u dHJvbGxlciBwcm9ncmFtbWluZworICoKKyAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIK KyAqCisgKiBMZXQgdGhlIFZDTiBtZW1vcnkgY29udHJvbGxlciBrbm93IGl0J3Mgb2Zmc2V0cwor ICovCitzdGF0aWMgdm9pZCB2Y25fdjFfMF9tY19yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCit7CisJdWludDY0X3Qgb2Zmc2V0OworCXVpbnQzMl90IHNpemU7CisKKwkvKiBwcm9n cmFtbSBtZW1vcnkgY29udHJvbGxlciBiaXRzIDAtMjcgKi8KKwlXUkVHMzIoU09DMTVfUkVHX09G RlNFVChVVkQsIDAsIG1tVVZEX0xNSV9WQ1BVX0NBQ0hFXzY0QklUX0JBUl9MT1cpLAorCQkJbG93 ZXJfMzJfYml0cyhhZGV2LT52Y24uZ3B1X2FkZHIpKTsKKwlXUkVHMzIoU09DMTVfUkVHX09GRlNF VChVVkQsIDAsIG1tVVZEX0xNSV9WQ1BVX0NBQ0hFXzY0QklUX0JBUl9ISUdIKSwKKwkJCXVwcGVy XzMyX2JpdHMoYWRldi0+dmNuLmdwdV9hZGRyKSk7CisKKwkvKiBDdXJyZW50IEZXIGhhcyBubyBz aWduZWQgaGVhZGVyLCBidXQgd2lsbCBiZSBhZGRlZCBsYXRlciBvbiAqLworCS8qIG9mZnNldCA9 IEFNREdQVV9WQ05fRklSTVdBUkVfT0ZGU0VUOyAqLworCW9mZnNldCA9IDA7CisJc2l6ZSA9IEFN REdQVV9HUFVfUEFHRV9BTElHTihhZGV2LT52Y24uZnctPnNpemUgKyA0KTsKKwlXUkVHMzIoU09D MTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX1ZDUFVfQ0FDSEVfT0ZGU0VUMCksIG9mZnNldCA+ PiAzKTsKKwlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX1ZDUFVfQ0FDSEVf U0laRTApLCBzaXplKTsKKworCW9mZnNldCArPSBzaXplOworCXNpemUgPSBBTURHUFVfVkNOX0hF QVBfU0laRTsKKwlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX1ZDUFVfQ0FD SEVfT0ZGU0VUMSksIG9mZnNldCA+PiAzKTsKKwlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChVVkQs IDAsIG1tVVZEX1ZDUFVfQ0FDSEVfU0laRTEpLCBzaXplKTsKKworCW9mZnNldCArPSBzaXplOwor CXNpemUgPSBBTURHUFVfVkNOX1NUQUNLX1NJWkUgKyAoQU1ER1BVX1ZDTl9TRVNTSU9OX1NJWkUg KiA0MCk7CisJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCBtbVVWRF9WQ1BVX0NBQ0hF X09GRlNFVDIpLCBvZmZzZXQgPj4gMyk7CisJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoVVZELCAw LCBtbVVWRF9WQ1BVX0NBQ0hFX1NJWkUyKSwgc2l6ZSk7CisKKwlXUkVHMzIoU09DMTVfUkVHX09G RlNFVChVVkQsIDAsIG1tVVZEX1VERUNfQUREUl9DT05GSUcpLAorCQkJYWRldi0+Z2Z4LmNvbmZp Zy5nYl9hZGRyX2NvbmZpZyk7CisJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCBtbVVW RF9VREVDX0RCX0FERFJfQ09ORklHKSwKKwkJCWFkZXYtPmdmeC5jb25maWcuZ2JfYWRkcl9jb25m aWcpOworCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfVURFQ19EQldfQURE Ul9DT05GSUcpLAorCQkJYWRldi0+Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZpZyk7Cit9CisKKy8q KgorICogdmNuX3YxXzBfc3RhcnQgLSBzdGFydCBWQ04gYmxvY2sKKyAqCisgKiBAYWRldjogYW1k Z3B1X2RldmljZSBwb2ludGVyCisgKgorICogU2V0dXAgYW5kIHN0YXJ0IHRoZSBWQ04gYmxvY2sK KyAqLworc3RhdGljIGludCB2Y25fdjFfMF9zdGFydChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKK3sKKwl1aW50MzJfdCBsbWlfc3dhcF9jbnRsOworCWludCBpLCBqLCByOworCisJLyogZGlz YWJsZSBieXRlIHN3YXBwaW5nICovCisJbG1pX3N3YXBfY250bCA9IDA7CisKKwl2Y25fdjFfMF9t Y19yZXN1bWUoYWRldik7CisKKwkvKiBkaXNhYmxlIGNsb2NrIGdhdGluZyAqLworCVdSRUczMl9Q KFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCBtbVVWRF9DR0NfQ1RSTCksIDAsCisJCQl+VVZEX0NH Q19DVFJMX19EWU5fQ0xPQ0tfTU9ERV9NQVNLKTsKKworCS8qIGRpc2FibGUgaW50ZXJ1cHQgKi8K KwlXUkVHMzJfUChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfTUFTVElOVF9FTiksIDAs CisJCQl+VVZEX01BU1RJTlRfRU5fX1ZDUFVfRU5fTUFTSyk7CisKKwkvKiBzdGFsbCBVTUMgYW5k IHJlZ2lzdGVyIGJ1cyBiZWZvcmUgcmVzZXR0aW5nIFZDUFUgKi8KKwlXUkVHMzJfUChTT0MxNV9S RUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfTE1JX0NUUkwyKSwKKwkJCVVWRF9MTUlfQ1RSTDJfX1NU QUxMX0FSQl9VTUNfTUFTSywKKwkJCX5VVkRfTE1JX0NUUkwyX19TVEFMTF9BUkJfVU1DX01BU0sp OworCW1kZWxheSgxKTsKKworCS8qIHB1dCBMTUksIFZDUFUsIFJCQyBldGMuLi4gaW50byByZXNl dCAqLworCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfU09GVF9SRVNFVCks CisJCVVWRF9TT0ZUX1JFU0VUX19MTUlfU09GVF9SRVNFVF9NQVNLIHwKKwkJVVZEX1NPRlRfUkVT RVRfX1ZDUFVfU09GVF9SRVNFVF9NQVNLIHwKKwkJVVZEX1NPRlRfUkVTRVRfX0xCU0lfU09GVF9S RVNFVF9NQVNLIHwKKwkJVVZEX1NPRlRfUkVTRVRfX1JCQ19TT0ZUX1JFU0VUX01BU0sgfAorCQlV VkRfU09GVF9SRVNFVF9fQ1NNX1NPRlRfUkVTRVRfTUFTSyB8CisJCVVWRF9TT0ZUX1JFU0VUX19D WFdfU09GVF9SRVNFVF9NQVNLIHwKKwkJVVZEX1NPRlRfUkVTRVRfX1RBUF9TT0ZUX1JFU0VUX01B U0sgfAorCQlVVkRfU09GVF9SRVNFVF9fTE1JX1VNQ19TT0ZUX1JFU0VUX01BU0spOworCW1kZWxh eSg1KTsKKworCS8qIGluaXRpYWxpemUgVkNOIG1lbW9yeSBjb250cm9sbGVyICovCisJV1JFRzMy KFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCBtbVVWRF9MTUlfQ1RSTCksCisJCSgweDQwIDw8IFVW RF9MTUlfQ1RSTF9fV1JJVEVfQ0xFQU5fVElNRVJfX1NISUZUKSB8CisJCVVWRF9MTUlfQ1RSTF9f V1JJVEVfQ0xFQU5fVElNRVJfRU5fTUFTSyB8CisJCVVWRF9MTUlfQ1RSTF9fREFUQV9DT0hFUkVO Q1lfRU5fTUFTSyB8CisJCVVWRF9MTUlfQ1RSTF9fVkNQVV9EQVRBX0NPSEVSRU5DWV9FTl9NQVNL IHwKKwkJVVZEX0xNSV9DVFJMX19SRVFfTU9ERV9NQVNLIHwKKwkJMHgwMDEwMDAwMEwpOworCisj aWZkZWYgX19CSUdfRU5ESUFOCisJLyogc3dhcCAoOCBpbiAzMikgUkIgYW5kIElCICovCisJbG1p X3N3YXBfY250bCA9IDB4YTsKKyNlbmRpZgorCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKFVWRCwg MCwgbW1VVkRfTE1JX1NXQVBfQ05UTCksIGxtaV9zd2FwX2NudGwpOworCisJV1JFRzMyKFNPQzE1 X1JFR19PRkZTRVQoVVZELCAwLCBtbVVWRF9NUENfU0VUX01VWEEwKSwgMHg0MGMyMDQwKTsKKwlX UkVHMzIoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX01QQ19TRVRfTVVYQTEpLCAweDAp OworCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfTVBDX1NFVF9NVVhCMCks IDB4NDBjMjA0MCk7CisJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCBtbVVWRF9NUENf U0VUX01VWEIxKSwgMHgwKTsKKwlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZE X01QQ19TRVRfQUxVKSwgMCk7CisJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCBtbVVW RF9NUENfU0VUX01VWCksIDB4ODgpOworCisJLyogdGFrZSBhbGwgc3ViYmxvY2tzIG91dCBvZiBy ZXNldCwgZXhjZXB0IFZDUFUgKi8KKwlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIG1t VVZEX1NPRlRfUkVTRVQpLAorCQkJVVZEX1NPRlRfUkVTRVRfX1ZDUFVfU09GVF9SRVNFVF9NQVNL KTsKKwltZGVsYXkoNSk7CisKKwkvKiBlbmFibGUgVkNQVSBjbG9jayAqLworCVdSRUczMihTT0Mx NV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfVkNQVV9DTlRMKSwKKwkJCVVWRF9WQ1BVX0NOVExf X0NMS19FTl9NQVNLKTsKKworCS8qIGVuYWJsZSBVTUMgKi8KKwlXUkVHMzJfUChTT0MxNV9SRUdf T0ZGU0VUKFVWRCwgMCwgbW1VVkRfTE1JX0NUUkwyKSwgMCwKKwkJCX5VVkRfTE1JX0NUUkwyX19T VEFMTF9BUkJfVU1DX01BU0spOworCisJLyogYm9vdCB1cCB0aGUgVkNQVSAqLworCVdSRUczMihT T0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfU09GVF9SRVNFVCksIDApOworCW1kZWxheSgx MCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMTA7ICsraSkgeworCQl1aW50MzJfdCBzdGF0dXM7CisK KwkJZm9yIChqID0gMDsgaiA8IDEwMDsgKytqKSB7CisJCQlzdGF0dXMgPSBSUkVHMzIoU09DMTVf UkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX1NUQVRVUykpOworCQkJaWYgKHN0YXR1cyAmIDIpCisJ CQkJYnJlYWs7CisJCQltZGVsYXkoMTApOworCQl9CisJCXIgPSAwOworCQlpZiAoc3RhdHVzICYg MikKKwkJCWJyZWFrOworCisJCURSTV9FUlJPUigiVkNOIGRlY29kZSBub3QgcmVzcG9uZGluZywg dHJ5aW5nIHRvIHJlc2V0IHRoZSBWQ1BVISEhXG4iKTsKKwkJV1JFRzMyX1AoU09DMTVfUkVHX09G RlNFVChVVkQsIDAsIG1tVVZEX1NPRlRfUkVTRVQpLAorCQkJCVVWRF9TT0ZUX1JFU0VUX19WQ1BV X1NPRlRfUkVTRVRfTUFTSywKKwkJCQl+VVZEX1NPRlRfUkVTRVRfX1ZDUFVfU09GVF9SRVNFVF9N QVNLKTsKKwkJbWRlbGF5KDEwKTsKKwkJV1JFRzMyX1AoU09DMTVfUkVHX09GRlNFVChVVkQsIDAs IG1tVVZEX1NPRlRfUkVTRVQpLCAwLAorCQkJCX5VVkRfU09GVF9SRVNFVF9fVkNQVV9TT0ZUX1JF U0VUX01BU0spOworCQltZGVsYXkoMTApOworCQlyID0gLTE7CisJfQorCisJaWYgKHIpIHsKKwkJ RFJNX0VSUk9SKCJWQ04gZGVjb2RlIG5vdCByZXNwb25kaW5nLCBnaXZpbmcgdXAhISFcbiIpOwor CQlyZXR1cm4gcjsKKwl9CisJLyogZW5hYmxlIG1hc3RlciBpbnRlcnJ1cHQgKi8KKwlXUkVHMzJf UChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfTUFTVElOVF9FTiksCisJCShVVkRfTUFT VElOVF9FTl9fVkNQVV9FTl9NQVNLfFVWRF9NQVNUSU5UX0VOX19TWVNfRU5fTUFTSyksCisJCX4o VVZEX01BU1RJTlRfRU5fX1ZDUFVfRU5fTUFTS3xVVkRfTUFTVElOVF9FTl9fU1lTX0VOX01BU0sp KTsKKworCS8qIGNsZWFyIHRoZSBiaXQgNCBvZiBWQ05fU1RBVFVTICovCisJV1JFRzMyX1AoU09D MTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX1NUQVRVUyksIDAsCisJCQl+KDIgPDwgVVZEX1NU QVRVU19fVkNQVV9SRVBPUlRfX1NISUZUKSk7CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiB2 Y25fdjFfMF9zdG9wIC0gc3RvcCBWQ04gYmxvY2sKKyAqCisgKiBAYWRldjogYW1kZ3B1X2Rldmlj ZSBwb2ludGVyCisgKgorICogc3RvcCB0aGUgVkNOIGJsb2NrCisgKi8KK3N0YXRpYyBpbnQgdmNu X3YxXzBfc3RvcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwkvKiBTdGFsbCBVTUMg YW5kIHJlZ2lzdGVyIGJ1cyBiZWZvcmUgcmVzZXR0aW5nIFZDUFUgKi8KKwlXUkVHMzJfUChTT0Mx NV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfTE1JX0NUUkwyKSwKKwkJCVVWRF9MTUlfQ1RSTDJf X1NUQUxMX0FSQl9VTUNfTUFTSywKKwkJCX5VVkRfTE1JX0NUUkwyX19TVEFMTF9BUkJfVU1DX01B U0spOworCW1kZWxheSgxKTsKKworCS8qIHB1dCBWQ1BVIGludG8gcmVzZXQgKi8KKwlXUkVHMzIo U09DMTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX1NPRlRfUkVTRVQpLAorCQkJVVZEX1NPRlRf UkVTRVRfX1ZDUFVfU09GVF9SRVNFVF9NQVNLKTsKKwltZGVsYXkoNSk7CisKKwkvKiBkaXNhYmxl IFZDUFUgY2xvY2sgKi8KKwlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX1ZD UFVfQ05UTCksIDB4MCk7CisKKwkvKiBVbnN0YWxsIFVNQyBhbmQgcmVnaXN0ZXIgYnVzICovCisJ V1JFRzMyX1AoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIG1tVVZEX0xNSV9DVFJMMiksIDAsCisJ CQl+VVZEX0xNSV9DVFJMMl9fU1RBTExfQVJCX1VNQ19NQVNLKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IHZjbl92MV8wX3NldF9jbG9ja2dhdGluZ19zdGF0ZSh2b2lkICpoYW5kbGUs CisJCQkJCSAgZW51bSBhbWRfY2xvY2tnYXRpbmdfc3RhdGUgc3RhdGUpCit7CisJLyogbmVlZGVk IGZvciBkcml2ZXIgdW5sb2FkKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBhbWRfaXBfZnVuY3MgdmNuX3YxXzBfaXBfZnVuY3MgPSB7CisJLm5hbWUgPSAidmNuX3YxXzAi LAorCS5lYXJseV9pbml0ID0gdmNuX3YxXzBfZWFybHlfaW5pdCwKKwkubGF0ZV9pbml0ID0gTlVM TCwKKwkuc3dfaW5pdCA9IHZjbl92MV8wX3N3X2luaXQsCisJLnN3X2ZpbmkgPSB2Y25fdjFfMF9z d19maW5pLAorCS5od19pbml0ID0gdmNuX3YxXzBfaHdfaW5pdCwKKwkuaHdfZmluaSA9IHZjbl92 MV8wX2h3X2ZpbmksCisJLnN1c3BlbmQgPSB2Y25fdjFfMF9zdXNwZW5kLAorCS5yZXN1bWUgPSB2 Y25fdjFfMF9yZXN1bWUsCisJLmlzX2lkbGUgPSBOVUxMIC8qIHZjbl92MV8wX2lzX2lkbGUgKi8s CisJLndhaXRfZm9yX2lkbGUgPSBOVUxMIC8qIHZjbl92MV8wX3dhaXRfZm9yX2lkbGUgKi8sCisJ LmNoZWNrX3NvZnRfcmVzZXQgPSBOVUxMIC8qIHZjbl92MV8wX2NoZWNrX3NvZnRfcmVzZXQgKi8s CisJLnByZV9zb2Z0X3Jlc2V0ID0gTlVMTCAvKiB2Y25fdjFfMF9wcmVfc29mdF9yZXNldCAqLywK Kwkuc29mdF9yZXNldCA9IE5VTEwgLyogdmNuX3YxXzBfc29mdF9yZXNldCAqLywKKwkucG9zdF9z b2Z0X3Jlc2V0ID0gTlVMTCAvKiB2Y25fdjFfMF9wb3N0X3NvZnRfcmVzZXQgKi8sCisJLnNldF9j bG9ja2dhdGluZ19zdGF0ZSA9IHZjbl92MV8wX3NldF9jbG9ja2dhdGluZ19zdGF0ZSwKKwkuc2V0 X3Bvd2VyZ2F0aW5nX3N0YXRlID0gTlVMTCAvKiB2Y25fdjFfMF9zZXRfcG93ZXJnYXRpbmdfc3Rh dGUgKi8sCit9OwotLSAKMi41LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=