Return-Path: MIME-Version: 1.0 In-Reply-To: <2d5a2c100904221222u4c3bd45aj3163f0c57d9bb70b@mail.gmail.com> References: <8b5debfa0904220516u591f1cb8v6b04650794f2d20b@mail.gmail.com> <2d5a2c100904221222u4c3bd45aj3163f0c57d9bb70b@mail.gmail.com> Date: Thu, 23 Apr 2009 17:39:37 +0530 Message-ID: <8b5debfa0904230509j63b0e8d8k85f6c780fe548c8f@mail.gmail.com> Subject: Re: [PATCH][HCIRAW] Initial proposal for hciraw plugin. From: alok barsode To: Luiz Augusto von Dentz Cc: Marcel Holtmann , linux-bluetooth Content-Type: multipart/mixed; boundary=001636417c17080ec9046837c1c9 List-ID: --001636417c17080ec9046837c1c9 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi Luiz/Marcel On Thu, Apr 23, 2009 at 12:52 AM, Luiz Augusto von Dentz wrote: > Hi Alok, > > On Wed, Apr 22, 2009 at 9:16 AM, alok barsode wro= te: >> Hi Marcel, >> >> Here are the initial patches for hciraw plugin. >> >> I have pulled the IO event stuff from main.c to hciraw.c >> >> Let me know what you think. >> >> Cheers, >> Alok. >> > > The logic on Using-device_event-to-register-and-setup-already-kno.patch > seems to be wrong, it will not do what the current code does which is > to always register the adapter and in case of being up initialize it. > yup its wrong. it wouldn't register already known "down" adapters. the devup logic was wrong too. Thanks for catching this. Sending new patches which fix this. These are against the latest tree (rel = 4.37) Let me know what you think. > -- > Luiz Augusto von Dentz > Engenheiro de Computa=E7=E3o > Cheers, Alok. --001636417c17080ec9046837c1c9 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Initialing-HCI-raw-socket-plugin-hciops.patch" Content-Disposition: attachment; filename="0001-Initialing-HCI-raw-socket-plugin-hciops.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftvesatm0 RnJvbSA5YTQ4ODU4NzQ0NmM2ZTQxZTM4ZmJiMDI3N2FlNzNmNzUwNDgxNWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUdWUsIDIxIEFwciAyMDA5IDIwOjE2OjA0ICswNTMwClN1YmplY3Q6IFtQQVRDSCAx LzVdIEluaXRpYWxpbmcgSENJIHJhdyBzb2NrZXQgcGx1Z2luICJoY2lvcHMiLgoKLS0tCiBwbHVn aW5zL01ha2VmaWxlLmFtIHwgICAgNiArKysrKy0KIHBsdWdpbnMvaGNpb3BzLmMgICAgfCAgIDQz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hh bmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBwbHVnaW5zL2hjaW9wcy5jCgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9NYWtlZmlsZS5hbSBiL3Bs dWdpbnMvTWFrZWZpbGUuYW0KaW5kZXggYTFlOTMzZi4uYmJhYmY2NCAxMDA2NDQKLS0tIGEvcGx1 Z2lucy9NYWtlZmlsZS5hbQorKysgYi9wbHVnaW5zL01ha2VmaWxlLmFtCkBAIC0xMyw3ICsxMyw3 IEBAIGVsc2UKIHNlcnZpY2VfcGx1Z2lucyA9CiBlbmRpZgogCi1wbHVnaW5fTFRMSUJSQVJJRVMg PSBoYWwubGEgJChuZXRsaW5rX3BsdWdpbnMpICQoc2VydmljZV9wbHVnaW5zKQorcGx1Z2luX0xU TElCUkFSSUVTID0gaGFsLmxhIGhjaW9wcy5sYSAkKG5ldGxpbmtfcGx1Z2lucykgJChzZXJ2aWNl X3BsdWdpbnMpCiAKIG5vaW5zdF9MVExJQlJBUklFUyA9IGVjaG8ubGEgc3RvcmFnZS5sYQogCkBA IC0yMSw2ICsyMSw4IEBAIGVjaG9fbGFfU09VUkNFUyA9IGVjaG8uYwogCiBzdG9yYWdlX2xhX1NP VVJDRVMgPSBzdG9yYWdlLmMKIAoraGNpb3BzX2xhX1NPVVJDRVMgPSBoY2lvcHMuYworCiBpZiBO RVRMSU5LCiBuZXRsaW5rX2xhX1NPVVJDRVMgPSBuZXRsaW5rLmMKIApAQCAtNDcsNiArNDksNyBA QCBhbGwtbG9jYWw6CiAJQCQoTE5fUykgLWYgJCh0b3Bfc3JjZGlyKS9uZXR3b3JrLy5saWJzL25l dHdvcmsuc28KIAlAJChMTl9TKSAtZiAubGlicy9zZXJ2aWNlLnNvCiAJQCQoTE5fUykgLWYgLmxp YnMvaGFsLnNvCisJQCQoTE5fUykgLWYgLmxpYnMvaGNpb3BzLnNvCiAKIGNsZWFuLWxvY2FsOgog CUBybSAtZiBoYWwuc28KQEAgLTU1LDMgKzU4LDQgQEAgY2xlYW4tbG9jYWw6CiAJQHJtIC1mIHNl cmlhbC5zbwogCUBybSAtZiBhdWRpby5zbwogCUBybSAtZiBpbnB1dC5zbworCUBybSAtZiBoY2lv cHMuc28KZGlmZiAtLWdpdCBhL3BsdWdpbnMvaGNpb3BzLmMgYi9wbHVnaW5zL2hjaW9wcy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNTY0NDMKLS0tIC9kZXYvbnVsbAor KysgYi9wbHVnaW5zL2hjaW9wcy5jCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKgorICogIEJsdWVa IC0gQmx1ZXRvb3RoIHByb3RvY29sIHN0YWNrIGZvciBMaW51eAorICoKKyAqICBDb3B5cmlnaHQg KEMpIDIwMDQtMjAwOSAgTWFyY2VsIEhvbHRtYW5uIDxtYXJjZWxAaG9sdG1hbm4ub3JnPgorICog IENvcHlyaWdodCAoQykgMjAwOQkgICAgIEFsb2sgQmFyc29kZSA8YWxvay5iYXJzb2RlQGF6aW5n by5jb20+CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz MDEgIFVTQQorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgPGNvbmZp Zy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxibHVldG9vdGgvYmx1ZXRvb3RoLmg+CisKKyNpbmNs dWRlICJwbHVnaW4uaCIKKyNpbmNsdWRlICJsb2dnaW5nLmgiCisKK3N0YXRpYyBpbnQgaGNpb3Bz X2luaXQodm9pZCkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaGNpb3BzX2V4aXQo dm9pZCkKK3sKK30KKworQkxVRVRPT1RIX1BMVUdJTl9ERUZJTkUoaGNpb3BzLCBWRVJTSU9OLAor CQkJQkxVRVRPT1RIX1BMVUdJTl9QUklPUklUWV9ERUZBVUxULCBoY2lvcHNfaW5pdCwgaGNpb3Bz X2V4aXQpCi0tIAoxLjUuNi4zCgo= --001636417c17080ec9046837c1c9 Content-Type: text/x-patch; charset=US-ASCII; name="0002-exporting-device_event.patch" Content-Disposition: attachment; filename="0002-exporting-device_event.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftvesu5o1 RnJvbSBhMDg2MzU2MDM3NzRhYTAyYTFjODI1M2ZhZDU3NmFlMTAzZWFlZDc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUdWUsIDIxIEFwciAyMDA5IDIxOjU4OjA3ICswNTMwClN1YmplY3Q6IFtQQVRDSCAy LzVdIGV4cG9ydGluZyBkZXZpY2VfZXZlbnQoKS4KCi0tLQogc3JjL2hjaWQuaCB8ICAgIDEgKwog c3JjL21haW4uYyB8ICAgMjggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBj aGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvaGNpZC5oIGIvc3JjL2hjaWQuaAppbmRleCA2YzI2MTU3Li4yMzY0NDlkIDEwMDY0NAotLS0g YS9zcmMvaGNpZC5oCisrKyBiL3NyYy9oY2lkLmgKQEAgLTY4LDYgKzY4LDcgQEAgc3RydWN0IG1h aW5fb3B0cyB7CiAKIGV4dGVybiBzdHJ1Y3QgbWFpbl9vcHRzIG1haW5fb3B0czsKIAordm9pZCBk ZXZpY2VfZXZlbnQoaW50IGV2ZW50LCBpbnQgZGV2X2lkKTsKIHZvaWQgaGNpX3JlcV9xdWV1ZV9y ZW1vdmUoaW50IGRldl9pZCwgYmRhZGRyX3QgKmRiYSk7CiAKIHZvaWQgc3RhcnRfc2VjdXJpdHlf bWFuYWdlcihpbnQgaGRldik7CmRpZmYgLS1naXQgYS9zcmMvbWFpbi5jIGIvc3JjL21haW4uYwpp bmRleCBmMzlmYzExLi4wMmI0ZWJmIDEwMDY0NAotLS0gYS9zcmMvbWFpbi5jCisrKyBiL3NyYy9t YWluLmMKQEAgLTU1NiwzMCArNTU2LDI4IEBAIHN0YXRpYyB2b2lkIGluaXRfZGVmYXVsdHModm9p ZCkKIAkJc3RyY3B5KG1haW5fb3B0cy5ob3N0X25hbWUsICJub25hbWUiKTsKIH0KIAotc3RhdGlj IGlubGluZSB2b2lkIGRldmljZV9ldmVudChHSU9DaGFubmVsICpjaGFuLCBldnRfc3RhY2tfaW50 ZXJuYWwgKnNpKQordm9pZCBkZXZpY2VfZXZlbnQoaW50IGV2ZW50LCBpbnQgZGV2X2lkKQogewot CWV2dF9zaV9kZXZpY2UgKnNkID0gKHZvaWQgKikgJnNpLT5kYXRhOwotCi0Jc3dpdGNoIChzZC0+ ZXZlbnQpIHsKKwlzd2l0Y2ggKGV2ZW50KSB7CiAJY2FzZSBIQ0lfREVWX1JFRzoKLQkJaW5mbygi SENJIGRldiAlZCByZWdpc3RlcmVkIiwgc2QtPmRldl9pZCk7Ci0JCWRldmljZV9kZXZyZWdfc2V0 dXAoc2QtPmRldl9pZCwgRkFMU0UpOworCQlpbmZvKCJIQ0kgZGV2ICVkIHJlZ2lzdGVyZWQiLCBk ZXZfaWQpOworCQlkZXZpY2VfZGV2cmVnX3NldHVwKGRldl9pZCwgRkFMU0UpOwogCQlicmVhazsK IAogCWNhc2UgSENJX0RFVl9VTlJFRzoKLQkJaW5mbygiSENJIGRldiAlZCB1bnJlZ2lzdGVyZWQi LCBzZC0+ZGV2X2lkKTsKLQkJbWFuYWdlcl91bnJlZ2lzdGVyX2FkYXB0ZXIoc2QtPmRldl9pZCk7 CisJCWluZm8oIkhDSSBkZXYgJWQgdW5yZWdpc3RlcmVkIiwgZGV2X2lkKTsKKwkJbWFuYWdlcl91 bnJlZ2lzdGVyX2FkYXB0ZXIoZGV2X2lkKTsKIAkJYnJlYWs7CiAKIAljYXNlIEhDSV9ERVZfVVA6 Ci0JCWluZm8oIkhDSSBkZXYgJWQgdXAiLCBzZC0+ZGV2X2lkKTsKLQkJZGV2aWNlX2RldnVwX3Nl dHVwKHNkLT5kZXZfaWQpOworCQlpbmZvKCJIQ0kgZGV2ICVkIHVwIiwgZGV2X2lkKTsKKwkJZGV2 aWNlX2RldnVwX3NldHVwKGRldl9pZCk7CiAJCWJyZWFrOwogCiAJY2FzZSBIQ0lfREVWX0RPV046 Ci0JCWluZm8oIkhDSSBkZXYgJWQgZG93biIsIHNkLT5kZXZfaWQpOwotCQltYW5hZ2VyX3N0b3Bf YWRhcHRlcihzZC0+ZGV2X2lkKTsKLQkJc3RvcF9zZWN1cml0eV9tYW5hZ2VyKHNkLT5kZXZfaWQp OworCQlpbmZvKCJIQ0kgZGV2ICVkIGRvd24iLCBkZXZfaWQpOworCQltYW5hZ2VyX3N0b3BfYWRh cHRlcihkZXZfaWQpOworCQlzdG9wX3NlY3VyaXR5X21hbmFnZXIoZGV2X2lkKTsKIAkJYnJlYWs7 CiAJfQogfQpAQCAtNTg5LDYgKzU4Nyw3IEBAIHN0YXRpYyBnYm9vbGVhbiBpb19zdGFja19ldmVu dChHSU9DaGFubmVsICpjaGFuLCBHSU9Db25kaXRpb24gY29uZCwKIHsKIAl1bnNpZ25lZCBjaGFy IGJ1ZltIQ0lfTUFYX0ZSQU1FX1NJWkVdLCAqcHRyOwogCWV2dF9zdGFja19pbnRlcm5hbCAqc2k7 CisJZXZ0X3NpX2RldmljZSAqc2Q7CiAJaGNpX2V2ZW50X2hkciAqZWg7CiAJaW50IHR5cGU7CiAJ c2l6ZV90IGxlbjsKQEAgLTYyMCw3ICs2MTksOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gaW9fc3RhY2tf ZXZlbnQoR0lPQ2hhbm5lbCAqY2hhbiwgR0lPQ29uZGl0aW9uIGNvbmQsCiAJc2kgPSAoZXZ0X3N0 YWNrX2ludGVybmFsICopIHB0cjsKIAlzd2l0Y2ggKHNpLT50eXBlKSB7CiAJY2FzZSBFVlRfU0lf REVWSUNFOgotCQlkZXZpY2VfZXZlbnQoY2hhbiwgc2kpOworCQlzZCA9ICh2b2lkICopICZzaS0+ ZGF0YTsKKwkJZGV2aWNlX2V2ZW50KHNkLT5ldmVudCwgc2QtPmRldl9pZCk7CiAJCWJyZWFrOwog CX0KIAotLSAKMS41LjYuMwoK --001636417c17080ec9046837c1c9 Content-Type: text/x-patch; charset=US-ASCII; name="0003-Modifying-device_devreg_setup.-Check-if-device-is-up.patch" Content-Disposition: attachment; filename="0003-Modifying-device_devreg_setup.-Check-if-device-is-up.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftvesva82 RnJvbSBlM2QxMjQ4MzFiMWFkNjdmYWUyNWUzY2ZlOTI2ZDY5ZjBmMmExMGMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUaHUsIDIzIEFwciAyMDA5IDE2OjQyOjE2ICswNTMwClN1YmplY3Q6IFtQQVRDSCAz LzVdIE1vZGlmeWluZyBkZXZpY2VfZGV2cmVnX3NldHVwLiBDaGVjayBpZiBkZXZpY2UgaXMgdXAg aW4KIGRldmljZV9kZXZyZWdfc2V0dXAgaW5zdGVhZCBvZiB1c2luZyBkZXZ1cCBwYXJhbWV0ZXIu CgotLS0KIHNyYy9tYWluLmMgfCAgIDEzICsrKysrKysrLS0tLS0KIDEgZmlsZXMgY2hhbmdlZCwg OCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMg Yi9zcmMvbWFpbi5jCmluZGV4IDAyYjRlYmYuLmQxMmVkYzUgMTAwNjQ0Ci0tLSBhL3NyYy9tYWlu LmMKKysrIGIvc3JjL21haW4uYwpAQCAtNDc3LDkgKzQ3NywxMCBAQCBmYWlsOgogCWV4aXQoMSk7 CiB9CiAKLXN0YXRpYyB2b2lkIGRldmljZV9kZXZyZWdfc2V0dXAoaW50IGRldl9pZCwgZ2Jvb2xl YW4gZGV2dXApCitzdGF0aWMgdm9pZCBkZXZpY2VfZGV2cmVnX3NldHVwKGludCBkZXZfaWQpCiB7 CiAJc3RydWN0IGhjaV9kZXZfaW5mbyBkaTsKKwlnYm9vbGVhbiBkZXZ1cDsKIAogCWluaXRfZGV2 aWNlKGRldl9pZCk7CiAKQEAgLTQ4OCw2ICs0ODksOCBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfZGV2 cmVnX3NldHVwKGludCBkZXZfaWQsIGdib29sZWFuIGRldnVwKQogCWlmIChoY2lfZGV2aW5mbyhk ZXZfaWQsICZkaSkgPCAwKQogCQlyZXR1cm47CiAKKwlkZXZ1cCA9IGhjaV90ZXN0X2JpdChIQ0lf VVAsICZkaS5mbGFncyk7CisKIAlpZiAoIWhjaV90ZXN0X2JpdChIQ0lfUkFXLCAmZGkuZmxhZ3Mp KQogCQltYW5hZ2VyX3JlZ2lzdGVyX2FkYXB0ZXIoZGV2X2lkLCBkZXZ1cCk7CiB9CkBAIC01Mjgs MTAgKzUzMSwxMCBAQCBzdGF0aWMgdm9pZCBpbml0X2FsbF9kZXZpY2VzKGludCBjdGwpCiAJZm9y IChpID0gMDsgaSA8IGRsLT5kZXZfbnVtOyBpKyssIGRyKyspIHsKIAkJZ2Jvb2xlYW4gZGV2dXA7 CiAKLQkJZGV2dXAgPSBoY2lfdGVzdF9iaXQoSENJX1VQLCAmZHItPmRldl9vcHQpOwotCiAJCWlu Zm8oIkhDSSBkZXYgJWQgcmVnaXN0ZXJlZCIsIGRyLT5kZXZfaWQpOwotCQlkZXZpY2VfZGV2cmVn X3NldHVwKGRyLT5kZXZfaWQsIGRldnVwKTsKKwkJZGV2aWNlX2RldnJlZ19zZXR1cChkci0+ZGV2 X2lkKTsKKworCQlkZXZ1cCA9IGhjaV90ZXN0X2JpdChIQ0lfVVAsICZkci0+ZGV2X29wdCk7CiAJ CWlmIChkZXZ1cCkgewogCQkJaW5mbygiSENJIGRldiAlZCBhbHJlYWR5IHVwIiwgZHItPmRldl9p ZCk7CiAJCQlkZXZpY2VfZGV2dXBfc2V0dXAoZHItPmRldl9pZCk7CkBAIC01NjEsNyArNTY0LDcg QEAgdm9pZCBkZXZpY2VfZXZlbnQoaW50IGV2ZW50LCBpbnQgZGV2X2lkKQogCXN3aXRjaCAoZXZl bnQpIHsKIAljYXNlIEhDSV9ERVZfUkVHOgogCQlpbmZvKCJIQ0kgZGV2ICVkIHJlZ2lzdGVyZWQi LCBkZXZfaWQpOwotCQlkZXZpY2VfZGV2cmVnX3NldHVwKGRldl9pZCwgRkFMU0UpOworCQlkZXZp Y2VfZGV2cmVnX3NldHVwKGRldl9pZCk7CiAJCWJyZWFrOwogCiAJY2FzZSBIQ0lfREVWX1VOUkVH OgotLSAKMS41LjYuMwoK --001636417c17080ec9046837c1c9 Content-Type: text/x-patch; charset=US-ASCII; name="0004-Using-device_event-to-register-and-setup-already-kno.patch" Content-Disposition: attachment; filename="0004-Using-device_event-to-register-and-setup-already-kno.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftvesw8a3 RnJvbSAyOTRiOWI0ZmZkOTA0YjlhZDcyY2I5NDY2NGEyYTlmMTE3YTVkOWQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUaHUsIDIzIEFwciAyMDA5IDE2OjQ2OjQxICswNTMwClN1YmplY3Q6IFtQQVRDSCA0 LzVdIFVzaW5nIGRldmljZV9ldmVudCB0byByZWdpc3RlciBhbmQgc2V0dXAgYWxyZWFkeSBrbm93 biBkZXZpY2VzLgoKLS0tCiBzcmMvbWFpbi5jIHwgICAgOSArKystLS0tLS0KIDEgZmlsZXMgY2hh bmdlZCwgMyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9t YWluLmMgYi9zcmMvbWFpbi5jCmluZGV4IGQxMmVkYzUuLjkzZGJmNzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9tYWluLmMKKysrIGIvc3JjL21haW4uYwpAQCAtNTMxLDE0ICs1MzEsMTEgQEAgc3RhdGljIHZv aWQgaW5pdF9hbGxfZGV2aWNlcyhpbnQgY3RsKQogCWZvciAoaSA9IDA7IGkgPCBkbC0+ZGV2X251 bTsgaSsrLCBkcisrKSB7CiAJCWdib29sZWFuIGRldnVwOwogCi0JCWluZm8oIkhDSSBkZXYgJWQg cmVnaXN0ZXJlZCIsIGRyLT5kZXZfaWQpOwotCQlkZXZpY2VfZGV2cmVnX3NldHVwKGRyLT5kZXZf aWQpOworCQlkZXZpY2VfZXZlbnQoSENJX0RFVl9SRUcsIGRyLT5kZXZfaWQpOwogCiAJCWRldnVw ID0gaGNpX3Rlc3RfYml0KEhDSV9VUCwgJmRyLT5kZXZfb3B0KTsKLQkJaWYgKGRldnVwKSB7Ci0J CQlpbmZvKCJIQ0kgZGV2ICVkIGFscmVhZHkgdXAiLCBkci0+ZGV2X2lkKTsKLQkJCWRldmljZV9k ZXZ1cF9zZXR1cChkci0+ZGV2X2lkKTsKLQkJfQorCQlpZiAoZGV2dXApCisJCQlkZXZpY2VfZXZl bnQoSENJX0RFVl9VUCwgZHItPmRldl9pZCk7CiAJfQogCiAJZ19mcmVlKGRsKTsKLS0gCjEuNS42 LjMKCg== --001636417c17080ec9046837c1c9 Content-Type: text/x-patch; charset=US-ASCII; name="0005-Initializing-hciops-plugin.-Adding-IO-event-handing.patch" Content-Disposition: attachment; filename="0005-Initializing-hciops-plugin.-Adding-IO-event-handing.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftvesx5t4 RnJvbSAyYTc1NGZlNmY3MWI4MzRmZWJkMDFmZGVjZTUxZmMwZTUzY2M0NzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUaHUsIDIzIEFwciAyMDA5IDE3OjM1OjAyICswNTMwClN1YmplY3Q6IFtQQVRDSCA1 LzVdIEluaXRpYWxpemluZyBoY2lvcHMgcGx1Z2luLiBBZGRpbmcgSU8gZXZlbnQgaGFuZGluZy4K Ci0tLQogcGx1Z2lucy9oY2lvcHMuYyB8ICAxMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvbWFpbi5jICAgICAgIHwgIDEyMiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDEzNCBpbnNlcnRpb25zKCspLCAxMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv cGx1Z2lucy9oY2lvcHMuYyBiL3BsdWdpbnMvaGNpb3BzLmMKaW5kZXggNGY1NjQ0My4uMzJmODJk MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9oY2lvcHMuYworKysgYi9wbHVnaW5zL2hjaW9wcy5jCkBA IC0yNCwxNyArMjQsMTQ5IEBACiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgPGNvbmZp Zy5oPgogI2VuZGlmCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAKICNpbmNs dWRlIDxibHVldG9vdGgvYmx1ZXRvb3RoLmg+CisjaW5jbHVkZSA8Ymx1ZXRvb3RoL2hjaS5oPgor I2luY2x1ZGUgPGJsdWV0b290aC9oY2lfbGliLmg+CiAKKyNpbmNsdWRlIDxnbGliLmg+CisKKyNp bmNsdWRlICJoY2lkLmgiCiAjaW5jbHVkZSAicGx1Z2luLmgiCiAjaW5jbHVkZSAibG9nZ2luZy5o IgogCi1zdGF0aWMgaW50IGhjaW9wc19pbml0KHZvaWQpCisKK3N0YXRpYyBpbnQgaW5pdF9hbGxf ZGV2aWNlcyhpbnQgY3RsKQogeworCXN0cnVjdCBoY2lfZGV2X2xpc3RfcmVxICpkbDsKKwlzdHJ1 Y3QgaGNpX2Rldl9yZXEgKmRyOworCWludCBpOworCisJZGwgPSBnX3RyeV9tYWxsb2MwKEhDSV9N QVhfREVWICogc2l6ZW9mKHN0cnVjdCBoY2lfZGV2X3JlcSkgKyBzaXplb2YodWludDE2X3QpKTsK KwlpZiAoIWRsKSB7CisJCWluZm8oIkNhbid0IGFsbG9jYXRlIGRldmxpc3QgYnVmZmVyOiAlcyAo JWQpIiwKKwkJCQkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwkJcmV0dXJuIGVycm5vOwor CX0KKworCWRsLT5kZXZfbnVtID0gSENJX01BWF9ERVY7CisJZHIgPSBkbC0+ZGV2X3JlcTsKKwor CWlmIChpb2N0bChjdGwsIEhDSUdFVERFVkxJU1QsICh2b2lkICopIGRsKSA8IDApIHsKKwkJaW5m bygiQ2FuJ3QgZ2V0IGRldmljZSBsaXN0OiAlcyAoJWQpIiwKKwkJCQkJCQlzdHJlcnJvcihlcnJu byksIGVycm5vKTsKKwkJcmV0dXJuIGVycm5vOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBkbC0+ ZGV2X251bTsgaSsrLCBkcisrKSB7CisJCWdib29sZWFuIGRldnVwOworCisJCWRldmljZV9ldmVu dChIQ0lfREVWX1JFRywgZHItPmRldl9pZCk7CisKKwkJZGV2dXAgPSBoY2lfdGVzdF9iaXQoSENJ X1VQLCAmZHItPmRldl9vcHQpOworCQlpZiAoZGV2dXApCisJCQlkZXZpY2VfZXZlbnQoSENJX0RF Vl9VUCwgZHItPmRldl9pZCk7CisJfQorCisJZ19mcmVlKGRsKTsKIAlyZXR1cm4gMDsKIH0KIAor c3RhdGljIGdib29sZWFuIGlvX3N0YWNrX2V2ZW50KEdJT0NoYW5uZWwgKmNoYW4sIEdJT0NvbmRp dGlvbiBjb25kLAorCQkJCQkJCQlncG9pbnRlciBkYXRhKQoreworCXVuc2lnbmVkIGNoYXIgYnVm W0hDSV9NQVhfRlJBTUVfU0laRV0sICpwdHI7CisJZXZ0X3N0YWNrX2ludGVybmFsICpzaTsKKwll dnRfc2lfZGV2aWNlICpzZDsKKwloY2lfZXZlbnRfaGRyICplaDsKKwlpbnQgdHlwZTsKKwlzaXpl X3QgbGVuOworCUdJT0Vycm9yIGVycjsKKworCXB0ciA9IGJ1ZjsKKworCWVyciA9IGdfaW9fY2hh bm5lbF9yZWFkKGNoYW4sIChnY2hhciAqKSBidWYsIHNpemVvZihidWYpLCAmbGVuKTsKKwlpZiAo ZXJyKSB7CisJCWlmIChlcnIgPT0gR19JT19FUlJPUl9BR0FJTikKKwkJCXJldHVybiBUUlVFOwor CisJCWVycm9yKCJSZWFkIGZyb20gY29udHJvbCBzb2NrZXQgZmFpbGVkOiAlcyAoJWQpIiwKKwkJ CQkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwkJcmV0dXJuIEZBTFNFOworCX0KKworCXR5 cGUgPSAqcHRyKys7CisKKwlpZiAodHlwZSAhPSBIQ0lfRVZFTlRfUEtUKQorCQlyZXR1cm4gVFJV RTsKKworCWVoID0gKGhjaV9ldmVudF9oZHIgKikgcHRyOworCWlmIChlaC0+ZXZ0ICE9IEVWVF9T VEFDS19JTlRFUk5BTCkKKwkJcmV0dXJuIFRSVUU7CisKKwlwdHIgKz0gSENJX0VWRU5UX0hEUl9T SVpFOworCisJc2kgPSAoZXZ0X3N0YWNrX2ludGVybmFsICopIHB0cjsKKwlzd2l0Y2ggKHNpLT50 eXBlKSB7CisJY2FzZSBFVlRfU0lfREVWSUNFOgorCQlzZCA9ICh2b2lkICopICZzaS0+ZGF0YTsK KwkJZGV2aWNlX2V2ZW50KHNkLT5ldmVudCwgc2QtPmRldl9pZCk7CisJCWJyZWFrOworCX0KKwor CXJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50IGhjaW9wc19pbml0KHZvaWQpCit7CisJc3Ry dWN0IHNvY2thZGRyX2hjaSBhZGRyOworCXN0cnVjdCBoY2lfZmlsdGVyIGZsdDsKKwlHSU9DaGFu bmVsICpjdGxfaW87CisJaW50IHNvY2s7CisKKwkvKiBDcmVhdGUgYW5kIGJpbmQgSENJIHNvY2tl dCAqLworCXNvY2sgPSBzb2NrZXQoQUZfQkxVRVRPT1RILCBTT0NLX1JBVywgQlRQUk9UT19IQ0kp OworCWlmIChzb2NrIDwgMCkgeworCQllcnJvcigiQ2FuJ3Qgb3BlbiBIQ0kgc29ja2V0OiAlcyAo JWQpIiwgc3RyZXJyb3IoZXJybm8pLAorCQkJCQkJCQllcnJubyk7CisJCXJldHVybiBlcnJubzsK Kwl9CisKKwkvKiBTZXQgZmlsdGVyICovCisJaGNpX2ZpbHRlcl9jbGVhcigmZmx0KTsKKwloY2lf ZmlsdGVyX3NldF9wdHlwZShIQ0lfRVZFTlRfUEtULCAmZmx0KTsKKwloY2lfZmlsdGVyX3NldF9l dmVudChFVlRfU1RBQ0tfSU5URVJOQUwsICZmbHQpOworCWlmIChzZXRzb2Nrb3B0KHNvY2ssIFNP TF9IQ0ksIEhDSV9GSUxURVIsICZmbHQsCisJCQkJCQkJc2l6ZW9mKGZsdCkpIDwgMCkgeworCQll cnJvcigiQ2FuJ3Qgc2V0IGZpbHRlcjogJXMgKCVkKSIsIHN0cmVycm9yKGVycm5vKSwgZXJybm8p OworCQlyZXR1cm4gZXJybm87CisJfQorCisJbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikp OworCWFkZHIuaGNpX2ZhbWlseSA9IEFGX0JMVUVUT09USDsKKwlhZGRyLmhjaV9kZXYgPSBIQ0lf REVWX05PTkU7CisJaWYgKGJpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSAmYWRkciwKKwkJ CQkJCQlzaXplb2YoYWRkcikpIDwgMCkgeworCQllcnJvcigiQ2FuJ3QgYmluZCBIQ0kgc29ja2V0 OiAlcyAoJWQpIiwKKwkJCQkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwkJcmV0dXJuIGVy cm5vOworCX0KKworCWN0bF9pbyA9IGdfaW9fY2hhbm5lbF91bml4X25ldyhzb2NrKTsKKwlnX2lv X2NoYW5uZWxfc2V0X2Nsb3NlX29uX3VucmVmKGN0bF9pbywgVFJVRSk7CisKKwlnX2lvX2FkZF93 YXRjaChjdGxfaW8sIEdfSU9fSU4sIGlvX3N0YWNrX2V2ZW50LCBOVUxMKTsKKworCWdfaW9fY2hh bm5lbF91bnJlZihjdGxfaW8pOworCisJLyogSW5pdGlhbGl6ZSBhbHJlYWR5IGNvbm5lY3RlZCBk ZXZpY2VzICovCisJcmV0dXJuIGluaXRfYWxsX2RldmljZXMoc29jayk7Cit9CisKIHN0YXRpYyB2 b2lkIGhjaW9wc19leGl0KHZvaWQpCiB7CiB9CmRpZmYgLS1naXQgYS9zcmMvbWFpbi5jIGIvc3Jj L21haW4uYwppbmRleCA5M2RiZjcxLi4zMDlkNGJiIDEwMDY0NAotLS0gYS9zcmMvbWFpbi5jCisr KyBiL3NyYy9tYWluLmMKQEAgLTUwNiw0MSArNTA2LDYgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2Rl dnVwX3NldHVwKGludCBkZXZfaWQpCiAJCXN0b3Bfc2VjdXJpdHlfbWFuYWdlcihkZXZfaWQpOwog fQogCi1zdGF0aWMgdm9pZCBpbml0X2FsbF9kZXZpY2VzKGludCBjdGwpCi17Ci0Jc3RydWN0IGhj aV9kZXZfbGlzdF9yZXEgKmRsOwotCXN0cnVjdCBoY2lfZGV2X3JlcSAqZHI7Ci0JaW50IGk7Ci0K LQlkbCA9IGdfdHJ5X21hbGxvYzAoSENJX01BWF9ERVYgKiBzaXplb2Yoc3RydWN0IGhjaV9kZXZf cmVxKSArIHNpemVvZih1aW50MTZfdCkpOwotCWlmICghZGwpIHsKLQkJaW5mbygiQ2FuJ3QgYWxs b2NhdGUgZGV2bGlzdCBidWZmZXI6ICVzICglZCkiLAotCQkJCQkJCXN0cmVycm9yKGVycm5vKSwg ZXJybm8pOwotCQlleGl0KDEpOwotCX0KLQotCWRsLT5kZXZfbnVtID0gSENJX01BWF9ERVY7Ci0J ZHIgPSBkbC0+ZGV2X3JlcTsKLQotCWlmIChpb2N0bChjdGwsIEhDSUdFVERFVkxJU1QsICh2b2lk ICopIGRsKSA8IDApIHsKLQkJaW5mbygiQ2FuJ3QgZ2V0IGRldmljZSBsaXN0OiAlcyAoJWQpIiwK LQkJCQkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKLQkJZXhpdCgxKTsKLQl9Ci0KLQlmb3Ig KGkgPSAwOyBpIDwgZGwtPmRldl9udW07IGkrKywgZHIrKykgewotCQlnYm9vbGVhbiBkZXZ1cDsK LQotCQlkZXZpY2VfZXZlbnQoSENJX0RFVl9SRUcsIGRyLT5kZXZfaWQpOwotCi0JCWRldnVwID0g aGNpX3Rlc3RfYml0KEhDSV9VUCwgJmRyLT5kZXZfb3B0KTsKLQkJaWYgKGRldnVwKQotCQkJZGV2 aWNlX2V2ZW50KEhDSV9ERVZfVVAsIGRyLT5kZXZfaWQpOwotCX0KLQotCWdfZnJlZShkbCk7Ci19 Ci0KIHN0YXRpYyB2b2lkIGluaXRfZGVmYXVsdHModm9pZCkKIHsKIAkvKiBEZWZhdWx0IEhDSWQg c2V0dGluZ3MgKi8KQEAgLTU4Miw1MSArNTQ3LDYgQEAgdm9pZCBkZXZpY2VfZXZlbnQoaW50IGV2 ZW50LCBpbnQgZGV2X2lkKQogCX0KIH0KIAotc3RhdGljIGdib29sZWFuIGlvX3N0YWNrX2V2ZW50 KEdJT0NoYW5uZWwgKmNoYW4sIEdJT0NvbmRpdGlvbiBjb25kLAotCQkJCQkJCQlncG9pbnRlciBk YXRhKQotewotCXVuc2lnbmVkIGNoYXIgYnVmW0hDSV9NQVhfRlJBTUVfU0laRV0sICpwdHI7Ci0J ZXZ0X3N0YWNrX2ludGVybmFsICpzaTsKLQlldnRfc2lfZGV2aWNlICpzZDsKLQloY2lfZXZlbnRf aGRyICplaDsKLQlpbnQgdHlwZTsKLQlzaXplX3QgbGVuOwotCUdJT0Vycm9yIGVycjsKLQotCXB0 ciA9IGJ1ZjsKLQotCWVyciA9IGdfaW9fY2hhbm5lbF9yZWFkKGNoYW4sIChnY2hhciAqKSBidWYs IHNpemVvZihidWYpLCAmbGVuKTsKLQlpZiAoZXJyKSB7Ci0JCWlmIChlcnIgPT0gR19JT19FUlJP Ul9BR0FJTikKLQkJCXJldHVybiBUUlVFOwotCi0JCWVycm9yKCJSZWFkIGZyb20gY29udHJvbCBz b2NrZXQgZmFpbGVkOiAlcyAoJWQpIiwKLQkJCQkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsK LQkJcmV0dXJuIEZBTFNFOwotCX0KLQotCXR5cGUgPSAqcHRyKys7Ci0KLQlpZiAodHlwZSAhPSBI Q0lfRVZFTlRfUEtUKQotCQlyZXR1cm4gVFJVRTsKLQotCWVoID0gKGhjaV9ldmVudF9oZHIgKikg cHRyOwotCWlmIChlaC0+ZXZ0ICE9IEVWVF9TVEFDS19JTlRFUk5BTCkKLQkJcmV0dXJuIFRSVUU7 Ci0KLQlwdHIgKz0gSENJX0VWRU5UX0hEUl9TSVpFOwotCi0Jc2kgPSAoZXZ0X3N0YWNrX2ludGVy bmFsICopIHB0cjsKLQlzd2l0Y2ggKHNpLT50eXBlKSB7Ci0JY2FzZSBFVlRfU0lfREVWSUNFOgot CQlzZCA9ICh2b2lkICopICZzaS0+ZGF0YTsKLQkJZGV2aWNlX2V2ZW50KHNkLT5ldmVudCwgc2Qt PmRldl9pZCk7Ci0JCWJyZWFrOwotCX0KLQotCXJldHVybiBUUlVFOwotfQotCiBzdGF0aWMgR01h aW5Mb29wICpldmVudF9sb29wOwogCiBzdGF0aWMgdm9pZCBzaWdfdGVybShpbnQgc2lnKQpAQCAt NjU1LDEwICs1NzUsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogCUdP cHRpb25Db250ZXh0ICpjb250ZXh0OwogCUdFcnJvciAqZXJyID0gTlVMTDsKLQlzdHJ1Y3Qgc29j a2FkZHJfaGNpIGFkZHI7Ci0Jc3RydWN0IGhjaV9maWx0ZXIgZmx0OwogCXN0cnVjdCBzaWdhY3Rp b24gc2E7Ci0JR0lPQ2hhbm5lbCAqY3RsX2lvLCAqY2hpbGRfaW87CisJR0lPQ2hhbm5lbCAqY2hp bGRfaW87CiAJdWludDE2X3QgbXR1ID0gMDsKIAlHS2V5RmlsZSAqY29uZmlnOwogCkBAIC03MDYs MzQgKzYyNCw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWVuYWJsZV9k ZWJ1ZygpOwogCX0KIAotCS8qIENyZWF0ZSBhbmQgYmluZCBIQ0kgc29ja2V0ICovCi0JbWFpbl9v cHRzLnNvY2sgPSBzb2NrZXQoQUZfQkxVRVRPT1RILCBTT0NLX1JBVywgQlRQUk9UT19IQ0kpOwot CWlmIChtYWluX29wdHMuc29jayA8IDApIHsKLQkJZXJyb3IoIkNhbid0IG9wZW4gSENJIHNvY2tl dDogJXMgKCVkKSIsIHN0cmVycm9yKGVycm5vKSwKLQkJCQkJCQkJZXJybm8pOwotCQlleGl0KDEp OwotCX0KLQotCS8qIFNldCBmaWx0ZXIgKi8KLQloY2lfZmlsdGVyX2NsZWFyKCZmbHQpOwotCWhj aV9maWx0ZXJfc2V0X3B0eXBlKEhDSV9FVkVOVF9QS1QsICZmbHQpOwotCWhjaV9maWx0ZXJfc2V0 X2V2ZW50KEVWVF9TVEFDS19JTlRFUk5BTCwgJmZsdCk7Ci0JaWYgKHNldHNvY2tvcHQobWFpbl9v cHRzLnNvY2ssIFNPTF9IQ0ksIEhDSV9GSUxURVIsICZmbHQsCi0JCQkJCQkJc2l6ZW9mKGZsdCkp IDwgMCkgewotCQllcnJvcigiQ2FuJ3Qgc2V0IGZpbHRlcjogJXMgKCVkKSIsIHN0cmVycm9yKGVy cm5vKSwgZXJybm8pOwotCQlleGl0KDEpOwotCX0KLQotCW1lbXNldCgmYWRkciwgMCwgc2l6ZW9m KGFkZHIpKTsKLQlhZGRyLmhjaV9mYW1pbHkgPSBBRl9CTFVFVE9PVEg7Ci0JYWRkci5oY2lfZGV2 ID0gSENJX0RFVl9OT05FOwotCWlmIChiaW5kKG1haW5fb3B0cy5zb2NrLCAoc3RydWN0IHNvY2th ZGRyICopICZhZGRyLAotCQkJCQkJCXNpemVvZihhZGRyKSkgPCAwKSB7Ci0JCWVycm9yKCJDYW4n dCBiaW5kIEhDSSBzb2NrZXQ6ICVzICglZCkiLAotCQkJCQkJCXN0cmVycm9yKGVycm5vKSwgZXJy bm8pOwotCQlleGl0KDEpOwotCX0KLQogCWNvbmZpZyA9IGxvYWRfY29uZmlnKENPTkZJR0RJUiAi L21haW4uY29uZiIpOwogCiAJcGFyc2VfY29uZmlnKGNvbmZpZyk7CkBAIC03NjgsMTYgKzY1OCw2 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlldmVudF9sb29wID0gZ19t YWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTsKIAotCWN0bF9pbyA9IGdfaW9fY2hhbm5lbF91bml4 X25ldyhtYWluX29wdHMuc29jayk7Ci0JZ19pb19jaGFubmVsX3NldF9jbG9zZV9vbl91bnJlZihj dGxfaW8sIFRSVUUpOwotCi0JZ19pb19hZGRfd2F0Y2goY3RsX2lvLCBHX0lPX0lOLCBpb19zdGFj a19ldmVudCwgTlVMTCk7Ci0KLQlnX2lvX2NoYW5uZWxfdW5yZWYoY3RsX2lvKTsKLQotCS8qIElu aXRpYWxpemUgYWxyZWFkeSBjb25uZWN0ZWQgZGV2aWNlcyAqLwotCWluaXRfYWxsX2RldmljZXMo bWFpbl9vcHRzLnNvY2spOwotCiAJc3RhcnRpbmcgPSBGQUxTRTsKIAogCW1hbmFnZXJfc3RhcnR1 cF9jb21wbGV0ZSgpOwotLSAKMS41LjYuMwoK --001636417c17080ec9046837c1c9--