From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from exchange.timesys.com (mail.timesys.com [65.117.135.102]) by ozlabs.org (Postfix) with ESMTP id 3E21067A7F for ; Wed, 23 Mar 2005 07:33:44 +1100 (EST) From: Jason McMullan To: linuxppc-embedded Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-2WMuOPj1DVvzLVfYPWGo" Date: Tue, 22 Mar 2005 15:33:37 -0500 Message-Id: <1111523617.2987.61.camel@ad.doubleclick.net> Mime-Version: 1.0 Subject: [PATCH] CPM2 I2C (SDMA and Bit-Banger) List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --=-2WMuOPj1DVvzLVfYPWGo Content-Type: multipart/mixed; boundary="=-iU+oLTOsq5c3D0XKiw6q" --=-iU+oLTOsq5c3D0XKiw6q Content-Type: text/plain Content-Transfer-Encoding: quoted-printable This patch adds CPM2 I2C support, both in bit-bang and CPM SDMA modes. Lightly tested, and should be easily ported to the MPC8xx's CPM. --=20 Jason McMullan TimeSys Corporation --=-iU+oLTOsq5c3D0XKiw6q Content-Disposition: attachment; filename=driver-i2c-cpm.patch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=driver-i2c-cpm.patch; charset=ISO-8859-1 IyMjIyBBdXRvLWdlbmVyYXRlZCBwYXRjaCAjIyMjDQpEYXRlOiAgICAgICAgVHVlLCAyMiBNYXIg MjAwNSAxNToyMzoyNyAtMDUwMA0KTWFpbnRhaW5lcjogIEphc29uIE1jTXVsbGFuIDxqbWNtdWxs YW5AdGltZXN5cy5jb20+DQpTdW1tYXJ5OiAgICAgQ1BNL0NQTTIgSTJDIGRyaXZlciBmb3IgRnJl ZXNjYWxlIFNvQyBkZXZpY2VzDQpEZXNjcmlwdGlvbjogQ1BNL0NQTTIgSTJDIGRyaXZlciBmb3Ig RnJlZXNjYWxlIFNvQyBkZXZpY2VzDQpEZXBlbmRzOg0KCQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIw0KDQpJbmRleCBvZiBjaGFuZ2VzOg0KDQogZHJpdmVycy9pMmMvYWxnb3MvS2Nv bmZpZyAgICAgICAgICAgICAgfCAgICA0IA0KIGRyaXZlcnMvaTJjL2FsZ29zL01ha2VmaWxlICAg ICAgICAgICAgIHwgICAgMSANCiBkcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZyAgICAgICAgICAg ICB8ICAgMjUgKw0KIGRyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZSAgICAgICAgICAgIHwgICAg MSANCiBpbmNsdWRlL2xpbnV4L2kyYy1pZC5oICAgICAgICAgICAgICAgICB8ICAgIDQgDQogbGlu dXgvZHJpdmVycy9pMmMvYWxnb3MvaTJjLWFsZ28tY3BtLmMgfCAgNDc3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KIGxpbnV4L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtY3BtLmMg ICAgIHwgIDIxNSArKysrKysrKysrKysrKw0KIGxpbnV4L2luY2x1ZGUvbGludXgvaTJjLWFsZ28t Y3BtLmggICAgIHwgICA2NCArKysrDQogOCBmaWxlcyBjaGFuZ2VkLCA3ODcgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkNCg0KDQotLS0gbGludXgtb3JpZy9kcml2ZXJzL2kyYy9hbGdvcy9L Y29uZmlnDQorKysgbGludXgvZHJpdmVycy9pMmMvYWxnb3MvS2NvbmZpZw0KQEAgLTE2LDYgKzE2 LDEwIEBADQogCSAgVGhpcyBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiAg SWYgc28sIHRoZSBtb2R1bGUgDQogCSAgd2lsbCBiZSBjYWxsZWQgaTJjLWFsZ28tYml0Lg0KIA0K K2NvbmZpZyBJMkNfQUxHT19DUE0NCisJdHJpc3RhdGUgIk1QQyAoOHh4IGFuZCA4eHh4KSBDUE0g STJDIGludGVyZmFjZSINCisJZGVwZW5kcyBvbiAoOHh4IHx8IDg1eHggKSAmJiBJMkMNCisNCiBj b25maWcgSTJDX0FMR09QQ0YNCiAJdHJpc3RhdGUgIkkyQyBQQ0YgODU4NCBpbnRlcmZhY2VzIg0K IAlkZXBlbmRzIG9uIEkyQw0KLS0tIGxpbnV4LW9yaWcvZHJpdmVycy9pMmMvYWxnb3MvTWFrZWZp bGUNCisrKyBsaW51eC9kcml2ZXJzL2kyYy9hbGdvcy9NYWtlZmlsZQ0KQEAgLTMsNiArMyw3IEBA DQogIw0KIA0KIG9iai0kKENPTkZJR19JMkNfQUxHT0JJVCkJKz0gaTJjLWFsZ28tYml0Lm8NCitv YmotJChDT05GSUdfSTJDX0FMR09fQ1BNKQkrPSBpMmMtYWxnby1jcG0ubw0KIG9iai0kKENPTkZJ R19JMkNfQUxHT1BDRikJKz0gaTJjLWFsZ28tcGNmLm8NCiBvYmotJChDT05GSUdfSTJDX0FMR09Q Q0EpCSs9IGkyYy1hbGdvLXBjYS5vDQogb2JqLSQoQ09ORklHX0kyQ19BTEdPSVRFKQkrPSBpMmMt YWxnby1pdGUubw0KLS0tIC9kZXYvbnVsbA0KKysrIGxpbnV4L2RyaXZlcnMvaTJjL2FsZ29zL2ky Yy1hbGdvLWNwbS5jDQpAQCAtMCwwICsxLDQ3NyBAQA0KKy8qDQorICogaTJjLWFsZ28tY3BtLmMg aTJ4IGRyaXZlciBhbGdvcml0aG1zIGZvciBNb3Rvcm9sYSBNUEMgQ1BNDQorICogQ29weXJpZ2h0 IChjKSAyMDA0IEphc29uIE1jTXVsbGFuIChqYXNvbi5tY211bGxhbkB0aW1lc3lzLmNvbSkNCisg KiBDb3B5cmlnaHQgKGMpIDE5OTkgRGFuIE1hbGVrIChkbWFsZWtAamxjLm5ldCkuDQorICoNCisg KiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkNCisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisgKiAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCisgKiAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQ0KKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLg0KKyAqDQorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICogIEZvdW5kYXRpb24s IEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLg0KKyAqDQorICog YmFzZWQgb24gaTJjLWFsZ28tY3BtLmMNCisgKi8NCisNCisvKiAkSWQkICovDQorDQorI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQorI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPg0KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+DQorI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4NCisjaW5jbHVkZSA8bGlu dXgvaW9wb3J0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+DQorI2luY2x1ZGUgPGxpbnV4 L3NjaGVkLmg+DQorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KKyNpbmNsdWRlIDxsaW51 eC9wY2kuaD4NCisNCisjaW5jbHVkZSA8bGludXgvaTJjLmg+DQorI2luY2x1ZGUgPGxpbnV4L2ky Yy1hbGdvLWNwbS5oPg0KKw0KKyNpbmNsdWRlIDxhc20vaW8uaD4NCisNCisjZGVmaW5lIEkyQ19W RVJTSU9OCSIwLjEiDQorI2RlZmluZSBJMkNfREFURQkiTWFyIDIyLCAyMDA1Ig0KKw0KKyNkZWZp bmUgQ1BNX01BWF9SRUFECTUxMw0KKy8qICNkZWZpbmUgSTJDX0NISVBfRVJSQVRBICovIC8qIFRy eSB1bmNvbW1lbnQgdGhpcyBpZiB5b3UgaGF2ZSBhbiBvbGRlciBDUFUoZWFybGllciB0aGFuIHJl diBENCkgKi8NCisNCisjdW5kZWYgREVCVUcNCisNCisjaWZkZWYgREVCVUcNCitpbnQgY3BtX2Rl YnVnID0gMDsNCitNT0RVTEVfUEFSTShjcG1fZGVidWcsICJpIik7DQorI2RlZmluZSBzdGF0aWMg LyoqLw0KKyNkZWZpbmUgRFBSSU5USyhmbXQsIGFyZ3MuLi4pIHByaW50ayhLRVJOX0lORk8gZm10 ICwjI2FyZ3MpDQorI2Vsc2UNCisjZGVmaW5lIERQUklOVEsoYXJncy4uLikgZG8geyB9IHdoaWxl ICgwKQ0KKyNlbmRpZg0KKw0KK3N0YXRpYyB2b2lkIGNwbV9pMmNfcGFyYW1fcmVzZXQoc3RydWN0 IGkyY19hbGdvX2NwbV9kYXRhICpjcG1fYWRhcCkNCit7DQorCXZvbGF0aWxlIGNwbV9paWNfdAkq aWlwID0gY3BtX2FkYXAtPmlpcDsNCisNCisJLyogU2V0IHVwIHRoZSBJSUMgcGFyYW1ldGVycyBp biB0aGUgcGFyYW1ldGVyIHJhbS4NCisJKi8NCisJaWlwLT5paWNfcmJhc2UgPSBjcG1fYWRhcC0+ ZHBfb2Zmc2V0Ow0KKwlpaXAtPmlpY190YmFzZSA9IGNwbV9hZGFwLT5kcF9vZmZzZXQgKyBzaXpl b2YoY2JkX3QpKjI7DQorDQorCS8qIEluaXRpYWxpemUgdGhlIHBhcmFtZXRlciByYW0uDQorCSAq IFdlIG5lZWQgdG8gbWFrZSBzdXJlIG1hbnkgdGhpbmdzIGFyZSBpbml0aWFsaXplZCB0byB6ZXJv LA0KKwkgKiBlc3BlY2lhbGx5IGluIHRoZSBjYXNlIG9mIGEgbWljcm9jb2RlIHBhdGNoLg0KKwkg Ki8NCisJaWlwLT5paWNfcnN0YXRlID0gMDsNCisJaWlwLT5paWNfcmRwID0gMDsNCisJaWlwLT5p aWNfcmJwdHIgPSAwOw0KKwlpaXAtPmlpY19yYmMgPSAwOw0KKwlpaXAtPmlpY19yeHRtcCA9IDA7 DQorCWlpcC0+aWljX3RzdGF0ZSA9IDA7DQorCWlpcC0+aWljX3RkcCA9IDA7DQorCWlpcC0+aWlj X3RicHRyID0gMDsNCisJaWlwLT5paWNfdGJjID0gMDsNCisJaWlwLT5paWNfdHh0bXAgPSAwOw0K Kw0KKwlpaXAtPmlpY190ZmNyID0gQ1BNRkNSX0VCIHwgQ1BNRkNSX0dCTDsNCisJaWlwLT5paWNf cmZjciA9IENQTUZDUl9FQiB8IENQTUZDUl9HQkw7DQorDQorCS8qIFNldCBtYXhpbXVtIHJlY2Vp dmUgc2l6ZS4NCisJKi8NCisJaWlwLT5paWNfbXJibHIgPSBDUE1fTUFYX1JFQUQ7DQorDQorfQ0K Kw0KK3N0YXRpYyBpbnQgaTJjX2NwbV9zdGFydChzdHJ1Y3QgaTJjX2FsZ29fY3BtX2RhdGEgKmNw bSkNCit7DQorCXZvbGF0aWxlIGNwbV9pMmNfdCAqaTJjID0gY3BtLT5pMmM7DQorDQorCURQUklO VEsoImkyY19jcG1fc3RhcnQ6IFJlYWR5IChpMmNtcj0lLjJ4LCBpMmNlcj0lLjJ4LCBpMmNvbT0l LjJ4LCBpMm1vZD0lLjJ4KVxuIiwgaTJjLT5pMmNfaTJjbXIsaTJjLT5pMmNfaTJjZXIsaTJjLT5p MmNfaTJjb20saTJjLT5pMmNfaTJtb2QpOw0KKw0KKwkvKiBXYWl0IGZvciBJSUMgdHJhbnNmZXIg Ki8NCisJY3BtLT5zdGF0dXMgPSAtRUJVU1k7DQorCWkyYy0+aTJjX2kybW9kICY9IH5JMk1PRF9F TjsNCisNCisJLyogQ2hpcCBidWcsIHNldCBlbmFibGUgaGVyZSAqLw0KKwlpMmMtPmkyY19pMmNt ciA9IEkyQ0VSX01BU0s7CS8qIEVuYWJsZSBpbnRlcnVwdHMgKi8NCisJaTJjLT5pMmNfaTJjZXIg PSBJMkNFUl9NQVNLOw0KKwlpMmMtPmkyY19pMm1vZCA9IEkyTU9EX0VOOwkJLyogRW5hYmxlICov DQorCWkyYy0+aTJjX2kyY29tID0gSTJDT01fU1RSIHwgSTJDT01fTVM7CS8qIEJlZ2luIHRyYW5z bWlzc2lvbiAqLw0KKwlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKCZjcG0tPndhaXQpOw0KKw0KKwlE UFJJTlRLKCJpMmNfY3BtX3N0YXJ0OiBEb25lICAoaTJjbXI9JS4yeCwgaTJjZXI9JS4yeCwgaTJj b209JS4yeCwgaTJtb2Q9JS4yeClcbiIsIGkyYy0+aTJjX2kyY21yLGkyYy0+aTJjX2kyY2VyLGky Yy0+aTJjX2kyY29tLGkyYy0+aTJjX2kybW9kKTsNCisNCisJRFBSSU5USygiaTJjX2NwbV9zdGFy dDogcmVzdWx0PSVkXG4iLGNwbS0+c3RhdHVzKTsNCisJcmV0dXJuIGNwbS0+c3RhdHVzOw0KK30N CisNCitzdGF0aWMgaXJxcmV0dXJuX3QgaTJjX2NwbV9pbnRlcnJ1cHQoaW50IHVudXNlZCwgdm9p ZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykNCisgew0KKwlzdHJ1Y3QgaTJjX2FsZ29f Y3BtX2RhdGEgKmNwbV9hZGFwID0gZGV2X2lkOw0KKwl1aW50OF90IGV2ZW50czsNCisNCisjaWZk ZWYgSTJDX0NISVBfRVJSQVRBDQorCS8qIENoaXAgZXJyYXRhLCBjbGVhciBlbmFibGUuDQorCSAq IFRoaXMgc2VlbXMgdG8gbm90IGJlIG5lZWRlZCBvbiByZXYgRDQgb3IgbmV3ZXIgQ1BVcy4NCisJ ICogU29tZW9uZSB3aXRoIGFuIG9sZGVyIENQVSBuZWVkcyB0byB2ZXJpZnkgdGhpcy4NCisJICov DQorCWNwbV9hZGFwLT5pMmMtPmkyY19pMm1vZCAmPSB+STJNT0RfRU47IHdtYigpOw0KKyNlbmRp Zg0KKw0KKwlldmVudHMgPSBjcG1fYWRhcC0+aTJjLT5pMmNfaTJjZXI7DQorCURQUklOVEsoImky Y19jcG1faW50ZXJydXB0OiBkZXZfaWQ9MHglcCwgaTJjZXI9MHglLjJ4XG4iLCBkZXZfaWQsZXZl bnRzKTsNCisNCisNCisJaWYgKGV2ZW50cyAmIEkyQ0VSX1RYRSkgew0KKwkJY3BtX2FkYXAtPnN0 YXR1cyA9IC1FTk9ERVY7DQorCX0gZWxzZSBpZiAoZXZlbnRzICYgSTJDRVJfQlNZKSB7DQorCQlj cG1fYWRhcC0+c3RhdHVzID0gLUVBR0FJTjsNCisJfSBlbHNlIGlmIChldmVudHMgJiAoSTJDRVJf UlhCIHwgSTJDRVJfVFhCKSkgew0KKwkJY3BtX2FkYXAtPnN0YXR1cyA9IDA7DQorCX0NCisNCisJ LyogQ2xlYXIgaW50ZXJydXB0Lg0KKwkqLw0KKwljcG1fYWRhcC0+aTJjLT5pMmNfaTJjZXIgPSBl dmVudHM7IHdtYigpOw0KKw0KKwkvKiBHZXQgJ2VtIGdvaW5nIGFnYWluLg0KKwkqLw0KKwl3YWtl X3VwX2ludGVycnVwdGlibGUoJmNwbV9hZGFwLT53YWl0KTsNCisNCisJcmV0dXJuIElSUV9IQU5E TEVEOw0KK30NCisNCisvKiBSZWFkIGZyb20gSUlDLi4uDQorICogYWJ5dGUgPSBhZGRyZXNzIGJ5 dGUsIHdpdGggci93IGZsYWcgYWxyZWFkeSBzZXQNCisgKi8NCitzdGF0aWMgaW50IGkyY19jcG1f cmVhZChzdHJ1Y3QgaTJjX2FsZ29fY3BtX2RhdGEgKmNwbSwgdWludDhfdCBhYnl0ZSwgY2hhciAq YnVmLCBpbnQgY291bnQpDQorew0KKwl2b2xhdGlsZSBjYmRfdAkqdGJkZiwgKnJiZGY7DQorCXVp bnQ4X3QgKnRiOw0KKwlkbWFfYWRkcl90IHRiX2RtYVsyXTsNCisJaW50IGVycjsNCisNCisJRFBS SU5USygiaTJjX2NwbV9yZWFkOiBhYnl0ZT0weCV4KCVjKVxuIiwgYWJ5dGU+PjEsICJ3ciJbYWJ5 dGUmMV0pOw0KKw0KKwlpZiAoY291bnQgPj0gQ1BNX01BWF9SRUFEKQ0KKwkJcmV0dXJuIC1FSU5W QUw7DQorDQorCS8qIElmIHdlIGFyZSByZWxvY2F0ZWQsIHdlIG11c3QgcmVzZXQgdGhlIHBhcmFt cyAqLw0KKwlpZiAoY3BtLT5yZWxvYykNCisJCWNwbV9pMmNfcGFyYW1fcmVzZXQoY3BtKTsNCisN CisJcmJkZiA9ICh2b2lkICopY3BtX2RwcmFtX2FkZHIoY3BtLT5paXAtPmlpY19yYmFzZSk7DQor CXRiZGYgPSAodm9pZCAqKWNwbV9kcHJhbV9hZGRyKGNwbS0+aWlwLT5paWNfdGJhc2UpOw0KKw0K KwkvKiBUbyByZWFkLCB3ZSBuZWVkIGFuIGVtcHR5IGJ1ZmZlciBvZiB0aGUgcHJvcGVyIGxlbmd0 aC4NCisJICogQWxsIHRoYXQgaXMgdXNlZCBpcyB0aGUgZmlyc3QgYnl0ZSBmb3IgYWRkcmVzcywg dGhlIHJlbWFpbmRlcg0KKwkgKiBpcyBqdXN0IHVzZWQgZm9yIHRpbWluZyAoYW5kIGRvZXNuJ3Qg cmVhbGx5IGhhdmUgdG8gZXhpc3QpLg0KKwkgKi8NCisJdGIgPSBjcG0tPnRlbXA7DQorCXRiWzBd ID0gYWJ5dGU7CQkvKiBEZXZpY2UgYWRkcmVzcyBieXRlIHcvcncgZmxhZyAqLw0KKw0KKw0KKwl0 Yl9kbWFbMF0gPSBkbWFfbWFwX3NpbmdsZShjcG0tPmRldmljZSwgdGIsIDEsIERNQV9UT19ERVZJ Q0UpOw0KKwl0YmRmLT5jYmRfYnVmYWRkciA9IHRiX2RtYVswXTsNCisJdGJkZi0+Y2JkX2RhdGxl biA9IDE7DQorCXRiZGYtPmNiZF9zYyA9IEJEX1NDX1JFQURZIHwgQkRfU0NfTEFTVCB8IEJEX1ND X1dSQVAgfCBCRF9JSUNfU1RBUlQ7DQorDQorCWNwbS0+aWlwLT5paWNfbXJibHIgPSBjb3VudCAr IDE7DQorDQorCXRiX2RtYVsxXSA9IGRtYV9tYXBfc2luZ2xlKGNwbS0+ZGV2aWNlLCBidWYsIGNv dW50LCBETUFfRlJPTV9ERVZJQ0UpOw0KKwlyYmRmLT5jYmRfZGF0bGVuID0gMDsNCisJcmJkZi0+ Y2JkX2J1ZmFkZHIgPSB0Yl9kbWFbMV07DQorCXJiZGYtPmNiZF9zYyA9IEJEX1NDX0VNUFRZIHwg QkRfU0NfV1JBUHwgQkRfU0NfSU5UUlBUOw0KKw0KKwlEUFJJTlRLKCJ0YmRmLT5jYmRfc2MoMHgl cCkgPSAweCUuNHhcbiIsJnRiZGYtPmNiZF9zYyx0YmRmLT5jYmRfc2MpOw0KKwlEUFJJTlRLKCJy YmRmLT5jYmRfc2MoMHglcCkgPSAweCUuNHhcbiIsJnJiZGYtPmNiZF9zYyxyYmRmLT5jYmRfc2Mp Ow0KKwllcnIgPSBpMmNfY3BtX3N0YXJ0KGNwbSk7DQorCWRtYV91bm1hcF9zaW5nbGUoY3BtLT5k ZXZpY2UsIHRiX2RtYVsxXSwgY291bnQsIERNQV9GUk9NX0RFVklDRSk7DQorCWRtYV91bm1hcF9z aW5nbGUoY3BtLT5kZXZpY2UsIHRiX2RtYVswXSwgMSwgRE1BX1RPX0RFVklDRSk7DQorCURQUklO VEsoInRiZGYtPmNiZF9zYygweCVwKSA9IDB4JS40eFxuIiwmdGJkZi0+Y2JkX3NjLHRiZGYtPmNi ZF9zYyk7DQorCURQUklOVEsoInJiZGYtPmNiZF9zYygweCVwKSA9IDB4JS40eFxuIiwmcmJkZi0+ Y2JkX3NjLHJiZGYtPmNiZF9zYyk7DQorCWlmIChlcnIpDQorCQlyZXR1cm4gZXJyOw0KKw0KKwlp ZiAodGJkZi0+Y2JkX3NjICYgQkRfU0NfUkVBRFkpIHsNCisJCURQUklOVEsoImkyY19jcG1fcmVh ZDogY29tcGxldGUgYnV0IHRidWYgcmVhZHlcbiIpOw0KKwkJRFBSSU5USygiXHR0eCBzYyAlMDR4 LCByeCBzYyAlMDR4XG4iLCB0YmRmLT5jYmRfc2MsIHJiZGYtPmNiZF9zYyk7DQorCQlyZXR1cm4g LUVSRU1PVEVJTzsNCisJfQ0KKw0KKwlpZiAodGJkZi0+Y2JkX3NjICYgQkRfU0NfTkFLKSB7DQor CQlEUFJJTlRLKCJpMmNfY3BtX3JlYWQ6IG5vIGFja1xuIik7DQorCQlyZXR1cm4gLUVSRU1PVEVJ TzsNCisgCX0NCisNCisJaWYgKHJiZGYtPmNiZF9zYyAmIEJEX1NDX0VNUFRZKSB7DQorCQlEUFJJ TlRLKCJpMmNfY3BtX3JlYWQ6IGNvbXBsZXRlIGJ1dCByYnVmIGVtcHR5XG4iKTsNCisJCURQUklO VEsoIlx0dHggc2MgJTA0eCwgcnggc2MgJTA0eFxuIiwgdGJkZi0+Y2JkX3NjLCByYmRmLT5jYmRf c2MpOw0KKwkJcmV0dXJuIC1FUkVNT1RFSU87DQorCX0NCisNCisJaWYgKHJiZGYtPmNiZF9zYyAm IEJEX1NDX09WKSB7DQorCQlEUFJJTlRLKCJpMmNfY3BtX3JlYWQ6IE92ZXJydW5cbiIpOw0KKwkJ cmV0dXJuIC1FUkVNT1RFSU87DQorIAl9DQorDQorCURQUklOVEsoImkyY19jcG1fcmVhZDogcmVh ZCAlZCBieXRlc1xuIiwgcmJkZi0+Y2JkX2RhdGxlbik7DQorDQorCWlmIChyYmRmLT5jYmRfZGF0 bGVuIDwgY291bnQpIHsNCisJCURQUklOVEsoImkyY19jcG1fcmVhZDogc2hvcnQsIHdhbnRlZCAl ZCBnb3QgJWRcbiIsIGNvdW50LCByYmRmLT5jYmRfZGF0bGVuKTsNCisJfQ0KKw0KKwlyZXR1cm4g Y291bnQ7DQorfQ0KKw0KKy8qIFdyaXRlIHRvIElJQy4uLg0KKyAqIGFkZHIgPSBhZGRyZXNzIGJ5 dGUsIHdpdGggci93IGZsYWcgYWxyZWFkeSBzZXQNCisgKi8NCitzdGF0aWMgaW50DQoraTJjX2Nw bV93cml0ZShzdHJ1Y3QgaTJjX2FsZ29fY3BtX2RhdGEgKmNwbSwgdWludDhfdCBhYnl0ZSwgY2hh ciAqYnVmLGludCBjb3VudCkNCit7DQorCXZvbGF0aWxlIGNiZF90ICp0YmRmLCAqcmJkZjsNCisJ dWludDhfdCAqdGI7DQorCWRtYV9hZGRyX3QgdGJfZG1hWzJdOw0KKwlpbnQgZXJyOw0KKw0KKwlE UFJJTlRLKCJpMmNfY3BtX3dyaXRlOiBhYnl0ZT0weCV4KCVjKVxuIiwgYWJ5dGU+PjEsICJ3ciJb YWJ5dGUmMV0pOw0KKw0KKwkvKiBJZiB3ZSBhcmUgcmVsb2NhdGVkLCB3ZSBtdXN0IHJlc2V0IHRo ZSBwYXJhbXMgKi8NCisJaWYgKGNwbS0+cmVsb2MpDQorCQljcG1faTJjX3BhcmFtX3Jlc2V0KGNw bSk7DQorDQorCXRiID0gY3BtLT50ZW1wOw0KKwl0YlswXSA9IGFieXRlOwkJLyogRGV2aWNlIGFk ZHJlc3MgYnl0ZSB3L3J3IGZsYWcgKi8NCisNCisJLyogc2V0IHVwIDIgZGVzY3JpcHRvcnMgKi8N CisJdGJkZiA9ICh2b2lkICopY3BtX2RwcmFtX2FkZHIoY3BtLT5paXAtPmlpY190YmFzZSk7DQor CXJiZGYgPSAodm9pZCAqKWNwbV9kcHJhbV9hZGRyKGNwbS0+aWlwLT5paWNfcmJhc2UpOw0KKw0K Kwl0Yl9kbWFbMF0gPSBkbWFfbWFwX3NpbmdsZShjcG0tPmRldmljZSwgdGIsIDEsIERNQV9UT19E RVZJQ0UpOw0KKwl0YmRmWzBdLmNiZF9idWZhZGRyID0gdGJfZG1hWzBdOw0KKwl0YmRmWzBdLmNi ZF9kYXRsZW4gPSAxOw0KKwl0YmRmWzBdLmNiZF9zYyA9IEJEX1NDX1JFQURZIHwgQkRfU0NfSU5U UlBUIHwgQkRfSUlDX1NUQVJUOw0KKw0KKwlpZiAoY291bnQgPiAwKSB7DQorCQl0Yl9kbWFbMV0g PSBkbWFfbWFwX3NpbmdsZShjcG0tPmRldmljZSwgYnVmLCBjb3VudCwgRE1BX1RPX0RFVklDRSk7 DQorCQl0YmRmWzFdLmNiZF9idWZhZGRyID0gdGJfZG1hWzFdOw0KKwkJdGJkZlsxXS5jYmRfZGF0 bGVuID0gY291bnQ7DQorCQl0YmRmWzFdLmNiZF9zYyA9IEJEX1NDX1JFQURZIHwgQkRfU0NfSU5U UlBUIHwgQkRfU0NfTEFTVCB8IEJEX1NDX1dSQVA7DQorCX0gZWxzZSB7DQorCQl0YmRmWzBdLmNi ZF9zYyB8PSBCRF9TQ19JTlRSUFQgfCBCRF9TQ19MQVNUIHwgQkRfU0NfV1JBUDsNCisJCXRiX2Rt YVsxXSA9IDA7DQorCX0NCisNCisJcmJkZlswXS5jYmRfc2MgPSBCRF9TQ19XUkFQOw0KKw0KKwlE UFJJTlRLKCJ0YmRmLT5jYmRfc2MoMHglcCkgPSAweCUuNHgoJWQpLDB4JS40eCglZClcbiIsJnRi ZGYtPmNiZF9zYyx0YmRmWzBdLmNiZF9zYyx0YmRmWzBdLmNiZF9kYXRsZW4sdGJkZlsxXS5jYmRf c2MsdGJkZlsxXS5jYmRfZGF0bGVuKTsNCisJZXJyID0gaTJjX2NwbV9zdGFydChjcG0pOw0KKw0K KwlpZiAodGJfZG1hWzFdKQ0KKwkJZG1hX3VubWFwX3NpbmdsZShjcG0tPmRldmljZSwgdGJfZG1h WzFdLCBjb3VudCwgRE1BX1RPX0RFVklDRSk7DQorCWRtYV91bm1hcF9zaW5nbGUoY3BtLT5kZXZp Y2UsIHRiX2RtYVswXSwgMSwgRE1BX1RPX0RFVklDRSk7DQorDQorCURQUklOVEsoInRiZGYtPmNi ZF9zYygweCVwKSA9IDB4JS40eCglZCksMHglLjR4KCVkKVxuIiwmdGJkZi0+Y2JkX3NjLHRiZGZb MF0uY2JkX3NjLHRiZGZbMF0uY2JkX2RhdGxlbix0YmRmWzFdLmNiZF9zYyx0YmRmWzFdLmNiZF9k YXRsZW4pOw0KKwlpZiAoZXJyIDwgMCkNCisJCXJldHVybiBlcnI7DQorDQorDQorCWlmICh0YmRm LT5jYmRfc2MgJiBCRF9TQ19OQUspIHsNCisJCURQUklOVEsoImkyY19jcG1fd3JpdGU7IG5vIGFj a1xuIik7DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0KKw0KKwlpZiAodGJkZi0+Y2JkX3NjICYg QkRfU0NfUkVBRFkpIHsNCisJCURQUklOVEsoImkyY19jcG1fd3JpdGU6IGNvbXBsZXRlIGJ1dCB0 YnVmIHJlYWR5XG4iKTsNCisJCXJldHVybiAtRVJFTU9URUlPOw0KKwl9DQorDQorCXJldHVybiBj b3VudDsNCit9DQorDQorc3RhdGljIGludCBjcG1feGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmky Y19hZGFwLA0KKwkJICAgIHN0cnVjdCBpMmNfbXNnIG1zZ3NbXSwNCisJCSAgICBpbnQgbnVtKQ0K K3sNCisJc3RydWN0IGkyY19hbGdvX2NwbV9kYXRhICphZGFwID0gaTJjX2FkYXAtPmFsZ29fZGF0 YTsNCisJc3RydWN0IGkyY19tc2cgKnBtc2c7DQorCWludCBpLCByZXQ7DQorCXVpbnQ4X3QgYWRk cjsNCisNCisJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKSB7DQorCQlwbXNnID0gJm1zZ3NbaV07 DQorDQorCQlEUFJJTlRLKCJpMmMtYWxnby1jcG06ICMlZCBhZGRyPTB4JXggZmxhZ3M9MHgleCBs ZW49JWRcbiBidWY9JWx4XG4iLCBpLCBwbXNnLT5hZGRyLCBwbXNnLT5mbGFncywgcG1zZy0+bGVu LCAodW5zaWduZWQgbG9uZylwbXNnLT5idWYpOw0KKw0KKwkJYWRkciA9IHBtc2ctPmFkZHIgPDwg MTsNCisJCWlmIChwbXNnLT5mbGFncyAmIEkyQ19NX1JEICkNCisJCQlhZGRyIHw9IDE7DQorCQlp ZiAocG1zZy0+ZmxhZ3MgJiBJMkNfTV9SRVZfRElSX0FERFIgKQ0KKwkJCWFkZHIgXj0gMTsNCisN CisJCWlmICghKHBtc2ctPmZsYWdzICYgSTJDX01fTk9TVEFSVCkpIHsNCisJCX0NCisJCWlmIChw bXNnLT5mbGFncyAmIEkyQ19NX1JEICkgew0KKwkJCS8qIHJlYWQgYnl0ZXMgaW50byBidWZmZXIq Lw0KKwkJCXJldCA9IGkyY19jcG1fcmVhZChhZGFwLCBhZGRyLCBwbXNnLT5idWYsIHBtc2ctPmxl bik7DQorCQkJRFBSSU5USygiaTJjLWFsZ28tY3BtOiByZWFkICVkIGJ5dGVzXG4iLCByZXQpOw0K KwkJCWlmIChyZXQgPCBwbXNnLT5sZW4gKSB7DQorCQkJCXJldHVybiAocmV0PDApPyByZXQgOiAt RVJFTU9URUlPOw0KKwkJCX0NCisJCX0gZWxzZSB7DQorCQkJLyogd3JpdGUgYnl0ZXMgZnJvbSBi dWZmZXIgKi8NCisJCQlyZXQgPSBpMmNfY3BtX3dyaXRlKGFkYXAsIGFkZHIsIHBtc2ctPmJ1Ziwg cG1zZy0+bGVuKTsNCisJCQlEUFJJTlRLKCJpMmMtYWxnby1jcG06IHdyb3RlICVkXG4iLCByZXQp Ow0KKwkJCWlmIChyZXQgPCBwbXNnLT5sZW4gKSB7DQorCQkJCXJldHVybiAocmV0PDApID8gcmV0 IDogLUVSRU1PVEVJTzsNCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuIChudW0pOw0KK30NCisN CitzdGF0aWMgaW50IGFsZ29fY29udHJvbChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsDQor CXVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQ0KK3sNCisJcmV0dXJuIDA7DQor fQ0KKw0KK3N0YXRpYyB1MzIgY3BtX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKQ0KK3sN CisJcmV0dXJuIEkyQ19GVU5DX1NNQlVTX0VNVUwgfCBJMkNfRlVOQ19QUk9UT0NPTF9NQU5HTElO RzsNCit9DQorDQorLyogLS0tLS1leHBvcnRlZCBhbGdvcml0aG0gZGF0YTogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkqLw0KKw0KK3N0YXRpYyBzdHJ1Y3QgaTJjX2FsZ29y aXRobSBjcG1fYWxnbyA9IHsNCisJIkNQTTIgYWxnb3JpdGhtIiwNCisJSTJDX0FMR09fQ1BNMiwN CisJY3BtX3hmZXIsDQorCU5VTEwsDQorCU5VTEwsCQkJCS8qIHNsYXZlX3htaXQJCSovDQorCU5V TEwsCQkJCS8qIHNsYXZlX3JlY3YJCSovDQorCWFsZ29fY29udHJvbCwJCQkvKiBpb2N0bAkJKi8N CisJY3BtX2Z1bmMsCQkJLyogZnVuY3Rpb25hbGl0eQkqLw0KK307DQorDQorc3RhdGljIGludCBp MmNfY3BtX2luaXQoc3RydWN0IGkyY19hbGdvX2NwbV9kYXRhICpjcG1fYWRhcCkNCit7DQorCXZv bGF0aWxlIGNwbV9pMmNfdAkqaTJjID0gY3BtX2FkYXAtPmkyYzsNCisJdW5zaWduZWQgY2hhciBi cmc7DQorDQorCURQUklOVEsoImkyY19jcG1faW5pdCgpIC0gaWlwPSVwXG4iLGNwbV9hZGFwLT5p aXApOw0KKw0KKwljcG1fYWRhcC0+ZHBfb2Zmc2V0ID0gY3BtX2RwYWxsb2Moc2l6ZW9mKGNiZF90 KSo0KzEsIDE2KTsNCisJY3BtX2FkYXAtPnRlbXAgPSBjcG1fZHByYW1fYWRkcihjcG1fYWRhcC0+ ZHBfb2Zmc2V0K3NpemVvZihjYmRfdCkqNCk7DQorDQorCWNwbV9pMmNfcGFyYW1fcmVzZXQoY3Bt X2FkYXApOw0KKw0KKwkvKiBJbml0aWFsaXplIFR4L1J4IHBhcmFtZXRlcnMuDQorCSovDQorCWlm ICghIGNwbV9hZGFwLT5yZWxvYykNCisJCWNwbV9jcF9jb21tYW5kKENQTV9DUF9JMkMsIENQTV9D Ul9JTklUX1RSWCk7DQorDQorCS8qIFNlbGVjdCBhbiBhcmJpdHJhcnkgYWRkcmVzcy4gIEp1c3Qg bWFrZSBzdXJlIGl0IGlzIHVuaXF1ZS4NCisJKi8NCisJaTJjLT5pMmNfaTJhZGQgPSAweGZjOyB3 bWIoKTsNCisNCisJLyogTWFrZSBjbG9jayBydW4gYXQgNjAgS0h6Lg0KKwkqLw0KKwlicmcgPSAo dW5zaWduZWQgY2hhcikgKGNwbV9hZGFwLT5pbnRmcmVxLygzMioyKjYwMDAwKSAtMyk7DQorCWky Yy0+aTJjX2kyYnJnID0gYnJnOw0KKw0KKwlpMmMtPmkyY19pMm1vZCA9IEkyTU9EX0ZMVDsgLyog RW5hYmxlIGZpbHRlciAqLw0KKw0KKwkvKiBEaXNhYmxlIGludGVycnVwdHMuDQorCSovDQorCWky Yy0+aTJjX2kyY21yID0gMDsNCisJaTJjLT5pMmNfaTJjZXIgPSAweGZmOw0KKw0KKwlpbml0X3dh aXRxdWV1ZV9oZWFkKCZjcG1fYWRhcC0+d2FpdCk7DQorDQorCS8qIEluc3RhbGwgaW50ZXJydXB0 IGhhbmRsZXIuDQorCSovDQorCURQUklOVEsoIiVzWyVkXSBJbnN0YWxsIElTUiBmb3IgSVJRICVk XG4iLCBfX2Z1bmNfXyxfX0xJTkVfXywgY3BtX2FkYXAtPmlycSk7DQorCXJldHVybiByZXF1ZXN0 X2lycShjcG1fYWRhcC0+aXJxLCBpMmNfY3BtX2ludGVycnVwdCwgMCwgImkyYy1hbGdvLWNwbSIs IGNwbV9hZGFwKTsNCit9DQorDQorDQorc3RhdGljIGludA0KK2kyY19jcG1fc2h1dGRvd24oc3Ry dWN0IGkyY19hbGdvX2NwbV9kYXRhICpjcG1fYWRhcCkNCit7DQorCXZvbGF0aWxlIGNwbV9pMmNf dCAqaTJjID0gY3BtX2FkYXAtPmkyYzsNCisNCisJLyogU2h1dCBkb3duIElJQy4NCisJKi8NCisJ aTJjLT5pMmNfaTJtb2QgJj0gfkkyTU9EX0VOOw0KKwlpMmMtPmkyY19pMmNtciA9IDA7DQorCWky Yy0+aTJjX2kyY2VyID0gSTJDRVJfTUFTSzsNCisJZnJlZV9pcnEoY3BtX2FkYXAtPmlycSxjcG1f YWRhcCk7DQorCWNwbV9kcGZyZWUoY3BtX2FkYXAtPmRwX29mZnNldCk7DQorDQorCXJldHVybigw KTsNCit9DQorDQorLyoNCisgKiByZWdpc3RlcmluZyBmdW5jdGlvbnMgdG8gbG9hZCBhbGdvcml0 aG1zIGF0IHJ1bnRpbWUNCisgKi8NCitpbnQgaTJjX2NwbV9hZGRfYnVzKHN0cnVjdCBpMmNfYWRh cHRlciAqYWRhcCkNCit7DQorCXN0cnVjdCBpMmNfYWxnb19jcG1fZGF0YSAqY3BtX2FkYXAgPSBh ZGFwLT5hbGdvX2RhdGE7DQorDQorCURQUklOVEsoImkyYy1hbGdvLWNwbTogaHcgcm91dGluZXMg Zm9yICVzIHJlZ2lzdGVyZWQuXG4iLCBhZGFwLT5uYW1lKTsNCisNCisJLyogcmVnaXN0ZXIgbmV3 IGFkYXB0ZXIgdG8gaTJjIG1vZHVsZS4uLiAqLw0KKw0KKwlhZGFwLT5pZCB8PSBjcG1fYWxnby5p ZDsNCisJYWRhcC0+YWxnbyA9ICZjcG1fYWxnbzsNCisNCisJaTJjX2FkZF9hZGFwdGVyKGFkYXAp Ow0KKwlpMmNfY3BtX2luaXQoY3BtX2FkYXApOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQoraW50 IGkyY19jcG1fZGVsX2J1cyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXApDQorew0KKwlpbnQgcmVz Ow0KKwlzdHJ1Y3QgaTJjX2FsZ29fY3BtX2RhdGEgKmNwbV9hZGFwID0gYWRhcC0+YWxnb19kYXRh Ow0KKw0KKwlpMmNfY3BtX3NodXRkb3duKGNwbV9hZGFwKTsNCisNCisJaWYgKChyZXMgPSBpMmNf ZGVsX2FkYXB0ZXIoYWRhcCkpIDwgMCkNCisJCXJldHVybiByZXM7DQorDQorCXByaW50aygiaTJj LWFsZ28tY3BtOiBhZGFwdGVyIHVucmVnaXN0ZXJlZDogJXNcbiIsYWRhcC0+bmFtZSk7DQorDQor CXJldHVybiAwOw0KK30NCisNCitNT0RVTEVfTElDRU5TRSgiR1BMIik7DQorRVhQT1JUX1NZTUJP TChpMmNfY3BtX2FkZF9idXMpOw0KK0VYUE9SVF9TWU1CT0woaTJjX2NwbV9kZWxfYnVzKTsNCisN CitpbnQgX19pbml0IGkyY19hbGdvX2NwbV9pbml0ICh2b2lkKQ0KK3sNCisJcHJpbnRrKCJpMmMt YWxnby1jcG06IENQTTIgSTJDIGFsZ29yaXRobSBtb2R1bGUgdmVyc2lvbiAlcyAoJXMpXG4iLCBJ MkNfVkVSU0lPTiwgSTJDX0RBVEUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorDQorTU9EVUxFX0FV VEhPUigiSmFzb24gTWNNdWxsYW4gPGphc29uLm1jbXVsbGFuQHRpbWVzeXMuY29tPiIpOw0KK01P RFVMRV9ERVNDUklQVElPTigiSTJDLUJ1cyBDUE0yIGFsZ29yaXRobSIpOw0KKw0KK3N0YXRpYyB2 b2lkIGkyY19hbGdvX2NwbV9leGl0KHZvaWQpDQorew0KK30NCisNCittb2R1bGVfaW5pdChpMmNf YWxnb19jcG1faW5pdCk7DQorbW9kdWxlX2V4aXQoaTJjX2FsZ29fY3BtX2V4aXQpOw0KDQotLS0g bGludXgtb3JpZy9kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZw0KKysrIGxpbnV4L2RyaXZlcnMv aTJjL2J1c3Nlcy9LY29uZmlnDQpAQCAtMjI5LDYgKzIyOSwyMSBAQA0KIAkgIFRoaXMgZHJpdmVy IGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUNCiAJICB3 aWxsIGJlIGNhbGxlZCBpMmMtbXBjLg0KIA0KK2NvbmZpZyBJMkNfQ1BNDQorCXRyaXN0YXRlICJN b3Rvcm9sYSBNUEM4eHggYW5kIE1QQzg1eHggQ1BNIEkyQyINCisJZGVwZW5kcyBvbiAoOHh4IHx8 IDg1eHgpICYmIEkyQw0KKwloZWxwDQorCSAgVGhpcyBzdXBwb3J0cyB0aGUgdXNlIG9mIHRoZSBJ MkMgaW50ZXJmYWNlIGluIHRoZSBNb3Rvcm9sYQ0KKwkgIE1QQzh4eCBhbmQgTVBDODV4eCBzZXJp ZXMgZW1iZWRkZWQgcHJvY2Vzc29ycyBvbiB0aGUgQ1BNDQorCSAgSTJDIG1hY3JvY2VsbC4NCisN Citjb25maWcgSTJDX0NQTV9CSVQNCisJYm9vbCAiQml0LUJhbmcgb25seT8iDQorCWRlcGVuZHMg b24gSTJDX0NQTQ0KKwloZWxwDQorCSAgT25seSB1c2UgdGhlIENQTSBwYXJhbGxlbCBwb3J0IGJp dC1iYW5naW5nIGludGVyZmFjZSwgbm90IHRoZQ0KKwkgIFNETUEgQ1BNIGRldmljZS4NCisNCiBj b25maWcgSTJDX05GT1JDRTINCiAJdHJpc3RhdGUgIk52aWRpYSBOZm9yY2UyIg0KIAlkZXBlbmRz IG9uIEkyQyAmJiBQQ0kgJiYgRVhQRVJJTUVOVEFMDQpAQCAtMzE3LDEwICszMzIsMTIgQEANCiAJ ICBUaGlzIHN1cHBvcnQgaXMgYWxzbyBhdmFpbGFibGUgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhl IG1vZHVsZSANCiAJICB3aWxsIGJlIGNhbGxlZCBpMmMtcHJvc2F2YWdlLg0KIA0KLWNvbmZpZyBJ MkNfUlBYTElURQ0KLQl0cmlzdGF0ZSAiRW1iZWRkZWQgUGxhbmV0IFJQWCBMaXRlL0NsYXNzaWMg c3VwcG9ydCINCi0JZGVwZW5kcyBvbiAoUlBYTElURSB8fCBSUFhDTEFTU0lDKSAmJiBJMkMNCi0J c2VsZWN0IEkyQ19BTEdPOFhYDQorIyBUaGlzIGFwcGVhcnMgdG8gYmUgYnJva2VuLi4uDQorIw0K KyNjb25maWcgSTJDX1JQWExJVEUNCisjCXRyaXN0YXRlICJFbWJlZGRlZCBQbGFuZXQgUlBYIExp dGUvQ2xhc3NpYyBzdXBwb3J0Ig0KKyMJZGVwZW5kcyBvbiAoUlBYTElURSB8fCBSUFhDTEFTU0lD KSAmJiBJMkMNCisjCXNlbGVjdCBJMkNfQUxHTzhYWA0KIA0KIGNvbmZpZyBJMkNfUzNDMjQxMA0K IAl0cmlzdGF0ZSAiUzNDMjQxMCBJMkMgRHJpdmVyIg0KLS0tIGxpbnV4LW9yaWcvZHJpdmVycy9p MmMvYnVzc2VzL01ha2VmaWxlDQorKysgbGludXgvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxl DQpAQCAtOCw2ICs4LDcgQEANCiBvYmotJChDT05GSUdfSTJDX0FNRDc1NikJKz0gaTJjLWFtZDc1 Ni5vDQogb2JqLSQoQ09ORklHX0kyQ19BTUQ3NTZfUzQ4ODIpCSs9IGkyYy1hbWQ3NTYtczQ4ODIu bw0KIG9iai0kKENPTkZJR19JMkNfQU1EODExMSkJKz0gaTJjLWFtZDgxMTEubw0KK29iai0kKENP TkZJR19JMkNfQ1BNKQkJKz0gaTJjLWNwbS5vDQogb2JqLSQoQ09ORklHX0kyQ19BVTE1NTApCSs9 IGkyYy1hdTE1NTAubw0KIG9iai0kKENPTkZJR19JMkNfRUxFS1RPUikJKz0gaTJjLWVsZWt0b3Iu bw0KIG9iai0kKENPTkZJR19JMkNfSFlEUkEpCQkrPSBpMmMtaHlkcmEubw0KLS0tIC9kZXYvbnVs bA0KKysrIGxpbnV4L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtY3BtLmMNCkBAIC0wLDAgKzEsMjE1 IEBADQorLyoNCisgKiBDUE0gSTJDIGludGVyZmFjZS4NCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQg SmFzb24gTWNNdWxsYW4gKGphc29uLm1jbXVsbGFuQHRpbWVzeXMuY29tKQ0KKyAqIENvcHlyaWdo dCAoYykgMTk5OSBEYW4gTWFsZWsgKGRtYWxla0BqbGMubmV0KS4NCisgKg0KKyAqIE9uLUNoaXAg UGVyaXBoZXJhbCB2ZXJzaW9uIG9mIHRoZSBNb3Rvcm9sYSBDUE0gSTJDIG1hY3JvY2VsbCBkcml2 ZXIsDQorICogdXNlZCBvbiB0aGUgTVBDOHh4IGFuZCBNUEM4NXh4IHNlcmllcyBwcm9jZXNzb3Jz Lg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bGludXgv aW9wb3J0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9p bml0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L3N0ZGRlZi5oPg0KKyNpbmNsdWRlIDxsaW51eC9kZXZp Y2UuaD4NCisNCisjaW5jbHVkZSA8bGludXgvaTJjLmg+DQorDQorI2luY2x1ZGUgPGFzbS9pby5o Pg0KKyNpZmRlZiBDT05GSUdfQ1BNMg0KKyNpbmNsdWRlIDxhc20vY3BtMi5oPg0KKyNlbHNlDQor I2luY2x1ZGUgPGFzbS9jb21tcHJvYy5oPg0KKyNlbmRpZg0KKw0KKyNpZmRlZiBDT05GSUdfSTJD X0NQTV9CSVQNCisjaW5jbHVkZSA8bGludXgvaTJjLWFsZ28tYml0Lmg+DQorDQorI2RlZmluZSBD WUNMRV9ERUxBWQkxMA0KKyNkZWZpbmUgVElNRU9VVAkJKEhaIC8gMikNCisjZW5kaWYgLyogQ09O RklHX0kyQ19DUE1fQklUICovDQorDQorI2lmZGVmIENPTkZJR19DUE0yDQorLyogU0RBIGFuZCBT Q0wgYml0cyBvbiBwb3J0IEQgKi8NCisjZGVmaW5lIEJJVF9TREEgKDE8PDE2KQ0KKyNkZWZpbmUg QklUX1NDTCAoMTw8MTcpDQorI2VuZGlmIC8qIENPTkZJR19DUE0yICovDQorDQorI2lmZGVmIENP TkZJR19JMkNfQ1BNX0JJVA0KK3N0YXRpYyB2b2lkIGJpdF9jcG1fc2V0c2RhKHZvaWQgKmRhdGEs IGludCBzdGF0ZSkNCit7DQorCWlmIChzdGF0ZSkNCisJCWNwbTJfaW1tci0+aW1faW9wb3J0Lmlv cF9wZGF0ZCB8PSBCSVRfU0RBOw0KKwllbHNlDQorCQljcG0yX2ltbXItPmltX2lvcG9ydC5pb3Bf cGRhdGQgJj0gfkJJVF9TREE7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGJpdF9jcG1fc2V0c2NsKHZv aWQgKmRhdGEsIGludCBzdGF0ZSkNCit7DQorCWlmIChzdGF0ZSkNCisJCWNwbTJfaW1tci0+aW1f aW9wb3J0LmlvcF9wZGF0ZCB8PSBCSVRfU0NMOw0KKwllbHNlDQorCQljcG0yX2ltbXItPmltX2lv cG9ydC5pb3BfcGRhdGQgJj0gfkJJVF9TQ0w7DQorfQ0KKw0KK3N0YXRpYyBpbnQgYml0X2NwbV9n ZXRzZGEodm9pZCAqZGF0YSkNCit7DQorCXJldHVybiAoY3BtMl9pbW1yLT5pbV9pb3BvcnQuaW9w X3BkYXRkICYgQklUX1NEQSkgPyAxIDogMDsNCit9DQorDQorc3RhdGljIGludCBiaXRfY3BtX2dl dHNjbCh2b2lkICpkYXRhKQ0KK3sNCisJcmV0dXJuIChjcG0yX2ltbXItPmltX2lvcG9ydC5pb3Bf cGRhdGQgJiBCSVRfU0NMKSA/IDEgOiAwOw0KK30NCisNCisNCitzdGF0aWMgc3RydWN0IGkyY19h bGdvX2JpdF9kYXRhIGNwbV9kYXRhID0gew0KKwkuc2V0c2RhID0gYml0X2NwbV9zZXRzZGEsDQor CS5zZXRzY2wgPSBiaXRfY3BtX3NldHNjbCwNCisJLmdldHNkYSA9IGJpdF9jcG1fZ2V0c2RhLA0K KwkuZ2V0c2NsID0gYml0X2NwbV9nZXRzY2wsDQorCS51ZGVsYXkgPSBDWUNMRV9ERUxBWSwNCisJ Lm1kZWxheSA9IENZQ0xFX0RFTEFZLA0KKwkudGltZW91dCA9IFRJTUVPVVQNCit9Ow0KKyNlbHNl IC8qICFDT05GSUdfSTJDX0NQTV9CSVQgKi8NCisjaW5jbHVkZSA8bGludXgvaTJjLWFsZ28tY3Bt Lmg+DQorDQorc3RhdGljIHN0cnVjdCBpMmNfYWxnb19jcG1fZGF0YSBjcG1fZGF0YSA9IHsgLmly cSA9IC0xIH07DQorI2VuZGlmIC8qICFDT05GSUdfSTJDX0NQTV9CSVQgKi8NCisNCitzdGF0aWMg c3RydWN0IGkyY19hZGFwdGVyIGNwbV9vcHMgPSB7DQorCS5vd25lcgkJPSBUSElTX01PRFVMRSwN CisJLm5hbWUJCT0gImNwbS1pMmMiLA0KKwkuaWQJCT0gSTJDX0hXX0NQTTIsDQorCS5hbGdvX2Rh dGEJPSAmY3BtX2RhdGEsDQorfTsNCisNCisjaWZkZWYgQ09ORklHX0kyQ19DUE1fQklUDQorc3Rh dGljIGludCBfX2RldmluaXQgY3BtX2kyY19wcm9iZV9iaXRiYW5nKHN0cnVjdCBkZXZpY2UgKmRl dikNCit7DQorI2lmZGVmIENPTkZJR19DUE0yDQorCWlmIChjcG0yX2ltbXItPmltX2lvcG9ydC5p b3BfcHBhcmQgJiAoQklUX1NDTCB8IEJJVF9TREEpKSB7DQorCQlwcmludGsoS0VSTl9JTkZPICIl czogQ1BNIEkvTyBQb3J0IEQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIEkyQyBiaXQtYmFuZyBtb2Rl LlxuIiwgcGRldi0+YnVzX2lkKTsNCisJCXJldHVybiAtRU5PREVWOw0KKwl9DQorDQorCS8qIENv bmZpZ3VyZSBhcyBvcGVuIGRyYWluLi4uICovDQorCWNwbTJfaW1tci0+aW1faW9wb3J0LmlvcF9w b2RyZCB8PSAoQklUX1NDTCB8IEJJVF9TREEpOw0KKw0KKwkvKiBJbnB1dHMuLi4gKi8NCisJY3Bt Ml9pbW1yLT5pbV9pb3BvcnQuaW9wX3BkaXJkICY9IH4oQklUX1NDTCB8IEJJVF9TREEpOw0KKyNl bmRpZg0KKw0KKwlyZXR1cm4gaTJjX2JpdF9hZGRfYnVzKCZjcG1fb3BzKTsNCit9DQorI2Vsc2UN CitzdGF0aWMgaW50IF9fZGV2aW5pdCBjcG1faTJjX3Byb2JlX2NwbShzdHJ1Y3QgZGV2aWNlICpk ZXYpDQorew0KKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2 aWNlKGRldik7DQorCXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KKwlpbnQgZXJyOw0KKwlzdHJ1Y3Qg aTJjX2FsZ29fY3BtX2RhdGEgKmRhdGEgPSAmY3BtX2RhdGE7DQorCWJkX3QgKmJpbmZvID0gKGJk X3QgKilfX3JlczsNCisNCisJaWYgKGRhdGEtPmlycSAhPSAtMSkNCisJCXJldHVybiAtRUJVU1k7 DQorDQorCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwg MCk7DQorCWlmIChyZXMgPT0gTlVMTCkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlkYXRhLT5p MmMgPSAoY3BtX2kyY190ICopaW9yZW1hcChyZXMtPnN0YXJ0LHNpemVvZihjcG1faTJjX3QpKTsN CisJaWYgKGRhdGEtPmkyYyA9PSBOVUxMKSB7DQorCQlpb3VubWFwKCh2b2lkICopZGF0YS0+aWlw KTsNCisJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQorCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNv dXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMSk7DQorCWlmIChyZXMgPT0gTlVMTCkNCisJCXJl dHVybiAtRUlOVkFMOw0KKw0KKwlkYXRhLT5paXAgPSAoaWljX3QgKilpb3JlbWFwKHJlcy0+c3Rh cnQsc2l6ZW9mKGlpY190KSk7DQorCWlmIChkYXRhLT5paXAgPT0gTlVMTCkgew0KKwkJcmV0dXJu IC1FTk9NRU07DQorCX0NCisNCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElP UkVTT1VSQ0VfSVJRLCAwKTsNCisJaWYgKHJlcyA9PSBOVUxMKQ0KKwkJcmV0dXJuIC1FSU5WQUw7 DQorDQorI2lmZGVmIENPTkZJR19DUE0yDQorCS8qIENvbmZpZ3VyZSBhcyBwZXJpcGhlcmFsLi4u ICovDQorCWNwbTJfaW1tci0+aW1faW9wb3J0LmlvcF9wcGFyZCB8PSAoQklUX1NDTCB8IEJJVF9T REEpOw0KKwljcG0yX2ltbXItPmltX2lvcG9ydC5pb3BfcHNvcmQgfD0gKEJJVF9TQ0wgfCBCSVRf U0RBKTsNCisNCisJLyogSW5wdXRzLi4uICovDQorCWNwbTJfaW1tci0+aW1faW9wb3J0LmlvcF9w ZGlyZCAmPSB+KEJJVF9TQ0wgfCBCSVRfU0RBKTsNCisjZW5kaWYNCisNCisJZGF0YS0+aXJxID0g cmVzLT5zdGFydDsNCisNCisJZGF0YS0+ZGV2aWNlID0gZGV2Ow0KKwlkYXRhLT5pbnRmcmVxID0g YmluZm8tPmJpX2ludGZyZXE7DQorDQorCWVyciA9IGkyY19jcG1fYWRkX2J1cygmY3BtX29wcyk7 DQorCWlmIChlcnIgPCAwKSB7DQorCQlkYXRhLT5pcnE9LTE7DQorCQlpb3VubWFwKCh2b2lkICop ZGF0YS0+aWlwKTsNCisJCWlvdW5tYXAoKHZvaWQgKilkYXRhLT5pMmMpOw0KKwkJcmV0dXJuIGVy cjsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorI2VuZGlmDQorDQorI2lmZGVmIENPTkZJR19J MkNfQ1BNX0JJVA0KK3N0YXRpYyB2b2lkIF9fZGV2ZXhpdCBjcG1faTJjX3JlbW92ZV9iaXRiYW5n KHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCWkyY19iaXRfZGVsX2J1cygmY3BtX29wcyk7DQor fQ0KKyNlbHNlDQorc3RhdGljIHZvaWQgX19kZXZleGl0IGNwbV9pMmNfcmVtb3ZlX2NwbShzdHJ1 Y3QgZGV2aWNlICpkZXYpDQorew0KKwlzdHJ1Y3QgaTJjX2FsZ29fY3BtX2RhdGEgKmRhdGEgPSAm Y3BtX2RhdGE7DQorDQorCWkyY19jcG1fZGVsX2J1cygmY3BtX29wcyk7DQorDQorCWlvdW5tYXAo KHZvaWQgKilkYXRhLT5paXApOw0KKwlpb3VubWFwKCh2b2lkICopZGF0YS0+aTJjKTsNCit9DQor I2VuZGlmDQorDQorc3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIGNwbV9pMmNfZHJpdmVyID0g ew0KKwkubmFtZQk9ICJmc2wtY3BtLWkyYyIsDQorCS5idXMJPSAmcGxhdGZvcm1fYnVzX3R5cGUs DQorI2lmZGVmIENPTkZJR19JMkNfQ1BNX0JJVA0KKwkucHJvYmUJPSBjcG1faTJjX3Byb2JlX2Jp dGJhbmcsDQorCS5yZW1vdmUJPSBfX2RldmV4aXRfcChjcG1faTJjX3JlbW92ZV9iaXRiYW5nKSwN CisjZWxzZQ0KKwkucHJvYmUJPSBjcG1faTJjX3Byb2JlX2NwbSwNCisJLnJlbW92ZQk9IF9fZGV2 ZXhpdF9wKGNwbV9pMmNfcmVtb3ZlX2NwbSksDQorI2VuZGlmDQorfTsNCisNCitpbnQgX19pbml0 IGNwbV9pMmNfaW5pdCh2b2lkKQ0KK3sNCisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IENQTTIgaTJj IGRyaXZlclxuIixjcG1faTJjX2RyaXZlci5uYW1lKTsNCisNCisJcmV0dXJuIGRyaXZlcl9yZWdp c3RlcigmY3BtX2kyY19kcml2ZXIpOw0KK30NCisNCit2b2lkIF9fZXhpdCBjcG1faTJjX2V4aXQo dm9pZCkNCit7DQorCWRyaXZlcl91bnJlZ2lzdGVyKCZjcG1faTJjX2RyaXZlcik7DQorfQ0KKw0K K01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCisNCitNT0RVTEVfQVVUSE9SKCJKYXNvbiBNY011bGxh biA8amFzb24ubWNtdWxsYW5AdGltZXN5cy5jb20+Iik7DQorTU9EVUxFX0RFU0NSSVBUSU9OKCJJ MkMtQnVzIChvbiBDUE0pIGFkYXB0ZXIgcm91dGluZXMgZm9yIE1QQzh4eCBhbmQgTVBDODV4eCBi b2FyZHMiKTsNCisNCittb2R1bGVfaW5pdChjcG1faTJjX2luaXQpOw0KK21vZHVsZV9leGl0KGNw bV9pMmNfZXhpdCk7DQoNCi0tLSAvZGV2L251bGwNCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L2ky Yy1hbGdvLWNwbS5oDQpAQCAtMCwwICsxLDY0IEBADQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0K Ky8qIGkyYy1hbGdvLW1wYy5oIGkyYyBkcml2ZXIgYWxnb3JpdGhtcyBmb3IgTVBDIENQTXMJCQkg ICAgICovDQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KKw0KKy8qICRJZCQgKi8NCisNCisjaWZu ZGVmIEkyQ19BTEdPX01QQ19IDQorI2RlZmluZSBJMkNfQUxHT19NUENfSCAxDQorDQorI2luY2x1 ZGUgPGxpbnV4L2kyYy5oPg0KKw0KKyNpZmRlZiBDT05GSUdfODV4eA0KKyNpbmNsdWRlIDxhc20v bXBjODV4eC5oPg0KKyNpbmNsdWRlIDxhc20vY3BtMi5oPg0KKyNpbmNsdWRlIDxhc20vaW1tYXBf ODV4eC5oPg0KKw0KK3R5cGVkZWYgaTJjX2NwbTJfdCBjcG1faTJjX3Q7DQordHlwZWRlZiBpaWNf dCBjcG1faWljX3Q7DQorDQorI2VsaWYgZGVmaW5lZChDT05GSUdfOHh4KQ0KKyNpbmNsdWRlIDxh c20vbXBjOHh4Lmg+DQorI2luY2x1ZGUgPGFzbS9jb21tcHJvYy5oPg0KKw0KK3R5cGVkZWYgaTJj OHh4X3QgY3BtX2kyY190Ow0KK3R5cGVkZWYgaWljX3QgY3BtX2lpY190Ow0KKyNlbmRpZg0KKw0K KyNkZWZpbmUgSTJNT0RfRU4JMHgwMQ0KKyNkZWZpbmUgSTJNT0RfUERJVl9NQVNLCTB4MDYNCisj ZGVmaW5lICAgSTJNT0RfUERJVl80CTB4MDYNCisjZGVmaW5lICAgSTJNT0RfUERJVl84CTB4MDQN CisjZGVmaW5lICAgSTJNT0RfUERJVl8xNgkweDAyDQorI2RlZmluZSAgIEkyTU9EX1BESVZfMzIJ MHgwMA0KKyNkZWZpbmUgSTJNT0RfRkxUCTB4MDgNCisjZGVmaW5lIEkyTU9EX0dDRAkweDEwDQor I2RlZmluZSBJMk1PRF9SRVZECTB4MjANCisNCisjZGVmaW5lIEkyQ09NX01TCTB4MDENCisjZGVm aW5lIEkyQ09NX1NUUgkweDgwDQorDQorI2RlZmluZSBJMkNFUl9NQVNLCTB4MTcNCisjZGVmaW5l IEkyQ0VSX1RYRQkweDEwDQorI2RlZmluZSBJMkNFUl9CU1kJMHgwNA0KKyNkZWZpbmUgSTJDRVJf VFhCCTB4MDINCisjZGVmaW5lIEkyQ0VSX1JYQgkweDAxDQorDQorc3RydWN0IGkyY19hbGdvX2Nw bV9kYXRhIHsNCisJc3RydWN0IGRldmljZQkJKmRldmljZTsNCisgICAgICAgIGRtYV9hZGRyX3QJ CWRwX29mZnNldDsNCisgICAgICAgIGludCAJCQlyZWxvYzsNCisgICAgICAgIHZvbGF0aWxlIGNw bV9pMmNfdAkqaTJjOw0KKyAgICAgICAgdm9sYXRpbGUgY3BtX2lpY190CSppaXA7DQorCWludAkJ CWlycTsNCisJaW50CQkJaW50ZnJlcTsNCisgICAgICAgIHVpbnQ4X3QJCQkqdGVtcDsNCisNCisJ d2FpdF9xdWV1ZV9oZWFkX3QJd2FpdDsNCisJaW50CQkJc3RhdHVzOw0KK307DQorDQoraW50IGky Y19jcG1fYWRkX2J1cyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKik7DQoraW50IGkyY19jcG1fZGVsX2J1 cyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKik7DQorDQorI2VuZGlmIC8qIEkyQ19BTEdPX0NQTV9IICov DQoNCi0tLSBsaW51eC1vcmlnL2luY2x1ZGUvbGludXgvaTJjLWlkLmgNCisrKyBsaW51eC9pbmNs dWRlL2xpbnV4L2kyYy1pZC5oDQpAQCAtMjAxLDYgKzIwMSw3IEBADQogI2RlZmluZSBJMkNfQUxH T19TSUJZVEUgMHgxNTAwMDAJLyogQnJvYWRjb20gU2lCeXRlIFNPQ3MJCSovDQogI2RlZmluZSBJ MkNfQUxHT19TR0kJMHgxNjAwMDAgICAgICAgIC8qIFNHSSBhbGdvcml0aG0gICAgICAgICAgICAg ICAgKi8NCiAjZGVmaW5lIEkyQ19BTEdPX0FVMTU1MAkweDE3MDAwMCAgICAgICAgLyogQXUxNTUw IFBTQyBhbGdvcml0aG0JCSovDQorI2RlZmluZSBJMkNfQUxHT19DUE0yCTB4MTgwMDAwCS8qIE1Q Qzh4eHggYW5kIE1QQzh4eCBDUE0gSTJDICovDQogDQogI2RlZmluZSBJMkNfQUxHT19FWFAJMHg4 MDAwMDAJLyogZXhwZXJpbWVudGFsCQkJKi8NCiANCkBAIC0yNTMsNiArMjU0LDkgQEANCiAvKiAt LS0gQUNQSSBFbWJlZGRlZCBjb250cm9sbGVyIGFsZ29yaXRobXMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqLw0KICNkZWZpbmUgSTJDX0hXX0FDUElfRUMgICAgICAgICAgMHgwMA0KIA0K Ky8qIC0tLSBNb3Rvcm9sYSBNUEMgQ1BNMiBJMkMgYWRhcHRlcnMgLS0gKi8NCisjZGVmaW5lIEky Q19IV19DUE0yCTB4MDANCisNCiAvKiAtLS0gTVBDODI0eCBQb3dlclBDIGFkYXB0ZXJzCQkJCQkJ Ki8NCiAjZGVmaW5lIEkyQ19IV19NUEM4MjRYIDB4MDAJLyogTW90b3JvbGEgODI0MCAvIDgyNDUg ICAgICAgICAgICAgICAgICovDQogDQo= --=-iU+oLTOsq5c3D0XKiw6q-- --=-2WMuOPj1DVvzLVfYPWGo Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBCQIEh8/0vJ5szK6kRAnxVAKCox74Q18W8Ks2bcFTGkoMXUEXAtACgvlao 82m8zbt1jhl8eIYwgvEk1Ik= =35O+ -----END PGP SIGNATURE----- --=-2WMuOPj1DVvzLVfYPWGo--