From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?UTF-8?Q?=C5=81ukasz_Luboja=C5=84ski?=" Subject: Re: New Force Feedback device support - GreenAsia 0x12 Date: Thu, 4 Dec 2008 21:55:45 +0100 Message-ID: <92cd8c320812041255i1a8bb4ces9468d2821ab7c620@mail.gmail.com> References: <200811262333.45245.lukasz@lubojanski.info> <49303827.4050907@gmail.com> <200811282008.41601.lukasz@lubojanski.info> <92cd8c320812041235u6bf501d9ta473398bc1374aac@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_31256_26838029.1228424145923" Return-path: Received: from nf-out-0910.google.com ([64.233.182.186]:8230 "EHLO nf-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755338AbYLDUzs (ORCPT ); Thu, 4 Dec 2008 15:55:48 -0500 Received: by nf-out-0910.google.com with SMTP id d3so2213265nfc.21 for ; Thu, 04 Dec 2008 12:55:46 -0800 (PST) In-Reply-To: <92cd8c320812041235u6bf501d9ta473398bc1374aac@mail.gmail.com> Sender: linux-input-owner@vger.kernel.org List-Id: linux-input@vger.kernel.org To: Jiri Kosina Cc: Anssi Hannula , linux-input@vger.kernel.org ------=_Part_31256_26838029.1228424145923 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline T24gVGh1LCBEZWMgNCwgMjAwOCBhdCA5OjM1IFBNLCDFgXVrYXN6IEx1Ym9qYcWEc2tpCjxsdWth c3pAbHVib2phbnNraS5pbmZvPiB3cm90ZToKPiAyMDA4LzExLzI5IEppcmkgS29zaW5hIDxqa29z aW5hQHN1c2UuY3o+Ogo+PiBPbiBGcmksIDI4IE5vdiAyMDA4LCDFgXVrYXN6IEx1Ym9qYcWEc2tp IHdyb3RlOgo+Pgo+Pj4gPiBJdCBzZWVtcyB0aGUgcHJvdG9jb2wgcmVzZW1ibGVzIG1vcmUgdGhl IGhpZC1sZzJmZiBvbmUuIFRoZSBkaWZmZXJlbmNlcwo+Pj4gPiBhcmUgdGhlIGFkZGl0aW9uYWwg MHhmYSAweGZlIDB4MCByZXBvcnQgc2VudCB0byB0aGUgZGV2aWNlLCBhbmQgdGhlCj4+PiA+IG1p c3NpbmcgMHhmMyBzdG9wIGNvbW1hbmQuCj4+PiBZZXAgLSBkaWZmZXJlbnQgcmVwb3J0cyBhcmUg c2VuZCBpbiBjYXNlIG9mIFBhbnRoZXJsb3JkIGFuZCBHcmVlbkFzaWEKPj4+IDB4MTIgLSBJdCBj b3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBpdCBidXQgaXQgd2lsbCByZXF1aXJlIGNoZWNraW5nIHdo YXQKPj4+IGhhcmR3YXJlIGlzIHVzZWQgYW5kIHNlbmQgZGlmZmVyZW50IHJlcG9ydHMuCj4+Cj4+ IE9LLCBzbyBhcyB0aGUgcmVwb3J0cyBhcmUgbm90IHJlYWxseSBpZGVudGljYWwsIGFuZCBpbiB0 aGUgZnV0dXJlIHdlIG1pZ2h0Cj4+IGRpc2NvdmVyIHRoYXQgdGhlcmUgYXJlIG1hbnkgbW9yZSBv dGhlciBHcmVlbmFzaWEgZGV2aWNlcyB3aGljaCByZXF1aXJlIGEKPj4gc2xpZ2h0bHkgZGlmZmVy ZW50IGhhbmRsaW5nIGFzIHdlbGwsIEkgd291bGQgcmF0aGVyIHByZWZlciB0byBoYXZlIGl0IGFz IGEKPj4gc2VwYXJhdGUgZHJpdmVyLCB0byBhdm9pZCBhZGRpdGlvbnMgb2YgaGVyZS1hbmQtdGhl cmUgZGV2aWNlLXNwZWNpZmljCj4+IHF1aXJrcyB0byByYW5kb20gcGxhY2VzIGluIHRoZSBjb2Rl LiBUaGF0J3MgZXhhY3RseSB3aGF0IHdlIGFyZSB0cnlpbmcgdG8KPj4gYXZvaWQgd2l0aCB0aGUg SElEIGJ1cyBhcHByb2FjaCBpbiB0aGUgZmlyc3QgcGxhY2UuCj4+Cj4+IFNvIEkgdGhpbmsgc2Vw YXJhdGUgZHJpdmVyIGlzIGZpbmUuCj4+Cj4+IFRoYW5rcyB0byBib3RoIG9mIHlvdS4KPj4KPj4g LS0KPj4gSmlyaSBLb3NpbmEKPj4gU1VTRSBMYWJzCj4KPiBIaSwKPgo+IEhlcmUgaXMgbmV3IHZl cnNpb24gb2YgdGhlIEdyZWVuQXNpYSBwYXRjaCAtIEkgaG9wZSB0aGlzIHRpbWUKPiBldmVyeXRo aW5nIHdpbGwgYmUgT0suIEl0IGlzIGJhc2VkIG9uIHRoZSBQYW50aGVybG9yZC4KPgo+IFNvcnJ5 IHRvIHRha2Ugc28gbG9uZyBidXQgSSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIDIuNi4yOCAoMi42 LjI4LXJjNgo+IHdhcyBub3QgbG9hZGluZyBteSBkcml2ZXIgYW5kIDIuNi4yOC1yYzcgaXMgY3Jh c2hpbmcgd2hlbiBJTyBBUElDIGlzCj4gZW5hYmxlZCkuIEFueXdheSBJIGRvbmUgaXQgYW5kIEkn bSB3YWl0aW5nIGZvciB5b3VyIGZlZWRiYWNrIDpECj4KPiByZWdhcmRzCj4gTHVrYXN6IEx1Ym9q YW5za2kKPgoKQW5kIG9uZSBtb3JlIHRpbWUgLSBiZWNhdXNlIEkgaGF2ZSBnZW5lcmF0ZWQgYW5k IGF0dGFjaGVkIHdyb25nIGZpbGUgcHJldmlvdXNseS4KClRoaXMgdGltZSBzaG91bGQgYmUgT0su CgpyZWdhcmRzCkx1a2FzeiBMdWJvamFuc2tpCg== ------=_Part_31256_26838029.1228424145923 Content-Type: text/x-diff; name=greenasia.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fobvyej71 Content-Disposition: attachment; filename=greenasia.diff U2lnbmVkLW9mZi1ieTogTHVrYXN6IEx1Ym9qYW5za2kgPGx1a2FzekBsdWJvamFuc2tpLmluZm8+ CmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9LY29uZmlnIGIvZHJpdmVycy9oaWQvS2NvbmZpZwpp bmRleCBiNGZkOGNhLi40NWYyNWVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9LY29uZmlnCisr KyBiL2RyaXZlcnMvaGlkL0tjb25maWcKQEAgLTIxNyw2ICsyMTcsMjQgQEAgY29uZmlnIFBBTlRI RVJMT1JEX0ZGCiAJICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgUGFudGhlckxvcmQvR3JlZW5B c2lhIGJhc2VkIGdhbWUgY29udHJvbGxlcgogCSAgb3IgYWRhcHRlciBhbmQgd2FudCB0byBlbmFi bGUgZm9yY2UgZmVlZGJhY2sgc3VwcG9ydCBmb3IgaXQuCiAKK2NvbmZpZyBISURfR1JFRU5BU0lB CisJdHJpc3RhdGUgIkdyZWVuQXNpYSAoUHJvZHVjdCBJRCAweDEyKSBiYXNlZCBkZXZpY2Ugc3Vw cG9ydCIgaWYgRU1CRURERUQKKwlkZXBlbmRzIG9uIFVTQl9ISUQKKwlkZWZhdWx0IHkKKwktLS1o ZWxwLS0tCisJICBTdXBwb3J0IGZvciBHcmVlbkFzaWEgKFByb2R1Y3QgSUQgMHgxMikgYmFzZWQg ZGV2aWNlIHN1cHBvcnQKKwkgIChsaWtlIE1BTlRBIFdhcmlvciBNTTgxNiBhbmQgU3BlZWRMaW5r IFN0cmlrZTIgU0wtNjYzNSkuCisKK2NvbmZpZyBHUkVFTkFTSUFfRkYKKwlib29sICJHcmVlbkFz aWEgKFByb2R1Y3QgSUQgMHgxMikgZm9yY2UgZmVlZGJhY2sgc3VwcG9ydCIKKwlkZXBlbmRzIG9u IEhJRF9HUkVFTkFTSUEKKwlzZWxlY3QgSU5QVVRfRkZfTUVNTEVTUworCS0tLWhlbHAtLS0KKwkg IFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBHcmVlbkFzaWEgKFByb2R1Y3QgSUQgMHgxMikgYmFz ZWQgZ2FtZSBjb250cm9sbGVyCisJICBvciBhZGFwdGVyIGFuZCB3YW50IHRvIGVuYWJsZSBmb3Jj ZSBmZWVkYmFjayBzdXBwb3J0IGZvciBpdC4KKworCisKIGNvbmZpZyBISURfUEVUQUxZTlgKIAl0 cmlzdGF0ZSAiUGV0YWx5bngiIGlmIEVNQkVEREVECiAJZGVwZW5kcyBvbiBVU0JfSElECmRpZmYg LS1naXQgYS9kcml2ZXJzL2hpZC9NYWtlZmlsZSBiL2RyaXZlcnMvaGlkL01ha2VmaWxlCmluZGV4 IGIwOWU0M2UuLjIwNjYyYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL01ha2VmaWxlCisrKyBi L2RyaXZlcnMvaGlkL01ha2VmaWxlCkBAIC0zMyw2ICszMyw3IEBAIG9iai0kKENPTkZJR19ISURf R1lSQVRJT04pCSs9IGhpZC1neXJhdGlvbi5vCiBvYmotJChDT05GSUdfSElEX0xPR0lURUNIKQkr PSBoaWQtbG9naXRlY2gubwogb2JqLSQoQ09ORklHX0hJRF9NSUNST1NPRlQpCSs9IGhpZC1taWNy b3NvZnQubwogb2JqLSQoQ09ORklHX0hJRF9NT05URVJFWSkJKz0gaGlkLW1vbnRlcmV5Lm8KK29i ai0kKENPTkZJR19ISURfR1JFRU5BU0lBKQkrPSBoaWQtZ2Eubwogb2JqLSQoQ09ORklHX0hJRF9Q QU5USEVSTE9SRCkJKz0gaGlkLXBsLm8KIG9iai0kKENPTkZJR19ISURfUEVUQUxZTlgpCSs9IGhp ZC1wZXRhbHlueC5vCiBvYmotJChDT05GSUdfSElEX1NBTVNVTkcpCSs9IGhpZC1zYW1zdW5nLm8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1jb3JlLmMgYi9kcml2ZXJzL2hpZC9oaWQtY29y ZS5jCmluZGV4IDQwZGYzZTEuLmYyMTg0Y2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2hpZC1j b3JlLmMKKysrIGIvZHJpdmVycy9oaWQvaGlkLWNvcmUuYwpAQCAtMTI2OSw2ICsxMjY5LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBoaWRfZGV2aWNlX2lkIGhpZF9ibGFja2xpc3RbXSA9IHsKIAl7 IEhJRF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfR0FNRVJPTiwgVVNCX0RFVklDRV9JRF9HQU1F Uk9OX0RVQUxfUFNYX0FEQVBUT1IpIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lE X0dBTUVST04sIFVTQl9ERVZJQ0VfSURfR0FNRVJPTl9EVUFMX1BDU19BREFQVE9SKSB9LAogCXsg SElEX1VTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9HUkVFTkFTSUEsIDB4MDAwMykgfSwKKwl7IEhJ RF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfR1JFRU5BU0lBLCAweDAwMTIpIH0sCiAJeyBISURf VVNCX0RFVklDRShVU0JfVkVORE9SX0lEX0dZUkFUSU9OLCBVU0JfREVWSUNFX0lEX0dZUkFUSU9O X1JFTU9URSkgfSwKIAl7IEhJRF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfR1lSQVRJT04sIFVT Ql9ERVZJQ0VfSURfR1lSQVRJT05fUkVNT1RFXzIpIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0Jf VkVORE9SX0lEX0xBQlRFQywgVVNCX0RFVklDRV9JRF9MQUJURUNfV0lSRUxFU1NfS0VZQk9BUkQp IH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtZHVtbXkuYyBiL2RyaXZlcnMvaGlkL2hp ZC1kdW1teS5jCmluZGV4IGUxNDhmODYuLmQyYjFiMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlk L2hpZC1kdW1teS5jCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1kdW1teS5jCkBAIC00Myw2ICs0Myw5 IEBAIHN0YXRpYyBpbnQgX19pbml0IGhpZF9kdW1teV9pbml0KHZvaWQpCiAjaWZkZWYgQ09ORklH X0hJRF9NT05URVJFWV9NT0RVTEUKIAlISURfQ09NUEFUX0NBTExfRFJJVkVSKG1vbnRlcmV5KTsK ICNlbmRpZgorI2lmZGVmIENPTkZJR19ISURfR1JFRU5BU0lBX01PRFVMRQorCUhJRF9DT01QQVRf Q0FMTF9EUklWRVIoZ3JlZW5hc2lhKTsKKyNlbmRpZgogI2lmZGVmIENPTkZJR19ISURfUEFOVEhF UkxPUkRfTU9EVUxFCiAJSElEX0NPTVBBVF9DQUxMX0RSSVZFUihwYW50aGVybG9yZCk7CiAjZW5k aWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1nYS5jIGIvZHJpdmVycy9oaWQvaGlkLWdh LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwZjNmNQotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1nYS5jCkBAIC0wLDAgKzEsMjIzIEBACisvKgorICog IEZvcmNlIGZlZWRiYWNrIHN1cHBvcnQgZm9yIEdyZWVuQXNpYSAoUHJvZHVjdCBJRCAweDEyKSBi YXNlZCBkZXZpY2VzCisgKgorICogIFRoZSBkZXZpY2VzIGFyZSBkaXN0cmlidXRlZCB1bmRlciB2 YXJpb3VzIG5hbWVzIGFuZCB0aGUgc2FtZSBVU0IgZGV2aWNlIElECisgKiAgY2FuIGJlIHVzZWQg aW4gbWFueSBnYW1lIGNvbnRyb2xsZXJzLgorICoKKyAqCisgKiAgMGU4ZjowMDEyICJHcmVlbkFz aWEgSW5jLiAgICBVU0IgSm95c3RpY2sgICAgICIKKyAqICAgLSB0ZXN0ZWQgd2l0aCBNQU5UQSBX YXJpb3IgTU04MTYgYW5kIFNwZWVkTGluayBTdHJpa2UyIFNMLTY2MzUuCisgKgorICogIENvcHly aWdodCAoYykgMjAwOCBMdWthc3ogTHVib2phbnNraSA8bHVrYXN6QGx1Ym9qYW5za2kuaW5mbz4K KyAqLworCisvKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkg VGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyAqLwor CisKKyNkZWZpbmUgREVCVUcKKworI2RlZmluZSBkZWJ1Zyhmb3JtYXQsIGFyZy4uLikgcHJfZGVi dWcoImhpZC1nYTogIiBmb3JtYXQgIlxuIiAsICMjIGFyZykKKworI2luY2x1ZGUgPGxpbnV4L2lu cHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiLmg+CisjaW5jbHVkZSA8bGludXgvaGlkLmg+CisK KyNpbmNsdWRlICJoaWQtaWRzLmgiCisKKyNpZmRlZiBDT05GSUdfR1JFRU5BU0lBX0ZGCisjaW5j bHVkZSAidXNiaGlkL3VzYmhpZC5oIgorCisKK3N0YXRpYyBjb25zdCBzaWduZWQgc2hvcnQgZmZf cnVtYmxlW10gPSB7CisJRkZfUlVNQkxFLAorCS0xCit9OworCisKK3N0cnVjdCBnYWZmX2Rldmlj ZSB7CisJc3RydWN0IGhpZF9yZXBvcnQgKnJlcG9ydDsKK307CisKK3N0YXRpYyBpbnQgaGlkX2dh ZmZfcGxheShzdHJ1Y3QgaW5wdXRfZGV2ICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgc3RydWN0IGZm X2VmZmVjdCAqZWZmZWN0KQoreworCXN0cnVjdCBoaWRfZGV2aWNlICpoaWQgPSBpbnB1dF9nZXRf ZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBnYWZmX2RldmljZSAqZ2FmZiA9IGRhdGE7CisJaW50IGxl ZnQsIHJpZ2h0OworCisJbGVmdCA9IGVmZmVjdC0+dS5ydW1ibGUuc3Ryb25nX21hZ25pdHVkZTsK KwlyaWdodCA9IGVmZmVjdC0+dS5ydW1ibGUud2Vha19tYWduaXR1ZGU7CisKKwlkZWJ1ZygiY2Fs bGVkIHdpdGggMHglMDR4IDB4JTA0eCIsIGxlZnQsIHJpZ2h0KTsKKworCWxlZnQgPSBsZWZ0ICog MHhmZSAvIDB4ZmZmZjsKKwlyaWdodCA9IHJpZ2h0ICogMHhmZSAvIDB4ZmZmZjsKKworCWdhZmYt PnJlcG9ydC0+ZmllbGRbMF0tPnZhbHVlWzBdID0gMHg1MTsKKwlnYWZmLT5yZXBvcnQtPmZpZWxk WzBdLT52YWx1ZVsxXSA9IDB4MDsKKwlnYWZmLT5yZXBvcnQtPmZpZWxkWzBdLT52YWx1ZVsyXSA9 IHJpZ2h0OworCWdhZmYtPnJlcG9ydC0+ZmllbGRbMF0tPnZhbHVlWzNdID0gMDsKKwlnYWZmLT5y ZXBvcnQtPmZpZWxkWzBdLT52YWx1ZVs0XSA9IGxlZnQ7CisJZ2FmZi0+cmVwb3J0LT5maWVsZFsw XS0+dmFsdWVbNV0gPSAwOworCWRlYnVnKCJydW5uaW5nIHdpdGggMHglMDJ4IDB4JTAyeCIsIGxl ZnQsIHJpZ2h0KTsKKwl1c2JoaWRfc3VibWl0X3JlcG9ydChoaWQsIGdhZmYtPnJlcG9ydCwgVVNC X0RJUl9PVVQpOworCisJZ2FmZi0+cmVwb3J0LT5maWVsZFswXS0+dmFsdWVbMF0gPSAweGZhOwor CWdhZmYtPnJlcG9ydC0+ZmllbGRbMF0tPnZhbHVlWzFdID0gMHhmZTsKKwlnYWZmLT5yZXBvcnQt PmZpZWxkWzBdLT52YWx1ZVsyXSA9IDB4MDsKKwlnYWZmLT5yZXBvcnQtPmZpZWxkWzBdLT52YWx1 ZVs0XSA9IDB4MDsKKworCXVzYmhpZF9zdWJtaXRfcmVwb3J0KGhpZCwgZ2FmZi0+cmVwb3J0LCBV U0JfRElSX09VVCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBnYWZmX2luaXQoc3Ry dWN0IGhpZF9kZXZpY2UgKmhpZCkKK3sKKwlzdHJ1Y3QgZ2FmZl9kZXZpY2UgKmdhZmY7CisJc3Ry dWN0IGhpZF9yZXBvcnQgKnJlcG9ydDsKKwlzdHJ1Y3QgaGlkX2lucHV0ICpoaWRpbnB1dDsKKwlz dHJ1Y3QgbGlzdF9oZWFkICpyZXBvcnRfbGlzdCA9CisJCQkmaGlkLT5yZXBvcnRfZW51bVtISURf T1VUUFVUX1JFUE9SVF0ucmVwb3J0X2xpc3Q7CisJc3RydWN0IGxpc3RfaGVhZCAqcmVwb3J0X3B0 ciA9IHJlcG9ydF9saXN0OworCXN0cnVjdCBpbnB1dF9kZXYgKmRldjsKKwlpbnQgZXJyb3I7CisK KwlpZiAobGlzdF9lbXB0eShyZXBvcnRfbGlzdCkpIHsKKwkJZGV2X2VycigmaGlkLT5kZXYsICJu byBvdXRwdXQgcmVwb3J0cyBmb3VuZFxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWxp c3RfZm9yX2VhY2hfZW50cnkoaGlkaW5wdXQsICZoaWQtPmlucHV0cywgbGlzdCkgeworCisJCXJl cG9ydF9wdHIgPSByZXBvcnRfcHRyLT5uZXh0OworCisJCWlmIChyZXBvcnRfcHRyID09IHJlcG9y dF9saXN0KSB7CisJCQlkZXZfZXJyKCZoaWQtPmRldiwgInJlcXVpcmVkIG91dHB1dCByZXBvcnQg aXMgIgorCQkJCQkibWlzc2luZ1xuIik7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCisJCXJl cG9ydCA9IGxpc3RfZW50cnkocmVwb3J0X3B0ciwgc3RydWN0IGhpZF9yZXBvcnQsIGxpc3QpOwor CQlpZiAocmVwb3J0LT5tYXhmaWVsZCA8IDEpIHsKKwkJCWRldl9lcnIoJmhpZC0+ZGV2LCAibm8g ZmllbGRzIGluIHRoZSByZXBvcnRcbiIpOworCQkJcmV0dXJuIC1FTk9ERVY7CisJCX0KKworCQlp ZiAocmVwb3J0LT5maWVsZFswXS0+cmVwb3J0X2NvdW50IDwgNCkgeworCQkJZGV2X2VycigmaGlk LT5kZXYsICJub3QgZW5vdWdoIHZhbHVlcyBpbiB0aGUgZmllbGRcbiIpOworCQkJcmV0dXJuIC1F Tk9ERVY7CisJCX0KKworCQlnYWZmID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGdhZmZfZGV2aWNl KSwgR0ZQX0tFUk5FTCk7CisJCWlmICghZ2FmZikKKwkJCXJldHVybiAtRU5PTUVNOworCisJCWRl diA9IGhpZGlucHV0LT5pbnB1dDsKKworCQlzZXRfYml0KEZGX1JVTUJMRSwgZGV2LT5mZmJpdCk7 CisKKwkJZXJyb3IgPSBpbnB1dF9mZl9jcmVhdGVfbWVtbGVzcyhkZXYsIGdhZmYsIGhpZF9nYWZm X3BsYXkpOworCQlpZiAoZXJyb3IpIHsKKwkJCWtmcmVlKGdhZmYpOworCQkJcmV0dXJuIGVycm9y OworCQl9CisKKwkJZ2FmZi0+cmVwb3J0ID0gcmVwb3J0OworCQlnYWZmLT5yZXBvcnQtPmZpZWxk WzBdLT52YWx1ZVswXSA9IDB4NTE7CisJCWdhZmYtPnJlcG9ydC0+ZmllbGRbMF0tPnZhbHVlWzFd ID0gMHgwMDsKKwkJZ2FmZi0+cmVwb3J0LT5maWVsZFswXS0+dmFsdWVbMl0gPSAweDAwOworCQln YWZmLT5yZXBvcnQtPmZpZWxkWzBdLT52YWx1ZVszXSA9IDB4MDA7CisJCXVzYmhpZF9zdWJtaXRf cmVwb3J0KGhpZCwgZ2FmZi0+cmVwb3J0LCBVU0JfRElSX09VVCk7CisKKwkJZ2FmZi0+cmVwb3J0 LT5maWVsZFswXS0+dmFsdWVbMF0gPSAweGZhOworCQlnYWZmLT5yZXBvcnQtPmZpZWxkWzBdLT52 YWx1ZVsxXSA9IDB4ZmU7CisKKwkJdXNiaGlkX3N1Ym1pdF9yZXBvcnQoaGlkLCBnYWZmLT5yZXBv cnQsIFVTQl9ESVJfT1VUKTsKKwl9CisKKworCWRldl9pbmZvKCZoaWQtPmRldiwgImhpZC1nYTog Rm9yY2UgRmVlZGJhY2sgZm9yIEdyZWVuQXNpYSAweDEyIgorCSAgICAgICAiIGRldmljZXMgYnkg THVrYXN6IEx1Ym9qYW5za2kgPGx1a2FzekBsdWJvamFuc2tpLmluZm8+XG4iKTsKKworCXJldHVy biAwOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgaW50IGdhZmZfaW5pdChzdHJ1Y3QgaGlkX2Rl dmljZSAqaGlkKQoreworCWRldl9pbmZvKCZoaWQtPmRldiwgImhpZC1nYTogR3JlZW5Bc2lhIDB4 MTIgIgorCQkiIGRldmljZXMgYnkgTHVrYXN6IEx1Ym9qYW5za2kgPGx1a2FzekBsdWJvamFuc2tp LmluZm8+XG4iKTsKKworCXJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgZ2FfcHJv YmUoc3RydWN0IGhpZF9kZXZpY2UgKmhkZXYsIGNvbnN0IHN0cnVjdCBoaWRfZGV2aWNlX2lkICpp ZCkKK3sKKwlpbnQgcmV0OworCisJZGVidWcoIkdyZWVuYXNpYSBISUQgaGFyZHdhcmUgcHJvYmUu Li4iKTsKKworCWlmIChpZC0+ZHJpdmVyX2RhdGEpCisJCWhkZXYtPnF1aXJrcyB8PSBISURfUVVJ UktfTVVMVElfSU5QVVQ7CisKKwlyZXQgPSBoaWRfcGFyc2UoaGRldik7CisJaWYgKHJldCkgewor CQlkZXZfZXJyKCZoZGV2LT5kZXYsICJwYXJzZSBmYWlsZWRcbiIpOworCQlnb3RvIGVycjsKKwl9 CisKKwlyZXQgPSBoaWRfaHdfc3RhcnQoaGRldiwgSElEX0NPTk5FQ1RfREVGQVVMVCAmIH5ISURf Q09OTkVDVF9GRik7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZoZGV2LT5kZXYsICJodyBzdGFy dCBmYWlsZWRcbiIpOworCQlnb3RvIGVycjsKKwl9CisKKwlnYWZmX2luaXQoaGRldik7CisKKwly ZXR1cm4gMDsKK2VycjoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGhp ZF9kZXZpY2VfaWQgZ2FfZGV2aWNlc1tdID0geworCXsgSElEX1VTQl9ERVZJQ0UoVVNCX1ZFTkRP Ul9JRF9HUkVFTkFTSUEsIDB4MDAxMiksICB9LCAvKiBHcmVlbkFzaWEgSW5jLiBVU0IgSm95c3Rp Y2sgKi8KKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKGhpZCwgZ2FfZGV2aWNlcyk7CisK K3N0YXRpYyBzdHJ1Y3QgaGlkX2RyaXZlciBnYV9kcml2ZXIgPSB7CisJLm5hbWUgPSAiZ3JlZW5h c2lhIiwKKwkuaWRfdGFibGUgPSBnYV9kZXZpY2VzLAorCS5wcm9iZSA9IGdhX3Byb2JlLAorfTsK Kworc3RhdGljIGludCBnYV9pbml0KHZvaWQpCit7CisJcmV0dXJuIGhpZF9yZWdpc3Rlcl9kcml2 ZXIoJmdhX2RyaXZlcik7Cit9CisKK3N0YXRpYyB2b2lkIGdhX2V4aXQodm9pZCkKK3sKKwloaWRf dW5yZWdpc3Rlcl9kcml2ZXIoJmdhX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KGdhX2luaXQp OworbW9kdWxlX2V4aXQoZ2FfZXhpdCk7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKK0hJRF9D T01QQVRfTE9BRF9EUklWRVIoZ3JlZW5hc2lhKTsK ------=_Part_31256_26838029.1228424145923--