Return-Path: From: Matthew Grant To: bluez-devel@lists.sourceforge.net Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-oBydhKtMAy8kJ4dlOj+i" Message-Id: <1103056217.6424.23.camel@localhost> Mime-Version: 1.0 Subject: [Bluez-devel] [PATCH] - BT HID message parsing framework and fixes for Keyboards in boot mode. Sender: bluez-devel-admin@lists.sourceforge.net Errors-To: bluez-devel-admin@lists.sourceforge.net Reply-To: bluez-devel@lists.sourceforge.net List-Unsubscribe: , List-Id: BlueZ development List-Post: List-Help: List-Subscribe: , List-Archive: Date: Wed, 15 Dec 2004 09:30:17 +1300 --=-oBydhKtMAy8kJ4dlOj+i Content-Type: multipart/mixed; boundary="=-pmZHVFPiISYi6ei7bsLE" --=-pmZHVFPiISYi6ei7bsLE Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Dear Marcel, I have reworked the patches as you have requested. They are attached to this message. This is the BT HID message parsing framework that I wrote, based on the Bluetooth HID specs. The kernel versions the patches are against are mentioned in their names. The one against 2.6.10-rc3-bk6 is the one for the standard BT HID code in the stock kernel, then other contains fixes for report mode processing where the BT device is stuck in Boot mode due to being first of all configured by the computer BIOS. The devices I tested this with are Apple BT keyboard, and Logitech Mx900 mouse. the changes are all conservative, and should work with all devices. =20 I have left the debug work I did as is in the patches as I need it to debug the work I am doing. It fixes various compile problems with the debug code, as well as adding output of data that I found useful in diagnosing my keyboard problems. I am planning to continue my work on the BT HID as I am able, and hope to do phase 2 (SET_ and GET_) HID state machines over the Christmas holidays. The Debug stuff has to stay there. Basically if you want me to significant work in the BT HID area, I need a free hand to do things. I already have to spend quite a bit of time making a patch for the standard kernel, as well as against the 2.6.x-mhx patches which I do my development against. We need to discuss how we are going to work this so that it does not take too much of your time. I am hoping to get a Web site up shortly with these patches and further work, as well as a version control system for a BT HID project! Best Regards, Matthew Grant --=-pmZHVFPiISYi6ei7bsLE Content-Disposition: attachment; filename=linux-2.6.9-mh5-bthid-2004121501.patch Content-Type: text/x-patch; name=linux-2.6.9-mh5-bthid-2004121501.patch; charset=ISO-8859-1 Content-Transfer-Encoding: base64 U2lnbmVkLW9mZi1ieTogTWF0dGhldyBHcmFudCA8Z3JhbnRtYUBhbmF0aG90aC5nZW4ubno+DQoN CkltcGxlbWVudHMgY2hhbmdlcyBpbiBjb3JlIEJUIEhJRCBmb3IgaW5jb21pbmcgcGFja2V0IHBy b2Nlc3NpbmcsIHBsdXMgc3RhcnQgb2YNCnByb2Nlc3NpbmcgZm9yIGluY29taW5nIG1lc3NhZ2Vz IGluIHJlcG9ydCBtb2RlLiAgQWxzbyBzZXRzIGEgZGV2aWNlIHN0dWNrIGluIGJvb3QNCm1vZGUg dG8gcmVwb3J0IG1vZGUgd2hlbiBkZXZpY2UgZmlyc3QgY29ubmVjdHMuDQoNCi0tLSBsaW51eC0y LjYuOS1taDQvbmV0L2JsdWV0b290aC9oaWRwL2NvcmUuYwkyMDA0LTEyLTE0IDA4OjI4OjIwLjMw MDA0MjQwMCArMTMwMA0KKysrIGtlcm5lbC1zb3VyY2UtMi42LjktbWFnLWJ0L25ldC9ibHVldG9v dGgvaGlkcC9jb3JlLmMJMjAwNC0xMi0xMyAyMjo0MDo1MS4wMDAwMDAwMDAgKzEzMDANCkBAIC00 Niw3ICs0Niw3IEBADQogDQogI2luY2x1ZGUgImhpZHAuaCINCiANCi0jaWZuZGVmIENPTkZJR19C VF9ISURQX0RFQlVHDQorI2lmbmRlZiBDT05GSUdfQlRfSElEUF9ERUJVR19CVA0KICN1bmRlZiAg QlRfREJHDQogI2RlZmluZSBCVF9EQkcoRC4uLikNCiAjZW5kaWYNCkBAIC0xMzgsOCArMTM4LDgg QEANCiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCiAJdW5zaWduZWQgY2hhciBuZXdsZWRzOw0KIA0K LQlCVF9EQkcoInNlc3Npb24gJXAgaGlkICVwIGRhdGEgJXAgc2l6ZSAlZCIsIHNlc3Npb24sIGRl dmljZSwgZGF0YSwgc2l6ZSk7DQotDQorCUJUX0RCRygiIik7DQorCSANCiAJaWYgKHR5cGUgIT0g RVZfTEVEKQ0KIAkJcmV0dXJuIC0xOw0KIA0KQEAgLTE1OSw3ICsxNTksNyBAQA0KIAkJcmV0dXJu IC1FTk9NRU07DQogCX0NCiANCi0JKnNrYl9wdXQoc2tiLCAxKSA9IDB4YTI7DQorCSpza2JfcHV0 KHNrYiwgMSkgPSBISURQX1RSQU5TX0RBVEEgfCBISURQX0RBVEFfUlRZUEVfT1VQVVQ7DQogCSpz a2JfcHV0KHNrYiwgMSkgPSAweDAxOw0KIAkqc2tiX3B1dChza2IsIDEpID0gbmV3bGVkczsNCiAN CkBAIC0yNjMsNyArMjYzLDM1IEBADQogCQlkZWxfdGltZXIoJnNlc3Npb24tPnRpbWVyKTsNCiB9 DQogDQotc3RhdGljIGlubGluZSB2b2lkIGhpZHBfc2VuZF9tZXNzYWdlKHN0cnVjdCBoaWRwX3Nl c3Npb24gKnNlc3Npb24sIHVuc2lnbmVkIGNoYXIgaGRyKQ0KK3N0YXRpYyBpbmxpbmUgaW50IGhp ZHBfc2VuZF9jdHJsX21lc3NhZ2Uoc3RydWN0IGhpZHBfc2Vzc2lvbiAqc2Vzc2lvbiwNCisJCQl1 bnNpZ25lZCBjaGFyIGhkciwNCisJCQl1bnNpZ25lZCBjaGFyICpkYXRhLCBpbnQgc2l6ZSkNCit7 DQorCXN0cnVjdCBza19idWZmICpza2I7DQorDQorCUJUX0RCRygic2Vzc2lvbiAlcCBkYXRhICVw IHNpemUgJWQiLCBzZXNzaW9uLCBkYXRhLCBzaXplKTsNCisNCisJaWYgKCEoc2tiID0gYWxsb2Nf c2tiKHNpemUgKyAxLCBHRlBfQVRPTUlDKSkpIHsNCisJCUJUX0VSUigiQ2FuJ3QgYWxsb2NhdGUg bWVtb3J5IGZvciBuZXcgZnJhbWUiKTsNCisJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQorCSpz a2JfcHV0KHNrYiwgMSkgPSBoZHI7DQorCWlmIChzaXplID4gMCkNCisJCW1lbWNweShza2JfcHV0 KHNrYiwgc2l6ZSksIGRhdGEsIHNpemUpOw0KKw0KKwlza2JfcXVldWVfdGFpbCgmc2Vzc2lvbi0+ Y3RybF90cmFuc21pdCwgc2tiKTsNCisNCisJaGlkcF9zY2hlZHVsZShzZXNzaW9uKTsNCisNCisJ cmV0dXJuIDA7DQorfQ0KKw0KKy8qIFNlbmQgYSAxIGJ5dGUgY29udHJvbCBtZXNzYWdlLg0KKyAq IEZvciBjYWxsaW5nIG91dHNpZGUgSElEIGt0aHJlYWQgcHJvY2VzcyANCisgKi8NCitzdGF0aWMg aW5saW5lIHZvaWQgaGlkcF9zZW5kX2N0cmxfYnl0ZShzdHJ1Y3QgaGlkcF9zZXNzaW9uICpzZXNz aW9uLA0KKwkJIAkJCXVuc2lnbmVkIGNoYXIgaGRyKQ0KIHsNCiAJc3RydWN0IHNrX2J1ZmYgKnNr YjsNCiANCkBAIC0yODEsMjkgKzMwOSwyMDUgQEANCiAJaGlkcF9zY2hlZHVsZShzZXNzaW9uKTsN CiB9DQogDQotc3RhdGljIGlubGluZSBpbnQgaGlkcF9yZWN2X2ZyYW1lKHN0cnVjdCBoaWRwX3Nl c3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IpDQorLyogU2VuZCBhIDEgYnl0ZSBj b250cm9sIG1lc3NhZ2UuDQorICogRm9yIGNhbGxpbmcgaW5zaWRlIEhJRCBrdGhyZWFkIHByb2Nl c3MgDQorICovDQorc3RhdGljIGlubGluZSB2b2lkIGhpZHBfc2VuZF9jdHJsX3JlcGx5KHN0cnVj dCBoaWRwX3Nlc3Npb24gKnNlc3Npb24sDQorCQkgCQkJdW5zaWduZWQgY2hhciBoZHIpDQorew0K KwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KKw0KKwlCVF9EQkcoInNlc3Npb24gJXAiLCBzZXNzaW9u KTsNCisNCisJaWYgKCEoc2tiID0gYWxsb2Nfc2tiKDEsIEdGUF9BVE9NSUMpKSkgew0KKwkJQlRf RVJSKCJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG1lc3NhZ2UiKTsNCisJCXJldHVybjsNCisJ fQ0KKw0KKwkqc2tiX3B1dChza2IsIDEpID0gaGRyOw0KKw0KKwlza2JfcXVldWVfdGFpbCgmc2Vz c2lvbi0+Y3RybF90cmFuc21pdCwgc2tiKTsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIGhp ZHBfcHJvY2Vzc19oYW5kc2hha2Uoc3RydWN0IGhpZHBfc2Vzc2lvbiAqc2Vzc2lvbiwgX191OCBw YXJhbSkNCit7DQorCXN3aXRjaCAocGFyYW0pIHsNCisJY2FzZSBISURQX0hTSEtfU1VDQ0VTU0ZV TDoNCisJCS8qIENhbGwgaW50byBTRVRfIEdFVF8gaGFuZGxlcnMgaGVyZSAqLw0KKwkJYnJlYWs7 DQorCWNhc2UgSElEUF9IU0hLX05PVF9SRUFEWToNCisJY2FzZSBISURQX0hTSEtfRVJSX0lOVkFM SURfUkVQT1JUX0lEOg0KKwljYXNlIEhJRFBfSFNIS19FUlJfVU5TVVBQT1JURURfUkVRVUVTVDoN CisJY2FzZSBISURQX0hTSEtfRVJSX0lOVkFMSURfUEFSQU1FVEVSOg0KKwkJLyogQ2FsbCBpbnRv IFNFVF8gR0VUXyBoYW5kbGVycyBoZXJlICovDQorCQlicmVhazsNCisJY2FzZSBISURQX0hTSEtf RVJSX1VOS05PV046DQorCQlCVF9JTkZPKCJIQU5EU0hBS0UgcGFyYW1ldGVyIEVSUl9VTktOT1dO IHNlZW4uIik7DQorCQlicmVhazsNCisJY2FzZSBISURQX0hTSEtfRVJSX0ZBVEFMOg0KKwkJLyog RGV2aWNlIHJlcXVlc3RzIGEgcmVib290LCBhcyB0aGlzIGlzIHRoZSBvbmx5IHdheSB0aGlzIGVy cm9yDQorIAkJICogY2FuIGJlIHJlY292ZXJlZC4NCisJCSAqLw0KKwkJaGlkcF9zZW5kX2N0cmxf cmVwbHkoc2Vzc2lvbiwNCisJCQlISURQX1RSQU5TX0hJRF9DT05UUk9MIHwgSElEUF9DVFJMX1NP RlRfUkVTRVQpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQloaWRwX3NlbmRfY3RybF9yZXBs eShzZXNzaW9uLA0KKwkJCUhJRFBfVFJBTlNfSEFORFNIQUtFIHwgSElEUF9IU0hLX0VSUl9JTlZB TElEX1BBUkFNRVRFUik7DQorCQlicmVhazsNCisJfQ0KKw0KK30NCisNCitzdGF0aWMgaW5saW5l IHZvaWQgaGlkcF9wcm9jZXNzX2hpZF9jb250cm9sIChzdHJ1Y3QgaGlkcF9zZXNzaW9uICpzZXNz aW9uLCBfX3U4IHBhcmFtKQ0KK3sNCisJc3dpdGNoIChwYXJhbSkgew0KKwljYXNlIEhJRFBfQ1RS TF9OT1A6DQorCQlicmVhazsNCisJY2FzZSBISURQX0NUUkxfVklSVFVBTF9DQUJMRV9VTlBMVUc6 DQorCQkvKiBGbHVzaCB0aGUgdHJhbnNtaXQgcXVldWVzICovDQorCQlza2JfcXVldWVfcHVyZ2Uo JnNlc3Npb24tPmN0cmxfdHJhbnNtaXQpOw0KKwkJc2tiX3F1ZXVlX3B1cmdlKCZzZXNzaW9uLT5p bnRyX3RyYW5zbWl0KTsNCisNCisJCS8qIEtpbGwgc2Vzc2lvbiB0aHJlYWQgKi8NCisJCWF0b21p Y19pbmMoJnNlc3Npb24tPnRlcm1pbmF0ZSk7DQorDQorCQkvKiBEbyBzb21lIGZ1bmt5IEhDSSBz dHVmZiBoZXJlIHRvIGRlbGV0ZSBwYWlyaW5nIG9uIGRvbmdsZT8gKi8NCisJCWJyZWFrOw0KKwlj YXNlIEhJRFBfQ1RSTF9IQVJEX1JFU0VUOg0KKwljYXNlIEhJRFBfQ1RSTF9TT0ZUX1JFU0VUOg0K KwljYXNlIEhJRFBfQ1RSTF9TVVNQRU5EOg0KKwljYXNlIEhJRFBfQ1RSTF9FWElUX1NVU1BFTkQ6 DQorCQkvKiBXZSBoYXZlIHRvIHBhcnNlIHRoZXNlIGFuZCByZXR1cm4gbm8gZXJyb3IgKi8NCisJ CWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJaGlkcF9zZW5kX2N0cmxfcmVwbHkoc2Vzc2lvbiwNCisJ CQlISURQX1RSQU5TX0hBTkRTSEFLRSB8IEhJRFBfSFNIS19FUlJfSU5WQUxJRF9QQVJBTUVURVIp Ow0KKwkJYnJlYWs7DQorCX0NCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgaGlkcF9wcm9jZXNz X2RhdGEoc3RydWN0IGhpZHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwg X191OCBwYXJhbSkNCit7DQorCWludCByZXN1bHQgPSAwOw0KKw0KKwlCVF9JTkZPKCJEQVRBIHBh Y2tldCBvbiBjb250cm9sIGNoYW5uZWwsIEdFVF8sIFNFVF8gbm90IGltcGxlbWVudGVkIik7DQor DQorCXN3aXRjaCAocGFyYW0pIHsNCisJY2FzZSBISURQX0RBVEFfUlRZUEVfSU5QVVQ6DQorCQlo aWRwX3NldF90aW1lcihzZXNzaW9uKTsNCisNCisJCWlmIChzZXNzaW9uLT5pbnB1dCkNCisJCQlo aWRwX2lucHV0X3JlcG9ydChzZXNzaW9uLCBza2IpOw0KKw0KKwkJaWYgKHNlc3Npb24tPmhpZCkg ew0KKwkJCXJlc3VsdCA9IGhpZF9yZWN2X3JlcG9ydChzZXNzaW9uLT5oaWQsIA0KKwkJCQkJSElE X0lOUFVUX1JFUE9SVCwgDQorCQkJCQlza2ItPmRhdGEsIA0KKwkJCQkJc2tiLT5sZW4pOw0KKwkJ CXN3aXRjaCAocmVzdWx0KSB7DQorCQkJY2FzZSAtRVBST1RPVFlQRToNCisJCQkJaGlkcF9zZW5k X2N0cmxfcmVwbHkoc2Vzc2lvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAJCUhJRFBfVFJB TlNfU0VUX1BST1RPQ09MIHwgSElEUF9QUk9UT19SRVBPUlQpOw0KKwkJCQlicmVhazsNCisJCQlj YXNlIC1FQkFERjoNCisJCQkJaGlkcF9zZW5kX2N0cmxfcmVwbHkoc2Vzc2lvbiwNCisgICAgICAg ICAgICAgICAgICAgICAgICAJCUhJRFBfVFJBTlNfSEFORFNIQUtFIHwgSElEUF9IU0hLX0VSUl9J TlZBTElEX1JFUE9SVF9JRCk7DQorCQkJCWJyZWFrOw0KKwkJCWRlZmF1bHQ6DQorCQkJCWJyZWFr Ow0KKwkJCX0NCisJCX0NCisJCWJyZWFrOw0KKwljYXNlIEhJRFBfREFUQV9SVFlQRV9PVEhFUjoN CisJY2FzZSBISURQX0RBVEFfUlRZUEVfT1VQVVQ6DQorCWNhc2UgSElEUF9EQVRBX1JUWVBFX0ZF QVRVUkU6DQorCQlCVF9EQkcoIlVuaW1wbGVtZW50ZWQgREFUQSBwYXJhbWV0ZXIgMHglMDF4Iiwg cGFyYW0pOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlCVF9EQkcoIkludmFsaWQgREFUQSBw YXJhbWV0ZXIgMHglMDF4IiwgcGFyYW0pOw0KKwkJaGlkcF9zZW5kX2N0cmxfcmVwbHkoc2Vzc2lv biwNCisJCQlISURQX1RSQU5TX0hBTkRTSEFLRSB8IEhJRFBfSFNIS19FUlJfSU5WQUxJRF9QQVJB TUVURVIpOw0KKwl9DQorCQ0KKwlyZXR1cm4gMDsNCit9DQorDQorDQorc3RhdGljIGlubGluZSBp bnQgaGlkcF9yZWN2X2N0cmxfZnJhbWUoc3RydWN0IGhpZHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3Ry dWN0IHNrX2J1ZmYgKnNrYikNCiB7DQogCV9fdTggaGRyOw0KKwlfX3U4IHR5cGU7DQorCV9fdTgg cGFyYW07DQorCWludCBlcnIgPSAwOw0KIA0KIAlCVF9EQkcoInNlc3Npb24gJXAgc2tiICVwIGxl biAlZCIsIHNlc3Npb24sIHNrYiwgc2tiLT5sZW4pOw0KIA0KIAloZHIgPSBza2ItPmRhdGFbMF07 DQogCXNrYl9wdWxsKHNrYiwgMSk7DQogDQotCWlmIChoZHIgPT0gMHhhMSkgew0KLQkJaGlkcF9z ZXRfdGltZXIoc2Vzc2lvbik7DQorCXR5cGUgPSBoZHIgJiBISURQX1RIRFJfVFJBTlNfTUFTSzsN CisJcGFyYW0gPSBoZHIgJiBISURQX1RIRFJfUEFSQU1fTUFTSzsNCiANCisJc3dpdGNoICh0eXBl KSB7DQorCWNhc2UgSElEUF9UUkFOU19IQU5EU0hBS0U6DQorCQloaWRwX3Byb2Nlc3NfaGFuZHNo YWtlKHNlc3Npb24sIHBhcmFtKTsNCisJCWJyZWFrOw0KKwljYXNlIEhJRFBfVFJBTlNfSElEX0NP TlRST0w6DQorCQloaWRwX3Byb2Nlc3NfaGlkX2NvbnRyb2woc2Vzc2lvbiwgcGFyYW0pOw0KKwkJ YnJlYWs7DQorCWNhc2UgSElEUF9UUkFOU19EQVRBOg0KKwkJZXJyID0gaGlkcF9wcm9jZXNzX2Rh dGEoc2Vzc2lvbiwgc2tiLCBwYXJhbSk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCUJUX0RC RygiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgaGVhZGVyIDB4JTAyeCIsIGhkcik7DQorCQloaWRwX3Nl bmRfY3RybF9yZXBseShzZXNzaW9uLA0KKwkJCUhJRFBfVFJBTlNfSEFORFNIQUtFIHwgSElEUF9I U0hLX0VSUl9VTlNVUFBPUlRFRF9SRVFVRVNUKTsNCisJCWJyZWFrOw0KKwl9DQorCQkNCisJa2Zy ZWVfc2tiKHNrYik7DQorCXJldHVybiBlcnI7DQorfQ0KKw0KKy8qIFRoaXMgbmVlZHMgdG8gYmUg c2VwYXJhdGUgYXMgdGhlcmUgYXJlIG9ubHkgREFUQSBhbmQgREFUQyBwYWNrZXRzIG9uIHRoZSAN CisgKiBpbnRlcnJ1cHQgY2hhbm5lbC4gaURhdGEgcmVjaWV2ZWQsIGFuZCBubyByZXN1bHQgZ2l2 ZW4sIHNvIHdlIHN3YWxsb3cgZXJyb3JzDQorICogYW5kIHRocm93IG91dCBpbnZhbGlkIHN0dWZm LiBNQUcNCisgKi8gDQorc3RhdGljIGlubGluZSB2b2lkIGhpZHBfcmVjdl9pbnRyX2ZyYW1lKHN0 cnVjdCBoaWRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IpDQorew0KKwlf X3U4IGhkcjsNCisJaW50IGVyciA9IDA7DQorDQorCUJUX0RCRygic2Vzc2lvbiAlcCBza2IgJXAg bGVuICVkIiwgc2Vzc2lvbiwgc2tiLCBza2ItPmxlbik7DQorDQorCWhkciA9IHNrYi0+ZGF0YVsw XTsNCisJc2tiX3B1bGwoc2tiLCAxKTsNCisNCisJaWYgKGhkciA9PSAoSElEUF9UUkFOU19EQVRB IHwgSElEUF9EQVRBX1JUWVBFX0lOUFVUKSkgew0KKwkJaGlkcF9zZXRfdGltZXIoc2Vzc2lvbik7 DQogCQlpZiAoc2Vzc2lvbi0+aW5wdXQpDQogCQkJaGlkcF9pbnB1dF9yZXBvcnQoc2Vzc2lvbiwg c2tiKTsNCiANCiAJCWlmIChzZXNzaW9uLT5oaWQpDQotCQkJaGlkX3JlY3ZfcmVwb3J0KHNlc3Np b24tPmhpZCwgSElEX0lOUFVUX1JFUE9SVCwgc2tiLT5kYXRhLCBza2ItPmxlbik7DQotCX0gZWxz ZSB7DQotCQlCVF9EQkcoIlVuc3VwcG9ydGVkIHByb3RvY29sIGhlYWRlciAweCUwMngiLCBoZHIp Ow0KKwkJCWVyciA9IGhpZF9yZWN2X3JlcG9ydChzZXNzaW9uLT5oaWQsIA0KKwkJCQkJSElEX0lO UFVUX1JFUE9SVCwgDQorCQkJCQlza2ItPmRhdGEsIA0KKwkJCQkJc2tiLT5sZW4pOw0KKwkJCXN3 aXRjaCAoZXJyKSB7DQorCQkJY2FzZSAtRVBST1RPVFlQRToNCisJCQkJaGlkcF9zZW5kX2N0cmxf cmVwbHkoc2Vzc2lvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAJCUhJRFBfVFJBTlNfU0VU X1BST1RPQ09MIHwgSElEUF9QUk9UT19SRVBPUlQpOw0KKwkJCQlicmVhazsNCisJCQlkZWZhdWx0 Og0KKwkJCQlicmVhazsNCisJCQl9DQogCX0NCi0NCisJZWxzZSB7DQorCQlCVF9JTkZPKCJVbnN1 cHBvcnRlZCBwcm90b2NvbCBoZWFkZXIgMHglMDJ4IiwgaGRyKTsNCisJfQ0KKwkJDQogCWtmcmVl X3NrYihza2IpOw0KLQlyZXR1cm4gMDsNCiB9DQogDQogc3RhdGljIGludCBoaWRwX3NlbmRfZnJh bWUoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGxlbikNCkBA IC0zODksMTIgKzU5MywxMiBAQA0KIA0KIAkJd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgmY3Ry bF9zay0+c2tfcmVjZWl2ZV9xdWV1ZSkpKSB7DQogCQkJc2tiX29ycGhhbihza2IpOw0KLQkJCWhp ZHBfcmVjdl9mcmFtZShzZXNzaW9uLCBza2IpOw0KKwkJCWhpZHBfcmVjdl9jdHJsX2ZyYW1lKHNl c3Npb24sIHNrYik7DQogCQl9DQogDQogCQl3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKCZpbnRy X3NrLT5za19yZWNlaXZlX3F1ZXVlKSkpIHsNCiAJCQlza2Jfb3JwaGFuKHNrYik7DQotCQkJaGlk cF9yZWN2X2ZyYW1lKHNlc3Npb24sIHNrYik7DQorCQkJaGlkcF9yZWN2X2ludHJfZnJhbWUoc2Vz c2lvbiwgc2tiKTsNCiAJCX0NCiANCiAJCWhpZHBfcHJvY2Vzc190cmFuc21pdChzZXNzaW9uKTsN CkBAIC02MDgsMTMgKzgxMiwyMyBAQA0KIAkJZ290byB1bmxpbms7DQogDQogCWlmIChzZXNzaW9u LT5pbnB1dCkgew0KLQkJaGlkcF9zZW5kX21lc3NhZ2Uoc2Vzc2lvbiwgMHg3MCk7DQorCQloaWRw X3NlbmRfY3RybF9ieXRlKHNlc3Npb24sIA0KKwkJCUhJRFBfVFJBTlNfU0VUX1BST1RPQ09MIHwg SElEUF9QUk9UT19CT09UKTsNCiAJCXNlc3Npb24tPmZsYWdzIHw9ICgxIDw8IEhJRFBfQk9PVF9Q Uk9UT0NPTF9NT0RFKTsNCiANCiAJCXNlc3Npb24tPmxlZHMgPSAweGZmOw0KIAkJaGlkcF9pbnB1 dF9ldmVudChzZXNzaW9uLT5pbnB1dCwgRVZfTEVELCAwLCAwKTsNCiAJfQ0KIA0KKwkvKiBNYWtl IHN1cmUgZGV2aWNlIElTIGluIHJlcG9ydCBtb2RlDQorICAgICAgICAgKiBTb21lIGRldmljZXMg c3RhcnQgb2ZmIGluIGJvb3QgcHJvdG9jb2wsIGFuZCBkbyBub3QgcmVzcG9uZCBjb3JyZWN0bHkg DQorCSAqIHRvIGEgcmVzZXQgY29tbWFuZC4NCisgICAgICAgICAqLw0KKwlpZiAoc2Vzc2lvbi0+ aGlkKSB7DQorCQloaWRwX3NlbmRfY3RybF9ieXRlKHNlc3Npb24sDQorICAgICAgICAgICAgICAg ICAgICAgICAgSElEUF9UUkFOU19TRVRfUFJPVE9DT0wgfCBISURQX1BST1RPX1JFUE9SVCk7DQor CX0NCisNCiAJdXBfd3JpdGUoJmhpZHBfc2Vzc2lvbl9zZW0pOw0KIAlyZXR1cm4gMDsNCiANCkBA IC02NTQsNyArODY4LDggQEANCiAJc2Vzc2lvbiA9IF9faGlkcF9nZXRfc2Vzc2lvbigmcmVxLT5i ZGFkZHIpOw0KIAlpZiAoc2Vzc2lvbikgew0KIAkJaWYgKHJlcS0+ZmxhZ3MgJiAoMSA8PCBISURQ X1ZJUlRVQUxfQ0FCTEVfVU5QTFVHKSkgew0KLQkJCWhpZHBfc2VuZF9tZXNzYWdlKHNlc3Npb24s IDB4MTUpOw0KKwkJCWhpZHBfc2VuZF9jdHJsX2J5dGUoc2Vzc2lvbiwgDQorCQkJCUhJRFBfVFJB TlNfSElEX0NPTlRST0wgfCBISURQX0NUUkxfVklSVFVBTF9DQUJMRV9VTlBMVUcpOw0KIAkJfSBl bHNlIHsNCiAJCQkvKiBGbHVzaCB0aGUgdHJhbnNtaXQgcXVldWVzICovDQogCQkJc2tiX3F1ZXVl X3B1cmdlKCZzZXNzaW9uLT5jdHJsX3RyYW5zbWl0KTsNCi0tLSBsaW51eC0yLjYuOS1taDQvbmV0 L2JsdWV0b290aC9oaWRwL2hpZC5jCTIwMDQtMTItMTQgMDg6Mjg6MjAuMzEyMDQwNTc2ICsxMzAw DQorKysga2VybmVsLXNvdXJjZS0yLjYuOS1tYWctYnQvbmV0L2JsdWV0b290aC9oaWRwL2hpZC5j CTIwMDQtMTItMTMgMDg6MjE6MjMuMDAwMDAwMDAwICsxMzAwDQpAQCAtODU4LDExICs4NTgsMTEg QEANCiANCiAJaWYgKCFzaXplKSB7DQogCQlkYmcoImVtcHR5IHJlcG9ydCIpOw0KLQkJcmV0dXJu IC0xOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQogCX0NCiANCi0jaWZkZWYgREVCVUdfREFUQQ0KLQlw cmludGsoS0VSTl9ERUJVRyBfX0ZJTEVfXyAiOiByZXBvcnQgKHNpemUgJXUpICglc251bWJlcmVk KVxuIiwgbGVuLCByZXBvcnRfZW51bS0+bnVtYmVyZWQgPyAiIiA6ICJ1biIpOw0KKyNpZmRlZiBD T05GSUdfQlRfSElEUF9ERUJVR19EQVRBDQorCXByaW50ayhLRVJOX0RFQlVHIF9fRklMRV9fICI6 IHJlcG9ydCAoc2l6ZSAldSkgKCVzbnVtYmVyZWQpXG4iLCBzaXplLCByZXBvcnRfZW51bS0+bnVt YmVyZWQgPyAiIiA6ICJ1biIpOw0KICNlbmRpZg0KIA0KIAluID0gMDsJCQkJLyogTm9ybWFsbHkg cmVwb3J0IG51bWJlciBpcyAwICovDQpAQCAtODcxLDcgKzg3MSw3IEBADQogCQlzaXplLS07DQog CX0NCiANCi0jaWZkZWYgREVCVUdfREFUQQ0KKyNpZmRlZiBDT05GSUdfQlRfSElEUF9ERUJVR19E QVRBDQogCXsNCiAJCWludCBpOw0KIAkJcHJpbnRrKEtFUk5fREVCVUcgX19GSUxFX18gIjogcmVw b3J0ICVkIChzaXplICV1KSA9ICIsIG4sIHNpemUpOw0KQEAgLTg4MywxNCArODgzLDMzIEBADQog DQogCWlmICghKHJlcG9ydCA9IHJlcG9ydF9lbnVtLT5yZXBvcnRfaWRfaGFzaFtuXSkpIHsNCiAJ CWRiZygidW5kZWZpbmVkIHJlcG9ydF9pZCAlZCByZWNlaXZlZCIsIG4pOw0KLQkJcmV0dXJuIC0x Ow0KKwkJcmV0dXJuIC1FQkFERjsNCiAJfQ0KIA0KIAlyc2l6ZSA9ICgocmVwb3J0LT5zaXplIC0g MSkgPj4gMykgKyAxOw0KIA0KKyNpZmRlZiBDT05GSUdfQlRfSElEUF9ERUJVR19EQVRBDQorCWRi ZygicmVwb3J0ICVkLCBleHBlY3RlZCAlZCBiaXRzLCAlZCBtYXhmaWVsZCIsIHJlcG9ydC0+aWQs IHJlcG9ydC0+c2l6ZSwgcmVwb3J0LT5tYXhmaWVsZCk7DQorCWZvciAobiA9IDA7IG4gPCByZXBv cnQtPm1heGZpZWxkOyBuKyspDQorCQlkYmcoInJlcG9ydDpmaWVsZCAlZDolZCwgY291bnQgJWQg LCBvZmZzZXQgJWQsIHNpemUoYml0cykgJWQiLA0KKwkJCXJlcG9ydC0+aWQsIG4sDQorCQkJcmVw b3J0LT5maWVsZFtuXS0+cmVwb3J0X2NvdW50LA0KKwkJCXJlcG9ydC0+ZmllbGRbbl0tPnJlcG9y dF9vZmZzZXQsDQorCQkJcmVwb3J0LT5maWVsZFtuXS0+cmVwb3J0X3NpemUpOw0KKyNlbmRpZg0K Kw0KIAlpZiAoc2l6ZSA8IHJzaXplKSB7DQotCQlkYmcoInJlcG9ydCAlZCBpcyB0b28gc2hvcnQs ICglZCA8ICVkKSIsIHJlcG9ydC0+aWQsIHNpemUsIHJzaXplKTsNCi0JCXJldHVybiAtMTsNCisJ CWRiZygicmVwb3J0ICVkIGlzIHRvbyBzaG9ydCwgKCVkIDwgJWQpICVkIGJpdHMgZXhwZWN0ZWQs ICVkIG1heGZpZWxkIiwgcmVwb3J0LT5pZCwgc2l6ZSwgcnNpemUsIHJlcG9ydC0+c2l6ZSwgcmVw b3J0LT5tYXhmaWVsZCk7DQorCQlpZiAoc2l6ZSA9PSA4KSB7DQorCQkJLyogDQorCQkJICogRklY TUUgLSBuZWVkIHRvIGNoZWNrIGlmIGRldmljZSBpcyBhIGtleWJvYXJkISENCisJCQkgKi8NCisJ CQlkYmcoInRlbGwgdXBwZXIgbGF5ZXIgd3JvbmcgcHJvdG9jb2wgLSBzd2l0Y2ggdG8gcmVwb3J0 Iik7IA0KKwkJCXJldHVybiAtRVBST1RPVFlQRTsNCisJCX0NCisJCWVsc2Ugew0KKwkJCXJldHVy biAtRU1TR1NJWkU7DQorCQl9DQogCX0NCiANCiAJZm9yIChuID0gMDsgbiA8IHJlcG9ydC0+bWF4 ZmllbGQ7IG4rKykNCi0tLSBsaW51eC0yLjYuOS1taDQvbmV0L2JsdWV0b290aC9oaWRwL2hpZC5o CTIwMDQtMTItMTQgMDg6Mjg6MjAuMzE1MDQwMTIwICsxMzAwDQorKysga2VybmVsLXNvdXJjZS0y LjYuOS1tYWctYnQvbmV0L2JsdWV0b290aC9oaWRwL2hpZC5oCTIwMDQtMTEtMjggMTM6MjA6NDgu MDAwMDAwMDAwICsxMzAwDQpAQCAtMjYsNyArMjYsNyBAQA0KICNpZm5kZWYgX19ISURfSA0KICNk ZWZpbmUgX19ISURfSA0KIA0KLSNpZmRlZiBERUJVRw0KKyNpZmRlZiBDT05GSUdfQlRfSElEUF9E RUJVR19SRVBPUlQNCiAjZGVmaW5lIGRiZyhmb3JtYXQsIGFyZy4uLikgcHJpbnRrKEtFUk5fREVC VUcgIiVzOiAiIGZvcm1hdCAiXG4iICwgX19GSUxFX18gLCAjIyBhcmcpDQogI2Vsc2UNCiAjZGVm aW5lIGRiZyhmb3JtYXQsIGFyZy4uLikgZG8ge30gd2hpbGUgKDApDQotLS0gbGludXgtMi42Ljkt bWg0L25ldC9ibHVldG9vdGgvaGlkcC9oaWRwLmgJMjAwNC0xMi0xNCAwODoyODoyMC4zMTYwMzk5 NjggKzEzMDANCisrKyBrZXJuZWwtc291cmNlLTIuNi45LW1hZy1idC9uZXQvYmx1ZXRvb3RoL2hp ZHAvaGlkcC5oCTIwMDQtMTItMDYgMDg6Mjk6NDIuMDAwMDAwMDAwICsxMzAwDQpAQCAtMjYsNiAr MjYsNzEgQEANCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCiAjaW5jbHVkZSA8bmV0L2JsdWV0 b290aC9ibHVldG9vdGguaD4NCiANCisvKg0KKyAqIEJsdWV0b290aCBISUQgcGFja2V0IGRlZmlu ZXMNCisgKi8NCisNCisvKg0KKyAqIEhJRCBUcmFuc2FjdGlvbiBUeXBlcywgYW5kIFRyYW5zYWN0 aW9uIGhlYWRlciBzdHVmZg0KKyAqLw0KKyNkZWZpbmUgSElEUF9USERSX1RSQU5TX01BU0sJCTB4 RjANCisjZGVmaW5lIEhJRFBfVEhEUl9QQVJBTV9NQVNLCQkweDBGDQorDQorI2RlZmluZSBISURQ X1RSQU5TX0hBTkRTSEFLRQkJMHgwMA0KKyNkZWZpbmUgSElEUF9UUkFOU19ISURfQ09OVFJPTAkJ MHgxMA0KKyNkZWZpbmUgSElEUF9UUkFOU19SU1JWRF8yCQkweDIwDQorI2RlZmluZSBISURQX1RS QU5TX1JTUlZEXzMJCTB4MzANCisjZGVmaW5lIEhJRFBfVFJBTlNfR0VUX1JFUE9SVAkJMHg0MA0K KyNkZWZpbmUgSElEUF9UUkFOU19TRVRfUkVQT1JUCQkweDUwDQorI2RlZmluZSBISURQX1RSQU5T X0dFVF9QUk9UT0NPTAkJMHg2MA0KKyNkZWZpbmUgSElEUF9UUkFOU19TRVRfUFJPVE9DT0wJCTB4 NzANCisjZGVmaW5lIEhJRFBfVFJBTlNfR0VUX0lETEUJCTB4ODANCisjZGVmaW5lIEhJRFBfVFJB TlNfU0VUX0lETEUJCTB4OTANCisjZGVmaW5lIEhJRFBfVFJBTlNfREFUQQkJCTB4QTANCisjZGVm aW5lIEhJRFBfVFJBTlNfREFUQwkJCTB4QjANCisjZGVmaW5lIEhJRFBfVFJBTlNfUlNSVkRfQwkJ MHhDMA0KKyNkZWZpbmUgSElEUF9UUkFOU19SU1JWRF9ECQkweEQwDQorI2RlZmluZSBISURQX1RS QU5TX1JTVlJEX0UJCTB4RTANCisjZGVmaW5lIEhJRFBfVFJBTlNfUlNWUkRfRgkJMHhGMA0KKw0K Ky8qDQorICogSElEIEhhbmRzaGFrZSByZXN1bHRzIHJldHVybmVkIGluIHRoZSByZXN1bHQgcGFy YW1ldGVyIG9mIHRoZSBoYW5kc2hha2UgDQorICogdHJhbnNhY3Rpb24gSElEIHBhY2tldCANCisg Ki8NCisjZGVmaW5lIEhJRFBfSFNIS19TVUNDRVNTRlVMCQkJMHgwMA0KKyNkZWZpbmUgSElEUF9I U0hLX05PVF9SRUFEWQkJCTB4MDENCisjZGVmaW5lIEhJRFBfSFNIS19FUlJfSU5WQUxJRF9SRVBP UlRfSUQJCTB4MDINCisjZGVmaW5lIEhJRFBfSFNIS19FUlJfVU5TVVBQT1JURURfUkVRVUVTVAkw eDAzDQorI2RlZmluZSBISURQX0hTSEtfRVJSX0lOVkFMSURfUEFSQU1FVEVSCQkweDA0DQorI2Rl ZmluZSBISURQX0hTSEtfRVJSX1VOS05PV04JCQkweDBFDQorI2RlZmluZSBISURQX0hTSEtfRVJS X0ZBVEFMCQkJMHgwRg0KKw0KKy8qDQorICogSElEIEhJRF9DT05UUk9MIG9wZXJhdGlvbiBwYXJh bWV0ZXINCisgKi8NCisjZGVmaW5lIEhJRFBfQ1RSTF9OT1AJCQkweDAwCS8qIE5vIG9wZXJhdGlv biAqLw0KKyNkZWZpbmUgSElEUF9DVFJMX0hBUkRfUkVTRVQJCTB4MDEJLyogUmVxdWVzdCBoYXJk IHJlc2V0ICovDQorI2RlZmluZSBISURQX0NUUkxfU09GVF9SRVNFVAkJMHgwMgkvKiBSZXF1ZXN0 IHNvZnQgcmVzZXQgKi8NCisjZGVmaW5lIEhJRFBfQ1RSTF9TVVNQRU5ECQkweDAzCS8qIFJlcXVl c3QgZGV2aWNlIHRvIHN1c3BlbmQgKi8NCisjZGVmaW5lIEhJRFBfQ1RSTF9FWElUX1NVU1BFTkQJ CTB4MDQJLyogcmVxdWVzdCBleGl0IHN1c3BlbmQgKi8NCisjZGVmaW5lIEhJRFBfQ1RSTF9WSVJU VUFMX0NBQkxFX1VOUExVRwkweDA1CS8qIG9ubHkgb25lIE1vdXNlL2tiZCBjYW4gc2VuZCAqLw0K Kw0KKy8qDQorICogSElEIERBVEEgVHJhbnNhY3Rpb24gaGVhZGVyIHBhcmFtZXRlciBuaWJibGUN CisgKi8NCisjZGVmaW5lIEhJRFBfREFUQV9SVFlQRV9NQVNLCQkweDAzDQorI2RlZmluZSBISURQ X0RBVEFfUlNSVkRfTUFTSwkJMHgwQw0KKyNkZWZpbmUgSElEUF9EQVRBX1JUWVBFX09USEVSCQkw eDAwDQorI2RlZmluZSBISURQX0RBVEFfUlRZUEVfSU5QVVQJCTB4MDENCisjZGVmaW5lIEhJRFBf REFUQV9SVFlQRV9PVVBVVAkJMHgwMg0KKyNkZWZpbmUgSElEUF9EQVRBX1JUWVBFX0ZFQVRVUkUJ CTB4MDMNCisNCisvKg0KKyAqIEhJRCBTRVRfUFJPVE9DT0wgaGVhZGVyIHBhcmFtZXRlciBuaWJi bGUNCisgKi8NCisjZGVmaW5lIEhJRFBfUFJPVE9fQk9PVAkJCTB4MDANCisjZGVmaW5lIEhJRFBf UFJPVE9fUkVQT1JUCQkweDAxDQorDQogLyogSElEUCBpb2N0bCBkZWZpbmVzICovDQogI2RlZmlu ZSBISURQQ09OTkFERAlfSU9XKCdIJywgMjAwLCBpbnQpDQogI2RlZmluZSBISURQQ09OTkRFTAlf SU9XKCdIJywgMjAxLCBpbnQpDQotLS0gbGludXgtMi42LjktbWg0L25ldC9ibHVldG9vdGgvaGlk cC9zb2NrLmMJMjAwNC0xMC0xOSAxMDo1NTowNy4wMDAwMDAwMDAgKzEzMDANCisrKyBrZXJuZWwt c291cmNlLTIuNi45LW1hZy1idC9uZXQvYmx1ZXRvb3RoL2hpZHAvc29jay5jCTIwMDQtMTEtMTkg MjA6NDQ6MTYuMDAwMDAwMDAwICsxMzAwDQpAQCAtNDAsNyArNDAsNyBAQA0KIA0KICNpbmNsdWRl ICJoaWRwLmgiDQogDQotI2lmbmRlZiBDT05GSUdfQlRfSElEUF9ERUJVRw0KKyNpZm5kZWYgQ09O RklHX0JUX0hJRFBfREVCVUdfQlQNCiAjdW5kZWYgIEJUX0RCRw0KICNkZWZpbmUgQlRfREJHKEQu Li4pDQogI2VuZGlmDQo= --=-pmZHVFPiISYi6ei7bsLE Content-Disposition: attachment; filename=linux-2.6.10-rc3-bk6-bthid-2004121501.patch Content-Type: text/x-patch; name=linux-2.6.10-rc3-bk6-bthid-2004121501.patch; charset=ISO-8859-1 Content-Transfer-Encoding: base64 U2lnbmVkLW9mZi1ieTogTWF0dGhldyBHcmFudCA8Z3JhbnRtYUBhbmF0aG90aC5nZW4ubno+DQoN ClVwZGF0ZXMgdG8gQlQgSElEIGZvciBwaGFzZSAxIG9mIGltcGxlbWVudGF0aW9uIG9mIEJUIEhJ RCBzcGVjLg0KDQpJbnRyb2R1Y2VzIGNoYW5nZXMgdG8gaW5jb21pbmcgcGFja2V0IHByb2Nlc3Np bmcsIGFuZCBwYXJzaW5nIHN0cnVjdHVyZQ0KZm9yIHJlY2lldmVkIG1lc3NhZ2VzLg0KDQpkaWZm IC11TnIgbGludXgtMi42LjEwLXJjMy1iazYvbmV0L2JsdWV0b290aC9oaWRwL2NvcmUuYyBsaW51 eC0yLjYuMTAtcmMzLWJrNi1tYWdidGhpZC9uZXQvYmx1ZXRvb3RoL2hpZHAvY29yZS5jDQotLS0g bGludXgtMi42LjEwLXJjMy1iazYvbmV0L2JsdWV0b290aC9oaWRwL2NvcmUuYwkyMDA0LTEwLTE5 IDEwOjU0OjU1LjAwMDAwMDAwMCArMTMwMA0KKysrIGxpbnV4LTIuNi4xMC1yYzMtYms2LW1hZ2J0 aGlkL25ldC9ibHVldG9vdGgvaGlkcC9jb3JlLmMJMjAwNC0xMi0xNSAwOTowNToyMi45NTQzOTE0 ODAgKzEzMDANCkBAIC00NSw3ICs0NSw3IEBADQogDQogI2luY2x1ZGUgImhpZHAuaCINCiANCi0j aWZuZGVmIENPTkZJR19CVF9ISURQX0RFQlVHDQorI2lmbmRlZiBDT05GSUdfQlRfSElEUF9ERUJV R19CVA0KICN1bmRlZiAgQlRfREJHDQogI2RlZmluZSBCVF9EQkcoRC4uLikNCiAjZW5kaWYNCkBA IC0xMzAsOCArMTMwLDggQEANCiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCiAJdW5zaWduZWQgY2hh ciBuZXdsZWRzOw0KIA0KLQlCVF9EQkcoInNlc3Npb24gJXAgaGlkICVwIGRhdGEgJXAgc2l6ZSAl ZCIsIHNlc3Npb24sIGRldmljZSwgZGF0YSwgc2l6ZSk7DQotDQorCUJUX0RCRygiIik7DQorCSAN CiAJaWYgKHR5cGUgIT0gRVZfTEVEKQ0KIAkJcmV0dXJuIC0xOw0KIA0KQEAgLTE1MSw3ICsxNTEs NyBAQA0KIAkJcmV0dXJuIC1FTk9NRU07DQogCX0NCiANCi0JKnNrYl9wdXQoc2tiLCAxKSA9IDB4 YTI7DQorCSpza2JfcHV0KHNrYiwgMSkgPSBISURQX1RSQU5TX0RBVEEgfCBISURQX0RBVEFfUlRZ UEVfT1VQVVQ7DQogCSpza2JfcHV0KHNrYiwgMSkgPSAweDAxOw0KIAkqc2tiX3B1dChza2IsIDEp ID0gbmV3bGVkczsNCiANCkBAIC0yMzIsNyArMjMyLDM1IEBADQogCQlkZWxfdGltZXIoJnNlc3Np b24tPnRpbWVyKTsNCiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIGhpZHBfc2VuZF9tZXNzYWdl KHN0cnVjdCBoaWRwX3Nlc3Npb24gKnNlc3Npb24sIHVuc2lnbmVkIGNoYXIgaGRyKQ0KK3N0YXRp YyBpbmxpbmUgaW50IGhpZHBfc2VuZF9jdHJsX21lc3NhZ2Uoc3RydWN0IGhpZHBfc2Vzc2lvbiAq c2Vzc2lvbiwNCisJCQl1bnNpZ25lZCBjaGFyIGhkciwNCisJCQl1bnNpZ25lZCBjaGFyICpkYXRh LCBpbnQgc2l6ZSkNCit7DQorCXN0cnVjdCBza19idWZmICpza2I7DQorDQorCUJUX0RCRygic2Vz c2lvbiAlcCBkYXRhICVwIHNpemUgJWQiLCBzZXNzaW9uLCBkYXRhLCBzaXplKTsNCisNCisJaWYg KCEoc2tiID0gYWxsb2Nfc2tiKHNpemUgKyAxLCBHRlBfQVRPTUlDKSkpIHsNCisJCUJUX0VSUigi Q2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgZnJhbWUiKTsNCisJCXJldHVybiAtRU5PTUVN Ow0KKwl9DQorDQorCSpza2JfcHV0KHNrYiwgMSkgPSBoZHI7DQorCWlmIChzaXplID4gMCkNCisJ CW1lbWNweShza2JfcHV0KHNrYiwgc2l6ZSksIGRhdGEsIHNpemUpOw0KKw0KKwlza2JfcXVldWVf dGFpbCgmc2Vzc2lvbi0+Y3RybF90cmFuc21pdCwgc2tiKTsNCisNCisJaGlkcF9zY2hlZHVsZShz ZXNzaW9uKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qIFNlbmQgYSAxIGJ5dGUgY29udHJv bCBtZXNzYWdlLg0KKyAqIEZvciBjYWxsaW5nIG91dHNpZGUgSElEIGt0aHJlYWQgcHJvY2VzcyAN CisgKi8NCitzdGF0aWMgaW5saW5lIHZvaWQgaGlkcF9zZW5kX2N0cmxfYnl0ZShzdHJ1Y3QgaGlk cF9zZXNzaW9uICpzZXNzaW9uLA0KKwkJIAkJCXVuc2lnbmVkIGNoYXIgaGRyKQ0KIHsNCiAJc3Ry dWN0IHNrX2J1ZmYgKnNrYjsNCiANCkBAIC0yNTAsMjYgKzI3OCwxNzIgQEANCiAJaGlkcF9zY2hl ZHVsZShzZXNzaW9uKTsNCiB9DQogDQotc3RhdGljIGlubGluZSBpbnQgaGlkcF9yZWN2X2ZyYW1l KHN0cnVjdCBoaWRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IpDQorLyog U2VuZCBhIDEgYnl0ZSBjb250cm9sIG1lc3NhZ2UuDQorICogRm9yIGNhbGxpbmcgaW5zaWRlIEhJ RCBrdGhyZWFkIHByb2Nlc3MgDQorICovDQorc3RhdGljIGlubGluZSB2b2lkIGhpZHBfc2VuZF9j dHJsX3JlcGx5KHN0cnVjdCBoaWRwX3Nlc3Npb24gKnNlc3Npb24sDQorCQkgCQkJdW5zaWduZWQg Y2hhciBoZHIpDQorew0KKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KKw0KKwlCVF9EQkcoInNlc3Np b24gJXAiLCBzZXNzaW9uKTsNCisNCisJaWYgKCEoc2tiID0gYWxsb2Nfc2tiKDEsIEdGUF9BVE9N SUMpKSkgew0KKwkJQlRfRVJSKCJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG1lc3NhZ2UiKTsN CisJCXJldHVybjsNCisJfQ0KKw0KKwkqc2tiX3B1dChza2IsIDEpID0gaGRyOw0KKw0KKwlza2Jf cXVldWVfdGFpbCgmc2Vzc2lvbi0+Y3RybF90cmFuc21pdCwgc2tiKTsNCit9DQorDQorc3RhdGlj IGlubGluZSB2b2lkIGhpZHBfcHJvY2Vzc19oYW5kc2hha2Uoc3RydWN0IGhpZHBfc2Vzc2lvbiAq c2Vzc2lvbiwgX191OCBwYXJhbSkNCit7DQorCXN3aXRjaCAocGFyYW0pIHsNCisJY2FzZSBISURQ X0hTSEtfU1VDQ0VTU0ZVTDoNCisJCS8qIENhbGwgaW50byBTRVRfIEdFVF8gaGFuZGxlcnMgaGVy ZSAqLw0KKwkJYnJlYWs7DQorCWNhc2UgSElEUF9IU0hLX05PVF9SRUFEWToNCisJY2FzZSBISURQ X0hTSEtfRVJSX0lOVkFMSURfUkVQT1JUX0lEOg0KKwljYXNlIEhJRFBfSFNIS19FUlJfVU5TVVBQ T1JURURfUkVRVUVTVDoNCisJY2FzZSBISURQX0hTSEtfRVJSX0lOVkFMSURfUEFSQU1FVEVSOg0K KwkJLyogQ2FsbCBpbnRvIFNFVF8gR0VUXyBoYW5kbGVycyBoZXJlICovDQorCQlicmVhazsNCisJ Y2FzZSBISURQX0hTSEtfRVJSX1VOS05PV046DQorCQlCVF9JTkZPKCJIQU5EU0hBS0UgcGFyYW1l dGVyIEVSUl9VTktOT1dOIHNlZW4uIik7DQorCQlicmVhazsNCisJY2FzZSBISURQX0hTSEtfRVJS X0ZBVEFMOg0KKwkJLyogRGV2aWNlIHJlcXVlc3RzIGEgcmVib290LCBhcyB0aGlzIGlzIHRoZSBv bmx5IHdheSB0aGlzIGVycm9yDQorIAkJICogY2FuIGJlIHJlY292ZXJlZC4NCisJCSAqLw0KKwkJ aGlkcF9zZW5kX2N0cmxfcmVwbHkoc2Vzc2lvbiwNCisJCQlISURQX1RSQU5TX0hJRF9DT05UUk9M IHwgSElEUF9DVFJMX1NPRlRfUkVTRVQpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQloaWRw X3NlbmRfY3RybF9yZXBseShzZXNzaW9uLA0KKwkJCUhJRFBfVFJBTlNfSEFORFNIQUtFIHwgSElE UF9IU0hLX0VSUl9JTlZBTElEX1BBUkFNRVRFUik7DQorCQlicmVhazsNCisJfQ0KKw0KK30NCisN CitzdGF0aWMgaW5saW5lIHZvaWQgaGlkcF9wcm9jZXNzX2hpZF9jb250cm9sIChzdHJ1Y3QgaGlk cF9zZXNzaW9uICpzZXNzaW9uLCBfX3U4IHBhcmFtKQ0KK3sNCisJc3dpdGNoIChwYXJhbSkgew0K KwljYXNlIEhJRFBfQ1RSTF9OT1A6DQorCQlicmVhazsNCisJY2FzZSBISURQX0NUUkxfVklSVFVB TF9DQUJMRV9VTlBMVUc6DQorCQkvKiBGbHVzaCB0aGUgdHJhbnNtaXQgcXVldWVzICovDQorCQlz a2JfcXVldWVfcHVyZ2UoJnNlc3Npb24tPmN0cmxfdHJhbnNtaXQpOw0KKwkJc2tiX3F1ZXVlX3B1 cmdlKCZzZXNzaW9uLT5pbnRyX3RyYW5zbWl0KTsNCisNCisJCS8qIEtpbGwgc2Vzc2lvbiB0aHJl YWQgKi8NCisJCWF0b21pY19pbmMoJnNlc3Npb24tPnRlcm1pbmF0ZSk7DQorDQorCQkvKiBEbyBz b21lIGZ1bmt5IEhDSSBzdHVmZiBoZXJlIHRvIGRlbGV0ZSBwYWlyaW5nIG9uIGRvbmdsZT8gKi8N CisJCWJyZWFrOw0KKwljYXNlIEhJRFBfQ1RSTF9IQVJEX1JFU0VUOg0KKwljYXNlIEhJRFBfQ1RS TF9TT0ZUX1JFU0VUOg0KKwljYXNlIEhJRFBfQ1RSTF9TVVNQRU5EOg0KKwljYXNlIEhJRFBfQ1RS TF9FWElUX1NVU1BFTkQ6DQorCQkvKiBXZSBoYXZlIHRvIHBhcnNlIHRoZXNlIGFuZCByZXR1cm4g bm8gZXJyb3IgKi8NCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJaGlkcF9zZW5kX2N0cmxfcmVw bHkoc2Vzc2lvbiwNCisJCQlISURQX1RSQU5TX0hBTkRTSEFLRSB8IEhJRFBfSFNIS19FUlJfSU5W QUxJRF9QQVJBTUVURVIpOw0KKwkJYnJlYWs7DQorCX0NCit9DQorDQorc3RhdGljIGlubGluZSBp bnQgaGlkcF9wcm9jZXNzX2RhdGEoc3RydWN0IGhpZHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0 IHNrX2J1ZmYgKnNrYiwgX191OCBwYXJhbSkNCit7DQorCWludCByZXN1bHQgPSAwOw0KKw0KKwlC VF9JTkZPKCJEQVRBIHBhY2tldCBvbiBjb250cm9sIGNoYW5uZWwsIEdFVF8sIFNFVF8gbm90IGlt cGxlbWVudGVkIik7DQorDQorCXN3aXRjaCAocGFyYW0pIHsNCisJY2FzZSBISURQX0RBVEFfUlRZ UEVfSU5QVVQ6DQorCQloaWRwX3NldF90aW1lcihzZXNzaW9uKTsNCisNCisJCWlmIChzZXNzaW9u LT5pbnB1dCkNCisJCQloaWRwX2lucHV0X3JlcG9ydChzZXNzaW9uLCBza2IpOw0KKwkJYnJlYWs7 DQorCWNhc2UgSElEUF9EQVRBX1JUWVBFX09USEVSOg0KKwljYXNlIEhJRFBfREFUQV9SVFlQRV9P VVBVVDoNCisJY2FzZSBISURQX0RBVEFfUlRZUEVfRkVBVFVSRToNCisJCUJUX0RCRygiVW5pbXBs ZW1lbnRlZCBEQVRBIHBhcmFtZXRlciAweCUwMXgiLCBwYXJhbSk7DQorCQlicmVhazsNCisJZGVm YXVsdDoNCisJCUJUX0RCRygiSW52YWxpZCBEQVRBIHBhcmFtZXRlciAweCUwMXgiLCBwYXJhbSk7 DQorCQloaWRwX3NlbmRfY3RybF9yZXBseShzZXNzaW9uLA0KKwkJCUhJRFBfVFJBTlNfSEFORFNI QUtFIHwgSElEUF9IU0hLX0VSUl9JTlZBTElEX1BBUkFNRVRFUik7DQorCX0NCisJDQorCXJldHVy biAwOw0KK30NCisNCisNCitzdGF0aWMgaW5saW5lIGludCBoaWRwX3JlY3ZfY3RybF9mcmFtZShz dHJ1Y3QgaGlkcF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KIHsNCiAJ X191OCBoZHI7DQorCV9fdTggdHlwZTsNCisJX191OCBwYXJhbTsNCisJaW50IGVyciA9IDA7DQog DQogCUJUX0RCRygic2Vzc2lvbiAlcCBza2IgJXAgbGVuICVkIiwgc2Vzc2lvbiwgc2tiLCBza2It Pmxlbik7DQogDQogCWhkciA9IHNrYi0+ZGF0YVswXTsNCiAJc2tiX3B1bGwoc2tiLCAxKTsNCiAN Ci0JaWYgKGhkciA9PSAweGExKSB7DQotCQloaWRwX3NldF90aW1lcihzZXNzaW9uKTsNCisJdHlw ZSA9IGhkciAmIEhJRFBfVEhEUl9UUkFOU19NQVNLOw0KKwlwYXJhbSA9IGhkciAmIEhJRFBfVEhE Ul9QQVJBTV9NQVNLOw0KIA0KLQkJaWYgKHNlc3Npb24tPmlucHV0KQ0KLQkJCWhpZHBfaW5wdXRf cmVwb3J0KHNlc3Npb24sIHNrYik7DQotCX0gZWxzZSB7DQorCXN3aXRjaCAodHlwZSkgew0KKwlj YXNlIEhJRFBfVFJBTlNfSEFORFNIQUtFOg0KKwkJaGlkcF9wcm9jZXNzX2hhbmRzaGFrZShzZXNz aW9uLCBwYXJhbSk7DQorCQlicmVhazsNCisJY2FzZSBISURQX1RSQU5TX0hJRF9DT05UUk9MOg0K KwkJaGlkcF9wcm9jZXNzX2hpZF9jb250cm9sKHNlc3Npb24sIHBhcmFtKTsNCisJCWJyZWFrOw0K KwljYXNlIEhJRFBfVFJBTlNfREFUQToNCisJCWVyciA9IGhpZHBfcHJvY2Vzc19kYXRhKHNlc3Np b24sIHNrYiwgcGFyYW0pOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQogCQlCVF9EQkcoIlVuc3Vw cG9ydGVkIHByb3RvY29sIGhlYWRlciAweCUwMngiLCBoZHIpOw0KKwkJaGlkcF9zZW5kX2N0cmxf cmVwbHkoc2Vzc2lvbiwNCisJCQlISURQX1RSQU5TX0hBTkRTSEFLRSB8IEhJRFBfSFNIS19FUlJf VU5TVVBQT1JURURfUkVRVUVTVCk7DQorCQlicmVhazsNCiAJfQ0KKwkJDQorCWtmcmVlX3NrYihz a2IpOw0KKwlyZXR1cm4gZXJyOw0KK30NCisNCisvKiBUaGlzIG5lZWRzIHRvIGJlIHNlcGFyYXRl IGFzIHRoZXJlIGFyZSBvbmx5IERBVEEgYW5kIERBVEMgcGFja2V0cyBvbiB0aGUgDQorICogaW50 ZXJydXB0IGNoYW5uZWwuIGlEYXRhIHJlY2lldmVkLCBhbmQgbm8gcmVzdWx0IGdpdmVuLCBzbyB3 ZSBzd2FsbG93IGVycm9ycw0KKyAqIGFuZCB0aHJvdyBvdXQgaW52YWxpZCBzdHVmZi4gTUFHDQor ICovIA0KK3N0YXRpYyBpbmxpbmUgdm9pZCBoaWRwX3JlY3ZfaW50cl9mcmFtZShzdHJ1Y3QgaGlk cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KK3sNCisJX191OCBoZHI7 DQorCWludCBlcnIgPSAwOw0KIA0KKwlCVF9EQkcoInNlc3Npb24gJXAgc2tiICVwIGxlbiAlZCIs IHNlc3Npb24sIHNrYiwgc2tiLT5sZW4pOw0KKw0KKwloZHIgPSBza2ItPmRhdGFbMF07DQorCXNr Yl9wdWxsKHNrYiwgMSk7DQorDQorCWlmIChoZHIgPT0gKEhJRFBfVFJBTlNfREFUQSB8IEhJRFBf REFUQV9SVFlQRV9JTlBVVCkpIHsNCisJCWhpZHBfc2V0X3RpbWVyKHNlc3Npb24pOw0KKwkJaWYg KHNlc3Npb24tPmlucHV0KQ0KKwkJCWhpZHBfaW5wdXRfcmVwb3J0KHNlc3Npb24sIHNrYik7DQor CX0NCisJZWxzZSB7DQorCQlCVF9JTkZPKCJVbnN1cHBvcnRlZCBwcm90b2NvbCBoZWFkZXIgMHgl MDJ4IiwgaGRyKTsNCisJfQ0KKwkJDQogCWtmcmVlX3NrYihza2IpOw0KLQlyZXR1cm4gMDsNCiB9 DQogDQogc3RhdGljIGludCBoaWRwX3NlbmRfZnJhbWUoc3RydWN0IHNvY2tldCAqc29jaywgdW5z aWduZWQgY2hhciAqZGF0YSwgaW50IGxlbikNCkBAIC0zNTAsMTIgKzUyNCwxMiBAQA0KIA0KIAkJ d2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgmY3RybF9zay0+c2tfcmVjZWl2ZV9xdWV1ZSkpKSB7 DQogCQkJc2tiX29ycGhhbihza2IpOw0KLQkJCWhpZHBfcmVjdl9mcmFtZShzZXNzaW9uLCBza2Ip Ow0KKwkJCWhpZHBfcmVjdl9jdHJsX2ZyYW1lKHNlc3Npb24sIHNrYik7DQogCQl9DQogDQogCQl3 aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKCZpbnRyX3NrLT5za19yZWNlaXZlX3F1ZXVlKSkpIHsN CiAJCQlza2Jfb3JwaGFuKHNrYik7DQotCQkJaGlkcF9yZWN2X2ZyYW1lKHNlc3Npb24sIHNrYik7 DQorCQkJaGlkcF9yZWN2X2ludHJfZnJhbWUoc2Vzc2lvbiwgc2tiKTsNCiAJCX0NCiANCiAJCWhp ZHBfcHJvY2Vzc190cmFuc21pdChzZXNzaW9uKTsNCkBAIC01MTQsNyArNjg4LDggQEANCiAJCWdv dG8gdW5saW5rOw0KIA0KIAlpZiAoc2Vzc2lvbi0+aW5wdXQpIHsNCi0JCWhpZHBfc2VuZF9tZXNz YWdlKHNlc3Npb24sIDB4NzApOw0KKwkJaGlkcF9zZW5kX2N0cmxfYnl0ZShzZXNzaW9uLCANCisJ CQlISURQX1RSQU5TX1NFVF9QUk9UT0NPTCB8IEhJRFBfUFJPVE9fQk9PVCk7DQogCQlzZXNzaW9u LT5mbGFncyB8PSAoMSA8PCBISURQX0JPT1RfUFJPVE9DT0xfTU9ERSk7DQogDQogCQlzZXNzaW9u LT5sZWRzID0gMHhmZjsNCkBAIC01NTQsNyArNzI5LDggQEANCiAJc2Vzc2lvbiA9IF9faGlkcF9n ZXRfc2Vzc2lvbigmcmVxLT5iZGFkZHIpOw0KIAlpZiAoc2Vzc2lvbikgew0KIAkJaWYgKHJlcS0+ ZmxhZ3MgJiAoMSA8PCBISURQX1ZJUlRVQUxfQ0FCTEVfVU5QTFVHKSkgew0KLQkJCWhpZHBfc2Vu ZF9tZXNzYWdlKHNlc3Npb24sIDB4MTUpOw0KKwkJCWhpZHBfc2VuZF9jdHJsX2J5dGUoc2Vzc2lv biwgDQorCQkJCUhJRFBfVFJBTlNfSElEX0NPTlRST0wgfCBISURQX0NUUkxfVklSVFVBTF9DQUJM RV9VTlBMVUcpOw0KIAkJfSBlbHNlIHsNCiAJCQkvKiBGbHVzaCB0aGUgdHJhbnNtaXQgcXVldWVz ICovDQogCQkJc2tiX3F1ZXVlX3B1cmdlKCZzZXNzaW9uLT5jdHJsX3RyYW5zbWl0KTsNCmRpZmYg LXVOciBsaW51eC0yLjYuMTAtcmMzLWJrNi9uZXQvYmx1ZXRvb3RoL2hpZHAvaGlkcC5oIGxpbnV4 LTIuNi4xMC1yYzMtYms2LW1hZ2J0aGlkL25ldC9ibHVldG9vdGgvaGlkcC9oaWRwLmgNCi0tLSBs aW51eC0yLjYuMTAtcmMzLWJrNi9uZXQvYmx1ZXRvb3RoL2hpZHAvaGlkcC5oCTIwMDQtMTAtMTkg MTA6NTM6NTAuMDAwMDAwMDAwICsxMzAwDQorKysgbGludXgtMi42LjEwLXJjMy1iazYtbWFnYnRo aWQvbmV0L2JsdWV0b290aC9oaWRwL2hpZHAuaAkyMDA0LTEyLTE0IDA4OjQ3OjQyLjAwMDAwMDAw MCArMTMwMA0KQEAgLTI2LDYgKzI2LDcxIEBADQogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQog I2luY2x1ZGUgPG5ldC9ibHVldG9vdGgvYmx1ZXRvb3RoLmg+DQogDQorLyoNCisgKiBCbHVldG9v dGggSElEIHBhY2tldCBkZWZpbmVzDQorICovDQorDQorLyoNCisgKiBISUQgVHJhbnNhY3Rpb24g VHlwZXMsIGFuZCBUcmFuc2FjdGlvbiBoZWFkZXIgc3R1ZmYNCisgKi8NCisjZGVmaW5lIEhJRFBf VEhEUl9UUkFOU19NQVNLCQkweEYwDQorI2RlZmluZSBISURQX1RIRFJfUEFSQU1fTUFTSwkJMHgw Rg0KKw0KKyNkZWZpbmUgSElEUF9UUkFOU19IQU5EU0hBS0UJCTB4MDANCisjZGVmaW5lIEhJRFBf VFJBTlNfSElEX0NPTlRST0wJCTB4MTANCisjZGVmaW5lIEhJRFBfVFJBTlNfUlNSVkRfMgkJMHgy MA0KKyNkZWZpbmUgSElEUF9UUkFOU19SU1JWRF8zCQkweDMwDQorI2RlZmluZSBISURQX1RSQU5T X0dFVF9SRVBPUlQJCTB4NDANCisjZGVmaW5lIEhJRFBfVFJBTlNfU0VUX1JFUE9SVAkJMHg1MA0K KyNkZWZpbmUgSElEUF9UUkFOU19HRVRfUFJPVE9DT0wJCTB4NjANCisjZGVmaW5lIEhJRFBfVFJB TlNfU0VUX1BST1RPQ09MCQkweDcwDQorI2RlZmluZSBISURQX1RSQU5TX0dFVF9JRExFCQkweDgw DQorI2RlZmluZSBISURQX1RSQU5TX1NFVF9JRExFCQkweDkwDQorI2RlZmluZSBISURQX1RSQU5T X0RBVEEJCQkweEEwDQorI2RlZmluZSBISURQX1RSQU5TX0RBVEMJCQkweEIwDQorI2RlZmluZSBI SURQX1RSQU5TX1JTUlZEX0MJCTB4QzANCisjZGVmaW5lIEhJRFBfVFJBTlNfUlNSVkRfRAkJMHhE MA0KKyNkZWZpbmUgSElEUF9UUkFOU19SU1ZSRF9FCQkweEUwDQorI2RlZmluZSBISURQX1RSQU5T X1JTVlJEX0YJCTB4RjANCisNCisvKg0KKyAqIEhJRCBIYW5kc2hha2UgcmVzdWx0cyByZXR1cm5l ZCBpbiB0aGUgcmVzdWx0IHBhcmFtZXRlciBvZiB0aGUgaGFuZHNoYWtlIA0KKyAqIHRyYW5zYWN0 aW9uIEhJRCBwYWNrZXQgDQorICovDQorI2RlZmluZSBISURQX0hTSEtfU1VDQ0VTU0ZVTAkJCTB4 MDANCisjZGVmaW5lIEhJRFBfSFNIS19OT1RfUkVBRFkJCQkweDAxDQorI2RlZmluZSBISURQX0hT SEtfRVJSX0lOVkFMSURfUkVQT1JUX0lECQkweDAyDQorI2RlZmluZSBISURQX0hTSEtfRVJSX1VO U1VQUE9SVEVEX1JFUVVFU1QJMHgwMw0KKyNkZWZpbmUgSElEUF9IU0hLX0VSUl9JTlZBTElEX1BB UkFNRVRFUgkJMHgwNA0KKyNkZWZpbmUgSElEUF9IU0hLX0VSUl9VTktOT1dOCQkJMHgwRQ0KKyNk ZWZpbmUgSElEUF9IU0hLX0VSUl9GQVRBTAkJCTB4MEYNCisNCisvKg0KKyAqIEhJRCBISURfQ09O VFJPTCBvcGVyYXRpb24gcGFyYW1ldGVyDQorICovDQorI2RlZmluZSBISURQX0NUUkxfTk9QCQkJ MHgwMAkvKiBObyBvcGVyYXRpb24gKi8NCisjZGVmaW5lIEhJRFBfQ1RSTF9IQVJEX1JFU0VUCQkw eDAxCS8qIFJlcXVlc3QgaGFyZCByZXNldCAqLw0KKyNkZWZpbmUgSElEUF9DVFJMX1NPRlRfUkVT RVQJCTB4MDIJLyogUmVxdWVzdCBzb2Z0IHJlc2V0ICovDQorI2RlZmluZSBISURQX0NUUkxfU1VT UEVORAkJMHgwMwkvKiBSZXF1ZXN0IGRldmljZSB0byBzdXNwZW5kICovDQorI2RlZmluZSBISURQ X0NUUkxfRVhJVF9TVVNQRU5ECQkweDA0CS8qIHJlcXVlc3QgZXhpdCBzdXNwZW5kICovDQorI2Rl ZmluZSBISURQX0NUUkxfVklSVFVBTF9DQUJMRV9VTlBMVUcJMHgwNQkvKiBvbmx5IG9uZSBNb3Vz ZS9rYmQgY2FuIHNlbmQgKi8NCisNCisvKg0KKyAqIEhJRCBEQVRBIFRyYW5zYWN0aW9uIGhlYWRl ciBwYXJhbWV0ZXIgbmliYmxlDQorICovDQorI2RlZmluZSBISURQX0RBVEFfUlRZUEVfTUFTSwkJ MHgwMw0KKyNkZWZpbmUgSElEUF9EQVRBX1JTUlZEX01BU0sJCTB4MEMNCisjZGVmaW5lIEhJRFBf REFUQV9SVFlQRV9PVEhFUgkJMHgwMA0KKyNkZWZpbmUgSElEUF9EQVRBX1JUWVBFX0lOUFVUCQkw eDAxDQorI2RlZmluZSBISURQX0RBVEFfUlRZUEVfT1VQVVQJCTB4MDINCisjZGVmaW5lIEhJRFBf REFUQV9SVFlQRV9GRUFUVVJFCQkweDAzDQorDQorLyoNCisgKiBISUQgU0VUX1BST1RPQ09MIGhl YWRlciBwYXJhbWV0ZXIgbmliYmxlDQorICovDQorI2RlZmluZSBISURQX1BST1RPX0JPT1QJCQkw eDAwDQorI2RlZmluZSBISURQX1BST1RPX1JFUE9SVAkJMHgwMQ0KKw0KIC8qIEhJRFAgaW9jdGwg ZGVmaW5lcyAqLw0KICNkZWZpbmUgSElEUENPTk5BREQJX0lPVygnSCcsIDIwMCwgaW50KQ0KICNk ZWZpbmUgSElEUENPTk5ERUwJX0lPVygnSCcsIDIwMSwgaW50KQ0KZGlmZiAtdU5yIGxpbnV4LTIu Ni4xMC1yYzMtYms2L25ldC9ibHVldG9vdGgvaGlkcC9zb2NrLmMgbGludXgtMi42LjEwLXJjMy1i azYtbWFnYnRoaWQvbmV0L2JsdWV0b290aC9oaWRwL3NvY2suYw0KLS0tIGxpbnV4LTIuNi4xMC1y YzMtYms2L25ldC9ibHVldG9vdGgvaGlkcC9zb2NrLmMJMjAwNC0xMC0xOSAxMDo1NTowNy4wMDAw MDAwMDAgKzEzMDANCisrKyBsaW51eC0yLjYuMTAtcmMzLWJrNi1tYWdidGhpZC9uZXQvYmx1ZXRv b3RoL2hpZHAvc29jay5jCTIwMDQtMTItMTQgMDg6NDc6NDIuMDAwMDAwMDAwICsxMzAwDQpAQCAt NDAsNyArNDAsNyBAQA0KIA0KICNpbmNsdWRlICJoaWRwLmgiDQogDQotI2lmbmRlZiBDT05GSUdf QlRfSElEUF9ERUJVRw0KKyNpZm5kZWYgQ09ORklHX0JUX0hJRFBfREVCVUdfQlQNCiAjdW5kZWYg IEJUX0RCRw0KICNkZWZpbmUgQlRfREJHKEQuLi4pDQogI2VuZGlmDQo= --=-pmZHVFPiISYi6ei7bsLE-- --=-oBydhKtMAy8kJ4dlOj+i Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) iD8DBQBBv01Zuk55Di7iAnARArVoAJ97qDijcYVJpelLqepw2wcW7JypwACfcqo1 myx4i+ir6uvsv+ifBuGddRY= =QR19 -----END PGP SIGNATURE----- --=-oBydhKtMAy8kJ4dlOj+i-- ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel