From mboxrd@z Thu Jan 1 00:00:00 1970 From: Darius Subject: [PATCH V7] I2C driver for IMX Date: Tue, 17 Jun 2008 12:05:25 +0300 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050607040303070409000806" Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.arm.linux.org.uk Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org+linux-arm-kernel=m.gmane.org@lists.arm.linux.org.uk To: linux-arm-kernel@lists.arm.linux.org.uk Cc: i2c@lm-sensors.org List-Id: linux-i2c@vger.kernel.org This is a multi-part message in MIME format. --------------050607040303070409000806 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Changes from V6 version: - Debug print fixed - Function prototypes removed Ben, can you put my patch to Linus git? Signed-off-by: Darius Augulis --- --------------050607040303070409000806 Content-Type: text/plain; name="patch-i2c-imx" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch-i2c-imx" SW5kZXg6IGxpbnV4LTIuNi4yNi1yYzQvYXJjaC9hcm0vbWFjaC1pbXgvbXgxYWRzLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gbGludXgtMi42LjI2LXJjNC5vcmlnL2FyY2gvYXJtL21hY2gtaW14 L214MWFkcy5jCisrKyBsaW51eC0yLjYuMjYtcmM0L2FyY2gvYXJtL21hY2gtaW14L214MWFk cy5jCkBAIC0xMDksMTAgKzEwOSwzMSBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSBpbXhfdWFydDJfCiAJfQogfTsKIAorc3RhdGljIHN0cnVjdCByZXNvdXJjZSBpbXhfaTJj X3Jlc291cmNlc1tdID0geworCVswXSA9IHsKKwkJLnN0YXJ0ICA9IDB4MDAyMTcwMDAsCisJ CS5lbmQgICAgPSAweDAwMjE3MDEwLAorCQkuZmxhZ3MgID0gSU9SRVNPVVJDRV9NRU0sCisJ fSwKKwlbMV0gPSB7CisJCS5zdGFydCAgPSBJMkNfSU5ULAorCQkuZW5kICAgID0gSTJDX0lO VCwKKwkJLmZsYWdzICA9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RldmljZSBpbXhfaTJjX2RldmljZSA9IHsKKwkubmFtZSAgICAgICAg ICAgPSAiaW14LWkyYyIsCisJLmlkICAgICAgICAgICAgID0gMCwKKwkucmVzb3VyY2UgICAg ICAgPSBpbXhfaTJjX3Jlc291cmNlcywKKwkubnVtX3Jlc291cmNlcyAgPSBBUlJBWV9TSVpF KGlteF9pMmNfcmVzb3VyY2VzKSwKK307CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpkZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKIAkmY3M4OXgwX2RldmljZSwKIAkmaW14 X3VhcnQxX2RldmljZSwKIAkmaW14X3VhcnQyX2RldmljZSwKKwkmaW14X2kyY19kZXZpY2Us CiB9OwogCiAjaWZkZWYgQ09ORklHX01NQ19JTVgKSW5kZXg6IGxpbnV4LTIuNi4yNi1yYzQv ZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXguYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251 bGwKKysrIGxpbnV4LTIuNi4yNi1yYzQvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXguYwpA QCAtMCwwICsxLDYyOSBAQAorLyoKKyAqCUNvcHlyaWdodCAoQykgMjAwMiBNb3Rvcm9sYSBH U0ctQ2hpbmEKKyAqCisgKglUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKgltb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICoJYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIKKyAqCW9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor ICoKKyAqCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICoJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqCU1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqCUdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICoJWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAqCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCisgKglGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsCisgKglVU0EuCisgKgorICogQXV0 aG9yOgorICoJRGFyaXVzIEF1Z3VsaXMsIFRlbHRvbmlrYSBJbmMuCisgKgorICogRGVzYy46 CisgKglJbXBsZW1lbnRhdGlvbiBvZiBJMkMgQWRhcHRlci9BbGdvcml0aG0gRHJpdmVyCisg KglEcml2ZXIgZm9yIEkyQyBCdXMgaW50ZWdyYXRlZCBpbiBpLk1YTCwgaS5NWDEKKyAqCisg Kgltb2R1bGUgcGFyYW1ldGVyczoKKyAqCQktIGNsa2ZyZXE6CisgKgkJCVNldHMgdGhlIGRl c2lyZWQgY2xvY2sgcmF0ZQorICoJCQlUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxMDAwMDAKKyAq CQkJTWF4IHZhbHVlIGlzIDQwMDAwMAorICoJCS0gaW14c2xhdmU6CisgKgkJCUlNWCBzbGF2 ZSBJMkMgYWRkcmVzcyBpbiBkZWNpbWFsIGZvcm1hdAorICoJCQlUaGUgZGVmYXVsdCB2YWx1 ZSBpcyAweEFDIGluIGhleAorICoKKyAqCURlcml2ZWQgZnJvbSBNb3Rvcm9sYSBHU0cgQ2hp bmEgSTJDIGV4YW1wbGUgZHJpdmVyCisgKgorICoJQ29weXJpZ2h0IChDKSAyMDA1IFRvcnN0 ZW4gS29zY2hvcnJlayA8a29zY2hvcnJlayBhdCBzeW5lcnRyb25peHguZGUKKyAqCVBvcnRp b25zOgorICoJQ29weXJpZ2h0IChDKSAyMDA1IE1hdHRoaWFzIEJsYXNjaGtlIDxibGFzY2hr ZSBhdCBzeW5lcnRyb25peHguZGUKKyAqCUNvcHlyaWdodCAoQykgMjAwNyBSaWdodEhhbmQg VGVjaG5vbG9naWVzLCBJbmMuIDxhZHllcmF0cmlnaHRoYW5kdGVjaC5jb20+CisgKglDb3B5 cmlnaHQgKEMpIDIwMDggRGFyaXVzIEF1Z3VsaXMgPGRhcml1cy5hdWd1bGlzIGF0IHRlbHRv bmlrYS5sdD4KKyAqCisgKi8KKworLyoqIEluY2x1ZGVzICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5j bHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5j bHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CisjaW5jbHVk ZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNs dWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUg PGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5j bHVkZSA8YXNtL2FyY2gvaXJxcy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+ CisjaW5jbHVkZSA8YXNtL2FyY2gvaW14LXJlZ3MuaD4KKworLyoqIERlZmluZXMgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRoaXMgd2lsbCBi ZSB0aGUgZHJpdmVyIG5hbWUgdGhlIGtlcm5lbCByZXBvcnRzICovCisjZGVmaW5lIERSSVZF Ul9OQU1FICJpbXgtaTJjIgorCisvKiBEZWZhdWx0IHZhbHVlcyBvZiBtb2R1bGUgcGFyYW1l dGVycyAqLworI2RlZmluZSBJTVhfSTJDX1NMQVZFX0FERFIJMHhBQworI2RlZmluZSBJTVhf STJDX0JJVF9SQVRFCTEwMDAwMAkvKiAxMDBrSHogKi8KKworLyogVGltZW91dHMgKi8KKyNk ZWZpbmUgSTJDX0lNWF9USU1FX0JVU1kJMjAwMAkvKiBsb29wIGNvdW50ICovCisjZGVmaW5l IEkyQ19JTVhfVElNRV9BQ0sJMjAwMAkvKiBsb29wIGNvdW50ICovCisjZGVmaW5lIEkyQ19J TVhfVElNRV9UUlgJNQkvKiBzZWNvbmRzICovCisKKy8qIEVycm9yIG51bWJlcnMgKi8KKyNk ZWZpbmUgSTJDX0lNWF9FUlJfQlVTWQkxCisjZGVmaW5lIEkyQ19JTVhfRVJSX1RYX1RJTUVP VVQJMgorI2RlZmluZSBJMkNfSU1YX0VSUl9SWF9USU1FT1VUCTMKKyNkZWZpbmUgSTJDX0lN WF9FUlJfUlhfTk9fQUNLCTQKKworLyogSU1YIEkyQyByZWdpc3RlcnMgKi8KKyNkZWZpbmUg SU1YX0kyQ19JQURSCTB4MDAJLyogaTJjIHNsYXZlIGFkZHJlc3MgKi8KKyNkZWZpbmUgSU1Y X0kyQ19JRkRSCTB4MDQJLyogaTJjIGZyZXF1ZW5jeSBkaXZpZGVyICovCisjZGVmaW5lIElN WF9JMkNfSTJDUgkweDA4CS8qIGkyYyBjb250cm9sICovCisjZGVmaW5lIElNWF9JMkNfSTJT UgkweDBDCS8qIGkyYyBzdGF0dXMgKi8KKyNkZWZpbmUgSU1YX0kyQ19JMkRSCTB4MTAJLyog aTJjIHRyYW5zZmVyIGRhdGEgKi8KKworLyogQml0cyBvZiBJTVggSTJDIHJlZ2lzdGVycyAq LworI2RlZmluZSBJMlNSX1JYQUsJMHgwMQorI2RlZmluZSBJMlNSX0lJRgkweDAyCisjZGVm aW5lIEkyU1JfU1JXCTB4MDQKKyNkZWZpbmUgSTJTUl9JQUwJMHgxMAorI2RlZmluZSBJMlNS X0lCQgkweDIwCisjZGVmaW5lIEkyU1JfSUFBUwkweDQwCisjZGVmaW5lIEkyU1JfSUNGCTB4 ODAKKyNkZWZpbmUgSTJDUl9SU1RBCTB4MDQKKyNkZWZpbmUgSTJDUl9UWEFLCTB4MDgKKyNk ZWZpbmUgSTJDUl9NVFgJMHgxMAorI2RlZmluZSBJMkNSX01TVEEJMHgyMAorI2RlZmluZSBJ MkNSX0lJRU4JMHg0MAorI2RlZmluZSBJMkNSX0lFTgkweDgwCisKKy8qKiBWYXJpYWJsZXMg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgdW5z aWduZWQgaW50IGNsa2ZyZXEgPSBJTVhfSTJDX0JJVF9SQVRFOworc3RhdGljIHVuc2lnbmVk IGludCBpbXhzbGF2ZSA9IElNWF9JMkNfU0xBVkVfQUREUjsKK3N0YXRpYyB1bnNpZ25lZCBp bnQgZGlzYWJsZV9kZWxheTsJLyogRHVtbXkgZGVsYXkgKi8KKworLyoKKyAqIHNvcnRlZCBs aXN0IG9mIGNsb2NrIGRpdmlkZXIsIHJlZ2lzdGVyIHZhbHVlIHBhaXJzCisgKiB0YWtlbiBm cm9tIHRhYmxlIDI2LTUsIHAuMjYtOSwgRnJlZXNjYWxlIGkuTVgKKyAqIEludGVncmF0ZWQg UG9ydGFibGUgU3lzdGVtIFByb2Nlc3NvciBSZWZlcmVuY2UgTWFudWFsCisgKiBEb2N1bWVu dCBOdW1iZXI6IE1DOTMyOE1YTFJNLCBSZXYuIDUuMSwgMDYvMjAwNworICoKKyAqIER1cGxp Y2F0ZWQgZGl2aWRlciB2YWx1ZXMgcmVtb3ZlZCBmcm9tIGxpc3QKKyAqLworCitzdGF0aWMg dTE2IF9faW5pdGRhdGEgaTJjX2lteF9jbGtfZGl2aWRlciBbNTBdIFsyXSA9IHsKKwl7IDIy LAkweDIwIH0sIHsgMjQsCTB4MjEgfSwgeyAyNiwJMHgyMiB9LCB7IDI4LAkweDIzIH0sCisJ eyAzMCwJMHgwMCB9LAl7IDMyLAkweDI0IH0sIHsgMzYsCTB4MjUgfSwgeyA0MCwJMHgyNiB9 LAorCXsgNDIsCTB4MDMgfSwgeyA0NCwJMHgyNyB9LAl7IDQ4LAkweDI4IH0sIHsgNTIsCTB4 MDUgfSwKKwl7IDU2LAkweDI5IH0sIHsgNjAsCTB4MDYgfSwgeyA2NCwJMHgyQSB9LAl7IDcy LAkweDJCIH0sCisJeyA4MCwJMHgyQyB9LCB7IDg4LAkweDA5IH0sIHsgOTYsCTB4MkQgfSwg eyAxMDQsCTB4MEEgfSwKKwl7IDExMiwJMHgyRSB9LCB7IDEyOCwJMHgyRiB9LCB7IDE0NCwJ MHgwQyB9LCB7IDE2MCwJMHgzMCB9LAorCXsgMTkyLAkweDMxIH0sCXsgMjI0LAkweDMyIH0s IHsgMjQwLAkweDBGIH0sIHsgMjU2LAkweDMzIH0sCisJeyAyODgsCTB4MTAgfSwgeyAzMjAs CTB4MzQgfSwJeyAzODQsCTB4MzUgfSwgeyA0NDgsCTB4MzYgfSwKKwl7IDQ4MCwJMHgxMyB9 LCB7IDUxMiwJMHgzNyB9LCB7IDU3NiwJMHgxNCB9LAl7IDY0MCwJMHgzOCB9LAorCXsgNzY4 LAkweDM5IH0sIHsgODk2LAkweDNBIH0sIHsgOTYwLAkweDE3IH0sIHsgMTAyNCwJMHgzQiB9 LAorCXsgMTE1MiwJMHgxOCB9LCB7IDEyODAsCTB4M0MgfSwgeyAxNTM2LAkweDNEIH0sIHsg MTc5MiwJMHgzRSB9LAorCXsgMTkyMCwJMHgxQiB9LAl7IDIwNDgsCTB4M0YgfSwgeyAyMzA0 LAkweDFDIH0sIHsgMjU2MCwJMHgxRCB9LAorCXsgMzA3MiwJMHgxRSB9LCB7IDM4NDAsCTB4 MUYgfQorfTsKKworc3RydWN0IGlteF9pMmNfc3RydWN0IHsKKwlzdHJ1Y3QgaTJjX2FkYXB0 ZXIJYWRhcHRlcjsKKwlzdHJ1Y3QgcmVzb3VyY2UJCSpyZXM7CisJdm9pZCBfX2lvbWVtCQkq YmFzZTsKKwlpbnQJCQlpcnE7CisJd2FpdF9xdWV1ZV9oZWFkX3QJcXVldWU7CisJdW5zaWdu ZWQgbG9uZwkJaTJjc3I7Cit9OworCisvKiogRnVuY3Rpb25zIGZvciBJTVggSTJDIGFkYXB0 ZXIgZHJpdmVyICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludCBpMmNfaW14X2J1c19idXN5 KHN0cnVjdCBpbXhfaTJjX3N0cnVjdCAqaTJjX2lteCkKK3sKKwl1bnNpZ25lZCBpbnQgaSA9 IDA7CisKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgIjwlcz5cbiIsIF9fZnVu Y19fKTsKKworCS8qIHdhaXQgZm9yIGJ1cyBub3QgYnVzeSAqLworCWZvciAoaSA9IDA7IGkg PCBJMkNfSU1YX1RJTUVfQlVTWTsgaSsrKSB7CisJCWlmICghKHJlYWRiKGkyY19pbXgtPmJh c2UgKyBJTVhfSTJDX0kyU1IpICYgKEkyU1JfSUJCIHwgSTJTUl9JQUwpKSkKKwkJCXJldHVy biAwOworCQl1ZGVsYXkoMSk7CisJfQorCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2 LCAiPCVzPiBJMkMgYnVzIGlzIGJ1c3khXG4iLCBfX2Z1bmNfXyk7CisJcmV0dXJuIC1JMkNf SU1YX0VSUl9CVVNZOworfQorCitzdGF0aWMgaW50IGkyY19pbXhfdHJ4X2NvbXBsZXRlKHN0 cnVjdCBpbXhfaTJjX3N0cnVjdCAqaTJjX2lteCkKK3sKKwlpbnQgcmVzdWx0OworCisJcmVz dWx0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaTJjX2lteC0+cXVldWUs CisJCShpMmNfaW14LT5pMmNzciAmIEkyU1JfSUlGKSwgSTJDX0lNWF9USU1FX1RSWCAqIEha KTsKKworCWlmICh1bmxpa2VseShyZXN1bHQgPCAwKSkgeworCQlkZXZfZGJnKCZpMmNfaW14 LT5hZGFwdGVyLmRldiwgIjwlcz4gcmVzdWx0IDwgMCFcbiIsIF9fZnVuY19fKTsKKwkJcmV0 dXJuIHJlc3VsdDsKKwl9IGVsc2UgaWYgKHVubGlrZWx5KCEoaTJjX2lteC0+aTJjc3IgJiBJ MlNSX0lJRikpKSB7CisJCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiPCVzPiBU aW1lb3V0IVxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLUkyQ19JTVhfRVJSX1RYX1RJTUVP VVQ7CisJfQorCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiPCVzPiBUUlggY29t cGxldGUhXG4iLCBfX2Z1bmNfXyk7CisJaTJjX2lteC0+aTJjc3IgPSAwOworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGkyY19pbXhfYWNrZWQoc3RydWN0IGlteF9pMmNfc3RydWN0 ICppMmNfaW14KQoreworCXVuc2lnbmVkIGludCBpID0gMDsKKworCWZvciAoaSA9IDA7IGkg PCBJMkNfSU1YX1RJTUVfQUNLOyBpKyspIHsKKwkJaWYgKCEocmVhZGIoaTJjX2lteC0+YmFz ZSArIElNWF9JMkNfSTJTUikgJiBJMlNSX1JYQUspKSB7CisJCQlkZXZfZGJnKCZpMmNfaW14 LT5hZGFwdGVyLmRldiwKKwkJCQkiPCVzPiBBQ0sgcmVjZWl2ZWRcbiIsIF9fZnVuY19fKTsK KwkJCXJldHVybiAwOworCQl9CisJCXVkZWxheSgxKTsKKwl9CisJZGV2X2RiZygmaTJjX2lt eC0+YWRhcHRlci5kZXYsICI8JXM+IE5vIEFDSyFcbiIsIF9fZnVuY19fKTsKKwlyZXR1cm4g LUkyQ19JTVhfRVJSX1JYX05PX0FDSzsgICAvKiBObyBBQ0sgKi8KK30KKworc3RhdGljIHZv aWQgaTJjX2lteF9lbmFibGUoc3RydWN0IGlteF9pMmNfc3RydWN0ICppMmNfaW14KQorewor CWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiPCVzPlxuIiwgX19mdW5jX18pOwor CXdyaXRlYihJMkNSX0lFTiwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJDUik7Cit9CisK K3N0YXRpYyB2b2lkIGkyY19pbXhfZGlzYWJsZShzdHJ1Y3QgaW14X2kyY19zdHJ1Y3QgKmky Y19pbXgpCit7CisJZGV2X2RiZygmaTJjX2lteC0+YWRhcHRlci5kZXYsICI8JXM+XG4iLCBf X2Z1bmNfXyk7CisKKwkvKiBzZXR1cCBjaGlwIHJlZ2lzdGVycyB0byBkZWZhdWx0cyAqLwor CXdyaXRlYihJMkNSX0lFTiwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJDUik7CisJd3Jp dGViKDAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyU1IpOworCS8qCisJICogVGhpcyBk ZWxheSBjYXVzZWQgYnkgYW4gaS5NWEwgaGFyZHdhcmUgYnVnLgorCSAqIElmIG5vIChvciB0 b28gc2hvcnQpIGRlbGF5LCBubyAiU1RPUCIgYml0IHdpbGwgYmUgZ2VuZXJhdGVkLgorCSAq LworCXVkZWxheShkaXNhYmxlX2RlbGF5KTsKKwl3cml0ZWIoMCwgaTJjX2lteC0+YmFzZSAr IElNWF9JMkNfSTJDUik7Cit9CisKK3N0YXRpYyB2b2lkIGkyY19pbXhfc3RhcnQoc3RydWN0 IGlteF9pMmNfc3RydWN0ICppMmNfaW14KQoreworCXVuc2lnbmVkIGludCB0ZW1wID0gMDsK KworCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiPCVzPlxuIiwgX19mdW5jX18p OworCXRlbXAgPSByZWFkYihpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsKKwl0ZW1w IHw9IEkyQ1JfTVNUQTsKKwl3cml0ZWIodGVtcCwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNf STJDUik7CisJdGVtcCB8PSAoSTJDUl9JSUVOIHwgSTJDUl9NVFggfCBJMkNSX1RYQUspOwor CXdyaXRlYih0ZW1wLCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsKK30KKworc3Rh dGljIHZvaWQgaTJjX2lteF9zdG9wKHN0cnVjdCBpbXhfaTJjX3N0cnVjdCAqaTJjX2lteCkK K3sKKwl1bnNpZ25lZCBpbnQgdGVtcCA9IDA7CisKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFw dGVyLmRldiwgIjwlcz5cbiIsIF9fZnVuY19fKTsKKwl0ZW1wID0gcmVhZGIoaTJjX2lteC0+ YmFzZSArIElNWF9JMkNfSTJDUik7CisJdGVtcCAmPSB+STJDUl9NU1RBOworCXdyaXRlYih0 ZW1wLCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsKK30KKworc3RhdGljIGludCBf X2luaXQgaTJjX2lteF9zZXRfY2xrKHN0cnVjdCBpbXhfaTJjX3N0cnVjdCAqaTJjX2lteCwg dW5zaWduZWQgaW50IHJhdGUpCit7CisJdW5zaWduZWQgaW50IGhjbGs7CisjaWZkZWYgQ09O RklHX0kyQ19ERUJVR19CVVMKKwl1bnNpZ25lZCBpbnQgc3lzY2xrOworI2VuZGlmCisJdW5z aWduZWQgaW50IGRlc2lyZWRfZGl2OworCWludCBpOworCisJLyogRGl2aWRlciB2YWx1ZSBj YWxjdWxhdGlvbiAqLworCWhjbGsgPSBpbXhfZ2V0X2hjbGsoKTsKKwlkZXNpcmVkX2RpdiA9 IChoY2xrICsgcmF0ZSAtIDEpIC8gcmF0ZTsKKwlpZiAoZGVzaXJlZF9kaXYgPCBpMmNfaW14 X2Nsa19kaXZpZGVyWzBdWzBdKQorCQlpID0gMDsKKwllbHNlIGlmIChkZXNpcmVkX2RpdiA+ IGkyY19pbXhfY2xrX2RpdmlkZXJbQVJSQVlfU0laRShpMmNfaW14X2Nsa19kaXZpZGVyKS0x XVswXSkKKwkJaSA9IEFSUkFZX1NJWkUoaTJjX2lteF9jbGtfZGl2aWRlcikgLSAxOworCWVs c2UKKwkJZm9yIChpID0gMDsgaTJjX2lteF9jbGtfZGl2aWRlcltpXVswXSA8IGRlc2lyZWRf ZGl2OyBpKyspOworCisJLyogV3JpdGUgZGl2aWRlciB2YWx1ZSB0byByZWdpc3RlciAqLwor CXdyaXRlYihpMmNfaW14X2Nsa19kaXZpZGVyW2ldWzFdLCBpMmNfaW14LT5iYXNlICsgSU1Y X0kyQ19JRkRSKTsKKworCS8qCisJICogVGhlcmUgZHVtbXkgZGVsYXkgaXMgY2FsY3VsYXRl ZC4KKwkgKiBJdCBzaG91bGQgYmUgYWJvdXQgb25lIEkyQyBjbG9jayBwZXJpb2QgbG9uZy4K KwkgKiBUaGlzIGRlbGF5IGlzIHVzZWQgaW4gSTJDIGJ1cyBkaXNhYmxlIGZ1bmN0aW9uCisJ ICogdG8gZml4IGNoaXAgaGFyZHdhcmUgYnVnLgorCSAqLworCWRpc2FibGVfZGVsYXkgPSAo NTAwMDAwVSAqIGkyY19pbXhfY2xrX2RpdmlkZXJbaV1bMF0KKwkJKyAoaGNsayAvIDIpIC0g MSkgLyAoaGNsayAvIDIpOworCisJLyogZGV2X2RiZygpIGNhbid0IGJlIHVzZWQsIGJlY2F1 c2UgYWRhcHRlciBpcyBub3QgeWV0IHJlZ2lzdGVyZWQgKi8KKyNpZmRlZiBDT05GSUdfSTJD X0RFQlVHX0JVUworCXN5c2NsayA9IGlteF9nZXRfc3lzdGVtX2NsaygpOworCXByaW50ayhL RVJOX0RFQlVHICJJMkM6IDwlcz4gU1lTQ0xLPSVkLCBIQ0xLPSVkLCBSRVEgRElWPSVkXG4i LAorCQlfX2Z1bmNfXywgc3lzY2xrLCBoY2xrLCBkZXNpcmVkX2Rpdik7CisJcHJpbnRrKEtF Uk5fREVCVUcgIkkyQzogPCVzPiBJRkRSW0lDXT0weCV4LCBSRUFMIERJVj0lZFxuIiwgX19m dW5jX18sCisJCWkyY19pbXhfY2xrX2RpdmlkZXJbaV1bMV0sIGkyY19pbXhfY2xrX2Rpdmlk ZXJbaV1bMF0pOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5f dCBpMmNfaW14X2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJc3RydWN0IGlteF9p MmNfc3RydWN0ICppMmNfaW14ID0gZGV2X2lkOworCXVuc2lnbmVkIGludCB0ZW1wOworCisJ dGVtcCA9IHJlYWRiKGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyU1IpOworCWlmICh0ZW1w ICYgSTJTUl9JSUYpIHsKKwkJLyogc2F2ZSBzdGF0dXMgcmVnaXN0ZXIgKi8KKwkJaTJjX2lt eC0+aTJjc3IgPSB0ZW1wOworCQl0ZW1wICY9IH5JMlNSX0lJRjsKKwkJd3JpdGViKHRlbXAs IGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyU1IpOworCQl3YWtlX3VwX2ludGVycnVwdGli bGUoJmkyY19pbXgtPnF1ZXVlKTsKKwl9CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisK K3N0YXRpYyBpbnQgaTJjX2lteF93cml0ZShzdHJ1Y3QgaW14X2kyY19zdHJ1Y3QgKmkyY19p bXgsIHN0cnVjdCBpMmNfbXNnICptc2dzKQoreworCWludCBpOworCisJZGV2X2RiZygmaTJj X2lteC0+YWRhcHRlci5kZXYsICI8JXM+IHdyaXRlIHNsYXZlIGFkZHJlc3M6IGFkZHI9MHgl eFxuIiwKKwkJX19mdW5jX18sIChtc2dzLT5hZGRyKSk7CisKKwkvKiB3cml0ZSBzbGF2ZSBh ZGRyZXNzICovCisJd3JpdGViKChtc2dzLT5hZGRyKSwgaTJjX2lteC0+YmFzZSArIElNWF9J MkNfSTJEUik7CisJaWYgKGkyY19pbXhfdHJ4X2NvbXBsZXRlKGkyY19pbXgpKQorCQlyZXR1 cm4gLUkyQ19JTVhfRVJSX1RYX1RJTUVPVVQ7CisJaWYgKGkyY19pbXhfYWNrZWQoaTJjX2lt eCkpCisJCXJldHVybiAtSTJDX0lNWF9FUlJfUlhfTk9fQUNLOworCWRldl9kYmcoJmkyY19p bXgtPmFkYXB0ZXIuZGV2LCAiPCVzPiB3cml0ZSBkYXRhXG4iLCBfX2Z1bmNfXyk7CisKKwkv KiB3cml0ZSBkYXRhICovCisJZm9yIChpID0gMDsgaSA8IG1zZ3MtPmxlbjsgaSsrKSB7CisJ CWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LAorCQkJIjwlcz4gd3JpdGUgYnl0ZTog QiVkPTB4JVhcbiIsIF9fZnVuY19fLAorCQkJaSwgbXNncy0+YnVmW2ldKTsKKwkJd3JpdGVi KG1zZ3MtPmJ1ZltpXSwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJEUik7CisJCWlmIChp MmNfaW14X3RyeF9jb21wbGV0ZShpMmNfaW14KSkKKwkJCXJldHVybiAtSTJDX0lNWF9FUlJf VFhfVElNRU9VVDsKKwkJaWYgKGkyY19pbXhfYWNrZWQoaTJjX2lteCkpCisJCQlyZXR1cm4g LUkyQ19JTVhfRVJSX1JYX05PX0FDSzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgaTJjX2lteF9yZWFkKHN0cnVjdCBpbXhfaTJjX3N0cnVjdCAqaTJjX2lteCwgc3RydWN0 IGkyY19tc2cgKm1zZ3MpCit7CisJaW50IGk7CisJdW5zaWduZWQgaW50IHRlbXA7CisKKwlk ZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwKKwkJIjwlcz4gd3JpdGUgc2xhdmUgYWRk cmVzczogYWRkcj0weCV4XG4iLCBfX2Z1bmNfXywKKwkJKChtc2dzLT5hZGRyKXwweDAxKSk7 CisKKwkvKiB3cml0ZSBzbGF2ZSBhZGRyZXNzICovCisJd3JpdGViKCgobXNncy0+YWRkcil8 MHgwMSksIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyRFIpOworCWlmIChpMmNfaW14X3Ry eF9jb21wbGV0ZShpMmNfaW14KSkKKwkJcmV0dXJuIC1JMkNfSU1YX0VSUl9UWF9USU1FT1VU OworCWlmIChpMmNfaW14X2Fja2VkKGkyY19pbXgpKQorCQlyZXR1cm4gLUkyQ19JTVhfRVJS X1JYX05PX0FDSzsKKworCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LCAiPCVzPiBz ZXR1cCBidXNcbiIsIF9fZnVuY19fKTsKKworCS8qIHNldHVwIGJ1cyB0byByZWFkIGRhdGEg Ki8KKwl0ZW1wID0gcmVhZGIoaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJDUik7CisJdGVt cCAmPSB+STJDUl9NVFg7CisJaWYgKG1zZ3MtPmxlbi0xKQorCQl0ZW1wICY9IH5JMkNSX1RY QUs7CisJd3JpdGViKHRlbXAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCXJl YWRiKGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyRFIpOyAvKiBkdW1teSByZWFkICovCisK KwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgIjwlcz4gcmVhZCBkYXRhXG4iLCBf X2Z1bmNfXyk7CisKKwkvKiByZWFkIGRhdGEgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbXNncy0+ bGVuOyBpKyspIHsKKwkJaWYgKGkyY19pbXhfdHJ4X2NvbXBsZXRlKGkyY19pbXgpKQorCQkJ cmV0dXJuIC1JMkNfSU1YX0VSUl9SWF9USU1FT1VUOworCQlpZiAoaSA9PSAobXNncy0+bGVu LTEpKSB7CisJCQlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwKKwkJCQkiPCVzPiBj bGVhciBNU1RBXG4iLCBfX2Z1bmNfXyk7CisJCQl0ZW1wID0gcmVhZGIoaTJjX2lteC0+YmFz ZSArIElNWF9JMkNfSTJDUik7CisJCQl0ZW1wICY9IH5JMkNSX01TVEE7CisJCQl3cml0ZWIo dGVtcCwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJDUik7CisJCX0gZWxzZSBpZiAoaSA9 PSAobXNncy0+bGVuLTIpKSB7CisJCQlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwK KwkJCQkiPCVzPiBzZXQgVFhBS1xuIiwgX19mdW5jX18pOworCQkJdGVtcCA9IHJlYWRiKGky Y19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCQkJdGVtcCB8PSBJMkNSX1RYQUs7CisJ CQl3cml0ZWIodGVtcCwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJDUik7CisJCX0KKwkJ bXNncy0+YnVmW2ldID0gcmVhZGIoaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJEUik7CisJ CWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LAorCQkJIjwlcz4gcmVhZCBieXRlOiBC JWQ9MHglWFxuIiwgX19mdW5jX18sCisJCQlpLCBtc2dzLT5idWZbaV0pOworCX0KKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBpMmNfaW14X3hmZXIoc3RydWN0IGkyY19hZGFwdGVy ICphZGFwdGVyLCBzdHJ1Y3QgaTJjX21zZyAqbXNncywgaW50IG51bSkKK3sKKwl1bnNpZ25l ZCBpbnQgaSwgdGVtcDsKKwlpbnQgZXJyID0gMDsKKwlzdHJ1Y3QgaW14X2kyY19zdHJ1Y3Qg KmkyY19pbXggPSBpMmNfZ2V0X2FkYXBkYXRhKGFkYXB0ZXIpOworCisJZGV2X2RiZygmaTJj X2lteC0+YWRhcHRlci5kZXYsICI8JXM+XG4iLCBfX2Z1bmNfXyk7CisKKwkvKiBDaGVjayBv ciBpMmMgYnVzIGlzIG5vdCBidXN5ICovCisJZXJyID0gaTJjX2lteF9idXNfYnVzeShpMmNf aW14KTsKKwlpZiAoZXJyKQorCQlnb3RvIGZhaWwwOworCisJLyogRW5hYmxlIGkyYyAqLwor CWkyY19pbXhfZW5hYmxlKGkyY19pbXgpOworCisJLyogU3RhcnQgSTJDIHRyYW5zZmVyICov CisJaTJjX2lteF9zdGFydChpMmNfaW14KTsKKworCXRlbXAgPSByZWFkYihpMmNfaW14LT5i YXNlICsgSU1YX0kyQ19JMkNSKTsKKworCS8qIHJlYWQvd3JpdGUgZGF0YSAqLworCWZvciAo aSA9IDA7IGkgPCBudW07IGkrKykgeworCQlpZiAoaSkgeworCQkJZGV2X2RiZygmaTJjX2lt eC0+YWRhcHRlci5kZXYsCisJCQkJIjwlcz4gcmVwZWF0ZWQgc3RhcnRcbiIsIF9fZnVuY19f KTsKKwkJCXRlbXAgPSByZWFkYihpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMkNSKTsKKwkJ CXRlbXAgfD0gSTJDUl9SU1RBOworCQkJd3JpdGViKHRlbXAsIGkyY19pbXgtPmJhc2UgKyBJ TVhfSTJDX0kyQ1IpOworCQl9CisJCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LAor CQkJIjwlcz4gdHJhbnNmZXIgbWVzc2FnZTogJWRcbiIsIF9fZnVuY19fLCBpKTsKKwkJLyog d3JpdGUvcmVhZCBkYXRhICovCisjaWZkZWYgQ09ORklHX0kyQ19ERUJVR19CVVMKKwkJdGVt cCA9IHJlYWRiKGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCQlkZXZfZGJnKCZp MmNfaW14LT5hZGFwdGVyLmRldiwgIjwlcz4gQ09OVFJPTDogSUVOPSVkLCBJSUVOPSVkLCAi CisJCQkiTVNUQT0lZCwgTVRYPSVkLCBUWEFLPSVkLCBSU1RBPSVkXG4iLCBfX2Z1bmNfXywK KwkJCSh0ZW1wJkkyQ1JfSUVOID8gMSA6IDApLCAodGVtcCZJMkNSX0lJRU4gPyAxIDogMCks CisJCQkodGVtcCZJMkNSX01TVEEgPyAxIDogMCksICh0ZW1wJkkyQ1JfTVRYID8gMSA6IDAp LAorCQkJKHRlbXAmSTJDUl9UWEFLID8gMSA6IDApLCAodGVtcCZJMkNSX1JTVEEgPyAxIDog MCkpOworCQl0ZW1wID0gcmVhZGIoaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSTJTUik7CisJ CWRldl9kYmcoJmkyY19pbXgtPmFkYXB0ZXIuZGV2LAorCQkJIjwlcz4gU1RBVFVTOiBJQ0Y9 JWQsIElBQVM9JWQsIElCQj0lZCwgIgorCQkJIklBTD0lZCwgU1JXPSVkLCBJSUY9JWQsIFJY QUs9JWRcbiIsIF9fZnVuY19fLAorCQkJKHRlbXAmSTJTUl9JQ0YgPyAxIDogMCksICh0ZW1w JkkyU1JfSUFBUyA/IDEgOiAwKSwKKwkJCSh0ZW1wJkkyU1JfSUJCID8gMSA6IDApLCAodGVt cCZJMlNSX0lBTCA/IDEgOiAwKSwKKwkJCSh0ZW1wJkkyU1JfU1JXID8gMSA6IDApLCAodGVt cCZJMlNSX0lJRiA/IDEgOiAwKSwKKwkJCSh0ZW1wJkkyU1JfUlhBSyA/IDEgOiAwKSk7Cisj ZW5kaWYKKwkJaWYgKCEobXNnc1tpXS5mbGFncyAmIEkyQ19NX1JEKSkKKwkJCWVyciA9IGky Y19pbXhfd3JpdGUoaTJjX2lteCwgJm1zZ3NbaV0pOworCQllbHNlCisJCQllcnIgPSBpMmNf aW14X3JlYWQoaTJjX2lteCwgJm1zZ3NbaV0pOworCX0KKworZmFpbDA6CisJLyogU3RvcCBi dXMgKi8KKwlpMmNfaW14X3N0b3AoaTJjX2lteCk7CisJLyogZGlzYWJsZSBpMmMgYnVzICov CisJaTJjX2lteF9kaXNhYmxlKGkyY19pbXgpOworCWRldl9kYmcoJmkyY19pbXgtPmFkYXB0 ZXIuZGV2LCAiPCVzPiBleGl0IHdpdGg6ICVzOiAlZFxuIiwgX19mdW5jX18sCisJCShlcnIg PCAwKSA/ICJlcnJvciIgOiAic3VjY2VzcyBtc2ciLCAoZXJyIDwgMCkgPyBlcnIgOiBudW0p OworCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiBudW07Cit9CisKK3N0YXRpYyB1MzIgaTJj X2lteF9mdW5jKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKK3sKKwlyZXR1cm4gKEky Q19GVU5DX0kyQyB8IEkyQ19GVU5DX1NNQlVTX0VNVUwpOworfQorCitzdGF0aWMgc3RydWN0 IGkyY19hbGdvcml0aG0gaTJjX2lteF9hbGdvID0geworCS5tYXN0ZXJfeGZlcgk9IGkyY19p bXhfeGZlciwKKwkuZnVuY3Rpb25hbGl0eQk9IGkyY19pbXhfZnVuYywKK307CisKK3N0YXRp YyBpbnQgX19pbml0IGkyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKK3sKKwlzdHJ1Y3QgaW14X2kyY19zdHJ1Y3QgKmkyY19pbXg7CisJc3RydWN0IHJlc291 cmNlICpyZXM7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCWludCBpcnE7CisJaW50IHJlc19z aXplOworCWludCByZXQ7CisKKwlkZXZfZGJnKCZwZGV2LT5kZXYsICI8JXM+XG4iLCBfX2Z1 bmNfXyk7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJD RV9NRU0sIDApOworCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJaWYgKCFy ZXMpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2FuJ3QgZ2V0IGRldmljZSByZXNvdXJj ZXMhXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCWlmIChpcnEgPCAwKSB7CisJCWRl dl9lcnIoJnBkZXYtPmRldiwgImNhbid0IGdldCBpcnEgbnVtYmVyIVxuIik7CisJCXJldHVy biAtRU5PREVWOworCX0KKwlyZXNfc2l6ZSA9IChyZXMtPmVuZCkgLSAocmVzLT5zdGFydCkg KyAxOworCWlmICghcmVxdWVzdF9tZW1fcmVnaW9uKHJlcy0+c3RhcnQsIHJlc19zaXplLCBy ZXMtPm5hbWUpKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImNhbid0IGFsbG9jYXRlICVk IGJ5dGVzIGF0ICVkIGFkZHJlc3MhXG4iLAorCQkJcmVzX3NpemUsIHJlcy0+c3RhcnQpOwor CQlyZXR1cm4gLUVOT01FTTsKKwl9CisJYmFzZSA9IGlvcmVtYXAocmVzLT5zdGFydCwgcmVz X3NpemUpOworCWlmICghYmFzZSkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJpb3JlbWFw IGZhaWxlZCFcbiIpOworCQlyZXQgPSAtRUlPOworCQlnb3RvIGZhaWwwOworCX0KKwlpMmNf aW14ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGlteF9pMmNfc3RydWN0KSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFpMmNfaW14KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImNhbid0IGFs bG9jYXRlIGludGVyZmFjZSFcbiIpOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGZhaWwx OworCX0KKworCS8qIFNldHVwIGkyY19pbXggZHJpdmVyIHN0cnVjdHVyZSAqLworCXN0cmNw eShpMmNfaW14LT5hZGFwdGVyLm5hbWUsIHBkZXYtPm5hbWUpOworCWkyY19pbXgtPmFkYXB0 ZXIub3duZXIJCT0gVEhJU19NT0RVTEU7CisJaTJjX2lteC0+YWRhcHRlci5hbGdvCQk9ICZp MmNfaW14X2FsZ287CisJaTJjX2lteC0+YWRhcHRlci5kZXYucGFyZW50CT0gJnBkZXYtPmRl djsKKwlpMmNfaW14LT5hZGFwdGVyLmNsYXNzIAkJPSBJMkNfQ0xBU1NfSFdNT047CisJaTJj X2lteC0+YWRhcHRlci5uciAJCT0gcGRldi0+aWQ7CisJaTJjX2lteC0+aXJxCQkJPSBpcnE7 CisJaTJjX2lteC0+YmFzZQkJCT0gYmFzZTsKKwlpMmNfaW14LT5yZXMJCQk9IHJlczsKKwor CWluaXRfd2FpdHF1ZXVlX2hlYWQoJmkyY19pbXgtPnF1ZXVlKTsKKworCS8qIFNldCB1cCBw bGF0Zm9ybSBkcml2ZXIgZGF0YSAqLworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGky Y19pbXgpOworCisJcmV0ID0gcmVxdWVzdF9pcnEoaTJjX2lteC0+aXJxLCBpMmNfaW14X2lz ciwKKwkJSVJRRl9ESVNBQkxFRCwgcGRldi0+bmFtZSwgaTJjX2lteCk7CisJaWYgKHJldCkg eworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjYW5ub3QgY2xhaW0gaXJxICVkICFcbiIsIGky Y19pbXgtPmlycSk7CisJCWdvdG8gZmFpbDI7CisJfQorCisJLyogU2V0IHVwIGFkYXB0ZXIg ZGF0YSAqLworCWkyY19zZXRfYWRhcGRhdGEoJmkyY19pbXgtPmFkYXB0ZXIsIGkyY19pbXgp OworCisJLyogU2V0IHVwIGNsb2NrIGRpdmlkZXIgKi8KKwlpMmNfaW14X3NldF9jbGsoaTJj X2lteCwgY2xrZnJlcSk7CisKKwkvKiBTZXQgdXAgSU1YIEkyQyBzbGF2ZSBhZGRyZXNzICov CisJd3JpdGViKGlteHNsYXZlLCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JQURSKTsKKwor CS8qIFNldCB1cCBJL08gcGlucyBmb3IgSTJDKi8KKwlpbXhfZ3Bpb19tb2RlKFBBMTVfUEZf STJDX1NEQSk7CisJaW14X2dwaW9fbW9kZShQQTE2X1BGX0kyQ19TQ0wpOworCisJLyogU2V0 IHVwIGNoaXAgcmVnaXN0ZXJzIHRvIGRlZmF1bHRzICovCisJd3JpdGViKDAsIGkyY19pbXgt PmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCXdyaXRlYigwLCBpMmNfaW14LT5iYXNlICsgSU1Y X0kyQ19JMlNSKTsKKworCisJLyogQWRkIEkyQyBhZGFwdGVyICovCisJcmV0ID0gaTJjX2Fk ZF9udW1iZXJlZF9hZGFwdGVyKCZpMmNfaW14LT5hZGFwdGVyKTsKKwlpZiAocmV0IDwgMCkg eworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJyZWdpc3RyYXRpb24gZmFpbGVkXG4iKTsKKwkJ Z290byBmYWlsMzsKKwl9CisKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgImNs YWltZWQgaXJxICVkXG4iLCBpMmNfaW14LT5pcnEpOworCWRldl9kYmcoJmkyY19pbXgtPmFk YXB0ZXIuZGV2LCAiZGV2aWNlIHJlc291cmNlcyBmcm9tIDB4JXggdG8gMHgleFxuIiwKKwkJ aTJjX2lteC0+cmVzLT5zdGFydCwgaTJjX2lteC0+cmVzLT5lbmQpOworCWRldl9kYmcoJmky Y19pbXgtPmFkYXB0ZXIuZGV2LCAiYWxsb2NhdGVkICVkIGJ5dGVzIGF0IDB4JXggXG4iLAor CQlyZXNfc2l6ZSwgaTJjX2lteC0+cmVzLT5zdGFydCk7CisJZGV2X2RiZygmaTJjX2lteC0+ YWRhcHRlci5kZXYsICJhZGFwdGVyIG5hbWU6IFwiJXNcIlxuIiwKKwkJaTJjX2lteC0+YWRh cHRlci5uYW1lKTsKKwlkZXZfZGJnKCZpMmNfaW14LT5hZGFwdGVyLmRldiwgIklNWCBJMkMg YWRhcHRlciByZWdpc3RlcmVkXG4iKTsKKworCXJldHVybiAwOyAgIC8qIFJldHVybiBPSyAq LworCitmYWlsMzoKKwlmcmVlX2lycShpMmNfaW14LT5pcnEsIGkyY19pbXgpOworZmFpbDI6 CisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CisJa2ZyZWUoaTJjX2lteCk7 CitmYWlsMToKKwlpb3VubWFwKGkyY19pbXgtPmJhc2UpOworZmFpbDA6CisJcmVsZWFzZV9t ZW1fcmVnaW9uKHJlcy0+c3RhcnQsIHJlc19zaXplKTsKKwlyZXR1cm4gcmV0OyAvKiBSZXR1 cm4gZXJyb3IgbnVtYmVyICovCit9CisKK3N0YXRpYyBpbnQgaTJjX2lteF9yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgaW14X2kyY19zdHJ1Y3Qg KmkyY19pbXggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCS8qIHJlbW92ZSBh ZGFwdGVyICovCisJZGV2X2RiZygmaTJjX2lteC0+YWRhcHRlci5kZXYsICJhZGFwdGVyIHJl bW92ZWRcbiIpOworCWkyY19kZWxfYWRhcHRlcigmaTJjX2lteC0+YWRhcHRlcik7CisJcGxh dGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CisKKwkvKiBmcmVlIGludGVycnVwdCAq LworCWZyZWVfaXJxKGkyY19pbXgtPmlycSwgaTJjX2lteCk7CisKKwkvKiBzZXR1cCBjaGlw IHJlZ2lzdGVycyB0byBkZWZhdWx0cyAqLworCXdyaXRlYigwLCBpMmNfaW14LT5iYXNlICsg SU1YX0kyQ19JQURSKTsKKwl3cml0ZWIoMCwgaTJjX2lteC0+YmFzZSArIElNWF9JMkNfSUZE Uik7CisJd3JpdGViKDAsIGkyY19pbXgtPmJhc2UgKyBJTVhfSTJDX0kyQ1IpOworCXdyaXRl YigwLCBpMmNfaW14LT5iYXNlICsgSU1YX0kyQ19JMlNSKTsKKworCS8qIHJlbGVhc2UgbWVt b3J5ICovCisJcmVsZWFzZV9tZW1fcmVnaW9uKGkyY19pbXgtPnJlcy0+c3RhcnQsCisJCShp MmNfaW14LT5yZXMtPmVuZCAtIGkyY19pbXgtPnJlcy0+c3RhcnQpICsgMSk7CisJaW91bm1h cChpMmNfaW14LT5iYXNlKTsKKwlrZnJlZShpMmNfaW14KTsKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaTJjX2lteF9kcml2ZXIgPSB7CisJLnBy b2JlCQk9IGkyY19pbXhfcHJvYmUsCisJLnJlbW92ZQkJPSBpMmNfaW14X3JlbW92ZSwKKwku ZHJpdmVyCT0geworCQkubmFtZQk9IERSSVZFUl9OQU1FLAorCQkub3duZXIJPSBUSElTX01P RFVMRSwKKwl9Cit9OworCitzdGF0aWMgaW50IF9faW5pdCBpMmNfYWRhcF9pbXhfaW5pdCh2 b2lkKQoreworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmkyY19pbXhfZHJp dmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGkyY19hZGFwX2lteF9leGl0KHZvaWQp Cit7CisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmkyY19pbXhfZHJpdmVyKTsKKwly ZXR1cm47Cit9CisKK21vZHVsZV9pbml0KGkyY19hZGFwX2lteF9pbml0KTsKK21vZHVsZV9l eGl0KGkyY19hZGFwX2lteF9leGl0KTsKKworbW9kdWxlX3BhcmFtKGNsa2ZyZXEsIHVpbnQs IFNfSVJVR08pOworTU9EVUxFX1BBUk1fREVTQyhjbGtmcmVxLCAiZGVzaXJlZCBJTVggSTJD IENsb2NrIFJhdGUgaW4gSHoiKTsKKworbW9kdWxlX3BhcmFtKGlteHNsYXZlLCB1aW50LCBT X0lSVUdPKTsKK01PRFVMRV9QQVJNX0RFU0MoaW14c2xhdmUsICJkZXNpcmVkIElNWCBJMkMg c2xhdmUgYWRkcmVzcyIpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQVVU SE9SKCJEYXJpdXMgQXVndWxpcyIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJJMkMgYWRhcHRl ciBkcml2ZXIgZm9yIElNWCBJMkMgYnVzIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOiIg RFJJVkVSX05BTUUpOwpJbmRleDogbGludXgtMi42LjI2LXJjNC9kcml2ZXJzL2kyYy9idXNz ZXMvS2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMjYtcmM0Lm9yaWcvZHJp dmVycy9pMmMvYnVzc2VzL0tjb25maWcKKysrIGxpbnV4LTIuNi4yNi1yYzQvZHJpdmVycy9p MmMvYnVzc2VzL0tjb25maWcKQEAgLTI1Nyw2ICsyNTcsMTYgQEAgY29uZmlnIEkyQ19JQk1f SUlDCiAJICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElm IHNvLCB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBpMmMtaWJtX2lpYy4KIAorY29u ZmlnIEkyQ19JTVgKKwl0cmlzdGF0ZSAiSU1YIEkyQyBpbnRlcmZhY2UiCisJZGVwZW5kcyBv biBBUkNIX0lNWAorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRo ZSBJSUMgYnVzIGNvbnRyb2xsZXIgb24KKwkgIHRoZSBGcmVlc2NhbGUgaS5NWEwgYW5kIGku TVgxIHByb2Nlc3NvcnMuCisKKwkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFz IGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIGkyYy1p bXguCisKIGNvbmZpZyBJMkNfSU9QM1hYCiAJdHJpc3RhdGUgIkludGVsIElPUHgzeHggYW5k IElYUDR4eCBvbi1jaGlwIEkyQyBpbnRlcmZhY2UiCiAJZGVwZW5kcyBvbiBBUkNIX0lPUDMy WCB8fCBBUkNIX0lPUDMzWCB8fCBBUkNIX0lYUDRYWCB8fCBBUkNIX0lPUDEzWFgKSW5kZXg6 IGxpbnV4LTIuNi4yNi1yYzQvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGxpbnV4LTIuNi4yNi1yYzQub3JpZy9kcml2ZXJzL2kyYy9idXNzZXMvTWFr ZWZpbGUKKysrIGxpbnV4LTIuNi4yNi1yYzQvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxl CkBAIC0xOCw2ICsxOCw3IEBAIG9iai0kKENPTkZJR19JMkNfSFlEUkEpCQkrPSBpMmMtaHlk cmEubwogb2JqLSQoQ09ORklHX0kyQ19JODAxKQkJKz0gaTJjLWk4MDEubwogb2JqLSQoQ09O RklHX0kyQ19JODEwKQkJKz0gaTJjLWk4MTAubwogb2JqLSQoQ09ORklHX0kyQ19JQk1fSUlD KQkrPSBpMmMtaWJtX2lpYy5vCitvYmotJChDT05GSUdfSTJDX0lNWCkJCSs9IGkyYy1pbXgu bwogb2JqLSQoQ09ORklHX0kyQ19JT1AzWFgpCSs9IGkyYy1pb3AzeHgubwogb2JqLSQoQ09O RklHX0kyQ19JWFAyMDAwKQkrPSBpMmMtaXhwMjAwMC5vCiBvYmotJChDT05GSUdfSTJDX1BP V0VSTUFDKQkrPSBpMmMtcG93ZXJtYWMubwo= --------------050607040303070409000806 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------- List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php --------------050607040303070409000806--