From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: Re: [PATCH v2 2/6] ASoC: atmel_ssc_dai: rework DAI format configuration Date: Mon, 26 Aug 2019 14:04:13 +0000 Message-ID: <7961d3da-5504-ae16-9342-979c12f9d028@microchip.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: Sender: linux-kernel-owner@vger.kernel.org To: mirq-linux@rere.qmqm.pl, alsa-devel@alsa-project.org, devicetree@vger.kernel.org Cc: alexandre.belloni@bootlin.com, arnd@arndb.de, 3chas3@gmail.com, gregkh@linuxfoundation.org, perex@perex.cz, lgirdwood@gmail.com, Ludovic.Desroches@microchip.com, broonie@kernel.org, mark.rutland@arm.com, Nicolas.Ferre@microchip.com, robh-dt@kernel.org, tiwai@suse.com, linux-kernel@vger.kernel.org List-Id: alsa-devel@alsa-project.org T24gMjQuMDguMjAxOSAyMzoyNiwgTWljaGHFgiBNaXJvc8WCYXcgd3JvdGU6DQo+IFJld29yayBE QUkgZm9ybWF0IGNhbGN1bGF0aW9uIGluIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgbW9yZSBmb3Jt YXRzDQo+IGxhdGVyLiBBcyBhIHNpZGUtZWZmZWN0IHRoaXMgZW5hYmxlcyBhbGwgQ0JNL0NCUyB4 IENGTS9DRlMgY29tYmluYXRpb25zDQo+IGZvciBzdXBwb3J0ZWQgZm9ybWF0cy4gKE5vdGU6IHRo ZSBhZGRpdGlvbmFsIG1vZGVzIGFyZSBub3QgdGVzdGVkLikNCg0KVGhlIG9ubHkgbW9kZSBhZGRl ZCAoYW5kIG5vdCB0ZXN0ZWQpIGlzIGZvciBTTkRfU09DX0RBSUZNVF9EU1BfQSB8DQpTTkRfU09D X0RBSUZNVF9DQk1fQ0ZTLiBJIHdvdWxkIG1lbnRpb24gaXQgZXhwbGljaXRseSwgaW5zdGVhZCBv ZiANCnNvbWV0aGluZyBnZW5lcmljLiBBbHNvLCBTTkRfU09DX0RBSUZNVF9DQk1fQ0ZTIGlzIG5v dCBzdXBwb3J0ZWQgZm9yIGFueSANCmZvcm1hdCwgcGxlYXNlIHNlZSBhdG1lbF9zc2NfaHdfcnVs ZV9yYXRlKCkuDQoNCj4gDQo+IE5vdGU6IHRoaXMgY2hhbmdlcyBGU0VER0UgdG8gUE9TSVRJVkUg Zm9yIEkyUyBDQk1fQ0ZTIG1vZGUgYXMgdGhlIFRYU1lODQo+IGludGVycnVwdCBpcyBub3QgdXNl ZCBhbnl3YXkuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYcWCIE1pcm9zxYJhdyA8bWlycS1s aW51eEByZXJlLnFtcW0ucGw+DQo+IA0KPiAtLS0NCj4gICB2MjogYWRkZWQgbm90ZSBhYm91dCBl eHRlbmRlZCBtb2Rlcycgc3RhdHVzDQo+ICAgICAgIGluY29ycG9yYXRlZCBjb21tb24gRlMgKExS Q0xLKSBjb25maWd1cmF0aW9uDQo+IA0KPiAtLS0NCj4gICBzb3VuZC9zb2MvYXRtZWwvYXRtZWxf c3NjX2RhaS5jIHwgMjg2ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAgMSBm aWxlIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDIwNiBkZWxldGlvbnMoLSkNCj4gDQo+IGRp ZmYgLS1naXQgYS9zb3VuZC9zb2MvYXRtZWwvYXRtZWxfc3NjX2RhaS5jIGIvc291bmQvc29jL2F0 bWVsL2F0bWVsX3NzY19kYWkuYw0KPiBpbmRleCA2Zjg5NDgzYWM4OGMuLjdkYzZlYzliOGM3YSAx MDA2NDQNCj4gLS0tIGEvc291bmQvc29jL2F0bWVsL2F0bWVsX3NzY19kYWkuYw0KPiArKysgYi9z b3VuZC9zb2MvYXRtZWwvYXRtZWxfc3NjX2RhaS5jDQo+IEBAIC00NzEsNyArNDcxLDcgQEAgc3Rh dGljIGludCBhdG1lbF9zc2NfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vi c3RyZWFtLA0KPiAgIAlpbnQgZGlyLCBjaGFubmVscywgYml0czsNCj4gICAJdTMyIHRmbXIsIHJm bXIsIHRjbXIsIHJjbXI7DQo+ICAgCWludCByZXQ7DQo+IC0JaW50IGZzbGVuLCBmc2xlbl9leHQ7 DQo+ICsJaW50IGZzbGVuLCBmc2xlbl9leHQsIGZzX29zeW5jLCBmc19lZGdlOw0KPiAgIAl1MzIg Y21yX2RpdjsNCj4gICAJdTMyIHRjbXJfcGVyaW9kOw0KPiAgIAl1MzIgcmNtcl9wZXJpb2Q7DQo+ IEBAIC01NTgsMjI2ICs1NTgsMzYgQEAgc3RhdGljIGludCBhdG1lbF9zc2NfaHdfcGFyYW1zKHN0 cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLA0KPiAgIAkvKg0KPiAgIAkgKiBDb21w dXRlIFNTQyByZWdpc3RlciBzZXR0aW5ncy4NCj4gICAJICovDQo+IC0Jc3dpdGNoIChzc2NfcC0+ ZGFpZm10DQo+IC0JCSYgKFNORF9TT0NfREFJRk1UX0ZPUk1BVF9NQVNLIHwgU05EX1NPQ19EQUlG TVRfTUFTVEVSX01BU0spKSB7DQo+ICAgDQo+IC0JY2FzZSBTTkRfU09DX0RBSUZNVF9JMlMgfCBT TkRfU09DX0RBSUZNVF9DQlNfQ0ZTOg0KPiAtCQkvKg0KPiAtCQkgKiBJMlMgZm9ybWF0LCBTU0Mg cHJvdmlkZXMgQkNMSyBhbmQgTFJDIGNsb2Nrcy4NCj4gLQkJICoNCj4gLQkJICogVGhlIFNTQyB0 cmFuc21pdCBhbmQgcmVjZWl2ZSBjbG9ja3MgYXJlIGdlbmVyYXRlZA0KPiAtCQkgKiBmcm9tIHRo ZSBNQ0sgZGl2aWRlciwgYW5kIHRoZSBCQ0xLIHNpZ25hbA0KPiAtCQkgKiBpcyBvdXRwdXQgb24g dGhlIFNTQyBUSyBsaW5lLg0KPiAtCQkgKi8NCj4gLQ0KPiAtCQlpZiAoYml0cyA+IDE2ICYmICFz c2MtPnBkYXRhLT5oYXNfZnNsZW5fZXh0KSB7DQo+IC0JCQlkZXZfZXJyKGRhaS0+ZGV2LA0KPiAt CQkJCSJzYW1wbGUgc2l6ZSAlZCBpcyB0b28gbGFyZ2UgZm9yIFNTQyBkZXZpY2VcbiIsDQo+IC0J CQkJYml0cyk7DQo+IC0JCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQkJfQ0KPiAtDQo+IC0JCWZzbGVu X2V4dCA9IChiaXRzIC0gMSkgLyAxNjsNCj4gLQkJZnNsZW4gPSAoYml0cyAtIDEpICUgMTY7DQo+ IC0NCj4gLQkJcmNtciA9CSAgU1NDX0JGKFJDTVJfUEVSSU9ELCByY21yX3BlcmlvZCkNCj4gLQkJ CXwgU1NDX0JGKFJDTVJfU1RURExZLCBTVEFSVF9ERUxBWSkNCj4gLQkJCXwgU1NDX0JGKFJDTVJf U1RBUlQsIFNTQ19TVEFSVF9GQUxMSU5HX1JGKQ0KPiAtCQkJfCBTU0NfQkYoUkNNUl9DS0ksIFNT Q19DS0lfUklTSU5HKQ0KPiAtCQkJfCBTU0NfQkYoUkNNUl9DS08sIFNTQ19DS09fTk9ORSkNCj4g LQkJCXwgU1NDX0JGKFJDTVJfQ0tTLCBTU0NfQ0tTX0RJVik7DQo+IC0NCj4gLQkJcmZtciA9ICAg IFNTQ19CRihSRk1SX0ZTTEVOX0VYVCwgZnNsZW5fZXh0KQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9G U0VER0UsIFNTQ19GU0VER0VfUE9TSVRJVkUpDQo+IC0JCQl8IFNTQ19CRihSRk1SX0ZTT1MsIFNT Q19GU09TX05FR0FUSVZFKQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9GU0xFTiwgZnNsZW4pDQo+IC0J CQl8IFNTQ19CRihSRk1SX0RBVE5CLCAoY2hhbm5lbHMgLSAxKSkNCj4gLQkJCXwgU1NDX0JJVChS Rk1SX01TQkYpDQo+IC0JCQl8IFNTQ19CRihSRk1SX0xPT1AsIDApDQo+IC0JCQl8IFNTQ19CRihS Rk1SX0RBVExFTiwgKGJpdHMgLSAxKSk7DQo+IC0NCj4gLQkJdGNtciA9CSAgU1NDX0JGKFRDTVJf UEVSSU9ELCB0Y21yX3BlcmlvZCkNCj4gLQkJCXwgU1NDX0JGKFRDTVJfU1RURExZLCBTVEFSVF9E RUxBWSkNCj4gLQkJCXwgU1NDX0JGKFRDTVJfU1RBUlQsIFNTQ19TVEFSVF9GQUxMSU5HX1JGKQ0K PiAtCQkJfCBTU0NfQkYoVENNUl9DS0ksIFNTQ19DS0lfRkFMTElORykNCj4gLQkJCXwgU1NDX0JG KFRDTVJfQ0tPLCBTU0NfQ0tPX0NPTlRJTlVPVVMpDQo+IC0JCQl8IFNTQ19CRihUQ01SX0NLUywg U1NDX0NLU19ESVYpOw0KPiAtDQo+IC0JCXRmbXIgPSAgICBTU0NfQkYoVEZNUl9GU0xFTl9FWFQs IGZzbGVuX2V4dCkNCj4gLQkJCXwgU1NDX0JGKFRGTVJfRlNFREdFLCBTU0NfRlNFREdFX1BPU0lU SVZFKQ0KPiAtCQkJfCBTU0NfQkYoVEZNUl9GU0RFTiwgMCkNCj4gLQkJCXwgU1NDX0JGKFRGTVJf RlNPUywgU1NDX0ZTT1NfTkVHQVRJVkUpDQo+IC0JCQl8IFNTQ19CRihURk1SX0ZTTEVOLCBmc2xl bikNCj4gLQkJCXwgU1NDX0JGKFRGTVJfREFUTkIsIChjaGFubmVscyAtIDEpKQ0KPiAtCQkJfCBT U0NfQklUKFRGTVJfTVNCRikNCj4gLQkJCXwgU1NDX0JGKFRGTVJfREFUREVGLCAwKQ0KPiAtCQkJ fCBTU0NfQkYoVEZNUl9EQVRMRU4sIChiaXRzIC0gMSkpOw0KPiAtCQlicmVhazsNCj4gLQ0KPiAt CWNhc2UgU05EX1NPQ19EQUlGTVRfSTJTIHwgU05EX1NPQ19EQUlGTVRfQ0JNX0NGTToNCj4gLQkJ LyogSTJTIGZvcm1hdCwgQ09ERUMgc3VwcGxpZXMgQkNMSyBhbmQgTFJDIGNsb2Nrcy4gKi8NCj4g LQkJcmNtciA9CSAgU1NDX0JGKFJDTVJfUEVSSU9ELCAwKQ0KPiAtCQkJfCBTU0NfQkYoUkNNUl9T VFRETFksIFNUQVJUX0RFTEFZKQ0KPiAtCQkJfCBTU0NfQkYoUkNNUl9TVEFSVCwgU1NDX1NUQVJU X0ZBTExJTkdfUkYpDQo+IC0JCQl8IFNTQ19CRihSQ01SX0NLSSwgU1NDX0NLSV9SSVNJTkcpDQo+ IC0JCQl8IFNTQ19CRihSQ01SX0NLTywgU1NDX0NLT19OT05FKQ0KPiAtCQkJfCBTU0NfQkYoUkNN Ul9DS1MsIHNzYy0+Y2xrX2Zyb21fcmtfcGluID8NCj4gLQkJCQkJICAgU1NDX0NLU19QSU4gOiBT U0NfQ0tTX0NMT0NLKTsNCj4gLQ0KPiAtCQlyZm1yID0JICBTU0NfQkYoUkZNUl9GU0VER0UsIFNT Q19GU0VER0VfUE9TSVRJVkUpDQo+IC0JCQl8IFNTQ19CRihSRk1SX0ZTT1MsIFNTQ19GU09TX05P TkUpDQo+IC0JCQl8IFNTQ19CRihSRk1SX0ZTTEVOLCAwKQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9E QVROQiwgKGNoYW5uZWxzIC0gMSkpDQo+IC0JCQl8IFNTQ19CSVQoUkZNUl9NU0JGKQ0KPiAtCQkJ fCBTU0NfQkYoUkZNUl9MT09QLCAwKQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9EQVRMRU4sIChiaXRz IC0gMSkpOw0KPiAtDQo+IC0JCXRjbXIgPQkgIFNTQ19CRihUQ01SX1BFUklPRCwgMCkNCj4gLQkJ CXwgU1NDX0JGKFRDTVJfU1RURExZLCBTVEFSVF9ERUxBWSkNCj4gLQkJCXwgU1NDX0JGKFRDTVJf U1RBUlQsIFNTQ19TVEFSVF9GQUxMSU5HX1JGKQ0KPiAtCQkJfCBTU0NfQkYoVENNUl9DS0ksIFNT Q19DS0lfRkFMTElORykNCj4gLQkJCXwgU1NDX0JGKFRDTVJfQ0tPLCBTU0NfQ0tPX05PTkUpDQo+ IC0JCQl8IFNTQ19CRihUQ01SX0NLUywgc3NjLT5jbGtfZnJvbV9ya19waW4gPw0KPiAtCQkJCQkg ICBTU0NfQ0tTX0NMT0NLIDogU1NDX0NLU19QSU4pOw0KPiArCWZzbGVuX2V4dCA9IChiaXRzIC0g MSkgLyAxNjsNCj4gKwlmc2xlbiA9IChiaXRzIC0gMSkgJSAxNjsNCj4gICANCj4gLQkJdGZtciA9 CSAgU1NDX0JGKFRGTVJfRlNFREdFLCBTU0NfRlNFREdFX1BPU0lUSVZFKQ0KPiAtCQkJfCBTU0Nf QkYoVEZNUl9GU0RFTiwgMCkNCj4gLQkJCXwgU1NDX0JGKFRGTVJfRlNPUywgU1NDX0ZTT1NfTk9O RSkNCj4gLQkJCXwgU1NDX0JGKFRGTVJfRlNMRU4sIDApDQo+IC0JCQl8IFNTQ19CRihURk1SX0RB VE5CLCAoY2hhbm5lbHMgLSAxKSkNCj4gLQkJCXwgU1NDX0JJVChURk1SX01TQkYpDQo+IC0JCQl8 IFNTQ19CRihURk1SX0RBVERFRiwgMCkNCj4gLQkJCXwgU1NDX0JGKFRGTVJfREFUTEVOLCAoYml0 cyAtIDEpKTsNCj4gLQkJYnJlYWs7DQo+IC0NCj4gLQljYXNlIFNORF9TT0NfREFJRk1UX0kyUyB8 IFNORF9TT0NfREFJRk1UX0NCTV9DRlM6DQo+IC0JCS8qIEkyUyBmb3JtYXQsIENPREVDIHN1cHBs aWVzIEJDTEssIFNTQyBzdXBwbGllcyBMUkNMSy4gKi8NCj4gLQkJaWYgKGJpdHMgPiAxNiAmJiAh c3NjLT5wZGF0YS0+aGFzX2ZzbGVuX2V4dCkgew0KPiAtCQkJZGV2X2VycihkYWktPmRldiwNCj4g LQkJCQkic2FtcGxlIHNpemUgJWQgaXMgdG9vIGxhcmdlIGZvciBTU0MgZGV2aWNlXG4iLA0KPiAt CQkJCWJpdHMpOw0KPiAtCQkJcmV0dXJuIC1FSU5WQUw7DQo+IC0JCX0NCj4gLQ0KPiAtCQlmc2xl bl9leHQgPSAoYml0cyAtIDEpIC8gMTY7DQo+IC0JCWZzbGVuID0gKGJpdHMgLSAxKSAlIDE2Ow0K PiAtDQo+IC0JCXJjbXIgPQkgIFNTQ19CRihSQ01SX1BFUklPRCwgcmNtcl9wZXJpb2QpDQo+IC0J CQl8IFNTQ19CRihSQ01SX1NUVERMWSwgU1RBUlRfREVMQVkpDQo+IC0JCQl8IFNTQ19CRihSQ01S X1NUQVJULCBTU0NfU1RBUlRfRkFMTElOR19SRikNCj4gLQkJCXwgU1NDX0JGKFJDTVJfQ0tJLCBT U0NfQ0tJX1JJU0lORykNCj4gLQkJCXwgU1NDX0JGKFJDTVJfQ0tPLCBTU0NfQ0tPX05PTkUpDQo+ IC0JCQl8IFNTQ19CRihSQ01SX0NLUywgc3NjLT5jbGtfZnJvbV9ya19waW4gPw0KPiAtCQkJCQkg ICBTU0NfQ0tTX1BJTiA6IFNTQ19DS1NfQ0xPQ0spOw0KPiAtDQo+IC0JCXJmbXIgPSAgICBTU0Nf QkYoUkZNUl9GU0xFTl9FWFQsIGZzbGVuX2V4dCkNCj4gLQkJCXwgU1NDX0JGKFJGTVJfRlNFREdF LCBTU0NfRlNFREdFX1BPU0lUSVZFKQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9GU09TLCBTU0NfRlNP U19ORUdBVElWRSkNCj4gLQkJCXwgU1NDX0JGKFJGTVJfRlNMRU4sIGZzbGVuKQ0KPiAtCQkJfCBT U0NfQkYoUkZNUl9EQVROQiwgKGNoYW5uZWxzIC0gMSkpDQo+IC0JCQl8IFNTQ19CSVQoUkZNUl9N U0JGKQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9MT09QLCAwKQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9E QVRMRU4sIChiaXRzIC0gMSkpOw0KPiAtDQo+IC0JCXRjbXIgPQkgIFNTQ19CRihUQ01SX1BFUklP RCwgdGNtcl9wZXJpb2QpDQo+IC0JCQl8IFNTQ19CRihUQ01SX1NUVERMWSwgU1RBUlRfREVMQVkp DQo+IC0JCQl8IFNTQ19CRihUQ01SX1NUQVJULCBTU0NfU1RBUlRfRkFMTElOR19SRikNCj4gLQkJ CXwgU1NDX0JGKFRDTVJfQ0tJLCBTU0NfQ0tJX0ZBTExJTkcpDQo+IC0JCQl8IFNTQ19CRihUQ01S X0NLTywgU1NDX0NLT19OT05FKQ0KPiAtCQkJfCBTU0NfQkYoVENNUl9DS1MsIHNzYy0+Y2xrX2Zy b21fcmtfcGluID8NCj4gLQkJCQkJICAgU1NDX0NLU19DTE9DSyA6IFNTQ19DS1NfUElOKTsNCj4g LQ0KPiAtCQl0Zm1yID0gICAgU1NDX0JGKFRGTVJfRlNMRU5fRVhULCBmc2xlbl9leHQpDQo+IC0J CQl8IFNTQ19CRihURk1SX0ZTRURHRSwgU1NDX0ZTRURHRV9ORUdBVElWRSkNCj4gLQkJCXwgU1ND X0JGKFRGTVJfRlNERU4sIDApDQo+IC0JCQl8IFNTQ19CRihURk1SX0ZTT1MsIFNTQ19GU09TX05F R0FUSVZFKQ0KPiAtCQkJfCBTU0NfQkYoVEZNUl9GU0xFTiwgZnNsZW4pDQo+IC0JCQl8IFNTQ19C RihURk1SX0RBVE5CLCAoY2hhbm5lbHMgLSAxKSkNCj4gLQkJCXwgU1NDX0JJVChURk1SX01TQkYp DQo+IC0JCQl8IFNTQ19CRihURk1SX0RBVERFRiwgMCkNCj4gLQkJCXwgU1NDX0JGKFRGTVJfREFU TEVOLCAoYml0cyAtIDEpKTsNCj4gLQkJYnJlYWs7DQo+IC0NCj4gLQljYXNlIFNORF9TT0NfREFJ Rk1UX0RTUF9BIHwgU05EX1NPQ19EQUlGTVRfQ0JTX0NGUzoNCj4gLQkJLyoNCj4gLQkJICogRFNQ L1BDTSBNb2RlIEEgZm9ybWF0LCBTU0MgcHJvdmlkZXMgQkNMSyBhbmQgTFJDIGNsb2Nrcy4NCj4g LQkJICoNCj4gLQkJICogVGhlIFNTQyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBjbG9ja3MgYXJlIGdl bmVyYXRlZCBmcm9tIHRoZQ0KPiAtCQkgKiBNQ0sgZGl2aWRlciwgYW5kIHRoZSBCQ0xLIHNpZ25h bCBpcyBvdXRwdXQNCj4gLQkJICogb24gdGhlIFNTQyBUSyBsaW5lLg0KPiAtCQkgKi8NCj4gLQkJ cmNtciA9CSAgU1NDX0JGKFJDTVJfUEVSSU9ELCByY21yX3BlcmlvZCkNCj4gLQkJCXwgU1NDX0JG KFJDTVJfU1RURExZLCAxKQ0KPiAtCQkJfCBTU0NfQkYoUkNNUl9TVEFSVCwgU1NDX1NUQVJUX1JJ U0lOR19SRikNCj4gLQkJCXwgU1NDX0JGKFJDTVJfQ0tJLCBTU0NfQ0tJX1JJU0lORykNCj4gLQkJ CXwgU1NDX0JGKFJDTVJfQ0tPLCBTU0NfQ0tPX05PTkUpDQo+IC0JCQl8IFNTQ19CRihSQ01SX0NL UywgU1NDX0NLU19ESVYpOw0KPiArCXN3aXRjaCAoc3NjX3AtPmRhaWZtdCAmIFNORF9TT0NfREFJ Rk1UX0ZPUk1BVF9NQVNLKSB7DQo+ICAgDQo+IC0JCXJmbXIgPQkgIFNTQ19CRihSRk1SX0ZTRURH RSwgU1NDX0ZTRURHRV9QT1NJVElWRSkNCj4gLQkJCXwgU1NDX0JGKFJGTVJfRlNPUywgU1NDX0ZT T1NfUE9TSVRJVkUpDQo+IC0JCQl8IFNTQ19CRihSRk1SX0ZTTEVOLCAwKQ0KPiAtCQkJfCBTU0Nf QkYoUkZNUl9EQVROQiwgKGNoYW5uZWxzIC0gMSkpDQo+IC0JCQl8IFNTQ19CSVQoUkZNUl9NU0JG KQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9MT09QLCAwKQ0KPiAtCQkJfCBTU0NfQkYoUkZNUl9EQVRM RU4sIChiaXRzIC0gMSkpOw0KPiArCWNhc2UgU05EX1NPQ19EQUlGTVRfSTJTOg0KPiArCQlmc19v c3luYyA9IFNTQ19GU09TX05FR0FUSVZFOw0KPiArCQlmc19lZGdlID0gU1NDX1NUQVJUX0ZBTExJ TkdfUkY7DQo+ICAgDQo+IC0JCXRjbXIgPQkgIFNTQ19CRihUQ01SX1BFUklPRCwgdGNtcl9wZXJp b2QpDQo+IC0JCQl8IFNTQ19CRihUQ01SX1NUVERMWSwgMSkNCj4gLQkJCXwgU1NDX0JGKFRDTVJf U1RBUlQsIFNTQ19TVEFSVF9SSVNJTkdfUkYpDQo+IC0JCQl8IFNTQ19CRihUQ01SX0NLSSwgU1ND X0NLSV9GQUxMSU5HKQ0KPiAtCQkJfCBTU0NfQkYoVENNUl9DS08sIFNTQ19DS09fQ09OVElOVU9V UykNCj4gLQkJCXwgU1NDX0JGKFRDTVJfQ0tTLCBTU0NfQ0tTX0RJVik7DQo+ICsJCXJjbXIgPQkg IFNTQ19CRihSQ01SX1NUVERMWSwgMSk7DQo+ICsJCXRjbXIgPQkgIFNTQ19CRihUQ01SX1NUVERM WSwgMSk7DQo+ICAgDQo+IC0JCXRmbXIgPQkgIFNTQ19CRihURk1SX0ZTRURHRSwgU1NDX0ZTRURH RV9QT1NJVElWRSkNCj4gLQkJCXwgU1NDX0JGKFRGTVJfRlNERU4sIDApDQo+IC0JCQl8IFNTQ19C RihURk1SX0ZTT1MsIFNTQ19GU09TX1BPU0lUSVZFKQ0KPiAtCQkJfCBTU0NfQkYoVEZNUl9GU0xF TiwgMCkNCj4gLQkJCXwgU1NDX0JGKFRGTVJfREFUTkIsIChjaGFubmVscyAtIDEpKQ0KPiAtCQkJ fCBTU0NfQklUKFRGTVJfTVNCRikNCj4gLQkJCXwgU1NDX0JGKFRGTVJfREFUREVGLCAwKQ0KPiAt CQkJfCBTU0NfQkYoVEZNUl9EQVRMRU4sIChiaXRzIC0gMSkpOw0KPiAgIAkJYnJlYWs7DQo+ICAg DQo+IC0JY2FzZSBTTkRfU09DX0RBSUZNVF9EU1BfQSB8IFNORF9TT0NfREFJRk1UX0NCTV9DRk06 DQo+ICsJY2FzZSBTTkRfU09DX0RBSUZNVF9EU1BfQToNCj4gICAJCS8qDQo+IC0JCSAqIERTUC9Q Q00gTW9kZSBBIGZvcm1hdCwgQ09ERUMgc3VwcGxpZXMgQkNMSyBhbmQgTFJDIGNsb2Nrcy4NCj4g KwkJICogRFNQL1BDTSBNb2RlIEEgZm9ybWF0DQo+ICAgCQkgKg0KPiAgIAkJICogRGF0YSBpcyB0 cmFuc2ZlcnJlZCBvbiBmaXJzdCBCQ0xLIGFmdGVyIExSQyBwdWxzZSByaXNpbmcNCj4gICAJCSAq IGVkZ2UuSWYgc3RlcmVvLCB0aGUgcmlnaHQgY2hhbm5lbCBkYXRhIGlzIGNvbnRpZ3VvdXMgd2l0 aA0KPiAgIAkJICogdGhlIGxlZnQgY2hhbm5lbCBkYXRhLg0KPiAgIAkJICovDQo+IC0JCXJjbXIg PQkgIFNTQ19CRihSQ01SX1BFUklPRCwgMCkNCj4gLQkJCXwgU1NDX0JGKFJDTVJfU1RURExZLCBT VEFSVF9ERUxBWSkNCj4gLQkJCXwgU1NDX0JGKFJDTVJfU1RBUlQsIFNTQ19TVEFSVF9SSVNJTkdf UkYpDQo+IC0JCQl8IFNTQ19CRihSQ01SX0NLSSwgU1NDX0NLSV9SSVNJTkcpDQo+IC0JCQl8IFNT Q19CRihSQ01SX0NLTywgU1NDX0NLT19OT05FKQ0KPiAtCQkJfCBTU0NfQkYoUkNNUl9DS1MsIHNz Yy0+Y2xrX2Zyb21fcmtfcGluID8NCj4gLQkJCQkJICAgU1NDX0NLU19QSU4gOiBTU0NfQ0tTX0NM T0NLKTsNCj4gKwkJZnNfb3N5bmMgPSBTU0NfRlNPU19QT1NJVElWRTsNCj4gKwkJZnNfZWRnZSA9 IFNTQ19TVEFSVF9SSVNJTkdfUkY7DQo+ICsJCWZzbGVuID0gZnNsZW5fZXh0ID0gMDsNCj4gICAN Cj4gLQkJcmZtciA9CSAgU1NDX0JGKFJGTVJfRlNFREdFLCBTU0NfRlNFREdFX1BPU0lUSVZFKQ0K PiAtCQkJfCBTU0NfQkYoUkZNUl9GU09TLCBTU0NfRlNPU19OT05FKQ0KPiAtCQkJfCBTU0NfQkYo UkZNUl9GU0xFTiwgMCkNCj4gLQkJCXwgU1NDX0JGKFJGTVJfREFUTkIsIChjaGFubmVscyAtIDEp KQ0KPiAtCQkJfCBTU0NfQklUKFJGTVJfTVNCRikNCj4gLQkJCXwgU1NDX0JGKFJGTVJfTE9PUCwg MCkNCj4gLQkJCXwgU1NDX0JGKFJGTVJfREFUTEVOLCAoYml0cyAtIDEpKTsNCj4gKwkJcmNtciA9 CSAgU1NDX0JGKFJDTVJfU1RURExZLCAxKTsNCj4gKwkJdGNtciA9CSAgU1NDX0JGKFRDTVJfU1RU RExZLCAxKTsNCj4gICANCj4gLQkJdGNtciA9CSAgU1NDX0JGKFRDTVJfUEVSSU9ELCAwKQ0KPiAt CQkJfCBTU0NfQkYoVENNUl9TVFRETFksIFNUQVJUX0RFTEFZKQ0KPiAtCQkJfCBTU0NfQkYoVENN Ul9TVEFSVCwgU1NDX1NUQVJUX1JJU0lOR19SRikNCj4gLQkJCXwgU1NDX0JGKFRDTVJfQ0tJLCBT U0NfQ0tJX0ZBTExJTkcpDQo+IC0JCQl8IFNTQ19CRihUQ01SX0NLTywgU1NDX0NLT19OT05FKQ0K PiAtCQkJfCBTU0NfQkYoUkNNUl9DS1MsIHNzYy0+Y2xrX2Zyb21fcmtfcGluID8NCj4gLQkJCQkJ ICAgU1NDX0NLU19DTE9DSyA6IFNTQ19DS1NfUElOKTsNCj4gLQ0KPiAtCQl0Zm1yID0JICBTU0Nf QkYoVEZNUl9GU0VER0UsIFNTQ19GU0VER0VfUE9TSVRJVkUpDQo+IC0JCQl8IFNTQ19CRihURk1S X0ZTREVOLCAwKQ0KPiAtCQkJfCBTU0NfQkYoVEZNUl9GU09TLCBTU0NfRlNPU19OT05FKQ0KPiAt CQkJfCBTU0NfQkYoVEZNUl9GU0xFTiwgMCkNCj4gLQkJCXwgU1NDX0JGKFRGTVJfREFUTkIsIChj aGFubmVscyAtIDEpKQ0KPiAtCQkJfCBTU0NfQklUKFRGTVJfTVNCRikNCj4gLQkJCXwgU1NDX0JG KFRGTVJfREFUREVGLCAwKQ0KPiAtCQkJfCBTU0NfQkYoVEZNUl9EQVRMRU4sIChiaXRzIC0gMSkp Ow0KPiAgIAkJYnJlYWs7DQo+ICAgDQo+ICAgCWRlZmF1bHQ6DQo+IEBAIC03ODUsNiArNTk1LDcw IEBAIHN0YXRpYyBpbnQgYXRtZWxfc3NjX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJl YW0gKnN1YnN0cmVhbSwNCj4gICAJCQlzc2NfcC0+ZGFpZm10KTsNCj4gICAJCXJldHVybiAtRUlO VkFMOw0KPiAgIAl9DQo+ICsNCj4gKwlpZiAoIWF0bWVsX3NzY19jZnMoc3NjX3ApKSB7DQo+ICsJ CWZzbGVuID0gZnNsZW5fZXh0ID0gMDsNCj4gKwkJcmNtcl9wZXJpb2QgPSB0Y21yX3BlcmlvZCA9 IDA7DQo+ICsJCWZzX29zeW5jID0gU1NDX0ZTT1NfTk9ORTsNCj4gKwl9DQo+ICsNCj4gKwlyY21y IHw9CSAgU1NDX0JGKFJDTVJfU1RBUlQsIGZzX2VkZ2UpOw0KPiArCXRjbXIgfD0JICBTU0NfQkYo VENNUl9TVEFSVCwgZnNfZWRnZSk7DQoNCldoeSBub3QgbW92ZSB0aGVzZSBiZWxvdyBpbiB0aGUg Y29kZSwgd2hlcmUgYWxsIHRoZSBvdGhlciBiaXRzIG9mIHRoZXNlIA0KdHdvIHJlZ2lzdGVycyBh cmUgc2V0Pw0KDQo+ICsNCj4gKwlpZiAoYXRtZWxfc3NjX2Nicyhzc2NfcCkpIHsNCj4gKwkJLyoN Cj4gKwkJICogU1NDIHByb3ZpZGVzIEJDTEsNCj4gKwkJICoNCj4gKwkJICogVGhlIFNTQyB0cmFu c21pdCBhbmQgcmVjZWl2ZSBjbG9ja3MgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZQ0KPiArCQkgKiBN Q0sgZGl2aWRlciwgYW5kIHRoZSBCQ0xLIHNpZ25hbCBpcyBvdXRwdXQNCj4gKwkJICogb24gdGhl IFNTQyBUSyBsaW5lLg0KPiArCQkgKi8NCj4gKwkJcmNtciB8PQkgIFNTQ19CRihSQ01SX0NLUywg U1NDX0NLU19ESVYpDQo+ICsJCQl8IFNTQ19CRihSQ01SX0NLTywgU1NDX0NLT19OT05FKTsNCj4g Kw0KPiArCQl0Y21yIHw9CSAgU1NDX0JGKFRDTVJfQ0tTLCBTU0NfQ0tTX0RJVikNCj4gKwkJCXwg U1NDX0JGKFRDTVJfQ0tPLCBTU0NfQ0tPX0NPTlRJTlVPVVMpOw0KPiArCX0gZWxzZSB7DQo+ICsJ CXJjbXIgfD0JICBTU0NfQkYoUkNNUl9DS1MsIHNzYy0+Y2xrX2Zyb21fcmtfcGluID8NCj4gKwkJ CQkJU1NDX0NLU19QSU4gOiBTU0NfQ0tTX0NMT0NLKQ0KPiArCQkJfCBTU0NfQkYoUkNNUl9DS08s IFNTQ19DS09fTk9ORSk7DQo+ICsNCj4gKwkJdGNtciB8PQkgIFNTQ19CRihUQ01SX0NLUywgc3Nj LT5jbGtfZnJvbV9ya19waW4gPw0KPiArCQkJCQlTU0NfQ0tTX0NMT0NLIDogU1NDX0NLU19QSU4p DQo+ICsJCQl8IFNTQ19CRihUQ01SX0NLTywgU1NDX0NLT19OT05FKTsNCj4gKwl9DQo+ICsNCj4g KwlyY21yIHw9CSAgU1NDX0JGKFJDTVJfUEVSSU9ELCByY21yX3BlcmlvZCkNCj4gKwkJfCBTU0Nf QkYoUkNNUl9DS0ksIFNTQ19DS0lfUklTSU5HKTsNCj4gKw0KPiArCXRjbXIgfD0gICBTU0NfQkYo VENNUl9QRVJJT0QsIHRjbXJfcGVyaW9kKQ0KPiArCQl8IFNTQ19CRihUQ01SX0NLSSwgU1NDX0NL SV9GQUxMSU5HKTsNCj4gKw0KPiArCXJmbXIgPSAgICBTU0NfQkYoUkZNUl9GU0xFTl9FWFQsIGZz bGVuX2V4dCkNCj4gKwkJfCBTU0NfQkYoUkZNUl9GU0VER0UsIFNTQ19GU0VER0VfUE9TSVRJVkUp DQo+ICsJCXwgU1NDX0JGKFJGTVJfRlNPUywgZnNfb3N5bmMpDQo+ICsJCXwgU1NDX0JGKFJGTVJf RlNMRU4sIGZzbGVuKQ0KPiArCQl8IFNTQ19CRihSRk1SX0RBVE5CLCAoY2hhbm5lbHMgLSAxKSkN Cj4gKwkJfCBTU0NfQklUKFJGTVJfTVNCRikNCj4gKwkJfCBTU0NfQkYoUkZNUl9MT09QLCAwKQ0K PiArCQl8IFNTQ19CRihSRk1SX0RBVExFTiwgKGJpdHMgLSAxKSk7DQo+ICsNCj4gKwl0Zm1yID0g ICAgU1NDX0JGKFRGTVJfRlNMRU5fRVhULCBmc2xlbl9leHQpDQo+ICsJCXwgU1NDX0JGKFRGTVJf RlNFREdFLCBTU0NfRlNFREdFX1BPU0lUSVZFKQ0KPiArCQl8IFNTQ19CRihURk1SX0ZTREVOLCAw KQ0KPiArCQl8IFNTQ19CRihURk1SX0ZTT1MsIGZzX29zeW5jKQ0KPiArCQl8IFNTQ19CRihURk1S X0ZTTEVOLCBmc2xlbikNCj4gKwkJfCBTU0NfQkYoVEZNUl9EQVROQiwgKGNoYW5uZWxzIC0gMSkp DQo+ICsJCXwgU1NDX0JJVChURk1SX01TQkYpDQo+ICsJCXwgU1NDX0JGKFRGTVJfREFUREVGLCAw KQ0KPiArCQl8IFNTQ19CRihURk1SX0RBVExFTiwgKGJpdHMgLSAxKSk7DQo+ICsNCj4gKwlpZiAo ZnNsZW5fZXh0ICYmICFzc2MtPnBkYXRhLT5oYXNfZnNsZW5fZXh0KSB7DQo+ICsJCWRldl9lcnIo ZGFpLT5kZXYsICJzYW1wbGUgc2l6ZSAlZCBpcyB0b28gbGFyZ2UgZm9yIFNTQyBkZXZpY2VcbiIs DQo+ICsJCQliaXRzKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICAgCXBy X2RlYnVnKCJhdG1lbF9zc2NfaHdfcGFyYW1zOiAiDQo+ICAgCQkJIlJDTVI9JTA4eCBSRk1SPSUw OHggVENNUj0lMDh4IFRGTVI9JTA4eFxuIiwNCj4gICAJCQlyY21yLCByZm1yLCB0Y21yLCB0Zm1y KTsNCj4gDQoNCg==