From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: Re: [PATCH 2/3] mmc: sdhci-of-at91: rework clocks management to support SAM9x60 device Date: Fri, 20 Sep 2019 09:34:50 +0000 Message-ID: References: <20190912200908.31318-1-ludovic.desroches@microchip.com> <20190912200908.31318-2-ludovic.desroches@microchip.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190912200908.31318-2-ludovic.desroches@microchip.com> Content-Language: en-US Content-ID: <9497F3C1BA13734ABE531EDA73990DD3@namprd11.prod.outlook.com> Sender: linux-kernel-owner@vger.kernel.org To: Ludovic.Desroches@microchip.com, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-mmc@vger.kernel.org Cc: mark.rutland@arm.com, ulf.hansson@linaro.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, adrian.hunter@intel.com, Claudiu.Beznea@microchip.com List-Id: devicetree@vger.kernel.org DQoNCk9uIDEyLjA5LjIwMTkgMjM6MDksIEx1ZG92aWMgRGVzcm9jaGVzIHdyb3RlOg0KDQo+IA0K PiBJbiB0aGUgU0FNOXg2MCBTb0MsIHRoZXJlIGFyZSBvbmx5IHR3byBjbG9ja3MgaW5zdGVhZCBv ZiB0aHJlZSBmb3IgdGhlDQo+IFNESENJIGRldmljZS4gVGhlIGJhc2UgY2xrIGlzIG5vIGxvbmdl ciBwcm92aWRlZCwgaXQgaXMgZ2VuZXJhdGVkDQo+IGludGVybmFsbHkgZnJvbSB0aGUgbXVsdCBj bGsuDQo+IA0KPiBUaGUgdmFsdWVzIG9mIHRoZSBiYXNlIGNsayBhbmQgbXVsIGluIHRoZSBjYXBh YmlsaXRpZXMgcmVnaXN0ZXJzIG1heSBub3QNCj4gcmVmbGVjdCB0aGUgcmVhbGl0eSBhcyB0aGUg bXVsdCBjbGsgaXMgYSBwcm9ncmFtbWFibGUgY2xvY2sgd2hpY2ggY2FuIHRha2UNCj4gc2V2ZXJh bCByYXRlcy4gQXMgd2UgY2FuJ3QgdHJ1c3QgdGhvc2UgdmFsdWVzLCB0YWtlIHRoZW0gZnJvbSB0 aGUgY2xvY2sNCj4gdHJlZSBhbmQgdXBkYXRlIHRoZSBjYXBhYmlsaXRpZXMgYWNjb3JkaW5nIHRv Lg0KPiANCj4gQXMgd2UgY2FuIGhhdmUgdGhlIHNhbWUgcGl0ZmFsbCwgaW4gc29tZSBjYXNlcywg d2l0aCB0aGUgU0FNQTVEMiBTb2MsDQo+IHN0b3AgcmVseWluZyBvbiBjYXBhYmlsaXRpZXMgdG9v Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTHVkb3ZpYyBEZXNyb2NoZXMgPGx1ZG92aWMuZGVzcm9j aGVzQG1pY3JvY2hpcC5jb20+DQo+IC0tLQ0KPiAgIGRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktb2Yt YXQ5MS5jIHwgMTA0ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0NCj4gICAxIGZpbGUg Y2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hdDkxLmMgYi9kcml2ZXJzL21tYy9ob3N0 L3NkaGNpLW9mLWF0OTEuYw0KPiBpbmRleCBlN2QxOTIwNzI5ZmIuLmE5YzEyNmYxNGQ4NSAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hdDkxLmMNCj4gKysrIGIvZHJp dmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hdDkxLmMNCj4gQEAgLTMwLDcgKzMwLDE0IEBADQo+ICAg DQo+ICAgI2RlZmluZSBTREhDSV9BVDkxX1BSRVNFVF9DT01NT05fQ09ORgkweDQwMCAvKiBkcnYg dHlwZSBCLCBwcm9ncmFtbWFibGUgY2xvY2sgbW9kZSAqLw0KPiAgIA0KPiArc3RydWN0IHNkaGNp X2F0OTFfc29jX2RhdGEgew0KPiArCWNvbnN0IHN0cnVjdCBzZGhjaV9wbHRmbV9kYXRhICpwZGF0 YTsNCj4gKwlib29sIGJhc2VjbGtfaXNfZ2VuZXJhdGVkX2ludGVybmFsbHk7DQo+ICsJdW5zaWdu ZWQgaW50IGRpdmlkZXJfZm9yX2Jhc2VjbGs7DQo+ICt9Ow0KPiArDQo+ICAgc3RydWN0IHNkaGNp X2F0OTFfcHJpdiB7DQo+ICsJY29uc3Qgc3RydWN0IHNkaGNpX2F0OTFfc29jX2RhdGEgKnNvY19k YXRhOw0KPiAgIAlzdHJ1Y3QgY2xrICpoY2xvY2s7DQo+ICAgCXN0cnVjdCBjbGsgKmdjazsNCj4g ICAJc3RydWN0IGNsayAqbWFpbmNrOw0KPiBAQCAtMTMwLDEyICsxMzcsMjQgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBzZGhjaV9vcHMgc2RoY2lfYXQ5MV9zYW1hNWQyX29wcyA9IHsNCj4gICAJLnNl dF9wb3dlcgkJPSBzZGhjaV9hdDkxX3NldF9wb3dlciwNCj4gICB9Ow0KPiAgIA0KPiAtc3RhdGlj IGNvbnN0IHN0cnVjdCBzZGhjaV9wbHRmbV9kYXRhIHNvY19kYXRhX3NhbWE1ZDIgPSB7DQo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHNkaGNpX3BsdGZtX2RhdGEgc2RoY2lfc2FtYTVkMl9wZGF0YSA9 IHsNCj4gICAJLm9wcyA9ICZzZGhjaV9hdDkxX3NhbWE1ZDJfb3BzLA0KPiAgIH07DQo+ICAgDQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNkaGNpX2F0OTFfc29jX2RhdGEgc29jX2RhdGFfc2FtYTVk MiA9IHsNCj4gKwkucGRhdGEgPSAmc2RoY2lfc2FtYTVkMl9wZGF0YSwNCj4gKwkuYmFzZWNsa19p c19nZW5lcmF0ZWRfaW50ZXJuYWxseSA9IGZhbHNlLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNv bnN0IHN0cnVjdCBzZGhjaV9hdDkxX3NvY19kYXRhIHNvY19kYXRhX3NhbTl4NjAgPSB7DQo+ICsJ LnBkYXRhID0gJnNkaGNpX3NhbWE1ZDJfcGRhdGEsDQo+ICsJLmJhc2VjbGtfaXNfZ2VuZXJhdGVk X2ludGVybmFsbHkgPSB0cnVlLA0KPiArCS5kaXZpZGVyX2Zvcl9iYXNlY2xrID0gMiwNCj4gK307 DQo+ICsNCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzZGhjaV9hdDkxX2R0 X21hdGNoW10gPSB7DQo+ICAgCXsgLmNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkMi1zZGhjaSIs IC5kYXRhID0gJnNvY19kYXRhX3NhbWE1ZDIgfSwNCj4gKwl7IC5jb21wYXRpYmxlID0gIm1pY3Jv Y2hpcCxzYW05eDYwLXNkaGNpIiwgLmRhdGEgPSAmc29jX2RhdGFfc2FtOXg2MCB9LA0KPiAgIAl7 fQ0KPiAgIH07DQo+ICAgTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc2RoY2lfYXQ5MV9kdF9tYXRj aCk7DQo+IEBAIC0xNDUsNTAgKzE2NCwzNiBAQCBzdGF0aWMgaW50IHNkaGNpX2F0OTFfc2V0X2Ns a3NfcHJlc2V0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICAgCXN0cnVjdCBzZGhjaV9ob3N0ICpo b3N0ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICAgCXN0cnVjdCBzZGhjaV9wbHRmbV9ob3N0 ICpwbHRmbV9ob3N0ID0gc2RoY2lfcHJpdihob3N0KTsNCj4gICAJc3RydWN0IHNkaGNpX2F0OTFf cHJpdiAqcHJpdiA9IHNkaGNpX3BsdGZtX3ByaXYocGx0Zm1faG9zdCk7DQo+IC0JaW50IHJldDsN Cj4gICAJdW5zaWduZWQgaW50CQkJY2FwczAsIGNhcHMxOw0KPiAgIAl1bnNpZ25lZCBpbnQJCQlj bGtfYmFzZSwgY2xrX211bDsNCj4gLQl1bnNpZ25lZCBpbnQJCQlnY2tfcmF0ZSwgcmVhbF9nY2tf cmF0ZTsNCj4gKwl1bnNpZ25lZCBpbnQJCQlnY2tfcmF0ZSwgY2xrX2Jhc2VfcmF0ZTsNCj4gICAJ dW5zaWduZWQgaW50CQkJcHJlc2V0X2RpdjsNCj4gICANCj4gLQkvKg0KPiAtCSAqIFRoZSBtdWx0 IGNsb2NrIGlzIHByb3ZpZGVkIGJ5IGFzIGEgZ2VuZXJhdGVkIGNsb2NrIGJ5IHRoZSBQTUMNCj4g LQkgKiBjb250cm9sbGVyLiBJbiBvcmRlciB0byBzZXQgdGhlIHJhdGUgb2YgZ2NrLCB3ZSBoYXZl IHRvIGdldCB0aGUNCj4gLQkgKiBiYXNlIGNsb2NrIHJhdGUgYW5kIHRoZSBjbG9jayBtdWx0IGZy b20gY2FwYWJpbGl0aWVzLg0KPiAtCSAqLw0KPiAgIAljbGtfcHJlcGFyZV9lbmFibGUocHJpdi0+ aGNsb2NrKTsNCj4gICAJY2FwczAgPSByZWFkbChob3N0LT5pb2FkZHIgKyBTREhDSV9DQVBBQklM SVRJRVMpOw0KPiAgIAljYXBzMSA9IHJlYWRsKGhvc3QtPmlvYWRkciArIFNESENJX0NBUEFCSUxJ VElFU18xKTsNCj4gLQljbGtfYmFzZSA9IChjYXBzMCAmIFNESENJX0NMT0NLX1YzX0JBU0VfTUFT SykgPj4gU0RIQ0lfQ0xPQ0tfQkFTRV9TSElGVDsNCj4gLQljbGtfbXVsID0gKGNhcHMxICYgU0RI Q0lfQ0xPQ0tfTVVMX01BU0spID4+IFNESENJX0NMT0NLX01VTF9TSElGVDsNCj4gLQlnY2tfcmF0 ZSA9IGNsa19iYXNlICogMTAwMDAwMCAqIChjbGtfbXVsICsgMSk7DQo+IC0JcmV0ID0gY2xrX3Nl dF9yYXRlKHByaXYtPmdjaywgZ2NrX3JhdGUpOw0KPiAtCWlmIChyZXQgPCAwKSB7DQo+IC0JCWRl dl9lcnIoZGV2LCAiZmFpbGVkIHRvIHNldCBnY2siKTsNCj4gLQkJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKHByaXYtPmhjbG9jayk7DQo+IC0JCXJldHVybiByZXQ7DQo+IC0JfQ0KPiAtCS8qDQo+IC0J ICogV2UgbmVlZCB0byBjaGVjayBpZiB3ZSBoYXZlIHRoZSByZXF1ZXN0ZWQgcmF0ZSBmb3IgZ2Nr IGJlY2F1c2UgaW4NCj4gLQkgKiBzb21lIGNhc2VzIHRoaXMgcmF0ZSBjb3VsZCBiZSBub3Qgc3Vw cG9ydGVkLiBJZiBpdCBoYXBwZW5zLCB0aGUgcmF0ZQ0KPiAtCSAqIGlzIHRoZSBjbG9zZXN0IG9u ZSBnY2sgY2FuIHByb3ZpZGUuIFdlIGhhdmUgdG8gdXBkYXRlIHRoZSB2YWx1ZQ0KPiAtCSAqIG9m IGNsayBtdWwuDQo+IC0JICovDQo+IC0JcmVhbF9nY2tfcmF0ZSA9IGNsa19nZXRfcmF0ZShwcml2 LT5nY2spOw0KPiAtCWlmIChyZWFsX2dja19yYXRlICE9IGdja19yYXRlKSB7DQo+IC0JCWNsa19t dWwgPSByZWFsX2dja19yYXRlIC8gKGNsa19iYXNlICogMTAwMDAwMCkgLSAxOw0KPiAtCQljYXBz MSAmPSAoflNESENJX0NMT0NLX01VTF9NQVNLKTsNCj4gLQkJY2FwczEgfD0gKChjbGtfbXVsIDw8 IFNESENJX0NMT0NLX01VTF9TSElGVCkgJg0KPiAtCQkJICBTREhDSV9DTE9DS19NVUxfTUFTSyk7 DQo+IC0JCS8qIFNldCBjYXBhYmlsaXRpZXMgaW4gci93IG1vZGUuICovDQo+IC0JCXdyaXRlbChT RE1NQ19DQUNSX0tFWSB8IFNETU1DX0NBQ1JfQ0FQV1JFTiwNCj4gLQkJICAgICAgIGhvc3QtPmlv YWRkciArIFNETU1DX0NBQ1IpOw0KPiAtCQl3cml0ZWwoY2FwczEsIGhvc3QtPmlvYWRkciArIFNE SENJX0NBUEFCSUxJVElFU18xKTsNCj4gLQkJLyogU2V0IGNhcGFiaWxpdGllcyBpbiBybyBtb2Rl LiAqLw0KPiAtCQl3cml0ZWwoMCwgaG9zdC0+aW9hZGRyICsgU0RNTUNfQ0FDUik7DQo+IC0JCWRl dl9pbmZvKGRldiwgInVwZGF0ZSBjbGsgbXVsIHRvICV1IGFzIGdjayByYXRlIGlzICV1IEh6XG4i LA0KPiAtCQkJIGNsa19tdWwsIHJlYWxfZ2NrX3JhdGUpOw0KPiAtCX0NCj4gKw0KPiArCWdja19y YXRlID0gY2xrX2dldF9yYXRlKHByaXYtPmdjayk7DQo+ICsJaWYgKHByaXYtPnNvY19kYXRhLT5i YXNlY2xrX2lzX2dlbmVyYXRlZF9pbnRlcm5hbGx5KQ0KPiArCQljbGtfYmFzZV9yYXRlID0gZ2Nr X3JhdGUgLyBwcml2LT5zb2NfZGF0YS0+ZGl2aWRlcl9mb3JfYmFzZWNsazsNCj4gKwllbHNlDQo+ ICsJCWNsa19iYXNlX3JhdGUgPSBjbGtfZ2V0X3JhdGUocHJpdi0+bWFpbmNrKTsNCj4gKw0KPiAr CWNsa19iYXNlID0gY2xrX2Jhc2VfcmF0ZSAvIDEwMDAwMDA7DQo+ICsJY2xrX211bCA9IGdja19y YXRlIC8gY2xrX2Jhc2VfcmF0ZSAtIDE7DQo+ICsNCj4gKwljYXBzMCAmPSAoflNESENJX0NMT0NL X1YzX0JBU0VfTUFTSyk7DQo+ICsJY2FwczAgfD0gKChjbGtfYmFzZSA8PCBTREhDSV9DTE9DS19C QVNFX1NISUZUKSAmIFNESENJX0NMT0NLX1YzX0JBU0VfTUFTSyk7DQo+ICsJY2FwczEgJj0gKH5T REhDSV9DTE9DS19NVUxfTUFTSyk7DQo+ICsJY2FwczEgfD0gKChjbGtfbXVsIDw8IFNESENJX0NM T0NLX01VTF9TSElGVCkgJiBTREhDSV9DTE9DS19NVUxfTUFTSyk7DQo+ICsJLyogU2V0IGNhcGFi aWxpdGllcyBpbiByL3cgbW9kZS4gKi8NCj4gKwl3cml0ZWwoU0RNTUNfQ0FDUl9LRVkgfCBTRE1N Q19DQUNSX0NBUFdSRU4sIGhvc3QtPmlvYWRkciArIFNETU1DX0NBQ1IpOw0KDQpIaSBMdWRvdmlj LA0KDQpJIGhhdmUgYSBmZWVsaW5nIHRoYXQgaGVyZSB5b3UgbWF5IHdpc2ggdG8gYWxzbyB3cml0 ZSB0aGUgY2FwczAgdG8gdGhlIA0KU0RIQ19DQVBBQklMSVRJRVM6DQp3cml0ZWwoY2FwczAsIGhv c3QtPmlvYWRkciArIFNESENJX0NBUEFCSUxJVElFUyk7DQoNCllvdSBhcmUgY29tcHV0aW5nIHRo ZSBjYXBzMCBidXQgbm90IHdyaXRpbmcgdGhlbSB0byByZWdpc3Rlci4NCg0KRXVnZW4NCg0KPiAr CXdyaXRlbChjYXBzMSwgaG9zdC0+aW9hZGRyICsgU0RIQ0lfQ0FQQUJJTElUSUVTXzEpOw0KPiAr CS8qIFNldCBjYXBhYmlsaXRpZXMgaW4gcm8gbW9kZS4gKi8NCj4gKwl3cml0ZWwoMCwgaG9zdC0+ aW9hZGRyICsgU0RNTUNfQ0FDUik7DQo+ICsNCj4gKwlkZXZfaW5mbyhkZXYsICJ1cGRhdGUgY2xr IG11bCB0byAldSBhcyBnY2sgcmF0ZSBpcyAldSBIeiBhbmQgY2xrIGJhc2UgaXMgJXUgSHpcbiIs DQo+ICsJCSBjbGtfbXVsLCBnY2tfcmF0ZSwgY2xrX2Jhc2VfcmF0ZSk7DQo+ICAgDQo+ICAgCS8q DQo+ICAgCSAqIFdlIGhhdmUgdG8gc2V0IHByZXNldCB2YWx1ZXMgYmVjYXVzZSBpdCBkZXBlbmRz IG9uIHRoZSBjbGtfbXVsDQo+IEBAIC0xOTYsMTkgKzIwMSwxOSBAQCBzdGF0aWMgaW50IHNkaGNp X2F0OTFfc2V0X2Nsa3NfcHJlc2V0cyhzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICAgCSAqIG1heGlt dW0gc2QgY2xvY2sgdmFsdWUgaXMgMTIwIE1IeiBpbnN0ZWFkIG9mIDIwOCBNSHouIEZvciB0aGF0 DQo+ICAgCSAqIHJlYXNvbiwgd2UgbmVlZCB0byB1c2UgcHJlc2V0cyB0byBzdXBwb3J0IFNEUjEw NC4NCj4gICAJICovDQo+IC0JcHJlc2V0X2RpdiA9IERJVl9ST1VORF9VUChyZWFsX2dja19yYXRl LCAyNDAwMDAwMCkgLSAxOw0KPiArCXByZXNldF9kaXYgPSBESVZfUk9VTkRfVVAoZ2NrX3JhdGUs IDI0MDAwMDAwKSAtIDE7DQo+ICAgCXdyaXRldyhTREhDSV9BVDkxX1BSRVNFVF9DT01NT05fQ09O RiB8IHByZXNldF9kaXYsDQo+ICAgCSAgICAgICBob3N0LT5pb2FkZHIgKyBTREhDSV9QUkVTRVRf Rk9SX1NEUjEyKTsNCj4gLQlwcmVzZXRfZGl2ID0gRElWX1JPVU5EX1VQKHJlYWxfZ2NrX3JhdGUs IDUwMDAwMDAwKSAtIDE7DQo+ICsJcHJlc2V0X2RpdiA9IERJVl9ST1VORF9VUChnY2tfcmF0ZSwg NTAwMDAwMDApIC0gMTsNCj4gICAJd3JpdGV3KFNESENJX0FUOTFfUFJFU0VUX0NPTU1PTl9DT05G IHwgcHJlc2V0X2RpdiwNCj4gICAJICAgICAgIGhvc3QtPmlvYWRkciArIFNESENJX1BSRVNFVF9G T1JfU0RSMjUpOw0KPiAtCXByZXNldF9kaXYgPSBESVZfUk9VTkRfVVAocmVhbF9nY2tfcmF0ZSwg MTAwMDAwMDAwKSAtIDE7DQo+ICsJcHJlc2V0X2RpdiA9IERJVl9ST1VORF9VUChnY2tfcmF0ZSwg MTAwMDAwMDAwKSAtIDE7DQo+ICAgCXdyaXRldyhTREhDSV9BVDkxX1BSRVNFVF9DT01NT05fQ09O RiB8IHByZXNldF9kaXYsDQo+ICAgCSAgICAgICBob3N0LT5pb2FkZHIgKyBTREhDSV9QUkVTRVRf Rk9SX1NEUjUwKTsNCj4gLQlwcmVzZXRfZGl2ID0gRElWX1JPVU5EX1VQKHJlYWxfZ2NrX3JhdGUs IDEyMDAwMDAwMCkgLSAxOw0KPiArCXByZXNldF9kaXYgPSBESVZfUk9VTkRfVVAoZ2NrX3JhdGUs IDEyMDAwMDAwMCkgLSAxOw0KPiAgIAl3cml0ZXcoU0RIQ0lfQVQ5MV9QUkVTRVRfQ09NTU9OX0NP TkYgfCBwcmVzZXRfZGl2LA0KPiAgIAkgICAgICAgaG9zdC0+aW9hZGRyICsgU0RIQ0lfUFJFU0VU X0ZPUl9TRFIxMDQpOw0KPiAtCXByZXNldF9kaXYgPSBESVZfUk9VTkRfVVAocmVhbF9nY2tfcmF0 ZSwgNTAwMDAwMDApIC0gMTsNCj4gKwlwcmVzZXRfZGl2ID0gRElWX1JPVU5EX1VQKGdja19yYXRl LCA1MDAwMDAwMCkgLSAxOw0KPiAgIAl3cml0ZXcoU0RIQ0lfQVQ5MV9QUkVTRVRfQ09NTU9OX0NP TkYgfCBwcmVzZXRfZGl2LA0KPiAgIAkgICAgICAgaG9zdC0+aW9hZGRyICsgU0RIQ0lfUFJFU0VU X0ZPUl9ERFI1MCk7DQo+ICAgDQo+IEBAIC0zMDMsNyArMzA4LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkZXZfcG1fb3BzIHNkaGNpX2F0OTFfZGV2X3BtX29wcyA9IHsNCj4gICBzdGF0aWMgaW50 IHNkaGNpX2F0OTFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gICB7DQo+ ICAgCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQJKm1hdGNoOw0KPiAtCWNvbnN0IHN0cnVjdCBz ZGhjaV9wbHRmbV9kYXRhCSpzb2NfZGF0YTsNCj4gKwljb25zdCBzdHJ1Y3Qgc2RoY2lfYXQ5MV9z b2NfZGF0YQkqc29jX2RhdGE7DQo+ICAgCXN0cnVjdCBzZGhjaV9ob3N0CQkqaG9zdDsNCj4gICAJ c3RydWN0IHNkaGNpX3BsdGZtX2hvc3QJCSpwbHRmbV9ob3N0Ow0KPiAgIAlzdHJ1Y3Qgc2RoY2lf YXQ5MV9wcml2CQkqcHJpdjsNCj4gQEAgLTMxNCwxNyArMzE5LDIyIEBAIHN0YXRpYyBpbnQgc2Ro Y2lfYXQ5MV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgIAkJcmV0dXJu IC1FSU5WQUw7DQo+ICAgCXNvY19kYXRhID0gbWF0Y2gtPmRhdGE7DQo+ICAgDQo+IC0JaG9zdCA9 IHNkaGNpX3BsdGZtX2luaXQocGRldiwgc29jX2RhdGEsIHNpemVvZigqcHJpdikpOw0KPiArCWhv c3QgPSBzZGhjaV9wbHRmbV9pbml0KHBkZXYsIHNvY19kYXRhLT5wZGF0YSwgc2l6ZW9mKCpwcml2 KSk7DQo+ICAgCWlmIChJU19FUlIoaG9zdCkpDQo+ICAgCQlyZXR1cm4gUFRSX0VSUihob3N0KTsN Cj4gICANCj4gICAJcGx0Zm1faG9zdCA9IHNkaGNpX3ByaXYoaG9zdCk7DQo+ICAgCXByaXYgPSBz ZGhjaV9wbHRmbV9wcml2KHBsdGZtX2hvc3QpOw0KPiArCXByaXYtPnNvY19kYXRhID0gc29jX2Rh dGE7DQo+ICAgDQo+ICAgCXByaXYtPm1haW5jayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAi YmFzZWNsayIpOw0KPiAgIAlpZiAoSVNfRVJSKHByaXYtPm1haW5jaykpIHsNCj4gLQkJZGV2X2Vy cigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCBiYXNlY2xrXG4iKTsNCj4gLQkJcmV0dXJuIFBU Ul9FUlIocHJpdi0+bWFpbmNrKTsNCj4gKwkJaWYgKHNvY19kYXRhLT5iYXNlY2xrX2lzX2dlbmVy YXRlZF9pbnRlcm5hbGx5KSB7DQo+ICsJCQlwcml2LT5tYWluY2sgPSBOVUxMOw0KPiArCQl9IGVs c2Ugew0KPiArCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCBiYXNlY2xrXG4i KTsNCj4gKwkJCXJldHVybiBQVFJfRVJSKHByaXYtPm1haW5jayk7DQo+ICsJCX0NCj4gICAJfQ0K PiAgIA0KPiAgIAlwcml2LT5oY2xvY2sgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgImhjbG9j ayIpOw0KPiANCg==