From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sverdlin, Alexander (Nokia - DE/Ulm)" Subject: Re: [PATCH v3] i2c: axxia: support slave mode Date: Mon, 26 Aug 2019 11:59:08 +0000 Message-ID: <1b77df67-63f4-253a-8333-4f5ca2f41a14@nokia.com> References: <20190819090700.GA17091@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190819090700.GA17091@localhost.localdomain> Content-Language: en-US Content-ID: Sender: linux-kernel-owner@vger.kernel.org To: "Adamski, Krzysztof (Nokia - PL/Wroclaw)" , Wolfram Sang Cc: "linux-kernel@vger.kernel.org" , "linux-i2c@vger.kernel.org" List-Id: linux-i2c@vger.kernel.org SGkhDQoNCk9uIDE5LzA4LzIwMTkgMTE6MDcsIEFkYW1za2ksIEtyenlzenRvZiAoTm9raWEgLSBQ TC9Xcm9jbGF3KSB3cm90ZToNCj4gVGhpcyBkZXZpY2UgY29udGFpbnMgYm90aCBtYXN0ZXIgYW5k IHNsYXZlIGNvbnRyb2xsZXJzIHdoaWNoIGNhbiBiZQ0KPiBlbmFibGVkIHNpbXVsdGFuZW91c2x5 LiBCb3RoIGNvbnRyb2xsZXJzIHNoYXJlIHRoZSBzYW1lIFNEQS9TQ0wgbGluZXMNCj4gYW5kIGlu dGVycnVwdCBzb3VyY2UgYnV0IGhhcyBzZXBhcmF0ZSBjb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0 ZXJzLg0KPiBDb250cm9sbGVycyBhbHNvIHdvcmtzIGluIGxvb3BiYWNrIG1vZGUgLSBzbGF2ZSBk ZXZpY2UgY2FuIGNvbW11bmljYXRlDQo+IHdpdGggaXRzIG93biBtYXN0ZXIgY29udHJvbGxlciBp bnRlcm5hbGx5LiBUaGUgY29udHJvbGxlciBjYW4gaGFuZGxlIHVwDQo+IHRvIHR3byBhZGRyZXNz ZXMsIGJvdGggb2Ygd2hpY2ggbWF5IGJlIDEwIGJpdC4gTW9zdCBvZiB0aGUgbG9naWMNCj4gKHNl bmRpbmcgKE4pQUNLLCBoYW5kbGluZyByZXBlYXRlZCBzdGFydCBvciBzd2l0Y2hpbmcgYmV0d2Vl bg0KPiB3cml0ZS9yZWFkKSBpcyBoYW5kbGVkIGF1dG9tYXRpY2FsbHkgd2hpY2ggbWFrZXMgd29y a2luZyB3aXRoIHRoaXMNCj4gY29udHJvbGxlciBxdWl0ZSBlYXN5Lg0KPiANCj4gRm9yIHNpbXBs aWNpdHksIHRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBzdXBwb3J0LCBsaW1pdGluZyB0byBvbmx5IG9u ZQ0KPiBzbGF2ZSBhZGRyZXNzLiBTdXBwb3J0IGZvciB0aGUgMm5kIGRldmljZSBtYXkgYmUgYWRk ZWQgaW4gdGhlIGZ1dHVyZS4NCj4gDQo+IE5vdGUgdGhhdCBzeW5jaHJvbml6ZV9pcnEoKSBpcyB1 c2VkIHRvIGVuc3VyZSBhbnkgcnVubmluZyBzbGF2ZSBpbnRlcnJ1cHQNCj4gaXMgZmluaXNoZWQg dG8gbWFrZSBzdXJlIHNsYXZlIGkyY19jbGllbnQgc3RydWN0dXJlIGNhbiBiZSBzYWZlbHkgdXNl ZA0KPiBieSBpMmNfc2xhdmVfZXZlbnQuDQoNClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgU3ZlcmRs aW4gPGFsZXhhbmRlci5zdmVyZGxpbkBub2tpYS5jb20+DQoNCj4gU2lnbmVkLW9mZi1ieTogS3J6 eXN6dG9mIEFkYW1za2kgPGtyenlzenRvZi5hZGFtc2tpQG5va2lhLmNvbT4NCj4gLS0tDQo+IENo YW5nZXMgaW4gdjM6DQo+IC0gRml4ZWQgYnJhY2VzIGZvciBvbmUtbGluZSBpZiBib2RpZXMNCj4g DQo+IENoYW5nZXMgaW4gdjI6DQo+IC0gUmVkdWNlZCB0aGUgbnVtYmVyIG9mIGRldl9kYmcgbWVz c2FnZXMuDQo+IA0KPiAgZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcgICAgIHwgICAxICsNCj4g IGRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYXh4aWEuYyB8IDE1MiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0NCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKyksIDgg ZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25m aWcgYi9kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZw0KPiBpbmRleCA2OWYxOTMxMmE1NzQuLmI4 MjYyMzAxYzg2ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcNCj4g KysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcNCj4gQEAgLTQyOSw2ICs0MjksNyBAQCBj b25maWcgSTJDX0FYWElBDQo+ICAJdHJpc3RhdGUgIkF4eGlhIEkyQyBjb250cm9sbGVyIg0KPiAg CWRlcGVuZHMgb24gQVJDSF9BWFhJQSB8fCBDT01QSUxFX1RFU1QNCj4gIAlkZWZhdWx0IEFSQ0hf QVhYSUENCj4gKwlzZWxlY3QgSTJDX1NMQVZFDQo+ICAJaGVscA0KPiAgCSAgU2F5IHllcyBpZiB5 b3Ugd2FudCB0byBzdXBwb3J0IHRoZSBJMkMgYnVzIG9uIEF4eGlhIHBsYXRmb3Jtcy4NCj4gIA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1heHhpYS5jIGIvZHJpdmVycy9p MmMvYnVzc2VzL2kyYy1heHhpYS5jDQo+IGluZGV4IGZmMzE0MmIxNWNhYi4uMDIxNGRhYTkxM2Zm IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWF4eGlhLmMNCj4gKysrIGIv ZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1heHhpYS5jDQo+IEBAIC03Nyw2ICs3Nyw0MCBAQA0KPiAg CQkJCSBNU1RfU1RBVFVTX0lQKQ0KPiAgI2RlZmluZSBNU1RfVFhfQllURVNfWEZSRAkweDUwDQo+ ICAjZGVmaW5lIE1TVF9SWF9CWVRFU19YRlJECTB4NTQNCj4gKyNkZWZpbmUgU0xWX0FERFJfREVD X0NUTAkweDU4DQo+ICsjZGVmaW5lICAgU0xWX0FERFJfREVDX0dDRQlCSVQoMCkgIC8qIEFDSyB0 byBHZW5lcmFsIENhbGwgQWRkcmVzcyBmcm9tIG93biBtYXN0ZXIgKGxvb3BiYWNrKSAqLw0KPiAr I2RlZmluZSAgIFNMVl9BRERSX0RFQ19PR0NFCUJJVCgxKSAgLyogQUNLIHRvIEdlbmVyYWwgQ2Fs bCBBZGRyZXNzIGZyb20gZXh0ZXJuYWwgbWFzdGVycyAqLw0KPiArI2RlZmluZSAgIFNMVl9BRERS X0RFQ19TQTFFCUJJVCgyKSAgLyogQUNLIHRvIGFkZHJfMSBlbmFibGVkICovDQo+ICsjZGVmaW5l ICAgU0xWX0FERFJfREVDX1NBMU0JQklUKDMpICAvKiAxMC1iaXQgYWRkcmVzc2luZyBmb3IgYWRk cl8xIGVuYWJsZWQgKi8NCj4gKyNkZWZpbmUgICBTTFZfQUREUl9ERUNfU0EyRQlCSVQoNCkgIC8q IEFDSyB0byBhZGRyXzIgZW5hYmxlZCAqLw0KPiArI2RlZmluZSAgIFNMVl9BRERSX0RFQ19TQTJN CUJJVCg1KSAgLyogMTAtYml0IGFkZHJlc3NpbmcgZm9yIGFkZHJfMiBlbmFibGVkICovDQo+ICsj ZGVmaW5lIFNMVl9BRERSXzEJCTB4NWMNCj4gKyNkZWZpbmUgU0xWX0FERFJfMgkJMHg2MA0KPiAr I2RlZmluZSBTTFZfUlhfQ1RMCQkweDY0DQo+ICsjZGVmaW5lICAgU0xWX1JYX0FDU0ExCQlCSVQo MCkgIC8qIEdlbmVyYXRlIEFDSyBmb3Igd3JpdGVzIHRvIGFkZHJfMSAqLw0KPiArI2RlZmluZSAg IFNMVl9SWF9BQ1NBMgkJQklUKDEpICAvKiBHZW5lcmF0ZSBBQ0sgZm9yIHdyaXRlcyB0byBhZGRy XzIgKi8NCj4gKyNkZWZpbmUgICBTTFZfUlhfQUNHQ0EJCUJJVCgyKSAgLyogQUNLIGRhdGEgcGhh c2UgdHJhbnNmZXJzIHRvIEdlbmVyYWwgQ2FsbCBBZGRyZXNzICovDQo+ICsjZGVmaW5lIFNMVl9E QVRBCQkweDY4DQo+ICsjZGVmaW5lIFNMVl9SWF9GSUZPCQkweDZjDQo+ICsjZGVmaW5lICAgU0xW X0ZJRk9fRFYxCQlCSVQoMCkgIC8qIERhdGEgVmFsaWQgZm9yIGFkZHJfMSAqLw0KPiArI2RlZmlu ZSAgIFNMVl9GSUZPX0RWMgkJQklUKDEpICAvKiBEYXRhIFZhbGlkIGZvciBhZGRyXzIgKi8NCj4g KyNkZWZpbmUgICBTTFZfRklGT19BUwkJQklUKDIpICAvKiAoTilBQ0sgU2VudCAqLw0KPiArI2Rl ZmluZSAgIFNMVl9GSUZPX1ROQUsJCUJJVCgzKSAgLyogVGltZW91dCBOQUNLICovDQo+ICsjZGVm aW5lICAgU0xWX0ZJRk9fU1RSQwkJQklUKDQpICAvKiBGaXJzdCBieXRlIGFmdGVyIHN0YXJ0IGNv bmRpdGlvbiByZWNlaXZlZCAqLw0KPiArI2RlZmluZSAgIFNMVl9GSUZPX1JTQwkJQklUKDUpICAv KiBSZXBlYXRlZCBTdGFydCBDb25kaXRpb24gKi8NCj4gKyNkZWZpbmUgICBTTFZfRklGT19TVFBD CQlCSVQoNikgIC8qIFN0b3AgQ29uZGl0aW9uICovDQo+ICsjZGVmaW5lICAgU0xWX0ZJRk9fRFYJ CShTTFZfRklGT19EVjEgfCBTTFZfRklGT19EVjIpDQo+ICsjZGVmaW5lIFNMVl9JTlRfRU5BQkxF CQkweDcwDQo+ICsjZGVmaW5lIFNMVl9JTlRfU1RBVFVTCQkweDc0DQo+ICsjZGVmaW5lICAgU0xW X1NUQVRVU19SRkgJQklUKDApICAvKiBGSUZPIHNlcnZpY2UgKi8NCj4gKyNkZWZpbmUgICBTTFZf U1RBVFVTX1dUQwlCSVQoMSkgIC8qIFdyaXRlIHRyYW5zZmVyIGNvbXBsZXRlICovDQo+ICsjZGVm aW5lICAgU0xWX1NUQVRVU19TUlMxCUJJVCgyKSAgLyogU2xhdmUgcmVhZCBmcm9tIGFkZHIgMSAq Lw0KPiArI2RlZmluZSAgIFNMVl9TVEFUVVNfU1JSUzEJQklUKDMpICAvKiBSZXBlYXRlZCBzdGFy dCBmcm9tIGFkZHIgMSAqLw0KPiArI2RlZmluZSAgIFNMVl9TVEFUVVNfU1JORDEJQklUKDQpICAv KiBSZWFkIHJlcXVlc3Qgbm90IGZvbGxvd2luZyBzdGFydCBjb25kaXRpb24gKi8NCj4gKyNkZWZp bmUgICBTTFZfU1RBVFVTX1NSQzEJQklUKDUpICAvKiBSZWFkIGNhbmNlbGVkICovDQo+ICsjZGVm aW5lICAgU0xWX1NUQVRVU19TUkFUMQlCSVQoNikgIC8qIFNsYXZlIFJlYWQgdGltZWQgb3V0ICov DQo+ICsjZGVmaW5lICAgU0xWX1NUQVRVU19TUkRSRTEJQklUKDcpICAvKiBEYXRhIHdyaXR0ZW4g YWZ0ZXIgdGltZWQgb3V0ICovDQo+ICsjZGVmaW5lIFNMVl9SRUFEX0RVTU1ZCQkweDc4DQo+ICAj ZGVmaW5lIFNDTF9ISUdIX1BFUklPRAkJMHg4MA0KPiAgI2RlZmluZSBTQ0xfTE9XX1BFUklPRAkJ MHg4NA0KPiAgI2RlZmluZSBTUElLRV9GTFRSX0xFTgkJMHg4OA0KPiBAQCAtMTExLDYgKzE0NSw4 IEBAIHN0cnVjdCBheHhpYV9pMmNfZGV2IHsNCj4gIAlzdHJ1Y3QgY2xrICppMmNfY2xrOw0KPiAg CXUzMiBidXNfY2xrX3JhdGU7DQo+ICAJYm9vbCBsYXN0Ow0KPiArCXN0cnVjdCBpMmNfY2xpZW50 ICpzbGF2ZTsNCj4gKwlpbnQgaXJxOw0KPiAgfTsNCj4gIA0KPiAgc3RhdGljIHZvaWQgaTJjX2lu dF9kaXNhYmxlKHN0cnVjdCBheHhpYV9pMmNfZGV2ICppZGV2LCB1MzIgbWFzaykNCj4gQEAgLTI3 NiwxMyArMzEyLDY1IEBAIHN0YXRpYyBpbnQgYXh4aWFfaTJjX2ZpbGxfdHhfZmlmbyhzdHJ1Y3Qg YXh4aWFfaTJjX2RldiAqaWRldikNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiAgDQo+ICtzdGF0 aWMgdm9pZCBheHhpYV9pMmNfc2x2X2ZpZm9fZXZlbnQoc3RydWN0IGF4eGlhX2kyY19kZXYgKmlk ZXYpDQo+ICt7DQo+ICsJdTMyIGZpZm9fc3RhdHVzID0gcmVhZGwoaWRldi0+YmFzZSArIFNMVl9S WF9GSUZPKTsNCj4gKwl1OCB2YWw7DQo+ICsNCj4gKwlkZXZfZGJnKGlkZXYtPmRldiwgInNsYXZl IGlycSBmaWZvX3N0YXR1cz0weCV4XG4iLCBmaWZvX3N0YXR1cyk7DQo+ICsNCj4gKwlpZiAoZmlm b19zdGF0dXMgJiBTTFZfRklGT19EVjEpIHsNCj4gKwkJaWYgKGZpZm9fc3RhdHVzICYgU0xWX0ZJ Rk9fU1RSQykNCj4gKwkJCWkyY19zbGF2ZV9ldmVudChpZGV2LT5zbGF2ZSwNCj4gKwkJCQkJSTJD X1NMQVZFX1dSSVRFX1JFUVVFU1RFRCwgJnZhbCk7DQo+ICsNCj4gKwkJdmFsID0gcmVhZGwoaWRl di0+YmFzZSArIFNMVl9EQVRBKTsNCj4gKwkJaTJjX3NsYXZlX2V2ZW50KGlkZXYtPnNsYXZlLCBJ MkNfU0xBVkVfV1JJVEVfUkVDRUlWRUQsICZ2YWwpOw0KPiArCX0NCj4gKwlpZiAoZmlmb19zdGF0 dXMgJiBTTFZfRklGT19TVFBDKSB7DQo+ICsJCXJlYWRsKGlkZXYtPmJhc2UgKyBTTFZfREFUQSk7 IC8qIGR1bW15IHJlYWQgKi8NCj4gKwkJaTJjX3NsYXZlX2V2ZW50KGlkZXYtPnNsYXZlLCBJMkNf U0xBVkVfU1RPUCwgJnZhbCk7DQo+ICsJfQ0KPiArCWlmIChmaWZvX3N0YXR1cyAmIFNMVl9GSUZP X1JTQykNCj4gKwkJcmVhZGwoaWRldi0+YmFzZSArIFNMVl9EQVRBKTsgLyogZHVtbXkgcmVhZCAq Lw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgYXh4aWFfaTJjX3Nsdl9pc3Ioc3Ry dWN0IGF4eGlhX2kyY19kZXYgKmlkZXYpDQo+ICt7DQo+ICsJdTMyIHN0YXR1cyA9IHJlYWRsKGlk ZXYtPmJhc2UgKyBTTFZfSU5UX1NUQVRVUyk7DQo+ICsJdTggdmFsOw0KPiArDQo+ICsJZGV2X2Ri ZyhpZGV2LT5kZXYsICJzbGF2ZSBpcnEgc3RhdHVzPTB4JXhcbiIsIHN0YXR1cyk7DQo+ICsNCj4g KwlpZiAoc3RhdHVzICYgU0xWX1NUQVRVU19SRkgpDQo+ICsJCWF4eGlhX2kyY19zbHZfZmlmb19l dmVudChpZGV2KTsNCj4gKwlpZiAoc3RhdHVzICYgU0xWX1NUQVRVU19TUlMxKSB7DQo+ICsJCWky Y19zbGF2ZV9ldmVudChpZGV2LT5zbGF2ZSwgSTJDX1NMQVZFX1JFQURfUkVRVUVTVEVELCAmdmFs KTsNCj4gKwkJd3JpdGVsKHZhbCwgaWRldi0+YmFzZSArIFNMVl9EQVRBKTsNCj4gKwl9DQo+ICsJ aWYgKHN0YXR1cyAmIFNMVl9TVEFUVVNfU1JORDEpIHsNCj4gKwkJaTJjX3NsYXZlX2V2ZW50KGlk ZXYtPnNsYXZlLCBJMkNfU0xBVkVfUkVBRF9QUk9DRVNTRUQsICZ2YWwpOw0KPiArCQl3cml0ZWwo dmFsLCBpZGV2LT5iYXNlICsgU0xWX0RBVEEpOw0KPiArCX0NCj4gKwlpZiAoc3RhdHVzICYgU0xW X1NUQVRVU19TUkMxKQ0KPiArCQlpMmNfc2xhdmVfZXZlbnQoaWRldi0+c2xhdmUsIEkyQ19TTEFW RV9TVE9QLCAmdmFsKTsNCj4gKw0KPiArCXdyaXRlbChJTlRfU0xWLCBpZGV2LT5iYXNlICsgSU5U RVJSVVBUX1NUQVRVUyk7DQo+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiArfQ0KPiArDQo+ICBz dGF0aWMgaXJxcmV0dXJuX3QgYXh4aWFfaTJjX2lzcihpbnQgaXJxLCB2b2lkICpfZGV2KQ0KPiAg ew0KPiAgCXN0cnVjdCBheHhpYV9pMmNfZGV2ICppZGV2ID0gX2RldjsNCj4gKwlpcnFyZXR1cm5f dCByZXQgPSBJUlFfTk9ORTsNCj4gIAl1MzIgc3RhdHVzOw0KPiAgDQo+IC0JaWYgKCEocmVhZGwo aWRldi0+YmFzZSArIElOVEVSUlVQVF9TVEFUVVMpICYgSU5UX01TVCkpDQo+IC0JCXJldHVybiBJ UlFfTk9ORTsNCj4gKwlzdGF0dXMgPSByZWFkbChpZGV2LT5iYXNlICsgSU5URVJSVVBUX1NUQVRV Uyk7DQo+ICsNCj4gKwlpZiAoc3RhdHVzICYgSU5UX1NMVikNCj4gKwkJcmV0ID0gYXh4aWFfaTJj X3Nsdl9pc3IoaWRldik7DQo+ICsJaWYgKCEoc3RhdHVzICYgSU5UX01TVCkpDQo+ICsJCXJldHVy biByZXQ7DQo+ICANCj4gIAkvKiBSZWFkIGludGVycnVwdCBzdGF0dXMgYml0cyAqLw0KPiAgCXN0 YXR1cyA9IHJlYWRsKGlkZXYtPmJhc2UgKyBNU1RfSU5UX1NUQVRVUyk7DQo+IEBAIC01ODMsOSAr NjcxLDU4IEBAIHN0YXRpYyB1MzIgYXh4aWFfaTJjX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICph ZGFwKQ0KPiAgCXJldHVybiBjYXBzOw0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMgaW50IGF4eGlhX2ky Y19yZWdfc2xhdmUoc3RydWN0IGkyY19jbGllbnQgKnNsYXZlKQ0KPiArew0KPiArCXN0cnVjdCBh eHhpYV9pMmNfZGV2ICppZGV2ID0gaTJjX2dldF9hZGFwZGF0YShzbGF2ZS0+YWRhcHRlcik7DQo+ ICsJdTMyIHNsdl9pbnRfbWFzayA9IFNMVl9TVEFUVVNfUkZIOw0KPiArCXUzMiBkZWNfY3RsOw0K PiArDQo+ICsJaWYgKGlkZXYtPnNsYXZlKQ0KPiArCQlyZXR1cm4gLUVCVVNZOw0KPiArDQo+ICsJ aWRldi0+c2xhdmUgPSBzbGF2ZTsNCj4gKw0KPiArCS8qIEVuYWJsZSBzbGF2ZSBtb2RlIGFzIHdl bGwgKi8NCj4gKwl3cml0ZWwoR0xPQkFMX01TVF9FTiB8IEdMT0JBTF9TTFZfRU4sIGlkZXYtPmJh c2UgKyBHTE9CQUxfQ09OVFJPTCk7DQo+ICsJd3JpdGVsKElOVF9NU1QgfCBJTlRfU0xWLCBpZGV2 LT5iYXNlICsgSU5URVJSVVBUX0VOQUJMRSk7DQo+ICsNCj4gKwkvKiBTZXQgc2xhdmUgYWRkcmVz cyAqLw0KPiArCWRlY19jdGwgPSBTTFZfQUREUl9ERUNfU0ExRTsNCj4gKwlpZiAoc2xhdmUtPmZs YWdzICYgSTJDX0NMSUVOVF9URU4pDQo+ICsJCWRlY19jdGwgfD0gU0xWX0FERFJfREVDX1NBMU07 DQo+ICsNCj4gKwl3cml0ZWwoU0xWX1JYX0FDU0ExLCBpZGV2LT5iYXNlICsgU0xWX1JYX0NUTCk7 DQo+ICsJd3JpdGVsKGRlY19jdGwsIGlkZXYtPmJhc2UgKyBTTFZfQUREUl9ERUNfQ1RMKTsNCj4g Kwl3cml0ZWwoc2xhdmUtPmFkZHIsIGlkZXYtPmJhc2UgKyBTTFZfQUREUl8xKTsNCj4gKw0KPiAr CS8qIEVuYWJsZSBpbnRlcnJ1cHRzICovDQo+ICsJc2x2X2ludF9tYXNrIHw9IFNMVl9TVEFUVVNf U1JTMSB8IFNMVl9TVEFUVVNfU1JSUzEgfCBTTFZfU1RBVFVTX1NSTkQxOw0KPiArCXNsdl9pbnRf bWFzayB8PSBTTFZfU1RBVFVTX1NSQzE7DQo+ICsJd3JpdGVsKHNsdl9pbnRfbWFzaywgaWRldi0+ YmFzZSArIFNMVl9JTlRfRU5BQkxFKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50IGF4eGlhX2kyY191bnJlZ19zbGF2ZShzdHJ1Y3QgaTJjX2NsaWVudCAqc2xh dmUpDQo+ICt7DQo+ICsJc3RydWN0IGF4eGlhX2kyY19kZXYgKmlkZXYgPSBpMmNfZ2V0X2FkYXBk YXRhKHNsYXZlLT5hZGFwdGVyKTsNCj4gKw0KPiArCS8qIERpc2FibGUgc2xhdmUgbW9kZSAqLw0K PiArCXdyaXRlbChHTE9CQUxfTVNUX0VOLCBpZGV2LT5iYXNlICsgR0xPQkFMX0NPTlRST0wpOw0K PiArCXdyaXRlbChJTlRfTVNULCBpZGV2LT5iYXNlICsgSU5URVJSVVBUX0VOQUJMRSk7DQo+ICsN Cj4gKwlzeW5jaHJvbml6ZV9pcnEoaWRldi0+aXJxKTsNCj4gKw0KPiArCWlkZXYtPnNsYXZlID0g TlVMTDsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19hbGdvcml0aG0gYXh4aWFfaTJjX2FsZ28gPSB7DQo+ICAJLm1hc3Rlcl94ZmVyID0g YXh4aWFfaTJjX3hmZXIsDQo+ICAJLmZ1bmN0aW9uYWxpdHkgPSBheHhpYV9pMmNfZnVuYywNCj4g KwkucmVnX3NsYXZlID0gYXh4aWFfaTJjX3JlZ19zbGF2ZSwNCj4gKwkudW5yZWdfc2xhdmUgPSBh eHhpYV9pMmNfdW5yZWdfc2xhdmUsDQo+ICB9Ow0KPiAgDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0 IGkyY19hZGFwdGVyX3F1aXJrcyBheHhpYV9pMmNfcXVpcmtzID0gew0KPiBAQCAtNTk5LDcgKzcz Niw2IEBAIHN0YXRpYyBpbnQgYXh4aWFfaTJjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQo+ICAJc3RydWN0IGF4eGlhX2kyY19kZXYgKmlkZXYgPSBOVUxMOw0KPiAgCXN0cnVj dCByZXNvdXJjZSAqcmVzOw0KPiAgCXZvaWQgX19pb21lbSAqYmFzZTsNCj4gLQlpbnQgaXJxOw0K PiAgCWludCByZXQgPSAwOw0KPiAgDQo+ICAJaWRldiA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2 LCBzaXplb2YoKmlkZXYpLCBHRlBfS0VSTkVMKTsNCj4gQEAgLTYxMSwxMCArNzQ3LDEwIEBAIHN0 YXRpYyBpbnQgYXh4aWFfaTJjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ ICAJaWYgKElTX0VSUihiYXNlKSkNCj4gIAkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7DQo+ICANCj4g LQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOw0KPiAtCWlmIChpcnEgPCAwKSB7DQo+ ICsJaWRldi0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gKwlpZiAoaWRldi0+ aXJxIDwgMCkgew0KPiAgCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJtaXNzaW5nIGludGVycnVwdCBy ZXNvdXJjZVxuIik7DQo+IC0JCXJldHVybiBpcnE7DQo+ICsJCXJldHVybiBpZGV2LT5pcnE7DQo+ ICAJfQ0KPiAgDQo+ICAJaWRldi0+aTJjX2NsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAi aTJjIik7DQo+IEBAIC02NDMsMTAgKzc3OSwxMCBAQCBzdGF0aWMgaW50IGF4eGlhX2kyY19wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCQlnb3RvIGVycm9yX2Rpc2FibGVf Y2xrOw0KPiAgCX0NCj4gIA0KPiAtCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwg aXJxLCBheHhpYV9pMmNfaXNyLCAwLA0KPiArCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYt PmRldiwgaWRldi0+aXJxLCBheHhpYV9pMmNfaXNyLCAwLA0KPiAgCQkJICAgICAgIHBkZXYtPm5h bWUsIGlkZXYpOw0KPiAgCWlmIChyZXQpIHsNCj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFp bGVkIHRvIGNsYWltIElSUSVkXG4iLCBpcnEpOw0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJm YWlsZWQgdG8gY2xhaW0gSVJRJWRcbiIsIGlkZXYtPmlycSk7DQo+ICAJCWdvdG8gZXJyb3JfZGlz YWJsZV9jbGs7DQo+ICAJfQ0KDQotLSANCkJlc3QgcmVnYXJkcywNCkFsZXhhbmRlciBTdmVyZGxp bi4NCg==