From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sverdlin, Alexander (Nokia - DE/Ulm)" Subject: Re: [PATCH 3/3] i2c-axxia: support sequence command mode Date: Tue, 11 Dec 2018 12:05:40 +0000 Message-ID: <9506d738-1559-e72e-5607-76b815e1c225@nokia.com> References: <8515ba7093f5be3ad7bd31d68efedcbe17958282.1544453688.git.krzysztof.adamski@nokia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <8515ba7093f5be3ad7bd31d68efedcbe17958282.1544453688.git.krzysztof.adamski@nokia.com> Content-Language: en-US Content-ID: <2BA9191F1918ED48B2432DEBB5D64E1B@eurprd07.prod.outlook.com> Sender: linux-kernel-owner@vger.kernel.org To: "Adamski, Krzysztof (Nokia - PL/Wroclaw)" , Wolfram Sang Cc: "linux-i2c@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Linus Walleij , Guenter Roeck , Tobias Jordan , Peter Rosin List-Id: linux-i2c@vger.kernel.org SGkhDQoNCk9uIDEwLzEyLzIwMTggMTY6MDUsIEFkYW1za2ksIEtyenlzenRvZiAoTm9raWEgLSBQ TC9Xcm9jbGF3KSB3cm90ZToNCj4gSW4gb3JkZXIgdG8gY29tcGx5IHdpdGggU01CdXMgc3BlY2lm aWNhdGlvbiwgdGhlIEF4eGlhIEnCskMgbW9kdWxlIHdpbGwNCj4gYWJvcnQgdGhlIG11bHRpIG1l c3NhZ2UgdHJhbnNmZXIgaWYgdGhlIGRlbGF5IGJldHdlZW4gZmluaXNoaW5nIHNlbmRpbmcNCj4g b25lIG1lc3NhZ2UgYW5kIHN0YXJ0aW5nIGFub3RoZXIgaXMgbG9uZ2VyIHRoYW4gMjVtcy4gVW5m b3J0dW5hdGVseSBpdA0KPiBpc24ndCB0aGF0IGhhcmQgdG8gdHJpZ2dlciB0aGlzIHNpdHVhdGlv biBvbiBhIGJ1c3kgc3lzdGVtLiBJbiBvcmRlciB0bw0KPiBmaXggdGhpcyBwcm9ibGVtLCB3ZSBz aG91bGQgbWFrZSBzdXJlIGhhcmR3YXJlIGRvZXMgd2hvbGUgdHJhbnNhY3Rpb24NCj4gd2l0aG91 dCB3YWl0aW5nIGZvciBzb2Z0d2FyZSB0byBmaWxsIHNvbWUgZGF0YS4NCj4gDQo+IEZvcnR1bmF0 ZWx5LCBpbiBhZGRpdGlvbiB0byBNYW51YWwgbW9kZSB0aGF0IGlzIGN1cnJlbnRseSB1c2VkIGJ5 IHRoZQ0KPiBkcml2ZXIgdG8gcGVyZm9ybSBJwrJDIHRyYW5zZmVycywgdGhlIG1vZHVsZSBzdXBw b3J0cyBhbHNvIHNvIGNhbGxlZA0KPiBTZXF1ZW5jZSBtb2RlLiBJbiB0aGlzIG1vZGUsIHRoZSBt b2R1bGUgYXV0b21hdGljYWxseSBwZXJmb3Jtcw0KPiBwcmVkZWZpbmVkIHNlcXVlbmNlIG9mIG9w ZXJhdGlvbnMgLSBpdCBzZW5kcyBhIHNsYXZlIGFkZHJlc3MsIHRyYW5zbWl0cw0KPiBzcGVjaWZp ZWQgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIEZJRk8sIGNoYW5nZXMgdHJhbnNmZXIgZGlyZWN0 aW9uLA0KPiByZXNlbmRzIHRoZSBzbGF2ZSBhZGRyZXNzIGFuZCB0aGVuIHJlYWRzIHNwZWNpZmll ZCBudW1iZXIgb2YgYnl0ZXMgdG8NCj4gRklGTy4gV2hpbGUgdmVyeSBpbmZsZXhpYmxlLCB0aGlz IGRvZXMgZml0IGEgbW9zdCBjb21tb24gY2FzZSBvZiBtdWx0aQ0KPiBtZXNzYWdlIHRyYW5zZmVy IC0gdGhlIG9uZSB3aGVyZSB5b3UgZmlyc3Qgd3JpdGUgYSByZWdpc3RlciBudW1iZXIgeW91DQo+ IHdhbnQgdG8gcmVhZCBhbmQgdGhlbiByZWFkIGl0Lg0KPiANCj4gVG8gdXNlIHRoaXMgbW9kZSBl ZmZlY3RpdmVseSwgYSBudW1iZXIgb2YgY29uZGl0aW9ucyBtdXN0IGJlIG1ldCB0bw0KPiBlbnN1 cmUgdGhlIHRyYW5zYWN0aW9uIGRvZXMgZml0IHRoZSBwcmVkZWZpbmVkIHNlcXVlbmNlLiBJbiBj YXNlIHRoaXMgaXMNCj4gbm90IHRoZSBjYXNlLCBhIGZhbGxiYWNrIHRvIG1hbnVhbCBtb2RlIGlz IHVzZWQuDQo+IA0KPiBUaGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBtb2RlIGlzIHZlcnkgc2lt aWxhciB0byBNYW51YWwgbW9kZS4gVGhlIG1vc3QNCj4gbm90YWJsZSBkaWZmZXJlbmNlIGlzIGRp ZmZlcmVudCBiaXQgaW4gdGhlIE1hc3RlciBJbnRlcnJ1cHQgU3RhdHVzDQo+IGRlc2lnbmF0aW5n IGZpbmlzaGluZyBvZiB0cmFuc2FjdGlvbi4gQWxzbyBzb21lIG9mIHRoZSBlcnJvcnMsIGxpa2Ug VFNTLA0KPiBjYW5ub3QgaGFwcGVuIGluIHRoaXMgbW9kZS4NCj4gDQo+IFdoaWxlIGl0IGlzIHBv c3NpYmxlIHRvIHN1cHBvcnQgdHJhbnNhY3Rpb25zIHJlcXVlc3RpbmcgYSByZWFkIG9mIGFueQ0K PiBzaXplIChSRkwgaW50ZXJydXB0IHdpbGwgYmUgZ2VuZXJhdGVkIHdoZW4gRklGTyBzaXplIGlz IG5vdCBlbm91Z2gpIHRoZQ0KPiBURkwgaW50ZXJydXB0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhp cyBtb2RlLCB0aHVzIHRoZSB3cml0ZSBwYXJ0IG9mIHRoZQ0KPiB0cmFuc2FjdGlvbiBjYW5ub3Qg ZXhjZWVkIEZJRk9fU0laRSAoOCkuDQo+IA0KPiBOb3RlIHRoYXQgaW4gY2FzZSBvZiBhIE5BSyBk dXJpbmcgdHJhbnNhY3Rpb24sIHRoZSBOQS9ORCBzdGF0dXMgYml0cw0KPiB3aWxsIGJlIHNldCBi ZWZvcmUgU1RPUCBjb21tYW5kIGlzIGdlbmVyYXRlZCwgdHJpZ2dlcmluZyBhbiBpbnRlcnJ1cHQN Cj4gd2hpbGUgdGhlIGNvbnRyb2xsZXIgaXMgc3RpbGwgYnVzeS4gQ3VycmVudCBzb2x1dGlvbiBm b3IgdGhpcyBwcm9ibGVtIGlzDQo+IHRvIGFjdGl2ZWx5IHdhaXQgZm9yIHRoaXMgY29tbWFuZCB0 byBzdG9wIGJlZm9yZSBsZWF2aW5nIHhmZXIgY2FsbGJhY2suDQoNClJldmlld2VkLWJ5OiBBbGV4 YW5kZXIgU3ZlcmRsaW4gPGFsZXhhbmRlci5zdmVyZGxpbkBub2tpYS5jb20+DQogDQo+IFNpZ25l ZC1vZmYtYnk6IEtyenlzenRvZiBBZGFtc2tpIDxrcnp5c3p0b2YuYWRhbXNraUBub2tpYS5jb20+ DQo+IC0tLQ0KPiAgZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1heHhpYS5jIHwgMTAwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDkzIGluc2VydGlv bnMoKyksIDcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVz c2VzL2kyYy1heHhpYS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1heHhpYS5jDQo+IGluZGV4 IDM1MjU4MzIxZTgxYi4uNjQ3Nzk4MTlhOTQ4IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2kyYy9i dXNzZXMvaTJjLWF4eGlhLmMNCj4gKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1heHhpYS5j DQo+IEBAIC0xMiw2ICsxMiw3IEBADQo+ICAgKi8NCj4gICNpbmNsdWRlIDxsaW51eC9jbGsuaD4N Cj4gICNpbmNsdWRlIDxsaW51eC9jbGtkZXYuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5o Pg0KPiAgI2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0K PiAgI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCj4gQEAgLTI1LDYgKzI2LDcgQEANCj4gICNkZWZp bmUgSTJDX1hGRVJfVElNRU9VVCAgICAobXNlY3NfdG9famlmZmllcygyNTApKQ0KPiAgI2RlZmlu ZSBJMkNfU1RPUF9USU1FT1VUICAgIChtc2Vjc190b19qaWZmaWVzKDEwMCkpDQo+ICAjZGVmaW5l IEZJRk9fU0laRSAgICAgICAgICAgOA0KPiArI2RlZmluZSBTRVFfTEVOICAgICAgICAgICAgIDIN Cj4gIA0KPiAgI2RlZmluZSBHTE9CQUxfQ09OVFJPTAkJMHgwMA0KPiAgI2RlZmluZSAgIEdMT0JB TF9NU1RfRU4gICAgICAgICBCSVQoMCkNCj4gQEAgLTUxLDYgKzUzLDcgQEANCj4gICNkZWZpbmUg ICBDTURfQlVTWQkJKDE8PDMpDQo+ICAjZGVmaW5lICAgQ01EX01BTlVBTAkJKDB4MDAgfCBDTURf QlVTWSkNCj4gICNkZWZpbmUgICBDTURfQVVUTwkJKDB4MDEgfCBDTURfQlVTWSkNCj4gKyNkZWZp bmUgICBDTURfU0VRVUVOQ0UJCSgweDAyIHwgQ01EX0JVU1kpDQo+ICAjZGVmaW5lIE1TVF9SWF9Y RkVSCQkweDJjDQo+ICAjZGVmaW5lIE1TVF9UWF9YRkVSCQkweDMwDQo+ICAjZGVmaW5lIE1TVF9B RERSXzEJCTB4MzQNCj4gQEAgLTg3LDcgKzkwLDkgQEANCj4gICAqIGF4eGlhX2kyY19kZXYgLSBJ MkMgZGV2aWNlIGNvbnRleHQNCj4gICAqIEBiYXNlOiBwb2ludGVyIHRvIHJlZ2lzdGVyIHN0cnVj dA0KPiAgICogQG1zZzogcG9pbnRlciB0byBjdXJyZW50IG1lc3NhZ2UNCj4gLSAqIEBtc2dfeGZy ZDogbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkIGluIG1zZw0KPiArICogQG1zZ19yOiBwb2lu dGVyIHRvIGN1cnJlbnQgcmVhZCBtZXNzYWdlIChzZXF1ZW5jZSB0cmFuc2ZlcikNCj4gKyAqIEBt c2dfeGZyZDogbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkIGluIHR4X2ZpZm8NCj4gKyAqIEBt c2dfeGZyZF9yOiBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgaW4gcnhfZmlmbw0KPiAgICog QG1zZ19lcnI6IGVycm9yIGNvZGUgZm9yIGNvbXBsZXRlZCBtZXNzYWdlDQo+ICAgKiBAbXNnX2Nv bXBsZXRlOiB4ZmVyIGNvbXBsZXRpb24gb2JqZWN0DQo+ICAgKiBAZGV2OiBkZXZpY2UgcmVmZXJl bmNlDQo+IEBAIC05OCw3ICsxMDMsOSBAQA0KPiAgc3RydWN0IGF4eGlhX2kyY19kZXYgew0KPiAg CXZvaWQgX19pb21lbSAqYmFzZTsNCj4gIAlzdHJ1Y3QgaTJjX21zZyAqbXNnOw0KPiArCXN0cnVj dCBpMmNfbXNnICptc2dfcjsNCj4gIAlzaXplX3QgbXNnX3hmcmQ7DQo+ICsJc2l6ZV90IG1zZ194 ZnJkX3I7DQo+ICAJaW50IG1zZ19lcnI7DQo+ICAJc3RydWN0IGNvbXBsZXRpb24gbXNnX2NvbXBs ZXRlOw0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gQEAgLTIyNywxNCArMjM0LDE0IEBAIHN0 YXRpYyBpbnQgaTJjX21fcmVjdl9sZW4oY29uc3Qgc3RydWN0IGkyY19tc2cgKm1zZykNCj4gICAq Lw0KPiAgc3RhdGljIGludCBheHhpYV9pMmNfZW1wdHlfcnhfZmlmbyhzdHJ1Y3QgYXh4aWFfaTJj X2RldiAqaWRldikNCj4gIHsNCj4gLQlzdHJ1Y3QgaTJjX21zZyAqbXNnID0gaWRldi0+bXNnOw0K PiArCXN0cnVjdCBpMmNfbXNnICptc2cgPSBpZGV2LT5tc2dfcjsNCj4gIAlzaXplX3QgcnhfZmlm b19hdmFpbCA9IHJlYWRsKGlkZXYtPmJhc2UgKyBNU1RfUlhfRklGTyk7DQo+IC0JaW50IGJ5dGVz X3RvX3RyYW5zZmVyID0gbWluKHJ4X2ZpZm9fYXZhaWwsIG1zZy0+bGVuIC0gaWRldi0+bXNnX3hm cmQpOw0KPiArCWludCBieXRlc190b190cmFuc2ZlciA9IG1pbihyeF9maWZvX2F2YWlsLCBtc2ct PmxlbiAtIGlkZXYtPm1zZ194ZnJkX3IpOw0KPiAgDQo+ICAJd2hpbGUgKGJ5dGVzX3RvX3RyYW5z ZmVyLS0gPiAwKSB7DQo+ICAJCWludCBjID0gcmVhZGwoaWRldi0+YmFzZSArIE1TVF9EQVRBKTsN Cj4gIA0KPiAtCQlpZiAoaWRldi0+bXNnX3hmcmQgPT0gMCAmJiBpMmNfbV9yZWN2X2xlbihtc2cp KSB7DQo+ICsJCWlmIChpZGV2LT5tc2dfeGZyZF9yID09IDAgJiYgaTJjX21fcmVjdl9sZW4obXNn KSkgew0KPiAgCQkJLyoNCj4gIAkJCSAqIENoZWNrIGxlbmd0aCBieXRlIGZvciBTTUJ1cyBibG9j ayByZWFkDQo+ICAJCQkgKi8NCj4gQEAgLTI0Nyw3ICsyNTQsNyBAQCBzdGF0aWMgaW50IGF4eGlh X2kyY19lbXB0eV9yeF9maWZvKHN0cnVjdCBheHhpYV9pMmNfZGV2ICppZGV2KQ0KPiAgCQkJbXNn LT5sZW4gPSAxICsgYzsNCj4gIAkJCXdyaXRlbChtc2ctPmxlbiwgaWRldi0+YmFzZSArIE1TVF9S WF9YRkVSKTsNCj4gIAkJfQ0KPiAtCQltc2ctPmJ1ZltpZGV2LT5tc2dfeGZyZCsrXSA9IGM7DQo+ ICsJCW1zZy0+YnVmW2lkZXYtPm1zZ194ZnJkX3IrK10gPSBjOw0KPiAgCX0NCj4gIA0KPiAgCXJl dHVybiAwOw0KPiBAQCAtMjg3LDcgKzI5NCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBheHhpYV9p MmNfaXNyKGludCBpcnEsIHZvaWQgKl9kZXYpDQo+ICAJfQ0KPiAgDQo+ICAJLyogUlggRklGTyBu ZWVkcyBzZXJ2aWNlPyAqLw0KPiAtCWlmIChpMmNfbV9yZChpZGV2LT5tc2cpICYmIChzdGF0dXMg JiBNU1RfU1RBVFVTX1JGTCkpDQo+ICsJaWYgKGkyY19tX3JkKGlkZXYtPm1zZ19yKSAmJiAoc3Rh dHVzICYgTVNUX1NUQVRVU19SRkwpKQ0KPiAgCQlheHhpYV9pMmNfZW1wdHlfcnhfZmlmbyhpZGV2 KTsNCj4gIA0KPiAgCS8qIFRYIEZJRk8gbmVlZHMgc2VydmljZT8gKi8NCj4gQEAgLTMyMCw5ICsz MjcsMTIgQEAgc3RhdGljIGlycXJldHVybl90IGF4eGlhX2kyY19pc3IoaW50IGlycSwgdm9pZCAq X2RldikNCj4gIAl9IGVsc2UgaWYgKHN0YXR1cyAmIE1TVF9TVEFUVVNfU05TKSB7DQo+ICAJCS8q IFRyYW5zZmVyIGRvbmUgKi8NCj4gIAkJaTJjX2ludF9kaXNhYmxlKGlkZXYsIH5NU1RfU1RBVFVT X1RTUyk7DQo+IC0JCWlmIChpMmNfbV9yZChpZGV2LT5tc2cpICYmIGlkZXYtPm1zZ194ZnJkIDwg aWRldi0+bXNnLT5sZW4pDQo+ICsJCWlmIChpMmNfbV9yZChpZGV2LT5tc2dfcikgJiYgaWRldi0+ bXNnX3hmcmRfciA8IGlkZXYtPm1zZ19yLT5sZW4pDQo+ICAJCQlheHhpYV9pMmNfZW1wdHlfcnhf ZmlmbyhpZGV2KTsNCj4gIAkJY29tcGxldGUoJmlkZXYtPm1zZ19jb21wbGV0ZSk7DQo+ICsJfSBl bHNlIGlmIChzdGF0dXMgJiBNU1RfU1RBVFVTX1NTKSB7DQo+ICsJCS8qIEF1dG8vU2VxdWVuY2Ug dHJhbnNmZXIgZG9uZSAqLw0KPiArCQljb21wbGV0ZSgmaWRldi0+bXNnX2NvbXBsZXRlKTsNCj4g IAl9IGVsc2UgaWYgKHN0YXR1cyAmIE1TVF9TVEFUVVNfVFNTKSB7DQo+ICAJCS8qIFRyYW5zZmVy IHRpbWVvdXQgKi8NCj4gIAkJaWRldi0+bXNnX2VyciA9IC1FVElNRURPVVQ7DQo+IEBAIC0zNjMs NiArMzczLDYyIEBAIHN0YXRpYyB2b2lkIGF4eGlhX2kyY19zZXRfYWRkcihzdHJ1Y3QgYXh4aWFf aTJjX2RldiAqaWRldiwgc3RydWN0IGkyY19tc2cgKm1zZykNCj4gIAl3cml0ZWwoYWRkcl8yLCBp ZGV2LT5iYXNlICsgTVNUX0FERFJfMik7DQo+ICB9DQo+ICANCj4gKy8qIFRoZSBOQUsgaW50ZXJy dXB0IHdpbGwgYmUgc2VudCBfYmVmb3JlXyBpc3N1aW5nIFNUT1AgY29tbWFuZA0KPiArICogc28g dGhlIGNvbnRyb2xsZXIgbWlnaHQgc3RpbGwgYmUgYnVzeSBwcm9jZXNzaW5nIGl0LiBObw0KPiAr ICogaW50ZXJydXB0IHdpbGwgYmUgc2VudCBhdCB0aGUgZW5kIHNvIHdlIGhhdmUgdG8gcG9sbCBm b3IgaXQNCj4gKyAqLw0KPiArc3RhdGljIHZvaWQgYXh4aWFfaTJjX2hhbmRsZV9zZXFfbmFrKHN0 cnVjdCBheHhpYV9pMmNfZGV2ICppZGV2KQ0KPiArew0KPiArCXdoaWxlIChyZWFkbChpZGV2LT5i YXNlICsgTVNUX0NPTU1BTkQpICYgQ01EX0JVU1kpDQo+ICsJCXVkZWxheSgxMDApOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgaW50IGF4eGlhX2kyY194ZmVyX3NlcShzdHJ1Y3QgYXh4aWFfaTJjX2Rl diAqaWRldiwgc3RydWN0IGkyY19tc2cgbXNnc1tdKQ0KPiArew0KPiArCXUzMiBpbnRfbWFzayA9 IE1TVF9TVEFUVVNfRVJSIHwgTVNUX1NUQVRVU19TUyB8IE1TVF9TVEFUVVNfUkZMOw0KPiArCXUz MiBybGVuID0gaTJjX21fcmVjdl9sZW4oJm1zZ3NbMV0pID8gSTJDX1NNQlVTX0JMT0NLX01BWCA6 IG1zZ3NbMV0ubGVuOw0KPiArCXVuc2lnbmVkIGxvbmcgdGltZV9sZWZ0Ow0KPiArDQo+ICsJYXh4 aWFfaTJjX3NldF9hZGRyKGlkZXYsICZtc2dzWzBdKTsNCj4gKw0KPiArCXdyaXRlbChtc2dzWzBd LmxlbiwgaWRldi0+YmFzZSArIE1TVF9UWF9YRkVSKTsNCj4gKwl3cml0ZWwocmxlbiwgaWRldi0+ YmFzZSArIE1TVF9SWF9YRkVSKTsNCj4gKw0KPiArCWlkZXYtPm1zZyA9ICZtc2dzWzBdOw0KPiAr CWlkZXYtPm1zZ19yID0gJm1zZ3NbMV07DQo+ICsJaWRldi0+bXNnX3hmcmQgPSAwOw0KPiArCWlk ZXYtPm1zZ194ZnJkX3IgPSAwOw0KPiArCWF4eGlhX2kyY19maWxsX3R4X2ZpZm8oaWRldik7DQo+ ICsNCj4gKwl3cml0ZWwoQ01EX1NFUVVFTkNFLCBpZGV2LT5iYXNlICsgTVNUX0NPTU1BTkQpOw0K PiArDQo+ICsJcmVpbml0X2NvbXBsZXRpb24oJmlkZXYtPm1zZ19jb21wbGV0ZSk7DQo+ICsJaTJj X2ludF9lbmFibGUoaWRldiwgaW50X21hc2spOw0KPiArDQo+ICsJdGltZV9sZWZ0ID0gd2FpdF9m b3JfY29tcGxldGlvbl90aW1lb3V0KCZpZGV2LT5tc2dfY29tcGxldGUsDQo+ICsJCQkJCQlJMkNf WEZFUl9USU1FT1VUKTsNCj4gKw0KPiArCWkyY19pbnRfZGlzYWJsZShpZGV2LCBpbnRfbWFzayk7 DQo+ICsNCj4gKwlheHhpYV9pMmNfZW1wdHlfcnhfZmlmbyhpZGV2KTsNCj4gKw0KPiArCWlmIChp ZGV2LT5tc2dfZXJyID09IC1FTlhJTykNCj4gKwkJYXh4aWFfaTJjX2hhbmRsZV9zZXFfbmFrKGlk ZXYpOw0KPiArCWVsc2UgaWYgKHJlYWRsKGlkZXYtPmJhc2UgKyBNU1RfQ09NTUFORCkgJiBDTURf QlVTWSkNCj4gKwkJZGV2X3dhcm4oaWRldi0+ZGV2LCAiYnVzeSBhZnRlciB4ZmVyXG4iKTsNCj4g Kw0KPiArCWlmICh0aW1lX2xlZnQgPT0gMCkgew0KPiArCQlpZGV2LT5tc2dfZXJyID0gLUVUSU1F RE9VVDsNCj4gKwkJaTJjX3JlY292ZXJfYnVzKCZpZGV2LT5hZGFwdGVyKTsNCj4gKwkJYXh4aWFf aTJjX2luaXQoaWRldik7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKHVubGlrZWx5KGlkZXYtPm1zZ19l cnIpICYmIGlkZXYtPm1zZ19lcnIgIT0gLUVOWElPKQ0KPiArCQlheHhpYV9pMmNfaW5pdChpZGV2 KTsNCj4gKw0KPiArCXJldHVybiBpZGV2LT5tc2dfZXJyOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMg aW50IGF4eGlhX2kyY194ZmVyX21zZyhzdHJ1Y3QgYXh4aWFfaTJjX2RldiAqaWRldiwgc3RydWN0 IGkyY19tc2cgKm1zZykNCj4gIHsNCj4gIAl1MzIgaW50X21hc2sgPSBNU1RfU1RBVFVTX0VSUiB8 IE1TVF9TVEFUVVNfU05TOw0KPiBAQCAtMzcxLDcgKzQzNyw5IEBAIHN0YXRpYyBpbnQgYXh4aWFf aTJjX3hmZXJfbXNnKHN0cnVjdCBheHhpYV9pMmNfZGV2ICppZGV2LCBzdHJ1Y3QgaTJjX21zZyAq bXNnKQ0KPiAgCXVuc2lnbmVkIGludCB3dF92YWx1ZTsNCj4gIA0KPiAgCWlkZXYtPm1zZyA9IG1z ZzsNCj4gKwlpZGV2LT5tc2dfciA9IG1zZzsNCj4gIAlpZGV2LT5tc2dfeGZyZCA9IDA7DQo+ICsJ aWRldi0+bXNnX3hmcmRfciA9IDA7DQo+ICAJcmVpbml0X2NvbXBsZXRpb24oJmlkZXYtPm1zZ19j b21wbGV0ZSk7DQo+ICANCj4gIAlheHhpYV9pMmNfc2V0X2FkZHIoaWRldiwgbXNnKTsNCj4gQEAg LTQ1Miw2ICs1MjAsMTggQEAgc3RhdGljIGludCBheHhpYV9pMmNfc3RvcChzdHJ1Y3QgYXh4aWFf aTJjX2RldiAqaWRldikNCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gIA0KPiArLyogVGhpcyBmdW5j dGlvbiBjaGVja3MgaWYgdGhlIG1zZ3NbXSBhcnJheSBjb250YWlucyBtZXNzYWdlcyBjb21wYXRp YmxlIHdpdGgNCj4gKyAqIFNlcXVlbmNlIG1vZGUgb2Ygb3BlcmF0aW9uLiBUaGlzIG1vZGUgYXNz dW1lcyB0aGVyZSB3aWxsIGJlIGV4YWN0bHkgb25lDQo+ICsgKiB3cml0ZSBvZiBub24temVybyBs ZW5ndGggZm9sbG93ZWQgYnkgZXhhY3RseSBvbmUgcmVhZCBvZiBub24temVybyBsZW5ndGgsDQo+ ICsgKiBib3RoIHRhcmdldGVkIGF0IHRoZSBzYW1lIGNsaWVudCBkZXZpY2UuDQo+ICsgKi8NCj4g K3N0YXRpYyBib29sIGF4eGlhX2kyY19zZXF1ZW5jZV9vayhzdHJ1Y3QgaTJjX21zZyBtc2dzW10s IGludCBudW0pDQo+ICt7DQo+ICsJcmV0dXJuIG51bSA9PSBTRVFfTEVOICYmICFpMmNfbV9yZCgm bXNnc1swXSkgJiYgaTJjX21fcmQoJm1zZ3NbMV0pICYmDQo+ICsJICAgICAgIG1zZ3NbMF0ubGVu ID4gMCAmJiBtc2dzWzBdLmxlbiA8PSBGSUZPX1NJWkUgJiYNCj4gKwkgICAgICAgbXNnc1sxXS5s ZW4gPiAwICYmIG1zZ3NbMF0uYWRkciA9PSBtc2dzWzFdLmFkZHI7DQo+ICt9DQo+ICsNCj4gIHN0 YXRpYyBpbnQNCj4gIGF4eGlhX2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCwgc3Ry dWN0IGkyY19tc2cgbXNnc1tdLCBpbnQgbnVtKQ0KPiAgew0KPiBAQCAtNDYwLDYgKzU0MCwxMiBA QCBheHhpYV9pMmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsIHN0cnVjdCBpMmNfbXNn IG1zZ3NbXSwgaW50IG51bSkNCj4gIAlpbnQgcmV0ID0gMDsNCj4gIA0KPiAgCWlkZXYtPm1zZ19l cnIgPSAwOw0KPiArDQo+ICsJaWYgKGF4eGlhX2kyY19zZXF1ZW5jZV9vayhtc2dzLCBudW0pKSB7 DQo+ICsJCXJldCA9IGF4eGlhX2kyY194ZmVyX3NlcShpZGV2LCBtc2dzKTsNCj4gKwkJcmV0dXJu IHJldCA/IDogU0VRX0xFTjsNCj4gKwl9DQo+ICsNCj4gIAlpMmNfaW50X2VuYWJsZShpZGV2LCBN U1RfU1RBVFVTX1RTUyk7DQo+ICANCj4gIAlmb3IgKGkgPSAwOyByZXQgPT0gMCAmJiBpIDwgbnVt OyArK2kpDQo+IA0KDQotLSANCkJlc3QgcmVnYXJkcywNCkFsZXhhbmRlciBTdmVyZGxpbi4NCg==