From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030332AbWGZMDw (ORCPT ); Wed, 26 Jul 2006 08:03:52 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1030315AbWGZMDw (ORCPT ); Wed, 26 Jul 2006 08:03:52 -0400 Received: from out4.smtp.messagingengine.com ([66.111.4.28]:57224 "EHLO out4.smtp.messagingengine.com") by vger.kernel.org with ESMTP id S1030291AbWGZMDv (ORCPT ); Wed, 26 Jul 2006 08:03:51 -0400 Message-Id: <1153915433.13733.266905718@webmail.messagingengine.com> X-Sasl-Enc: kP/D6ykrTcXY+L7LtXJTIvnrD+C332Xjl34+Z5fxjcdr 1153915433 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="_----------=_1153915433137330"; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Subject: [PATCH 1/2] OMAP: Add keypad driver Date: Wed, 26 Jul 2006 05:03:53 -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. --_----------=_1153915433137330 Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Date: Wed, 26 Jul 2006 12:03:53 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/25/279 Please review it and give me the Ack if looks ok. ---Komal Shah http://komalshah.blogspot.com -- http://www.fastmail.fm - Faster than the air-speed velocity of an unladen european swallow --_----------=_1153915433137330 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: Wed, 26 Jul 2006 12:03:53 UT RnJvbSBub2JvZHkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtv bWFsIFNoYWggPGtvbWFsX3NoYWg4MDIwMDNAeWFob28uY29tPgpEYXRlOiBX ZWQsIDI2IEp1bCAyMDA2IDIyOjI5OjA0ICswNTMwClN1YmplY3Q6IFtQQVRD SCAxLzJdIE9NQVA6IEFkZCBrZXlwYWQgZHJpdmVyCgpUaGlzIHBhdGNoIGFk ZHMgc3VwcG9ydCBmb3Iga2V5cGFkIGRyaXZlciBydW5uaW5nIG9uIGRpZmZl cmVudApUSSBPTUFQKGh0dHA6Ly93d3cudGkuY29tL29tYXApIHByb2Nlc3Nv cnMgYmFzZWQgYm9hcmRzIGxpa2UKT1NLLCBIMiwgSDMsIEg0LCBQZXJzdWFz IGFuZCBOb2tpYSA3NzAuCgpTaWduZWQtb2ZmLWJ5OiBLb21hbCBTaGFoIDxr b21hbF9zaGFoODAyMDAzQHlhaG9vLmNvbT4KCi0tLQoKIGRyaXZlcnMvaW5w dXQva2V5Ym9hcmQvS2NvbmZpZyAgICAgICB8ICAgIDkgKwogZHJpdmVycy9p bnB1dC9rZXlib2FyZC9NYWtlZmlsZSAgICAgIHwgICAgMSAKIGRyaXZlcnMv aW5wdXQva2V5Ym9hcmQvb21hcC1rZXlwYWQuYyB8ICA0OTAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9hc20tYXJtL2Fy Y2gtb21hcC9rZXlwYWQuaCAgIHwgICAgMSAKIDQgZmlsZXMgY2hhbmdlZCwg NTAxIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFwLWtleXBhZC5j Cgo0YTZlMWViN2NiMjdiYmUxMzIzNmM4OTE3ZmExOTE2NDQ2ZDE0M2U2CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL0tjb25maWcgYi9k cml2ZXJzL2lucHV0L2tleWJvYXJkL0tjb25maWcKaW5kZXggYTlkZGE1Ni4u ODNlYWMzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9L Y29uZmlnCisrKyBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvS2NvbmZpZwpA QCAtMTgzLDQgKzE4MywxMyBAQCBjb25maWcgS0VZQk9BUkRfSElMCiAJICBU aGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEhJTC1rZXlib2Fy ZHMgYXR0YWNoZWQKIAkgIHRvIHlvdXIgbWFjaGluZSwgc28gbm9ybWFsbHkg eW91IHNob3VsZCBzYXkgWSBoZXJlLgogCitjb25maWcgS0VZQk9BUkRfT01B UAorCXRyaXN0YXRlICJUSSBPTUFQIGtleXBhZCBzdXBwb3J0IgorCWRlcGVu ZHMgb24gKEFSQ0hfT01BUDEgfHwgQVJDSF9PTUFQMikKKwloZWxwCisJICBT YXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgT01BUCBrZXlwYWQu CisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNo b29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG9t YXAta2V5cGFkLgorCiBlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1 dC9rZXlib2FyZC9NYWtlZmlsZSBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQv TWFrZWZpbGUKaW5kZXggMjcwODE2Ny4uYjI2NTM5MSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9pbnB1dC9rZXlib2FyZC9NYWtlZmlsZQorKysgYi9kcml2ZXJz L2lucHV0L2tleWJvYXJkL01ha2VmaWxlCkBAIC0xNSw0ICsxNSw1IEBAIG9i ai0kKENPTkZJR19LRVlCT0FSRF9DT1JHSSkJCSs9IGNvcmdpa2IKIG9iai0k KENPTkZJR19LRVlCT0FSRF9TUElUWikJCSs9IHNwaXR6a2JkLm8KIG9iai0k KENPTkZJR19LRVlCT0FSRF9ISUwpCQkrPSBoaWxfa2JkLm8KIG9iai0kKENP TkZJR19LRVlCT0FSRF9ISUxfT0xEKQkJKz0gaGlsa2JkLm8KK29iai0kKENP TkZJR19LRVlCT0FSRF9PTUFQKSAgICAgICAgICAgICArPSBvbWFwLWtleXBh ZC5vCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvb21h cC1rZXlwYWQuYyBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvb21hcC1rZXlw YWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGU3 NTAxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9pbnB1dC9rZXlib2Fy ZC9vbWFwLWtleXBhZC5jCkBAIC0wLDAgKzEsNDkwIEBACisvKgorICogbGlu dXgvZHJpdmVycy9jaGFyL29tYXAta2V5cGFkLmMKKyAqCisgKiBPTUFQIEtl eXBhZCBEcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTm9raWEg Q29ycG9yYXRpb24KKyAqIFdyaXR0ZW4gYnkgVGltbyBUZXLkcyA8ZXh0LXRp bW8udGVyYXNAbm9raWEuY29tPgorICoKKyAqIEFkZGVkIHN1cHBvcnQgZm9y IEgyICYgSDMgS2V5cGFkCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGV4YXMg SW5zdHJ1bWVudHMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgor I2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxs aW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRl eC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2lycXMuaD4KKyNpbmNsdWRlIDxh c20vYXJjaC9ncGlvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUu aD4KKyNpbmNsdWRlIDxhc20vYXJjaC9rZXlwYWQuaD4KKyNpbmNsdWRlIDxh c20vYXJjaC9tZW5lbGF1cy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2lu Y2x1ZGUgPGFzbS9lcnJuby5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVz Lmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbXV4Lmg+CisKKyNkZWZpbmUgTkVX X0JPQVJEX0xFQVJOSU5HX01PREUKKworc3RhdGljIHZvaWQgb21hcF9rcF90 YXNrbGV0KHVuc2lnbmVkIGxvbmcpOworc3RhdGljIHZvaWQgb21hcF9rcF90 aW1lcih1bnNpZ25lZCBsb25nKTsKKworc3RhdGljIHVuc2lnbmVkIGNoYXIg a2V5cGFkX3N0YXRlWzhdOworc3RhdGljIERFRklORV9NVVRFWChrcF9lbmFi bGVfbXV0ZXgpOworc3RhdGljIGludCBrcF9lbmFibGUgPSAxOworc3RhdGlj IGludCBrcF9jdXJfZ3JvdXAgPSAtMTsKKworc3RydWN0IG9tYXBfa3Agewor CXN0cnVjdCBpbnB1dF9kZXYgKmlucHV0OworCXN0cnVjdCB0aW1lcl9saXN0 IHRpbWVyOworCWludCBpcnE7CisJdW5zaWduZWQgaW50IHJvd3M7CisJdW5z aWduZWQgaW50IGNvbHM7Cit9OworCitERUNMQVJFX1RBU0tMRVRfRElTQUJM RUQoa3BfdGFza2xldCwgb21hcF9rcF90YXNrbGV0LCAwKTsKKworc3RhdGlj IGludCAqa2V5bWFwOworc3RhdGljIHVuc2lnbmVkIGludCAqcm93X2dwaW9z Oworc3RhdGljIHVuc2lnbmVkIGludCAqY29sX2dwaW9zOworCisjaWZkZWYg Q09ORklHX0FSQ0hfT01BUDIKK3N0YXRpYyB2b2lkIHNldF9jb2xfZ3Bpb192 YWwoc3RydWN0IG9tYXBfa3AgKm9tYXBfa3AsIHU4IHZhbHVlKQoreworCWlu dCBjb2w7CisJZm9yIChjb2wgPSAwOyBjb2wgPCBvbWFwX2twLT5jb2xzOyBj b2wrKykgeworCQlpZiAodmFsdWUgJiAoMSA8PCBjb2wpKQorCQkJb21hcF9z ZXRfZ3Bpb19kYXRhb3V0KGNvbF9ncGlvc1tjb2xdLCAxKTsKKwkJZWxzZQor CQkJb21hcF9zZXRfZ3Bpb19kYXRhb3V0KGNvbF9ncGlvc1tjb2xdLCAwKTsK Kwl9Cit9CisKK3N0YXRpYyB1OCBnZXRfcm93X2dwaW9fdmFsKHN0cnVjdCBv bWFwX2twICpvbWFwX2twKQoreworCWludCByb3c7CisJdTggdmFsdWUgPSAw OworCisJZm9yIChyb3cgPSAwOyByb3cgPCBvbWFwX2twLT5yb3dzOyByb3cr KykgeworCQlpZiAob21hcF9nZXRfZ3Bpb19kYXRhaW4ocm93X2dwaW9zW3Jv d10pKQorCQkJdmFsdWUgfD0gKDEgPDwgcm93KTsKKwl9CisJcmV0dXJuIHZh bHVlOworfQorI2Vsc2UKKyNkZWZpbmUJCXNldF9jb2xfZ3Bpb192YWwoeCwg eSkJZG8ge30gd2hpbGUgKDApCisjZGVmaW5lCQlnZXRfcm93X2dwaW9fdmFs KHgpCTAKKyNlbmRpZgorCitzdGF0aWMgaXJxcmV0dXJuX3Qgb21hcF9rcF9p bnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLAorCQkJCSAgICAgc3Ry dWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IG9tYXBfa3AgKm9tYXBf a3AgPSBkZXZfaWQ7CisKKwkvKiBkaXNhYmxlIGtleWJvYXJkIGludGVycnVw dCBhbmQgc2NoZWR1bGUgZm9yIGhhbmRsaW5nICovCisJaWYgKGNwdV9pc19v bWFwMjR4eCgpKSB7CisJCWludCBpOworCQlmb3IgKGkgPSAwOyBpIDwgb21h cF9rcC0+cm93czsgaSsrKQorCQkJZGlzYWJsZV9pcnEoT01BUF9HUElPX0lS UShyb3dfZ3Bpb3NbaV0pKTsKKwl9IGVsc2UKKwkJLyogZGlzYWJsZSBrZXli b2FyZCBpbnRlcnJ1cHQgYW5kIHNjaGVkdWxlIGZvciBoYW5kbGluZyAqLwor CQlvbWFwX3dyaXRldygxLCBPTUFQX01QVUlPX0JBU0UgKyBPTUFQX01QVUlP X0tCRF9NQVNLSVQpOworCisJdGFza2xldF9zY2hlZHVsZSgma3BfdGFza2xl dCk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyB2b2lk IG9tYXBfa3BfdGltZXIodW5zaWduZWQgbG9uZyBkYXRhKQoreworCXRhc2ts ZXRfc2NoZWR1bGUoJmtwX3Rhc2tsZXQpOworfQorCitzdGF0aWMgdm9pZCBv bWFwX2twX3NjYW5fa2V5cGFkKHN0cnVjdCBvbWFwX2twICpvbWFwX2twLCB1 bnNpZ25lZCBjaGFyICpzdGF0ZSkKK3sKKwlpbnQgY29sID0gMDsKKworCS8q IHJlYWQgdGhlIGtleXBhZCBzdGF0dXMgKi8KKwlpZiAoY3B1X2lzX29tYXAy NHh4KCkpIHsKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IGkgPCBvbWFwX2tw LT5yb3dzOyBpKyspCisJCQlkaXNhYmxlX2lycShPTUFQX0dQSU9fSVJRKHJv d19ncGlvc1tpXSkpOworCX0gZWxzZQorCQkvKiBkaXNhYmxlIGtleWJvYXJk IGludGVycnVwdCBhbmQgc2NoZWR1bGUgZm9yIGhhbmRsaW5nICovCisJCW9t YXBfd3JpdGV3KDEsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JE X01BU0tJVCk7CisKKwlpZiAoIWNwdV9pc19vbWFwMjR4eCgpKSB7CisJCS8q IHJlYWQgdGhlIGtleXBhZCBzdGF0dXMgKi8KKwkJb21hcF93cml0ZXcoMHhm ZiwgT01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19LQkMpOworCQlmb3Ig KGNvbCA9IDA7IGNvbCA8IG9tYXBfa3AtPmNvbHM7IGNvbCsrKSB7CisJCQlv bWFwX3dyaXRldyh+KDEgPDwgY29sKSAmIDB4ZmYsCisJCQkJICAgIE9NQVBf TVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JDKTsKKworCQkJaWYgKG1hY2hp bmVfaXNfb21hcF9vc2soKSB8fCBtYWNoaW5lX2lzX29tYXBfaDIoKQorCQkJ ICAgCSB8fCBtYWNoaW5lX2lzX29tYXBfaDMoKSkKKwkJCQl1ZGVsYXkoOSk7 CisJCQllbHNlCisJCQkJdWRlbGF5KDQpOworCQkJc3RhdGVbY29sXSA9IH5v bWFwX3JlYWR3KE9NQVBfTVBVSU9fQkFTRSArCisJCQkJCQkgT01BUF9NUFVJ T19LQlJfTEFUQ0gpICYgMHhmZjsKKwkJfQorCQlvbWFwX3dyaXRldygweDAw LCBPTUFQX01QVUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCQyk7CisJCXVkZWxh eSgyKTsKKwl9IGVsc2UgeworCQkvKiByZWFkIHRoZSBrZXlwYWQgc3RhdHVz ICovCisJCWZvciAoY29sID0gMDsgY29sIDwgb21hcF9rcC0+Y29sczsgY29s KyspIHsKKwkJCXNldF9jb2xfZ3Bpb192YWwob21hcF9rcCwgfigxIDw8IGNv bCkpOworCQkJc3RhdGVbY29sXSA9IH4oZ2V0X3Jvd19ncGlvX3ZhbChvbWFw X2twKSkgJiAweDNmOworCQl9CisJCXNldF9jb2xfZ3Bpb192YWwob21hcF9r cCwgMCk7CisJfQorfQorCitzdGF0aWMgaW5saW5lIGludCBvbWFwX2twX2Zp bmRfa2V5KGludCBjb2wsIGludCByb3cpCit7CisJaW50IGksIGtleTsKKwor CWtleSA9IEtFWShjb2wsIHJvdywgMCk7CisJZm9yIChpID0gMDsga2V5bWFw W2ldICE9IDA7IGkrKykKKwkJaWYgKChrZXltYXBbaV0gJiAweGZmMDAwMDAw KSA9PSBrZXkpCisJCQlyZXR1cm4ga2V5bWFwW2ldICYgMHgwMGZmZmZmZjsK KwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkIG9tYXBfa3BfdGFza2xl dCh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IG9tYXBfa3AgKm9t YXBfa3BfZGF0YSA9IChzdHJ1Y3Qgb21hcF9rcCAqKSBkYXRhOworCXVuc2ln bmVkIGNoYXIgbmV3X3N0YXRlWzhdLCBjaGFuZ2VkLCBrZXlfZG93biA9IDA7 CisJaW50IGNvbCwgcm93OworCWludCBzcHVyaW91cyA9IDA7CisKKwkvKiBj aGVjayBmb3IgYW55IGNoYW5nZXMgKi8KKwlvbWFwX2twX3NjYW5fa2V5cGFk KG9tYXBfa3BfZGF0YSwgbmV3X3N0YXRlKTsKKworCS8qIGNoZWNrIGZvciBj aGFuZ2VzIGFuZCBwcmludCB0aG9zZSAqLworCWZvciAoY29sID0gMDsgY29s IDwgb21hcF9rcF9kYXRhLT5jb2xzOyBjb2wrKykgeworCQljaGFuZ2VkID0g bmV3X3N0YXRlW2NvbF0gXiBrZXlwYWRfc3RhdGVbY29sXTsKKwkJa2V5X2Rv d24gfD0gbmV3X3N0YXRlW2NvbF07CisJCWlmIChjaGFuZ2VkID09IDApCisJ CQljb250aW51ZTsKKworCQlmb3IgKHJvdyA9IDA7IHJvdyA8IG9tYXBfa3Bf ZGF0YS0+cm93czsgcm93KyspIHsKKwkJCWludCBrZXk7CisJCQlpZiAoIShj aGFuZ2VkICYgKDEgPDwgcm93KSkpCisJCQkJY29udGludWU7CisjaWZkZWYg TkVXX0JPQVJEX0xFQVJOSU5HX01PREUKKwkJCXByaW50ayhLRVJOX0lORk8g Im9tYXAta2V5cGFkOiBrZXkgJWQtJWQgJXNcbiIsIGNvbCwKKwkJCSAgICAg ICByb3csIChuZXdfc3RhdGVbY29sXSAmICgxIDw8IHJvdykpID8KKwkJCSAg ICAgICAicHJlc3NlZCIgOiAicmVsZWFzZWQiKTsKKyNlbHNlCisJCQlrZXkg PSBvbWFwX2twX2ZpbmRfa2V5KGNvbCwgcm93KTsKKwkJCWlmIChrZXkgPCAw KSB7CisJCQkJcHJpbnRrKEtFUk5fV0FSTklORworCQkJCSAgICAgICJvbWFw LWtleXBhZDogU3B1cmlvdXMga2V5IGV2ZW50ICVkLSVkXG4iLAorCQkJCSAg ICAgICBjb2wsIHJvdyk7CisJCQkJLyogV2Ugc2NhbiBhZ2FpbiBhZnRlciBh IGNvdXBsZSBvZiBzZWNvbmRzICovCisJCQkJc3B1cmlvdXMgPSAxOworCQkJ CWNvbnRpbnVlOworCQkJfQorCisJCQlpZiAoIShrcF9jdXJfZ3JvdXAgPT0g KGtleSAmIEdST1VQX01BU0spIHx8CisJCQkgICAgICBrcF9jdXJfZ3JvdXAg PT0gLTEpKQorCQkJCWNvbnRpbnVlOworCisJCQlrcF9jdXJfZ3JvdXAgPSBr ZXkgJiBHUk9VUF9NQVNLOworCQkJaW5wdXRfcmVwb3J0X2tleShvbWFwX2tw X2RhdGEtPmlucHV0LCBrZXkgJiB+R1JPVVBfTUFTSywKKwkJCQkJIG5ld19z dGF0ZVtjb2xdICYgKDEgPDwgcm93KSk7CisjZW5kaWYKKwkJfQorCX0KKwlt ZW1jcHkoa2V5cGFkX3N0YXRlLCBuZXdfc3RhdGUsIHNpemVvZihrZXlwYWRf c3RhdGUpKTsKKworCWlmIChrZXlfZG93bikgeworICAgICAgICAgICAgICAg IGludCBkZWxheSA9IEhaIC8gMjA7CisJCS8qIHNvbWUga2V5IGlzIHByZXNz ZWQgLSBrZWVwIGlycSBkaXNhYmxlZCBhbmQgdXNlIHRpbWVyCisJCSAqIHRv IHBvbGwgdGhlIGtleXBhZCAqLworCQlpZiAoc3B1cmlvdXMpCisJCQlkZWxh eSA9IDIgKiBIWjsKKwkJbW9kX3RpbWVyKCZvbWFwX2twX2RhdGEtPnRpbWVy LCBqaWZmaWVzICsgZGVsYXkpOworCX0gZWxzZSB7CisJCS8qIGVuYWJsZSBp bnRlcnJ1cHRzICovCisJCWlmIChjcHVfaXNfb21hcDI0eHgoKSkgeworCQkJ aW50IGk7CisJCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcF9kYXRhLT5yb3dz OyBpKyspCisJCQkJZW5hYmxlX2lycShPTUFQX0dQSU9fSVJRKHJvd19ncGlv c1tpXSkpOworCQl9IGVsc2UgeworCQkJb21hcF93cml0ZXcoMCwgT01BUF9N UFVJT19CQVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsKKwkJCWtwX2N1 cl9ncm91cCA9IC0xOworCQl9CisgCX0KK30KKworc3RhdGljIHNzaXplX3Qg b21hcF9rcF9lbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJ ICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikK K3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIldVxuIiwga3BfZW5hYmxlKTsK K30KKworc3RhdGljIHNzaXplX3Qgb21hcF9rcF9lbmFibGVfc3RvcmUoc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0 ciwKKwkJCQkgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7 CisJaW50IHN0YXRlOworCisJaWYgKHNzY2FuZihidWYsICIldSIsICZzdGF0 ZSkgIT0gMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoKHN0YXRlICE9 IDEpICYmIChzdGF0ZSAhPSAwKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlt dXRleF9sb2NrKCZrcF9lbmFibGVfbXV0ZXgpOworCWlmIChzdGF0ZSAhPSBr cF9lbmFibGUpIHsKKwkJaWYgKHN0YXRlKQorCQkJZW5hYmxlX2lycShJTlRf S0VZQk9BUkQpOworCQllbHNlCisJCQlkaXNhYmxlX2lycShJTlRfS0VZQk9B UkQpOworCQlrcF9lbmFibGUgPSBzdGF0ZTsKKwl9CisJbXV0ZXhfdW5sb2Nr KCZrcF9lbmFibGVfbXV0ZXgpOworCisJcmV0dXJuIHN0cm5sZW4oYnVmLCBj b3VudCk7Cit9CisKK3N0YXRpYyBERVZJQ0VfQVRUUihlbmFibGUsIFNfSVJV R08gfCBTX0lXVVNSLCBvbWFwX2twX2VuYWJsZV9zaG93LCBvbWFwX2twX2Vu YWJsZV9zdG9yZSk7CisKKyNpZmRlZiBDT05GSUdfUE0KK3N0YXRpYyBpbnQg b21hcF9rcF9zdXNwZW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldiwg cG1fbWVzc2FnZV90IHN0YXRlKQoreworCS8qIE5vdGhpbmcgeWV0ICovCisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvbWFwX2twX3Jlc3VtZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpCit7CisJLyogTm90aGluZyB5 ZXQgKi8KKworCXJldHVybiAwOworfQorI2Vsc2UKKyNkZWZpbmUgb21hcF9r cF9zdXNwZW5kCU5VTEwKKyNkZWZpbmUgb21hcF9rcF9yZXN1bWUJTlVMTAor I2VuZGlmCisKK3N0YXRpYyBpbnQgX19pbml0IG9tYXBfa3BfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qgb21hcF9r cCAqb21hcF9rcDsKKwlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXY7CisJ c3RydWN0IG9tYXBfa3BfcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSAgcGRldi0+ ZGV2LnBsYXRmb3JtX2RhdGE7CisJaW50IGksIGNvbF9pZHgsIHJvd19pZHgs IGlycV9pZHgsIHJldDsKKworCWlmICghcGRhdGEtPnJvd3MgfHwgIXBkYXRh LT5jb2xzIHx8ICFwZGF0YS0+a2V5bWFwKSB7CisJCXByaW50ayhLRVJOX0VS UiAiTm8gcm93cywgY29scyBvciBrZXltYXAgZnJvbSBwZGF0YVxuIik7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCW9tYXBfa3AgPSBremFsbG9jKHNp emVvZihzdHJ1Y3Qgb21hcF9rcCksIEdGUF9LRVJORUwpOworCWlucHV0X2Rl diA9IGlucHV0X2FsbG9jYXRlX2RldmljZSgpOworCWlmICghb21hcF9rcCB8 fCAhaW5wdXRfZGV2KSB7CisJCWtmcmVlKG9tYXBfa3ApOworCQlpbnB1dF9m cmVlX2RldmljZShpbnB1dF9kZXYpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9 CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBvbWFwX2twKTsKKwor CW9tYXBfa3AtPmlucHV0ID0gaW5wdXRfZGV2OworCisJLyogRGlzYWJsZSB0 aGUgaW50ZXJydXB0IGZvciB0aGUgTVBVSU8ga2V5Ym9hcmQgKi8KKwlpZiAo IWNwdV9pc19vbWFwMjR4eCgpKQorCQlvbWFwX3dyaXRldygxLCBPTUFQX01Q VUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCRF9NQVNLSVQpOworCisJa2V5bWFw ID0gcGRhdGEtPmtleW1hcDsKKworCWlmIChwZGF0YS0+cmVwKQorCQlzZXRf Yml0KEVWX1JFUCwgaW5wdXRfZGV2LT5ldmJpdCk7CisKKwlpZiAocGRhdGEt PnJvd19ncGlvcyAmJiBwZGF0YS0+Y29sX2dwaW9zKSB7CisJCXJvd19ncGlv cyA9IHBkYXRhLT5yb3dfZ3Bpb3M7CisJCWNvbF9ncGlvcyA9IHBkYXRhLT5j b2xfZ3Bpb3M7CisJfQorCisJb21hcF9rcC0+cm93cyA9IHBkYXRhLT5yb3dz OworCW9tYXBfa3AtPmNvbHMgPSBwZGF0YS0+Y29sczsKKworCWlmIChjcHVf aXNfb21hcDI0eHgoKSkgeworCQkvKiBDb2xzOiBvdXRwdXRzICovCisJCWZv ciAoY29sX2lkeCA9IDA7IGNvbF9pZHggPCBvbWFwX2twLT5jb2xzOyBjb2xf aWR4KyspIHsKKwkJCWlmIChvbWFwX3JlcXVlc3RfZ3Bpbyhjb2xfZ3Bpb3Nb Y29sX2lkeF0pIDwgMCkgeworCQkJCXByaW50ayhLRVJOX0VSUiAiRmFpbGVk IHRvIHJlcXVlc3QiCisJCQkJICAgICAgICJHUElPJWQgZm9yIGtleXBhZFxu IiwKKwkJCQkgICAgICAgY29sX2dwaW9zW2NvbF9pZHhdKTsKKwkJCQlnb3Rv IGVycjE7CisJCQl9CisJCQlvbWFwX3NldF9ncGlvX2RpcmVjdGlvbihjb2xf Z3Bpb3NbY29sX2lkeF0sIDApOworCQl9CisJCS8qIFJvd3M6IGlucHV0cyAq LworCQlmb3IgKHJvd19pZHggPSAwOyByb3dfaWR4IDwgb21hcF9rcC0+cm93 czsgcm93X2lkeCsrKSB7CisJCQlpZiAob21hcF9yZXF1ZXN0X2dwaW8ocm93 X2dwaW9zW3Jvd19pZHhdKSA8IDApIHsKKwkJCQlwcmludGsoS0VSTl9FUlIg IkZhaWxlZCB0byByZXF1ZXN0IgorCQkJCSAgICAgICAiR1BJTyVkIGZvciBr ZXlwYWRcbiIsCisJCQkJICAgICAgIHJvd19ncGlvc1tyb3dfaWR4XSk7CisJ CQkJZ290byBlcnIyOworCQkJfQorCQkJb21hcF9zZXRfZ3Bpb19kaXJlY3Rp b24ocm93X2dwaW9zW3Jvd19pZHhdLCAxKTsKKwkJfQorCX0KKworCXNldHVw X3RpbWVyKCZvbWFwX2twLT50aW1lciwgb21hcF9rcF90aW1lciwgKHVuc2ln bmVkIGxvbmcpb21hcF9rcCk7CisKKwkvKiBnZXQgdGhlIGlycSBhbmQgaW5p dCB0aW1lciovCisJdGFza2xldF9lbmFibGUoJmtwX3Rhc2tsZXQpOworCWtw X3Rhc2tsZXQuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBvbWFwX2twOworCisJ cmV0ID0gZGV2aWNlX2NyZWF0ZV9maWxlKCZwZGV2LT5kZXYsICZkZXZfYXR0 cl9lbmFibGUpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycjI7CisKKwkv KiBzZXR1cCBpbnB1dCBkZXZpY2UgKi8KKwlzZXRfYml0KEVWX0tFWSwgaW5w dXRfZGV2LT5ldmJpdCk7CisJZm9yIChpID0gMDsga2V5bWFwW2ldICE9IDA7 IGkrKykKKwkJc2V0X2JpdChrZXltYXBbaV0gJiBLRVlfTUFYLCBpbnB1dF9k ZXYtPmtleWJpdCk7CisJaW5wdXRfZGV2LT5uYW1lID0gIm9tYXAta2V5cGFk IjsKKwlpbnB1dF9kZXYtPnBoeXMgPSAib21hcC1rZXlwYWQvaW5wdXQwIjsK KwlpbnB1dF9kZXYtPmNkZXYuZGV2ID0gJnBkZXYtPmRldjsKKwlpbnB1dF9k ZXYtPnByaXZhdGUgPSBvbWFwX2twOworCQorCWlucHV0X2Rldi0+aWQuYnVz dHlwZSA9IEJVU19IT1NUOworCWlucHV0X2Rldi0+aWQudmVuZG9yID0gMHgw MDAxOworCWlucHV0X2Rldi0+aWQucHJvZHVjdCA9IDB4MDAwMTsKKwlpbnB1 dF9kZXYtPmlkLnZlcnNpb24gPSAweDAxMDA7CisKKwlpbnB1dF9kZXYtPmtl eWNvZGUgPSBrZXltYXA7CisJaW5wdXRfZGV2LT5rZXljb2Rlc2l6ZSA9IHNp emVvZih1bnNpZ25lZCBpbnQpOworCWlucHV0X2Rldi0+a2V5Y29kZW1heCA9 IHBkYXRhLT5rZXltYXBzaXplOworCisJcmV0ID0gaW5wdXRfcmVnaXN0ZXJf ZGV2aWNlKG9tYXBfa3AtPmlucHV0KTsKKwlpZiAocmV0IDwgMCkgeworCQlw cmludGsoS0VSTl9FUlIgIlVuYWJsZSB0byByZWdpc3RlciBvbWFwLWtleXBh ZCBpbnB1dCBkZXZpY2VcbiIpOworCQlnb3RvIGVycjM7CisJfQorCisJaWYg KG1hY2hpbmVfaXNfb21hcF9oMigpIHx8IG1hY2hpbmVfaXNfb21hcF9oMygp IHx8CisJICAgIG1hY2hpbmVfaXNfb21hcF9wZXJzZXVzMigpKSB7CisJCW9t YXBfd3JpdGV3KDB4ZmYsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9f R1BJT19ERUJPVU5DSU5HKTsKKwl9CisJLyogc2NhbiBjdXJyZW50IHN0YXR1 cyBhbmQgZW5hYmxlIGludGVycnVwdCAqLworCW9tYXBfa3Bfc2Nhbl9rZXlw YWQob21hcF9rcCwga2V5cGFkX3N0YXRlKTsKKwlpZiAoIWNwdV9pc19vbWFw MjR4eCgpKSB7CisJCW9tYXBfa3AtPmlycSA9IHBsYXRmb3JtX2dldF9pcnEo cGRldiwgMCk7CisJCWlmIChvbWFwX2twLT5pcnEgPj0gMCkgeworCQkJaWYg KHJlcXVlc3RfaXJxKG9tYXBfa3AtPmlycSwgb21hcF9rcF9pbnRlcnJ1cHQs IDAsCisJCQkJCSJvbWFwLWtleXBhZCIsIG9tYXBfa3ApIDwgMCkKKwkJCQln b3RvIGVycjQ7CisJCX0KKwkJb21hcF93cml0ZXcoMCwgT01BUF9NUFVJT19C QVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsKKwl9IGVsc2UgeworCQlm b3IgKGlycV9pZHggPSAwOyBpcnFfaWR4IDwgb21hcF9rcC0+cm93czsgaXJx X2lkeCsrKSB7CisJCQlpZiAocmVxdWVzdF9pcnEoT01BUF9HUElPX0lSUShy b3dfZ3Bpb3NbaXJxX2lkeF0pLAorCQkJCSAgICAgICAJb21hcF9rcF9pbnRl cnJ1cHQsCisJCQkJCUlSUUZfVFJJR0dFUl9GQUxMSU5HLAorCQkJCSAgICAg ICAJIm9tYXAta2V5cGFkIiwgb21hcF9rcCkgPCAwKQorCQkJCWdvdG8gZXJy NTsJCisJCX0KKwl9CisJcmV0dXJuIDA7CitlcnI1OgorCWZvciAoaSA9IGly cV9pZHgtMTsgaSA+PTA7IGktLSkgCisJCWZyZWVfaXJxKHJvd19ncGlvc1tp XSwgMCk7CitlcnI0OgorCWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKG9tYXBf a3AtPmlucHV0KTsKK2VycjM6CisJZGV2aWNlX3JlbW92ZV9maWxlKCZwZGV2 LT5kZXYsICZkZXZfYXR0cl9lbmFibGUpOworZXJyMjoKKwlmb3IgKGkgPSBy b3dfaWR4LTE7IGkgPj0wOyBpLS0pCisJCW9tYXBfZnJlZV9ncGlvKHJvd19n cGlvc1tpXSk7CitlcnIxOgorCWZvciAoaSA9IGNvbF9pZHgtMTsgaSA+PTA7 IGktLSkKKwkJb21hcF9mcmVlX2dwaW8oY29sX2dwaW9zW2ldKTsKKworCWtm cmVlKG9tYXBfa3ApOworCWlucHV0X2ZyZWVfZGV2aWNlKGlucHV0X2Rldik7 CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIGludCBvbWFwX2tw X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0 cnVjdCBvbWFwX2twICpvbWFwX2twID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo cGRldik7CisKKwkvKiBkaXNhYmxlIGtleXBhZCBpbnRlcnJ1cHQgaGFuZGxp bmcgKi8KKwl0YXNrbGV0X2Rpc2FibGUoJmtwX3Rhc2tsZXQpOworCWlmIChj cHVfaXNfb21hcDI0eHgoKSkgeworCQlpbnQgaTsKKwkJZm9yIChpID0gMDsg aSA8IG9tYXBfa3AtPmNvbHM7IGkrKykKKwkgICAgCQlvbWFwX2ZyZWVfZ3Bp byhjb2xfZ3Bpb3NbaV0pOworCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcC0+ cm93czsgaSsrKSB7CisJICAgIAkJb21hcF9mcmVlX2dwaW8ocm93X2dwaW9z W2ldKTsKKwkJCWZyZWVfaXJxKE9NQVBfR1BJT19JUlEocm93X2dwaW9zW2ld KSwgMCk7CisJCX0KKwl9IGVsc2UgeworCQlvbWFwX3dyaXRldygxLCBPTUFQ X01QVUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCRF9NQVNLSVQpOworCQlmcmVl X2lycShvbWFwX2twLT5pcnEsIDApOworCX0KKworCWRlbF90aW1lcl9zeW5j KCZvbWFwX2twLT50aW1lcik7CisJdGFza2xldF9raWxsKCZrcF90YXNrbGV0 KTsKKworCS8qIHVucmVnaXN0ZXIgZXZlcnl0aGluZyAqLworCWlucHV0X3Vu cmVnaXN0ZXJfZGV2aWNlKG9tYXBfa3AtPmlucHV0KTsKKworCWtmcmVlKG9t YXBfa3ApOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIG9tYXBfa3BfZHJpdmVyID0geworCS5wcm9iZQkJPSBv bWFwX2twX3Byb2JlLAorCS5yZW1vdmUJCT0gb21hcF9rcF9yZW1vdmUsCisJ LnN1c3BlbmQJPSBvbWFwX2twX3N1c3BlbmQsCisJLnJlc3VtZQkJPSBvbWFw X2twX3Jlc3VtZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAib21hcC1r ZXlwYWQiLAorCX0sCit9OworCitzdGF0aWMgaW50IF9fZGV2aW5pdCBvbWFw X2twX2luaXQodm9pZCkKK3sKKwlwcmludGsoS0VSTl9JTkZPICJPTUFQIEtl eXBhZCBEcml2ZXJcbiIpOworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVn aXN0ZXIoJm9tYXBfa3BfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19l eGl0IG9tYXBfa3BfZXhpdCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91 bnJlZ2lzdGVyKCZvbWFwX2twX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0 KG9tYXBfa3BfaW5pdCk7Cittb2R1bGVfZXhpdChvbWFwX2twX2V4aXQpOwor CitNT0RVTEVfQVVUSE9SKCJUaW1vIFRlcuRzIik7CitNT0RVTEVfREVTQ1JJ UFRJT04oIk9NQVAgS2V5cGFkIERyaXZlciIpOworTU9EVUxFX0xJQ0VOU0Uo IkdQTCIpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21h cC9rZXlwYWQuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAva2V5cGFk LmgKaW5kZXggOGEwMjNhOS4uODAwZmIxOSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9hc20tYXJtL2FyY2gtb21hcC9rZXlwYWQuaAorKysgYi9pbmNsdWRlL2Fz bS1hcm0vYXJjaC1vbWFwL2tleXBhZC5oCkBAIC0xNCw2ICsxNCw3IEBAIHN0 cnVjdCBvbWFwX2twX3BsYXRmb3JtX2RhdGEgewogCWludCByb3dzOwogCWlu dCBjb2xzOwogCWludCAqa2V5bWFwOworCXVuc2lnbmVkIGludCBrZXltYXBz aXplOwogCXVuc2lnbmVkIGludCByZXA6MTsKIAkvKiBzcGVjaWZpYyB0byBP TUFQMjQyeCovCiAJdW5zaWduZWQgaW50ICpyb3dfZ3Bpb3M7Ci0tIAoxLjMu MwoK --_----------=_1153915433137330--