From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Peres Subject: [PATCH v2] drm/nouveau: add a LED driver for the NVIDIA logo Date: Tue, 23 Aug 2016 02:42:57 +0300 Message-ID: <20160822234257.6523-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 djI6CiAtIGd1YXJkIExFRCBmcmFtZXdvcmsgY2FsbHMgd2l0aCBpZmRlZiBDT05GSUdfTEVEU19D TEFTUwoKU2lnbmVkLW9mZi1ieTogTWFydGluIFBlcmVzIDxtYXJ0aW4ucGVyZXNAZnJlZS5mcj4K LS0tCgpGb3IgcmVhbCB0aGlzIHRpbWUhIFNvcnJ5IGZvciB0aGUgbm9pc2UKCiBkcm0vbm91dmVh dS9LYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRybS9ub3V2ZWF1L2lu Y2x1ZGUvbnZrbS9zdWJkZXYvYmlvcy9ncGlvLmggfCAgIDEgKwogZHJtL25vdXZlYXUvbm91dmVh dV9kcm0uYyAgICAgICAgICAgICAgICAgICB8ICAgNyArKwogZHJtL25vdXZlYXUvbm91dmVhdV9k cnYuaCAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBkcm0vbm91dmVhdS9ub3V2ZWF1X2xlZC5j ICAgICAgICAgICAgICAgICAgIHwgMTQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRy bS9ub3V2ZWF1L25vdXZlYXVfbGVkLmggICAgICAgICAgICAgICAgICAgfCAgNDggKysrKysrKysr KwogNiBmaWxlcyBjaGFuZ2VkLCAyMDAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcm0vbm91dmVh dS9ub3V2ZWF1X2xlZC5oCgpkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvS2J1aWxkIGIvZHJtL25v dXZlYXUvS2J1aWxkCmluZGV4IDI1MjdiZjQuLjMxMmJjYTkgMTAwNjQ0Ci0tLSBhL2RybS9ub3V2 ZWF1L0tidWlsZAorKysgYi9kcm0vbm91dmVhdS9LYnVpbGQKQEAgLTIyLDYgKzIyLDcgQEAgbm91 dmVhdS0kKENPTkZJR19ERUJVR19GUykgKz0gbm91dmVhdV9kZWJ1Z2ZzLm8KIG5vdXZlYXUteSAr PSBub3V2ZWF1X2RybS5vCiBub3V2ZWF1LXkgKz0gbm91dmVhdV9od21vbi5vCiBub3V2ZWF1LSQo Q09ORklHX0NPTVBBVCkgKz0gbm91dmVhdV9pb2MzMi5vCitub3V2ZWF1LXkgKz0gbm91dmVhdV9s ZWQubwogbm91dmVhdS15ICs9IG5vdXZlYXVfbnZpZi5vCiBub3V2ZWF1LSQoQ09ORklHX05PVVZF QVVfUExBVEZPUk1fRFJJVkVSKSArPSBub3V2ZWF1X3BsYXRmb3JtLm8KIG5vdXZlYXUteSArPSBu b3V2ZWF1X3VzaWYubyAjIHVzZXJzcGFjZSA8LT4gbnZpZgpkaWZmIC0tZ2l0IGEvZHJtL25vdXZl YXUvaW5jbHVkZS9udmttL3N1YmRldi9iaW9zL2dwaW8uaCBiL2RybS9ub3V2ZWF1L2luY2x1ZGUv bnZrbS9zdWJkZXYvYmlvcy9ncGlvLmgKaW5kZXggYTQ3ZDQ2ZC4uYjdhNTRlNiAxMDA2NDQKLS0t IGEvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL3N1YmRldi9iaW9zL2dwaW8uaAorKysgYi9kcm0v bm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L2Jpb3MvZ3Bpby5oCkBAIC02LDYgKzYsNyBAQCBl bnVtIGRjYl9ncGlvX2Z1bmNfbmFtZSB7CiAJRENCX0dQSU9fVFZEQUMxID0gMHgyZCwKIAlEQ0Jf R1BJT19GQU4gPSAweDA5LAogCURDQl9HUElPX0ZBTl9TRU5TRSA9IDB4M2QsCisJRENCX0dQSU9f TE9HT19MRURfUFdNID0gMHg4NCwKIAlEQ0JfR1BJT19VTlVTRUQgPSAweGZmLAogCURDQl9HUElP X1ZJRDAgPSAweDA0LAogCURDQl9HUElPX1ZJRDEgPSAweDA1LApkaWZmIC0tZ2l0IGEvZHJtL25v dXZlYXUvbm91dmVhdV9kcm0uYyBiL2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMKaW5kZXggNjZj MTI4MC4uMGYxNjY1MiAxMDA2NDQKLS0tIGEvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYworKysg Yi9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAi bm91dmVhdV90dG0uaCIKICNpbmNsdWRlICJub3V2ZWF1X2dlbS5oIgogI2luY2x1ZGUgIm5vdXZl YXVfdmdhLmgiCisjaW5jbHVkZSAibm91dmVhdV9sZWQuaCIKICNpbmNsdWRlICJub3V2ZWF1X2h3 bW9uLmgiCiAjaW5jbHVkZSAibm91dmVhdV9hY3BpLmgiCiAjaW5jbHVkZSAibm91dmVhdV9iaW9z LmgiCkBAIC00NzUsNiArNDc2LDcgQEAgbm91dmVhdV9kcm1fbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQogCW5vdXZlYXVfaHdtb25faW5pdChkZXYpOwog CW5vdXZlYXVfYWNjZWxfaW5pdChkcm0pOwogCW5vdXZlYXVfZmJjb25faW5pdChkZXYpOworCW5v dXZlYXVfbGVkX2luaXQoZGV2KTsKIAogCWlmIChub3V2ZWF1X3J1bnRpbWVfcG0gIT0gMCkgewog CQlwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZChkZXYtPmRldik7CkBAIC01MTAsNiArNTEyLDcg QEAgbm91dmVhdV9kcm1fdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXBtX3J1bnRp bWVfZm9yYmlkKGRldi0+ZGV2KTsKIAl9CiAKKwlub3V2ZWF1X2xlZF9maW5pKGRldik7CiAJbm91 dmVhdV9mYmNvbl9maW5pKGRldik7CiAJbm91dmVhdV9hY2NlbF9maW5pKGRybSk7CiAJbm91dmVh dV9od21vbl9maW5pKGRldik7CkBAIC01NjEsNiArNTY0LDggQEAgbm91dmVhdV9kb19zdXNwZW5k KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgcnVudGltZSkKIAlzdHJ1Y3Qgbm91dmVhdV9j bGkgKmNsaTsKIAlpbnQgcmV0OwogCisJbm91dmVhdV9sZWRfc3VzcGVuZChkZXYpOworCiAJaWYg KGRldi0+bW9kZV9jb25maWcubnVtX2NydGMpIHsKIAkJTlZfSU5GTyhkcm0sICJzdXNwZW5kaW5n IGNvbnNvbGUuLi5cbiIpOwogCQlub3V2ZWF1X2ZiY29uX3NldF9zdXNwZW5kKGRldiwgMSk7CkBA IC02NDksNiArNjU0LDggQEAgbm91dmVhdV9kb19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgYm9vbCBydW50aW1lKQogCQlub3V2ZWF1X2ZiY29uX3NldF9zdXNwZW5kKGRldiwgMCk7CiAJ fQogCisJbm91dmVhdV9sZWRfcmVzdW1lKGRldik7CisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0t Z2l0IGEvZHJtL25vdXZlYXUvbm91dmVhdV9kcnYuaCBiL2RybS9ub3V2ZWF1L25vdXZlYXVfZHJ2 LmgKaW5kZXggODIyYTAyMS4uYzBlMmIzMiAxMDA2NDQKLS0tIGEvZHJtL25vdXZlYXUvbm91dmVh dV9kcnYuaAorKysgYi9kcm0vbm91dmVhdS9ub3V2ZWF1X2Rydi5oCkBAIC0xNjYsNiArMTY2LDkg QEAgc3RydWN0IG5vdXZlYXVfZHJtIHsKIAlzdHJ1Y3Qgbm91dmVhdV9od21vbiAqaHdtb247CiAJ c3RydWN0IG5vdXZlYXVfZGVidWdmcyAqZGVidWdmczsKIAorCS8qIGxlZCBtYW5hZ2VtZW50ICov CisJc3RydWN0IG5vdXZlYXVfbGVkICpsZWQ7CisKIAkvKiBkaXNwbGF5IHBvd2VyIHJlZmVyZW5j ZSAqLwogCWJvb2wgaGF2ZV9kaXNwX3Bvd2VyX3JlZjsKIApkaWZmIC0tZ2l0IGEvZHJtL25vdXZl YXUvbm91dmVhdV9sZWQuYyBiL2RybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMxOWVmZQotLS0gL2Rldi9udWxsCisrKyBiL2RybS9u b3V2ZWF1L25vdXZlYXVfbGVkLmMKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg KEMpIDIwMTYgTWFydGluIFBlcmVzCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAq ICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv CisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5l eHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsCisgKiBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisgKiBFWFBS RVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH SFQgT1dORVIoUykgQU5EL09SIElUUyBTVVBQTElFUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKyAq IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTgorICogV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKy8qCisgKiBBdXRob3JzOgorICog IE1hcnRpbiBQZXJlcyA8bWFydGluLnBlcmVzQGZyZWUuZnI+CisgKi8KKworI2luY2x1ZGUgPGxp bnV4L2xlZHMuaD4KKworI2luY2x1ZGUgIm5vdXZlYXVfbGVkLmgiCisjaW5jbHVkZSA8bnZrbS9z dWJkZXYvZ3Bpby5oPgorCisjaWZkZWYgQ09ORklHX0xFRFNfQ0xBU1MKK3N0YXRpYyBlbnVtIGxl ZF9icmlnaHRuZXNzCitub3V2ZWF1X2xlZF9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgbGVkX2NsYXNz ZGV2ICpsZWQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBjb250YWluZXJfb2Yo bGVkLCBzdHJ1Y3Qgbm91dmVhdV9sZWQsIGxlZCktPmRldjsKKwlzdHJ1Y3Qgbm91dmVhdV9kcm0g KmRybSA9IG5vdXZlYXVfZHJtKGRybV9kZXYpOworCXN0cnVjdCBudmlmX29iamVjdCAqZGV2aWNl ID0gJmRybS0+ZGV2aWNlLm9iamVjdDsKKwl1MzIgZGl2LCBkdXR5OworCisJZGl2ID0gIG52aWZf cmQzMihkZXZpY2UsIDB4NjFjODgwKSAmIDB4MDBmZmZmZmY7CisJZHV0eSA9IG52aWZfcmQzMihk ZXZpY2UsIDB4NjFjODg0KSAmIDB4MDBmZmZmZmY7CisKKwlyZXR1cm4gZHV0eSAqIExFRF9GVUxM IC8gZGl2OworfQorCitzdGF0aWMgdm9pZAorbm91dmVhdV9sZWRfc2V0X2JyaWdodG5lc3Moc3Ry dWN0IGxlZF9jbGFzc2RldiAqbGVkLCBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gY29udGFpbmVyX29mKGxlZCwgc3RydWN0IG5vdXZl YXVfbGVkLCBsZWQpLT5kZXY7CisJc3RydWN0IG5vdXZlYXVfZHJtICpkcm0gPSBub3V2ZWF1X2Ry bShkcm1fZGV2KTsKKwlzdHJ1Y3QgbnZpZl9vYmplY3QgKmRldmljZSA9ICZkcm0tPmRldmljZS5v YmplY3Q7CisKKwl1MzIgaW5wdXRfY2xrID0gMjdlNjsgLyogUERJU1BMQVkuU09SWzFdLlBXTSBp cyBjb25uZWN0ZWQgdG8gdGhlIGNyeXN0YWwgKi8KKwl1MzIgZnJlcSA9IDEwMDsgLyogdGhpcyBp cyB3aGF0IG52aWRpYSB1c2VzIGFuZCBpdCBzaG91bGQgYmUgZ29vZC1lbm91Z2ggKi8KKwl1MzIg ZGl2LCBkdXR5OworCisJZGl2ID0gaW5wdXRfY2xrIC8gZnJlcTsKKwlkdXR5ID0gdmFsdWUgKiBk aXYgLyBMRURfRlVMTDsKKworCS8qIGZvciBub3csIHRoaXMgaXMgc2FmZSB0byBkaXJlY3RseSBw b2tlIHRob3NlIHJlZ2lzdGVycyBiZWNhdXNlOgorCSAqICAtIEE6IG52aWRpYSBuZXZlciBwdXRz IHRoZSBsb2dvIGxlZCB0byBhbnkgb3RoZXIgUFdNIGNvbnRyb2xlcgorCSAqICAgICAgIHRoYW4g UERJU1BMQVkuU09SWzFdLlBXTS4KKwkgKiAgLSBCOiBub3V2ZWF1IGRvZXMgbm90IHRvdWNoIHRo ZXNlIHJlZ2lzdGVycyBhbnl3aGVyZSBlbHNlCisJICovCisJbnZpZl93cjMyKGRldmljZSwgMHg2 MWM4ODAsIGRpdik7CisJbnZpZl93cjMyKGRldmljZSwgMHg2MWM4ODQsIDB4YzAwMDAwMDAgfCBk dXR5KTsKK30KKyNlbmRpZgorCitpbnQKK25vdXZlYXVfbGVkX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKK3sKKyNpZmRlZiBDT05GSUdfTEVEU19DTEFTUworCXN0cnVjdCBub3V2ZWF1X2Ry bSAqZHJtID0gbm91dmVhdV9kcm0oZGV2KTsKKwlzdHJ1Y3QgbnZrbV9ncGlvICpncGlvID0gbnZ4 eF9ncGlvKCZkcm0tPmRldmljZSk7CisJc3RydWN0IGRjYl9ncGlvX2Z1bmMgbG9nb19sZWQ7CisJ aW50IHJldDsKKworCS8qIGNoZWNrIHRoYXQgdGhlcmUgaXMgYSBHUElPIGNvbnRyb2xsaW5nIHRo ZSBsb2dvIExFRCAqLworCWlmIChudmttX2dwaW9fZmluZChncGlvLCAwLCBEQ0JfR1BJT19MT0dP X0xFRF9QV00sIDB4ZmYsICZsb2dvX2xlZCkpCisJCXJldHVybiAwOworCisJZHJtLT5sZWQgPSBr emFsbG9jKHNpemVvZigqZHJtLT5sZWQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRybS0+bGVkKQor CQlyZXR1cm4gLUVOT01FTTsKKwlkcm0tPmxlZC0+ZGV2ID0gZGV2OworCisJZHJtLT5sZWQtPmxl ZC5uYW1lID0gIm52aWRpYS1sb2dvIjsKKwlkcm0tPmxlZC0+bGVkLm1heF9icmlnaHRuZXNzID0g MjU1OworCWRybS0+bGVkLT5sZWQuYnJpZ2h0bmVzc19nZXQgPSBub3V2ZWF1X2xlZF9nZXRfYnJp Z2h0bmVzczsKKwlkcm0tPmxlZC0+bGVkLmJyaWdodG5lc3Nfc2V0ID0gbm91dmVhdV9sZWRfc2V0 X2JyaWdodG5lc3M7CisKKwlyZXQgPSBsZWRfY2xhc3NkZXZfcmVnaXN0ZXIoZGV2LT5kZXYsICZk cm0tPmxlZC0+bGVkKTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKGRybS0+bGVkKTsKKwkJcmV0dXJu IHJldDsKKwl9CisjZW5kaWYKKworCXJldHVybiAwOworfQorCit2b2lkCitub3V2ZWF1X2xlZF9z dXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisjaWZkZWYgQ09ORklHX0xFRFNfQ0xB U1MKKwlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSA9IG5vdXZlYXVfZHJtKGRldik7CisKKwlsZWRf Y2xhc3NkZXZfc3VzcGVuZCgmZHJtLT5sZWQtPmxlZCk7CisjZW5kaWYKK30KKwordm9pZAorbm91 dmVhdV9sZWRfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisjaWZkZWYgQ09ORklH X0xFRFNfQ0xBU1MKKwlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSA9IG5vdXZlYXVfZHJtKGRldik7 CisKKwlsZWRfY2xhc3NkZXZfcmVzdW1lKCZkcm0tPmxlZC0+bGVkKTsKKyNlbmRpZgorfQorCit2 b2lkCitub3V2ZWF1X2xlZF9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisjaWZkZWYg Q09ORklHX0xFRFNfQ0xBU1MKKwlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSA9IG5vdXZlYXVfZHJt KGRldik7CisKKwlpZiAoZHJtLT5sZWQpIHsKKwkJbGVkX2NsYXNzZGV2X3VucmVnaXN0ZXIoJmRy bS0+bGVkLT5sZWQpOworCQlrZnJlZShkcm0tPmxlZCk7CisJCWRybS0+bGVkID0gTlVMTDsKKwl9 CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL2RybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmggYi9kcm0v bm91dmVhdS9ub3V2ZWF1X2xlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjZjOTg2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9kcm0vbm91dmVhdS9ub3V2ZWF1X2xlZC5oCkBA IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBNYXJ0aW4gUGVyZXMKKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICog T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBNYXJ0aW4gUGVyZXMgPG1hcnRpbi5wZXJlc0BmcmVl LmZyPgorICovCisKKyNpZm5kZWYgX19OT1VWRUFVX0xFRF9IX18KKyNkZWZpbmUgX19OT1VWRUFV X0xFRF9IX18KKworc3RydWN0IGxlZF9jbGFzc2RldjsKKworc3RydWN0IG5vdXZlYXVfbGVkIHsK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCisJc3RydWN0IGxlZF9jbGFzc2RldiBsZWQ7Cit9 OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBub3V2ZWF1X2xlZCAqCitub3V2ZWF1X2xlZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXJldHVybiBub3V2ZWF1X2RybShkZXYpLT5sZWQ7Cit9 CisKKy8qIG5vdXZlYXVfbGVkLmMgKi8KK2ludCAgbm91dmVhdV9sZWRfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKK3ZvaWQgbm91dmVhdV9sZWRfc3VzcGVuZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKK3ZvaWQgbm91dmVhdV9sZWRfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owordm9pZCBub3V2ZWF1X2xlZF9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5k aWYKLS0gCjIuOC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpOb3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUK