From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Peres Subject: [PATCH v3] drm/nouveau: add a LED driver for the NVIDIA logo Date: Thu, 25 Aug 2016 03:48:42 +0300 Message-ID: <20160825004842.4184-1-martin.peres@free.fr> References: <1462319465-29090-1-git-send-email-martin.peres@free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1462319465-29090-1-git-send-email-martin.peres-GANU6spQydw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: nouveau.vger.kernel.org V2UgcmVjZWl2ZWQgYSBkb25hdGlvbiBvZiBhIFRpdGFuIHdoaWNoIGhhcyB0aGlzIHVzZWxlc3Mg ZmVhdHVyZQphbGxvd2luZyB1c2VycyB0byBjb250cm9sIHRoZSBicmlnaHRuZXNzIG9mIHRoZSBM RUQgYmVoaW5kIHRoZQpsb2dvIG9mIE5WSURJQS4gSW4gdGhlIHRydWUgc3Bpcml0IG9mIG9wZW4g c291cmNlLCBsZXQncyBleHBvc2UKdGhhdCB0byB0aGUgdXNlcnMgb2YgdmVyeSBleHBlbnNpdmUg Y2FyZHMhCgpUaGlzIHBhdGNoIGhvb2tzIHVwIHRoaXMgTEVEL1BXTSB0byB0aGUgTEVEIHN1YnN5 c3RlbSB3aGljaCBhbGxvd3MKYmxpbmtpbmcgaXQgaW4gc3luYyB3aXRoIGNwdS9kaXNrL25ldHdv cmsvd2hhdGV2ZXIgYWN0aXZpdHkgKGhlYXJ0YmVhdAppcyBxdWl0ZSBuaWNlISkuIFVzZXJzIG1h eSBhbHNvIGltcGxlbWVudCBzb21lIGJyZWF0aGluZyBlZmZlY3Qgb3IKbW9yc2UgY29kZSBzdXBw b3J0IGluIHRoZSB1c2Vyc3BhY2UgaWYgdGhleSBmZWVsIGxpa2UgaXQuCgp2MjoKIC0gc3Vycm91 bmQgdGhlIHVzZSBvZiB0aGUgTEVEIGZyYW1ld29yayB3aXRoIGlmZGVmIENPTkZJR19MRURTX0NM QVNTCgp2MzoKIC0gYXZvaWQgdXNpbmcgaWZkZWZzIGV2ZXJ5d2hlcmUsIGZvbGxvdyB0aGUgcmVj b21tZW5kYXRpb25zIG9mCiAgIC9kb2MvRG9jdW1lbnRhdGlvbi9Db2RpbmdTdHlsZS4gU3VnZ2Vz dGVkIGJ5IEVtaWwgVmVsaWtvdi4KClJldmlld2VkLWJ5OiBLYXJvbCBIZXJic3QgPGthcm9saGVy YnN0QGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFydGluIFBlcmVzIDxtYXJ0aW4ucGVyZXNA ZnJlZS5mcj4KLS0tCiBkcm0vbm91dmVhdS9LYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIGRybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJkZXYvYmlvcy9ncGlvLmggfCAg IDEgKwogZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYyAgICAgICAgICAgICAgICAgICB8ICAgNyAr KwogZHJtL25vdXZlYXUvbm91dmVhdV9kcnYuaCAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBk cm0vbm91dmVhdS9ub3V2ZWF1X2xlZC5jICAgICAgICAgICAgICAgICAgIHwgMTQ4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysKIGRybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmggICAgICAgICAg ICAgICAgICAgfCAgNTAgKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcm0vbm91dmVhdS9ub3V2ZWF1X2xlZC5oCgpkaWZmIC0tZ2l0IGEvZHJt L25vdXZlYXUvS2J1aWxkIGIvZHJtL25vdXZlYXUvS2J1aWxkCmluZGV4IDI1MjdiZjQuLjMxMmJj YTkgMTAwNjQ0Ci0tLSBhL2RybS9ub3V2ZWF1L0tidWlsZAorKysgYi9kcm0vbm91dmVhdS9LYnVp bGQKQEAgLTIyLDYgKzIyLDcgQEAgbm91dmVhdS0kKENPTkZJR19ERUJVR19GUykgKz0gbm91dmVh dV9kZWJ1Z2ZzLm8KIG5vdXZlYXUteSArPSBub3V2ZWF1X2RybS5vCiBub3V2ZWF1LXkgKz0gbm91 dmVhdV9od21vbi5vCiBub3V2ZWF1LSQoQ09ORklHX0NPTVBBVCkgKz0gbm91dmVhdV9pb2MzMi5v Citub3V2ZWF1LXkgKz0gbm91dmVhdV9sZWQubwogbm91dmVhdS15ICs9IG5vdXZlYXVfbnZpZi5v CiBub3V2ZWF1LSQoQ09ORklHX05PVVZFQVVfUExBVEZPUk1fRFJJVkVSKSArPSBub3V2ZWF1X3Bs YXRmb3JtLm8KIG5vdXZlYXUteSArPSBub3V2ZWF1X3VzaWYubyAjIHVzZXJzcGFjZSA8LT4gbnZp ZgpkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL3N1YmRldi9iaW9zL2dwaW8u aCBiL2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJkZXYvYmlvcy9ncGlvLmgKaW5kZXggYTQ3 ZDQ2ZC4uYjdhNTRlNiAxMDA2NDQKLS0tIGEvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL3N1YmRl di9iaW9zL2dwaW8uaAorKysgYi9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L2Jpb3Mv Z3Bpby5oCkBAIC02LDYgKzYsNyBAQCBlbnVtIGRjYl9ncGlvX2Z1bmNfbmFtZSB7CiAJRENCX0dQ SU9fVFZEQUMxID0gMHgyZCwKIAlEQ0JfR1BJT19GQU4gPSAweDA5LAogCURDQl9HUElPX0ZBTl9T RU5TRSA9IDB4M2QsCisJRENCX0dQSU9fTE9HT19MRURfUFdNID0gMHg4NCwKIAlEQ0JfR1BJT19V TlVTRUQgPSAweGZmLAogCURDQl9HUElPX1ZJRDAgPSAweDA0LAogCURDQl9HUElPX1ZJRDEgPSAw eDA1LApkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYyBiL2RybS9ub3V2ZWF1 L25vdXZlYXVfZHJtLmMKaW5kZXggNjZjMTI4MC4uMGYxNjY1MiAxMDA2NDQKLS0tIGEvZHJtL25v dXZlYXUvbm91dmVhdV9kcm0uYworKysgYi9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jCkBAIC00 Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAibm91dmVhdV90dG0uaCIKICNpbmNsdWRlICJub3V2ZWF1 X2dlbS5oIgogI2luY2x1ZGUgIm5vdXZlYXVfdmdhLmgiCisjaW5jbHVkZSAibm91dmVhdV9sZWQu aCIKICNpbmNsdWRlICJub3V2ZWF1X2h3bW9uLmgiCiAjaW5jbHVkZSAibm91dmVhdV9hY3BpLmgi CiAjaW5jbHVkZSAibm91dmVhdV9iaW9zLmgiCkBAIC00NzUsNiArNDc2LDcgQEAgbm91dmVhdV9k cm1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQogCW5v dXZlYXVfaHdtb25faW5pdChkZXYpOwogCW5vdXZlYXVfYWNjZWxfaW5pdChkcm0pOwogCW5vdXZl YXVfZmJjb25faW5pdChkZXYpOworCW5vdXZlYXVfbGVkX2luaXQoZGV2KTsKIAogCWlmIChub3V2 ZWF1X3J1bnRpbWVfcG0gIT0gMCkgewogCQlwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZChkZXYt PmRldik7CkBAIC01MTAsNiArNTEyLDcgQEAgbm91dmVhdV9kcm1fdW5sb2FkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJCXBtX3J1bnRpbWVfZm9yYmlkKGRldi0+ZGV2KTsKIAl9CiAKKwlub3V2 ZWF1X2xlZF9maW5pKGRldik7CiAJbm91dmVhdV9mYmNvbl9maW5pKGRldik7CiAJbm91dmVhdV9h Y2NlbF9maW5pKGRybSk7CiAJbm91dmVhdV9od21vbl9maW5pKGRldik7CkBAIC01NjEsNiArNTY0 LDggQEAgbm91dmVhdV9kb19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgcnVu dGltZSkKIAlzdHJ1Y3Qgbm91dmVhdV9jbGkgKmNsaTsKIAlpbnQgcmV0OwogCisJbm91dmVhdV9s ZWRfc3VzcGVuZChkZXYpOworCiAJaWYgKGRldi0+bW9kZV9jb25maWcubnVtX2NydGMpIHsKIAkJ TlZfSU5GTyhkcm0sICJzdXNwZW5kaW5nIGNvbnNvbGUuLi5cbiIpOwogCQlub3V2ZWF1X2ZiY29u X3NldF9zdXNwZW5kKGRldiwgMSk7CkBAIC02NDksNiArNjU0LDggQEAgbm91dmVhdV9kb19yZXN1 bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBydW50aW1lKQogCQlub3V2ZWF1X2ZiY29u X3NldF9zdXNwZW5kKGRldiwgMCk7CiAJfQogCisJbm91dmVhdV9sZWRfcmVzdW1lKGRldik7CisK IAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvbm91dmVhdV9kcnYuaCBi L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJ2LmgKaW5kZXggODIyYTAyMS4uYzBlMmIzMiAxMDA2NDQK LS0tIGEvZHJtL25vdXZlYXUvbm91dmVhdV9kcnYuaAorKysgYi9kcm0vbm91dmVhdS9ub3V2ZWF1 X2Rydi5oCkBAIC0xNjYsNiArMTY2LDkgQEAgc3RydWN0IG5vdXZlYXVfZHJtIHsKIAlzdHJ1Y3Qg bm91dmVhdV9od21vbiAqaHdtb247CiAJc3RydWN0IG5vdXZlYXVfZGVidWdmcyAqZGVidWdmczsK IAorCS8qIGxlZCBtYW5hZ2VtZW50ICovCisJc3RydWN0IG5vdXZlYXVfbGVkICpsZWQ7CisKIAkv KiBkaXNwbGF5IHBvd2VyIHJlZmVyZW5jZSAqLwogCWJvb2wgaGF2ZV9kaXNwX3Bvd2VyX3JlZjsK IApkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvbm91dmVhdV9sZWQuYyBiL2RybS9ub3V2ZWF1L25v dXZlYXVfbGVkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI0YTljNgot LS0gL2Rldi9udWxsCisrKyBiL2RybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmMKQEAgLTAsMCArMSwx NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWFydGluIFBlcmVzCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nCisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlv biB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCisgKiBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsCisgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyAqIElOIE5P IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIoUykgQU5EL09SIElUUyBTVVBQTElFUlMg QkUKKyAqIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04KKyAqIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorICogV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICov CisKKy8qCisgKiBBdXRob3JzOgorICogIE1hcnRpbiBQZXJlcyA8bWFydGluLnBlcmVzQGZyZWUu ZnI+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KKworI2luY2x1ZGUgIm5vdXZlYXVf bGVkLmgiCisjaW5jbHVkZSA8bnZrbS9zdWJkZXYvZ3Bpby5oPgorCisvKiBkZWZpbmUgdGhlIGxl ZCBzeW1ib2xzIGlmIHRoZSBjbGFzcyBpcyBub3QgYXZhaWxhYmxlICovCisjaWYgIUlTX0VOQUJM RUQoQ09ORklHX0xFRFNfQ0xBU1MpCitpbnQgbGVkX2NsYXNzZGV2X3JlZ2lzdGVyKHN0cnVjdCBk ZXZpY2UgKnBhcmVudCwgc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYpCit7IHJldHVybiAw OyB9Owordm9pZCBsZWRfY2xhc3NkZXZfdW5yZWdpc3RlcihzdHJ1Y3QgbGVkX2NsYXNzZGV2ICps ZWRfY2RldikgeyByZXR1cm47IH07Cit2b2lkIGxlZF9jbGFzc2Rldl9zdXNwZW5kKHN0cnVjdCBs ZWRfY2xhc3NkZXYgKmxlZF9jZGV2KSB7IHJldHVybjsgfTsKK3ZvaWQgbGVkX2NsYXNzZGV2X3Jl c3VtZShzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldikgeyByZXR1cm47IH07CisjZW5kaWYg LyogIUlTX0VOQUJMRUQoQ09ORklHX0xFRFNfQ0xBU1MpICovCisKK3N0YXRpYyBlbnVtIGxlZF9i cmlnaHRuZXNzCitub3V2ZWF1X2xlZF9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgbGVkX2NsYXNzZGV2 ICpsZWQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBjb250YWluZXJfb2YobGVk LCBzdHJ1Y3Qgbm91dmVhdV9sZWQsIGxlZCktPmRldjsKKwlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRy bSA9IG5vdXZlYXVfZHJtKGRybV9kZXYpOworCXN0cnVjdCBudmlmX29iamVjdCAqZGV2aWNlID0g JmRybS0+ZGV2aWNlLm9iamVjdDsKKwl1MzIgZGl2LCBkdXR5OworCisJZGl2ID0gIG52aWZfcmQz MihkZXZpY2UsIDB4NjFjODgwKSAmIDB4MDBmZmZmZmY7CisJZHV0eSA9IG52aWZfcmQzMihkZXZp Y2UsIDB4NjFjODg0KSAmIDB4MDBmZmZmZmY7CisKKwlyZXR1cm4gZHV0eSAqIExFRF9GVUxMIC8g ZGl2OworfQorCitzdGF0aWMgdm9pZAorbm91dmVhdV9sZWRfc2V0X2JyaWdodG5lc3Moc3RydWN0 IGxlZF9jbGFzc2RldiAqbGVkLCBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKQoreworCXN0cnVj dCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gY29udGFpbmVyX29mKGxlZCwgc3RydWN0IG5vdXZlYXVf bGVkLCBsZWQpLT5kZXY7CisJc3RydWN0IG5vdXZlYXVfZHJtICpkcm0gPSBub3V2ZWF1X2RybShk cm1fZGV2KTsKKwlzdHJ1Y3QgbnZpZl9vYmplY3QgKmRldmljZSA9ICZkcm0tPmRldmljZS5vYmpl Y3Q7CisKKwl1MzIgaW5wdXRfY2xrID0gMjdlNjsgLyogUERJU1BMQVkuU09SWzFdLlBXTSBpcyBj b25uZWN0ZWQgdG8gdGhlIGNyeXN0YWwgKi8KKwl1MzIgZnJlcSA9IDEwMDsgLyogdGhpcyBpcyB3 aGF0IG52aWRpYSB1c2VzIGFuZCBpdCBzaG91bGQgYmUgZ29vZC1lbm91Z2ggKi8KKwl1MzIgZGl2 LCBkdXR5OworCisJZGl2ID0gaW5wdXRfY2xrIC8gZnJlcTsKKwlkdXR5ID0gdmFsdWUgKiBkaXYg LyBMRURfRlVMTDsKKworCS8qIGZvciBub3csIHRoaXMgaXMgc2FmZSB0byBkaXJlY3RseSBwb2tl IHRob3NlIHJlZ2lzdGVycyBiZWNhdXNlOgorCSAqICAtIEE6IG52aWRpYSBuZXZlciBwdXRzIHRo ZSBsb2dvIGxlZCB0byBhbnkgb3RoZXIgUFdNIGNvbnRyb2xlcgorCSAqICAgICAgIHRoYW4gUERJ U1BMQVkuU09SWzFdLlBXTS4KKwkgKiAgLSBCOiBub3V2ZWF1IGRvZXMgbm90IHRvdWNoIHRoZXNl IHJlZ2lzdGVycyBhbnl3aGVyZSBlbHNlCisJICovCisJbnZpZl93cjMyKGRldmljZSwgMHg2MWM4 ODAsIGRpdik7CisJbnZpZl93cjMyKGRldmljZSwgMHg2MWM4ODQsIDB4YzAwMDAwMDAgfCBkdXR5 KTsKK30KKworCitpbnQKK25vdXZlYXVfbGVkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK K3sKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfTEVEU19DTEFTUykpIHsKKwkJc3RydWN0IG5vdXZl YXVfZHJtICpkcm0gPSBub3V2ZWF1X2RybShkZXYpOworCQlzdHJ1Y3QgbnZrbV9ncGlvICpncGlv ID0gbnZ4eF9ncGlvKCZkcm0tPmRldmljZSk7CisJCXN0cnVjdCBkY2JfZ3Bpb19mdW5jIGxvZ29f bGVkOworCQlpbnQgcmV0OworCisJCS8qIGNoZWNrIHRoYXQgdGhlcmUgaXMgYSBHUElPIGNvbnRy b2xsaW5nIHRoZSBsb2dvIExFRCAqLworCQlpZiAobnZrbV9ncGlvX2ZpbmQoZ3BpbywgMCwgRENC X0dQSU9fTE9HT19MRURfUFdNLCAweGZmLCAmbG9nb19sZWQpKQorCQkJcmV0dXJuIDA7CisKKwkJ ZHJtLT5sZWQgPSBremFsbG9jKHNpemVvZigqZHJtLT5sZWQpLCBHRlBfS0VSTkVMKTsKKwkJaWYg KCFkcm0tPmxlZCkKKwkJCXJldHVybiAtRU5PTUVNOworCQlkcm0tPmxlZC0+ZGV2ID0gZGV2Owor CisJCWRybS0+bGVkLT5sZWQubmFtZSA9ICJudmlkaWEtbG9nbyI7CisJCWRybS0+bGVkLT5sZWQu bWF4X2JyaWdodG5lc3MgPSAyNTU7CisJCWRybS0+bGVkLT5sZWQuYnJpZ2h0bmVzc19nZXQgPSBu b3V2ZWF1X2xlZF9nZXRfYnJpZ2h0bmVzczsKKwkJZHJtLT5sZWQtPmxlZC5icmlnaHRuZXNzX3Nl dCA9IG5vdXZlYXVfbGVkX3NldF9icmlnaHRuZXNzOworCisJCXJldCA9IGxlZF9jbGFzc2Rldl9y ZWdpc3RlcihkZXYtPmRldiwgJmRybS0+bGVkLT5sZWQpOworCQlpZiAocmV0KSB7CisJCQlrZnJl ZShkcm0tPmxlZCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisK K3ZvaWQKK25vdXZlYXVfbGVkX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlp ZiAoSVNfRU5BQkxFRChDT05GSUdfTEVEU19DTEFTUykpIHsKKwkJc3RydWN0IG5vdXZlYXVfZHJt ICpkcm0gPSBub3V2ZWF1X2RybShkZXYpOworCisJCWxlZF9jbGFzc2Rldl9zdXNwZW5kKCZkcm0t PmxlZC0+bGVkKTsKKwl9Cit9CisKK3ZvaWQKK25vdXZlYXVfbGVkX3Jlc3VtZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQoreworCWlmIChJU19FTkFCTEVEKENPTkZJR19MRURTX0NMQVNTKSkgewor CQlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSA9IG5vdXZlYXVfZHJtKGRldik7CisKKwkJbGVkX2Ns YXNzZGV2X3Jlc3VtZSgmZHJtLT5sZWQtPmxlZCk7CisJfQorfQorCit2b2lkCitub3V2ZWF1X2xl ZF9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJaWYgKElTX0VOQUJMRUQoQ09ORklH X0xFRFNfQ0xBU1MpKSB7CisJCXN0cnVjdCBub3V2ZWF1X2RybSAqZHJtID0gbm91dmVhdV9kcm0o ZGV2KTsKKworCQlpZiAoZHJtLT5sZWQpIHsKKwkJCWxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKCZk cm0tPmxlZC0+bGVkKTsKKwkJCWtmcmVlKGRybS0+bGVkKTsKKwkJCWRybS0+bGVkID0gTlVMTDsK KwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2RybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmggYi9kcm0v bm91dmVhdS9ub3V2ZWF1X2xlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmExNDcyM2EKLS0tIC9kZXYvbnVsbAorKysgYi9kcm0vbm91dmVhdS9ub3V2ZWF1X2xlZC5oCkBA IC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBNYXJ0aW4gUGVyZXMKKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICog T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBNYXJ0aW4gUGVyZXMgPG1hcnRpbi5wZXJlc0BmcmVl LmZyPgorICovCisKKyNpZm5kZWYgX19OT1VWRUFVX0xFRF9IX18KKyNkZWZpbmUgX19OT1VWRUFV X0xFRF9IX18KKworI2luY2x1ZGUgIm5vdXZlYXVfZHJ2LmgiCisKK3N0cnVjdCBsZWRfY2xhc3Nk ZXY7CisKK3N0cnVjdCBub3V2ZWF1X2xlZCB7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKKwor CXN0cnVjdCBsZWRfY2xhc3NkZXYgbGVkOworfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3Qgbm91 dmVhdV9sZWQgKgorbm91dmVhdV9sZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlyZXR1 cm4gbm91dmVhdV9kcm0oZGV2KS0+bGVkOworfQorCisvKiBub3V2ZWF1X2xlZC5jICovCitpbnQg IG5vdXZlYXVfbGVkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIG5vdXZlYXVf bGVkX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIG5vdXZlYXVfbGVkX3Jl c3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgbm91dmVhdV9sZWRfZmluaShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsKKworI2VuZGlmCi0tIAoyLjguMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QKTm91 dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cg==