From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH v5 9/9] drm/radeon: Use generic HDMI infoframe helpers Date: Fri, 22 Feb 2013 08:03:31 +0100 Message-ID: <1361516611-2517-10-git-send-email-thierry.reding@avionic-design.de> References: <1361516611-2517-1-git-send-email-thierry.reding@avionic-design.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.171]) by gabe.freedesktop.org (Postfix) with ESMTP id 29F7EE614A for ; Thu, 21 Feb 2013 23:03:55 -0800 (PST) In-Reply-To: <1361516611-2517-1-git-send-email-thierry.reding@avionic-design.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: David Airlie Cc: dri-devel@lists.freedesktop.org, Paulo Zanoni List-Id: dri-devel@lists.freedesktop.org VXNlIHRoZSBnZW5lcmljIEhETUkgaW5mb2ZyYW1lIGhlbHBlcnMgdG8gZ2V0IHJpZCBvZiB0aGUg ZHVwbGljYXRlCmltcGxlbWVudGF0aW9uIGluIHRoZSByYWRlb24gZHJpdmVyLgoKU2lnbmVkLW9m Zi1ieTogVGhpZXJyeSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGF2aW9uaWMtZGVzaWduLmRlPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZlcmdyZWVuX2hkbWkuYyB8ICA4NSArKysrKy0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwX2hkbWkuYyAgICAgIHwg MTM0ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDU4 IGluc2VydGlvbnMoKyksIDE2MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL2V2ZXJncmVlbl9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2 ZXJncmVlbl9oZG1pLmMKaW5kZXggMzI3YzA4Yi4uNGZkZWNjMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9ldmVyZ3JlZW5faGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vZXZlcmdyZWVuX2hkbWkuYwpAQCAtMjQsNiArMjQsNyBAQAogICogQXV0aG9yczogQ2hy aXN0aWFuIEvDtm5pZwogICogICAgICAgICAgUmFmYcWCIE1pxYJlY2tpCiAgKi8KKyNpbmNsdWRl IDxsaW51eC9oZG1pLmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlIDxkcm0vcmFk ZW9uX2RybS5oPgogI2luY2x1ZGUgInJhZGVvbi5oIgpAQCAtNTQsNzkgKzU1LDE4IEBAIHN0YXRp YyB2b2lkIGV2ZXJncmVlbl9oZG1pX3VwZGF0ZV9BQ1Ioc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLCB1aW50MzJfdCBjbG9jCiB9CiAKIC8qCi0gKiBjYWxjdWxhdGUgdGhlIGNyYyBmb3IgYSBn aXZlbiBpbmZvIGZyYW1lCi0gKi8KLXN0YXRpYyB2b2lkIGV2ZXJncmVlbl9oZG1pX2luZm9mcmFt ZV9jaGVja3N1bSh1aW50OF90IHBhY2tldFR5cGUsCi0JCQkJCSB1aW50OF90IHZlcnNpb25OdW1i ZXIsCi0JCQkJCSB1aW50OF90IGxlbmd0aCwKLQkJCQkJIHVpbnQ4X3QgKmZyYW1lKQotewotCWlu dCBpOwotCWZyYW1lWzBdID0gcGFja2V0VHlwZSArIHZlcnNpb25OdW1iZXIgKyBsZW5ndGg7Ci0J Zm9yIChpID0gMTsgaSA8PSBsZW5ndGg7IGkrKykKLQkJZnJhbWVbMF0gKz0gZnJhbWVbaV07Ci0J ZnJhbWVbMF0gPSAweDEwMCAtIGZyYW1lWzBdOwotfQotCi0vKgogICogYnVpbGQgYSBIRE1JIFZp ZGVvIEluZm8gRnJhbWUKICAqLwotc3RhdGljIHZvaWQgZXZlcmdyZWVuX2hkbWlfdmlkZW9pbmZv ZnJhbWUoCi0Jc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAotCXVpbnQ4X3QgY29sb3JfZm9y bWF0LAotCWludCBhY3RpdmVfaW5mb3JtYXRpb25fcHJlc2VudCwKLQl1aW50OF90IGFjdGl2ZV9m b3JtYXRfYXNwZWN0X3JhdGlvLAotCXVpbnQ4X3Qgc2Nhbl9pbmZvcm1hdGlvbiwKLQl1aW50OF90 IGNvbG9yaW1ldHJ5LAotCXVpbnQ4X3QgZXhfY29sb3JpbWV0cnksCi0JdWludDhfdCBxdWFudGl6 YXRpb24sCi0JaW50IElUQywKLQl1aW50OF90IHBpY3R1cmVfYXNwZWN0X3JhdGlvLAotCXVpbnQ4 X3QgdmlkZW9fZm9ybWF0X2lkZW50aWZpY2F0aW9uLAotCXVpbnQ4X3QgcGl4ZWxfcmVwZXRpdGlv biwKLQl1aW50OF90IG5vbl91bmlmb3JtX3BpY3R1cmVfc2NhbGluZywKLQl1aW50OF90IGJhcl9p bmZvX2RhdGFfdmFsaWQsCi0JdWludDE2X3QgdG9wX2JhciwKLQl1aW50MTZfdCBib3R0b21fYmFy LAotCXVpbnQxNl90IGxlZnRfYmFyLAotCXVpbnQxNl90IHJpZ2h0X2JhcgotKQorc3RhdGljIHZv aWQgZXZlcmdyZWVuX2hkbWlfdXBkYXRlX2F2aV9pbmZvZnJhbWUoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyLAorCQkJCQkJdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2OwogCXN0cnVjdCByYWRlb25fZGV2aWNlICpy ZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnJhZGVvbl9l bmNvZGVyID0gdG9fcmFkZW9uX2VuY29kZXIoZW5jb2Rlcik7CiAJc3RydWN0IHJhZGVvbl9lbmNv ZGVyX2F0b21fZGlnICpkaWcgPSByYWRlb25fZW5jb2Rlci0+ZW5jX3ByaXY7CiAJdWludDMyX3Qg b2Zmc2V0ID0gZGlnLT5hZm10LT5vZmZzZXQ7CisJdWludDhfdCAqZnJhbWUgPSBidWZmZXIgKyAz OwogCi0JdWludDhfdCBmcmFtZVsxNF07Ci0KLQlmcmFtZVsweDBdID0gMDsKLQlmcmFtZVsweDFd ID0KLQkJKHNjYW5faW5mb3JtYXRpb24gJiAweDMpIHwKLQkJKChiYXJfaW5mb19kYXRhX3ZhbGlk ICYgMHgzKSA8PCAyKSB8Ci0JCSgoYWN0aXZlX2luZm9ybWF0aW9uX3ByZXNlbnQgJiAweDEpIDw8 IDQpIHwKLQkJKChjb2xvcl9mb3JtYXQgJiAweDMpIDw8IDUpOwotCWZyYW1lWzB4Ml0gPQotCQko YWN0aXZlX2Zvcm1hdF9hc3BlY3RfcmF0aW8gJiAweEYpIHwKLQkJKChwaWN0dXJlX2FzcGVjdF9y YXRpbyAmIDB4MykgPDwgNCkgfAotCQkoKGNvbG9yaW1ldHJ5ICYgMHgzKSA8PCA2KTsKLQlmcmFt ZVsweDNdID0KLQkJKG5vbl91bmlmb3JtX3BpY3R1cmVfc2NhbGluZyAmIDB4MykgfAotCQkoKHF1 YW50aXphdGlvbiAmIDB4MykgPDwgMikgfAotCQkoKGV4X2NvbG9yaW1ldHJ5ICYgMHg3KSA8PCA0 KSB8Ci0JCSgoSVRDICYgMHgxKSA8PCA3KTsKLQlmcmFtZVsweDRdID0gKHZpZGVvX2Zvcm1hdF9p ZGVudGlmaWNhdGlvbiAmIDB4N0YpOwotCWZyYW1lWzB4NV0gPSAocGl4ZWxfcmVwZXRpdGlvbiAm IDB4Rik7Ci0JZnJhbWVbMHg2XSA9ICh0b3BfYmFyICYgMHhGRik7Ci0JZnJhbWVbMHg3XSA9ICh0 b3BfYmFyID4+IDgpOwotCWZyYW1lWzB4OF0gPSAoYm90dG9tX2JhciAmIDB4RkYpOwotCWZyYW1l WzB4OV0gPSAoYm90dG9tX2JhciA+PiA4KTsKLQlmcmFtZVsweEFdID0gKGxlZnRfYmFyICYgMHhG Rik7Ci0JZnJhbWVbMHhCXSA9IChsZWZ0X2JhciA+PiA4KTsKLQlmcmFtZVsweENdID0gKHJpZ2h0 X2JhciAmIDB4RkYpOwotCWZyYW1lWzB4RF0gPSAocmlnaHRfYmFyID4+IDgpOwotCi0JZXZlcmdy ZWVuX2hkbWlfaW5mb2ZyYW1lX2NoZWNrc3VtKDB4ODIsIDB4MDIsIDB4MEQsIGZyYW1lKTsKIAkv KiBPdXIgaGVhZGVyIHZhbHVlcyAodHlwZSwgdmVyc2lvbiwgbGVuZ3RoKSBzaG91bGQgYmUgYWxy aWdodCwgSW50ZWwKIAkgKiBpcyB1c2luZyB0aGUgc2FtZS4gQ2hlY2tzdW0gZnVuY3Rpb24gYWxz byBzZWVtcyB0byBiZSBPSywgaXQgd29ya3MKIAkgKiBmaW5lIGZvciBhdWRpbyBpbmZvZnJhbWUu IEhvd2V2ZXIgY2FsY3VsYXRlZCB2YWx1ZSBpcyBhbHdheXMgbG93ZXIKQEAgLTE1NCw3ICs5NCwx MCBAQCB2b2lkIGV2ZXJncmVlbl9oZG1pX3NldG1vZGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZQogCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnJhZGVvbl9lbmNv ZGVyID0gdG9fcmFkZW9uX2VuY29kZXIoZW5jb2Rlcik7CiAJc3RydWN0IHJhZGVvbl9lbmNvZGVy X2F0b21fZGlnICpkaWcgPSByYWRlb25fZW5jb2Rlci0+ZW5jX3ByaXY7CisJdTggYnVmZmVyW0hE TUlfSU5GT0ZSQU1FX0hFQURFUl9TSVpFICsgSERNSV9BVklfSU5GT0ZSQU1FX1NJWkVdOworCXN0 cnVjdCBoZG1pX2F2aV9pbmZvZnJhbWUgZnJhbWU7CiAJdWludDMyX3Qgb2Zmc2V0OworCXNzaXpl X3QgZXJyOwogCiAJLyogU2lsZW50LCByNjAwX2hkbWlfZW5hYmxlIHdpbGwgcmFpc2UgV0FSTiBm b3IgdXMgKi8KIAlpZiAoIWRpZy0+YWZtdC0+ZW5hYmxlZCkKQEAgLTIwMCw5ICsxNDMsMTkgQEAg dm9pZCBldmVyZ3JlZW5faGRtaV9zZXRtb2RlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlciwg c3RydWN0IGRybV9kaXNwbGF5X21vZGUKIAogCVdSRUczMihIRE1JX0dDICsgb2Zmc2V0LCAwKTsg LyogdW5zZXQgSERNSV9HQ19BVk1VVEUgKi8KIAotCWV2ZXJncmVlbl9oZG1pX3ZpZGVvaW5mb2Zy YW1lKGVuY29kZXIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0JCQkJICAgICAg MCwgMCwgMCwgMCwgMCwgMCk7CisJZXJyID0gZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9mcm9tX2Rp c3BsYXlfbW9kZSgmZnJhbWUsIG1vZGUpOworCWlmIChlcnIgPCAwKSB7CisJCURSTV9FUlJPUigi ZmFpbGVkIHRvIHNldHVwIEFWSSBpbmZvZnJhbWU6ICV6ZFxuIiwgZXJyKTsKKwkJcmV0dXJuOwor CX0KKworCWVyciA9IGhkbWlfYXZpX2luZm9mcmFtZV9wYWNrKCZmcmFtZSwgYnVmZmVyLCBzaXpl b2YoYnVmZmVyKSk7CisJaWYgKGVyciA8IDApIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGFj ayBBVkkgaW5mb2ZyYW1lOiAlemRcbiIsIGVycik7CisJCXJldHVybjsKKwl9CiAKKwlldmVyZ3Jl ZW5faGRtaV91cGRhdGVfYXZpX2luZm9mcmFtZShlbmNvZGVyLCBidWZmZXIsIHNpemVvZihidWZm ZXIpKTsKIAlldmVyZ3JlZW5faGRtaV91cGRhdGVfQUNSKGVuY29kZXIsIG1vZGUtPmNsb2NrKTsK IAogCS8qIGl0J3MgdW5rbm93biB3aGF0IHRoZXNlIGJpdHMgZG8gZXhjYXRseSwgYnV0IGl0J3Mg aW5kZWVkIHF1aXRlIHVzZWZ1bCBmb3IgZGVidWdnaW5nICovCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3I2MDBfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAw X2hkbWkuYwppbmRleCA5NTk3MGVjLi4yMWVjYzBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3I2MDBfaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9o ZG1pLmMKQEAgLTIzLDYgKzIzLDcgQEAKICAqCiAgKiBBdXRob3JzOiBDaHJpc3RpYW4gS8O2bmln CiAgKi8KKyNpbmNsdWRlIDxsaW51eC9oZG1pLmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNp bmNsdWRlIDxkcm0vcmFkZW9uX2RybS5oPgogI2luY2x1ZGUgInJhZGVvbi5oIgpAQCAtMTIxLDc5 ICsxMjIsMTggQEAgc3RhdGljIHZvaWQgcjYwMF9oZG1pX3VwZGF0ZV9BQ1Ioc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyLCB1aW50MzJfdCBjbG9jaykKIH0KIAogLyoKLSAqIGNhbGN1bGF0ZSB0 aGUgY3JjIGZvciBhIGdpdmVuIGluZm8gZnJhbWUKLSAqLwotc3RhdGljIHZvaWQgcjYwMF9oZG1p X2luZm9mcmFtZV9jaGVja3N1bSh1aW50OF90IHBhY2tldFR5cGUsCi0JCQkJCSB1aW50OF90IHZl cnNpb25OdW1iZXIsCi0JCQkJCSB1aW50OF90IGxlbmd0aCwKLQkJCQkJIHVpbnQ4X3QgKmZyYW1l KQotewotCWludCBpOwotCWZyYW1lWzBdID0gcGFja2V0VHlwZSArIHZlcnNpb25OdW1iZXIgKyBs ZW5ndGg7Ci0JZm9yIChpID0gMTsgaSA8PSBsZW5ndGg7IGkrKykKLQkJZnJhbWVbMF0gKz0gZnJh bWVbaV07Ci0JZnJhbWVbMF0gPSAweDEwMCAtIGZyYW1lWzBdOwotfQotCi0vKgogICogYnVpbGQg YSBIRE1JIFZpZGVvIEluZm8gRnJhbWUKICAqLwotc3RhdGljIHZvaWQgcjYwMF9oZG1pX3ZpZGVv aW5mb2ZyYW1lKAotCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKLQllbnVtIHI2MDBfaGRt aV9jb2xvcl9mb3JtYXQgY29sb3JfZm9ybWF0LAotCWludCBhY3RpdmVfaW5mb3JtYXRpb25fcHJl c2VudCwKLQl1aW50OF90IGFjdGl2ZV9mb3JtYXRfYXNwZWN0X3JhdGlvLAotCXVpbnQ4X3Qgc2Nh bl9pbmZvcm1hdGlvbiwKLQl1aW50OF90IGNvbG9yaW1ldHJ5LAotCXVpbnQ4X3QgZXhfY29sb3Jp bWV0cnksCi0JdWludDhfdCBxdWFudGl6YXRpb24sCi0JaW50IElUQywKLQl1aW50OF90IHBpY3R1 cmVfYXNwZWN0X3JhdGlvLAotCXVpbnQ4X3QgdmlkZW9fZm9ybWF0X2lkZW50aWZpY2F0aW9uLAot CXVpbnQ4X3QgcGl4ZWxfcmVwZXRpdGlvbiwKLQl1aW50OF90IG5vbl91bmlmb3JtX3BpY3R1cmVf c2NhbGluZywKLQl1aW50OF90IGJhcl9pbmZvX2RhdGFfdmFsaWQsCi0JdWludDE2X3QgdG9wX2Jh ciwKLQl1aW50MTZfdCBib3R0b21fYmFyLAotCXVpbnQxNl90IGxlZnRfYmFyLAotCXVpbnQxNl90 IHJpZ2h0X2JhcgotKQorc3RhdGljIHZvaWQgcjYwMF9oZG1pX3VwZGF0ZV9hdmlfaW5mb2ZyYW1l KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJICAgdm9pZCAqYnVmZmVyLCBzaXpl X3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2OwogCXN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgcmFk ZW9uX2VuY29kZXIgKnJhZGVvbl9lbmNvZGVyID0gdG9fcmFkZW9uX2VuY29kZXIoZW5jb2Rlcik7 CiAJc3RydWN0IHJhZGVvbl9lbmNvZGVyX2F0b21fZGlnICpkaWcgPSByYWRlb25fZW5jb2Rlci0+ ZW5jX3ByaXY7CiAJdWludDMyX3Qgb2Zmc2V0ID0gZGlnLT5hZm10LT5vZmZzZXQ7CisJdWludDhf dCAqZnJhbWUgPSBidWZmZXIgKyAzOwogCi0JdWludDhfdCBmcmFtZVsxNF07Ci0KLQlmcmFtZVsw eDBdID0gMDsKLQlmcmFtZVsweDFdID0KLQkJKHNjYW5faW5mb3JtYXRpb24gJiAweDMpIHwKLQkJ KChiYXJfaW5mb19kYXRhX3ZhbGlkICYgMHgzKSA8PCAyKSB8Ci0JCSgoYWN0aXZlX2luZm9ybWF0 aW9uX3ByZXNlbnQgJiAweDEpIDw8IDQpIHwKLQkJKChjb2xvcl9mb3JtYXQgJiAweDMpIDw8IDUp OwotCWZyYW1lWzB4Ml0gPQotCQkoYWN0aXZlX2Zvcm1hdF9hc3BlY3RfcmF0aW8gJiAweEYpIHwK LQkJKChwaWN0dXJlX2FzcGVjdF9yYXRpbyAmIDB4MykgPDwgNCkgfAotCQkoKGNvbG9yaW1ldHJ5 ICYgMHgzKSA8PCA2KTsKLQlmcmFtZVsweDNdID0KLQkJKG5vbl91bmlmb3JtX3BpY3R1cmVfc2Nh bGluZyAmIDB4MykgfAotCQkoKHF1YW50aXphdGlvbiAmIDB4MykgPDwgMikgfAotCQkoKGV4X2Nv bG9yaW1ldHJ5ICYgMHg3KSA8PCA0KSB8Ci0JCSgoSVRDICYgMHgxKSA8PCA3KTsKLQlmcmFtZVsw eDRdID0gKHZpZGVvX2Zvcm1hdF9pZGVudGlmaWNhdGlvbiAmIDB4N0YpOwotCWZyYW1lWzB4NV0g PSAocGl4ZWxfcmVwZXRpdGlvbiAmIDB4Rik7Ci0JZnJhbWVbMHg2XSA9ICh0b3BfYmFyICYgMHhG Rik7Ci0JZnJhbWVbMHg3XSA9ICh0b3BfYmFyID4+IDgpOwotCWZyYW1lWzB4OF0gPSAoYm90dG9t X2JhciAmIDB4RkYpOwotCWZyYW1lWzB4OV0gPSAoYm90dG9tX2JhciA+PiA4KTsKLQlmcmFtZVsw eEFdID0gKGxlZnRfYmFyICYgMHhGRik7Ci0JZnJhbWVbMHhCXSA9IChsZWZ0X2JhciA+PiA4KTsK LQlmcmFtZVsweENdID0gKHJpZ2h0X2JhciAmIDB4RkYpOwotCWZyYW1lWzB4RF0gPSAocmlnaHRf YmFyID4+IDgpOwotCi0JcjYwMF9oZG1pX2luZm9mcmFtZV9jaGVja3N1bSgweDgyLCAweDAyLCAw eDBELCBmcmFtZSk7CiAJLyogT3VyIGhlYWRlciB2YWx1ZXMgKHR5cGUsIHZlcnNpb24sIGxlbmd0 aCkgc2hvdWxkIGJlIGFscmlnaHQsIEludGVsCiAJICogaXMgdXNpbmcgdGhlIHNhbWUuIENoZWNr c3VtIGZ1bmN0aW9uIGFsc28gc2VlbXMgdG8gYmUgT0ssIGl0IHdvcmtzCiAJICogZmluZSBmb3Ig YXVkaW8gaW5mb2ZyYW1lLiBIb3dldmVyIGNhbGN1bGF0ZWQgdmFsdWUgaXMgYWx3YXlzIGxvd2Vy CkBAIC0yMTUsMzkgKzE1NSwxNSBAQCBzdGF0aWMgdm9pZCByNjAwX2hkbWlfdmlkZW9pbmZvZnJh bWUoCiAvKgogICogYnVpbGQgYSBBdWRpbyBJbmZvIEZyYW1lCiAgKi8KLXN0YXRpYyB2b2lkIHI2 MDBfaGRtaV9hdWRpb2luZm9mcmFtZSgKLQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCi0J dWludDhfdCBjaGFubmVsX2NvdW50LAotCXVpbnQ4X3QgY29kaW5nX3R5cGUsCi0JdWludDhfdCBz YW1wbGVfc2l6ZSwKLQl1aW50OF90IHNhbXBsZV9mcmVxdWVuY3ksCi0JdWludDhfdCBmb3JtYXQs Ci0JdWludDhfdCBjaGFubmVsX2FsbG9jYXRpb24sCi0JdWludDhfdCBsZXZlbF9zaGlmdCwKLQlp bnQgZG93bm1peF9pbmhpYml0Ci0pCitzdGF0aWMgdm9pZCByNjAwX2hkbWlfdXBkYXRlX2F1ZGlv X2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkJCSAgICAgY29uc3Qg dm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZW5jb2Rlci0+ZGV2OwogCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKIAlzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnJhZGVvbl9lbmNvZGVyID0gdG9fcmFkZW9u X2VuY29kZXIoZW5jb2Rlcik7CiAJc3RydWN0IHJhZGVvbl9lbmNvZGVyX2F0b21fZGlnICpkaWcg PSByYWRlb25fZW5jb2Rlci0+ZW5jX3ByaXY7CiAJdWludDMyX3Qgb2Zmc2V0ID0gZGlnLT5hZm10 LT5vZmZzZXQ7Ci0KLQl1aW50OF90IGZyYW1lWzExXTsKLQotCWZyYW1lWzB4MF0gPSAwOwotCWZy YW1lWzB4MV0gPSAoY2hhbm5lbF9jb3VudCAmIDB4NykgfCAoKGNvZGluZ190eXBlICYgMHhGKSA8 PCA0KTsKLQlmcmFtZVsweDJdID0gKHNhbXBsZV9zaXplICYgMHgzKSB8ICgoc2FtcGxlX2ZyZXF1 ZW5jeSAmIDB4NykgPDwgMik7Ci0JZnJhbWVbMHgzXSA9IGZvcm1hdDsKLQlmcmFtZVsweDRdID0g Y2hhbm5lbF9hbGxvY2F0aW9uOwotCWZyYW1lWzB4NV0gPSAoKGxldmVsX3NoaWZ0ICYgMHhGKSA8 PCAzKSB8ICgoZG93bm1peF9pbmhpYml0ICYgMHgxKSA8PCA3KTsKLQlmcmFtZVsweDZdID0gMDsK LQlmcmFtZVsweDddID0gMDsKLQlmcmFtZVsweDhdID0gMDsKLQlmcmFtZVsweDldID0gMDsKLQlm cmFtZVsweEFdID0gMDsKLQotCXI2MDBfaGRtaV9pbmZvZnJhbWVfY2hlY2tzdW0oMHg4NCwgMHgw MSwgMHgwQSwgZnJhbWUpOworCWNvbnN0IHU4ICpmcmFtZSA9IGJ1ZmZlciArIDM7CiAKIAlXUkVH MzIoSERNSTBfQVVESU9fSU5GTzAgKyBvZmZzZXQsCiAJCWZyYW1lWzB4MF0gfCAoZnJhbWVbMHgx XSA8PCA4KSB8IChmcmFtZVsweDJdIDw8IDE2KSB8IChmcmFtZVsweDNdIDw8IDI0KSk7CkBAIC0z MjAsNyArMjM2LDEwIEBAIHZvaWQgcjYwMF9oZG1pX3NldG1vZGUoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kCiAJc3RydWN0IHJhZGVvbl9k ZXZpY2UgKnJkZXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCByYWRlb25fZW5jb2RlciAq cmFkZW9uX2VuY29kZXIgPSB0b19yYWRlb25fZW5jb2RlcihlbmNvZGVyKTsKIAlzdHJ1Y3QgcmFk ZW9uX2VuY29kZXJfYXRvbV9kaWcgKmRpZyA9IHJhZGVvbl9lbmNvZGVyLT5lbmNfcHJpdjsKKwl1 OCBidWZmZXJbSERNSV9JTkZPRlJBTUVfSEVBREVSX1NJWkUgKyBIRE1JX0FWSV9JTkZPRlJBTUVf U0laRV07CisJc3RydWN0IGhkbWlfYXZpX2luZm9mcmFtZSBmcmFtZTsKIAl1aW50MzJfdCBvZmZz ZXQ7CisJc3NpemVfdCBlcnI7CiAKIAkvKiBTaWxlbnQsIHI2MDBfaGRtaV9lbmFibGUgd2lsbCBy YWlzZSBXQVJOIGZvciB1cyAqLwogCWlmICghZGlnLT5hZm10LT5lbmFibGVkKQpAQCAtMzcxLDkg KzI5MCwxOSBAQCB2b2lkIHI2MDBfaGRtaV9zZXRtb2RlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2Rlciwgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZAogCiAJV1JFRzMyKEhETUkwX0dDICsg b2Zmc2V0LCAwKTsgLyogdW5zZXQgSERNSTBfR0NfQVZNVVRFICovCiAKLQlyNjAwX2hkbWlfdmlk ZW9pbmZvZnJhbWUoZW5jb2RlciwgUkdCLCAwLCAwLCAwLCAwLAotCQkwLCAwLCAwLCAwLCAwLCAw LCAwLCAwLCAwLCAwLCAwLCAwKTsKKwllcnIgPSBkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX2Zyb21f ZGlzcGxheV9tb2RlKCZmcmFtZSwgbW9kZSk7CisJaWYgKGVyciA8IDApIHsKKwkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gc2V0dXAgQVZJIGluZm9mcmFtZTogJXpkXG4iLCBlcnIpOworCQlyZXR1cm47 CisJfQogCisJZXJyID0gaGRtaV9hdmlfaW5mb2ZyYW1lX3BhY2soJmZyYW1lLCBidWZmZXIsIHNp emVvZihidWZmZXIpKTsKKwlpZiAoZXJyIDwgMCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBw YWNrIEFWSSBpbmZvZnJhbWU6ICV6ZFxuIiwgZXJyKTsKKwkJcmV0dXJuOworCX0KKworCXI2MDBf aGRtaV91cGRhdGVfYXZpX2luZm9mcmFtZShlbmNvZGVyLCBidWZmZXIsIHNpemVvZihidWZmZXIp KTsKIAlyNjAwX2hkbWlfdXBkYXRlX0FDUihlbmNvZGVyLCBtb2RlLT5jbG9jayk7CiAKIAkvKiBp dCdzIHVua25vd24gd2hhdCB0aGVzZSBiaXRzIGRvIGV4Y2F0bHksIGJ1dCBpdCdzIGluZGVlZCBx dWl0ZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyAqLwpAQCAtMzk1LDggKzMyNCwxMSBAQCB2b2lkIHI2 MDBfaGRtaV91cGRhdGVfYXVkaW9fc2V0dGluZ3Moc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQogCXN0cnVjdCByYWRlb25fZW5jb2RlciAqcmFkZW9uX2VuY29kZXIgPSB0b19yYWRlb25fZW5j b2RlcihlbmNvZGVyKTsKIAlzdHJ1Y3QgcmFkZW9uX2VuY29kZXJfYXRvbV9kaWcgKmRpZyA9IHJh ZGVvbl9lbmNvZGVyLT5lbmNfcHJpdjsKIAlzdHJ1Y3QgcjYwMF9hdWRpbyBhdWRpbyA9IHI2MDBf YXVkaW9fc3RhdHVzKHJkZXYpOworCXVpbnQ4X3QgYnVmZmVyW0hETUlfSU5GT0ZSQU1FX0hFQURF Ul9TSVpFICsgSERNSV9BVURJT19JTkZPRlJBTUVfU0laRV07CisJc3RydWN0IGhkbWlfYXVkaW9f aW5mb2ZyYW1lIGZyYW1lOwogCXVpbnQzMl90IG9mZnNldDsKIAl1aW50MzJfdCBpZWM7CisJc3Np emVfdCBlcnI7CiAKIAlpZiAoIWRpZy0+YWZtdCB8fCAhZGlnLT5hZm10LT5lbmFibGVkKQogCQly ZXR1cm47CkBAIC00NjIsOSArMzk0LDIxIEBAIHZvaWQgcjYwMF9oZG1pX3VwZGF0ZV9hdWRpb19z ZXR0aW5ncyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJCWllYyB8PSAweDUgPDwgMTY7 CiAJV1JFRzMyX1AoSERNSTBfNjA5NThfMSArIG9mZnNldCwgaWVjLCB+MHg1MDAwZik7CiAKLQly NjAwX2hkbWlfYXVkaW9pbmZvZnJhbWUoZW5jb2RlciwgYXVkaW8uY2hhbm5lbHMgLSAxLCAwLCAw LCAwLCAwLCAwLCAwLAotCQkJCSAwKTsKKwllcnIgPSBoZG1pX2F1ZGlvX2luZm9mcmFtZV9pbml0 KCZmcmFtZSk7CisJaWYgKGVyciA8IDApIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0dXAg YXVkaW8gaW5mb2ZyYW1lXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWZyYW1lLmNoYW5uZWxzID0g YXVkaW8uY2hhbm5lbHM7CisKKwllcnIgPSBoZG1pX2F1ZGlvX2luZm9mcmFtZV9wYWNrKCZmcmFt ZSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisJaWYgKGVyciA8IDApIHsKKwkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gcGFjayBhdWRpbyBpbmZvZnJhbWVcbiIpOworCQlyZXR1cm47CisJfQogCisJ cjYwMF9oZG1pX3VwZGF0ZV9hdWRpb19pbmZvZnJhbWUoZW5jb2RlciwgYnVmZmVyLCBzaXplb2Yo YnVmZmVyKSk7CiAJcjYwMF9oZG1pX2F1ZGlvX3dvcmthcm91bmQoZW5jb2Rlcik7CiB9CiAKLS0g CjEuOC4xLjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==