From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751122AbWGVI0P (ORCPT ); Sat, 22 Jul 2006 04:26:15 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751184AbWGVI0P (ORCPT ); Sat, 22 Jul 2006 04:26:15 -0400 Received: from out4.smtp.messagingengine.com ([66.111.4.28]:35535 "EHLO out4.smtp.messagingengine.com") by vger.kernel.org with ESMTP id S1751122AbWGVI0O (ORCPT ); Sat, 22 Jul 2006 04:26:14 -0400 Message-Id: <1153556774.4920.266617704@webmail.messagingengine.com> X-Sasl-Enc: RyaYEgO3y7OZALm7nelCZCkOjuZxXwra6xAouSrwcJbR 1153556774 From: "Komal Shah" To: linux-input@atrey.karlin.mff.cuni.cz Cc: dtor_core@ameritech.net, tony@atomide.com, ext-timo.teras@nokia.com, juha.yrjola@solidboot.com, linux-kernel@vger.kernel.org, akpm@osdl.org Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_115355677449200"; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Subject: [PATCH] OMAP: Keypad driver Date: Sat, 22 Jul 2006 01:26:14 -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. --_----------=_115355677449200 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: Sat, 22 Jul 2006 08:26:14 UT Hi, Please review the attached TI OMAP Keypad driver patch and consider it for -mm submission. Thanx. ---Komal Shah http://komalshah.blogspot.com -- http://www.fastmail.fm - The way an email service should be --_----------=_115355677449200 Content-Disposition: attachment; filename="0001-OMAP-Keypad-driver.patch" Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="0001-OMAP-Keypad-driver.patch" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Date: Sat, 22 Jul 2006 08:26:14 UT RnJvbSBub2JvZHkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtv bWFsIFNoYWggPGtvbWFsX3NoYWg4MDIwMDNAeWFob28uY29tPgpEYXRlOiBX ZWQsIDIxIEp1biAyMDA2IDE4OjEyOjM4ICswNTMwClN1YmplY3Q6IFtQQVRD SF0gT01BUDogS2V5cGFkIGRyaXZlcgoKVGhpcyBwYXRjaCBhZGRzIHN1cHBv cnQgZm9yIGtleXBhZCBkcml2ZXIgcnVubmluZyBvbiBkaWZmZXJlbnQKT01B UCBib2FyZHMgbGlrZSBPU0ssIEgyLCBIMywgSDQsIFBlcnN1YXMgYW5kIE5v a2lhIDc3MC4KU2lnbmVkLW9mZi1ieTogS29tYWwgU2hhaCA8a29tYWxfc2hh aDgwMjAwM0B5YWhvby5jb20+CgotLS0KCiBkcml2ZXJzL2lucHV0L2tleWJv YXJkL0tjb25maWcgICAgICAgfCAgICA5ICsKIGRyaXZlcnMvaW5wdXQva2V5 Ym9hcmQvTWFrZWZpbGUgICAgICB8ICAgIDEgCiBkcml2ZXJzL2lucHV0L2tl eWJvYXJkL29tYXAta2V5cGFkLmMgfCAgNDU4ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNDY4IGluc2Vy dGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFwLWtleXBhZC5jCgpiZmFhOTFh OWI5YWEyOGRjNjQ3YmI3NGQzMWE3NjI1NTg3ZGRiYzU2CmRpZmYgLS1naXQg YS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL0tjb25maWcgYi9kcml2ZXJzL2lu cHV0L2tleWJvYXJkL0tjb25maWcKaW5kZXggYTlkZGE1Ni4uODNlYWMzYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9LY29uZmlnCisr KyBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvS2NvbmZpZwpAQCAtMTgzLDQg KzE4MywxMyBAQCBjb25maWcgS0VZQk9BUkRfSElMCiAJICBUaGlzIGRyaXZl ciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEhJTC1rZXlib2FyZHMgYXR0YWNo ZWQKIAkgIHRvIHlvdXIgbWFjaGluZSwgc28gbm9ybWFsbHkgeW91IHNob3Vs ZCBzYXkgWSBoZXJlLgogCitjb25maWcgS0VZQk9BUkRfT01BUAorCXRyaXN0 YXRlICJUSSBPTUFQIGtleXBhZCBzdXBwb3J0IgorCWRlcGVuZHMgb24gKEFS Q0hfT01BUDEgfHwgQVJDSF9PTUFQMikKKwloZWxwCisJICBTYXkgWSBoZXJl IGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgT01BUCBrZXlwYWQuCisKKwkgIFRv IGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhl cmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG9tYXAta2V5cGFk LgorCiBlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9rZXlib2Fy ZC9NYWtlZmlsZSBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvTWFrZWZpbGUK aW5kZXggMjcwODE2Ny4uYjI2NTM5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9p bnB1dC9rZXlib2FyZC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2lucHV0L2tl eWJvYXJkL01ha2VmaWxlCkBAIC0xNSw0ICsxNSw1IEBAIG9iai0kKENPTkZJ R19LRVlCT0FSRF9DT1JHSSkJCSs9IGNvcmdpa2IKIG9iai0kKENPTkZJR19L RVlCT0FSRF9TUElUWikJCSs9IHNwaXR6a2JkLm8KIG9iai0kKENPTkZJR19L RVlCT0FSRF9ISUwpCQkrPSBoaWxfa2JkLm8KIG9iai0kKENPTkZJR19LRVlC T0FSRF9ISUxfT0xEKQkJKz0gaGlsa2JkLm8KK29iai0kKENPTkZJR19LRVlC T0FSRF9PTUFQKSAgICAgICAgICAgICArPSBvbWFwLWtleXBhZC5vCiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvb21hcC1rZXlwYWQu YyBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvb21hcC1rZXlwYWQuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDFlYzZhCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFwLWtl eXBhZC5jCkBAIC0wLDAgKzEsNDU4IEBACisvKgorICogbGludXgvZHJpdmVy cy9jaGFyL29tYXAta2V5cGFkLmMKKyAqCisgKiBPTUFQIEtleXBhZCBEcml2 ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTm9raWEgQ29ycG9yYXRp b24KKyAqIFdyaXR0ZW4gYnkgVGltbyBUZXLkcyA8ZXh0LXRpbW8udGVyYXNA bm9raWEuY29tPgorICoKKyAqIEFkZGVkIHN1cHBvcnQgZm9yIEgyICYgSDMg S2V5cGFkCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGV4YXMgSW5zdHJ1bWVu dHMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisg KiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx LTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgor I2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRl cnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUg PGxpbnV4L2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cisj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2lu Y2x1ZGUgPGFzbS9hcmNoL2lycXMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9n cGlvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKyNpbmNs dWRlIDxhc20vYXJjaC9rZXlwYWQuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9t ZW5lbGF1cy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFz bS9lcnJuby5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5j bHVkZSA8YXNtL2FyY2gvbXV4Lmg+CisKKyN1bmRlZiBORVdfQk9BUkRfTEVB Uk5JTkdfTU9ERQorCitzdGF0aWMgdm9pZCBvbWFwX2twX3Rhc2tsZXQodW5z aWduZWQgbG9uZyk7CitzdGF0aWMgdm9pZCBvbWFwX2twX3RpbWVyKHVuc2ln bmVkIGxvbmcpOworCitzdGF0aWMgdW5zaWduZWQgY2hhciBrZXlwYWRfc3Rh dGVbOF07CitzdGF0aWMgREVGSU5FX01VVEVYKGtwX2VuYWJsZV9tdXRleCk7 CitzdGF0aWMgaW50IGtwX2VuYWJsZSA9IDE7CitzdGF0aWMgaW50IGtwX2N1 cl9ncm91cCA9IC0xOworCitzdHJ1Y3Qgb21hcF9rcCB7CisJc3RydWN0IGlu cHV0X2RldiAqaW5wdXQ7CisJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7CisJ aW50IGlycTsKKwl1bnNpZ25lZCBpbnQgcm93czsKKwl1bnNpZ25lZCBpbnQg Y29sczsKK307CisKK0RFQ0xBUkVfVEFTS0xFVF9ESVNBQkxFRChrcF90YXNr bGV0LCBvbWFwX2twX3Rhc2tsZXQsIDApOworCitzdGF0aWMgaW50ICprZXlt YXA7CitzdGF0aWMgdW5zaWduZWQgaW50ICpyb3dfZ3Bpb3M7CitzdGF0aWMg dW5zaWduZWQgaW50ICpjb2xfZ3Bpb3M7CisKKyNpZmRlZiBDT05GSUdfQVJD SF9PTUFQMgorc3RhdGljIHZvaWQgc2V0X2NvbF9ncGlvX3ZhbChzdHJ1Y3Qg b21hcF9rcCAqb21hcF9rcCwgdTggdmFsdWUpCit7CisJaW50IGNvbDsKKwlm b3IgKGNvbCA9IDA7IGNvbCA8IG9tYXBfa3AtPmNvbHM7IGNvbCsrKSB7CisJ CWlmICh2YWx1ZSAmICgxIDw8IGNvbCkpCisJCQlvbWFwX3NldF9ncGlvX2Rh dGFvdXQoY29sX2dwaW9zW2NvbF0sIDEpOworCQllbHNlCisJCQlvbWFwX3Nl dF9ncGlvX2RhdGFvdXQoY29sX2dwaW9zW2NvbF0sIDApOworCX0KK30KKwor c3RhdGljIHU4IGdldF9yb3dfZ3Bpb192YWwoc3RydWN0IG9tYXBfa3AgKm9t YXBfa3ApCit7CisJaW50IHJvdzsKKwl1OCB2YWx1ZSA9IDA7CisKKwlmb3Ig KHJvdyA9IDA7IHJvdyA8IG9tYXBfa3AtPnJvd3M7IHJvdysrKSB7CisJCWlm IChvbWFwX2dldF9ncGlvX2RhdGFpbihyb3dfZ3Bpb3Nbcm93XSkpCisJCQl2 YWx1ZSB8PSAoMSA8PCByb3cpOworCX0KKwlyZXR1cm4gdmFsdWU7Cit9Cisj ZWxzZQorI2RlZmluZQkJc2V0X2NvbF9ncGlvX3ZhbCh4LCB5KQlkbyB7fSB3 aGlsZSAoMCkKKyNkZWZpbmUJCWdldF9yb3dfZ3Bpb192YWwoeCkJMAorI2Vu ZGlmCisKK3N0YXRpYyBpcnFyZXR1cm5fdCBvbWFwX2twX2ludGVycnVwdChp bnQgaXJxLCB2b2lkICpkZXZfaWQsCisJCQkJICAgICBzdHJ1Y3QgcHRfcmVn cyAqcmVncykKK3sKKwlzdHJ1Y3Qgb21hcF9rcCAqb21hcF9rcCA9IGRldl9p ZDsKKworCS8qIGRpc2FibGUga2V5Ym9hcmQgaW50ZXJydXB0IGFuZCBzY2hl ZHVsZSBmb3IgaGFuZGxpbmcgKi8KKwlpZiAoY3B1X2lzX29tYXAyNHh4KCkp IHsKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IGkgPCBvbWFwX2twLT5yb3dz OyBpKyspCisJCQlkaXNhYmxlX2lycShPTUFQX0dQSU9fSVJRKHJvd19ncGlv c1tpXSkpOworCX0gZWxzZQorCQkvKiBkaXNhYmxlIGtleWJvYXJkIGludGVy cnVwdCBhbmQgc2NoZWR1bGUgZm9yIGhhbmRsaW5nICovCisJCW9tYXBfd3Jp dGV3KDEsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JEX01BU0tJ VCk7CisKKwl0YXNrbGV0X3NjaGVkdWxlKCZrcF90YXNrbGV0KTsKKworCXJl dHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIHZvaWQgb21hcF9rcF90 aW1lcih1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJdGFza2xldF9zY2hlZHVs ZSgma3BfdGFza2xldCk7Cit9CisKK3N0YXRpYyB2b2lkIG9tYXBfa3Bfc2Nh bl9rZXlwYWQoc3RydWN0IG9tYXBfa3AgKm9tYXBfa3AsIHVuc2lnbmVkIGNo YXIgKnN0YXRlKQoreworCWludCBjb2wgPSAwOworCisJLyogcmVhZCB0aGUg a2V5cGFkIHN0YXR1cyAqLworCWlmIChjcHVfaXNfb21hcDI0eHgoKSkgewor CQlpbnQgaTsKKwkJZm9yIChpID0gMDsgaSA8IG9tYXBfa3AtPnJvd3M7IGkr KykKKwkJCWRpc2FibGVfaXJxKE9NQVBfR1BJT19JUlEocm93X2dwaW9zW2ld KSk7CisJfSBlbHNlCisJCS8qIGRpc2FibGUga2V5Ym9hcmQgaW50ZXJydXB0 IGFuZCBzY2hlZHVsZSBmb3IgaGFuZGxpbmcgKi8KKwkJb21hcF93cml0ZXco MSwgT01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsK KworCWlmICghY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJLyogcmVhZCB0aGUg a2V5cGFkIHN0YXR1cyAqLworCQlvbWFwX3dyaXRldygweGZmLCBPTUFQX01Q VUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCQyk7CisJCWZvciAoY29sID0gMDsg Y29sIDwgb21hcF9rcC0+Y29sczsgY29sKyspIHsKKwkJCW9tYXBfd3JpdGV3 KH4oMSA8PCBjb2wpICYgMHhmZiwKKwkJCQkgICAgT01BUF9NUFVJT19CQVNF ICsgT01BUF9NUFVJT19LQkMpOworCisJCQlpZiAobWFjaGluZV9pc19vbWFw X29zaygpIHx8IG1hY2hpbmVfaXNfb21hcF9oMigpCisJCQkgICAJIHx8IG1h Y2hpbmVfaXNfb21hcF9oMygpKQorCQkJCXVkZWxheSg5KTsKKwkJCWVsc2UK KwkJCQl1ZGVsYXkoNCk7CisJCQlzdGF0ZVtjb2xdID0gfm9tYXBfcmVhZHco T01BUF9NUFVJT19CQVNFICsKKwkJCQkJCSBPTUFQX01QVUlPX0tCUl9MQVRD SCkgJiAweGZmOworCQl9CisJCW9tYXBfd3JpdGV3KDB4MDAsIE9NQVBfTVBV SU9fQkFTRSArIE9NQVBfTVBVSU9fS0JDKTsKKwkJdWRlbGF5KDIpOworCX0g ZWxzZSB7CisJCS8qIHJlYWQgdGhlIGtleXBhZCBzdGF0dXMgKi8KKwkJZm9y IChjb2wgPSAwOyBjb2wgPCBvbWFwX2twLT5jb2xzOyBjb2wrKykgeworCQkJ c2V0X2NvbF9ncGlvX3ZhbChvbWFwX2twLCB+KDEgPDwgY29sKSk7CisJCQlz dGF0ZVtjb2xdID0gfihnZXRfcm93X2dwaW9fdmFsKG9tYXBfa3ApKSAmIDB4 M2Y7CisJCX0KKwkJc2V0X2NvbF9ncGlvX3ZhbChvbWFwX2twLCAwKTsKKwl9 Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IG9tYXBfa3BfZmluZF9rZXkoaW50 IGNvbCwgaW50IHJvdykKK3sKKwlpbnQgaSwga2V5OworCisJa2V5ID0gS0VZ KGNvbCwgcm93LCAwKTsKKwlmb3IgKGkgPSAwOyBrZXltYXBbaV0gIT0gMDsg aSsrKQorCQlpZiAoKGtleW1hcFtpXSAmIDB4ZmYwMDAwMDApID09IGtleSkK KwkJCXJldHVybiBrZXltYXBbaV0gJiAweDAwZmZmZmZmOworCXJldHVybiAt MTsKK30KKworc3RhdGljIHZvaWQgb21hcF9rcF90YXNrbGV0KHVuc2lnbmVk IGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3Qgb21hcF9rcCAqb21hcF9rcF9kYXRh ID0gKHN0cnVjdCBvbWFwX2twICopIGRhdGE7CisJdW5zaWduZWQgY2hhciBu ZXdfc3RhdGVbOF0sIGNoYW5nZWQsIGtleV9kb3duID0gMDsKKwlpbnQgY29s LCByb3c7CisJaW50IHNwdXJpb3VzID0gMDsKKworCS8qIGNoZWNrIGZvciBh bnkgY2hhbmdlcyAqLworCW9tYXBfa3Bfc2Nhbl9rZXlwYWQob21hcF9rcF9k YXRhLCBuZXdfc3RhdGUpOworCisJLyogY2hlY2sgZm9yIGNoYW5nZXMgYW5k IHByaW50IHRob3NlICovCisJZm9yIChjb2wgPSAwOyBjb2wgPCBvbWFwX2tw X2RhdGEtPmNvbHM7IGNvbCsrKSB7CisJCWNoYW5nZWQgPSBuZXdfc3RhdGVb Y29sXSBeIGtleXBhZF9zdGF0ZVtjb2xdOworCQlrZXlfZG93biB8PSBuZXdf c3RhdGVbY29sXTsKKwkJaWYgKGNoYW5nZWQgPT0gMCkKKwkJCWNvbnRpbnVl OworCisJCWZvciAocm93ID0gMDsgcm93IDwgb21hcF9rcF9kYXRhLT5yb3dz OyByb3crKykgeworCQkJaW50IGtleTsKKwkJCWlmICghKGNoYW5nZWQgJiAo MSA8PCByb3cpKSkKKwkJCQljb250aW51ZTsKKyNpZmRlZiBORVdfQk9BUkRf TEVBUk5JTkdfTU9ERQorCQkJcHJpbnRrKEtFUk5fSU5GTyAib21hcC1rZXlw YWQ6IGtleSAlZC0lZCAlc1xuIiwgY29sLAorCQkJICAgICAgIHJvdywgKG5l d19zdGF0ZVtjb2xdICYgKDEgPDwgcm93KSkgPworCQkJICAgICAgICJwcmVz c2VkIiA6ICJyZWxlYXNlZCIpOworI2Vsc2UKKwkJCWtleSA9IG9tYXBfa3Bf ZmluZF9rZXkoY29sLCByb3cpOworCQkJaWYgKGtleSA8IDApIHsKKwkJCQlw cmludGsoS0VSTl9XQVJOSU5HCisJCQkJICAgICAgIm9tYXAta2V5cGFkOiBT cHVyaW91cyBrZXkgZXZlbnQgJWQtJWRcbiIsCisJCQkJICAgICAgIGNvbCwg cm93KTsKKwkJCQkvKiBXZSBzY2FuIGFnYWluIGFmdGVyIGEgY291cGxlIG9m IHNlY29uZHMgKi8KKwkJCQlzcHVyaW91cyA9IDE7CisJCQkJY29udGludWU7 CisJCQl9CisKKwkJCWlmICghKGtwX2N1cl9ncm91cCA9PSAoa2V5ICYgR1JP VVBfTUFTSykgfHwKKwkJCSAgICAgIGtwX2N1cl9ncm91cCA9PSAtMSkpCisJ CQkJY29udGludWU7CisKKwkJCWtwX2N1cl9ncm91cCA9IGtleSAmIEdST1VQ X01BU0s7CisJCQlpbnB1dF9yZXBvcnRfa2V5KG9tYXBfa3BfZGF0YS0+aW5w dXQsIGtleSAmIH5HUk9VUF9NQVNLLAorCQkJCQkgISEobmV3X3N0YXRlW2Nv bF0gJiAoMSA8PCByb3cpKSk7CisjZW5kaWYKKwkJfQorCX0KKwltZW1jcHko a2V5cGFkX3N0YXRlLCBuZXdfc3RhdGUsIHNpemVvZihrZXlwYWRfc3RhdGUp KTsKKworCWlmIChrZXlfZG93bikgeworICAgICAgICAgICAgICAgIGludCBk ZWxheSA9IEhaIC8gMjA7CisJCS8qIHNvbWUga2V5IGlzIHByZXNzZWQgLSBr ZWVwIGlycSBkaXNhYmxlZCBhbmQgdXNlIHRpbWVyCisJCSAqIHRvIHBvbGwg dGhlIGtleXBhZCAqLworCQlpZiAoc3B1cmlvdXMpCisJCQlkZWxheSA9IDIg KiBIWjsKKwkJbW9kX3RpbWVyKCZvbWFwX2twX2RhdGEtPnRpbWVyLCBqaWZm aWVzICsgZGVsYXkpOworCX0gZWxzZSB7CisJCS8qIGVuYWJsZSBpbnRlcnJ1 cHRzICovCisJCWlmIChjcHVfaXNfb21hcDI0eHgoKSkgeworCQkJaW50IGk7 CisJCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcF9kYXRhLT5yb3dzOyBpKysp CisJCQkJZW5hYmxlX2lycShPTUFQX0dQSU9fSVJRKHJvd19ncGlvc1tpXSkp OworCQl9IGVsc2UgeworCQkJb21hcF93cml0ZXcoMCwgT01BUF9NUFVJT19C QVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsKKwkJCWtwX2N1cl9ncm91 cCA9IC0xOworCQl9CisgCX0KK30KKworc3RhdGljIHNzaXplX3Qgb21hcF9r cF9lbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwly ZXR1cm4gc3ByaW50ZihidWYsICIldVxuIiwga3BfZW5hYmxlKTsKK30KKwor c3RhdGljIHNzaXplX3Qgb21hcF9rcF9lbmFibGVfc3RvcmUoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJ CQkgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJaW50 IHN0YXRlOworCisJaWYgKHNzY2FuZihidWYsICIldSIsICZzdGF0ZSkgIT0g MSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoKHN0YXRlICE9IDEpICYm IChzdGF0ZSAhPSAwKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9s b2NrKCZrcF9lbmFibGVfbXV0ZXgpOworCWlmIChzdGF0ZSAhPSBrcF9lbmFi bGUpIHsKKwkJaWYgKHN0YXRlKQorCQkJZW5hYmxlX2lycShJTlRfS0VZQk9B UkQpOworCQllbHNlCisJCQlkaXNhYmxlX2lycShJTlRfS0VZQk9BUkQpOwor CQlrcF9lbmFibGUgPSBzdGF0ZTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZrcF9l bmFibGVfbXV0ZXgpOworCisJcmV0dXJuIHN0cm5sZW4oYnVmLCBjb3VudCk7 Cit9CisKK3N0YXRpYyBERVZJQ0VfQVRUUihlbmFibGUsIFNfSVJVR08gfCBT X0lXVVNSLCBvbWFwX2twX2VuYWJsZV9zaG93LCBvbWFwX2twX2VuYWJsZV9z dG9yZSk7CisKKyNpZmRlZiBDT05GSUdfUE0KK3N0YXRpYyBpbnQgb21hcF9r cF9zdXNwZW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldiwgcG1fbWVz c2FnZV90IHN0YXRlKQoreworCS8qIE5vdGhpbmcgeWV0ICovCisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBvbWFwX2twX3Jlc3VtZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpkZXYpCit7CisJLyogTm90aGluZyB5ZXQgKi8K KworCXJldHVybiAwOworfQorI2Vsc2UKKyNkZWZpbmUgb21hcF9rcF9zdXNw ZW5kCU5VTEwKKyNkZWZpbmUgb21hcF9rcF9yZXN1bWUJTlVMTAorI2VuZGlm CisKK3N0YXRpYyBpbnQgX19pbml0IG9tYXBfa3BfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qgb21hcF9rcCAqb21h cF9rcDsKKwlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXY7CisJc3RydWN0 IG9tYXBfa3BfcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSAgcGRldi0+ZGV2LnBs YXRmb3JtX2RhdGE7CisJaW50IGk7CisKKwlpZiAoIXBkYXRhLT5yb3dzIHx8 ICFwZGF0YS0+Y29scyB8fCAhcGRhdGEtPmtleW1hcCkgeworCQlwcmludGso S0VSTl9FUlIgIk5vIHJvd3MsIGNvbHMgb3Iga2V5bWFwIGZyb20gcGRhdGFc biIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlvbWFwX2twID0ga3ph bGxvYyhzaXplb2Yoc3RydWN0IG9tYXBfa3ApLCBHRlBfS0VSTkVMKTsKKwlp bnB1dF9kZXYgPSBpbnB1dF9hbGxvY2F0ZV9kZXZpY2UoKTsKKwlpZiAoIW9t YXBfa3AgfHwgIWlucHV0X2RldikgeworCQlrZnJlZShvbWFwX2twKTsKKwkJ aW5wdXRfZnJlZV9kZXZpY2UoaW5wdXRfZGV2KTsKKwkJcmV0dXJuIC1FTk9N RU07CisJfQorCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgb21hcF9r cCk7CisKKwlvbWFwX2twLT5pbnB1dCA9IGlucHV0X2RldjsKKworCS8qIERp c2FibGUgdGhlIGludGVycnVwdCBmb3IgdGhlIE1QVUlPIGtleWJvYXJkICov CisJaWYgKCFjcHVfaXNfb21hcDI0eHgoKSkKKwkJb21hcF93cml0ZXcoMSwg T01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsKKwor CWtleW1hcCA9IHBkYXRhLT5rZXltYXA7CisKKwlpZiAocGRhdGEtPnJlcCkK KwkJc2V0X2JpdChFVl9SRVAsIGlucHV0X2Rldi0+ZXZiaXQpOworCisJaWYg KHBkYXRhLT5yb3dfZ3Bpb3MgJiYgcGRhdGEtPmNvbF9ncGlvcykgeworCQly b3dfZ3Bpb3MgPSBwZGF0YS0+cm93X2dwaW9zOworCQljb2xfZ3Bpb3MgPSBw ZGF0YS0+Y29sX2dwaW9zOworCX0KKworCW9tYXBfa3AtPnJvd3MgPSBwZGF0 YS0+cm93czsKKwlvbWFwX2twLT5jb2xzID0gcGRhdGEtPmNvbHM7CisKKwlp ZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJLyogQ29sczogb3V0cHV0cyAq LworCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcC0+Y29sczsgaSsrKSB7CisJ CQlpZiAob21hcF9yZXF1ZXN0X2dwaW8oY29sX2dwaW9zW2ldKSA8IDApIHsK KwkJCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byByZXF1ZXN0IgorCQkJ CSAgICAgICAiR1BJTyVkIGZvciBrZXlwYWRcbiIsCisJCQkJICAgICAgIGNv bF9ncGlvc1tpXSk7CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQlv bWFwX3NldF9ncGlvX2RpcmVjdGlvbihjb2xfZ3Bpb3NbaV0sIDApOworCQl9 CisJCS8qIFJvd3M6IGlucHV0cyAqLworCQlmb3IgKGkgPSAwOyBpIDwgb21h cF9rcC0+cm93czsgaSsrKSB7CisJCQlpZiAob21hcF9yZXF1ZXN0X2dwaW8o cm93X2dwaW9zW2ldKSA8IDApIHsKKwkJCQlwcmludGsoS0VSTl9FUlIgIkZh aWxlZCB0byByZXF1ZXN0IgorCQkJCSAgICAgICAiR1BJTyVkIGZvciBrZXlw YWRcbiIsCisJCQkJICAgICAgIHJvd19ncGlvc1tpXSk7CisJCQkJcmV0dXJu IC1FSU5WQUw7CisJCQl9CisJCQlvbWFwX3NldF9ncGlvX2RpcmVjdGlvbihy b3dfZ3Bpb3NbaV0sIDEpOworCQl9CisJfQorCisJaW5pdF90aW1lcigmb21h cF9rcC0+dGltZXIpOworCW9tYXBfa3AtPnRpbWVyLmZ1bmN0aW9uID0gb21h cF9rcF90aW1lcjsKKwlvbWFwX2twLT50aW1lci5kYXRhID0gKHVuc2lnbmVk IGxvbmcpIG9tYXBfa3A7CisKKwkvKiBnZXQgdGhlIGlycSBhbmQgaW5pdCB0 aW1lciovCisJdGFza2xldF9lbmFibGUoJmtwX3Rhc2tsZXQpOworCWtwX3Rh c2tsZXQuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBvbWFwX2twOworCisJb21h cF9rcC0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKKwlpZiAo b21hcF9rcC0+aXJxID49IDApIHsKKwkJaWYgKHJlcXVlc3RfaXJxKG9tYXBf a3AtPmlycSwgb21hcF9rcF9pbnRlcnJ1cHQsIDAsCisJCQkJIm9tYXAta2V5 cGFkIiwgb21hcF9rcCkgPCAwKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQor CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZwZGV2LT5kZXYsICZkZXZfYXR0cl9l bmFibGUpOworCisJLyogc2V0dXAgaW5wdXQgZGV2aWNlICovCisJc2V0X2Jp dChFVl9LRVksIGlucHV0X2Rldi0+ZXZiaXQpOworCWZvciAoaSA9IDA7IGtl eW1hcFtpXSAhPSAwOyBpKyspCisJCXNldF9iaXQoa2V5bWFwW2ldICYgS0VZ X01BWCwgaW5wdXRfZGV2LT5rZXliaXQpOworCWlucHV0X2Rldi0+bmFtZSA9 ICJvbWFwLWtleXBhZCI7CisJaW5wdXRfZGV2LT5jZGV2LmRldiA9ICZwZGV2 LT5kZXY7CisJaW5wdXRfZGV2LT5wcml2YXRlID0gb21hcF9rcDsKKwlpbnB1 dF9yZWdpc3Rlcl9kZXZpY2Uob21hcF9rcC0+aW5wdXQpOworCisJaWYgKG1h Y2hpbmVfaXNfb21hcF9oMigpIHx8IG1hY2hpbmVfaXNfb21hcF9oMygpIHx8 CisJICAgIG1hY2hpbmVfaXNfb21hcF9wZXJzZXVzMigpKSB7CisJCW9tYXBf d3JpdGV3KDB4ZmYsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fR1BJ T19ERUJPVU5DSU5HKTsKKwl9CisJLyogc2NhbiBjdXJyZW50IHN0YXR1cyBh bmQgZW5hYmxlIGludGVycnVwdCAqLworCW9tYXBfa3Bfc2Nhbl9rZXlwYWQo b21hcF9rcCwga2V5cGFkX3N0YXRlKTsKKwlpZiAoIWNwdV9pc19vbWFwMjR4 eCgpKQorCQlvbWFwX3dyaXRldygwLCBPTUFQX01QVUlPX0JBU0UgKyBPTUFQ X01QVUlPX0tCRF9NQVNLSVQpOworCWVsc2UgeworCQlmb3IgKGkgPSAwOyBp IDwgb21hcF9rcC0+cm93czsgaSsrKSB7CisJCQlpZiAocmVxdWVzdF9pcnEo T01BUF9HUElPX0lSUShyb3dfZ3Bpb3NbaV0pLAorCQkJCSAgICAgICAJb21h cF9rcF9pbnRlcnJ1cHQsCisJCQkJCVNBX1RSSUdHRVJfRkFMTElORywKKwkJ CQkgICAgICAgCSJvbWFwLWtleXBhZCIsIG9tYXBfa3ApIDwgMCkKKwkJCQly ZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IG9tYXBfa3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCit7CisJc3RydWN0IG9tYXBfa3AgKm9tYXBfa3AgPSBwbGF0 Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCS8qIGRpc2FibGUga2V5cGFk IGludGVycnVwdCBoYW5kbGluZyAqLworCXRhc2tsZXRfZGlzYWJsZSgma3Bf dGFza2xldCk7CisJaWYgKGNwdV9pc19vbWFwMjR4eCgpKSB7CisJCWludCBp OworCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcC0+Y29sczsgaSsrKQorCSAg ICAJCW9tYXBfZnJlZV9ncGlvKGNvbF9ncGlvc1tpXSk7CisJCWZvciAoaSA9 IDA7IGkgPCBvbWFwX2twLT5yb3dzOyBpKyspIHsKKwkgICAgCQlvbWFwX2Zy ZWVfZ3Bpbyhyb3dfZ3Bpb3NbaV0pOworCQkJZnJlZV9pcnEoT01BUF9HUElP X0lSUShyb3dfZ3Bpb3NbaV0pLCAwKTsKKwkJfQorCX0gZWxzZSB7CisJCW9t YXBfd3JpdGV3KDEsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JE X01BU0tJVCk7CisJCWZyZWVfaXJxKG9tYXBfa3AtPmlycSwgMCk7CisJfQor CisJZGVsX3RpbWVyX3N5bmMoJm9tYXBfa3AtPnRpbWVyKTsKKworCS8qIHVu cmVnaXN0ZXIgZXZlcnl0aGluZyAqLworCWlucHV0X3VucmVnaXN0ZXJfZGV2 aWNlKG9tYXBfa3AtPmlucHV0KTsKKworCWtmcmVlKG9tYXBfa3ApOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVy IG9tYXBfa3BfZHJpdmVyID0geworCS5wcm9iZQkJPSBvbWFwX2twX3Byb2Jl LAorCS5yZW1vdmUJCT0gb21hcF9rcF9yZW1vdmUsCisJLnN1c3BlbmQJPSBv bWFwX2twX3N1c3BlbmQsCisJLnJlc3VtZQkJPSBvbWFwX2twX3Jlc3VtZSwK KwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAib21hcC1rZXlwYWQiLAorCX0s Cit9OworCitzdGF0aWMgaW50IF9fZGV2aW5pdCBvbWFwX2twX2luaXQodm9p ZCkKK3sKKwlwcmludGsoS0VSTl9JTkZPICJPTUFQIEtleXBhZCBEcml2ZXJc biIpOworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJm9tYXBf a3BfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IG9tYXBfa3Bf ZXhpdCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZv bWFwX2twX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KG9tYXBfa3BfaW5p dCk7Cittb2R1bGVfZXhpdChvbWFwX2twX2V4aXQpOworCitNT0RVTEVfQVVU SE9SKCJUaW1vIFRlcuRzIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk9NQVAg S2V5cGFkIERyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotLSAK MS4zLjMKCg== --_----------=_115355677449200--