From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932532AbWG0HJF (ORCPT ); Thu, 27 Jul 2006 03:09:05 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932533AbWG0HJF (ORCPT ); Thu, 27 Jul 2006 03:09:05 -0400 Received: from out5.smtp.messagingengine.com ([66.111.4.29]:29660 "EHLO out5.smtp.messagingengine.com") by vger.kernel.org with ESMTP id S932532AbWG0HJC (ORCPT ); Thu, 27 Jul 2006 03:09:02 -0400 Message-Id: <1153984144.20238.266980968@webmail.messagingengine.com> X-Sasl-Enc: u/BP/SmfqHCF/T0lOr3MgUUppbl++X34Kln9LjA7Wa5A 1153984144 From: "Komal Shah" To: akpm@osdl.org, juha.yrjola@solidboot.com, tony@atomide.com, ext-timo.teras@nokia.com Cc: r-woodruff2@ti.com, linux-input@atrey.karlin.mff.cuni.cz, linux-kernel@vger.kernel.org, dbrownell@users.sourceforge.net, kjh@hilman.org Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_1153984144202380"; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Subject: [PATCH 1/2] OMAP: Add keypad driver #3 Date: Thu, 27 Jul 2006 00:09:04 -0700 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --_----------=_1153984144202380 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Date: Thu, 27 Jul 2006 07:09:04 UT Andrew/Tony/Richard/Dmitry, This is a revised patch as per the review comments from the Dmitry on thread: http://lkml.org/lkml/2006/7/26/136 Please review it and give me the Ack if looks ok. ---Komal Shah http://komalshah.blogspot.com --=20 http://www.fastmail.fm - And now for something completely different=85 --_----------=_1153984144202380 Content-Disposition: attachment; filename="0001-OMAP-Add-keypad-driver.patch" Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="0001-OMAP-Add-keypad-driver.patch" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Date: Thu, 27 Jul 2006 07:09:04 UT RnJvbSBub2JvZHkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtv bWFsIFNoYWggPGtvbWFsX3NoYWg4MDIwMDNAeWFob28uY29tPgpEYXRlOiBU aHUsIDI3IEp1bCAyMDA2IDE4OjAzOjIzICswNTMwClN1YmplY3Q6IFtQQVRD SCAxLzJdIE9NQVA6IEFkZCBrZXlwYWQgZHJpdmVyCgpUaGlzIHBhdGNoIGFk ZHMgc3VwcG9ydCBmb3Iga2V5cGFkIGRyaXZlciBydW5uaW5nIG9uIGRpZmZl cmVudApUSSBPTUFQKGh0dHA6Ly93d3cudGkuY29tL29tYXApIHByb2Nlc3Nv ciBiYXNlZCBib2FyZHMgbGlrZQpPU0ssIEgyLCBIMywgSDQsIFBlcnN1YXMg YW5kIE5va2lhIDc3MC4KClNpZ25lZC1vZmYtYnk6IEtvbWFsIFNoYWggPGtv bWFsX3NoYWg4MDIwMDNAeWFob28uY29tPgoKLS0tCgogZHJpdmVycy9pbnB1 dC9rZXlib2FyZC9LY29uZmlnICAgICAgIHwgICAgOSArCiBkcml2ZXJzL2lu cHV0L2tleWJvYXJkL01ha2VmaWxlICAgICAgfCAgICAxIAogZHJpdmVycy9p bnB1dC9rZXlib2FyZC9vbWFwLWtleXBhZC5jIHwgIDQ5MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2FzbS1hcm0vYXJj aC1vbWFwL2tleXBhZC5oICAgfCAgICAxIAogNCBmaWxlcyBjaGFuZ2VkLCA1 MDIgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2lucHV0L2tleWJvYXJkL29tYXAta2V5cGFkLmMK CjU3YWFkYWQyYTI0ODJmOTcxMzc0NTYzNzc4ZDAwZDA3MWU5YTA5NjMKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvS2NvbmZpZyBiL2Ry aXZlcnMvaW5wdXQva2V5Ym9hcmQvS2NvbmZpZwppbmRleCBhOWRkYTU2Li44 M2VhYzNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL0tj b25maWcKKysrIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9LY29uZmlnCkBA IC0xODMsNCArMTgzLDEzIEBAIGNvbmZpZyBLRVlCT0FSRF9ISUwKIAkgIFRo aXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgSElMLWtleWJvYXJk cyBhdHRhY2hlZAogCSAgdG8geW91ciBtYWNoaW5lLCBzbyBub3JtYWxseSB5 b3Ugc2hvdWxkIHNheSBZIGhlcmUuCiAKK2NvbmZpZyBLRVlCT0FSRF9PTUFQ CisJdHJpc3RhdGUgIlRJIE9NQVAga2V5cGFkIHN1cHBvcnQiCisJZGVwZW5k cyBvbiAoQVJDSF9PTUFQMSB8fCBBUkNIX09NQVAyKQorCWhlbHAKKwkgIFNh eSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBPTUFQIGtleXBhZC4K KworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hv b3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgb21h cC1rZXlwYWQuCisKIGVuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0 L2tleWJvYXJkL01ha2VmaWxlIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9N YWtlZmlsZQppbmRleCAyNzA4MTY3Li5iMjY1MzkxIDEwMDY0NAotLS0gYS9k cml2ZXJzL2lucHV0L2tleWJvYXJkL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv aW5wdXQva2V5Ym9hcmQvTWFrZWZpbGUKQEAgLTE1LDQgKzE1LDUgQEAgb2Jq LSQoQ09ORklHX0tFWUJPQVJEX0NPUkdJKQkJKz0gY29yZ2lrYgogb2JqLSQo Q09ORklHX0tFWUJPQVJEX1NQSVRaKQkJKz0gc3BpdHprYmQubwogb2JqLSQo Q09ORklHX0tFWUJPQVJEX0hJTCkJCSs9IGhpbF9rYmQubwogb2JqLSQoQ09O RklHX0tFWUJPQVJEX0hJTF9PTEQpCQkrPSBoaWxrYmQubworb2JqLSQoQ09O RklHX0tFWUJPQVJEX09NQVApICAgICAgICAgICAgICs9IG9tYXAta2V5cGFk Lm8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFw LWtleXBhZC5jIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFwLWtleXBh ZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmODgw YzYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJk L29tYXAta2V5cGFkLmMKQEAgLTAsMCArMSw0OTEgQEAKKy8qCisgKiBsaW51 eC9kcml2ZXJzL2lucHV0L2tleWJvYXJkL29tYXAta2V5cGFkLmMKKyAqCisg KiBPTUFQIEtleXBhZCBEcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIw MDMgTm9raWEgQ29ycG9yYXRpb24KKyAqIFdyaXR0ZW4gYnkgVGltbyBUZXLk cyA8ZXh0LXRpbW8udGVyYXNAbm9raWEuY29tPgorICoKKyAqIEFkZGVkIHN1 cHBvcnQgZm9yIEgyICYgSDMgS2V5cGFkCisgKiBDb3B5cmlnaHQgKEMpIDIw MDQgVGV4YXMgSW5zdHJ1bWVudHMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNp bmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CisjaW5jbHVkZSA8 bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxs aW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2lycXMuaD4KKyNp bmNsdWRlIDxhc20vYXJjaC9ncGlvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gv aGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9rZXlwYWQuaD4KKyNp bmNsdWRlIDxhc20vYXJjaC9tZW5lbGF1cy5oPgorI2luY2x1ZGUgPGFzbS9p by5oPgorI2luY2x1ZGUgPGFzbS9lcnJuby5oPgorI2luY2x1ZGUgPGFzbS9t YWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbXV4Lmg+CisKKyNk ZWZpbmUgTkVXX0JPQVJEX0xFQVJOSU5HX01PREUKKworc3RhdGljIHZvaWQg b21hcF9rcF90YXNrbGV0KHVuc2lnbmVkIGxvbmcpOworc3RhdGljIHZvaWQg b21hcF9rcF90aW1lcih1bnNpZ25lZCBsb25nKTsKKworc3RhdGljIHVuc2ln bmVkIGNoYXIga2V5cGFkX3N0YXRlWzhdOworc3RhdGljIERFRklORV9NVVRF WChrcF9lbmFibGVfbXV0ZXgpOworc3RhdGljIGludCBrcF9lbmFibGUgPSAx Oworc3RhdGljIGludCBrcF9jdXJfZ3JvdXAgPSAtMTsKKworc3RydWN0IG9t YXBfa3AgeworCXN0cnVjdCBpbnB1dF9kZXYgKmlucHV0OworCXN0cnVjdCB0 aW1lcl9saXN0IHRpbWVyOworCWludCBpcnE7CisJdW5zaWduZWQgaW50IHJv d3M7CisJdW5zaWduZWQgaW50IGNvbHM7Cit9OworCitERUNMQVJFX1RBU0tM RVRfRElTQUJMRUQoa3BfdGFza2xldCwgb21hcF9rcF90YXNrbGV0LCAwKTsK Kworc3RhdGljIGludCAqa2V5bWFwOworc3RhdGljIHVuc2lnbmVkIGludCAq cm93X2dwaW9zOworc3RhdGljIHVuc2lnbmVkIGludCAqY29sX2dwaW9zOwor CisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDIKK3N0YXRpYyB2b2lkIHNldF9j b2xfZ3Bpb192YWwoc3RydWN0IG9tYXBfa3AgKm9tYXBfa3AsIHU4IHZhbHVl KQoreworCWludCBjb2w7CisJZm9yIChjb2wgPSAwOyBjb2wgPCBvbWFwX2tw LT5jb2xzOyBjb2wrKykgeworCQlpZiAodmFsdWUgJiAoMSA8PCBjb2wpKQor CQkJb21hcF9zZXRfZ3Bpb19kYXRhb3V0KGNvbF9ncGlvc1tjb2xdLCAxKTsK KwkJZWxzZQorCQkJb21hcF9zZXRfZ3Bpb19kYXRhb3V0KGNvbF9ncGlvc1tj b2xdLCAwKTsKKwl9Cit9CisKK3N0YXRpYyB1OCBnZXRfcm93X2dwaW9fdmFs KHN0cnVjdCBvbWFwX2twICpvbWFwX2twKQoreworCWludCByb3c7CisJdTgg dmFsdWUgPSAwOworCisJZm9yIChyb3cgPSAwOyByb3cgPCBvbWFwX2twLT5y b3dzOyByb3crKykgeworCQlpZiAob21hcF9nZXRfZ3Bpb19kYXRhaW4ocm93 X2dwaW9zW3Jvd10pKQorCQkJdmFsdWUgfD0gKDEgPDwgcm93KTsKKwl9CisJ cmV0dXJuIHZhbHVlOworfQorI2Vsc2UKKyNkZWZpbmUJCXNldF9jb2xfZ3Bp b192YWwoeCwgeSkJZG8ge30gd2hpbGUgKDApCisjZGVmaW5lCQlnZXRfcm93 X2dwaW9fdmFsKHgpCTAKKyNlbmRpZgorCitzdGF0aWMgaXJxcmV0dXJuX3Qg b21hcF9rcF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLAorCQkJ CSAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IG9tYXBf a3AgKm9tYXBfa3AgPSBkZXZfaWQ7CisKKwkvKiBkaXNhYmxlIGtleWJvYXJk IGludGVycnVwdCBhbmQgc2NoZWR1bGUgZm9yIGhhbmRsaW5nICovCisJaWYg KGNwdV9pc19vbWFwMjR4eCgpKSB7CisJCWludCBpOworCQlmb3IgKGkgPSAw OyBpIDwgb21hcF9rcC0+cm93czsgaSsrKQorCQkJZGlzYWJsZV9pcnEoT01B UF9HUElPX0lSUShyb3dfZ3Bpb3NbaV0pKTsKKwl9IGVsc2UKKwkJLyogZGlz YWJsZSBrZXlib2FyZCBpbnRlcnJ1cHQgYW5kIHNjaGVkdWxlIGZvciBoYW5k bGluZyAqLworCQlvbWFwX3dyaXRldygxLCBPTUFQX01QVUlPX0JBU0UgKyBP TUFQX01QVUlPX0tCRF9NQVNLSVQpOworCisJdGFza2xldF9zY2hlZHVsZSgm a3BfdGFza2xldCk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0 YXRpYyB2b2lkIG9tYXBfa3BfdGltZXIodW5zaWduZWQgbG9uZyBkYXRhKQor eworCXRhc2tsZXRfc2NoZWR1bGUoJmtwX3Rhc2tsZXQpOworfQorCitzdGF0 aWMgdm9pZCBvbWFwX2twX3NjYW5fa2V5cGFkKHN0cnVjdCBvbWFwX2twICpv bWFwX2twLCB1bnNpZ25lZCBjaGFyICpzdGF0ZSkKK3sKKwlpbnQgY29sID0g MDsKKworCS8qIHJlYWQgdGhlIGtleXBhZCBzdGF0dXMgKi8KKwlpZiAoY3B1 X2lzX29tYXAyNHh4KCkpIHsKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IGkg PCBvbWFwX2twLT5yb3dzOyBpKyspCisJCQlkaXNhYmxlX2lycShPTUFQX0dQ SU9fSVJRKHJvd19ncGlvc1tpXSkpOworCX0gZWxzZQorCQkvKiBkaXNhYmxl IGtleWJvYXJkIGludGVycnVwdCBhbmQgc2NoZWR1bGUgZm9yIGhhbmRsaW5n ICovCisJCW9tYXBfd3JpdGV3KDEsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBf TVBVSU9fS0JEX01BU0tJVCk7CisKKwlpZiAoIWNwdV9pc19vbWFwMjR4eCgp KSB7CisJCS8qIHJlYWQgdGhlIGtleXBhZCBzdGF0dXMgKi8KKwkJb21hcF93 cml0ZXcoMHhmZiwgT01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19LQkMp OworCQlmb3IgKGNvbCA9IDA7IGNvbCA8IG9tYXBfa3AtPmNvbHM7IGNvbCsr KSB7CisJCQlvbWFwX3dyaXRldyh+KDEgPDwgY29sKSAmIDB4ZmYsCisJCQkJ ICAgIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JDKTsKKworCQkJ aWYgKG1hY2hpbmVfaXNfb21hcF9vc2soKSB8fCBtYWNoaW5lX2lzX29tYXBf aDIoKQorCQkJICAgCSB8fCBtYWNoaW5lX2lzX29tYXBfaDMoKSkKKwkJCQl1 ZGVsYXkoOSk7CisJCQllbHNlCisJCQkJdWRlbGF5KDQpOworCQkJc3RhdGVb Y29sXSA9IH5vbWFwX3JlYWR3KE9NQVBfTVBVSU9fQkFTRSArCisJCQkJCQkg T01BUF9NUFVJT19LQlJfTEFUQ0gpICYgMHhmZjsKKwkJfQorCQlvbWFwX3dy aXRldygweDAwLCBPTUFQX01QVUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCQyk7 CisJCXVkZWxheSgyKTsKKwl9IGVsc2UgeworCQkvKiByZWFkIHRoZSBrZXlw YWQgc3RhdHVzICovCisJCWZvciAoY29sID0gMDsgY29sIDwgb21hcF9rcC0+ Y29sczsgY29sKyspIHsKKwkJCXNldF9jb2xfZ3Bpb192YWwob21hcF9rcCwg figxIDw8IGNvbCkpOworCQkJc3RhdGVbY29sXSA9IH4oZ2V0X3Jvd19ncGlv X3ZhbChvbWFwX2twKSkgJiAweDNmOworCQl9CisJCXNldF9jb2xfZ3Bpb192 YWwob21hcF9rcCwgMCk7CisJfQorfQorCitzdGF0aWMgaW5saW5lIGludCBv bWFwX2twX2ZpbmRfa2V5KGludCBjb2wsIGludCByb3cpCit7CisJaW50IGks IGtleTsKKworCWtleSA9IEtFWShjb2wsIHJvdywgMCk7CisJZm9yIChpID0g MDsga2V5bWFwW2ldICE9IDA7IGkrKykKKwkJaWYgKChrZXltYXBbaV0gJiAw eGZmMDAwMDAwKSA9PSBrZXkpCisJCQlyZXR1cm4ga2V5bWFwW2ldICYgMHgw MGZmZmZmZjsKKwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkIG9tYXBf a3BfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IG9t YXBfa3AgKm9tYXBfa3BfZGF0YSA9IChzdHJ1Y3Qgb21hcF9rcCAqKSBkYXRh OworCXVuc2lnbmVkIGNoYXIgbmV3X3N0YXRlWzhdLCBjaGFuZ2VkLCBrZXlf ZG93biA9IDA7CisJaW50IGNvbCwgcm93OworCWludCBzcHVyaW91cyA9IDA7 CisKKwkvKiBjaGVjayBmb3IgYW55IGNoYW5nZXMgKi8KKwlvbWFwX2twX3Nj YW5fa2V5cGFkKG9tYXBfa3BfZGF0YSwgbmV3X3N0YXRlKTsKKworCS8qIGNo ZWNrIGZvciBjaGFuZ2VzIGFuZCBwcmludCB0aG9zZSAqLworCWZvciAoY29s ID0gMDsgY29sIDwgb21hcF9rcF9kYXRhLT5jb2xzOyBjb2wrKykgeworCQlj aGFuZ2VkID0gbmV3X3N0YXRlW2NvbF0gXiBrZXlwYWRfc3RhdGVbY29sXTsK KwkJa2V5X2Rvd24gfD0gbmV3X3N0YXRlW2NvbF07CisJCWlmIChjaGFuZ2Vk ID09IDApCisJCQljb250aW51ZTsKKworCQlmb3IgKHJvdyA9IDA7IHJvdyA8 IG9tYXBfa3BfZGF0YS0+cm93czsgcm93KyspIHsKKwkJCWludCBrZXk7CisJ CQlpZiAoIShjaGFuZ2VkICYgKDEgPDwgcm93KSkpCisJCQkJY29udGludWU7 CisjaWZkZWYgTkVXX0JPQVJEX0xFQVJOSU5HX01PREUKKwkJCXByaW50ayhL RVJOX0lORk8gIm9tYXAta2V5cGFkOiBrZXkgJWQtJWQgJXNcbiIsIGNvbCwK KwkJCSAgICAgICByb3csIChuZXdfc3RhdGVbY29sXSAmICgxIDw8IHJvdykp ID8KKwkJCSAgICAgICAicHJlc3NlZCIgOiAicmVsZWFzZWQiKTsKKyNlbHNl CisJCQlrZXkgPSBvbWFwX2twX2ZpbmRfa2V5KGNvbCwgcm93KTsKKwkJCWlm IChrZXkgPCAwKSB7CisJCQkJcHJpbnRrKEtFUk5fV0FSTklORworCQkJCSAg ICAgICJvbWFwLWtleXBhZDogU3B1cmlvdXMga2V5IGV2ZW50ICVkLSVkXG4i LAorCQkJCSAgICAgICBjb2wsIHJvdyk7CisJCQkJLyogV2Ugc2NhbiBhZ2Fp biBhZnRlciBhIGNvdXBsZSBvZiBzZWNvbmRzICovCisJCQkJc3B1cmlvdXMg PSAxOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlpZiAoIShrcF9jdXJf Z3JvdXAgPT0gKGtleSAmIEdST1VQX01BU0spIHx8CisJCQkgICAgICBrcF9j dXJfZ3JvdXAgPT0gLTEpKQorCQkJCWNvbnRpbnVlOworCisJCQlrcF9jdXJf Z3JvdXAgPSBrZXkgJiBHUk9VUF9NQVNLOworCQkJaW5wdXRfcmVwb3J0X2tl eShvbWFwX2twX2RhdGEtPmlucHV0LCBrZXkgJiB+R1JPVVBfTUFTSywKKwkJ CQkJIG5ld19zdGF0ZVtjb2xdICYgKDEgPDwgcm93KSk7CisjZW5kaWYKKwkJ fQorCX0KKwltZW1jcHkoa2V5cGFkX3N0YXRlLCBuZXdfc3RhdGUsIHNpemVv ZihrZXlwYWRfc3RhdGUpKTsKKworCWlmIChrZXlfZG93bikgeworICAgICAg ICAgICAgICAgIGludCBkZWxheSA9IEhaIC8gMjA7CisJCS8qIHNvbWUga2V5 IGlzIHByZXNzZWQgLSBrZWVwIGlycSBkaXNhYmxlZCBhbmQgdXNlIHRpbWVy CisJCSAqIHRvIHBvbGwgdGhlIGtleXBhZCAqLworCQlpZiAoc3B1cmlvdXMp CisJCQlkZWxheSA9IDIgKiBIWjsKKwkJbW9kX3RpbWVyKCZvbWFwX2twX2Rh dGEtPnRpbWVyLCBqaWZmaWVzICsgZGVsYXkpOworCX0gZWxzZSB7CisJCS8q IGVuYWJsZSBpbnRlcnJ1cHRzICovCisJCWlmIChjcHVfaXNfb21hcDI0eHgo KSkgeworCQkJaW50IGk7CisJCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcF9k YXRhLT5yb3dzOyBpKyspCisJCQkJZW5hYmxlX2lycShPTUFQX0dQSU9fSVJR KHJvd19ncGlvc1tpXSkpOworCQl9IGVsc2UgeworCQkJb21hcF93cml0ZXco MCwgT01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsK KwkJCWtwX2N1cl9ncm91cCA9IC0xOworCQl9CisgCX0KK30KKworc3RhdGlj IHNzaXplX3Qgb21hcF9rcF9lbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpk ZXYsCisJCQkJICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNo YXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIldVxuIiwga3Bf ZW5hYmxlKTsKK30KKworc3RhdGljIHNzaXplX3Qgb21hcF9rcF9lbmFibGVf c3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwKKwkJCQkgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qg Y291bnQpCit7CisJaW50IHN0YXRlOworCisJaWYgKHNzY2FuZihidWYsICIl dSIsICZzdGF0ZSkgIT0gMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAo KHN0YXRlICE9IDEpICYmIChzdGF0ZSAhPSAwKSkKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwltdXRleF9sb2NrKCZrcF9lbmFibGVfbXV0ZXgpOworCWlmIChz dGF0ZSAhPSBrcF9lbmFibGUpIHsKKwkJaWYgKHN0YXRlKQorCQkJZW5hYmxl X2lycShJTlRfS0VZQk9BUkQpOworCQllbHNlCisJCQlkaXNhYmxlX2lycShJ TlRfS0VZQk9BUkQpOworCQlrcF9lbmFibGUgPSBzdGF0ZTsKKwl9CisJbXV0 ZXhfdW5sb2NrKCZrcF9lbmFibGVfbXV0ZXgpOworCisJcmV0dXJuIHN0cm5s ZW4oYnVmLCBjb3VudCk7Cit9CisKK3N0YXRpYyBERVZJQ0VfQVRUUihlbmFi bGUsIFNfSVJVR08gfCBTX0lXVVNSLCBvbWFwX2twX2VuYWJsZV9zaG93LCBv bWFwX2twX2VuYWJsZV9zdG9yZSk7CisKKyNpZmRlZiBDT05GSUdfUE0KK3N0 YXRpYyBpbnQgb21hcF9rcF9zdXNwZW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQoreworCS8qIE5vdGhpbmcg eWV0ICovCisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvbWFwX2tw X3Jlc3VtZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpCit7CisJLyog Tm90aGluZyB5ZXQgKi8KKworCXJldHVybiAwOworfQorI2Vsc2UKKyNkZWZp bmUgb21hcF9rcF9zdXNwZW5kCU5VTEwKKyNkZWZpbmUgb21hcF9rcF9yZXN1 bWUJTlVMTAorI2VuZGlmCisKK3N0YXRpYyBpbnQgX19pbml0IG9tYXBfa3Bf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1 Y3Qgb21hcF9rcCAqb21hcF9rcDsKKwlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1 dF9kZXY7CisJc3RydWN0IG9tYXBfa3BfcGxhdGZvcm1fZGF0YSAqcGRhdGEg PSAgcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7CisJaW50IGksIGNvbF9pZHgs IHJvd19pZHgsIGlycV9pZHgsIHJldDsKKworCWlmICghcGRhdGEtPnJvd3Mg fHwgIXBkYXRhLT5jb2xzIHx8ICFwZGF0YS0+a2V5bWFwKSB7CisJCXByaW50 ayhLRVJOX0VSUiAiTm8gcm93cywgY29scyBvciBrZXltYXAgZnJvbSBwZGF0 YVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCW9tYXBfa3AgPSBr emFsbG9jKHNpemVvZihzdHJ1Y3Qgb21hcF9rcCksIEdGUF9LRVJORUwpOwor CWlucHV0X2RldiA9IGlucHV0X2FsbG9jYXRlX2RldmljZSgpOworCWlmICgh b21hcF9rcCB8fCAhaW5wdXRfZGV2KSB7CisJCWtmcmVlKG9tYXBfa3ApOwor CQlpbnB1dF9mcmVlX2RldmljZShpbnB1dF9kZXYpOworCQlyZXR1cm4gLUVO T01FTTsKKwl9CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBvbWFw X2twKTsKKworCW9tYXBfa3AtPmlucHV0ID0gaW5wdXRfZGV2OworCisJLyog RGlzYWJsZSB0aGUgaW50ZXJydXB0IGZvciB0aGUgTVBVSU8ga2V5Ym9hcmQg Ki8KKwlpZiAoIWNwdV9pc19vbWFwMjR4eCgpKQorCQlvbWFwX3dyaXRldygx LCBPTUFQX01QVUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCRF9NQVNLSVQpOwor CisJa2V5bWFwID0gcGRhdGEtPmtleW1hcDsKKworCWlmIChwZGF0YS0+cmVw KQorCQlzZXRfYml0KEVWX1JFUCwgaW5wdXRfZGV2LT5ldmJpdCk7CisKKwlp ZiAocGRhdGEtPnJvd19ncGlvcyAmJiBwZGF0YS0+Y29sX2dwaW9zKSB7CisJ CXJvd19ncGlvcyA9IHBkYXRhLT5yb3dfZ3Bpb3M7CisJCWNvbF9ncGlvcyA9 IHBkYXRhLT5jb2xfZ3Bpb3M7CisJfQorCisJb21hcF9rcC0+cm93cyA9IHBk YXRhLT5yb3dzOworCW9tYXBfa3AtPmNvbHMgPSBwZGF0YS0+Y29sczsKKwor CWlmIChjcHVfaXNfb21hcDI0eHgoKSkgeworCQkvKiBDb2xzOiBvdXRwdXRz ICovCisJCWZvciAoY29sX2lkeCA9IDA7IGNvbF9pZHggPCBvbWFwX2twLT5j b2xzOyBjb2xfaWR4KyspIHsKKwkJCWlmIChvbWFwX3JlcXVlc3RfZ3Bpbyhj b2xfZ3Bpb3NbY29sX2lkeF0pIDwgMCkgeworCQkJCXByaW50ayhLRVJOX0VS UiAiRmFpbGVkIHRvIHJlcXVlc3QiCisJCQkJICAgICAgICJHUElPJWQgZm9y IGtleXBhZFxuIiwKKwkJCQkgICAgICAgY29sX2dwaW9zW2NvbF9pZHhdKTsK KwkJCQlnb3RvIGVycjE7CisJCQl9CisJCQlvbWFwX3NldF9ncGlvX2RpcmVj dGlvbihjb2xfZ3Bpb3NbY29sX2lkeF0sIDApOworCQl9CisJCS8qIFJvd3M6 IGlucHV0cyAqLworCQlmb3IgKHJvd19pZHggPSAwOyByb3dfaWR4IDwgb21h cF9rcC0+cm93czsgcm93X2lkeCsrKSB7CisJCQlpZiAob21hcF9yZXF1ZXN0 X2dwaW8ocm93X2dwaW9zW3Jvd19pZHhdKSA8IDApIHsKKwkJCQlwcmludGso S0VSTl9FUlIgIkZhaWxlZCB0byByZXF1ZXN0IgorCQkJCSAgICAgICAiR1BJ TyVkIGZvciBrZXlwYWRcbiIsCisJCQkJICAgICAgIHJvd19ncGlvc1tyb3df aWR4XSk7CisJCQkJZ290byBlcnIyOworCQkJfQorCQkJb21hcF9zZXRfZ3Bp b19kaXJlY3Rpb24ocm93X2dwaW9zW3Jvd19pZHhdLCAxKTsKKwkJfQorCX0K KworCXNldHVwX3RpbWVyKCZvbWFwX2twLT50aW1lciwgb21hcF9rcF90aW1l ciwgKHVuc2lnbmVkIGxvbmcpb21hcF9rcCk7CisKKwkvKiBnZXQgdGhlIGly cSBhbmQgaW5pdCB0aW1lciovCisJdGFza2xldF9lbmFibGUoJmtwX3Rhc2ts ZXQpOworCWtwX3Rhc2tsZXQuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBvbWFw X2twOworCisJcmV0ID0gZGV2aWNlX2NyZWF0ZV9maWxlKCZwZGV2LT5kZXYs ICZkZXZfYXR0cl9lbmFibGUpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVy cjI7CisKKwkvKiBzZXR1cCBpbnB1dCBkZXZpY2UgKi8KKwlzZXRfYml0KEVW X0tFWSwgaW5wdXRfZGV2LT5ldmJpdCk7CisJZm9yIChpID0gMDsga2V5bWFw W2ldICE9IDA7IGkrKykKKwkJc2V0X2JpdChrZXltYXBbaV0gJiBLRVlfTUFY LCBpbnB1dF9kZXYtPmtleWJpdCk7CisJaW5wdXRfZGV2LT5uYW1lID0gIm9t YXAta2V5cGFkIjsKKwlpbnB1dF9kZXYtPnBoeXMgPSAib21hcC1rZXlwYWQv aW5wdXQwIjsKKwlpbnB1dF9kZXYtPmNkZXYuZGV2ID0gJnBkZXYtPmRldjsK KwlpbnB1dF9kZXYtPnByaXZhdGUgPSBvbWFwX2twOworCQorCWlucHV0X2Rl di0+aWQuYnVzdHlwZSA9IEJVU19IT1NUOworCWlucHV0X2Rldi0+aWQudmVu ZG9yID0gMHgwMDAxOworCWlucHV0X2Rldi0+aWQucHJvZHVjdCA9IDB4MDAw MTsKKwlpbnB1dF9kZXYtPmlkLnZlcnNpb24gPSAweDAxMDA7CisKKwlpbnB1 dF9kZXYtPmtleWNvZGUgPSBrZXltYXA7CisJaW5wdXRfZGV2LT5rZXljb2Rl c2l6ZSA9IHNpemVvZih1bnNpZ25lZCBpbnQpOworCWlucHV0X2Rldi0+a2V5 Y29kZW1heCA9IHBkYXRhLT5rZXltYXBzaXplOworCisJcmV0ID0gaW5wdXRf cmVnaXN0ZXJfZGV2aWNlKG9tYXBfa3AtPmlucHV0KTsKKwlpZiAocmV0IDwg MCkgeworCQlwcmludGsoS0VSTl9FUlIgIlVuYWJsZSB0byByZWdpc3RlciBv bWFwLWtleXBhZCBpbnB1dCBkZXZpY2VcbiIpOworCQlnb3RvIGVycjM7CisJ fQorCisJaWYgKG1hY2hpbmVfaXNfb21hcF9oMigpIHx8IG1hY2hpbmVfaXNf b21hcF9oMygpIHx8CisJICAgIG1hY2hpbmVfaXNfb21hcF9wZXJzZXVzMigp KSB7CisJCW9tYXBfd3JpdGV3KDB4ZmYsIE9NQVBfTVBVSU9fQkFTRSArIE9N QVBfTVBVSU9fR1BJT19ERUJPVU5DSU5HKTsKKwl9CisJLyogc2NhbiBjdXJy ZW50IHN0YXR1cyBhbmQgZW5hYmxlIGludGVycnVwdCAqLworCW9tYXBfa3Bf c2Nhbl9rZXlwYWQob21hcF9rcCwga2V5cGFkX3N0YXRlKTsKKwlpZiAoIWNw dV9pc19vbWFwMjR4eCgpKSB7CisJCW9tYXBfa3AtPmlycSA9IHBsYXRmb3Jt X2dldF9pcnEocGRldiwgMCk7CisJCWlmIChvbWFwX2twLT5pcnEgPj0gMCkg eworCQkJaWYgKHJlcXVlc3RfaXJxKG9tYXBfa3AtPmlycSwgb21hcF9rcF9p bnRlcnJ1cHQsIDAsCisJCQkJCSJvbWFwLWtleXBhZCIsIG9tYXBfa3ApIDwg MCkKKwkJCQlnb3RvIGVycjQ7CisJCX0KKwkJb21hcF93cml0ZXcoMCwgT01B UF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsKKwl9IGVs c2UgeworCQlmb3IgKGlycV9pZHggPSAwOyBpcnFfaWR4IDwgb21hcF9rcC0+ cm93czsgaXJxX2lkeCsrKSB7CisJCQlpZiAocmVxdWVzdF9pcnEoT01BUF9H UElPX0lSUShyb3dfZ3Bpb3NbaXJxX2lkeF0pLAorCQkJCSAgICAgICAJb21h cF9rcF9pbnRlcnJ1cHQsCisJCQkJCUlSUUZfVFJJR0dFUl9GQUxMSU5HLAor CQkJCSAgICAgICAJIm9tYXAta2V5cGFkIiwgb21hcF9rcCkgPCAwKQorCQkJ CWdvdG8gZXJyNTsJCisJCX0KKwl9CisJcmV0dXJuIDA7CitlcnI1OgorCWZv ciAoaSA9IGlycV9pZHgtMTsgaSA+PTA7IGktLSkgCisJCWZyZWVfaXJxKHJv d19ncGlvc1tpXSwgMCk7CitlcnI0OgorCWlucHV0X3VucmVnaXN0ZXJfZGV2 aWNlKG9tYXBfa3AtPmlucHV0KTsKKwlpbnB1dF9kZXYgPSBOVUxMOworZXJy MzoKKwlkZXZpY2VfcmVtb3ZlX2ZpbGUoJnBkZXYtPmRldiwgJmRldl9hdHRy X2VuYWJsZSk7CitlcnIyOgorCWZvciAoaSA9IHJvd19pZHgtMTsgaSA+PTA7 IGktLSkKKwkJb21hcF9mcmVlX2dwaW8ocm93X2dwaW9zW2ldKTsKK2VycjE6 CisJZm9yIChpID0gY29sX2lkeC0xOyBpID49MDsgaS0tKQorCQlvbWFwX2Zy ZWVfZ3Bpbyhjb2xfZ3Bpb3NbaV0pOworCisJa2ZyZWUob21hcF9rcCk7CisJ aW5wdXRfZnJlZV9kZXZpY2UoaW5wdXRfZGV2KTsKKworCXJldHVybiAtRUlO VkFMOworfQorCitzdGF0aWMgaW50IG9tYXBfa3BfcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG9tYXBfa3AgKm9t YXBfa3AgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCS8qIGRp c2FibGUga2V5cGFkIGludGVycnVwdCBoYW5kbGluZyAqLworCXRhc2tsZXRf ZGlzYWJsZSgma3BfdGFza2xldCk7CisJaWYgKGNwdV9pc19vbWFwMjR4eCgp KSB7CisJCWludCBpOworCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcC0+Y29s czsgaSsrKQorCSAgICAJCW9tYXBfZnJlZV9ncGlvKGNvbF9ncGlvc1tpXSk7 CisJCWZvciAoaSA9IDA7IGkgPCBvbWFwX2twLT5yb3dzOyBpKyspIHsKKwkg ICAgCQlvbWFwX2ZyZWVfZ3Bpbyhyb3dfZ3Bpb3NbaV0pOworCQkJZnJlZV9p cnEoT01BUF9HUElPX0lSUShyb3dfZ3Bpb3NbaV0pLCAwKTsKKwkJfQorCX0g ZWxzZSB7CisJCW9tYXBfd3JpdGV3KDEsIE9NQVBfTVBVSU9fQkFTRSArIE9N QVBfTVBVSU9fS0JEX01BU0tJVCk7CisJCWZyZWVfaXJxKG9tYXBfa3AtPmly cSwgMCk7CisJfQorCisJZGVsX3RpbWVyX3N5bmMoJm9tYXBfa3AtPnRpbWVy KTsKKwl0YXNrbGV0X2tpbGwoJmtwX3Rhc2tsZXQpOworCisJLyogdW5yZWdp c3RlciBldmVyeXRoaW5nICovCisJaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2Uo b21hcF9rcC0+aW5wdXQpOworCisJa2ZyZWUob21hcF9rcCk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb21h cF9rcF9kcml2ZXIgPSB7CisJLnByb2JlCQk9IG9tYXBfa3BfcHJvYmUsCisJ LnJlbW92ZQkJPSBvbWFwX2twX3JlbW92ZSwKKwkuc3VzcGVuZAk9IG9tYXBf a3Bfc3VzcGVuZCwKKwkucmVzdW1lCQk9IG9tYXBfa3BfcmVzdW1lLAorCS5k cml2ZXIJCT0geworCQkubmFtZQk9ICJvbWFwLWtleXBhZCIsCisJfSwKK307 CisKK3N0YXRpYyBpbnQgX19kZXZpbml0IG9tYXBfa3BfaW5pdCh2b2lkKQor eworCXByaW50ayhLRVJOX0lORk8gIk9NQVAgS2V5cGFkIERyaXZlclxuIik7 CisJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigmb21hcF9rcF9k cml2ZXIpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgb21hcF9rcF9leGl0 KHZvaWQpCit7CisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJm9tYXBf a3BfZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQob21hcF9rcF9pbml0KTsK K21vZHVsZV9leGl0KG9tYXBfa3BfZXhpdCk7CisKK01PRFVMRV9BVVRIT1Io IlRpbW8gVGVy5HMiKTsKK01PRFVMRV9ERVNDUklQVElPTigiT01BUCBLZXlw YWQgRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2tleXBhZC5oIGIvaW5j bHVkZS9hc20tYXJtL2FyY2gtb21hcC9rZXlwYWQuaAppbmRleCA4YTAyM2E5 Li44MDBmYjE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1v bWFwL2tleXBhZC5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAv a2V5cGFkLmgKQEAgLTE0LDYgKzE0LDcgQEAgc3RydWN0IG9tYXBfa3BfcGxh dGZvcm1fZGF0YSB7CiAJaW50IHJvd3M7CiAJaW50IGNvbHM7CiAJaW50ICpr ZXltYXA7CisJdW5zaWduZWQgaW50IGtleW1hcHNpemU7CiAJdW5zaWduZWQg aW50IHJlcDoxOwogCS8qIHNwZWNpZmljIHRvIE9NQVAyNDJ4Ki8KIAl1bnNp Z25lZCBpbnQgKnJvd19ncGlvczsKLS0gCjEuMy4zCgo= --_----------=_1153984144202380--