From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751445AbWGYK53 (ORCPT ); Tue, 25 Jul 2006 06:57:29 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751454AbWGYK53 (ORCPT ); Tue, 25 Jul 2006 06:57:29 -0400 Received: from out5.smtp.messagingengine.com ([66.111.4.29]:62108 "EHLO out5.smtp.messagingengine.com") by vger.kernel.org with ESMTP id S1751445AbWGYK52 (ORCPT ); Tue, 25 Jul 2006 06:57:28 -0400 Message-Id: <1153825050.6486.266809347@webmail.messagingengine.com> X-Sasl-Enc: ot4tdwOsmNbrgOtU1+7uZVJBkEQ55tgDpOV0Z6n+7OLq 1153825050 From: "Komal Shah" To: akpm@osdl.org, juha.yrjola@solidboot.com, tony@atomide.com, ext-timo.teras@nokia.com Cc: dtor_core@ameritech.net, r-woddruff2@ti.com, linux-input@atrey.karlin.mff.cuni.cz, linux-kernel@vger.kernel.org Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_115382505064860"; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Subject: [PATCH] OMAP: Add keypad driver #2 Date: Tue, 25 Jul 2006 03:57:30 -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. --_----------=_115382505064860 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: Tue, 25 Jul 2006 10:57:30 UT Andrew/Tony/Richard, This is a revised patch as per the review comments from the Andrew on thread: http://lkml.org/lkml/2006/7/22/19 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 --_----------=_115382505064860 Content-Disposition: attachment; filename="0002-OMAP-Add-keypad-driver.patch" Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="0002-OMAP-Add-keypad-driver.patch" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Date: Tue, 25 Jul 2006 10:57:30 UT RnJvbSBub2JvZHkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtv bWFsIFNoYWggPGtvbWFsX3NoYWg4MDIwMDNAeWFob28uY29tPgpEYXRlOiBU dWUsIDI1IEp1bCAyMDA2IDIxOjQ2OjI2ICswNTMwClN1YmplY3Q6IFtQQVRD SF0gT01BUDogQWRkIGtleXBhZCBkcml2ZXIKClRoaXMgcGF0Y2ggYWRkcyBz dXBwb3J0IGZvciBrZXlwYWQgZHJpdmVyIHJ1bm5pbmcgb24gZGlmZmVyZW50 ClRJIE9NQVAoaHR0cDovL3d3dy50aS5jb20vb21hcCkgcHJvY2Vzc29yIGJh c2VkIGJvYXJkcyBsaWtlCk9TSywgSDIsIEgzLCBINCwgUGVyc3VhcyBhbmQg Tm9raWEgNzcwLgoKU2lnbmVkLW9mZi1ieTogS29tYWwgU2hhaCA8a29tYWxf c2hhaDgwMjAwM0B5YWhvby5jb20+CgotLS0KCiBkcml2ZXJzL2lucHV0L2tl eWJvYXJkL0tjb25maWcgICAgICAgfCAgICA5ICsKIGRyaXZlcnMvaW5wdXQv a2V5Ym9hcmQvTWFrZWZpbGUgICAgICB8ICAgIDEgCiBkcml2ZXJzL2lucHV0 L2tleWJvYXJkL29tYXAta2V5cGFkLmMgfCAgNDU3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNDY3IGlu c2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFwLWtleXBhZC5jCgpiODcw Y2NiNzczOWYxNmUzOThjNzU5MGQ4MmViNDhlODdhNThkYTM3CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL0tjb25maWcgYi9kcml2ZXJz L2lucHV0L2tleWJvYXJkL0tjb25maWcKaW5kZXggYTlkZGE1Ni4uODNlYWMz YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9LY29uZmln CisrKyBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvS2NvbmZpZwpAQCAtMTgz LDQgKzE4MywxMyBAQCBjb25maWcgS0VZQk9BUkRfSElMCiAJICBUaGlzIGRy aXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEhJTC1rZXlib2FyZHMgYXR0 YWNoZWQKIAkgIHRvIHlvdXIgbWFjaGluZSwgc28gbm9ybWFsbHkgeW91IHNo b3VsZCBzYXkgWSBoZXJlLgogCitjb25maWcgS0VZQk9BUkRfT01BUAorCXRy aXN0YXRlICJUSSBPTUFQIGtleXBhZCBzdXBwb3J0IgorCWRlcGVuZHMgb24g KEFSQ0hfT01BUDEgfHwgQVJDSF9PTUFQMikKKwloZWxwCisJICBTYXkgWSBo ZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgT01BUCBrZXlwYWQuCisKKwkg IFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBN IGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG9tYXAta2V5 cGFkLgorCiBlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9rZXli b2FyZC9NYWtlZmlsZSBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvTWFrZWZp bGUKaW5kZXggMjcwODE2Ny4uYjI2NTM5MSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9pbnB1dC9rZXlib2FyZC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2lucHV0 L2tleWJvYXJkL01ha2VmaWxlCkBAIC0xNSw0ICsxNSw1IEBAIG9iai0kKENP TkZJR19LRVlCT0FSRF9DT1JHSSkJCSs9IGNvcmdpa2IKIG9iai0kKENPTkZJ R19LRVlCT0FSRF9TUElUWikJCSs9IHNwaXR6a2JkLm8KIG9iai0kKENPTkZJ R19LRVlCT0FSRF9ISUwpCQkrPSBoaWxfa2JkLm8KIG9iai0kKENPTkZJR19L RVlCT0FSRF9ISUxfT0xEKQkJKz0gaGlsa2JkLm8KK29iai0kKENPTkZJR19L RVlCT0FSRF9PTUFQKSAgICAgICAgICAgICArPSBvbWFwLWtleXBhZC5vCiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvb21hcC1rZXlw YWQuYyBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvb21hcC1rZXlwYWQuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjhhNWY5Ci0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFw LWtleXBhZC5jCkBAIC0wLDAgKzEsNDU3IEBACisvKgorICogbGludXgvZHJp dmVycy9jaGFyL29tYXAta2V5cGFkLmMKKyAqCisgKiBPTUFQIEtleXBhZCBE cml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTm9raWEgQ29ycG9y YXRpb24KKyAqIFdyaXR0ZW4gYnkgVGltbyBUZXLkcyA8ZXh0LXRpbW8udGVy YXNAbm9raWEuY29tPgorICoKKyAqIEFkZGVkIHN1cHBvcnQgZm9yIEgyICYg SDMgS2V5cGFkCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGV4YXMgSW5zdHJ1 bWVudHMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIElu Yy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9p bnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1 ZGUgPGxpbnV4L2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+ CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgor I2luY2x1ZGUgPGFzbS9hcmNoL2lycXMuaD4KKyNpbmNsdWRlIDxhc20vYXJj aC9ncGlvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKyNp bmNsdWRlIDxhc20vYXJjaC9rZXlwYWQuaD4KKyNpbmNsdWRlIDxhc20vYXJj aC9tZW5lbGF1cy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUg PGFzbS9lcnJuby5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+Cisj aW5jbHVkZSA8YXNtL2FyY2gvbXV4Lmg+CisKKyN1bmRlZiBORVdfQk9BUkRf TEVBUk5JTkdfTU9ERQorCitzdGF0aWMgdm9pZCBvbWFwX2twX3Rhc2tsZXQo dW5zaWduZWQgbG9uZyk7CitzdGF0aWMgdm9pZCBvbWFwX2twX3RpbWVyKHVu c2lnbmVkIGxvbmcpOworCitzdGF0aWMgdW5zaWduZWQgY2hhciBrZXlwYWRf c3RhdGVbOF07CitzdGF0aWMgREVGSU5FX01VVEVYKGtwX2VuYWJsZV9tdXRl eCk7CitzdGF0aWMgaW50IGtwX2VuYWJsZSA9IDE7CitzdGF0aWMgaW50IGtw X2N1cl9ncm91cCA9IC0xOworCitzdHJ1Y3Qgb21hcF9rcCB7CisJc3RydWN0 IGlucHV0X2RldiAqaW5wdXQ7CisJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7 CisJaW50IGlycTsKKwl1bnNpZ25lZCBpbnQgcm93czsKKwl1bnNpZ25lZCBp bnQgY29sczsKK307CisKK0RFQ0xBUkVfVEFTS0xFVF9ESVNBQkxFRChrcF90 YXNrbGV0LCBvbWFwX2twX3Rhc2tsZXQsIDApOworCitzdGF0aWMgaW50ICpr ZXltYXA7CitzdGF0aWMgdW5zaWduZWQgaW50ICpyb3dfZ3Bpb3M7CitzdGF0 aWMgdW5zaWduZWQgaW50ICpjb2xfZ3Bpb3M7CisKKyNpZmRlZiBDT05GSUdf QVJDSF9PTUFQMgorc3RhdGljIHZvaWQgc2V0X2NvbF9ncGlvX3ZhbChzdHJ1 Y3Qgb21hcF9rcCAqb21hcF9rcCwgdTggdmFsdWUpCit7CisJaW50IGNvbDsK Kwlmb3IgKGNvbCA9IDA7IGNvbCA8IG9tYXBfa3AtPmNvbHM7IGNvbCsrKSB7 CisJCWlmICh2YWx1ZSAmICgxIDw8IGNvbCkpCisJCQlvbWFwX3NldF9ncGlv X2RhdGFvdXQoY29sX2dwaW9zW2NvbF0sIDEpOworCQllbHNlCisJCQlvbWFw X3NldF9ncGlvX2RhdGFvdXQoY29sX2dwaW9zW2NvbF0sIDApOworCX0KK30K Kworc3RhdGljIHU4IGdldF9yb3dfZ3Bpb192YWwoc3RydWN0IG9tYXBfa3Ag Km9tYXBfa3ApCit7CisJaW50IHJvdzsKKwl1OCB2YWx1ZSA9IDA7CisKKwlm b3IgKHJvdyA9IDA7IHJvdyA8IG9tYXBfa3AtPnJvd3M7IHJvdysrKSB7CisJ CWlmIChvbWFwX2dldF9ncGlvX2RhdGFpbihyb3dfZ3Bpb3Nbcm93XSkpCisJ CQl2YWx1ZSB8PSAoMSA8PCByb3cpOworCX0KKwlyZXR1cm4gdmFsdWU7Cit9 CisjZWxzZQorI2RlZmluZQkJc2V0X2NvbF9ncGlvX3ZhbCh4LCB5KQlkbyB7 fSB3aGlsZSAoMCkKKyNkZWZpbmUJCWdldF9yb3dfZ3Bpb192YWwoeCkJMAor I2VuZGlmCisKK3N0YXRpYyBpcnFyZXR1cm5fdCBvbWFwX2twX2ludGVycnVw dChpbnQgaXJxLCB2b2lkICpkZXZfaWQsCisJCQkJICAgICBzdHJ1Y3QgcHRf cmVncyAqcmVncykKK3sKKwlzdHJ1Y3Qgb21hcF9rcCAqb21hcF9rcCA9IGRl dl9pZDsKKworCS8qIGRpc2FibGUga2V5Ym9hcmQgaW50ZXJydXB0IGFuZCBz Y2hlZHVsZSBmb3IgaGFuZGxpbmcgKi8KKwlpZiAoY3B1X2lzX29tYXAyNHh4 KCkpIHsKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IGkgPCBvbWFwX2twLT5y b3dzOyBpKyspCisJCQlkaXNhYmxlX2lycShPTUFQX0dQSU9fSVJRKHJvd19n cGlvc1tpXSkpOworCX0gZWxzZQorCQkvKiBkaXNhYmxlIGtleWJvYXJkIGlu dGVycnVwdCBhbmQgc2NoZWR1bGUgZm9yIGhhbmRsaW5nICovCisJCW9tYXBf d3JpdGV3KDEsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JEX01B U0tJVCk7CisKKwl0YXNrbGV0X3NjaGVkdWxlKCZrcF90YXNrbGV0KTsKKwor CXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIHZvaWQgb21hcF9r cF90aW1lcih1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJdGFza2xldF9zY2hl ZHVsZSgma3BfdGFza2xldCk7Cit9CisKK3N0YXRpYyB2b2lkIG9tYXBfa3Bf c2Nhbl9rZXlwYWQoc3RydWN0IG9tYXBfa3AgKm9tYXBfa3AsIHVuc2lnbmVk IGNoYXIgKnN0YXRlKQoreworCWludCBjb2wgPSAwOworCisJLyogcmVhZCB0 aGUga2V5cGFkIHN0YXR1cyAqLworCWlmIChjcHVfaXNfb21hcDI0eHgoKSkg eworCQlpbnQgaTsKKwkJZm9yIChpID0gMDsgaSA8IG9tYXBfa3AtPnJvd3M7 IGkrKykKKwkJCWRpc2FibGVfaXJxKE9NQVBfR1BJT19JUlEocm93X2dwaW9z W2ldKSk7CisJfSBlbHNlCisJCS8qIGRpc2FibGUga2V5Ym9hcmQgaW50ZXJy dXB0IGFuZCBzY2hlZHVsZSBmb3IgaGFuZGxpbmcgKi8KKwkJb21hcF93cml0 ZXcoMSwgT01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lU KTsKKworCWlmICghY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJLyogcmVhZCB0 aGUga2V5cGFkIHN0YXR1cyAqLworCQlvbWFwX3dyaXRldygweGZmLCBPTUFQ X01QVUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCQyk7CisJCWZvciAoY29sID0g MDsgY29sIDwgb21hcF9rcC0+Y29sczsgY29sKyspIHsKKwkJCW9tYXBfd3Jp dGV3KH4oMSA8PCBjb2wpICYgMHhmZiwKKwkJCQkgICAgT01BUF9NUFVJT19C QVNFICsgT01BUF9NUFVJT19LQkMpOworCisJCQlpZiAobWFjaGluZV9pc19v bWFwX29zaygpIHx8IG1hY2hpbmVfaXNfb21hcF9oMigpCisJCQkgICAJIHx8 IG1hY2hpbmVfaXNfb21hcF9oMygpKQorCQkJCXVkZWxheSg5KTsKKwkJCWVs c2UKKwkJCQl1ZGVsYXkoNCk7CisJCQlzdGF0ZVtjb2xdID0gfm9tYXBfcmVh ZHcoT01BUF9NUFVJT19CQVNFICsKKwkJCQkJCSBPTUFQX01QVUlPX0tCUl9M QVRDSCkgJiAweGZmOworCQl9CisJCW9tYXBfd3JpdGV3KDB4MDAsIE9NQVBf TVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JDKTsKKwkJdWRlbGF5KDIpOwor CX0gZWxzZSB7CisJCS8qIHJlYWQgdGhlIGtleXBhZCBzdGF0dXMgKi8KKwkJ Zm9yIChjb2wgPSAwOyBjb2wgPCBvbWFwX2twLT5jb2xzOyBjb2wrKykgewor CQkJc2V0X2NvbF9ncGlvX3ZhbChvbWFwX2twLCB+KDEgPDwgY29sKSk7CisJ CQlzdGF0ZVtjb2xdID0gfihnZXRfcm93X2dwaW9fdmFsKG9tYXBfa3ApKSAm IDB4M2Y7CisJCX0KKwkJc2V0X2NvbF9ncGlvX3ZhbChvbWFwX2twLCAwKTsK Kwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IG9tYXBfa3BfZmluZF9rZXko aW50IGNvbCwgaW50IHJvdykKK3sKKwlpbnQgaSwga2V5OworCisJa2V5ID0g S0VZKGNvbCwgcm93LCAwKTsKKwlmb3IgKGkgPSAwOyBrZXltYXBbaV0gIT0g MDsgaSsrKQorCQlpZiAoKGtleW1hcFtpXSAmIDB4ZmYwMDAwMDApID09IGtl eSkKKwkJCXJldHVybiBrZXltYXBbaV0gJiAweDAwZmZmZmZmOworCXJldHVy biAtMTsKK30KKworc3RhdGljIHZvaWQgb21hcF9rcF90YXNrbGV0KHVuc2ln bmVkIGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3Qgb21hcF9rcCAqb21hcF9rcF9k YXRhID0gKHN0cnVjdCBvbWFwX2twICopIGRhdGE7CisJdW5zaWduZWQgY2hh ciBuZXdfc3RhdGVbOF0sIGNoYW5nZWQsIGtleV9kb3duID0gMDsKKwlpbnQg Y29sLCByb3c7CisJaW50IHNwdXJpb3VzID0gMDsKKworCS8qIGNoZWNrIGZv ciBhbnkgY2hhbmdlcyAqLworCW9tYXBfa3Bfc2Nhbl9rZXlwYWQob21hcF9r cF9kYXRhLCBuZXdfc3RhdGUpOworCisJLyogY2hlY2sgZm9yIGNoYW5nZXMg YW5kIHByaW50IHRob3NlICovCisJZm9yIChjb2wgPSAwOyBjb2wgPCBvbWFw X2twX2RhdGEtPmNvbHM7IGNvbCsrKSB7CisJCWNoYW5nZWQgPSBuZXdfc3Rh dGVbY29sXSBeIGtleXBhZF9zdGF0ZVtjb2xdOworCQlrZXlfZG93biB8PSBu ZXdfc3RhdGVbY29sXTsKKwkJaWYgKGNoYW5nZWQgPT0gMCkKKwkJCWNvbnRp bnVlOworCisJCWZvciAocm93ID0gMDsgcm93IDwgb21hcF9rcF9kYXRhLT5y b3dzOyByb3crKykgeworCQkJaW50IGtleTsKKwkJCWlmICghKGNoYW5nZWQg JiAoMSA8PCByb3cpKSkKKwkJCQljb250aW51ZTsKKyNpZmRlZiBORVdfQk9B UkRfTEVBUk5JTkdfTU9ERQorCQkJcHJpbnRrKEtFUk5fSU5GTyAib21hcC1r ZXlwYWQ6IGtleSAlZC0lZCAlc1xuIiwgY29sLAorCQkJICAgICAgIHJvdywg KG5ld19zdGF0ZVtjb2xdICYgKDEgPDwgcm93KSkgPworCQkJICAgICAgICJw cmVzc2VkIiA6ICJyZWxlYXNlZCIpOworI2Vsc2UKKwkJCWtleSA9IG9tYXBf a3BfZmluZF9rZXkoY29sLCByb3cpOworCQkJaWYgKGtleSA8IDApIHsKKwkJ CQlwcmludGsoS0VSTl9XQVJOSU5HCisJCQkJICAgICAgIm9tYXAta2V5cGFk OiBTcHVyaW91cyBrZXkgZXZlbnQgJWQtJWRcbiIsCisJCQkJICAgICAgIGNv bCwgcm93KTsKKwkJCQkvKiBXZSBzY2FuIGFnYWluIGFmdGVyIGEgY291cGxl IG9mIHNlY29uZHMgKi8KKwkJCQlzcHVyaW91cyA9IDE7CisJCQkJY29udGlu dWU7CisJCQl9CisKKwkJCWlmICghKGtwX2N1cl9ncm91cCA9PSAoa2V5ICYg R1JPVVBfTUFTSykgfHwKKwkJCSAgICAgIGtwX2N1cl9ncm91cCA9PSAtMSkp CisJCQkJY29udGludWU7CisKKwkJCWtwX2N1cl9ncm91cCA9IGtleSAmIEdS T1VQX01BU0s7CisJCQlpbnB1dF9yZXBvcnRfa2V5KG9tYXBfa3BfZGF0YS0+ aW5wdXQsIGtleSAmIH5HUk9VUF9NQVNLLAorCQkJCQkgISEobmV3X3N0YXRl W2NvbF0gJiAoMSA8PCByb3cpKSk7CisjZW5kaWYKKwkJfQorCX0KKwltZW1j cHkoa2V5cGFkX3N0YXRlLCBuZXdfc3RhdGUsIHNpemVvZihrZXlwYWRfc3Rh dGUpKTsKKworCWlmIChrZXlfZG93bikgeworICAgICAgICAgICAgICAgIGlu dCBkZWxheSA9IEhaIC8gMjA7CisJCS8qIHNvbWUga2V5IGlzIHByZXNzZWQg LSBrZWVwIGlycSBkaXNhYmxlZCBhbmQgdXNlIHRpbWVyCisJCSAqIHRvIHBv bGwgdGhlIGtleXBhZCAqLworCQlpZiAoc3B1cmlvdXMpCisJCQlkZWxheSA9 IDIgKiBIWjsKKwkJbW9kX3RpbWVyKCZvbWFwX2twX2RhdGEtPnRpbWVyLCBq aWZmaWVzICsgZGVsYXkpOworCX0gZWxzZSB7CisJCS8qIGVuYWJsZSBpbnRl cnJ1cHRzICovCisJCWlmIChjcHVfaXNfb21hcDI0eHgoKSkgeworCQkJaW50 IGk7CisJCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcF9kYXRhLT5yb3dzOyBp KyspCisJCQkJZW5hYmxlX2lycShPTUFQX0dQSU9fSVJRKHJvd19ncGlvc1tp XSkpOworCQl9IGVsc2UgeworCQkJb21hcF93cml0ZXcoMCwgT01BUF9NUFVJ T19CQVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsKKwkJCWtwX2N1cl9n cm91cCA9IC0xOworCQl9CisgCX0KK30KKworc3RhdGljIHNzaXplX3Qgb21h cF9rcF9lbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sK KwlyZXR1cm4gc3ByaW50ZihidWYsICIldVxuIiwga3BfZW5hYmxlKTsKK30K Kworc3RhdGljIHNzaXplX3Qgb21hcF9rcF9lbmFibGVfc3RvcmUoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwK KwkJCQkgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJ aW50IHN0YXRlOworCisJaWYgKHNzY2FuZihidWYsICIldSIsICZzdGF0ZSkg IT0gMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoKHN0YXRlICE9IDEp ICYmIChzdGF0ZSAhPSAwKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRl eF9sb2NrKCZrcF9lbmFibGVfbXV0ZXgpOworCWlmIChzdGF0ZSAhPSBrcF9l bmFibGUpIHsKKwkJaWYgKHN0YXRlKQorCQkJZW5hYmxlX2lycShJTlRfS0VZ Qk9BUkQpOworCQllbHNlCisJCQlkaXNhYmxlX2lycShJTlRfS0VZQk9BUkQp OworCQlrcF9lbmFibGUgPSBzdGF0ZTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZr cF9lbmFibGVfbXV0ZXgpOworCisJcmV0dXJuIHN0cm5sZW4oYnVmLCBjb3Vu dCk7Cit9CisKK3N0YXRpYyBERVZJQ0VfQVRUUihlbmFibGUsIFNfSVJVR08g fCBTX0lXVVNSLCBvbWFwX2twX2VuYWJsZV9zaG93LCBvbWFwX2twX2VuYWJs ZV9zdG9yZSk7CisKKyNpZmRlZiBDT05GSUdfUE0KK3N0YXRpYyBpbnQgb21h cF9rcF9zdXNwZW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldiwgcG1f bWVzc2FnZV90IHN0YXRlKQoreworCS8qIE5vdGhpbmcgeWV0ICovCisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvbWFwX2twX3Jlc3VtZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpCit7CisJLyogTm90aGluZyB5ZXQg Ki8KKworCXJldHVybiAwOworfQorI2Vsc2UKKyNkZWZpbmUgb21hcF9rcF9z dXNwZW5kCU5VTEwKKyNkZWZpbmUgb21hcF9rcF9yZXN1bWUJTlVMTAorI2Vu ZGlmCisKK3N0YXRpYyBpbnQgX19pbml0IG9tYXBfa3BfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qgb21hcF9rcCAq b21hcF9rcDsKKwlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXY7CisJc3Ry dWN0IG9tYXBfa3BfcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSAgcGRldi0+ZGV2 LnBsYXRmb3JtX2RhdGE7CisJaW50IGk7CisKKwlpZiAoIXBkYXRhLT5yb3dz IHx8ICFwZGF0YS0+Y29scyB8fCAhcGRhdGEtPmtleW1hcCkgeworCQlwcmlu dGsoS0VSTl9FUlIgIk5vIHJvd3MsIGNvbHMgb3Iga2V5bWFwIGZyb20gcGRh dGFcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlvbWFwX2twID0g a3phbGxvYyhzaXplb2Yoc3RydWN0IG9tYXBfa3ApLCBHRlBfS0VSTkVMKTsK KwlpbnB1dF9kZXYgPSBpbnB1dF9hbGxvY2F0ZV9kZXZpY2UoKTsKKwlpZiAo IW9tYXBfa3AgfHwgIWlucHV0X2RldikgeworCQlrZnJlZShvbWFwX2twKTsK KwkJaW5wdXRfZnJlZV9kZXZpY2UoaW5wdXRfZGV2KTsKKwkJcmV0dXJuIC1F Tk9NRU07CisJfQorCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgb21h cF9rcCk7CisKKwlvbWFwX2twLT5pbnB1dCA9IGlucHV0X2RldjsKKworCS8q IERpc2FibGUgdGhlIGludGVycnVwdCBmb3IgdGhlIE1QVUlPIGtleWJvYXJk ICovCisJaWYgKCFjcHVfaXNfb21hcDI0eHgoKSkKKwkJb21hcF93cml0ZXco MSwgT01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19LQkRfTUFTS0lUKTsK KworCWtleW1hcCA9IHBkYXRhLT5rZXltYXA7CisKKwlpZiAocGRhdGEtPnJl cCkKKwkJc2V0X2JpdChFVl9SRVAsIGlucHV0X2Rldi0+ZXZiaXQpOworCisJ aWYgKHBkYXRhLT5yb3dfZ3Bpb3MgJiYgcGRhdGEtPmNvbF9ncGlvcykgewor CQlyb3dfZ3Bpb3MgPSBwZGF0YS0+cm93X2dwaW9zOworCQljb2xfZ3Bpb3Mg PSBwZGF0YS0+Y29sX2dwaW9zOworCX0KKworCW9tYXBfa3AtPnJvd3MgPSBw ZGF0YS0+cm93czsKKwlvbWFwX2twLT5jb2xzID0gcGRhdGEtPmNvbHM7CisK KwlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJLyogQ29sczogb3V0cHV0 cyAqLworCQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcC0+Y29sczsgaSsrKSB7 CisJCQlpZiAob21hcF9yZXF1ZXN0X2dwaW8oY29sX2dwaW9zW2ldKSA8IDAp IHsKKwkJCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byByZXF1ZXN0Igor CQkJCSAgICAgICAiR1BJTyVkIGZvciBrZXlwYWRcbiIsCisJCQkJICAgICAg IGNvbF9ncGlvc1tpXSk7CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJ CQlvbWFwX3NldF9ncGlvX2RpcmVjdGlvbihjb2xfZ3Bpb3NbaV0sIDApOwor CQl9CisJCS8qIFJvd3M6IGlucHV0cyAqLworCQlmb3IgKGkgPSAwOyBpIDwg b21hcF9rcC0+cm93czsgaSsrKSB7CisJCQlpZiAob21hcF9yZXF1ZXN0X2dw aW8ocm93X2dwaW9zW2ldKSA8IDApIHsKKwkJCQlwcmludGsoS0VSTl9FUlIg IkZhaWxlZCB0byByZXF1ZXN0IgorCQkJCSAgICAgICAiR1BJTyVkIGZvciBr ZXlwYWRcbiIsCisJCQkJICAgICAgIHJvd19ncGlvc1tpXSk7CisJCQkJcmV0 dXJuIC1FSU5WQUw7CisJCQl9CisJCQlvbWFwX3NldF9ncGlvX2RpcmVjdGlv bihyb3dfZ3Bpb3NbaV0sIDEpOworCQl9CisJfQorCisJc2V0dXBfdGltZXIo Jm9tYXBfa3AtPnRpbWVyLCBvbWFwX2twX3RpbWVyLCAodW5zaWduZWQgbG9u ZylvbWFwX2twKTsKKworCS8qIGdldCB0aGUgaXJxIGFuZCBpbml0IHRpbWVy Ki8KKwl0YXNrbGV0X2VuYWJsZSgma3BfdGFza2xldCk7CisJa3BfdGFza2xl dC5kYXRhID0gKHVuc2lnbmVkIGxvbmcpIG9tYXBfa3A7CisKKwlpZiAoZGV2 aWNlX2NyZWF0ZV9maWxlKCZwZGV2LT5kZXYsICZkZXZfYXR0cl9lbmFibGUp KQorCQlwcmludGsoS0VSTl9XQVJOSU5HICJGYWlsZWQgdG8gY3JlYXRlIHN5 c2ZzIGZpbGUgZm9yIGtleXBhZFxuIik7CisKKwkvKiBzZXR1cCBpbnB1dCBk ZXZpY2UgKi8KKwlzZXRfYml0KEVWX0tFWSwgaW5wdXRfZGV2LT5ldmJpdCk7 CisJZm9yIChpID0gMDsga2V5bWFwW2ldICE9IDA7IGkrKykKKwkJc2V0X2Jp dChrZXltYXBbaV0gJiBLRVlfTUFYLCBpbnB1dF9kZXYtPmtleWJpdCk7CisJ aW5wdXRfZGV2LT5uYW1lID0gIm9tYXAta2V5cGFkIjsKKwlpbnB1dF9kZXYt PmNkZXYuZGV2ID0gJnBkZXYtPmRldjsKKwlpbnB1dF9kZXYtPnByaXZhdGUg PSBvbWFwX2twOworCWlucHV0X3JlZ2lzdGVyX2RldmljZShvbWFwX2twLT5p bnB1dCk7CisKKwlpZiAobWFjaGluZV9pc19vbWFwX2gyKCkgfHwgbWFjaGlu ZV9pc19vbWFwX2gzKCkgfHwKKwkgICAgbWFjaGluZV9pc19vbWFwX3BlcnNl dXMyKCkpIHsKKwkJb21hcF93cml0ZXcoMHhmZiwgT01BUF9NUFVJT19CQVNF ICsgT01BUF9NUFVJT19HUElPX0RFQk9VTkNJTkcpOworCX0KKwkvKiBzY2Fu IGN1cnJlbnQgc3RhdHVzIGFuZCBlbmFibGUgaW50ZXJydXB0ICovCisJb21h cF9rcF9zY2FuX2tleXBhZChvbWFwX2twLCBrZXlwYWRfc3RhdGUpOworCWlm ICghY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJb21hcF9rcC0+aXJxID0gcGxh dGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKKwkJaWYgKG9tYXBfa3AtPmlycSA+ PSAwKSB7CisJCQlpZiAocmVxdWVzdF9pcnEob21hcF9rcC0+aXJxLCBvbWFw X2twX2ludGVycnVwdCwgMCwKKwkJCQkJIm9tYXAta2V5cGFkIiwgb21hcF9r cCkgPCAwKQorCQkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCW9tYXBfd3Jp dGV3KDAsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JEX01BU0tJ VCk7CisJfSBlbHNlIHsKKwkJZm9yIChpID0gMDsgaSA8IG9tYXBfa3AtPnJv d3M7IGkrKykgeworCQkJaWYgKHJlcXVlc3RfaXJxKE9NQVBfR1BJT19JUlEo cm93X2dwaW9zW2ldKSwKKwkJCQkgICAgICAgCW9tYXBfa3BfaW50ZXJydXB0 LAorCQkJCQlJUlFGX1RSSUdHRVJfRkFMTElORywKKwkJCQkgICAgICAgCSJv bWFwLWtleXBhZCIsIG9tYXBfa3ApIDwgMCkKKwkJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9t YXBfa3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7 CisJc3RydWN0IG9tYXBfa3AgKm9tYXBfa3AgPSBwbGF0Zm9ybV9nZXRfZHJ2 ZGF0YShwZGV2KTsKKworCS8qIGRpc2FibGUga2V5cGFkIGludGVycnVwdCBo YW5kbGluZyAqLworCXRhc2tsZXRfZGlzYWJsZSgma3BfdGFza2xldCk7CisJ aWYgKGNwdV9pc19vbWFwMjR4eCgpKSB7CisJCWludCBpOworCQlmb3IgKGkg PSAwOyBpIDwgb21hcF9rcC0+Y29sczsgaSsrKQorCSAgICAJCW9tYXBfZnJl ZV9ncGlvKGNvbF9ncGlvc1tpXSk7CisJCWZvciAoaSA9IDA7IGkgPCBvbWFw X2twLT5yb3dzOyBpKyspIHsKKwkgICAgCQlvbWFwX2ZyZWVfZ3Bpbyhyb3df Z3Bpb3NbaV0pOworCQkJZnJlZV9pcnEoT01BUF9HUElPX0lSUShyb3dfZ3Bp b3NbaV0pLCAwKTsKKwkJfQorCX0gZWxzZSB7CisJCW9tYXBfd3JpdGV3KDEs IE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JEX01BU0tJVCk7CisJ CWZyZWVfaXJxKG9tYXBfa3AtPmlycSwgMCk7CisJfQorCisJZGVsX3RpbWVy X3N5bmMoJm9tYXBfa3AtPnRpbWVyKTsKKwl0YXNrbGV0X2tpbGwoJmtwX3Rh c2tsZXQpOworCisJLyogdW5yZWdpc3RlciBldmVyeXRoaW5nICovCisJaW5w dXRfdW5yZWdpc3Rlcl9kZXZpY2Uob21hcF9rcC0+aW5wdXQpOworCisJa2Zy ZWUob21hcF9rcCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgb21hcF9rcF9kcml2ZXIgPSB7CisJLnByb2Jl CQk9IG9tYXBfa3BfcHJvYmUsCisJLnJlbW92ZQkJPSBvbWFwX2twX3JlbW92 ZSwKKwkuc3VzcGVuZAk9IG9tYXBfa3Bfc3VzcGVuZCwKKwkucmVzdW1lCQk9 IG9tYXBfa3BfcmVzdW1lLAorCS5kcml2ZXIJCT0geworCQkubmFtZQk9ICJv bWFwLWtleXBhZCIsCisJfSwKK307CisKK3N0YXRpYyBpbnQgX19kZXZpbml0 IG9tYXBfa3BfaW5pdCh2b2lkKQoreworCXByaW50ayhLRVJOX0lORk8gIk9N QVAgS2V5cGFkIERyaXZlclxuIik7CisJcmV0dXJuIHBsYXRmb3JtX2RyaXZl cl9yZWdpc3Rlcigmb21hcF9rcF9kcml2ZXIpOworfQorCitzdGF0aWMgdm9p ZCBfX2V4aXQgb21hcF9rcF9leGl0KHZvaWQpCit7CisJcGxhdGZvcm1fZHJp dmVyX3VucmVnaXN0ZXIoJm9tYXBfa3BfZHJpdmVyKTsKK30KKworbW9kdWxl X2luaXQob21hcF9rcF9pbml0KTsKK21vZHVsZV9leGl0KG9tYXBfa3BfZXhp dCk7CisKK01PRFVMRV9BVVRIT1IoIlRpbW8gVGVy5HMiKTsKK01PRFVMRV9E RVNDUklQVElPTigiT01BUCBLZXlwYWQgRHJpdmVyIik7CitNT0RVTEVfTElD RU5TRSgiR1BMIik7Ci0tIAoxLjMuMwoK --_----------=_115382505064860--