From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Miao" Subject: Re: [PATCH 1/3] input: add da9034 touchscreen support Date: Fri, 5 Dec 2008 10:13:11 +0800 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_17802_11021429.1228443191395" Return-path: Received: from rv-out-0506.google.com ([209.85.198.235]:52345 "EHLO rv-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753987AbYLECNM (ORCPT ); Thu, 4 Dec 2008 21:13:12 -0500 Received: by rv-out-0506.google.com with SMTP id k40so4264935rvb.1 for ; Thu, 04 Dec 2008 18:13:11 -0800 (PST) In-Reply-To: Sender: linux-input-owner@vger.kernel.org List-Id: linux-input@vger.kernel.org To: linux-input@vger.kernel.org Cc: Dmitry Torokhov , yaoyong@marvell.com ------=_Part_17802_11021429.1228443191395 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline The attachment for easy merge. ------=_Part_17802_11021429.1228443191395 Content-Type: text/x-diff; name=0001-input-add-da9034-touchscreen-support.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_foc7c64p0 Content-Disposition: attachment; filename=0001-input-add-da9034-touchscreen-support.patch RnJvbSBhMzI1OTEyMzAzNTEwMjQ0NGM1ODY4ZDgyNWFhMDZmZDlhNDlmYWQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIE1pYW8gPGVyaWMubWlhb0BtYXJ2ZWxsLmNvbT4KRGF0 ZTogV2VkLCAzIERlYyAyMDA4IDEzOjM5OjI4ICswODAwClN1YmplY3Q6IFtQQVRDSF0gaW5wdXQ6 IGFkZCBkYTkwMzQgdG91Y2hzY3JlZW4gc3VwcG9ydAoKQWRkIHN1cHBvcnQgZm9yIHRoZSBidWls dC1pbiB0b3VjaHNjcmVlbiBjb250cm9sbGVyIGluIERBOTAzNCAoYWthIE1pY2NvKSwKdXN1YWxs eSBmb3VuZCBvbiBwbGF0Zm9ybXMgd2l0aCB4c2NhbGUgcHJvY2Vzc29ycy4KClNpZ25lZC1vZmYt Ynk6IEVyaWMgTWlhbyA8ZXJpYy5taWFvQG1hcnZlbGwuY29tPgotLS0KIGRyaXZlcnMvaW5wdXQv dG91Y2hzY3JlZW4vS2NvbmZpZyAgICAgfCAgICA4ICsKIGRyaXZlcnMvaW5wdXQvdG91Y2hzY3Jl ZW4vTWFrZWZpbGUgICAgfCAgICAxICsKIGRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vZGE5MDM0 LXRzLmMgfCAgMzg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBj aGFuZ2VkLCAzOTQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2RhOTAzNC10cy5jCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9LY29uZmlnIGIvZHJpdmVycy9pbnB1dC90b3VjaHNj cmVlbi9LY29uZmlnCmluZGV4IDNkMWFiOGYuLmY5MjZkNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv aW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVu L0tjb25maWcKQEAgLTU4LDYgKzU4LDE0IEBAIGNvbmZpZyBUT1VDSFNDUkVFTl9DT1JHSQogCSAg Tk9URTogdGhpcyBkcml2ZXIgaXMgZGVwcmVjYXRlZCwgdHJ5IGVuYWJsZSBTUEkgYW5kIGdlbmVy aWMKIAkgIEFEUzc4NDYtYmFzZWQgdG91Y2hzY3JlZW4gZHJpdmVyLgogCitjb25maWcgVE9VQ0hT Q1JFRU5fREE5MDM0CisJdHJpc3RhdGUgIlRvdWNoc2NyZWVuIHN1cHBvcnQgZm9yIERpYWxvZyBT ZW1pY29uZHVjdG9yIERBOTAzNCIKKwlkZXBlbmRzIG9uIFBNSUNfREE5MDNYCisJZGVmYXVsdCB5 CisJaGVscAorCSAgU2F5IFkgaGVyZSB0byBlbmFibGUgdGhlIHN1cHBvcnQgZm9yIHRoZSB0b3Vj aHNjcmVlbiBmb3VuZAorCSAgb24gRGlhbG9nIFNlbWljb25kdWN0b3IgREE5MDM0IFBNSUMuCisK IGNvbmZpZyBUT1VDSFNDUkVFTl9GVUpJVFNVCiAJdHJpc3RhdGUgIkZ1aml0c3Ugc2VyaWFsIHRv dWNoc2NyZWVuIgogCXNlbGVjdCBTRVJJTwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3Vj aHNjcmVlbi9NYWtlZmlsZSBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vTWFrZWZpbGUKaW5k ZXggMTVjZjI5MC4uZjgyMzVhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVl bi9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL01ha2VmaWxlCkBAIC0y Nyw2ICsyNyw3IEBAIG9iai0kKENPTkZJR19UT1VDSFNDUkVFTl9UT1VDSFJJR0hUKQkrPSB0b3Vj aHJpZ2h0Lm8KIG9iai0kKENPTkZJR19UT1VDSFNDUkVFTl9UT1VDSFdJTikJKz0gdG91Y2h3aW4u bwogb2JqLSQoQ09ORklHX1RPVUNIU0NSRUVOX1VDQjE0MDApCSs9IHVjYjE0MDBfdHMubwogb2Jq LSQoQ09ORklHX1RPVUNIU0NSRUVOX1dNOTdYWCkJKz0gd205N3h4LXRzLm8KK29iai0kKENPTkZJ R19UT1VDSFNDUkVFTl9EQTkwMzQpCSs9IGRhOTAzNC10cy5vCiB3bTk3eHgtdHMtJChDT05GSUdf VE9VQ0hTQ1JFRU5fV005NzA1KQkrPSB3bTk3MDUubwogd205N3h4LXRzLSQoQ09ORklHX1RPVUNI U0NSRUVOX1dNOTcxMikJKz0gd205NzEyLm8KIHdtOTd4eC10cy0kKENPTkZJR19UT1VDSFNDUkVF Tl9XTTk3MTMpCSs9IHdtOTcxMy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2Ny ZWVuL2RhOTAzNC10cy5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9kYTkwMzQtdHMuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTY0ZDJkCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9kYTkwMzQtdHMuYwpAQCAtMCwwICsxLDM4 NSBAQAorLyoKKyAqIFRvdWNoc2NyZWVuIGRyaXZlciBmb3IgRGlhbG9nIFNlbWljb25kdWN0b3Ig REE5MDM0CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDggTWFydmVsbCBJbnRlcm5hdGlv bmFsIEx0ZC4KKyAqIAlGZW5nd2VpIFlpbiA8ZmVuZ3dlaS55aW5AbWFydmVsbC5jb20+CisgKiAJ RXJpYyBNaWFvIDxlcmljLm1pYW9AbWFydmVsbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K KyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVs Lmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cisj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvaW5wdXQu aD4KKyNpbmNsdWRlIDxsaW51eC9tZmQvZGE5MDN4Lmg+CisKKyNkZWZpbmUgREE5MDM0X01BTlVB TF9DVFJMCTB4NTAKKyNkZWZpbmUgREE5MDM0X0xET19BRENfRU4JKDEgPDwgNCkKKworI2RlZmlu ZSBEQTkwMzRfQVVUT19DVFJMMQkweDUxCisKKyNkZWZpbmUgREE5MDM0X0FVVE9fQ1RSTDIJMHg1 MgorI2RlZmluZSBEQTkwMzRfQVVUT19UU0lfRU4JKDEgPDwgMykKKyNkZWZpbmUgREE5MDM0X1BF Tl9ERVRFQ1QJKDEgPDwgNCkKKworI2RlZmluZSBEQTkwMzRfVFNJX0NUUkwxCTB4NTMKKyNkZWZp bmUgREE5MDM0X1RTSV9DVFJMMgkweDU0CisjZGVmaW5lIERBOTAzNF9UU0lfWF9NU0IJMHg2Ywor I2RlZmluZSBEQTkwMzRfVFNJX1lfTVNCCTB4NmQKKyNkZWZpbmUgREE5MDM0X1RTSV9YWV9MU0IJ MHg2ZQorCitlbnVtIHsKKwlTVEFURV9JRExFLAkvKiB3YWl0IGZvciBwZW5kb3duICovCisJU1RB VEVfQlVTWSwJLyogVFNJIGJ1c3kgc2FtcGxpbmcgKi8KKwlTVEFURV9TVE9QLAkvKiBzYW1wbGUg YXZhaWxhYmxlICovCisJU1RBVEVfV0FJVCwJLyogV2FpdCB0byBzdGFydCBuZXh0IHNhbXBsZSAq LworfTsKKworZW51bSB7CisJRVZFTlRfUEVOX0RPV04sCisJRVZFTlRfUEVOX1VQLAorCUVWRU5U X1RTSV9SRUFEWSwKKwlFVkVOVF9USU1FRE9VVCwKK307CisKK3N0cnVjdCBkYTkwMzRfdG91Y2gg eworCXN0cnVjdCBkZXZpY2UJCSpkYTkwMzRfZGV2OworCXN0cnVjdCBpbnB1dF9kZXYJKmlucHV0 X2RldjsKKworCXN0cnVjdCBkZWxheWVkX3dvcmsJdHNpX3dvcms7CisJc3RydWN0IG5vdGlmaWVy X2Jsb2NrCW5vdGlmaWVyOworCisJaW50CXN0YXRlOworCisJaW50CWludGVydmFsX21zOworCWlu dAl4X2ludmVydGVkOworCWludAl5X2ludmVydGVkOworCisJaW50CWxhc3RfeDsKKwlpbnQJbGFz dF95OworfTsKKworc3RhdGljIGlubGluZSBpbnQgaXNfcGVuX2Rvd24oc3RydWN0IGRhOTAzNF90 b3VjaCAqdG91Y2gpCit7CisJcmV0dXJuIGRhOTAzeF9xdWVyeV9zdGF0dXModG91Y2gtPmRhOTAz NF9kZXYsIERBOTAzNF9TVEFUVVNfUEVOX0RPV04pOworfQorCitzdGF0aWMgaW5saW5lIGludCBk ZXRlY3RfcGVuX2Rvd24oc3RydWN0IGRhOTAzNF90b3VjaCAqdG91Y2gsIGludCBvbikKK3sKKwlp ZiAob24pCisJCXJldHVybiBkYTkwM3hfc2V0X2JpdHModG91Y2gtPmRhOTAzNF9kZXYsCisJCQkJ REE5MDM0X0FVVE9fQ1RSTDIsIERBOTAzNF9QRU5fREVURUNUKTsKKwllbHNlCisJCXJldHVybiBk YTkwM3hfY2xyX2JpdHModG91Y2gtPmRhOTAzNF9kZXYsCisJCQkJREE5MDM0X0FVVE9fQ1RSTDIs IERBOTAzNF9QRU5fREVURUNUKTsKK30KKworc3RhdGljIGludCByZWFkX3RzaShzdHJ1Y3QgZGE5 MDM0X3RvdWNoICp0b3VjaCkKK3sKKwl1aW50OF90IF94LCBfeSwgX3Y7CisJaW50IHJldDsKKwor CXJldCA9IGRhOTAzeF9yZWFkKHRvdWNoLT5kYTkwMzRfZGV2LCBEQTkwMzRfVFNJX1hfTVNCLCAm X3gpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBkYTkwM3hfcmVhZCh0b3Vj aC0+ZGE5MDM0X2RldiwgREE5MDM0X1RTSV9ZX01TQiwgJl95KTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJcmV0ID0gZGE5MDN4X3JlYWQodG91Y2gtPmRhOTAzNF9kZXYsIERBOTAzNF9U U0lfWFlfTFNCLCAmX3YpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwl0b3VjaC0+bGFz dF94ID0gKChfeCA8PCAyKSAmIDB4M2ZjKSB8IChfdiAmIDB4Myk7CisJdG91Y2gtPmxhc3RfeSA9 ICgoX3kgPDwgMikgJiAweDNmYykgfCAoKF92ICYgMHhjKSA+PiAyKTsKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGlubGluZSBpbnQgc3RhcnRfdHNpKHN0cnVjdCBkYTkwMzRfdG91Y2ggKnRvdWNo KQoreworCXJldHVybiBkYTkwM3hfc2V0X2JpdHModG91Y2gtPmRhOTAzNF9kZXYsCisJCQlEQTkw MzRfQVVUT19DVFJMMiwgREE5MDM0X0FVVE9fVFNJX0VOKTsKK30KKworc3RhdGljIGlubGluZSBp bnQgc3RvcF90c2koc3RydWN0IGRhOTAzNF90b3VjaCAqdG91Y2gpCit7CisJcmV0dXJuIGRhOTAz eF9jbHJfYml0cyh0b3VjaC0+ZGE5MDM0X2RldiwKKwkJCURBOTAzNF9BVVRPX0NUUkwyLCBEQTkw MzRfQVVUT19UU0lfRU4pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcmVwb3J0X3Blbl9kb3du KHN0cnVjdCBkYTkwMzRfdG91Y2ggKnRvdWNoKQoreworCWludCB4ID0gdG91Y2gtPmxhc3RfeDsK KwlpbnQgeSA9IHRvdWNoLT5sYXN0X3k7CisKKwl4ICY9IDB4ZmZmOyB4ID0gdG91Y2gtPnhfaW52 ZXJ0ZWQgPyAoMTAyNCAtIHgpIDogeDsKKwl5ICY9IDB4ZmZmOyB5ID0gdG91Y2gtPnlfaW52ZXJ0 ZWQgPyAoMTAyNCAtIHkpIDogeTsKKworCWlucHV0X3JlcG9ydF9hYnModG91Y2gtPmlucHV0X2Rl diwgQUJTX1gsIHgpOworCWlucHV0X3JlcG9ydF9hYnModG91Y2gtPmlucHV0X2RldiwgQUJTX1ks IHkpOworCWlucHV0X3JlcG9ydF9hYnModG91Y2gtPmlucHV0X2RldiwgQUJTX1BSRVNTVVJFLCAy NTUpOworCWlucHV0X3JlcG9ydF9rZXkodG91Y2gtPmlucHV0X2RldiwgQlROX1RPVUNILCAxKTsK KworCWlucHV0X3N5bmModG91Y2gtPmlucHV0X2Rldik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCByZXBvcnRfcGVuX3VwKHN0cnVjdCBkYTkwMzRfdG91Y2ggKnRvdWNoKQoreworCWlucHV0X3Jl cG9ydF9hYnModG91Y2gtPmlucHV0X2RldiwgQUJTX1BSRVNTVVJFLCAwKTsKKwlpbnB1dF9yZXBv cnRfa2V5KHRvdWNoLT5pbnB1dF9kZXYsIEJUTl9UT1VDSCwgMCk7CisKKwlpbnB1dF9zeW5jKHRv dWNoLT5pbnB1dF9kZXYpOworfQorCitzdGF0aWMgdm9pZCBkYTkwMzRfZXZlbnRfaGFuZGxlcihz dHJ1Y3QgZGE5MDM0X3RvdWNoICp0b3VjaCwgaW50IGV2ZW50KQoreworCWludCBlcnIgPSAwOwor CisJc3dpdGNoICh0b3VjaC0+c3RhdGUpIHsKKwljYXNlIFNUQVRFX0lETEU6CisJCWlmIChldmVu dCAhPSBFVkVOVF9QRU5fRE9XTikKKwkJCWJyZWFrOworCisJCS8qIEVuYWJsZSBhdXRvIG1lYXN1 cmVtZW50IG9mIHRoZSBUU0ksIHRoaXMgd2lsbAorCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGUg cGVuIGRvd24gZGV0ZWN0aW9uCisJCSAqLworCQllcnIgPSBzdGFydF90c2kodG91Y2gpOworCQlp ZiAoZXJyKQorCQkJZ290byBlcnJfcmVzZXQ7CisKKwkJdG91Y2gtPnN0YXRlID0gU1RBVEVfQlVT WTsKKwkJYnJlYWs7CisKKwljYXNlIFNUQVRFX0JVU1k6CisJCWlmIChldmVudCAhPSBFVkVOVF9U U0lfUkVBRFkpCisJCQlicmVhazsKKworCQllcnIgPSByZWFkX3RzaSh0b3VjaCk7CisJCWlmIChl cnIpCisJCQlnb3RvIGVycl9yZXNldDsKKwkJCisJCS8qIERpc2FibGUgYXV0byBtZWFzdXJlbWVu dCBvZiB0aGUgVFNJLCBzbyB0aGF0CisJCSAqIHBlbiBkb3duIHN0YXR1cyB3aWxsIGJlIGF2YWls YWJsZQorCQkgKi8KKwkJZXJyID0gc3RvcF90c2kodG91Y2gpOworCQlpZiAoZXJyKQorCQkJZ290 byBlcnJfcmVzZXQ7CisKKwkJdG91Y2gtPnN0YXRlID0gU1RBVEVfU1RPUDsKKwkJYnJlYWs7CisK KwljYXNlIFNUQVRFX1NUT1A6CisJCWlmIChldmVudCA9PSBFVkVOVF9QRU5fRE9XTikgeworCQkJ cmVwb3J0X3Blbl9kb3duKHRvdWNoKTsKKwkJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmdG91Y2gt PnRzaV93b3JrLAorCQkJCW1zZWNzX3RvX2ppZmZpZXModG91Y2gtPmludGVydmFsX21zKSk7CisJ CQl0b3VjaC0+c3RhdGUgPSBTVEFURV9XQUlUOworCQl9CisKKwkJaWYgKGV2ZW50ID09IEVWRU5U X1BFTl9VUCkgeworCQkJcmVwb3J0X3Blbl91cCh0b3VjaCk7CisJCQl0b3VjaC0+c3RhdGUgPSBT VEFURV9JRExFOworCQl9CisKKwkJaW5wdXRfc3luYyh0b3VjaC0+aW5wdXRfZGV2KTsKKwkJYnJl YWs7CisKKwljYXNlIFNUQVRFX1dBSVQ6CisJCWlmIChldmVudCAhPSBFVkVOVF9USU1FRE9VVCkK KwkJCWJyZWFrOworCisJCWlmIChpc19wZW5fZG93bih0b3VjaCkpIHsKKwkJCXN0YXJ0X3RzaSh0 b3VjaCk7CisJCQl0b3VjaC0+c3RhdGUgPSBTVEFURV9CVVNZOworCQl9IGVsc2UKKwkJCXRvdWNo LT5zdGF0ZSA9IFNUQVRFX0lETEU7CisJCWJyZWFrOworCX0KKwlyZXR1cm47CisKK2Vycl9yZXNl dDoKKwl0b3VjaC0+c3RhdGUgPSBTVEFURV9JRExFOworCXN0b3BfdHNpKHRvdWNoKTsKKwlkZXRl Y3RfcGVuX2Rvd24odG91Y2gsIDEpOworfQorCitzdGF0aWMgdm9pZCBkYTkwMzRfdHNpX3dvcmso c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBkYTkwMzRfdG91Y2ggKnRvdWNo ID0KKwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBkYTkwMzRfdG91Y2gsIHRzaV93b3JrLndv cmspOworCisJZGE5MDM0X2V2ZW50X2hhbmRsZXIodG91Y2gsIEVWRU5UX1RJTUVET1VUKTsKK30K Kworc3RhdGljIGludCBkYTkwMzRfdG91Y2hfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYiwKKwkJCQkgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3Qg ZGE5MDM0X3RvdWNoICp0b3VjaCA9CisJCWNvbnRhaW5lcl9vZihuYiwgc3RydWN0IGRhOTAzNF90 b3VjaCwgbm90aWZpZXIpOworCisJaWYgKGV2ZW50ICYgREE5MDM0X0VWRU5UX1BFTl9ET1dOKSB7 CisJCWlmIChpc19wZW5fZG93bih0b3VjaCkpCisJCQlkYTkwMzRfZXZlbnRfaGFuZGxlcih0b3Vj aCwgRVZFTlRfUEVOX0RPV04pOworCQllbHNlCisJCQlkYTkwMzRfZXZlbnRfaGFuZGxlcih0b3Vj aCwgRVZFTlRfUEVOX1VQKTsKKwl9CisKKwlpZiAoZXZlbnQgJiBEQTkwMzRfRVZFTlRfVFNJX1JF QURZKQorCQlkYTkwMzRfZXZlbnRfaGFuZGxlcih0b3VjaCwgRVZFTlRfVFNJX1JFQURZKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRhOTAzNF90b3VjaF9vcGVuKHN0cnVjdCBpbnB1 dF9kZXYgKmRldikKK3sKKwlzdHJ1Y3QgZGE5MDM0X3RvdWNoICp0b3VjaCA9IGlucHV0X2dldF9k cnZkYXRhKGRldik7CisJaW50IHJldDsKKworCXJldCA9IGRhOTAzeF9yZWdpc3Rlcl9ub3RpZmll cih0b3VjaC0+ZGE5MDM0X2RldiwgJnRvdWNoLT5ub3RpZmllciwKKwkJCURBOTAzNF9FVkVOVF9Q RU5fRE9XTiB8IERBOTAzNF9FVkVOVF9UU0lfUkVBRFkpOworCWlmIChyZXQpCisJCXJldHVybiAt RUJVU1k7CisKKwkvKiBFbmFibGUgQURDIExETyAqLworCXJldCA9IGRhOTAzeF9zZXRfYml0cyh0 b3VjaC0+ZGE5MDM0X2RldiwKKwkJCURBOTAzNF9NQU5VQUxfQ1RSTCwgREE5MDM0X0xET19BRENf RU4pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBUU0lfREVMQVk6IDMgc2xvdHMs IFRTSV9TS0lQOiAzIHNsb3RzICovCisJcmV0ID0gZGE5MDN4X3dyaXRlKHRvdWNoLT5kYTkwMzRf ZGV2LCBEQTkwMzRfVFNJX0NUUkwxLCAweDFiKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJcmV0ID0gZGE5MDN4X3dyaXRlKHRvdWNoLT5kYTkwMzRfZGV2LCBEQTkwMzRfVFNJX0NUUkwy LCAweDAwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJdG91Y2gtPnN0YXRlID0gU1RB VEVfSURMRTsKKwlkZXRlY3RfcGVuX2Rvd24odG91Y2gsIDEpOworCXJldHVybiAwOworfQorCitz dGF0aWMgdm9pZCBkYTkwMzRfdG91Y2hfY2xvc2Uoc3RydWN0IGlucHV0X2RldiAqZGV2KQorewor CXN0cnVjdCBkYTkwMzRfdG91Y2ggKnRvdWNoID0gaW5wdXRfZ2V0X2RydmRhdGEoZGV2KTsKKwor CWRhOTAzeF91bnJlZ2lzdGVyX25vdGlmaWVyKHRvdWNoLT5kYTkwMzRfZGV2LCAmdG91Y2gtPm5v dGlmaWVyLAorCQkJREE5MDM0X0VWRU5UX1BFTl9ET1dOIHwgREE5MDM0X0VWRU5UX1RTSV9SRUFE WSk7CisKKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnRvdWNoLT50c2lfd29yayk7CisKKwl0 b3VjaC0+c3RhdGUgPSBTVEFURV9JRExFOworCXN0b3BfdHNpKHRvdWNoKTsKKwlkZXRlY3RfcGVu X2Rvd24odG91Y2gsIDApOworCisJLyogRGlzYWJsZSBBREMgTERPICovCisJZGE5MDN4X2Nscl9i aXRzKHRvdWNoLT5kYTkwMzRfZGV2LAorCQkJREE5MDM0X01BTlVBTF9DVFJMLCBEQTkwMzRfTERP X0FEQ19FTik7Cit9CisKKworc3RhdGljIGludCBfX2RldmluaXQgZGE5MDM0X3RvdWNoX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRhOTAzNF90b3VjaF9w ZGF0YSAqcGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwlzdHJ1Y3QgZGE5MDM0X3Rv dWNoICp0b3VjaDsKKwlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9kZXY7CisJaW50IHJldCA9IDA7 CisKKwl0b3VjaCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkYTkwMzRfdG91Y2gpLCBHRlBfS0VS TkVMKTsKKwlpZiAodG91Y2ggPT0gTlVMTCkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWls ZWQgdG8gYWxsb2NhdGUgZHJpdmVyIGRhdGFcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisK Kwl0b3VjaC0+ZGE5MDM0X2Rldgk9IHBkZXYtPmRldi5wYXJlbnQ7CisKKwlpZiAocGRhdGEpIHsK KwkJdG91Y2gtPmludGVydmFsX21zCT0gcGRhdGEtPmludGVydmFsX21zOworCQl0b3VjaC0+eF9p bnZlcnRlZAk9IHBkYXRhLT54X2ludmVydGVkOworCQl0b3VjaC0+eV9pbnZlcnRlZAk9IHBkYXRh LT55X2ludmVydGVkOworCX0gZWxzZQorCQkvKiBmYWxsYmFjayBpbnRvIGRlZmF1bHQgKi8KKwkJ dG91Y2gtPmludGVydmFsX21zCT0gMTA7CisKKwlJTklUX0RFTEFZRURfV09SSygmdG91Y2gtPnRz aV93b3JrLCBkYTkwMzRfdHNpX3dvcmspOworCXRvdWNoLT5ub3RpZmllci5ub3RpZmllcl9jYWxs ID0gZGE5MDM0X3RvdWNoX25vdGlmaWVyOworCisJaW5wdXRfZGV2ID0gaW5wdXRfYWxsb2NhdGVf ZGV2aWNlKCk7CisJaWYgKCFpbnB1dF9kZXYpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFp bGVkIHRvIGFsbG9jYXRlIGlucHV0IGRldmljZVxuIik7CisJCXJldCA9IC1FTk9NRU07CisJCWdv dG8gZXJyX2ZyZWVfdG91Y2g7CisJfQorCisJaW5wdXRfZGV2LT5uYW1lCQk9IHBkZXYtPm5hbWU7 CisJaW5wdXRfZGV2LT5vcGVuCQk9IGRhOTAzNF90b3VjaF9vcGVuOworCWlucHV0X2Rldi0+Y2xv c2UJPSBkYTkwMzRfdG91Y2hfY2xvc2U7CisJaW5wdXRfZGV2LT5kZXYucGFyZW50CT0gJnBkZXYt PmRldjsKKworCXNldF9iaXQoRVZfQUJTLCBpbnB1dF9kZXYtPmV2Yml0KTsKKwlzZXRfYml0KEFC U19YLCBpbnB1dF9kZXYtPmFic2JpdCk7CisJc2V0X2JpdChBQlNfWSwgaW5wdXRfZGV2LT5hYnNi aXQpOworCXNldF9iaXQoQUJTX1BSRVNTVVJFLCBpbnB1dF9kZXYtPmFic2JpdCk7CisKKwlpbnB1 dF9zZXRfYWJzX3BhcmFtcyhpbnB1dF9kZXYsIEFCU19YLCAwLCAxMDIzLCAwLCAwKTsKKwlpbnB1 dF9zZXRfYWJzX3BhcmFtcyhpbnB1dF9kZXYsIEFCU19ZLCAwLCAxMDIzLCAwLCAwKTsKKwlpbnB1 dF9zZXRfYWJzX3BhcmFtcyhpbnB1dF9kZXYsIEFCU19QUkVTU1VSRSwgMCwgMjU1LCAwLCAwKTsK KworCXRvdWNoLT5pbnB1dF9kZXYgPSBpbnB1dF9kZXY7CisJaW5wdXRfc2V0X2RydmRhdGEoaW5w dXRfZGV2LCB0b3VjaCk7CisKKwlyZXQgPSBpbnB1dF9yZWdpc3Rlcl9kZXZpY2UoaW5wdXRfZGV2 KTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mcmVlX2lucHV0OworCisJcGxhdGZvcm1fc2V0X2Ry dmRhdGEocGRldiwgdG91Y2gpOworCXJldHVybiAwOworCitlcnJfZnJlZV9pbnB1dDoKKwlpbnB1 dF9mcmVlX2RldmljZShpbnB1dF9kZXYpOworZXJyX2ZyZWVfdG91Y2g6CisJa2ZyZWUodG91Y2gp OworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgX19kZXZleGl0IGRhOTAzNF90b3VjaF9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGE5MDM0X3Rv dWNoICp0b3VjaCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJaW5wdXRfZnJlZV9k ZXZpY2UodG91Y2gtPmlucHV0X2Rldik7CisJa2ZyZWUodG91Y2gpOworCXJldHVybiAwOworfQor CitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkYTkwMzRfdG91Y2hfZHJpdmVyID0gewor CS5kcml2ZXIJPSB7CisJCS5uYW1lCT0gImRhOTAzNC10b3VjaCIsCisJCS5vd25lcgk9IFRISVNf TU9EVUxFLAorCX0sCisJLnByb2JlCQk9IGRhOTAzNF90b3VjaF9wcm9iZSwKKwkucmVtb3ZlCQk9 IGRhOTAzNF90b3VjaF9yZW1vdmUsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBkYTkwMzRfdG91 Y2hfaW5pdCh2b2lkKQoreworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmRhOTAz NF90b3VjaF9kcml2ZXIpOworfQorbW9kdWxlX2luaXQoZGE5MDM0X3RvdWNoX2luaXQpOworCitz dGF0aWMgdm9pZCBfX2V4aXQgZGE5MDM0X3RvdWNoX2V4aXQodm9pZCkKK3sKKwlwbGF0Zm9ybV9k cml2ZXJfdW5yZWdpc3RlcigmZGE5MDM0X3RvdWNoX2RyaXZlcik7Cit9Cittb2R1bGVfZXhpdChk YTkwMzRfdG91Y2hfZXhpdCk7CisKK01PRFVMRV9ERVNDUklQVElPTigiVG91Y2hzY3JlZW4gZHJp dmVyIGZvciBEaWFsb2cgU2VtaWNvbmR1Y3RvciBEQTkwMzQiKTsKK01PRFVMRV9BVVRIT1IoIkVy aWMgTWlhbyA8ZXJpYy5taWFvQG1hcnZlbGwuY29tPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpkYTkwMzQtdG91Y2giKTsKLS0gCjEuNi4wLjQKCg== ------=_Part_17802_11021429.1228443191395--