Return-Path: MIME-Version: 1.0 Date: Mon, 27 Apr 2009 17:59:55 +0530 Message-ID: <8b5debfa0904270529n39f223e5g5773495cb0fe72dc@mail.gmail.com> Subject: [PATCHES][HCIOPS] Initial hciops plugin implementation From: alok barsode To: linux-bluetooth Cc: Marcel Holtmann Content-Type: multipart/mixed; boundary=001e680f1af8f6c3d804688880d2 List-ID: --001e680f1af8f6c3d804688880d2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi Marcel/Johan/Luiz, Based on the discussion on #bluez, i am sending an updated patchset. Let me know what you think of it. Cheers, Alok. --001e680f1af8f6c3d804688880d2 Content-Type: text/x-diff; 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_fu15aqhh0 RnJvbSBiZDg1M2Y0YzhhOGE3ZWM0OWQ4MDQ1ZjEwYzczYjUzMzM4YTg3NjMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUdWUsIDIxIEFwciAyMDA5IDIwOjE2OjA0ICswNTMwClN1YmplY3Q6IFtQQVRDSCAx LzhdIEluaXRpYWxpbmcgSENJIHJhdyBzb2NrZXQgcGx1Z2luICJoY2lvcHMiLgoKLS0tCiBwbHVn 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= --001e680f1af8f6c3d804688880d2 Content-Type: text/x-diff; 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_fu15arol1 RnJvbSAzOTM4MDMzYzVmYzE2NzY2YTU1MWQ5NjgwNzcwY2E5M2U4MTFlOWQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUdWUsIDIxIEFwciAyMDA5IDIxOjU4OjA3ICswNTMwClN1YmplY3Q6IFtQQVRDSCAy LzhdIGV4cG9ydGluZyBkZXZpY2VfZXZlbnQoKS4KCi0tLQogc3JjL2hjaWQuaCB8ICAgIDEgKwog 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 --001e680f1af8f6c3d804688880d2 Content-Type: text/x-diff; 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_fu15as592 RnJvbSBhOTBiOTM2NDIzOGQwZjJlZGQ3NjNhM2RiNjY5ODEwYzQzYmQ4ZTk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUaHUsIDIzIEFwciAyMDA5IDE2OjQyOjE2ICswNTMwClN1YmplY3Q6IFtQQVRDSCAz LzhdIE1vZGlmeWluZyBkZXZpY2VfZGV2cmVnX3NldHVwLiBDaGVjayBpZiBkZXZpY2UgaXMgdXAg aW4gZGV2aWNlX2RldnJlZ19zZXR1cCBpbnN0ZWFkIG9mIHVzaW5nIGRldnVwIHBhcmFtZXRlci4K Ci0tLQogc3JjL21haW4uYyB8ICAgMTMgKysrKysrKystLS0tLQogMSBmaWxlcyBjaGFuZ2VkLCA4 IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL21haW4uYyBi L3NyYy9tYWluLmMKaW5kZXggMDJiNGViZi4uZDEyZWRjNSAxMDA2NDQKLS0tIGEvc3JjL21haW4u YworKysgYi9zcmMvbWFpbi5jCkBAIC00NzcsOSArNDc3LDEwIEBAIGZhaWw6CiAJZXhpdCgxKTsK IH0KIAotc3RhdGljIHZvaWQgZGV2aWNlX2RldnJlZ19zZXR1cChpbnQgZGV2X2lkLCBnYm9vbGVh biBkZXZ1cCkKK3N0YXRpYyB2b2lkIGRldmljZV9kZXZyZWdfc2V0dXAoaW50IGRldl9pZCkKIHsK IAlzdHJ1Y3QgaGNpX2Rldl9pbmZvIGRpOworCWdib29sZWFuIGRldnVwOwogCiAJaW5pdF9kZXZp Y2UoZGV2X2lkKTsKIApAQCAtNDg4LDYgKzQ4OSw4IEBAIHN0YXRpYyB2b2lkIGRldmljZV9kZXZy ZWdfc2V0dXAoaW50IGRldl9pZCwgZ2Jvb2xlYW4gZGV2dXApCiAJaWYgKGhjaV9kZXZpbmZvKGRl dl9pZCwgJmRpKSA8IDApCiAJCXJldHVybjsKIAorCWRldnVwID0gaGNpX3Rlc3RfYml0KEhDSV9V UCwgJmRpLmZsYWdzKTsKKwogCWlmICghaGNpX3Rlc3RfYml0KEhDSV9SQVcsICZkaS5mbGFncykp CiAJCW1hbmFnZXJfcmVnaXN0ZXJfYWRhcHRlcihkZXZfaWQsIGRldnVwKTsKIH0KQEAgLTUyOCwx MCArNTMxLDEwIEBAIHN0YXRpYyB2b2lkIGluaXRfYWxsX2RldmljZXMoaW50IGN0bCkKIAlmb3Ig KGkgPSAwOyBpIDwgZGwtPmRldl9udW07IGkrKywgZHIrKykgewogCQlnYm9vbGVhbiBkZXZ1cDsK IAotCQlkZXZ1cCA9IGhjaV90ZXN0X2JpdChIQ0lfVVAsICZkci0+ZGV2X29wdCk7Ci0KIAkJaW5m bygiSENJIGRldiAlZCByZWdpc3RlcmVkIiwgZHItPmRldl9pZCk7Ci0JCWRldmljZV9kZXZyZWdf c2V0dXAoZHItPmRldl9pZCwgZGV2dXApOworCQlkZXZpY2VfZGV2cmVnX3NldHVwKGRyLT5kZXZf aWQpOworCisJCWRldnVwID0gaGNpX3Rlc3RfYml0KEhDSV9VUCwgJmRyLT5kZXZfb3B0KTsKIAkJ aWYgKGRldnVwKSB7CiAJCQlpbmZvKCJIQ0kgZGV2ICVkIGFscmVhZHkgdXAiLCBkci0+ZGV2X2lk KTsKIAkJCWRldmljZV9kZXZ1cF9zZXR1cChkci0+ZGV2X2lkKTsKQEAgLTU2MSw3ICs1NjQsNyBA QCB2b2lkIGRldmljZV9ldmVudChpbnQgZXZlbnQsIGludCBkZXZfaWQpCiAJc3dpdGNoIChldmVu dCkgewogCWNhc2UgSENJX0RFVl9SRUc6CiAJCWluZm8oIkhDSSBkZXYgJWQgcmVnaXN0ZXJlZCIs IGRldl9pZCk7Ci0JCWRldmljZV9kZXZyZWdfc2V0dXAoZGV2X2lkLCBGQUxTRSk7CisJCWRldmlj ZV9kZXZyZWdfc2V0dXAoZGV2X2lkKTsKIAkJYnJlYWs7CiAKIAljYXNlIEhDSV9ERVZfVU5SRUc6 Ci0tIAoxLjUuNi4zCgo= --001e680f1af8f6c3d804688880d2 Content-Type: text/x-diff; 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_fu15ashz3 RnJvbSAwZDg5MWVlY2U5NjVjMDE5N2QzZGRiNDUzMzZhNjQ2ZGNjMjI3OTk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUaHUsIDIzIEFwciAyMDA5IDE2OjQ2OjQxICswNTMwClN1YmplY3Q6IFtQQVRDSCA0 LzhdIFVzaW5nIGRldmljZV9ldmVudCB0byByZWdpc3RlciBhbmQgc2V0dXAgYWxyZWFkeSBrbm93 biBkZXZpY2VzLgoKLS0tCiBzcmMvbWFpbi5jIHwgICAgOSArKystLS0tLS0KIDEgZmlsZXMgY2hh bmdlZCwgMyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9t YWluLmMgYi9zcmMvbWFpbi5jCmluZGV4IGQxMmVkYzUuLjkzZGJmNzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9tYWluLmMKKysrIGIvc3JjL21haW4uYwpAQCAtNTMxLDE0ICs1MzEsMTEgQEAgc3RhdGljIHZv aWQgaW5pdF9hbGxfZGV2aWNlcyhpbnQgY3RsKQogCWZvciAoaSA9IDA7IGkgPCBkbC0+ZGV2X251 bTsgaSsrLCBkcisrKSB7CiAJCWdib29sZWFuIGRldnVwOwogCi0JCWluZm8oIkhDSSBkZXYgJWQg cmVnaXN0ZXJlZCIsIGRyLT5kZXZfaWQpOwotCQlkZXZpY2VfZGV2cmVnX3NldHVwKGRyLT5kZXZf aWQpOworCQlkZXZpY2VfZXZlbnQoSENJX0RFVl9SRUcsIGRyLT5kZXZfaWQpOwogCiAJCWRldnVw ID0gaGNpX3Rlc3RfYml0KEhDSV9VUCwgJmRyLT5kZXZfb3B0KTsKLQkJaWYgKGRldnVwKSB7Ci0J CQlpbmZvKCJIQ0kgZGV2ICVkIGFscmVhZHkgdXAiLCBkci0+ZGV2X2lkKTsKLQkJCWRldmljZV9k ZXZ1cF9zZXR1cChkci0+ZGV2X2lkKTsKLQkJfQorCQlpZiAoZGV2dXApCisJCQlkZXZpY2VfZXZl bnQoSENJX0RFVl9VUCwgZHItPmRldl9pZCk7CiAJfQogCiAJZ19mcmVlKGRsKTsKLS0gCjEuNS42 LjMKCg== --001e680f1af8f6c3d804688880d2 Content-Type: text/x-diff; 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_fu15asy04 RnJvbSAxNzYzZmFhODI2MmZkZDY1YmIwZmQ1ZGI2ZTY3MzJiZjg5ZDVmOGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBhemluZ28uY29t PgpEYXRlOiBUaHUsIDIzIEFwciAyMDA5IDE3OjM1OjAyICswNTMwClN1YmplY3Q6IFtQQVRDSCA1 LzhdIEluaXRpYWxpemluZyBoY2lvcHMgcGx1Z2luLiBBZGRpbmcgSU8gZXZlbnQgaGFuZGluZy4K 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 --001e680f1af8f6c3d804688880d2 Content-Type: text/x-diff; charset=US-ASCII; name="0006-Moving-all-adapter-initialization-code-to-hciops-plu.patch" Content-Disposition: attachment; filename="0006-Moving-all-adapter-initialization-code-to-hciops-plu.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fu15atbr5 RnJvbSBkYWJiNjU2OGNhODdlNmVmZjlhMGVmOGQ2ZGE1NTVkNTA1MGI2MDU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjQgQXByIDIwMDkgMTU6NDg6NTggKzA1MzAKU3ViamVjdDogW1BBVENIIDYv OF0gTW92aW5nIGFsbCBhZGFwdGVyIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gaGNpb3BzIHBsdWdp bi4KCi0tLQogcGx1Z2lucy9oY2lvcHMuYyB8ICAyNDggKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvaGNpZC5oICAgICAgIHwgICAxMSAr KysKIHNyYy9tYWluLmMgICAgICAgfCAgMjQ5ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyNTkgaW5zZXJ0aW9u cygrKSwgMjQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsdWdpbnMvaGNpb3BzLmMgYi9w bHVnaW5zL2hjaW9wcy5jCmluZGV4IDMyZjgyZDAuLjI1ZjUxNzEgMTAwNjQ0Ci0tLSBhL3BsdWdp bnMvaGNpb3BzLmMKKysrIGIvcGx1Z2lucy9oY2lvcHMuYwpAQCAtMjQsMTAgKzI0LDE5IEBACiAj aWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCisKKyNpbmNs dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp bmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUg PHN5cy9zb2NrZXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvaW9j dGwuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgogCiAjaW5jbHVkZSA8Ymx1ZXRvb3RoL2JsdWV0 b290aC5oPgogI2luY2x1ZGUgPGJsdWV0b290aC9oY2kuaD4KQEAgLTM1LDEwICs0NCwyMzUgQEAK IAogI2luY2x1ZGUgPGdsaWIuaD4KIAorI2luY2x1ZGUgPGRidXMvZGJ1cy5oPgorCiAjaW5jbHVk ZSAiaGNpZC5oIgorI2luY2x1ZGUgInNkcGQuaCIKKyNpbmNsdWRlICJhZGFwdGVyLmgiCiAjaW5j bHVkZSAicGx1Z2luLmgiCiAjaW5jbHVkZSAibG9nZ2luZy5oIgorI2luY2x1ZGUgIm1hbmFnZXIu aCIKKyNpbmNsdWRlICJzdG9yYWdlLmgiCisKK3N0YXRpYyBpbnQgY2hpbGRfcGlwZVsyXTsKKwor c3RhdGljIGdib29sZWFuIGNoaWxkX2V4aXQoR0lPQ2hhbm5lbCAqaW8sIEdJT0NvbmRpdGlvbiBj b25kLCB2b2lkICp1c2VyX2RhdGEpCit7CisJaW50IHN0YXR1cywgZmQgPSBnX2lvX2NoYW5uZWxf dW5peF9nZXRfZmQoaW8pOworCXBpZF90IGNoaWxkX3BpZDsKKworCWlmIChyZWFkKGZkLCAmY2hp bGRfcGlkLCBzaXplb2YoY2hpbGRfcGlkKSkgIT0gc2l6ZW9mKGNoaWxkX3BpZCkpIHsKKwkJZXJy b3IoImNoaWxkX2V4aXQ6IHVuYWJsZSB0byByZWFkIGNoaWxkIHBpZCBmcm9tIHBpcGUiKTsKKwkJ cmV0dXJuIFRSVUU7CisJfQorCisJaWYgKHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKSAh PSBjaGlsZF9waWQpCisJCWVycm9yKCJ3YWl0cGlkKCVkKSBmYWlsZWQiLCBjaGlsZF9waWQpOwor CWVsc2UKKwkJZGVidWcoImNoaWxkICVkIGV4aXRlZCIsIGNoaWxkX3BpZCk7CisKKwlyZXR1cm4g VFJVRTsKK30KKworc3RhdGljIHZvaWQgYXRfY2hpbGRfZXhpdCh2b2lkKQoreworCXBpZF90IHBp ZCA9IGdldHBpZCgpOworCisJaWYgKHdyaXRlKGNoaWxkX3BpcGVbMV0sICZwaWQsIHNpemVvZihw aWQpKSAhPSBzaXplb2YocGlkKSkKKwkJZXJyb3IoInVuYWJsZSB0byB3cml0ZSB0byBjaGlsZCBw aXBlIik7Cit9CisKK3N0YXRpYyB2b2lkIGNvbmZpZ3VyZV9kZXZpY2UoaW50IGRldl9pZCkKK3sK KwlzdHJ1Y3QgaGNpX2Rldl9pbmZvIGRpOworCXVpbnQxNl90IHBvbGljeTsKKwlpbnQgZGQ7CisK KwlpZiAoaGNpX2RldmluZm8oZGV2X2lkLCAmZGkpIDwgMCkKKwkJcmV0dXJuOworCisJaWYgKGhj aV90ZXN0X2JpdChIQ0lfUkFXLCAmZGkuZmxhZ3MpKQorCQlyZXR1cm47CisKKwlkZCA9IGhjaV9v cGVuX2RldihkZXZfaWQpOworCWlmIChkZCA8IDApIHsKKwkJZXJyb3IoIkNhbid0IG9wZW4gZGV2 aWNlIGhjaSVkOiAlcyAoJWQpIiwKKwkJCQkJCWRldl9pZCwgc3RyZXJyb3IoZXJybm8pLCBlcnJu byk7CisJCXJldHVybjsKKwl9CisKKwkvKiBTZXQgZGV2aWNlIG5hbWUgKi8KKwlpZiAoKG1haW5f b3B0cy5mbGFncyAmICgxIDw8IEhDSURfU0VUX05BTUUpKSAmJiBtYWluX29wdHMubmFtZSkgewor CQljaGFuZ2VfbG9jYWxfbmFtZV9jcCBjcDsKKworCQltZW1zZXQoY3AubmFtZSwgMCwgc2l6ZW9m KGNwLm5hbWUpKTsKKwkJZXhwYW5kX25hbWUoKGNoYXIgKikgY3AubmFtZSwgc2l6ZW9mKGNwLm5h bWUpLAorCQkJCQkJbWFpbl9vcHRzLm5hbWUsIGRldl9pZCk7CisKKwkJaGNpX3NlbmRfY21kKGRk LCBPR0ZfSE9TVF9DVEwsIE9DRl9DSEFOR0VfTE9DQUxfTkFNRSwKKwkJCQkJQ0hBTkdFX0xPQ0FM X05BTUVfQ1BfU0laRSwgJmNwKTsKKwl9CisKKwkvKiBTZXQgZGV2aWNlIGNsYXNzICovCisJaWYg KChtYWluX29wdHMuZmxhZ3MgJiAoMSA8PCBIQ0lEX1NFVF9DTEFTUykpKSB7CisJCXdyaXRlX2Ns YXNzX29mX2Rldl9jcCBjcDsKKwkJdWludDMyX3QgY2xhc3M7CisJCXVpbnQ4X3QgY2xzWzNdOwor CisJCWlmIChyZWFkX2xvY2FsX2NsYXNzKCZkaS5iZGFkZHIsIGNscykgPCAwKSB7CisJCQljbGFz cyA9IGh0b2JsKG1haW5fb3B0cy5jbGFzcyk7CisJCQljbHNbMl0gPSBnZXRfc2VydmljZV9jbGFz c2VzKCZkaS5iZGFkZHIpOworCQkJbWVtY3B5KGNwLmRldl9jbGFzcywgJmNsYXNzLCAzKTsKKwkJ fSBlbHNlIHsKKwkJCWlmICghKG1haW5fb3B0cy5zY2FuICYgU0NBTl9JTlFVSVJZKSkKKwkJCQlj bHNbMV0gJj0gMHhkZjsgLyogQ2xlYXIgZGlzY292ZXJhYmxlIGJpdCAqLworCQkJY2xzWzJdID0g Z2V0X3NlcnZpY2VfY2xhc3NlcygmZGkuYmRhZGRyKTsKKwkJCW1lbWNweShjcC5kZXZfY2xhc3Ms IGNscywgMyk7CisJCX0KKworCQloY2lfc2VuZF9jbWQoZGQsIE9HRl9IT1NUX0NUTCwgT0NGX1dS SVRFX0NMQVNTX09GX0RFViwKKwkJCQkJV1JJVEVfQ0xBU1NfT0ZfREVWX0NQX1NJWkUsICZjcCk7 CisJfQorCisJLyogU2V0IHBhZ2UgdGltZW91dCAqLworCWlmICgobWFpbl9vcHRzLmZsYWdzICYg KDEgPDwgSENJRF9TRVRfUEFHRVRPKSkpIHsKKwkJd3JpdGVfcGFnZV90aW1lb3V0X2NwIGNwOwor CisJCWNwLnRpbWVvdXQgPSBodG9icyhtYWluX29wdHMucGFnZXRvKTsKKwkJaGNpX3NlbmRfY21k KGRkLCBPR0ZfSE9TVF9DVEwsIE9DRl9XUklURV9QQUdFX1RJTUVPVVQsCisJCQkJCVdSSVRFX1BB R0VfVElNRU9VVF9DUF9TSVpFLCAmY3ApOworCX0KKworCS8qIFNldCBkZWZhdWx0IGxpbmsgcG9s aWN5ICovCisJcG9saWN5ID0gaHRvYnMobWFpbl9vcHRzLmxpbmtfcG9saWN5KTsKKwloY2lfc2Vu ZF9jbWQoZGQsIE9HRl9MSU5LX1BPTElDWSwKKwkJCQlPQ0ZfV1JJVEVfREVGQVVMVF9MSU5LX1BP TElDWSwgMiwgJnBvbGljeSk7CisKKwloY2lfY2xvc2VfZGV2KGRkKTsKK30KKworc3RhdGljIHZv aWQgaW5pdF9kZXZpY2UoaW50IGRldl9pZCkKK3sKKwlzdHJ1Y3QgaGNpX2Rldl9yZXEgZHI7CisJ c3RydWN0IGhjaV9kZXZfaW5mbyBkaTsKKwlwaWRfdCBwaWQ7CisJaW50IGRkOworCisJLyogRG8g aW5pdGlhbGl6YXRpb24gaW4gdGhlIHNlcGFyYXRlIHByb2Nlc3MgKi8KKwlwaWQgPSBmb3JrKCk7 CisJc3dpdGNoIChwaWQpIHsKKwkJY2FzZSAwOgorCQkJYXRleGl0KGF0X2NoaWxkX2V4aXQpOwor CQkJYnJlYWs7CisJCWNhc2UgLTE6CisJCQllcnJvcigiRm9yayBmYWlsZWQuIENhbid0IGluaXQg ZGV2aWNlIGhjaSVkOiAlcyAoJWQpIiwKKwkJCQkJZGV2X2lkLCBzdHJlcnJvcihlcnJubyksIGVy cm5vKTsKKwkJZGVmYXVsdDoKKwkJCWRlYnVnKCJjaGlsZCAlZCBmb3JrZWQiLCBwaWQpOworCQkJ cmV0dXJuOworCX0KKworCWRkID0gaGNpX29wZW5fZGV2KGRldl9pZCk7CisJaWYgKGRkIDwgMCkg eworCQllcnJvcigiQ2FuJ3Qgb3BlbiBkZXZpY2UgaGNpJWQ6ICVzICglZCkiLAorCQkJCQlkZXZf aWQsIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOworCQlleGl0KDEpOworCX0KIAorCW1lbXNldCgm ZHIsIDAsIHNpemVvZihkcikpOworCWRyLmRldl9pZCA9IGRldl9pZDsKKworCS8qIFNldCBsaW5r IG1vZGUgKi8KKwlkci5kZXZfb3B0ID0gbWFpbl9vcHRzLmxpbmtfbW9kZTsKKwlpZiAoaW9jdGwo ZGQsIEhDSVNFVExJTktNT0RFLCAodW5zaWduZWQgbG9uZykgJmRyKSA8IDApIHsKKwkJZXJyb3Io IkNhbid0IHNldCBsaW5rIG1vZGUgb24gaGNpJWQ6ICVzICglZCkiLAorCQkJCQlkZXZfaWQsIHN0 cmVycm9yKGVycm5vKSwgZXJybm8pOworCX0KKworCS8qIFNldCBsaW5rIHBvbGljeSAqLworCWRy LmRldl9vcHQgPSBtYWluX29wdHMubGlua19wb2xpY3k7CisJaWYgKGlvY3RsKGRkLCBIQ0lTRVRM SU5LUE9MLCAodW5zaWduZWQgbG9uZykgJmRyKSA8IDAgJiYKKwkJCQkJCQllcnJubyAhPSBFTkVU RE9XTikgeworCQllcnJvcigiQ2FuJ3Qgc2V0IGxpbmsgcG9saWN5IG9uIGhjaSVkOiAlcyAoJWQp IiwKKwkJCQkJZGV2X2lkLCBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwl9CisKKwkvKiBTdGFy dCBIQ0kgZGV2aWNlICovCisJaWYgKGlvY3RsKGRkLCBIQ0lERVZVUCwgZGV2X2lkKSA8IDAgJiYg ZXJybm8gIT0gRUFMUkVBRFkpIHsKKwkJZXJyb3IoIkNhbid0IGluaXQgZGV2aWNlIGhjaSVkOiAl cyAoJWQpIiwKKwkJCQkJZGV2X2lkLCBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwkJZ290byBm YWlsOworCX0KKworCWlmIChoY2lfZGV2aW5mbyhkZXZfaWQsICZkaSkgPCAwKQorCQlnb3RvIGZh aWw7CisKKwlpZiAoaGNpX3Rlc3RfYml0KEhDSV9SQVcsICZkaS5mbGFncykpCisJCWdvdG8gZG9u ZTsKKworZG9uZToKKwloY2lfY2xvc2VfZGV2KGRkKTsKKwlleGl0KDApOworCitmYWlsOgorCWhj aV9jbG9zZV9kZXYoZGQpOworCWV4aXQoMSk7Cit9CisKK3N0YXRpYyB2b2lkIGRldmljZV9kZXZy ZWdfc2V0dXAoaW50IGRldl9pZCkKK3sKKwlzdHJ1Y3QgaGNpX2Rldl9pbmZvIGRpOworCWdib29s ZWFuIGRldnVwOworCisJaW5pdF9kZXZpY2UoZGV2X2lkKTsKKworCW1lbXNldCgmZGksIDAsIHNp emVvZihkaSkpOworCisJaWYgKGhjaV9kZXZpbmZvKGRldl9pZCwgJmRpKSA8IDApCisJCXJldHVy bjsKKworCWRldnVwID0gaGNpX3Rlc3RfYml0KEhDSV9VUCwgJmRpLmZsYWdzKTsKKworCWlmICgh aGNpX3Rlc3RfYml0KEhDSV9SQVcsICZkaS5mbGFncykpCisJCW1hbmFnZXJfcmVnaXN0ZXJfYWRh cHRlcihkZXZfaWQsIGRldnVwKTsKK30KKworc3RhdGljIHZvaWQgZGV2aWNlX2RldnVwX3NldHVw KGludCBkZXZfaWQpCit7CisJY29uZmlndXJlX2RldmljZShkZXZfaWQpOworCisJc3RhcnRfc2Vj dXJpdHlfbWFuYWdlcihkZXZfaWQpOworCisJLyogUmV0dXJuIHZhbHVlIDEgbWVhbnMgaW9jdGwo REVWRE9XTikgd2FzIHBlcmZvcm1lZCAqLworCWlmIChtYW5hZ2VyX3N0YXJ0X2FkYXB0ZXIoZGV2 X2lkKSA9PSAxKQorCQlzdG9wX3NlY3VyaXR5X21hbmFnZXIoZGV2X2lkKTsKK30KKwordm9pZCBk ZXZpY2VfZXZlbnQoaW50IGV2ZW50LCBpbnQgZGV2X2lkKQoreworCXN3aXRjaCAoZXZlbnQpIHsK KwljYXNlIEhDSV9ERVZfUkVHOgorCQlpbmZvKCJIQ0kgZGV2ICVkIHJlZ2lzdGVyZWQiLCBkZXZf aWQpOworCQlkZXZpY2VfZGV2cmVnX3NldHVwKGRldl9pZCk7CisJCWJyZWFrOworCisJY2FzZSBI Q0lfREVWX1VOUkVHOgorCQlpbmZvKCJIQ0kgZGV2ICVkIHVucmVnaXN0ZXJlZCIsIGRldl9pZCk7 CisJCW1hbmFnZXJfdW5yZWdpc3Rlcl9hZGFwdGVyKGRldl9pZCk7CisJCWJyZWFrOworCisJY2Fz ZSBIQ0lfREVWX1VQOgorCQlpbmZvKCJIQ0kgZGV2ICVkIHVwIiwgZGV2X2lkKTsKKwkJZGV2aWNl X2RldnVwX3NldHVwKGRldl9pZCk7CisJCWJyZWFrOworCisJY2FzZSBIQ0lfREVWX0RPV046CisJ CWluZm8oIkhDSSBkZXYgJWQgZG93biIsIGRldl9pZCk7CisJCW1hbmFnZXJfc3RvcF9hZGFwdGVy KGRldl9pZCk7CisJCXN0b3Bfc2VjdXJpdHlfbWFuYWdlcihkZXZfaWQpOworCQlicmVhazsKKwl9 Cit9CiAKIHN0YXRpYyBpbnQgaW5pdF9hbGxfZGV2aWNlcyhpbnQgY3RsKQogewpAQCAtMTI1LDkg KzM1OSwyMSBAQCBzdGF0aWMgaW50IGhjaW9wc19pbml0KHZvaWQpCiB7CiAJc3RydWN0IHNvY2th ZGRyX2hjaSBhZGRyOwogCXN0cnVjdCBoY2lfZmlsdGVyIGZsdDsKLQlHSU9DaGFubmVsICpjdGxf aW87CisJR0lPQ2hhbm5lbCAqY3RsX2lvLCAqY2hpbGRfaW87OwogCWludCBzb2NrOwogCisJaWYg KHBpcGUoY2hpbGRfcGlwZSkgPCAwKSB7CisJCWVycm9yKCJwaXBlKCk6ICVzICglZCkiLCBzdHJl cnJvcihlcnJubyksIGVycm5vKTsKKwkJcmV0dXJuIGVycm5vOworCX0KKworCWNoaWxkX2lvID0g Z19pb19jaGFubmVsX3VuaXhfbmV3KGNoaWxkX3BpcGVbMF0pOworCWdfaW9fY2hhbm5lbF9zZXRf Y2xvc2Vfb25fdW5yZWYoY2hpbGRfaW8sIFRSVUUpOworCWdfaW9fYWRkX3dhdGNoKGNoaWxkX2lv LAorCQkJR19JT19JTiB8IEdfSU9fRVJSIHwgR19JT19IVVAgfCBHX0lPX05WQUwsCisJCQljaGls ZF9leGl0LCBOVUxMKTsKKwlnX2lvX2NoYW5uZWxfdW5yZWYoY2hpbGRfaW8pOworCiAJLyogQ3Jl YXRlIGFuZCBiaW5kIEhDSSBzb2NrZXQgKi8KIAlzb2NrID0gc29ja2V0KEFGX0JMVUVUT09USCwg U09DS19SQVcsIEJUUFJPVE9fSENJKTsKIAlpZiAoc29jayA8IDApIHsKZGlmZiAtLWdpdCBhL3Ny Yy9oY2lkLmggYi9zcmMvaGNpZC5oCmluZGV4IDIzNjQ0OWQuLmU2Zjg1ZDMgMTAwNjQ0Ci0tLSBh L3NyYy9oY2lkLmgKKysrIGIvc3JjL2hjaWQuaApAQCAtNDIsNiArNDIsOCBAQAogI2RlZmluZSBN T0RFX0xJTUlURUQJCTB4MDMKICNkZWZpbmUgTU9ERV9VTktOT1dOCQkweGZmCiAKKyNkZWZpbmUg SENJRF9ERUZBVUxUX0RJU0NPVkVSQUJMRV9USU1FT1VUIDE4MCAvKiAzIG1pbnV0ZXMgKi8KKwog LyogVGltZW91dCBmb3IgaGNpX3NlbmRfcmVxIChtaWxsaXNlY29uZHMpICovCiAjZGVmaW5lIEhD SV9SRVFfVElNRU9VVAkJNTAwMAogCkBAIC02Niw4ICs2OCwxNyBAQCBzdHJ1Y3QgbWFpbl9vcHRz IHsKIAlpbnQJCXNvY2s7CiB9OwogCitlbnVtIHsKKwlIQ0lEX1NFVF9OQU1FLAorCUhDSURfU0VU X0NMQVNTLAorCUhDSURfU0VUX1BBR0VUTywKKwlIQ0lEX1NFVF9ESVNDT1ZUTywKK307CisKIGV4 dGVybiBzdHJ1Y3QgbWFpbl9vcHRzIG1haW5fb3B0czsKIAorY2hhciAqZXhwYW5kX25hbWUoY2hh ciAqZHN0LCBpbnQgc2l6ZSwgY2hhciAqc3RyLCBpbnQgZGV2X2lkKTsKKwogdm9pZCBkZXZpY2Vf ZXZlbnQoaW50IGV2ZW50LCBpbnQgZGV2X2lkKTsKIHZvaWQgaGNpX3JlcV9xdWV1ZV9yZW1vdmUo aW50IGRldl9pZCwgYmRhZGRyX3QgKmRiYSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9z cmMvbWFpbi5jCmluZGV4IDMwOWQ0YmIuLmE1YTcyOGMgMTAwNjQ0Ci0tLSBhL3NyYy9tYWluLmMK KysrIGIvc3JjL21haW4uYwpAQCAtMjgsMTcgKzI4LDEzIEBACiAjZW5kaWYKIAogI2luY2x1ZGUg PHN0ZGlvLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1 ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgot I2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lz L2lvY3RsLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5o PgotI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAKICNpbmNsdWRlIDxibHVldG9vdGgvYmx1ZXRvb3Ro Lmg+CiAjaW5jbHVkZSA8Ymx1ZXRvb3RoL2hjaS5oPgpAQCAtNTcsMjEgKzUzLDkgQEAKICNpbmNs dWRlICJkYnVzLWNvbW1vbi5oIgogI2luY2x1ZGUgImFnZW50LmgiCiAjaW5jbHVkZSAibWFuYWdl ci5oIgotI2luY2x1ZGUgInN0b3JhZ2UuaCIKLQotI2RlZmluZSBIQ0lEX0RFRkFVTFRfRElTQ09W RVJBQkxFX1RJTUVPVVQgMTgwIC8qIDMgbWludXRlcyAqLwotCi1lbnVtIHsKLQlIQ0lEX1NFVF9O QU1FLAotCUhDSURfU0VUX0NMQVNTLAotCUhDSURfU0VUX1BBR0VUTywKLQlIQ0lEX1NFVF9ESVND T1ZUTywKLX07CiAKIHN0cnVjdCBtYWluX29wdHMgbWFpbl9vcHRzOwogCi1zdGF0aWMgaW50IGNo aWxkX3BpcGVbMl07Ci0KIHN0YXRpYyBnYm9vbGVhbiBzdGFydGluZyA9IFRSVUU7CiAKIHN0YXRp YyBHS2V5RmlsZSAqbG9hZF9jb25maWcoY29uc3QgY2hhciAqZmlsZSkKQEAgLTI2MCw3ICsyNDQs NyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfc2VydmljZV9jbGFzc2VzKGNvbnN0IGJkYWRkcl90ICpi ZGFkZHIsIHVpbnQ4X3QgdmFsdWUpCiAgKiBEZXZpY2UgbmFtZSBleHBhbnNpb24KICAqICAgJWQg LSBkZXZpY2UgaWQKICAqLwotc3RhdGljIGNoYXIgKmV4cGFuZF9uYW1lKGNoYXIgKmRzdCwgaW50 IHNpemUsIGNoYXIgKnN0ciwgaW50IGRldl9pZCkKK2NoYXIgKmV4cGFuZF9uYW1lKGNoYXIgKmRz dCwgaW50IHNpemUsIGNoYXIgKnN0ciwgaW50IGRldl9pZCkKIHsKIAlyZWdpc3RlciBpbnQgc3As IG5wLCBvbGVuOwogCWNoYXIgKm9wdCwgYnVmWzEwXTsKQEAgLTMxNCwxOTggKzI5OCw2IEBAIHN0 YXRpYyBjaGFyICpleHBhbmRfbmFtZShjaGFyICpkc3QsIGludCBzaXplLCBjaGFyICpzdHIsIGlu dCBkZXZfaWQpCiAJcmV0dXJuIGRzdDsKIH0KIAotc3RhdGljIGdib29sZWFuIGNoaWxkX2V4aXQo R0lPQ2hhbm5lbCAqaW8sIEdJT0NvbmRpdGlvbiBjb25kLCB2b2lkICp1c2VyX2RhdGEpCi17Ci0J aW50IHN0YXR1cywgZmQgPSBnX2lvX2NoYW5uZWxfdW5peF9nZXRfZmQoaW8pOwotCXBpZF90IGNo aWxkX3BpZDsKLQotCWlmIChyZWFkKGZkLCAmY2hpbGRfcGlkLCBzaXplb2YoY2hpbGRfcGlkKSkg IT0gc2l6ZW9mKGNoaWxkX3BpZCkpIHsKLQkJZXJyb3IoImNoaWxkX2V4aXQ6IHVuYWJsZSB0byBy ZWFkIGNoaWxkIHBpZCBmcm9tIHBpcGUiKTsKLQkJcmV0dXJuIFRSVUU7Ci0JfQotCi0JaWYgKHdh aXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKSAhPSBjaGlsZF9waWQpCi0JCWVycm9yKCJ3YWl0 cGlkKCVkKSBmYWlsZWQiLCBjaGlsZF9waWQpOwotCWVsc2UKLQkJZGVidWcoImNoaWxkICVkIGV4 aXRlZCIsIGNoaWxkX3BpZCk7Ci0KLQlyZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIHZvaWQgYXRf Y2hpbGRfZXhpdCh2b2lkKQotewotCXBpZF90IHBpZCA9IGdldHBpZCgpOwotCi0JaWYgKHdyaXRl KGNoaWxkX3BpcGVbMV0sICZwaWQsIHNpemVvZihwaWQpKSAhPSBzaXplb2YocGlkKSkKLQkJZXJy b3IoInVuYWJsZSB0byB3cml0ZSB0byBjaGlsZCBwaXBlIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGNv bmZpZ3VyZV9kZXZpY2UoaW50IGRldl9pZCkKLXsKLQlzdHJ1Y3QgaGNpX2Rldl9pbmZvIGRpOwot CXVpbnQxNl90IHBvbGljeTsKLQlpbnQgZGQ7Ci0KLQlpZiAoaGNpX2RldmluZm8oZGV2X2lkLCAm ZGkpIDwgMCkKLQkJcmV0dXJuOwotCi0JaWYgKGhjaV90ZXN0X2JpdChIQ0lfUkFXLCAmZGkuZmxh Z3MpKQotCQlyZXR1cm47Ci0KLQlkZCA9IGhjaV9vcGVuX2RldihkZXZfaWQpOwotCWlmIChkZCA8 IDApIHsKLQkJZXJyb3IoIkNhbid0IG9wZW4gZGV2aWNlIGhjaSVkOiAlcyAoJWQpIiwKLQkJCQkJ CWRldl9pZCwgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0JCXJldHVybjsKLQl9Ci0KLQkvKiBT ZXQgZGV2aWNlIG5hbWUgKi8KLQlpZiAoKG1haW5fb3B0cy5mbGFncyAmICgxIDw8IEhDSURfU0VU X05BTUUpKSAmJiBtYWluX29wdHMubmFtZSkgewotCQljaGFuZ2VfbG9jYWxfbmFtZV9jcCBjcDsK LQotCQltZW1zZXQoY3AubmFtZSwgMCwgc2l6ZW9mKGNwLm5hbWUpKTsKLQkJZXhwYW5kX25hbWUo KGNoYXIgKikgY3AubmFtZSwgc2l6ZW9mKGNwLm5hbWUpLAotCQkJCQkJbWFpbl9vcHRzLm5hbWUs IGRldl9pZCk7Ci0KLQkJaGNpX3NlbmRfY21kKGRkLCBPR0ZfSE9TVF9DVEwsIE9DRl9DSEFOR0Vf TE9DQUxfTkFNRSwKLQkJCQkJQ0hBTkdFX0xPQ0FMX05BTUVfQ1BfU0laRSwgJmNwKTsKLQl9Ci0K LQkvKiBTZXQgZGV2aWNlIGNsYXNzICovCi0JaWYgKChtYWluX29wdHMuZmxhZ3MgJiAoMSA8PCBI Q0lEX1NFVF9DTEFTUykpKSB7Ci0JCXdyaXRlX2NsYXNzX29mX2Rldl9jcCBjcDsKLQkJdWludDMy X3QgY2xhc3M7Ci0JCXVpbnQ4X3QgY2xzWzNdOwotCi0JCWlmIChyZWFkX2xvY2FsX2NsYXNzKCZk aS5iZGFkZHIsIGNscykgPCAwKSB7Ci0JCQljbGFzcyA9IGh0b2JsKG1haW5fb3B0cy5jbGFzcyk7 Ci0JCQljbHNbMl0gPSBnZXRfc2VydmljZV9jbGFzc2VzKCZkaS5iZGFkZHIpOwotCQkJbWVtY3B5 KGNwLmRldl9jbGFzcywgJmNsYXNzLCAzKTsKLQkJfSBlbHNlIHsKLQkJCWlmICghKG1haW5fb3B0 cy5zY2FuICYgU0NBTl9JTlFVSVJZKSkKLQkJCQljbHNbMV0gJj0gMHhkZjsgLyogQ2xlYXIgZGlz Y292ZXJhYmxlIGJpdCAqLwotCQkJY2xzWzJdID0gZ2V0X3NlcnZpY2VfY2xhc3NlcygmZGkuYmRh ZGRyKTsKLQkJCW1lbWNweShjcC5kZXZfY2xhc3MsIGNscywgMyk7Ci0JCX0KLQotCQloY2lfc2Vu ZF9jbWQoZGQsIE9HRl9IT1NUX0NUTCwgT0NGX1dSSVRFX0NMQVNTX09GX0RFViwKLQkJCQkJV1JJ VEVfQ0xBU1NfT0ZfREVWX0NQX1NJWkUsICZjcCk7Ci0JfQotCi0JLyogU2V0IHBhZ2UgdGltZW91 dCAqLwotCWlmICgobWFpbl9vcHRzLmZsYWdzICYgKDEgPDwgSENJRF9TRVRfUEFHRVRPKSkpIHsK LQkJd3JpdGVfcGFnZV90aW1lb3V0X2NwIGNwOwotCi0JCWNwLnRpbWVvdXQgPSBodG9icyhtYWlu X29wdHMucGFnZXRvKTsKLQkJaGNpX3NlbmRfY21kKGRkLCBPR0ZfSE9TVF9DVEwsIE9DRl9XUklU RV9QQUdFX1RJTUVPVVQsCi0JCQkJCVdSSVRFX1BBR0VfVElNRU9VVF9DUF9TSVpFLCAmY3ApOwot CX0KLQotCS8qIFNldCBkZWZhdWx0IGxpbmsgcG9saWN5ICovCi0JcG9saWN5ID0gaHRvYnMobWFp bl9vcHRzLmxpbmtfcG9saWN5KTsKLQloY2lfc2VuZF9jbWQoZGQsIE9HRl9MSU5LX1BPTElDWSwK LQkJCQlPQ0ZfV1JJVEVfREVGQVVMVF9MSU5LX1BPTElDWSwgMiwgJnBvbGljeSk7Ci0KLQloY2lf Y2xvc2VfZGV2KGRkKTsKLX0KLQotc3RhdGljIHZvaWQgaW5pdF9kZXZpY2UoaW50IGRldl9pZCkK LXsKLQlzdHJ1Y3QgaGNpX2Rldl9yZXEgZHI7Ci0Jc3RydWN0IGhjaV9kZXZfaW5mbyBkaTsKLQlw aWRfdCBwaWQ7Ci0JaW50IGRkOwotCi0JLyogRG8gaW5pdGlhbGl6YXRpb24gaW4gdGhlIHNlcGFy YXRlIHByb2Nlc3MgKi8KLQlwaWQgPSBmb3JrKCk7Ci0Jc3dpdGNoIChwaWQpIHsKLQkJY2FzZSAw OgotCQkJYXRleGl0KGF0X2NoaWxkX2V4aXQpOwotCQkJYnJlYWs7Ci0JCWNhc2UgLTE6Ci0JCQll cnJvcigiRm9yayBmYWlsZWQuIENhbid0IGluaXQgZGV2aWNlIGhjaSVkOiAlcyAoJWQpIiwKLQkJ CQkJZGV2X2lkLCBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKLQkJZGVmYXVsdDoKLQkJCWRlYnVn KCJjaGlsZCAlZCBmb3JrZWQiLCBwaWQpOwotCQkJcmV0dXJuOwotCX0KLQotCWRkID0gaGNpX29w ZW5fZGV2KGRldl9pZCk7Ci0JaWYgKGRkIDwgMCkgewotCQllcnJvcigiQ2FuJ3Qgb3BlbiBkZXZp Y2UgaGNpJWQ6ICVzICglZCkiLAotCQkJCQlkZXZfaWQsIHN0cmVycm9yKGVycm5vKSwgZXJybm8p OwotCQlleGl0KDEpOwotCX0KLQotCW1lbXNldCgmZHIsIDAsIHNpemVvZihkcikpOwotCWRyLmRl dl9pZCA9IGRldl9pZDsKLQotCS8qIFNldCBsaW5rIG1vZGUgKi8KLQlkci5kZXZfb3B0ID0gbWFp bl9vcHRzLmxpbmtfbW9kZTsKLQlpZiAoaW9jdGwoZGQsIEhDSVNFVExJTktNT0RFLCAodW5zaWdu ZWQgbG9uZykgJmRyKSA8IDApIHsKLQkJZXJyb3IoIkNhbid0IHNldCBsaW5rIG1vZGUgb24gaGNp JWQ6ICVzICglZCkiLAotCQkJCQlkZXZfaWQsIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOwotCX0K LQotCS8qIFNldCBsaW5rIHBvbGljeSAqLwotCWRyLmRldl9vcHQgPSBtYWluX29wdHMubGlua19w b2xpY3k7Ci0JaWYgKGlvY3RsKGRkLCBIQ0lTRVRMSU5LUE9MLCAodW5zaWduZWQgbG9uZykgJmRy KSA8IDAgJiYKLQkJCQkJCQllcnJubyAhPSBFTkVURE9XTikgewotCQllcnJvcigiQ2FuJ3Qgc2V0 IGxpbmsgcG9saWN5IG9uIGhjaSVkOiAlcyAoJWQpIiwKLQkJCQkJZGV2X2lkLCBzdHJlcnJvcihl cnJubyksIGVycm5vKTsKLQl9Ci0KLQkvKiBTdGFydCBIQ0kgZGV2aWNlICovCi0JaWYgKGlvY3Rs KGRkLCBIQ0lERVZVUCwgZGV2X2lkKSA8IDAgJiYgZXJybm8gIT0gRUFMUkVBRFkpIHsKLQkJZXJy b3IoIkNhbid0IGluaXQgZGV2aWNlIGhjaSVkOiAlcyAoJWQpIiwKLQkJCQkJZGV2X2lkLCBzdHJl cnJvcihlcnJubyksIGVycm5vKTsKLQkJZ290byBmYWlsOwotCX0KLQotCWlmIChoY2lfZGV2aW5m byhkZXZfaWQsICZkaSkgPCAwKQotCQlnb3RvIGZhaWw7Ci0KLQlpZiAoaGNpX3Rlc3RfYml0KEhD SV9SQVcsICZkaS5mbGFncykpCi0JCWdvdG8gZG9uZTsKLQotZG9uZToKLQloY2lfY2xvc2VfZGV2 KGRkKTsKLQlleGl0KDApOwotCi1mYWlsOgotCWhjaV9jbG9zZV9kZXYoZGQpOwotCWV4aXQoMSk7 Ci19Ci0KLXN0YXRpYyB2b2lkIGRldmljZV9kZXZyZWdfc2V0dXAoaW50IGRldl9pZCkKLXsKLQlz dHJ1Y3QgaGNpX2Rldl9pbmZvIGRpOwotCWdib29sZWFuIGRldnVwOwotCi0JaW5pdF9kZXZpY2Uo ZGV2X2lkKTsKLQotCW1lbXNldCgmZGksIDAsIHNpemVvZihkaSkpOwotCi0JaWYgKGhjaV9kZXZp bmZvKGRldl9pZCwgJmRpKSA8IDApCi0JCXJldHVybjsKLQotCWRldnVwID0gaGNpX3Rlc3RfYml0 KEhDSV9VUCwgJmRpLmZsYWdzKTsKLQotCWlmICghaGNpX3Rlc3RfYml0KEhDSV9SQVcsICZkaS5m bGFncykpCi0JCW1hbmFnZXJfcmVnaXN0ZXJfYWRhcHRlcihkZXZfaWQsIGRldnVwKTsKLX0KLQot c3RhdGljIHZvaWQgZGV2aWNlX2RldnVwX3NldHVwKGludCBkZXZfaWQpCi17Ci0JY29uZmlndXJl X2RldmljZShkZXZfaWQpOwotCi0Jc3RhcnRfc2VjdXJpdHlfbWFuYWdlcihkZXZfaWQpOwotCi0J LyogUmV0dXJuIHZhbHVlIDEgbWVhbnMgaW9jdGwoREVWRE9XTikgd2FzIHBlcmZvcm1lZCAqLwot CWlmIChtYW5hZ2VyX3N0YXJ0X2FkYXB0ZXIoZGV2X2lkKSA9PSAxKQotCQlzdG9wX3NlY3VyaXR5 X21hbmFnZXIoZGV2X2lkKTsKLX0KLQogc3RhdGljIHZvaWQgaW5pdF9kZWZhdWx0cyh2b2lkKQog ewogCS8qIERlZmF1bHQgSENJZCBzZXR0aW5ncyAqLwpAQCAtNTIxLDMyICszMTMsNiBAQCBzdGF0 aWMgdm9pZCBpbml0X2RlZmF1bHRzKHZvaWQpCiAJCXN0cmNweShtYWluX29wdHMuaG9zdF9uYW1l LCAibm9uYW1lIik7CiB9CiAKLXZvaWQgZGV2aWNlX2V2ZW50KGludCBldmVudCwgaW50IGRldl9p ZCkKLXsKLQlzd2l0Y2ggKGV2ZW50KSB7Ci0JY2FzZSBIQ0lfREVWX1JFRzoKLQkJaW5mbygiSENJ IGRldiAlZCByZWdpc3RlcmVkIiwgZGV2X2lkKTsKLQkJZGV2aWNlX2RldnJlZ19zZXR1cChkZXZf aWQpOwotCQlicmVhazsKLQotCWNhc2UgSENJX0RFVl9VTlJFRzoKLQkJaW5mbygiSENJIGRldiAl ZCB1bnJlZ2lzdGVyZWQiLCBkZXZfaWQpOwotCQltYW5hZ2VyX3VucmVnaXN0ZXJfYWRhcHRlcihk ZXZfaWQpOwotCQlicmVhazsKLQotCWNhc2UgSENJX0RFVl9VUDoKLQkJaW5mbygiSENJIGRldiAl ZCB1cCIsIGRldl9pZCk7Ci0JCWRldmljZV9kZXZ1cF9zZXR1cChkZXZfaWQpOwotCQlicmVhazsK LQotCWNhc2UgSENJX0RFVl9ET1dOOgotCQlpbmZvKCJIQ0kgZGV2ICVkIGRvd24iLCBkZXZfaWQp OwotCQltYW5hZ2VyX3N0b3BfYWRhcHRlcihkZXZfaWQpOwotCQlzdG9wX3NlY3VyaXR5X21hbmFn ZXIoZGV2X2lkKTsKLQkJYnJlYWs7Ci0JfQotfQotCiBzdGF0aWMgR01haW5Mb29wICpldmVudF9s b29wOwogCiBzdGF0aWMgdm9pZCBzaWdfdGVybShpbnQgc2lnKQpAQCAtNTc2LDcgKzM0Miw2IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJR09wdGlvbkNvbnRleHQgKmNvbnRl eHQ7CiAJR0Vycm9yICplcnIgPSBOVUxMOwogCXN0cnVjdCBzaWdhY3Rpb24gc2E7Ci0JR0lPQ2hh bm5lbCAqY2hpbGRfaW87CiAJdWludDE2X3QgbXR1ID0gMDsKIAlHS2V5RmlsZSAqY29uZmlnOwog CkBAIC02MjgsMTggKzM5Myw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAK IAlwYXJzZV9jb25maWcoY29uZmlnKTsKIAotCWlmIChwaXBlKGNoaWxkX3BpcGUpIDwgMCkgewot CQllcnJvcigicGlwZSgpOiAlcyAoJWQpIiwgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0JCWV4 aXQoMSk7Ci0JfQotCi0JY2hpbGRfaW8gPSBnX2lvX2NoYW5uZWxfdW5peF9uZXcoY2hpbGRfcGlw ZVswXSk7Ci0JZ19pb19jaGFubmVsX3NldF9jbG9zZV9vbl91bnJlZihjaGlsZF9pbywgVFJVRSk7 Ci0JZ19pb19hZGRfd2F0Y2goY2hpbGRfaW8sCi0JCQlHX0lPX0lOIHwgR19JT19FUlIgfCBHX0lP X0hVUCB8IEdfSU9fTlZBTCwKLQkJCWNoaWxkX2V4aXQsIE5VTEwpOwotCWdfaW9fY2hhbm5lbF91 bnJlZihjaGlsZF9pbyk7Ci0KIAlhZ2VudF9pbml0KCk7CiAKIAlpZiAoaGNpZF9kYnVzX2luaXQo KSA8IDApIHsKLS0gCjEuNS42LjMKCg== --001e680f1af8f6c3d804688880d2 Content-Type: text/x-diff; charset=US-ASCII; name="0007-Adding-btd_register_adapter_ops-framework.patch" Content-Disposition: attachment; filename="0007-Adding-btd_register_adapter_ops-framework.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fu15atrv6 RnJvbSA2OGQ4ODlmYzJhYzA2M2I4OWNkZGMwOWY3NTViZjNhMTFjNWNlY2RhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjcgQXByIDIwMDkgMTU6Mzg6MDMgKzA1MzAKU3ViamVjdDogW1BBVENIIDcv OF0gQWRkaW5nIGJ0ZF9yZWdpc3Rlcl9hZGFwdGVyX29wcyBmcmFtZXdvcmsuCgotLS0KIHBsdWdp bnMvaGNpb3BzLmMgfCAgIDE2ICsrKysrKysrKysrKysrKy0KIHNyYy9hZGFwdGVyLmMgICAgfCAg IDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9hZGFwdGVyLmggICAgfCAgICA4 ICsrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9oY2lvcHMuYyBiL3BsdWdpbnMvaGNpb3BzLmMKaW5k ZXggMjVmNTE3MS4uMjZmYTFkYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9oY2lvcHMuYworKysgYi9w bHVnaW5zL2hjaW9wcy5jCkBAIC0zNTUsNyArMzU1LDcgQEAgc3RhdGljIGdib29sZWFuIGlvX3N0 YWNrX2V2ZW50KEdJT0NoYW5uZWwgKmNoYW4sIEdJT0NvbmRpdGlvbiBjb25kLAogCXJldHVybiBU UlVFOwogfQogCi1zdGF0aWMgaW50IGhjaW9wc19pbml0KHZvaWQpCitzdGF0aWMgaW50IGhjaV9p bml0KHZvaWQpCiB7CiAJc3RydWN0IHNvY2thZGRyX2hjaSBhZGRyOwogCXN0cnVjdCBoY2lfZmls dGVyIGZsdDsKQEAgLTQxMyw4ICs0MTMsMjIgQEAgc3RhdGljIGludCBoY2lvcHNfaW5pdCh2b2lk KQogCXJldHVybiBpbml0X2FsbF9kZXZpY2VzKHNvY2spOwogfQogCitzdGF0aWMgdm9pZCBoY2lf Y2xlYW51cCh2b2lkKQoreworfQorCitzdGF0aWMgc3RydWN0IGJ0ZF9hZGFwdGVyX29wcyBoY2lf b3BzID0geworCS5pbml0CSA9IGhjaV9pbml0LAorCS5jbGVhbnVwID0gaGNpX2NsZWFudXAsCit9 OworCitzdGF0aWMgaW50IGhjaW9wc19pbml0KHZvaWQpCit7CisJcmV0dXJuIGJ0ZF9yZWdpc3Rl cl9hZGFwdGVyX29wcygmaGNpX29wcyk7Cit9CiBzdGF0aWMgdm9pZCBoY2lvcHNfZXhpdCh2b2lk KQogeworCWJ0ZF9hZGFwdGVyX2NsZWFudXBfb3BzKCZoY2lfb3BzKTsKIH0KIAogQkxVRVRPT1RI X1BMVUdJTl9ERUZJTkUoaGNpb3BzLCBWRVJTSU9OLApkaWZmIC0tZ2l0IGEvc3JjL2FkYXB0ZXIu YyBiL3NyYy9hZGFwdGVyLmMKaW5kZXggNDBjNWFiMC4uYzQxYjkzMyAxMDA2NDQKLS0tIGEvc3Jj L2FkYXB0ZXIuYworKysgYi9zcmMvYWRhcHRlci5jCkBAIC03Myw2ICs3Myw3IEBACiAKIHN0YXRp YyBEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IE5VTEw7CiBzdGF0aWMgR1NMaXN0ICphZGFw dGVyX2RyaXZlcnMgPSBOVUxMOworc3RhdGljIHN0cnVjdCBidGRfYWRhcHRlcl9vcHMgKmFkYXB0 ZXJfb3BzID0gTlVMTDsKIAogc3RydWN0IHNlc3Npb25fcmVxIHsKIAlzdHJ1Y3QgYnRkX2FkYXB0 ZXIJKmFkYXB0ZXI7CkBAIC0yOTA1LDYgKzI5MDYsMzMgQEAgdm9pZCBidGRfdW5yZWdpc3Rlcl9h ZGFwdGVyX2RyaXZlcihzdHJ1Y3QgYnRkX2FkYXB0ZXJfZHJpdmVyICpkcml2ZXIpCiAJYWRhcHRl cl9kcml2ZXJzID0gZ19zbGlzdF9yZW1vdmUoYWRhcHRlcl9kcml2ZXJzLCBkcml2ZXIpOwogfQog CitpbnQgYnRkX3JlZ2lzdGVyX2FkYXB0ZXJfb3BzKHN0cnVjdCBidGRfYWRhcHRlcl9vcHMgKmJ0 ZF9hZGFwdGVyX29wcykKK3sKKwlpbnQgZXJyOworCisJLyogQWxyZWFkeSByZWdpc3RlcmVkICov CisJaWYgKGFkYXB0ZXJfb3BzKQorCQlyZXR1cm4gMTsKKworCWlmIChidGRfYWRhcHRlcl9vcHMt PmluaXQgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJZXJyID0gYnRkX2FkYXB0ZXJfb3BzLT5p bml0KCk7CisJaWYgKGVyciA8IDApIHsKKwkJZXJyb3IoImJ0ZF9yZWdpc3Rlcl9hZGFwdGVyX29w cyBmYWlsZWQ6JXMgKCVkKSIsIHN0cmVycm9yKC1lcnIpLCAtZXJyKTsKKwkJcmV0dXJuIC0xOwor CX0KKworCWFkYXB0ZXJfb3BzID0gYnRkX2FkYXB0ZXJfb3BzOworCisJcmV0dXJuIDA7Cit9CisK K3ZvaWQgYnRkX2FkYXB0ZXJfY2xlYW51cF9vcHMoKQoreworCWFkYXB0ZXJfb3BzLT5jbGVhbnVw KCk7Cit9CisKIHN0YXRpYyB2b2lkIGFnZW50X2F1dGhfY2Ioc3RydWN0IGFnZW50ICphZ2VudCwg REJ1c0Vycm9yICpkZXJyLAogCQkJCQkJCXZvaWQgKnVzZXJfZGF0YSkKIHsKZGlmZiAtLWdpdCBh L3NyYy9hZGFwdGVyLmggYi9zcmMvYWRhcHRlci5oCmluZGV4IDgxMTFkNmYuLjRlNGEzZDIgMTAw NjQ0Ci0tLSBhL3NyYy9hZGFwdGVyLmgKKysrIGIvc3JjL2FkYXB0ZXIuaApAQCAtMTQ3LDMgKzE0 NywxMSBAQCBjb25zdCBjaGFyICpidGRfYWRhcHRlcl9hbnlfcmVxdWVzdF9wYXRoKHZvaWQpOwog dm9pZCBidGRfYWRhcHRlcl9hbnlfcmVsZWFzZV9wYXRoKHZvaWQpOwogZ2Jvb2xlYW4gYWRhcHRl cl9pc19wYWlyYWJsZShzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIpOwogZ2Jvb2xlYW4gYWRh cHRlcl9wb3dlcmluZ19kb3duKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlcik7CisKK3N0cnVj dCBidGRfYWRhcHRlcl9vcHMgeworCWludCAoKmluaXQpKCk7CisJdm9pZCAoKmNsZWFudXApKCk7 Cit9OworCitpbnQgYnRkX3JlZ2lzdGVyX2FkYXB0ZXJfb3BzKHN0cnVjdCBidGRfYWRhcHRlcl9v cHMgKmJ0ZF9hZGFwdGVyX29wcyk7Cit2b2lkIGJ0ZF9hZGFwdGVyX2NsZWFudXBfb3BzKCk7Ci0t IAoxLjUuNi4zCgo= --001e680f1af8f6c3d804688880d2 Content-Type: text/x-diff; charset=US-ASCII; name="0008-Exporting-init_known_adapters-from-hciops-plugin.patch" Content-Disposition: attachment; filename="0008-Exporting-init_known_adapters-from-hciops-plugin.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fu15audo7 RnJvbSBmYjMzZDAyNmNkYzMxZTZhYTllZDBkZTUyNDc4ZTljZmI5YjdlMjllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbG9rIEJhcnNvZGUgPGFsb2suYmFyc29kZUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjcgQXByIDIwMDkgMTY6MzE6MDAgKzA1MzAKU3ViamVjdDogW1BBVENIIDgv OF0gRXhwb3J0aW5nIGluaXRfa25vd25fYWRhcHRlcnMgZnJvbSBoY2lvcHMgcGx1Z2luLgoKLS0t CiBwbHVnaW5zL2hjaW9wcy5jIHwgICAxNiArKysrKysrKy0tLS0tLS0tCiBzcmMvYWRhcHRlci5j ICAgIHwgICAgOCArKysrKysrKwogc3JjL2FkYXB0ZXIuaCAgICB8ICAgIDIgKysKIHNyYy9tYWlu LmMgICAgICAgfCAgICAyICsrCiA0IGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDgg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9oY2lvcHMuYyBiL3BsdWdpbnMvaGNp b3BzLmMKaW5kZXggMjZmYTFkYy4uM2NkMzg2OCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9oY2lvcHMu YworKysgYi9wbHVnaW5zL2hjaW9wcy5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAibWFu YWdlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UuaCIKIAorc3RhdGljIGludCBzb2NrOwogc3RhdGlj IGludCBjaGlsZF9waXBlWzJdOwogCiBzdGF0aWMgZ2Jvb2xlYW4gY2hpbGRfZXhpdChHSU9DaGFu bmVsICppbywgR0lPQ29uZGl0aW9uIGNvbmQsIHZvaWQgKnVzZXJfZGF0YSkKQEAgLTI3Myw4ICsy NzQsOCBAQCB2b2lkIGRldmljZV9ldmVudChpbnQgZXZlbnQsIGludCBkZXZfaWQpCiAJCWJyZWFr OwogCX0KIH0KLQotc3RhdGljIGludCBpbml0X2FsbF9kZXZpY2VzKGludCBjdGwpCisgLyogSW5p dGlhbGl6ZSBhbHJlYWR5IGNvbm5lY3RlZCBkZXZpY2VzICovCitzdGF0aWMgaW50IGluaXRfYWxs X2RldmljZXModm9pZCkKIHsKIAlzdHJ1Y3QgaGNpX2Rldl9saXN0X3JlcSAqZGw7CiAJc3RydWN0 IGhjaV9kZXZfcmVxICpkcjsKQEAgLTI5MCw3ICsyOTEsNyBAQCBzdGF0aWMgaW50IGluaXRfYWxs X2RldmljZXMoaW50IGN0bCkKIAlkbC0+ZGV2X251bSA9IEhDSV9NQVhfREVWOwogCWRyID0gZGwt PmRldl9yZXE7CiAKLQlpZiAoaW9jdGwoY3RsLCBIQ0lHRVRERVZMSVNULCAodm9pZCAqKSBkbCkg PCAwKSB7CisJaWYgKGlvY3RsKHNvY2ssIEhDSUdFVERFVkxJU1QsICh2b2lkICopIGRsKSA8IDAp IHsKIAkJaW5mbygiQ2FuJ3QgZ2V0IGRldmljZSBsaXN0OiAlcyAoJWQpIiwKIAkJCQkJCQlzdHJl cnJvcihlcnJubyksIGVycm5vKTsKIAkJcmV0dXJuIGVycm5vOwpAQCAtMzYwLDcgKzM2MSw2IEBA IHN0YXRpYyBpbnQgaGNpX2luaXQodm9pZCkKIAlzdHJ1Y3Qgc29ja2FkZHJfaGNpIGFkZHI7CiAJ c3RydWN0IGhjaV9maWx0ZXIgZmx0OwogCUdJT0NoYW5uZWwgKmN0bF9pbywgKmNoaWxkX2lvOzsK LQlpbnQgc29jazsKIAogCWlmIChwaXBlKGNoaWxkX3BpcGUpIDwgMCkgewogCQllcnJvcigicGlw ZSgpOiAlcyAoJWQpIiwgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7CkBAIC00MDksOCArNDA5LDcg QEAgc3RhdGljIGludCBoY2lfaW5pdCh2b2lkKQogCiAJZ19pb19jaGFubmVsX3VucmVmKGN0bF9p byk7CiAKLQkvKiBJbml0aWFsaXplIGFscmVhZHkgY29ubmVjdGVkIGRldmljZXMgKi8KLQlyZXR1 cm4gaW5pdF9hbGxfZGV2aWNlcyhzb2NrKTsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQg aGNpX2NsZWFudXAodm9pZCkKQEAgLTQxOCw4ICs0MTcsOSBAQCBzdGF0aWMgdm9pZCBoY2lfY2xl YW51cCh2b2lkKQogfQogCiBzdGF0aWMgc3RydWN0IGJ0ZF9hZGFwdGVyX29wcyBoY2lfb3BzID0g ewotCS5pbml0CSA9IGhjaV9pbml0LAotCS5jbGVhbnVwID0gaGNpX2NsZWFudXAsCisJLmluaXQJ CSAgICAgPSBoY2lfaW5pdCwKKwkuY2xlYW51cAkgICAgID0gaGNpX2NsZWFudXAsCisJLmluaXRf a25vd25fYWRhcHRlcnMgPSBpbml0X2FsbF9kZXZpY2VzLAogfTsKIAogc3RhdGljIGludCBoY2lv cHNfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvc3JjL2FkYXB0ZXIuYyBiL3NyYy9hZGFwdGVyLmMK aW5kZXggYzQxYjkzMy4uZDMxNTY5OCAxMDA2NDQKLS0tIGEvc3JjL2FkYXB0ZXIuYworKysgYi9z cmMvYWRhcHRlci5jCkBAIC0yOTMzLDYgKzI5MzMsMTQgQEAgdm9pZCBidGRfYWRhcHRlcl9jbGVh bnVwX29wcygpCiAJYWRhcHRlcl9vcHMtPmNsZWFudXAoKTsKIH0KIAoraW50IGluaXRfa25vd25f YWRhcHRlcnMoKQoreworCWlmICghYWRhcHRlcl9vcHMpCisJCXJldHVybiAtMTsKKworCXJldHVy biBhZGFwdGVyX29wcy0+aW5pdF9rbm93bl9hZGFwdGVycygpOworfQorCiBzdGF0aWMgdm9pZCBh Z2VudF9hdXRoX2NiKHN0cnVjdCBhZ2VudCAqYWdlbnQsIERCdXNFcnJvciAqZGVyciwKIAkJCQkJ CQl2b2lkICp1c2VyX2RhdGEpCiB7CmRpZmYgLS1naXQgYS9zcmMvYWRhcHRlci5oIGIvc3JjL2Fk YXB0ZXIuaAppbmRleCA0ZTRhM2QyLi5jNGI2NzkzIDEwMDY0NAotLS0gYS9zcmMvYWRhcHRlci5o CisrKyBiL3NyYy9hZGFwdGVyLmgKQEAgLTE1MSw3ICsxNTEsOSBAQCBnYm9vbGVhbiBhZGFwdGVy X3Bvd2VyaW5nX2Rvd24oc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyKTsKIHN0cnVjdCBidGRf YWRhcHRlcl9vcHMgewogCWludCAoKmluaXQpKCk7CiAJdm9pZCAoKmNsZWFudXApKCk7CisJaW50 ICgqaW5pdF9rbm93bl9hZGFwdGVycykoKTsKIH07CiAKIGludCBidGRfcmVnaXN0ZXJfYWRhcHRl cl9vcHMoc3RydWN0IGJ0ZF9hZGFwdGVyX29wcyAqYnRkX2FkYXB0ZXJfb3BzKTsKIHZvaWQgYnRk X2FkYXB0ZXJfY2xlYW51cF9vcHMoKTsKK2ludCBpbml0X2tub3duX2FkYXB0ZXJzKCk7CmRpZmYg LS1naXQgYS9zcmMvbWFpbi5jIGIvc3JjL21haW4uYwppbmRleCBhNWE3MjhjLi4zNDZkYzBjIDEw MDY0NAotLS0gYS9zcmMvbWFpbi5jCisrKyBiL3NyYy9tYWluLmMKQEAgLTQxMSw2ICs0MTEsOCBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJZXZlbnRfbG9vcCA9IGdfbWFp bl9sb29wX25ldyhOVUxMLCBGQUxTRSk7CiAKKwlpbml0X2tub3duX2FkYXB0ZXJzKCk7CisKIAlz dGFydGluZyA9IEZBTFNFOwogCiAJbWFuYWdlcl9zdGFydHVwX2NvbXBsZXRlKCk7Ci0tIAoxLjUu Ni4zCgo= --001e680f1af8f6c3d804688880d2--