From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161175AbWG1OTN (ORCPT ); Fri, 28 Jul 2006 10:19:13 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1161170AbWG1OTN (ORCPT ); Fri, 28 Jul 2006 10:19:13 -0400 Received: from out2.smtp.messagingengine.com ([66.111.4.26]:63460 "EHLO out2.smtp.messagingengine.com") by vger.kernel.org with ESMTP id S1161175AbWG1OTM (ORCPT ); Fri, 28 Jul 2006 10:19:12 -0400 Message-Id: <1154096354.24583.267091216@webmail.messagingengine.com> X-Sasl-Enc: NhWwonqKhTfPQHzHgoYGiglninu0Hf5lMEAXEhYl5/wK 1154096354 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, rmk+lkml@arm.linux.org.uk Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_1154096354245831"; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Subject: [PATCH 1/2] OMAP: Add keypad driver #4 Date: Fri, 28 Jul 2006 19:49:14 +0530 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --_----------=_1154096354245831 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: Fri, 28 Jul 2006 14:19:14 UT Andrew/Tony/Rusell/Dmitry, This is a revised patch as per the review comments from the RMK on thread: http://lkml.org/lkml/2006/7/27/28 Please review it and give me the Ack if looks ok. PS: omap24xx keypad code is still in omap-keypad.c. ---Komal Shah http://komalshah.blogspot.com -- http://www.fastmail.fm - The way an email service should be --_----------=_1154096354245831 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: Fri, 28 Jul 2006 14:19:14 UT RnJvbSBub2JvZHkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtv bWFsIFNoYWggPGtvbWFsX3NoYWg4MDIwMDNAeWFob28uY29tPgpEYXRlOiBG cmksIDI4IEp1bCAyMDA2IDE3OjUzOjQ4ICswNTMwClN1YmplY3Q6IFtQQVRD SCAxLzJdIE9NQVA6IEFkZCBrZXlwYWQgZHJpdmVyCgpUaGlzIHBhdGNoIGFk ZHMgc3VwcG9ydCBmb3Iga2V5cGFkIGRyaXZlciBydW5uaW5nIG9uIGRpZmZl cmVudApUSSBPTUFQKGh0dHA6Ly93d3cudGkuY29tL29tYXApIHByb2Nlc3Nv ciBiYXNlZCBib2FyZHMgbGlrZQpPU0ssIEgyLCBIMywgSDQsIFBlcnN1YXMg YW5kIE5va2lhIDc3MC4KClNpZ25lZC1vZmYtYnk6IEtvbWFsIFNoYWggPGtv bWFsX3NoYWg4MDIwMDNAeWFob28uY29tPgoKLS0tCgogZHJpdmVycy9pbnB1 dC9rZXlib2FyZC9LY29uZmlnICAgICAgIHwgICAgOSArCiBkcml2ZXJzL2lu cHV0L2tleWJvYXJkL01ha2VmaWxlICAgICAgfCAgICAxIAogZHJpdmVycy9p bnB1dC9rZXlib2FyZC9vbWFwLWtleXBhZC5jIHwgIDQ5MiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2FzbS1hcm0vYXJj aC1vbWFwL2tleXBhZC5oICAgfCAgICAzIAogNCBmaWxlcyBjaGFuZ2VkLCA1 MDUgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2lucHV0L2tleWJvYXJkL29tYXAta2V5cGFkLmMK CjQxZmZjMjQwMDZhMTUwMDNkNWM4ZDE3YzVjYzg5MGJhYWUyZGE0YTMKZGlm 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 ZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZmZk NmEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJk L29tYXAta2V5cGFkLmMKQEAgLTAsMCArMSw0OTIgQEAKKy8qCisgKiBsaW51 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 aW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5j bHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2tl eXBhZC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL21lbmVsYXVzLmg+CisjaW5j bHVkZSA8YXNtL2lycS5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgor I2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVz Lmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbXV4Lmg+CisKKyN1bmRlZiBORVdf Qk9BUkRfTEVBUk5JTkdfTU9ERQorCitzdGF0aWMgdm9pZCBvbWFwX2twX3Rh c2tsZXQodW5zaWduZWQgbG9uZyk7CitzdGF0aWMgdm9pZCBvbWFwX2twX3Rp bWVyKHVuc2lnbmVkIGxvbmcpOworCitzdGF0aWMgdW5zaWduZWQgY2hhciBr ZXlwYWRfc3RhdGVbOF07CitzdGF0aWMgREVGSU5FX01VVEVYKGtwX2VuYWJs ZV9tdXRleCk7CitzdGF0aWMgaW50IGtwX2VuYWJsZSA9IDE7CitzdGF0aWMg aW50IGtwX2N1cl9ncm91cCA9IC0xOworCitzdHJ1Y3Qgb21hcF9rcCB7CisJ c3RydWN0IGlucHV0X2RldiAqaW5wdXQ7CisJc3RydWN0IHRpbWVyX2xpc3Qg dGltZXI7CisJaW50IGlycTsKKwl1bnNpZ25lZCBpbnQgcm93czsKKwl1bnNp Z25lZCBpbnQgY29sczsKKwl1bnNpZ25lZCBsb25nIGRlbGF5OworCXVuc2ln bmVkIGludCBkZWJvdW5jZTsKK307CisKK0RFQ0xBUkVfVEFTS0xFVF9ESVNB QkxFRChrcF90YXNrbGV0LCBvbWFwX2twX3Rhc2tsZXQsIDApOworCitzdGF0 aWMgaW50ICprZXltYXA7CitzdGF0aWMgdW5zaWduZWQgaW50ICpyb3dfZ3Bp b3M7CitzdGF0aWMgdW5zaWduZWQgaW50ICpjb2xfZ3Bpb3M7CisKKyNpZmRl ZiBDT05GSUdfQVJDSF9PTUFQMgorc3RhdGljIHZvaWQgc2V0X2NvbF9ncGlv X3ZhbChzdHJ1Y3Qgb21hcF9rcCAqb21hcF9rcCwgdTggdmFsdWUpCit7CisJ aW50IGNvbDsKKwlmb3IgKGNvbCA9IDA7IGNvbCA8IG9tYXBfa3AtPmNvbHM7 IGNvbCsrKSB7CisJCWlmICh2YWx1ZSAmICgxIDw8IGNvbCkpCisJCQlvbWFw X3NldF9ncGlvX2RhdGFvdXQoY29sX2dwaW9zW2NvbF0sIDEpOworCQllbHNl CisJCQlvbWFwX3NldF9ncGlvX2RhdGFvdXQoY29sX2dwaW9zW2NvbF0sIDAp OworCX0KK30KKworc3RhdGljIHU4IGdldF9yb3dfZ3Bpb192YWwoc3RydWN0 IG9tYXBfa3AgKm9tYXBfa3ApCit7CisJaW50IHJvdzsKKwl1OCB2YWx1ZSA9 IDA7CisKKwlmb3IgKHJvdyA9IDA7IHJvdyA8IG9tYXBfa3AtPnJvd3M7IHJv dysrKSB7CisJCWlmIChvbWFwX2dldF9ncGlvX2RhdGFpbihyb3dfZ3Bpb3Nb cm93XSkpCisJCQl2YWx1ZSB8PSAoMSA8PCByb3cpOworCX0KKwlyZXR1cm4g dmFsdWU7Cit9CisjZWxzZQorI2RlZmluZQkJc2V0X2NvbF9ncGlvX3ZhbCh4 LCB5KQlkbyB7fSB3aGlsZSAoMCkKKyNkZWZpbmUJCWdldF9yb3dfZ3Bpb192 YWwoeCkJMAorI2VuZGlmCisKK3N0YXRpYyBpcnFyZXR1cm5fdCBvbWFwX2tw X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQsCisJCQkJICAgICBz dHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlzdHJ1Y3Qgb21hcF9rcCAqb21h cF9rcCA9IGRldl9pZDsKKworCS8qIGRpc2FibGUga2V5Ym9hcmQgaW50ZXJy dXB0IGFuZCBzY2hlZHVsZSBmb3IgaGFuZGxpbmcgKi8KKwlpZiAoY3B1X2lz X29tYXAyNHh4KCkpIHsKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IGkgPCBv bWFwX2twLT5yb3dzOyBpKyspCisJCQlkaXNhYmxlX2lycShPTUFQX0dQSU9f SVJRKHJvd19ncGlvc1tpXSkpOworCX0gZWxzZQorCQkvKiBkaXNhYmxlIGtl eWJvYXJkIGludGVycnVwdCBhbmQgc2NoZWR1bGUgZm9yIGhhbmRsaW5nICov CisJCW9tYXBfd3JpdGV3KDEsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBV SU9fS0JEX01BU0tJVCk7CisKKwl0YXNrbGV0X3NjaGVkdWxlKCZrcF90YXNr bGV0KTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIHZv aWQgb21hcF9rcF90aW1lcih1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJdGFz a2xldF9zY2hlZHVsZSgma3BfdGFza2xldCk7Cit9CisKK3N0YXRpYyB2b2lk IG9tYXBfa3Bfc2Nhbl9rZXlwYWQoc3RydWN0IG9tYXBfa3AgKm9tYXBfa3As IHVuc2lnbmVkIGNoYXIgKnN0YXRlKQoreworCWludCBjb2wgPSAwOworCisJ LyogcmVhZCB0aGUga2V5cGFkIHN0YXR1cyAqLworCWlmIChjcHVfaXNfb21h cDI0eHgoKSkgeworCQlpbnQgaTsKKwkJZm9yIChpID0gMDsgaSA8IG9tYXBf a3AtPnJvd3M7IGkrKykKKwkJCWRpc2FibGVfaXJxKE9NQVBfR1BJT19JUlEo cm93X2dwaW9zW2ldKSk7CisKKwkJLyogcmVhZCB0aGUga2V5cGFkIHN0YXR1 cyAqLworCQlmb3IgKGNvbCA9IDA7IGNvbCA8IG9tYXBfa3AtPmNvbHM7IGNv bCsrKSB7CisJCQlzZXRfY29sX2dwaW9fdmFsKG9tYXBfa3AsIH4oMSA8PCBj b2wpKTsKKwkJCXN0YXRlW2NvbF0gPSB+KGdldF9yb3dfZ3Bpb192YWwob21h cF9rcCkpICYgMHgzZjsKKwkJfQorCQlzZXRfY29sX2dwaW9fdmFsKG9tYXBf a3AsIDApOworCisJfSBlbHNlIHsKKwkJLyogZGlzYWJsZSBrZXlib2FyZCBp bnRlcnJ1cHQgYW5kIHNjaGVkdWxlIGZvciBoYW5kbGluZyAqLworCQlvbWFw X3dyaXRldygxLCBPTUFQX01QVUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCRF9N QVNLSVQpOworCisJCS8qIHJlYWQgdGhlIGtleXBhZCBzdGF0dXMgKi8KKwkJ b21hcF93cml0ZXcoMHhmZiwgT01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJ T19LQkMpOworCQlmb3IgKGNvbCA9IDA7IGNvbCA8IG9tYXBfa3AtPmNvbHM7 IGNvbCsrKSB7CisJCQlvbWFwX3dyaXRldyh+KDEgPDwgY29sKSAmIDB4ZmYs CisJCQkJICAgIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JDKTsK KworCQkJdWRlbGF5KG9tYXBfa3AtPmRlbGF5KTsKKwkJCQorCQkJc3RhdGVb Y29sXSA9IH5vbWFwX3JlYWR3KE9NQVBfTVBVSU9fQkFTRSArCisJCQkJCQkg T01BUF9NUFVJT19LQlJfTEFUQ0gpICYgMHhmZjsKKwkJfQorCQlvbWFwX3dy aXRldygweDAwLCBPTUFQX01QVUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCQyk7 CisJCXVkZWxheSgyKTsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IG9t YXBfa3BfZmluZF9rZXkoaW50IGNvbCwgaW50IHJvdykKK3sKKwlpbnQgaSwg a2V5OworCisJa2V5ID0gS0VZKGNvbCwgcm93LCAwKTsKKwlmb3IgKGkgPSAw OyBrZXltYXBbaV0gIT0gMDsgaSsrKQorCQlpZiAoKGtleW1hcFtpXSAmIDB4 ZmYwMDAwMDApID09IGtleSkKKwkJCXJldHVybiBrZXltYXBbaV0gJiAweDAw ZmZmZmZmOworCXJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQgb21hcF9r cF90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3Qgb21h cF9rcCAqb21hcF9rcF9kYXRhID0gKHN0cnVjdCBvbWFwX2twICopIGRhdGE7 CisJdW5zaWduZWQgY2hhciBuZXdfc3RhdGVbOF0sIGNoYW5nZWQsIGtleV9k b3duID0gMDsKKwlpbnQgY29sLCByb3c7CisJaW50IHNwdXJpb3VzID0gMDsK KworCS8qIGNoZWNrIGZvciBhbnkgY2hhbmdlcyAqLworCW9tYXBfa3Bfc2Nh bl9rZXlwYWQob21hcF9rcF9kYXRhLCBuZXdfc3RhdGUpOworCisJLyogY2hl Y2sgZm9yIGNoYW5nZXMgYW5kIHByaW50IHRob3NlICovCisJZm9yIChjb2wg PSAwOyBjb2wgPCBvbWFwX2twX2RhdGEtPmNvbHM7IGNvbCsrKSB7CisJCWNo YW5nZWQgPSBuZXdfc3RhdGVbY29sXSBeIGtleXBhZF9zdGF0ZVtjb2xdOwor CQlrZXlfZG93biB8PSBuZXdfc3RhdGVbY29sXTsKKwkJaWYgKGNoYW5nZWQg PT0gMCkKKwkJCWNvbnRpbnVlOworCisJCWZvciAocm93ID0gMDsgcm93IDwg b21hcF9rcF9kYXRhLT5yb3dzOyByb3crKykgeworCQkJaW50IGtleTsKKwkJ CWlmICghKGNoYW5nZWQgJiAoMSA8PCByb3cpKSkKKwkJCQljb250aW51ZTsK KyNpZmRlZiBORVdfQk9BUkRfTEVBUk5JTkdfTU9ERQorCQkJcHJpbnRrKEtF Uk5fSU5GTyAib21hcC1rZXlwYWQ6IGtleSAlZC0lZCAlc1xuIiwgY29sLAor CQkJICAgICAgIHJvdywgKG5ld19zdGF0ZVtjb2xdICYgKDEgPDwgcm93KSkg PworCQkJICAgICAgICJwcmVzc2VkIiA6ICJyZWxlYXNlZCIpOworI2Vsc2UK KwkJCWtleSA9IG9tYXBfa3BfZmluZF9rZXkoY29sLCByb3cpOworCQkJaWYg KGtleSA8IDApIHsKKwkJCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCQkJICAg ICAgIm9tYXAta2V5cGFkOiBTcHVyaW91cyBrZXkgZXZlbnQgJWQtJWRcbiIs CisJCQkJICAgICAgIGNvbCwgcm93KTsKKwkJCQkvKiBXZSBzY2FuIGFnYWlu IGFmdGVyIGEgY291cGxlIG9mIHNlY29uZHMgKi8KKwkJCQlzcHVyaW91cyA9 IDE7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWlmICghKGtwX2N1cl9n cm91cCA9PSAoa2V5ICYgR1JPVVBfTUFTSykgfHwKKwkJCSAgICAgIGtwX2N1 cl9ncm91cCA9PSAtMSkpCisJCQkJY29udGludWU7CisKKwkJCWtwX2N1cl9n cm91cCA9IGtleSAmIEdST1VQX01BU0s7CisJCQlpbnB1dF9yZXBvcnRfa2V5 KG9tYXBfa3BfZGF0YS0+aW5wdXQsIGtleSAmIH5HUk9VUF9NQVNLLAorCQkJ CQkgbmV3X3N0YXRlW2NvbF0gJiAoMSA8PCByb3cpKTsKKyNlbmRpZgorCQl9 CisJfQorCW1lbWNweShrZXlwYWRfc3RhdGUsIG5ld19zdGF0ZSwgc2l6ZW9m KGtleXBhZF9zdGF0ZSkpOworCisJaWYgKGtleV9kb3duKSB7CisgICAgICAg ICAgICAgICAgaW50IGRlbGF5ID0gSFogLyAyMDsKKwkJLyogc29tZSBrZXkg aXMgcHJlc3NlZCAtIGtlZXAgaXJxIGRpc2FibGVkIGFuZCB1c2UgdGltZXIK KwkJICogdG8gcG9sbCB0aGUga2V5cGFkICovCisJCWlmIChzcHVyaW91cykK KwkJCWRlbGF5ID0gMiAqIEhaOworCQltb2RfdGltZXIoJm9tYXBfa3BfZGF0 YS0+dGltZXIsIGppZmZpZXMgKyBkZWxheSk7CisJfSBlbHNlIHsKKwkJLyog ZW5hYmxlIGludGVycnVwdHMgKi8KKwkJaWYgKGNwdV9pc19vbWFwMjR4eCgp KSB7CisJCQlpbnQgaTsKKwkJCWZvciAoaSA9IDA7IGkgPCBvbWFwX2twX2Rh dGEtPnJvd3M7IGkrKykKKwkJCQllbmFibGVfaXJxKE9NQVBfR1BJT19JUlEo cm93X2dwaW9zW2ldKSk7CisJCX0gZWxzZSB7CisJCQlvbWFwX3dyaXRldygw LCBPTUFQX01QVUlPX0JBU0UgKyBPTUFQX01QVUlPX0tCRF9NQVNLSVQpOwor CQkJa3BfY3VyX2dyb3VwID0gLTE7CisJCX0KKyAJfQorfQorCitzdGF0aWMg c3NpemVfdCBvbWFwX2twX2VuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRl diwKKwkJCQkgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBrcF9l bmFibGUpOworfQorCitzdGF0aWMgc3NpemVfdCBvbWFwX2twX2VuYWJsZV9z dG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLAorCQkJCSAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBj b3VudCkKK3sKKwlpbnQgc3RhdGU7CisKKwlpZiAoc3NjYW5mKGJ1ZiwgIiV1 IiwgJnN0YXRlKSAhPSAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICgo c3RhdGUgIT0gMSkgJiYgKHN0YXRlICE9IDApKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCW11dGV4X2xvY2soJmtwX2VuYWJsZV9tdXRleCk7CisJaWYgKHN0 YXRlICE9IGtwX2VuYWJsZSkgeworCQlpZiAoc3RhdGUpCisJCQllbmFibGVf aXJxKElOVF9LRVlCT0FSRCk7CisJCWVsc2UKKwkJCWRpc2FibGVfaXJxKElO VF9LRVlCT0FSRCk7CisJCWtwX2VuYWJsZSA9IHN0YXRlOworCX0KKwltdXRl eF91bmxvY2soJmtwX2VuYWJsZV9tdXRleCk7CisKKwlyZXR1cm4gc3Rybmxl bihidWYsIGNvdW50KTsKK30KKworc3RhdGljIERFVklDRV9BVFRSKGVuYWJs ZSwgU19JUlVHTyB8IFNfSVdVU1IsIG9tYXBfa3BfZW5hYmxlX3Nob3csIG9t YXBfa3BfZW5hYmxlX3N0b3JlKTsKKworI2lmZGVmIENPTkZJR19QTQorc3Rh dGljIGludCBvbWFwX2twX3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCit7CisJLyogTm90aGluZyB5 ZXQgKi8KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9tYXBfa3Bf cmVzdW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldikKK3sKKwkvKiBO b3RoaW5nIHlldCAqLworCisJcmV0dXJuIDA7Cit9CisjZWxzZQorI2RlZmlu ZSBvbWFwX2twX3N1c3BlbmQJTlVMTAorI2RlZmluZSBvbWFwX2twX3Jlc3Vt ZQlOVUxMCisjZW5kaWYKKworc3RhdGljIGludCBfX2luaXQgb21hcF9rcF9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVj dCBvbWFwX2twICpvbWFwX2twOworCXN0cnVjdCBpbnB1dF9kZXYgKmlucHV0 X2RldjsKKwlzdHJ1Y3Qgb21hcF9rcF9wbGF0Zm9ybV9kYXRhICpwZGF0YSA9 ICBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwlpbnQgaSwgY29sX2lkeCwg cm93X2lkeCwgaXJxX2lkeCwgcmV0OworCisJaWYgKCFwZGF0YS0+cm93cyB8 fCAhcGRhdGEtPmNvbHMgfHwgIXBkYXRhLT5rZXltYXApIHsKKwkJcHJpbnRr KEtFUk5fRVJSICJObyByb3dzLCBjb2xzIG9yIGtleW1hcCBmcm9tIHBkYXRh XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJb21hcF9rcCA9IGt6 YWxsb2Moc2l6ZW9mKHN0cnVjdCBvbWFwX2twKSwgR0ZQX0tFUk5FTCk7CisJ aW5wdXRfZGV2ID0gaW5wdXRfYWxsb2NhdGVfZGV2aWNlKCk7CisJaWYgKCFv bWFwX2twIHx8ICFpbnB1dF9kZXYpIHsKKwkJa2ZyZWUob21hcF9rcCk7CisJ CWlucHV0X2ZyZWVfZGV2aWNlKGlucHV0X2Rldik7CisJCXJldHVybiAtRU5P TUVNOworCX0KKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG9tYXBf a3ApOworCisJb21hcF9rcC0+aW5wdXQgPSBpbnB1dF9kZXY7CisKKwkvKiBE aXNhYmxlIHRoZSBpbnRlcnJ1cHQgZm9yIHRoZSBNUFVJTyBrZXlib2FyZCAq LworCWlmICghY3B1X2lzX29tYXAyNHh4KCkpCisJCW9tYXBfd3JpdGV3KDEs IE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JEX01BU0tJVCk7CisK KwlrZXltYXAgPSBwZGF0YS0+a2V5bWFwOworCisJaWYgKHBkYXRhLT5yZXAp CisJCXNldF9iaXQoRVZfUkVQLCBpbnB1dF9kZXYtPmV2Yml0KTsKKworCWlm IChwZGF0YS0+ZGVsYXkpCisJCW9tYXBfa3AtPmRlbGF5ID0gcGRhdGEtPmRl bGF5OworCisJaWYgKHBkYXRhLT5yb3dfZ3Bpb3MgJiYgcGRhdGEtPmNvbF9n cGlvcykgeworCQlyb3dfZ3Bpb3MgPSBwZGF0YS0+cm93X2dwaW9zOworCQlj b2xfZ3Bpb3MgPSBwZGF0YS0+Y29sX2dwaW9zOworCX0KKworCW9tYXBfa3At PnJvd3MgPSBwZGF0YS0+cm93czsKKwlvbWFwX2twLT5jb2xzID0gcGRhdGEt PmNvbHM7CisKKwlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJLyogQ29s czogb3V0cHV0cyAqLworCQlmb3IgKGNvbF9pZHggPSAwOyBjb2xfaWR4IDwg b21hcF9rcC0+Y29sczsgY29sX2lkeCsrKSB7CisJCQlpZiAob21hcF9yZXF1 ZXN0X2dwaW8oY29sX2dwaW9zW2NvbF9pZHhdKSA8IDApIHsKKwkJCQlwcmlu dGsoS0VSTl9FUlIgIkZhaWxlZCB0byByZXF1ZXN0IgorCQkJCSAgICAgICAi R1BJTyVkIGZvciBrZXlwYWRcbiIsCisJCQkJICAgICAgIGNvbF9ncGlvc1tj b2xfaWR4XSk7CisJCQkJZ290byBlcnIxOworCQkJfQorCQkJb21hcF9zZXRf Z3Bpb19kaXJlY3Rpb24oY29sX2dwaW9zW2NvbF9pZHhdLCAwKTsKKwkJfQor CQkvKiBSb3dzOiBpbnB1dHMgKi8KKwkJZm9yIChyb3dfaWR4ID0gMDsgcm93 X2lkeCA8IG9tYXBfa3AtPnJvd3M7IHJvd19pZHgrKykgeworCQkJaWYgKG9t YXBfcmVxdWVzdF9ncGlvKHJvd19ncGlvc1tyb3dfaWR4XSkgPCAwKSB7CisJ CQkJcHJpbnRrKEtFUk5fRVJSICJGYWlsZWQgdG8gcmVxdWVzdCIKKwkJCQkg ICAgICAgIkdQSU8lZCBmb3Iga2V5cGFkXG4iLAorCQkJCSAgICAgICByb3df Z3Bpb3Nbcm93X2lkeF0pOworCQkJCWdvdG8gZXJyMjsKKwkJCX0KKwkJCW9t YXBfc2V0X2dwaW9fZGlyZWN0aW9uKHJvd19ncGlvc1tyb3dfaWR4XSwgMSk7 CisJCX0KKwl9CisKKwlzZXR1cF90aW1lcigmb21hcF9rcC0+dGltZXIsIG9t YXBfa3BfdGltZXIsICh1bnNpZ25lZCBsb25nKW9tYXBfa3ApOworCisJLyog Z2V0IHRoZSBpcnEgYW5kIGluaXQgdGltZXIqLworCXRhc2tsZXRfZW5hYmxl KCZrcF90YXNrbGV0KTsKKwlrcF90YXNrbGV0LmRhdGEgPSAodW5zaWduZWQg bG9uZykgb21hcF9rcDsKKworCXJldCA9IGRldmljZV9jcmVhdGVfZmlsZSgm cGRldi0+ZGV2LCAmZGV2X2F0dHJfZW5hYmxlKTsKKwlpZiAocmV0IDwgMCkK KwkJZ290byBlcnIyOworCisJLyogc2V0dXAgaW5wdXQgZGV2aWNlICovCisJ c2V0X2JpdChFVl9LRVksIGlucHV0X2Rldi0+ZXZiaXQpOworCWZvciAoaSA9 IDA7IGtleW1hcFtpXSAhPSAwOyBpKyspCisJCXNldF9iaXQoa2V5bWFwW2ld ICYgS0VZX01BWCwgaW5wdXRfZGV2LT5rZXliaXQpOworCWlucHV0X2Rldi0+ bmFtZSA9ICJvbWFwLWtleXBhZCI7CisJaW5wdXRfZGV2LT5waHlzID0gIm9t YXAta2V5cGFkL2lucHV0MCI7CisJaW5wdXRfZGV2LT5jZGV2LmRldiA9ICZw ZGV2LT5kZXY7CisJaW5wdXRfZGV2LT5wcml2YXRlID0gb21hcF9rcDsKKwkK KwlpbnB1dF9kZXYtPmlkLmJ1c3R5cGUgPSBCVVNfSE9TVDsKKwlpbnB1dF9k ZXYtPmlkLnZlbmRvciA9IDB4MDAwMTsKKwlpbnB1dF9kZXYtPmlkLnByb2R1 Y3QgPSAweDAwMDE7CisJaW5wdXRfZGV2LT5pZC52ZXJzaW9uID0gMHgwMTAw OworCisJaW5wdXRfZGV2LT5rZXljb2RlID0ga2V5bWFwOworCWlucHV0X2Rl di0+a2V5Y29kZXNpemUgPSBzaXplb2YodW5zaWduZWQgaW50KTsKKwlpbnB1 dF9kZXYtPmtleWNvZGVtYXggPSBwZGF0YS0+a2V5bWFwc2l6ZTsKKworCXJl dCA9IGlucHV0X3JlZ2lzdGVyX2RldmljZShvbWFwX2twLT5pbnB1dCk7CisJ aWYgKHJldCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJVbmFibGUgdG8g cmVnaXN0ZXIgb21hcC1rZXlwYWQgaW5wdXQgZGV2aWNlXG4iKTsKKwkJZ290 byBlcnIzOworCX0KKworCWlmIChwZGF0YS0+ZGJvdW5jZSkKKwkJb21hcF93 cml0ZXcoMHhmZiwgT01BUF9NUFVJT19CQVNFICsgT01BUF9NUFVJT19HUElP X0RFQk9VTkNJTkcpOworCisJLyogc2NhbiBjdXJyZW50IHN0YXR1cyBhbmQg ZW5hYmxlIGludGVycnVwdCAqLworCW9tYXBfa3Bfc2Nhbl9rZXlwYWQob21h cF9rcCwga2V5cGFkX3N0YXRlKTsKKwlpZiAoIWNwdV9pc19vbWFwMjR4eCgp KSB7CisJCW9tYXBfa3AtPmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwg MCk7CisJCWlmIChvbWFwX2twLT5pcnEgPj0gMCkgeworCQkJaWYgKHJlcXVl c3RfaXJxKG9tYXBfa3AtPmlycSwgb21hcF9rcF9pbnRlcnJ1cHQsIDAsCisJ CQkJCSJvbWFwLWtleXBhZCIsIG9tYXBfa3ApIDwgMCkKKwkJCQlnb3RvIGVy cjQ7CisJCX0KKwkJb21hcF93cml0ZXcoMCwgT01BUF9NUFVJT19CQVNFICsg T01BUF9NUFVJT19LQkRfTUFTS0lUKTsKKwl9IGVsc2UgeworCQlmb3IgKGly cV9pZHggPSAwOyBpcnFfaWR4IDwgb21hcF9rcC0+cm93czsgaXJxX2lkeCsr KSB7CisJCQlpZiAocmVxdWVzdF9pcnEoT01BUF9HUElPX0lSUShyb3dfZ3Bp b3NbaXJxX2lkeF0pLAorCQkJCSAgICAgICAJb21hcF9rcF9pbnRlcnJ1cHQs CisJCQkJCUlSUUZfVFJJR0dFUl9GQUxMSU5HLAorCQkJCSAgICAgICAJIm9t YXAta2V5cGFkIiwgb21hcF9rcCkgPCAwKQorCQkJCWdvdG8gZXJyNTsJCisJ CX0KKwl9CisJcmV0dXJuIDA7CitlcnI1OgorCWZvciAoaSA9IGlycV9pZHgt MTsgaSA+PTA7IGktLSkgCisJCWZyZWVfaXJxKHJvd19ncGlvc1tpXSwgMCk7 CitlcnI0OgorCWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKG9tYXBfa3AtPmlu cHV0KTsKKwlpbnB1dF9kZXYgPSBOVUxMOworZXJyMzoKKwlkZXZpY2VfcmVt b3ZlX2ZpbGUoJnBkZXYtPmRldiwgJmRldl9hdHRyX2VuYWJsZSk7CitlcnIy OgorCWZvciAoaSA9IHJvd19pZHgtMTsgaSA+PTA7IGktLSkKKwkJb21hcF9m cmVlX2dwaW8ocm93X2dwaW9zW2ldKTsKK2VycjE6CisJZm9yIChpID0gY29s X2lkeC0xOyBpID49MDsgaS0tKQorCQlvbWFwX2ZyZWVfZ3Bpbyhjb2xfZ3Bp b3NbaV0pOworCisJa2ZyZWUob21hcF9rcCk7CisJaW5wdXRfZnJlZV9kZXZp Y2UoaW5wdXRfZGV2KTsKKworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0 aWMgaW50IG9tYXBfa3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCit7CisJc3RydWN0IG9tYXBfa3AgKm9tYXBfa3AgPSBwbGF0Zm9y bV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCS8qIGRpc2FibGUga2V5cGFkIGlu dGVycnVwdCBoYW5kbGluZyAqLworCXRhc2tsZXRfZGlzYWJsZSgma3BfdGFz a2xldCk7CisJaWYgKGNwdV9pc19vbWFwMjR4eCgpKSB7CisJCWludCBpOwor CQlmb3IgKGkgPSAwOyBpIDwgb21hcF9rcC0+Y29sczsgaSsrKQorCSAgICAJ CW9tYXBfZnJlZV9ncGlvKGNvbF9ncGlvc1tpXSk7CisJCWZvciAoaSA9IDA7 IGkgPCBvbWFwX2twLT5yb3dzOyBpKyspIHsKKwkgICAgCQlvbWFwX2ZyZWVf Z3Bpbyhyb3dfZ3Bpb3NbaV0pOworCQkJZnJlZV9pcnEoT01BUF9HUElPX0lS UShyb3dfZ3Bpb3NbaV0pLCAwKTsKKwkJfQorCX0gZWxzZSB7CisJCW9tYXBf d3JpdGV3KDEsIE9NQVBfTVBVSU9fQkFTRSArIE9NQVBfTVBVSU9fS0JEX01B U0tJVCk7CisJCWZyZWVfaXJxKG9tYXBfa3AtPmlycSwgMCk7CisJfQorCisJ ZGVsX3RpbWVyX3N5bmMoJm9tYXBfa3AtPnRpbWVyKTsKKwl0YXNrbGV0X2tp bGwoJmtwX3Rhc2tsZXQpOworCisJLyogdW5yZWdpc3RlciBldmVyeXRoaW5n ICovCisJaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2Uob21hcF9rcC0+aW5wdXQp OworCisJa2ZyZWUob21hcF9rcCk7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb21hcF9rcF9kcml2ZXIgPSB7 CisJLnByb2JlCQk9IG9tYXBfa3BfcHJvYmUsCisJLnJlbW92ZQkJPSBvbWFw X2twX3JlbW92ZSwKKwkuc3VzcGVuZAk9IG9tYXBfa3Bfc3VzcGVuZCwKKwku cmVzdW1lCQk9IG9tYXBfa3BfcmVzdW1lLAorCS5kcml2ZXIJCT0geworCQku bmFtZQk9ICJvbWFwLWtleXBhZCIsCisJfSwKK307CisKK3N0YXRpYyBpbnQg X19kZXZpbml0IG9tYXBfa3BfaW5pdCh2b2lkKQoreworCXByaW50ayhLRVJO X0lORk8gIk9NQVAgS2V5cGFkIERyaXZlclxuIik7CisJcmV0dXJuIHBsYXRm b3JtX2RyaXZlcl9yZWdpc3Rlcigmb21hcF9rcF9kcml2ZXIpOworfQorCitz dGF0aWMgdm9pZCBfX2V4aXQgb21hcF9rcF9leGl0KHZvaWQpCit7CisJcGxh dGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJm9tYXBfa3BfZHJpdmVyKTsKK30K KworbW9kdWxlX2luaXQob21hcF9rcF9pbml0KTsKK21vZHVsZV9leGl0KG9t YXBfa3BfZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoIlRpbW8gVGVy5HMiKTsK K01PRFVMRV9ERVNDUklQVElPTigiT01BUCBLZXlwYWQgRHJpdmVyIik7CitN T0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2Fz bS1hcm0vYXJjaC1vbWFwL2tleXBhZC5oIGIvaW5jbHVkZS9hc20tYXJtL2Fy Y2gtb21hcC9rZXlwYWQuaAppbmRleCA4YTAyM2E5Li5iN2Y4MzA3IDEwMDY0 NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2tleXBhZC5oCisr KyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAva2V5cGFkLmgKQEAgLTE0 LDcgKzE0LDEwIEBAIHN0cnVjdCBvbWFwX2twX3BsYXRmb3JtX2RhdGEgewog CWludCByb3dzOwogCWludCBjb2xzOwogCWludCAqa2V5bWFwOworCXVuc2ln bmVkIGludCBrZXltYXBzaXplOwogCXVuc2lnbmVkIGludCByZXA6MTsKKwl1 bnNpZ25lZCBsb25nIGRlbGF5OworCXVuc2lnbmVkIGludCBkYm91bmNlOjE7 CiAJLyogc3BlY2lmaWMgdG8gT01BUDI0MngqLwogCXVuc2lnbmVkIGludCAq cm93X2dwaW9zOwogCXVuc2lnbmVkIGludCAqY29sX2dwaW9zOwotLSAKMS4z LjMKCg== --_----------=_1154096354245831--