From mboxrd@z Thu Jan 1 00:00:00 1970 From: Miquel Raynal Subject: [PATCH v2 1/6] thermal: armada: add overheat interrupt support Date: Fri, 23 Nov 2018 17:17:25 +0100 Message-ID: <20181123161730.11289-2-miquel.raynal@bootlin.com> References: <20181123161730.11289-1-miquel.raynal@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181123161730.11289-1-miquel.raynal@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Gregory Clement , Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Zhang Rui , Eduardo Valentin , Daniel Lezcano Cc: Mark Rutland , devicetree@vger.kernel.org, linux-pm@vger.kernel.org, Antoine Tenart , Catalin Marinas , Will Deacon , Russell King , Maxime Chevallier , Nadav Haklai , Marc Zyngier , David Sniatkiwicz , Rob Herring , Thomas Petazzoni , Miquel Raynal , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhlIElQIGNhbiBtYW5hZ2UgdG8gdHJpZ2dlciBpbnRlcnJ1cHRzIG9uIG92ZXJoZWF0IHNpdHVh dGlvbiBmcm9tIGFsbAp0aGUgc2Vuc29ycy4KCkhvd2V2ZXIsIHRoZSBpbnRlcnJ1cHQgc291cmNl IGNoYW5nZXMgYWxvbmcgd2l0aCB0aGUgbGFzdCBzZWxlY3RlZApzb3VyY2UgKGllLiB0aGUgbGFz dCByZWFkIHNlbnNvciksIHdoaWNoIGlzIGFuIGluY29uc2lzdGVudCBiZWhhdmlvci4KQXZvaWQg cG9zc2libGUgZ2xpdGNoZXMgYnkgYWx3YXlzIHNlbGVjdGluZyBiYWNrIG9ubHkgb25lIGNoYW5u ZWwgd2hpY2gKd2lsbCB0aGVuIGJlIHJlZmVyZW5jZWQgYXMgdGhlICJvdmVyaGVhdF9zZW5zb3Ii IChhcmJpdHJhcmlseTogdGhlIGZpcnN0CmluIHRoZSBEVCB3aGljaCBoYXMgYSBjcml0aWNhbCB0 cmlwIHBvaW50IGZpbGxlZCBpbikuCgpJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBzY2FuIG9mIGFs bCB0aGVybWFsIHpvbmUgbm9kZXMgZGlkIG5vdCBicmluZyBhCmNyaXRpY2FsIHRyaXAgcG9pbnQg ZnJvbSB3aGljaCB0aGUgb3ZlcmhlYXQgaW50ZXJydXB0IGNvdWxkIGJlCmNvbmZpZ3VyZWQuIElu IHRoaXMgY2FzZSBqdXN0IGNvbXBsYWluIGJ1dCBkbyBub3QgZmFpbCB0aGUgcHJvYmUuCgpBbHNv IGRpc2FibGUgc2Vuc29yIHN3aXRjaCBkdXJpbmcgb3ZlcmhlYXQgc2l0dWF0aW9ucyBiZWNhdXNl IGNoYW5naW5nCnRoZSBjaGFubmVsIHdoaWxlIHRoZSBzeXN0ZW0gaXMgdG9vIGhvdCBjb3VsZCBj bGVhciB0aGUgb3ZlcmhlYXQgc3RhdGUKYnkgY2hhbmdpbmcgdGhlIHNvdXJjZSB3aGlsZSB0aGUg dGVtcGVyYXR1cmUgaXMgc3RpbGwgdmVyeSBoaWdoLgoKRXZlbiBpZiB0aGUgb3ZlcmhlYXQgc3Rh dGUgaXMgbm90IGRlY2xhcmVkLCBvdmVyaGVhdCBpbnRlcnJ1cHQgbXVzdCBiZQpjbGVhcmVkIGJ5 IHJlYWRpbmcgdGhlIERGWCBpbnRlcnJ1cHQgY2F1c2UgX2FmdGVyXyB0aGUgdGVtcGVyYXR1cmUg aGFzCmZhbGxlbiBkb3duIHRvIHRoZSBsb3cgdGhyZXNob2xkLCBvdGhlcndpc2UgZnV0dXJlIHBv c3NpYmxlIGludGVycnVwdHMKd291bGQgbm90IGJlIHNlcnZlZC4gQSB3b3JrIHBvbGxzIHRoZSBj b3JyZXNwb25kaW5nIHJlZ2lzdGVyIHVudGlsIHRoZQpvdmVyaGVhdCBmbGFnIGdldHMgY2xlYXJl ZCBpbiB0aGlzIGNhc2UuCgpTdWdnZXN0ZWQtYnk6IERhdmlkIFNuaWF0a2l3aWN6IDxkYXZpZHNu QG1hcnZlbGwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFs QGJvb3RsaW4uY29tPgotLS0KIGRyaXZlcnMvdGhlcm1hbC9hcm1hZGFfdGhlcm1hbC5jIHwgMjcw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAyNjkgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9h cm1hZGFfdGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL2FybWFkYV90aGVybWFsLmMKaW5kZXgg OTJmNjdkNDBmMmU5Li41NWNmYWVlMGRhNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC9h cm1hZGFfdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9hcm1hZGFfdGhlcm1hbC5jCkBA IC0yNiw2ICsyNiwxMSBAQAogI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgogI2luY2x1ZGUgPGxp bnV4L21mZC9zeXNjb24uaD4KICNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4KKworI2luY2x1ZGUgInRoZXJtYWxfY29yZS5oIgorCisjZGVmaW5l IFRPX01DRUxTSVVTKGMpCQkJKChjKSAqIDEwMDApCiAKIC8qIFRoZXJtYWwgTWFuYWdlciBDb250 cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXIgKi8KICNkZWZpbmUgUE1VX1REQzBfU1dfUlNUX01BU0sJ CSgweDEgPDwgMSkKQEAgLTYxLDkgKzY2LDEzIEBACiAjZGVmaW5lIENPTlRST0wxX1RTRU5fQVZH X01BU0sJCTB4NwogI2RlZmluZSBDT05UUk9MMV9FWFRfVFNFTl9TV19SRVNFVAlCSVQoNykKICNk ZWZpbmUgQ09OVFJPTDFfRVhUX1RTRU5fSFdfUkVTRVRuCUJJVCg4KQorI2RlZmluZSBDT05UUk9M MV9UU0VOX0lOVF9FTgkJQklUKDI1KQorI2RlZmluZSBDT05UUk9MMV9UU0VOX1NFTEVDVF9PRkYJ MjEKKyNkZWZpbmUgQ09OVFJPTDFfVFNFTl9TRUxFQ1RfTUFTSwkweDMKIAogI2RlZmluZSBTVEFU VVNfUE9MTF9QRVJJT0RfVVMJCTEwMDAKICNkZWZpbmUgU1RBVFVTX1BPTExfVElNRU9VVF9VUwkJ MTAwMDAwCisjZGVmaW5lIE9WRVJIRUFUX0lOVF9QT0xMX0RFTEFZX01TCTEwMDAKIAogc3RydWN0 IGFybWFkYV90aGVybWFsX2RhdGE7CiAKQEAgLTc1LDcgKzg0LDExIEBAIHN0cnVjdCBhcm1hZGFf dGhlcm1hbF9wcml2IHsKIAkvKiBzZXJpYWxpemUgdGVtcGVyYXR1cmUgcmVhZHMvdXBkYXRlcyAq LwogCXN0cnVjdCBtdXRleCB1cGRhdGVfbG9jazsKIAlzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0 YSAqZGF0YTsKKwlzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqb3ZlcmhlYXRfc2Vuc29yOwor CWludCBpbnRlcnJ1cHRfc291cmNlOwogCWludCBjdXJyZW50X2NoYW5uZWw7CisJbG9uZyBjdXJy ZW50X3RocmVzaG9sZDsKKwlsb25nIGN1cnJlbnRfaHlzdGVyZXNpczsKIH07CiAKIHN0cnVjdCBh cm1hZGFfdGhlcm1hbF9kYXRhIHsKQEAgLTkzLDEyICsxMDYsMjAgQEAgc3RydWN0IGFybWFkYV90 aGVybWFsX2RhdGEgewogCS8qIFJlZ2lzdGVyIHNoaWZ0IGFuZCBtYXNrIHRvIGFjY2VzcyB0aGUg c2Vuc29yIHRlbXBlcmF0dXJlICovCiAJdW5zaWduZWQgaW50IHRlbXBfc2hpZnQ7CiAJdW5zaWdu ZWQgaW50IHRlbXBfbWFzazsKKwl1bnNpZ25lZCBpbnQgdGhyZXNoX3NoaWZ0OworCXVuc2lnbmVk IGludCBoeXN0X3NoaWZ0OworCXVuc2lnbmVkIGludCBoeXN0X21hc2s7CiAJdTMyIGlzX3ZhbGlk X2JpdDsKIAogCS8qIFN5c2NvbiBhY2Nlc3MgKi8KIAl1bnNpZ25lZCBpbnQgc3lzY29uX2NvbnRy b2wwX29mZjsKIAl1bnNpZ25lZCBpbnQgc3lzY29uX2NvbnRyb2wxX29mZjsKIAl1bnNpZ25lZCBp bnQgc3lzY29uX3N0YXR1c19vZmY7CisJdW5zaWduZWQgaW50IGRmeF9pcnFfY2F1c2Vfb2ZmOwor CXVuc2lnbmVkIGludCBkZnhfaXJxX21hc2tfb2ZmOworCXVuc2lnbmVkIGludCBkZnhfb3Zlcmhl YXRfaXJxOworCXVuc2lnbmVkIGludCBkZnhfc2VydmVyX2lycV9tYXNrX29mZjsKKwl1bnNpZ25l ZCBpbnQgZGZ4X3NlcnZlcl9pcnFfZW47CiAKIAkvKiBPbmUgc2Vuc29yIGlzIGluIHRoZSB0aGVy bWFsIElDLCB0aGUgb3RoZXJzIGFyZSBpbiB0aGUgQ1BVcyBpZiBhbnkgKi8KIAl1bnNpZ25lZCBp bnQgY3B1X25yOwpAQCAtMjcyLDYgKzI5Myw0MSBAQCBzdGF0aWMgYm9vbCBhcm1hZGFfaXNfdmFs aWQoc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKnByaXYpCiAJcmV0dXJuIHJlZyAmIHByaXYt PmRhdGEtPmlzX3ZhbGlkX2JpdDsKIH0KIAorc3RhdGljIHZvaWQgYXJtYWRhX2VuYWJsZV9vdmVy aGVhdF9pbnRlcnJ1cHQoc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKnByaXYpCit7CisJc3Ry dWN0IGFybWFkYV90aGVybWFsX2RhdGEgKmRhdGEgPSBwcml2LT5kYXRhOworCXUzMiByZWc7CisK KwkvKiBDbGVhciBERlggdGVtcGVyYXR1cmUgSVJRIGNhdXNlICovCisJcmVnbWFwX3JlYWQocHJp di0+c3lzY29uLCBkYXRhLT5kZnhfaXJxX2NhdXNlX29mZiwgJnJlZyk7CisKKwkvKiBFbmFibGUg REZYIFRlbXBlcmF0dXJlIElSUSAqLworCXJlZ21hcF9yZWFkKHByaXYtPnN5c2NvbiwgZGF0YS0+ ZGZ4X2lycV9tYXNrX29mZiwgJnJlZyk7CisJcmVnIHw9IGRhdGEtPmRmeF9vdmVyaGVhdF9pcnE7 CisJcmVnbWFwX3dyaXRlKHByaXYtPnN5c2NvbiwgZGF0YS0+ZGZ4X2lycV9tYXNrX29mZiwgcmVn KTsKKworCS8qIEVuYWJsZSBERlggc2VydmVyIElSUSAqLworCXJlZ21hcF9yZWFkKHByaXYtPnN5 c2NvbiwgZGF0YS0+ZGZ4X3NlcnZlcl9pcnFfbWFza19vZmYsICZyZWcpOworCXJlZyB8PSBkYXRh LT5kZnhfc2VydmVyX2lycV9lbjsKKwlyZWdtYXBfd3JpdGUocHJpdi0+c3lzY29uLCBkYXRhLT5k Znhfc2VydmVyX2lycV9tYXNrX29mZiwgcmVnKTsKKworCS8qIEVuYWJsZSBvdmVyaGVhdCBpbnRl cnJ1cHQgKi8KKwlyZWdtYXBfcmVhZChwcml2LT5zeXNjb24sIGRhdGEtPnN5c2Nvbl9jb250cm9s MV9vZmYsICZyZWcpOworCXJlZyB8PSBDT05UUk9MMV9UU0VOX0lOVF9FTjsKKwlyZWdtYXBfd3Jp dGUocHJpdi0+c3lzY29uLCBkYXRhLT5zeXNjb25fY29udHJvbDFfb2ZmLCByZWcpOworfQorCitz dGF0aWMgdm9pZCBfX21heWJlX3VudXNlZAorYXJtYWRhX2Rpc2FibGVfb3ZlcmhlYXRfaW50ZXJy dXB0KHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9wcml2ICpwcml2KQoreworCXN0cnVjdCBhcm1hZGFf dGhlcm1hbF9kYXRhICpkYXRhID0gcHJpdi0+ZGF0YTsKKwl1MzIgcmVnOworCisJcmVnbWFwX3Jl YWQocHJpdi0+c3lzY29uLCBkYXRhLT5zeXNjb25fY29udHJvbDFfb2ZmLCAmcmVnKTsKKwlyZWcg Jj0gfkNPTlRST0wxX1RTRU5fSU5UX0VOOworCXJlZ21hcF93cml0ZShwcml2LT5zeXNjb24sIGRh dGEtPnN5c2Nvbl9jb250cm9sMV9vZmYsIHJlZyk7Cit9CisKIC8qIFRoZXJlIGlzIGN1cnJlbnRs eSBubyBib2FyZCB3aXRoIG1vcmUgdGhhbiBvbmUgc2Vuc29yIHBlciBjaGFubmVsICovCiBzdGF0 aWMgaW50IGFybWFkYV9zZWxlY3RfY2hhbm5lbChzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfcHJpdiAq cHJpdiwgaW50IGNoYW5uZWwpCiB7CkBAIC0zODgsNiArNDQ0LDE2IEBAIHN0YXRpYyBpbnQgYXJt YWRhX2dldF90ZW1wKHZvaWQgKl9zZW5zb3IsIGludCAqdGVtcCkKIAogCS8qIERvIHRoZSBhY3R1 YWwgcmVhZGluZyAqLwogCXJldCA9IGFybWFkYV9yZWFkX3NlbnNvcihwcml2LCB0ZW1wKTsKKwlp ZiAocmV0KQorCQlnb3RvIHVubG9ja19tdXRleDsKKworCS8qCisJICogU2VsZWN0IGJhY2sgdGhl IGludGVycnVwdCBzb3VyY2UgY2hhbm5lbCBmcm9tIHdoaWNoIGEgcG90ZW50aWFsCisJICogY3Jp dGljYWwgdHJpcCBwb2ludCBoYXMgYmVlbiBzZXQuCisJICovCisJcmV0ID0gYXJtYWRhX3NlbGVj dF9jaGFubmVsKHByaXYsIHByaXYtPmludGVycnVwdF9zb3VyY2UpOworCWlmIChyZXQpCisJCWdv dG8gdW5sb2NrX211dGV4OwogCiB1bmxvY2tfbXV0ZXg6CiAJbXV0ZXhfdW5sb2NrKCZwcml2LT51 cGRhdGVfbG9jayk7CkBAIC0zOTksNiArNDY1LDEyMSBAQCBzdGF0aWMgc3RydWN0IHRoZXJtYWxf em9uZV9vZl9kZXZpY2Vfb3BzIG9mX29wcyA9IHsKIAkuZ2V0X3RlbXAgPSBhcm1hZGFfZ2V0X3Rl bXAsCiB9OwogCitzdGF0aWMgdW5zaWduZWQgaW50IGFybWFkYV9tY190b19yZWdfdGVtcChzdHJ1 Y3QgYXJtYWRhX3RoZXJtYWxfZGF0YSAqZGF0YSwKKwkJCQkJICB1bnNpZ25lZCBpbnQgdGVtcF9t YykKK3sKKwlzNjQgYiA9IGRhdGEtPmNvZWZfYjsKKwlzNjQgbSA9IGRhdGEtPmNvZWZfbTsKKwlz NjQgZGl2ID0gZGF0YS0+Y29lZl9kaXY7CisJdW5zaWduZWQgaW50IHNhbXBsZTsKKworCWlmIChk YXRhLT5pbnZlcnRlZCkKKwkJc2FtcGxlID0gZGl2X3M2NCgoKHRlbXBfbWMgKiBkaXYpICsgYiks IG0pOworCWVsc2UKKwkJc2FtcGxlID0gZGl2X3M2NCgoYiAtICh0ZW1wX21jICogZGl2KSksIG0p OworCisJcmV0dXJuIHNhbXBsZSAmIGRhdGEtPnRlbXBfbWFzazsKK30KKworc3RhdGljIHVuc2ln bmVkIGludCBhcm1hZGFfbWNfdG9fcmVnX2h5c3Qoc3RydWN0IGFybWFkYV90aGVybWFsX2RhdGEg KmRhdGEsCisJCQkJCSAgdW5zaWduZWQgaW50IGh5c3RfbWMpCit7CisJLyoKKwkgKiBUaGUgZG9j dW1lbnRhdGlvbiBzdGF0ZXM6CisJICogaGlnaC9sb3cgd2F0ZXJtYXJrID0gdGhyZXNob2xkICsv LSAwLjQ3NjEgKiAyXihoeXN0ZXJlc2lzICsgMikKKwkgKiB3aGljaCBpcyB0aGUgbWF0aGVtYXRp Y2FsIGRlcml2YXRpb24gZm9yOgorCSAqIDB4MCA8PT4gMS45wrBDLCAweDEgPD0+IDMuOMKwQywg MHgyIDw9PiA3LjbCsEMsIDB4MyA8PT4gMTUuMgorCSAqLworCXVuc2lnbmVkIGludCBoeXN0X2xl dmVsc19tY1tdID0gezE5MDAsIDM4MDAsIDc2MDAsIDE1MjAwfTsKKwlpbnQgaTsKKworCS8qCisJ ICogV2Ugd2lsbCBhbHdheXMgdGFrZSB0aGUgc21hbGxlc3QgcG9zc2libGUgaHlzdGVyZXNpcyB0 byBhdm9pZCByaXNraW5nCisJICogdGhlIGhhcmR3YXJlIGludGVncml0eSBieSBlbmxhcmdpbmcg dGhlIHRocmVzaG9sZCBieSArOMKwQyBpbiB0aGUKKwkgKiB3b3JzdCBjYXNlLgorCSAqLworCWZv ciAoaSA9IEFSUkFZX1NJWkUoaHlzdF9sZXZlbHNfbWMpIC0gMTsgaSA+IDA7IGktLSkKKwkJaWYg KGh5c3RfbWMgPj0gaHlzdF9sZXZlbHNfbWNbaV0pCisJCQlicmVhazsKKworCXJldHVybiBpICYg ZGF0YS0+aHlzdF9tYXNrOworfQorCitzdGF0aWMgdm9pZCBhcm1hZGFfc2V0X292ZXJoZWF0X3Ro cmVzaG9sZHMoc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKnByaXYsCisJCQkJCSAgIGludCB0 aHJlc2hfbWMsIGludCBoeXN0X21jKQoreworCXN0cnVjdCBhcm1hZGFfdGhlcm1hbF9kYXRhICpk YXRhID0gcHJpdi0+ZGF0YTsKKwl1bnNpZ25lZCBpbnQgdGhyZXNob2xkID0gYXJtYWRhX21jX3Rv X3JlZ190ZW1wKGRhdGEsIHRocmVzaF9tYyk7CisJdW5zaWduZWQgaW50IGh5c3RlcmVzaXMgPSBh cm1hZGFfbWNfdG9fcmVnX2h5c3QoZGF0YSwgaHlzdF9tYyk7CisJdTMyIGN0cmwxOworCisJcmVn bWFwX3JlYWQocHJpdi0+c3lzY29uLCBkYXRhLT5zeXNjb25fY29udHJvbDFfb2ZmLCAmY3RybDEp OworCisJLyogU2V0IFRocmVzaG9sZCAqLworCWlmICh0aHJlc2hfbWMgPj0gMCkgeworCQljdHJs MSAmPSB+KGRhdGEtPnRlbXBfbWFzayA8PCBkYXRhLT50aHJlc2hfc2hpZnQpOworCQljdHJsMSB8 PSB0aHJlc2hvbGQgPDwgZGF0YS0+dGhyZXNoX3NoaWZ0OworCQlwcml2LT5jdXJyZW50X3RocmVz aG9sZCA9IHRocmVzaF9tYzsKKwl9CisKKwkvKiBTZXQgSHlzdGVyZXNpcyAqLworCWlmIChoeXN0 X21jID49IDApIHsKKwkJY3RybDEgJj0gfihkYXRhLT5oeXN0X21hc2sgPDwgZGF0YS0+aHlzdF9z aGlmdCk7CisJCWN0cmwxIHw9IGh5c3RlcmVzaXMgPDwgZGF0YS0+aHlzdF9zaGlmdDsKKwkJcHJp di0+Y3VycmVudF9oeXN0ZXJlc2lzID0gaHlzdF9tYzsKKwl9CisKKwlyZWdtYXBfd3JpdGUocHJp di0+c3lzY29uLCBkYXRhLT5zeXNjb25fY29udHJvbDFfb2ZmLCBjdHJsMSk7Cit9CisKK3N0YXRp YyBpcnFyZXR1cm5fdCBhcm1hZGFfb3ZlcmhlYXRfaXNyKGludCBpcnEsIHZvaWQgKmJsb2IpCit7 CisJLyoKKwkgKiBEaXNhYmxlIHRoZSBJUlEgYW5kIGNvbnRpbnVlIGluIHRocmVhZCBjb250ZXh0 ICh0aGVybWFsIGNvcmUKKwkgKiBub3RpZmljYXRpb24gYW5kIHRlbXBlcmF0dXJlIG1vbml0b3Jp bmcpLgorCSAqLworCWRpc2FibGVfaXJxX25vc3luYyhpcnEpOworCisJcmV0dXJuIElSUV9XQUtF X1RIUkVBRDsKK30KKworc3RhdGljIGlycXJldHVybl90IGFybWFkYV9vdmVyaGVhdF9pc3JfdGhy ZWFkKGludCBpcnEsIHZvaWQgKmJsb2IpCit7CisJc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYg KnByaXYgPSAoc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKilibG9iOworCWludCBsb3dfdGhy ZXNob2xkID0gcHJpdi0+Y3VycmVudF90aHJlc2hvbGQgLSBwcml2LT5jdXJyZW50X2h5c3RlcmVz aXM7CisJaW50IHRlbXBlcmF0dXJlOworCXUzMiBkdW1teTsKKwlpbnQgcmV0OworCisJLyogTm90 aWZ5IHRoZSBjb3JlIGluIHRocmVhZCBjb250ZXh0ICovCisJdGhlcm1hbF96b25lX2RldmljZV91 cGRhdGUocHJpdi0+b3ZlcmhlYXRfc2Vuc29yLAorCQkJCSAgIFRIRVJNQUxfRVZFTlRfVU5TUEVD SUZJRUQpOworCisJLyoKKwkgKiBUaGUgb3ZlcmhlYXQgaW50ZXJydXB0IG11c3QgYmUgY2xlYXJl ZCBieSByZWFkaW5nIHRoZSBERlggaW50ZXJydXB0CisJICogY2F1c2UgX2FmdGVyXyB0aGUgdGVt cGVyYXR1cmUgaGFzIGZhbGxlbiBkb3duIHRvIHRoZSBsb3cgdGhyZXNob2xkLgorCSAqIE90aGVy d2lzZSBmdXR1cmUgaW50ZXJydXB0cyBtaWdodCBub3QgYmUgc2VydmVkLgorCSAqLworCWRvIHsK KwkJbXNsZWVwKE9WRVJIRUFUX0lOVF9QT0xMX0RFTEFZX01TKTsKKwkJbXV0ZXhfbG9jaygmcHJp di0+dXBkYXRlX2xvY2spOworCQlyZXQgPSBhcm1hZGFfcmVhZF9zZW5zb3IocHJpdiwgJnRlbXBl cmF0dXJlKTsKKwkJbXV0ZXhfdW5sb2NrKCZwcml2LT51cGRhdGVfbG9jayk7CisJCWlmIChyZXQp CisJCQlyZXR1cm4gcmV0OworCX0gd2hpbGUgKHRlbXBlcmF0dXJlID49IGxvd190aHJlc2hvbGQp OworCisJcmVnbWFwX3JlYWQocHJpdi0+c3lzY29uLCBwcml2LT5kYXRhLT5kZnhfaXJxX2NhdXNl X29mZiwgJmR1bW15KTsKKworCS8qIE5vdGlmeSB0aGUgdGhlcm1hbCBjb3JlIHRoYXQgdGhlIHRl bXBlcmF0dXJlIGlzIGFjY2VwdGFibGUgYWdhaW4gKi8KKwl0aGVybWFsX3pvbmVfZGV2aWNlX3Vw ZGF0ZShwcml2LT5vdmVyaGVhdF9zZW5zb3IsCisJCQkJICAgVEhFUk1BTF9FVkVOVF9VTlNQRUNJ RklFRCk7CisKKwllbmFibGVfaXJxKGlycSk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0YSBhcm1hZGF4cF9kYXRhID0g ewogCS5pbml0ID0gYXJtYWRheHBfaW5pdCwKIAkudGVtcF9zaGlmdCA9IDEwLApAQCAtNDU0LDYg KzYzNSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0YSBhcm1hZGFf YXA4MDZfZGF0YSA9IHsKIAkuaXNfdmFsaWRfYml0ID0gQklUKDE2KSwKIAkudGVtcF9zaGlmdCA9 IDAsCiAJLnRlbXBfbWFzayA9IDB4M2ZmLAorCS50aHJlc2hfc2hpZnQgPSAzLAorCS5oeXN0X3No aWZ0ID0gMTksCisJLmh5c3RfbWFzayA9IDB4MywKIAkuY29lZl9iID0gLTE1MDAwMExMLAogCS5j b2VmX20gPSA0MjNVTEwsCiAJLmNvZWZfZGl2ID0gMSwKQEAgLTQ2Miw2ICs2NDYsMTEgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9kYXRhIGFybWFkYV9hcDgwNl9kYXRhID0g ewogCS5zeXNjb25fY29udHJvbDBfb2ZmID0gMHg4NCwKIAkuc3lzY29uX2NvbnRyb2wxX29mZiA9 IDB4ODgsCiAJLnN5c2Nvbl9zdGF0dXNfb2ZmID0gMHg4QywKKwkuZGZ4X2lycV9jYXVzZV9vZmYg PSAweDEwOCwKKwkuZGZ4X2lycV9tYXNrX29mZiA9IDB4MTBDLAorCS5kZnhfb3ZlcmhlYXRfaXJx ID0gQklUKDIyKSwKKwkuZGZ4X3NlcnZlcl9pcnFfbWFza19vZmYgPSAweDEwNCwKKwkuZGZ4X3Nl cnZlcl9pcnFfZW4gPSBCSVQoMSksCiAJLmNwdV9uciA9IDQsCiB9OwogCkBAIC00NzAsNiArNjU5 LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9kYXRhIGFybWFkYV9jcDEx MF9kYXRhID0gewogCS5pc192YWxpZF9iaXQgPSBCSVQoMTApLAogCS50ZW1wX3NoaWZ0ID0gMCwK IAkudGVtcF9tYXNrID0gMHgzZmYsCisJLnRocmVzaF9zaGlmdCA9IDE2LAorCS5oeXN0X3NoaWZ0 ID0gMjYsCisJLmh5c3RfbWFzayA9IDB4MywKIAkuY29lZl9iID0gMTE3MjQ5OTEwMFVMTCwKIAku Y29lZl9tID0gMjAwMDA5NlVMTCwKIAkuY29lZl9kaXYgPSA0MjAxLApAQCAtNDc3LDYgKzY2OSwx MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybWFkYV90aGVybWFsX2RhdGEgYXJtYWRhX2NwMTEw X2RhdGEgPSB7CiAJLnN5c2Nvbl9jb250cm9sMF9vZmYgPSAweDcwLAogCS5zeXNjb25fY29udHJv bDFfb2ZmID0gMHg3NCwKIAkuc3lzY29uX3N0YXR1c19vZmYgPSAweDc4LAorCS5kZnhfaXJxX2Nh dXNlX29mZiA9IDB4MTA4LAorCS5kZnhfaXJxX21hc2tfb2ZmID0gMHgxMEMsCisJLmRmeF9vdmVy aGVhdF9pcnEgPSBCSVQoMjApLAorCS5kZnhfc2VydmVyX2lycV9tYXNrX29mZiA9IDB4MTA0LAor CS5kZnhfc2VydmVyX2lycV9lbiA9IEJJVCgxKSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIGFybWFkYV90aGVybWFsX2lkX3RhYmxlW10gPSB7CkBAIC01OTIsNiArNzg5 LDQ4IEBAIHN0YXRpYyB2b2lkIGFybWFkYV9zZXRfc2FuZV9uYW1lKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYsCiAJfSB3aGlsZSAoaW5zYW5lX2NoYXIpOwogfQogCisvKgorICogVGhlIElQ IGNhbiBtYW5hZ2UgdG8gdHJpZ2dlciBpbnRlcnJ1cHRzIG9uIG92ZXJoZWF0IHNpdHVhdGlvbiBm cm9tIGFsbCB0aGUKKyAqIHNlbnNvcnMuIEhvd2V2ZXIsIHRoZSBpbnRlcnJ1cHQgc291cmNlIGNo YW5nZXMgYWxvbmcgd2l0aCB0aGUgbGFzdCBzZWxlY3RlZAorICogc291cmNlIChpZS4gdGhlIGxh c3QgcmVhZCBzZW5zb3IpLCB3aGljaCBpcyBhbiBpbmNvbnNpc3RlbnQgYmVoYXZpb3IuIEF2b2lk CisgKiBwb3NzaWJsZSBnbGl0Y2hlcyBieSBhbHdheXMgc2VsZWN0aW5nIGJhY2sgb25seSBvbmUg Y2hhbm5lbCAoYXJiaXRyYXJpbHk6IHRoZQorICogZmlyc3QgaW4gdGhlIERUIHdoaWNoIGhhcyBh IGNyaXRpY2FsIHRyaXAgcG9pbnQpLiBXZSBhbHNvIGRpc2FibGUgc2Vuc29yCisgKiBzd2l0Y2gg ZHVyaW5nIG92ZXJoZWF0IHNpdHVhdGlvbnMuCisgKi8KK3N0YXRpYyBpbnQgYXJtYWRhX2NvbmZp Z3VyZV9vdmVyaGVhdF9pbnQoc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKnByaXYsCisJCQkJ CSBzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosCisJCQkJCSBpbnQgc2Vuc29yX2lkKQor eworCS8qIFJldHJpZXZlIHRoZSBjcml0aWNhbCB0cmlwIHBvaW50IHRvIGVuYWJsZSB0aGUgb3Zl cmhlYXQgaW50ZXJydXB0ICovCisJY29uc3Qgc3RydWN0IHRoZXJtYWxfdHJpcCAqdHJpcHMgPSBv Zl90aGVybWFsX2dldF90cmlwX3BvaW50cyh0eik7CisJaW50IHJldDsKKwlpbnQgaTsKKworCWlm ICghdHJpcHMpCisJCXJldHVybiAtRUlOVkFMOworCisJZm9yIChpID0gMDsgaSA8IG9mX3RoZXJt YWxfZ2V0X250cmlwcyh0eik7IGkrKykKKwkJaWYgKHRyaXBzW2ldLnR5cGUgPT0gVEhFUk1BTF9U UklQX0NSSVRJQ0FMKQorCQkJYnJlYWs7CisKKwlpZiAoaSA9PSBvZl90aGVybWFsX2dldF9udHJp cHModHopKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldCA9IGFybWFkYV9zZWxlY3RfY2hhbm5l bChwcml2LCBzZW5zb3JfaWQpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlhcm1hZGFf c2V0X292ZXJoZWF0X3RocmVzaG9sZHMocHJpdiwKKwkJCQkgICAgICAgdHJpcHNbaV0udGVtcGVy YXR1cmUsCisJCQkJICAgICAgIHRyaXBzW2ldLmh5c3RlcmVzaXMpOworCXByaXYtPm92ZXJoZWF0 X3NlbnNvciA9IHR6OworCXByaXYtPmludGVycnVwdF9zb3VyY2UgPSBzZW5zb3JfaWQ7CisKKwlh cm1hZGFfZW5hYmxlX292ZXJoZWF0X2ludGVycnVwdChwcml2KTsKKworCXJldHVybiAwOworfQor CiBzdGF0aWMgaW50IGFybWFkYV90aGVybWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiB7CiAJc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6OwpAQCAtNTk5LDcgKzgz OCw3IEBAIHN0YXRpYyBpbnQgYXJtYWRhX3RoZXJtYWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKIAlzdHJ1Y3QgYXJtYWRhX2RydmRhdGEgKmRydmRhdGE7CiAJY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCAqbWF0Y2g7CiAJc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKnBy aXY7Ci0JaW50IHNlbnNvcl9pZDsKKwlpbnQgc2Vuc29yX2lkLCBpcnE7CiAJaW50IHJldDsKIAog CW1hdGNoID0gb2ZfbWF0Y2hfZGV2aWNlKGFybWFkYV90aGVybWFsX2lkX3RhYmxlLCAmcGRldi0+ ZGV2KTsKQEAgLTY2OSw2ICs5MDgsMjMgQEAgc3RhdGljIGludCBhcm1hZGFfdGhlcm1hbF9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWRydmRhdGEtPmRhdGEucHJpdiA9IHBy aXY7CiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZHJ2ZGF0YSk7CiAKKwlpcnEgPSBwbGF0 Zm9ybV9nZXRfaXJxKHBkZXYsIDApOworCWlmIChpcnEgPT0gLUVQUk9CRV9ERUZFUikKKwkJcmV0 dXJuIGlycTsKKworCS8qIFRoZSBvdmVyaGVhdCBpbnRlcnJ1cHQgZmVhdHVyZSBpcyBub3QgbWFu ZGF0b3J5ICovCisJaWYgKGlycSA+PSAwKSB7CisJCXJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRl ZF9pcnEoJnBkZXYtPmRldiwgaXJxLAorCQkJCQkJYXJtYWRhX292ZXJoZWF0X2lzciwKKwkJCQkJ CWFybWFkYV9vdmVyaGVhdF9pc3JfdGhyZWFkLAorCQkJCQkJMCwgTlVMTCwgcHJpdik7CisJCWlm IChyZXQpIHsKKwkJCWRldl9lcnIoJnBkZXYtPmRldiwgIkNhbm5vdCByZXF1ZXN0IHRocmVhZGVk IElSUSAlZFxuIiwKKwkJCQlpcnEpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKwogCS8qCiAJ ICogVGhlcmUgaXMgb25lIGNoYW5uZWwgZm9yIHRoZSBJQyBhbmQgb25lIHBlciBDUFUgKGlmIGFu eSksIGVhY2gKIAkgKiBjaGFubmVsIGhhcyBvbmUgc2Vuc29yLgpAQCAtNjkyLDggKzk0OCwyMCBA QCBzdGF0aWMgaW50IGFybWFkYV90aGVybWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJCQlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIHNlbnNvcik7CiAJCQljb250aW51ZTsK IAkJfQorCisJCS8qCisJCSAqIFRoZSBmaXJzdCBjaGFubmVsIHRoYXQgaGFzIGEgY3JpdGljYWwg dHJpcCBwb2ludCByZWdpc3RlcmVkCisJCSAqIGluIHRoZSBEVCB3aWxsIHNlcnZlIGFzIGludGVy cnVwdCBzb3VyY2UuIE90aGVycyBwb3NzaWJsZQorCQkgKiBjcml0aWNhbCB0cmlwIHBvaW50cyB3 aWxsIHNpbXBseSBiZSBpZ25vcmVkIGJ5IHRoZSBkcml2ZXIuCisJCSAqLworCQlpZiAoaXJxID49 IDAgJiYgIXByaXYtPm92ZXJoZWF0X3NlbnNvcikKKwkJCWFybWFkYV9jb25maWd1cmVfb3Zlcmhl YXRfaW50KHByaXYsIHR6LCBzZW5zb3ItPmlkKTsKIAl9CiAKKwkvKiBKdXN0IGNvbXBsYWluIGlm IG5vIG92ZXJoZWF0IGludGVycnVwdCB3YXMgc2V0IHVwICovCisJaWYgKCFwcml2LT5vdmVyaGVh dF9zZW5zb3IpCisJCWRldl93YXJuKCZwZGV2LT5kZXYsICJPdmVyaGVhdCBpbnRlcnJ1cHQgbm90 IGF2YWlsYWJsZVxuIik7CisKIAlyZXR1cm4gMDsKIH0KIAotLSAKMi4xOS4xCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=