From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-bl2nam02on0075.outbound.protection.outlook.com ([104.47.38.75]:2232 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726131AbeJRPGi (ORCPT ); Thu, 18 Oct 2018 11:06:38 -0400 From: "Ardelean, Alexandru" To: "linux-iio@vger.kernel.org" , "charles-antoine.couret@essensium.com" Subject: Re: [PATCHv2 1/2] Add AD7949 ADC driver family Date: Thu, 18 Oct 2018 07:06:52 +0000 Message-ID: References: <20181017203954.13744-1-charles-antoine.couret@essensium.com> In-Reply-To: <20181017203954.13744-1-charles-antoine.couret@essensium.com> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org T24gV2VkLCAyMDE4LTEwLTE3IGF0IDIyOjM5ICswMjAwLCBDaGFybGVzLUFudG9pbmUgQ291cmV0 IHdyb3RlOg0KPiBBZGQgQUQ3OTQ5IEFEQyBkcml2ZXIgZmFtaWx5DQo+IA0KPiBDb21wYXRpYmxl IHdpdGggQUQ3NjgyIGFuZCBBRDc2ODkgY2hpcHMuDQo+IEl0IGlzIGEgQW5hbG9nIERldmljZXMg QURDIGRyaXZlciAxNC8xNiBiaXRzIDQvOCBjaGFubmVscw0KPiB3aXRoIFNQSSBwcm90b2NvbA0K PiANCj4gRGF0YXNoZWV0IG9mIHRoZSBkZXZpY2U6DQo+IA0KaHR0cDovL3d3dy5hbmFsb2cuY29t L21lZGlhL2VuL3RlY2huaWNhbC1kb2N1bWVudGF0aW9uL2RhdGEtc2hlZXRzL0FENzk0OS5wZGYN Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IENoYXJsZXMtQW50b2luZSBDb3VyZXQgPA0KPiBjaGFybGVz LWFudG9pbmUuY291cmV0QGVzc2Vuc2l1bS5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9paW8vYWRj L0tjb25maWcgIHwgIDEwICsrDQo+ICBkcml2ZXJzL2lpby9hZGMvTWFrZWZpbGUgfCAgIDEgKw0K PiAgZHJpdmVycy9paW8vYWRjL2FkNzk0OS5jIHwgMzUyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAzNjMgaW5zZXJ0aW9ucygrKQ0K PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaWlvL2FkYy9hZDc5NDkuYw0KPiANCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy9LY29uZmlnIGIvZHJpdmVycy9paW8vYWRjL0tjb25m aWcNCj4gaW5kZXggNGE3NTQ5MjFmYjZmLi40MmU2NmVmZmY2YzAgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvaWlvL2FkYy9LY29uZmlnDQo+ICsrKyBiL2RyaXZlcnMvaWlvL2FkYy9LY29uZmlnDQo+ IEBAIC0xMTYsNiArMTE2LDE2IEBAIGNvbmZpZyBBRDc5MjMNCj4gIAkgIFRvIGNvbXBpbGUgdGhp cyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQ0KPiAgCSAgbW9kdWxlIHdp bGwgYmUgY2FsbGVkIGFkNzkyMy4NCj4gIA0KPiArY29uZmlnIEFENzk0OQ0KPiArCXRyaXN0YXRl ICJBbmFsb2cgRGV2aWNlcyBBRDc5NDkgYW5kIHNpbWlsYXIgQURDcyBkcml2ZXIiDQo+ICsJZGVw ZW5kcyBvbiBTUEkNCj4gKwloZWxwDQo+ICsJICBTYXkgeWVzIGhlcmUgdG8gYnVpbGQgc3VwcG9y dCBmb3IgQW5hbG9nIERldmljZXMNCj4gKwkgIEFENzk0OSwgQUQ3NjgyLCBBRDc2ODkgOCBDaGFu bmVsIEFEQ3MuDQo+ICsNCj4gKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUs IGNob29zZSBNIGhlcmU6IHRoZQ0KPiArCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFkNzk0OS4N Cj4gKw0KPiAgY29uZmlnIEFENzk5WA0KPiAgCXRyaXN0YXRlICJBbmFsb2cgRGV2aWNlcyBBRDc5 OXggQURDIGRyaXZlciINCj4gIAlkZXBlbmRzIG9uIEkyQw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9paW8vYWRjL01ha2VmaWxlIGIvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlDQo+IGluZGV4IDAz ZGI3YjU3OGY5Yy4uODg4MDRjODY3YWE5IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2lpby9hZGMv TWFrZWZpbGUNCj4gKysrIGIvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlDQo+IEBAIC0xNCw2ICsx NCw3IEBAIG9iai0kKENPTkZJR19BRDc3NjYpICs9IGFkNzc2Ni5vDQo+ICBvYmotJChDT05GSUdf QUQ3NzkxKSArPSBhZDc3OTEubw0KPiAgb2JqLSQoQ09ORklHX0FENzc5MykgKz0gYWQ3NzkzLm8N Cj4gIG9iai0kKENPTkZJR19BRDc4ODcpICs9IGFkNzg4Ny5vDQo+ICtvYmotJChDT05GSUdfQUQ3 OTQ5KSArPSBhZDc5NDkubw0KPiAgb2JqLSQoQ09ORklHX0FENzk5WCkgKz0gYWQ3OTl4Lm8NCj4g IG9iai0kKENPTkZJR19BU1BFRURfQURDKSArPSBhc3BlZWRfYWRjLm8NCj4gIG9iai0kKENPTkZJ R19BVDkxX0FEQykgKz0gYXQ5MV9hZGMubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRj L2FkNzk0OS5jIGIvZHJpdmVycy9paW8vYWRjL2FkNzk0OS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZGE1MDgyZTgwMzE3DQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZHJpdmVycy9paW8vYWRjL2FkNzk0OS5jDQo+IEBAIC0wLDAgKzEsMzUyIEBADQo+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyogYWQ3OTQ5LmMgLSBB bmFsb2cgRGV2aWNlcyBBREMgZHJpdmVyIDE0LzE2IGJpdHMgNC84IGNoYW5uZWxzDQo+ICsgKg0K PiArICogQ29weXJpZ2h0IChDKSAyMDE4IENNQyBOVg0KPiArICoNCj4gKyAqIA0KPiBodHRwOi8v d3d3LmFuYWxvZy5jb20vbWVkaWEvZW4vdGVjaG5pY2FsLWRvY3VtZW50YXRpb24vZGF0YS1zaGVl dHMvQUQ3OTQ5LnBkZg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L2lpby9paW8uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4NCj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9zcGkvc3BpLmg+DQo+ICsNCj4gKyNkZWZpbmUgQUQ3OTQ5X01BU0tfQ0hBTk5FTF9T RUwJCUdFTk1BU0soOSwgNykNCj4gKyNkZWZpbmUgQUQ3OTQ5X01BU0tfVE9UQUwJCUdFTk1BU0so MTMsIDApDQo+ICsjZGVmaW5lIEFENzk0OV9PRkZTRVRfQ0hBTk5FTF9TRUwJNw0KPiArI2RlZmlu ZSBBRDc5NDlfQ0ZHX1JFQURfQkFDSwkJMHgxDQo+ICsjZGVmaW5lIEFENzk0OV9DRkdfUkVHX1NJ WkVfQklUUwkxNA0KPiArDQo+ICtlbnVtIHsNCj4gKwlJRF9BRDc5NDkgPSAwLA0KPiArCUlEX0FE NzY4MiwNCj4gKwlJRF9BRDc2ODksDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgYWQ3OTQ5X2FkY19z cGVjIHsNCj4gKwl1OCBudW1fY2hhbm5lbHM7DQo+ICsJdTggcmVzb2x1dGlvbjsNCj4gK307DQo+ ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWQ3OTQ5X2FkY19zcGVjIGFkNzk0OV9hZGNfc3Bl Y1tdID0gew0KPiArCVtJRF9BRDc5NDldICA9IHsgLm51bV9jaGFubmVscyA9IDgsIC5yZXNvbHV0 aW9uID0gMTQgfSwNCj4gKwlbSURfQUQ3NjgyXSA9IHsgLm51bV9jaGFubmVscyA9IDQsIC5yZXNv bHV0aW9uID0gMTYgfSwNCj4gKwlbSURfQUQ3Njg5XSA9IHsgLm51bV9jaGFubmVscyA9IDgsIC5y ZXNvbHV0aW9uID0gMTYgfSwNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGFkNzk0 OV9hZGNfY2hpcCAtIEFEIEFEQyBjaGlwDQo+ICsgKiBAbG9jazogcHJvdGVjdHMgd3JpdGUgc2Vx dWVuY2VzDQo+ICsgKiBAdnJlZjogcmVndWxhdG9yIGdlbmVyYXRpbmcgVnJlZg0KPiArICogQGlp b19kZXY6IHJlZmVyZW5jZSB0byBpaW8gc3RydWN0dXJlDQo+ICsgKiBAc3BpOiByZWZlcmVuY2Ug dG8gc3BpIHN0cnVjdHVyZQ0KPiArICogQHJlc29sdXRpb246IHJlc29sdXRpb24gb2YgdGhlIGNo aXANCj4gKyAqIEBjZmc6IGNvcHkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXINCj4gKyAq IEBjdXJyZW50X2NoYW5uZWw6IGN1cnJlbnQgY2hhbm5lbCBpbiB1c2UNCj4gKyAqIEBidWZmZXI6 IGJ1ZmZlciB0byBzZW5kIC8gcmVjZWl2ZSBkYXRhIHRvIC8gZnJvbSBkZXZpY2UNCj4gKyAqLw0K PiArc3RydWN0IGFkNzk0OV9hZGNfY2hpcCB7DQo+ICsJc3RydWN0IG11dGV4IGxvY2s7DQo+ICsJ c3RydWN0IHJlZ3VsYXRvciAqdnJlZjsNCj4gKwlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2Ow0K PiArCXN0cnVjdCBzcGlfZGV2aWNlICpzcGk7DQo+ICsJdTggcmVzb2x1dGlvbjsNCj4gKwl1MTYg Y2ZnOw0KPiArCXVuc2lnbmVkIGludCBjdXJyZW50X2NoYW5uZWw7DQo+ICsJdTMyIGJ1ZmZlciBf X19fY2FjaGVsaW5lX2FsaWduZWQ7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgYm9vbCBhZDc5NDlf c3BpX2NmZ19pc19yZWFkX2JhY2soc3RydWN0IGFkNzk0OV9hZGNfY2hpcA0KPiAqYWQ3OTQ5X2Fk YykNCj4gK3sNCj4gKwlpZiAoIShhZDc5NDlfYWRjLT5jZmcgJiBBRDc5NDlfQ0ZHX1JFQURfQkFD SykpDQo+ICsJCXJldHVybiB0cnVlOw0KPiArDQo+ICsJcmV0dXJuIGZhbHNlOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50IGFkNzk0OV9zcGlfYml0c19wZXJfd29yZChzdHJ1Y3QgYWQ3OTQ5X2Fk Y19jaGlwICphZDc5NDlfYWRjKQ0KPiArew0KPiArCWludCByZXQgPSBhZDc5NDlfYWRjLT5yZXNv bHV0aW9uOw0KPiArDQo+ICsJaWYgKGFkNzk0OV9zcGlfY2ZnX2lzX3JlYWRfYmFjayhhZDc5NDlf YWRjKSkNCj4gKwkJcmV0ICs9IEFENzk0OV9DRkdfUkVHX1NJWkVfQklUUzsNCj4gKw0KPiArCXJl dHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgYWQ3OTQ5X3NwaV93cml0ZV9jZmco c3RydWN0IGFkNzk0OV9hZGNfY2hpcCAqYWQ3OTQ5X2FkYywgdTE2DQo+IHZhbCwNCj4gKwkJCQl1 MTYgbWFzaykNCj4gK3sNCj4gKwlpbnQgcmV0Ow0KPiArCWludCBiaXRzX3Blcl93b3JkID0gYWQ3 OTQ5X3NwaV9iaXRzX3Blcl93b3JkKGFkNzk0OV9hZGMpOw0KPiArCWludCBzaGlmdCA9IGJpdHNf cGVyX3dvcmQgLSBBRDc5NDlfQ0ZHX1JFR19TSVpFX0JJVFM7DQo+ICsJc3RydWN0IHNwaV9tZXNz YWdlIG1zZzsNCj4gKwlzdHJ1Y3Qgc3BpX3RyYW5zZmVyIHR4W10gPSB7DQo+ICsJCXsNCj4gKwkJ CS50eF9idWYgPSAmYWQ3OTQ5X2FkYy0+YnVmZmVyLA0KPiArCQkJLmxlbiA9IDQsDQo+ICsJCQku Yml0c19wZXJfd29yZCA9IGJpdHNfcGVyX3dvcmQsDQo+ICsJCX0sDQo+ICsJfTsNCj4gKw0KPiAr CWFkNzk0OV9hZGMtPmNmZyA9ICh2YWwgJiBtYXNrKSB8IChhZDc5NDlfYWRjLT5jZmcgJiB+bWFz ayk7DQo+ICsJYWQ3OTQ5X2FkYy0+YnVmZmVyID0gYWQ3OTQ5X2FkYy0+Y2ZnIDw8IHNoaWZ0Ow0K PiArCXNwaV9tZXNzYWdlX2luaXQoJm1zZyk7DQo+ICsJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJnR4 WzBdLCAmbXNnKTsNCj4gKwlyZXQgPSBzcGlfc3luYyhhZDc5NDlfYWRjLT5zcGksICZtc2cpOw0K PiArDQo+ICsJLyogVGhpcyBkZWxheSBpcyB0byBhdm9pZCBhIG5ldyByZXF1ZXN0IGJlZm9yZSB0 aGUgcmVxdWlyZWQgdGltZSB0bw0KPiArCSAqIHNlbmQgYSBuZXcgY29tbWFuZCB0byB0aGUgZGV2 aWNlDQo+ICsJICovIA0KPiArCXVkZWxheSgyKTsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50IGFkNzk0OV9zcGlfcmVhZF9jaGFubmVsKHN0cnVjdCBhZDc5NDlfYWRj X2NoaXAgKmFkNzk0OV9hZGMsDQo+IGludCAqdmFsLA0KPiArCQkJCSAgIHVuc2lnbmVkIGludCBj aGFubmVsKQ0KPiArew0KPiArCWludCByZXQ7DQo+ICsJaW50IGJpdHNfcGVyX3dvcmQgPSBhZDc5 NDlfc3BpX2JpdHNfcGVyX3dvcmQoYWQ3OTQ5X2FkYyk7DQo+ICsJaW50IG1hc2sgPSBHRU5NQVNL KGFkNzk0OV9hZGMtPnJlc29sdXRpb24sIDApOw0KPiArCXN0cnVjdCBzcGlfbWVzc2FnZSBtc2c7 DQo+ICsJc3RydWN0IHNwaV90cmFuc2ZlciB0eFtdID0gew0KPiArCQl7DQo+ICsJCQkucnhfYnVm ID0gJmFkNzk0OV9hZGMtPmJ1ZmZlciwNCj4gKwkJCS5sZW4gPSA0LA0KPiArCQkJLmJpdHNfcGVy X3dvcmQgPSBiaXRzX3Blcl93b3JkLA0KPiArCQl9LA0KPiArCX07DQo+ICsNCj4gKwlyZXQgPSBh ZDc5NDlfc3BpX3dyaXRlX2NmZyhhZDc5NDlfYWRjLA0KPiArCQkJCSAgIGNoYW5uZWwgPDwgQUQ3 OTQ5X09GRlNFVF9DSEFOTkVMX1NFTCwNCj4gKwkJCQkgICBBRDc5NDlfTUFTS19DSEFOTkVMX1NF TCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCWFkNzk0OV9hZGMt PmJ1ZmZlciA9IDA7DQo+ICsJc3BpX21lc3NhZ2VfaW5pdCgmbXNnKTsNCj4gKwlzcGlfbWVzc2Fn ZV9hZGRfdGFpbCgmdHhbMF0sICZtc2cpOw0KPiArCXJldCA9IHNwaV9zeW5jKGFkNzk0OV9hZGMt PnNwaSwgJm1zZyk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8q IFRoaXMgZGVsYXkgaXMgdG8gYXZvaWQgYSBuZXcgcmVxdWVzdCBiZWZvcmUgdGhlIHJlcXVpcmVk IHRpbWUgdG8NCj4gKwkgKiBzZW5kIGEgbmV3IGNvbW1hbmQgdG8gdGhlIGRldmljZQ0KPiArCSAq LyANCj4gKwl1ZGVsYXkoMik7DQo+ICsNCj4gKwlhZDc5NDlfYWRjLT5jdXJyZW50X2NoYW5uZWwg PSBjaGFubmVsOw0KPiArDQo+ICsJaWYgKGFkNzk0OV9zcGlfY2ZnX2lzX3JlYWRfYmFjayhhZDc5 NDlfYWRjKSkNCj4gKwkJKnZhbCA9IChhZDc5NDlfYWRjLT5idWZmZXIgPj4gQUQ3OTQ5X0NGR19S RUdfU0laRV9CSVRTKSAmDQo+IG1hc2s7DQo+ICsJZWxzZQ0KPiArCQkqdmFsID0gYWQ3OTQ5X2Fk Yy0+YnVmZmVyICYgbWFzazsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsjZGVm aW5lIEFENzk0OV9BRENfQ0hBTk5FTChjaGFuKSB7CQkJCVwNCj4gKwkudHlwZSA9IElJT19WT0xU QUdFLAkJCQkJXA0KPiArCS5pbmRleGVkID0gMSwJCQkJCQlcDQo+ICsJLmNoYW5uZWwgPSAoY2hh biksCQkJCQlcDQo+ICsJLmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hBTl9JTkZPX1JB VyksCQlcDQo+ICsJLmluZm9fbWFza19zaGFyZWRfYnlfdHlwZSA9IEJJVChJSU9fQ0hBTl9JTkZP X1NDQUxFKSwJXA0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3Nw ZWMgYWQ3OTQ5X2FkY19jaGFubmVsc1tdID0gew0KPiArCUFENzk0OV9BRENfQ0hBTk5FTCgwKSwN Cj4gKwlBRDc5NDlfQURDX0NIQU5ORUwoMSksDQo+ICsJQUQ3OTQ5X0FEQ19DSEFOTkVMKDIpLA0K PiArCUFENzk0OV9BRENfQ0hBTk5FTCgzKSwNCj4gKwlBRDc5NDlfQURDX0NIQU5ORUwoNCksDQo+ ICsJQUQ3OTQ5X0FEQ19DSEFOTkVMKDUpLA0KPiArCUFENzk0OV9BRENfQ0hBTk5FTCg2KSwNCj4g KwlBRDc5NDlfQURDX0NIQU5ORUwoNyksDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IGFkNzk0 OV9zcGlfcmVhZF9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gKwkJCSAgIHN0cnVj dCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuLA0KPiArCQkJICAgaW50ICp2YWwsIGludCAqdmFs MiwgbG9uZyBtYXNrKQ0KPiArew0KPiArCXN0cnVjdCBhZDc5NDlfYWRjX2NoaXAgKmFkNzk0OV9h ZGMgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlpZiAoIXZh bCkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlzd2l0Y2ggKG1hc2spIHsNCj4gKwlj YXNlIElJT19DSEFOX0lORk9fUkFXOg0KPiArCQltdXRleF9sb2NrKCZhZDc5NDlfYWRjLT5sb2Nr KTsNCj4gKwkJcmV0ID0gYWQ3OTQ5X3NwaV9yZWFkX2NoYW5uZWwoYWQ3OTQ5X2FkYywgdmFsLCBj aGFuLQ0KPiA+Y2hhbm5lbCk7DQo+ICsJCW11dGV4X3VubG9jaygmYWQ3OTQ5X2FkYy0+bG9jayk7 DQo+ICsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJCXJl dHVybiBJSU9fVkFMX0lOVDsNCj4gKw0KPiArCWNhc2UgSUlPX0NIQU5fSU5GT19TQ0FMRToNCj4g KwkJcmV0ID0gcmVndWxhdG9yX2dldF92b2x0YWdlKGFkNzk0OV9hZGMtPnZyZWYpOw0KPiArCQlp ZiAocmV0IDwgMCkNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsNCj4gKwkJKnZhbCA9IHJldCAvIDUw MDA7DQo+ICsJCXJldHVybiBJSU9fVkFMX0lOVDsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gLUVJ TlZBTDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBhZDc5NDlfc3BpX3JlZ19hY2Nlc3Moc3Ry dWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gKwkJCXVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVk IGludCB3cml0ZXZhbCwNCj4gKwkJCXVuc2lnbmVkIGludCAqcmVhZHZhbCkNCj4gK3sNCj4gKwlz dHJ1Y3QgYWQ3OTQ5X2FkY19jaGlwICphZDc5NDlfYWRjID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsN Cj4gKwlpbnQgcmV0ID0gMDsNCj4gKw0KPiArCWlmIChyZWFkdmFsKQ0KPiArCQkqcmVhZHZhbCA9 IGFkNzk0OV9hZGMtPmNmZzsNCj4gKwllbHNlDQo+ICsJCXJldCA9IGFkNzk0OV9zcGlfd3JpdGVf Y2ZnKGFkNzk0OV9hZGMsDQo+ICsJCQl3cml0ZXZhbCAmIEFENzk0OV9NQVNLX1RPVEFMLCBBRDc5 NDlfTUFTS19UT1RBTCk7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGlpb19pbmZvIGFkNzk0OV9zcGlfaW5mbyA9IHsNCj4gKwkucmVhZF9y YXcgPSBhZDc5NDlfc3BpX3JlYWRfcmF3LA0KPiArCS5kZWJ1Z2ZzX3JlZ19hY2Nlc3MgPSBhZDc5 NDlfc3BpX3JlZ19hY2Nlc3MsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IGFkNzk0OV9zcGlf aW5pdChzdHJ1Y3QgYWQ3OTQ5X2FkY19jaGlwICphZDc5NDlfYWRjKQ0KPiArew0KPiArCWludCBy ZXQ7DQo+ICsJaW50IHZhbDsNCj4gKw0KPiArCS8qIFNlcXVlbmNlciBkaXNhYmxlZCwgQ0ZHIHJl YWRiYWNrIGRpc2FibGVkLCBJTjAgYXMgZGVmYXVsdA0KPiBjaGFubmVsICovDQo+ICsJYWQ3OTQ5 X2FkYy0+Y3VycmVudF9jaGFubmVsID0gMDsNCj4gKwlyZXQgPSBhZDc5NDlfc3BpX3dyaXRlX2Nm ZyhhZDc5NDlfYWRjLCAweDNDNzksIEFENzk0OV9NQVNLX1RPVEFMKTsNCj4gKw0KPiArCS8qIERv IHR3byBkdW1teSBjb252ZXJzaW9ucyB0byBhcHBseSB0aGUgZmlyc3QgY29uZmlndXJhdGlvbg0K PiBzZXR0aW5nLg0KPiArCSAqIFJlcXVpcmVkIG9ubHkgYWZ0ZXIgdGhlIHN0YXJ0IHVwIG9mIHRo ZSBkZXZpY2UuDQo+ICsJICovDQo+ICsJYWQ3OTQ5X3NwaV9yZWFkX2NoYW5uZWwoYWQ3OTQ5X2Fk YywgJnZhbCwgYWQ3OTQ5X2FkYy0NCj4gPmN1cnJlbnRfY2hhbm5lbCk7DQo+ICsJYWQ3OTQ5X3Nw aV9yZWFkX2NoYW5uZWwoYWQ3OTQ5X2FkYywgJnZhbCwgYWQ3OTQ5X2FkYy0NCj4gPmN1cnJlbnRf Y2hhbm5lbCk7DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBhZDc5 NDlfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpDQo+ICt7DQo+ICsJc3RydWN0IGRl dmljZSAqZGV2ID0gJnNwaS0+ZGV2Ow0KPiArCWNvbnN0IHN0cnVjdCBhZDc5NDlfYWRjX3NwZWMg KnNwZWM7DQo+ICsJc3RydWN0IGFkNzk0OV9hZGNfY2hpcCAqYWQ3OTQ5X2FkYzsNCj4gKwlzdHJ1 Y3QgaWlvX2RldiAqaW5kaW9fZGV2Ow0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlpbmRpb19kZXYg PSBkZXZtX2lpb19kZXZpY2VfYWxsb2MoZGV2LCBzaXplb2YoKmFkNzk0OV9hZGMpKTsNCj4gKwlp ZiAoIWluZGlvX2Rldikgew0KPiArCQlkZXZfZXJyKGRldiwgImNhbiBub3QgYWxsb2NhdGUgaWlv IGRldmljZVxuIik7DQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArCX0NCj4gKw0KPiArCXNwaS0+ bWF4X3NwZWVkX2h6ID0gMzMwMDAwMDA7DQo+ICsJc3BpLT5tb2RlID0gU1BJX01PREVfMDsNCj4g KwlzcGktPmJpdHNfcGVyX3dvcmQgPSA4Ow0KPiArCXNwaV9zZXR1cChzcGkpOw0KPiArDQo+ICsJ aW5kaW9fZGV2LT5kZXYucGFyZW50ID0gZGV2Ow0KPiArCWluZGlvX2Rldi0+ZGV2Lm9mX25vZGUg PSBkZXYtPm9mX25vZGU7DQo+ICsJaW5kaW9fZGV2LT5pbmZvID0gJmFkNzk0OV9zcGlfaW5mbzsN Cj4gKwlpbmRpb19kZXYtPm5hbWUgPSBzcGlfZ2V0X2RldmljZV9pZChzcGkpLT5uYW1lOw0KPiAr CWluZGlvX2Rldi0+bW9kZXMgPSBJTkRJT19ESVJFQ1RfTU9ERTsNCj4gKwlpbmRpb19kZXYtPmNo YW5uZWxzID0gYWQ3OTQ5X2FkY19jaGFubmVsczsNCj4gKwlzcGlfc2V0X2RydmRhdGEoc3BpLCBp bmRpb19kZXYpOw0KPiArDQo+ICsJYWQ3OTQ5X2FkYyA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ ICsJYWQ3OTQ5X2FkYy0+aW5kaW9fZGV2ID0gaW5kaW9fZGV2Ow0KPiArCWFkNzk0OV9hZGMtPnNw aSA9IHNwaTsNCj4gKw0KPiArCXNwZWMgPSAmYWQ3OTQ5X2FkY19zcGVjW3NwaV9nZXRfZGV2aWNl X2lkKHNwaSktPmRyaXZlcl9kYXRhXTsNCj4gKwlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IHNw ZWMtPm51bV9jaGFubmVsczsNCj4gKwlhZDc5NDlfYWRjLT5yZXNvbHV0aW9uID0gc3BlYy0+cmVz b2x1dGlvbjsNCj4gKw0KPiArCWFkNzk0OV9hZGMtPnZyZWYgPSBkZXZtX3JlZ3VsYXRvcl9nZXQo ZGV2LCAidnJlZiIpOw0KPiArCWlmIChJU19FUlIoYWQ3OTQ5X2FkYy0+dnJlZikpIHsNCj4gKwkJ ZGV2X2VycihkZXYsICJmYWlsIHRvIHJlcXVlc3QgcmVndWxhdG9yXG4iKTsNCj4gKwkJcmV0dXJu IFBUUl9FUlIoYWQ3OTQ5X2FkYy0+dnJlZik7DQo+ICsJfQ0KPiArDQo+ICsJcmV0ID0gcmVndWxh dG9yX2VuYWJsZShhZDc5NDlfYWRjLT52cmVmKTsNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlk ZXZfZXJyKGRldiwgImZhaWwgdG8gZW5hYmxlIHJlZ3VsYXRvclxuIik7DQo+ICsJCWdvdG8gZXJy X3JlZ3VsYXRvcjsNCj4gKwl9DQo+ICsNCj4gKwltdXRleF9pbml0KCZhZDc5NDlfYWRjLT5sb2Nr KTsNCj4gKw0KPiArCXJldCA9IGFkNzk0OV9zcGlfaW5pdChhZDc5NDlfYWRjKTsNCj4gKwlpZiAo cmV0KSB7DQo+ICsJCWRldl9lcnIoZGV2LCAiZW5hYmxlIHRvIGluaXQgdGhpcyBkZXZpY2U6ICVk XG4iLCByZXQpOw0KPiArCQlnb3RvIGVycjsNCj4gKwl9DQo+ICsNCj4gKwlyZXQgPSBpaW9fZGV2 aWNlX3JlZ2lzdGVyKGluZGlvX2Rldik7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZfZXJyKGRl diwgImZhaWwgdG8gcmVnaXN0ZXIgaWlvIGRldmljZTogJWRcbiIsIHJldCk7DQo+ICsJCWdvdG8g ZXJyOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArDQo+ICtlcnI6DQo+ICsJbXV0ZXhf ZGVzdHJveSgmYWQ3OTQ5X2FkYy0+bG9jayk7DQo+ICsJcmVndWxhdG9yX2Rpc2FibGUoYWQ3OTQ5 X2FkYy0+dnJlZik7DQo+ICtlcnJfcmVndWxhdG9yOg0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgYWQ3OTQ5X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkNCj4gK3sNCj4gKwlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gc3BpX2dldF9kcnZkYXRh KHNwaSk7DQo+ICsJc3RydWN0IGFkNzk0OV9hZGNfY2hpcCAqYWQ3OTQ5X2FkYyA9IGlpb19wcml2 KGluZGlvX2Rldik7DQo+ICsNCj4gKwlpaW9fZGV2aWNlX3VucmVnaXN0ZXIoaW5kaW9fZGV2KTsN Cj4gKwltdXRleF9kZXN0cm95KCZhZDc5NDlfYWRjLT5sb2NrKTsNCj4gKwlyZWd1bGF0b3JfZGlz YWJsZShhZDc5NDlfYWRjLT52cmVmKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICsjaWZkZWYgQ09ORklHX09GDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBh ZDc5NDlfc3BpX29mX2lkW10gPSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJhZDc5NDkiIH0sDQo+ ICsJeyAuY29tcGF0aWJsZSA9ICJhZDc2ODIiIH0sDQo+ICsJeyAuY29tcGF0aWJsZSA9ICJhZDc2 ODkiIH0sDQoNClR5cGljYWxseSwgZm9yIGRldmljZSBuYW1lcyBpbiBkZXZpY2UtdHJlZXMgd2Ug cHJlZml4IHRoZW0gd2l0aCBgYWRpLGAuDQpTbywgImFkaSxhZDc5NDkiIGFuZCBzbyBvbi4gVGhl IHJlYXNvbiBpcyB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgbmFtZQ0KY29sbGlzaW9ucyBmb3Ig YW55IGZ1dHVyZSBkZXZpY2VzIGZyb20gb3RoZXIgY29tcGFuaWVzLg0KDQo+ICsJeyB9DQo+ICt9 Ow0KPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYWQ3OTQ5X3NwaV9vZl9pZCk7DQo+ICsjZW5k aWYNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGFkNzk0OV9zcGlf aWRbXSA9IHsNCj4gKwl7ICJhZDc5NDkiLCBJRF9BRDc5NDkgIH0sDQo+ICsJeyAiYWQ3NjgyIiwg SURfQUQ3NjgyIH0sDQo+ICsJeyAiYWQ3Njg5IiwgSURfQUQ3Njg5IH0sDQo+ICsJeyB9DQo+ICt9 Ow0KPiArTU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGFkNzk0OV9zcGlfaWQpOw0KPiArDQo+ICtz dGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgYWQ3OTQ5X3NwaV9kcml2ZXIgPSB7DQo+ICsJLmRyaXZl ciA9IHsNCj4gKwkJLm5hbWUJCT0gImFkNzk0OSIsDQo+ICsJCS5vZl9tYXRjaF90YWJsZQk9IG9m X21hdGNoX3B0cihhZDc5NDlfc3BpX29mX2lkKSwNCj4gKwl9LA0KPiArCS5wcm9iZQkgID0gYWQ3 OTQ5X3NwaV9wcm9iZSwNCj4gKwkucmVtb3ZlICAgPSBhZDc5NDlfc3BpX3JlbW92ZSwNCj4gKwku aWRfdGFibGUgPSBhZDc5NDlfc3BpX2lkLA0KPiArfTsNCj4gK21vZHVsZV9zcGlfZHJpdmVyKGFk Nzk0OV9zcGlfZHJpdmVyKTsNCj4gKw0KPiArTU9EVUxFX0FVVEhPUigiQ2hhcmxlcy1BbnRvaW5l IENvdXJldCA8DQo+IGNoYXJsZXMtYW50b2luZS5jb3VyZXRAZXNzZW5zaXVtLmNvbT4iKTsNCj4g K01PRFVMRV9ERVNDUklQVElPTigiQW5hbG9nIERldmljZXMgMTQvMTYtYml0IDgtY2hhbm5lbCBB REMgZHJpdmVyIik7DQo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo=