From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH] mfd: twl-core: make driver DT only Date: Fri, 18 Nov 2016 19:01:15 +0000 Message-ID: <20161118190115.GB23246@dell.home> References: <1478952153-26592-1-git-send-email-Nicolae_Rosia@mentor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1478952153-26592-1-git-send-email-Nicolae_Rosia@mentor.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Nicolae Rosia Cc: Tony Lindgren , linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: linux-omap@vger.kernel.org T24gU2F0LCAxMiBOb3YgMjAxNiwgTmljb2xhZSBSb3NpYSB3cm90ZToKCj4gQWxsIHVzZXJzIGFy ZSBEVC1vbmx5IGFuZCBpdCBtYWtlcyBubyBzZW5zZSB0byBrZWVwCj4gdW51c2VkIGNvZGUKPiAK PiBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFlIFJvc2lhIDxOaWNvbGFlX1Jvc2lhQG1lbnRvci5jb20+ Cj4gLS0tCj4gIGRyaXZlcnMvbWZkL0tjb25maWcgICAgfCAgIDEgKwo+ICBkcml2ZXJzL21mZC90 d2wtY29yZS5jIHwgMzk1ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzODYgZGVsZXRp b25zKC0pCgpJIHRoaW5rIGl0IHdvdWxkIGJlIGNvdXJ0ZW91cyB0byBhZGQgc29tZSBvZiB0aGUg c2VyaW91cyBjb250cmlidXRvcnMKdG8gdGhlIHJldmlldyBsaXN0LgoKVGhlcmUgbWF5IHN0aWxs IGJlIHNvbWUgb3V0IG9mIHRyZWUgdXNlcnMgd2hvIG1pZ2h0IHdpc2ggZm9yIGEKaGVhZHMtdXAg dGhhdCB0aGlzIGNoYW5nZSBpcyBhYm91dCB0byBiZSBtZXJnZWQuCgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+IGluZGV4IGM2ZGY2NDQu LmMxODBmOGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvS2NvbmZpZwo+ICsrKyBiL2RyaXZl cnMvbWZkL0tjb25maWcKPiBAQCAtMTMzMyw2ICsxMzMzLDcgQEAgY29uZmlnIE1GRF9UUFM4MDAz MQo+ICBjb25maWcgVFdMNDAzMF9DT1JFCj4gIAlib29sICJUSSBUV0w0MDMwL1RXTDUwMzAvVFdM NjAzMC9UUFM2NTl4MCBTdXBwb3J0Igo+ICAJZGVwZW5kcyBvbiBJMkM9eQo+ICsJZGVwZW5kcyBv biBPRgo+ICAJc2VsZWN0IElSUV9ET01BSU4KPiAgCXNlbGVjdCBSRUdNQVBfSTJDCj4gIAloZWxw Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3R3bC1jb3JlLmMgYi9kcml2ZXJzL21mZC90d2wt Y29yZS5jCj4gaW5kZXggYzY0NjE1ZC4uMjAyNTMyNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21m ZC90d2wtY29yZS5jCj4gKysrIGIvZHJpdmVycy9tZmQvdHdsLWNvcmUuYwo+IEBAIC0xMyw2ICsx Myw5IEBACj4gICAqIENvZGUgY2xlYW51cCBhbmQgbW9kaWZpY2F0aW9ucyB0byBJUlEgaGFuZGxl ci4KPiAgICogYnkgc3llZCBraGFzaW0gPHgwa2hhc2ltQHRpLmNvbT4KPiAgICoKPiArICogQ29k ZSBjbGVhbnVwIGFuZCBtb2RpZmljYXRpb25zOgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTmlj b2xhZSBSb3NpYSA8bmljb2xhZS5yb3NpYUBnbWFpbC5jb20+Cj4gKyAqCj4gICAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Cj4gICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gQEAgLTYwNCwzNzYgKzYwNyw2 IEBAIGludCB0d2xfZ2V0X2hmY2xrX3JhdGUodm9pZCkKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQ TCh0d2xfZ2V0X2hmY2xrX3JhdGUpOwo+ICAKPiAtc3RhdGljIHN0cnVjdCBkZXZpY2UgKgo+IC1h ZGRfbnVtYmVyZWRfY2hpbGQodW5zaWduZWQgbW9kX25vLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg bnVtLAo+IC0JCXZvaWQgKnBkYXRhLCB1bnNpZ25lZCBwZGF0YV9sZW4sCj4gLQkJYm9vbCBjYW5f d2FrZXVwLCBpbnQgaXJxMCwgaW50IGlycTEpCj4gLXsKPiAtCXN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UJKnBkZXY7Cj4gLQlzdHJ1Y3QgdHdsX2NsaWVudAkqdHdsOwo+IC0JaW50CQkJc3RhdHVzLCBz aWQ7Cj4gLQo+IC0JaWYgKHVubGlrZWx5KG1vZF9ubyA+PSB0d2xfZ2V0X2xhc3RfbW9kdWxlKCkp KSB7Cj4gLQkJcHJfZXJyKCIlczogaW52YWxpZCBtb2R1bGUgbnVtYmVyICVkXG4iLCBEUklWRVJf TkFNRSwgbW9kX25vKTsKPiAtCQlyZXR1cm4gRVJSX1BUUigtRVBFUk0pOwo+IC0JfQo+IC0Jc2lk ID0gdHdsX3ByaXYtPnR3bF9tYXBbbW9kX25vXS5zaWQ7Cj4gLQl0d2wgPSAmdHdsX3ByaXYtPnR3 bF9tb2R1bGVzW3NpZF07Cj4gLQo+IC0JcGRldiA9IHBsYXRmb3JtX2RldmljZV9hbGxvYyhuYW1l LCBudW0pOwo+IC0JaWYgKCFwZGV2KQo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+IC0K PiAtCXBkZXYtPmRldi5wYXJlbnQgPSAmdHdsLT5jbGllbnQtPmRldjsKPiAtCj4gLQlpZiAocGRh dGEpIHsKPiAtCQlzdGF0dXMgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkX2RhdGEocGRldiwgcGRhdGEs IHBkYXRhX2xlbik7Cj4gLQkJaWYgKHN0YXR1cyA8IDApIHsKPiAtCQkJZGV2X2RiZygmcGRldi0+ ZGV2LCAiY2FuJ3QgYWRkIHBsYXRmb3JtX2RhdGFcbiIpOwo+IC0JCQlnb3RvIHB1dF9kZXZpY2U7 Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCWlmIChpcnEwKSB7Cj4gLQkJc3RydWN0IHJlc291cmNlIHJb Ml0gPSB7Cj4gLQkJCXsgLnN0YXJ0ID0gaXJxMCwgLmZsYWdzID0gSU9SRVNPVVJDRV9JUlEsIH0s Cj4gLQkJCXsgLnN0YXJ0ID0gaXJxMSwgLmZsYWdzID0gSU9SRVNPVVJDRV9JUlEsIH0sCj4gLQkJ fTsKPiAtCj4gLQkJc3RhdHVzID0gcGxhdGZvcm1fZGV2aWNlX2FkZF9yZXNvdXJjZXMocGRldiwg ciwgaXJxMSA/IDIgOiAxKTsKPiAtCQlpZiAoc3RhdHVzIDwgMCkgewo+IC0JCQlkZXZfZGJnKCZw ZGV2LT5kZXYsICJjYW4ndCBhZGQgaXJxc1xuIik7Cj4gLQkJCWdvdG8gcHV0X2RldmljZTsKPiAt CQl9Cj4gLQl9Cj4gLQo+IC0Jc3RhdHVzID0gcGxhdGZvcm1fZGV2aWNlX2FkZChwZGV2KTsKPiAt CWlmIChzdGF0dXMpCj4gLQkJZ290byBwdXRfZGV2aWNlOwo+IC0KPiAtCWRldmljZV9pbml0X3dh a2V1cCgmcGRldi0+ZGV2LCBjYW5fd2FrZXVwKTsKPiAtCj4gLQlyZXR1cm4gJnBkZXYtPmRldjsK PiAtCj4gLXB1dF9kZXZpY2U6Cj4gLQlwbGF0Zm9ybV9kZXZpY2VfcHV0KHBkZXYpOwo+IC0JZGV2 X2VycigmdHdsLT5jbGllbnQtPmRldiwgImZhaWxlZCB0byBhZGQgZGV2aWNlICVzXG4iLCBuYW1l KTsKPiAtCXJldHVybiBFUlJfUFRSKHN0YXR1cyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUg c3RydWN0IGRldmljZSAqYWRkX2NoaWxkKHVuc2lnbmVkIG1vZF9ubywgY29uc3QgY2hhciAqbmFt ZSwKPiAtCQl2b2lkICpwZGF0YSwgdW5zaWduZWQgcGRhdGFfbGVuLAo+IC0JCWJvb2wgY2FuX3dh a2V1cCwgaW50IGlycTAsIGludCBpcnExKQo+IC17Cj4gLQlyZXR1cm4gYWRkX251bWJlcmVkX2No aWxkKG1vZF9ubywgbmFtZSwgLTEsIHBkYXRhLCBwZGF0YV9sZW4sCj4gLQkJY2FuX3dha2V1cCwg aXJxMCwgaXJxMSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICoKPiAtYWRkX3Jl Z3VsYXRvcl9saW5rZWQoaW50IG51bSwgc3RydWN0IHJlZ3VsYXRvcl9pbml0X2RhdGEgKnBkYXRh LAo+IC0JCXN0cnVjdCByZWd1bGF0b3JfY29uc3VtZXJfc3VwcGx5ICpjb25zdW1lcnMsCj4gLQkJ dW5zaWduZWQgbnVtX2NvbnN1bWVycywgdW5zaWduZWQgbG9uZyBmZWF0dXJlcykKPiAtewo+IC0J c3RydWN0IHR3bF9yZWd1bGF0b3JfZHJpdmVyX2RhdGEgZHJ2X2RhdGE7Cj4gLQo+IC0JLyogcmVn dWxhdG9yIGZyYW1ld29yayBkZW1hbmRzIGluaXRfZGF0YSAuLi4gKi8KPiAtCWlmICghcGRhdGEp Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQo+IC0JaWYgKGNvbnN1bWVycykgewo+IC0JCXBkYXRhLT5j b25zdW1lcl9zdXBwbGllcyA9IGNvbnN1bWVyczsKPiAtCQlwZGF0YS0+bnVtX2NvbnN1bWVyX3N1 cHBsaWVzID0gbnVtX2NvbnN1bWVyczsKPiAtCX0KPiAtCj4gLQlpZiAocGRhdGEtPmRyaXZlcl9k YXRhKSB7Cj4gLQkJLyogSWYgd2UgaGF2ZSBleGlzdGluZyBkcnZfZGF0YSwganVzdCBhZGQgdGhl IGZsYWdzICovCj4gLQkJc3RydWN0IHR3bF9yZWd1bGF0b3JfZHJpdmVyX2RhdGEgKnRtcDsKPiAt CQl0bXAgPSBwZGF0YS0+ZHJpdmVyX2RhdGE7Cj4gLQkJdG1wLT5mZWF0dXJlcyB8PSBmZWF0dXJl czsKPiAtCX0gZWxzZSB7Cj4gLQkJLyogYWRkIG5ldyBkcml2ZXIgZGF0YSBzdHJ1Y3QsIHVzZWQg b25seSBkdXJpbmcgaW5pdCAqLwo+IC0JCWRydl9kYXRhLmZlYXR1cmVzID0gZmVhdHVyZXM7Cj4g LQkJZHJ2X2RhdGEuc2V0X3ZvbHRhZ2UgPSBOVUxMOwo+IC0JCWRydl9kYXRhLmdldF92b2x0YWdl ID0gTlVMTDsKPiAtCQlkcnZfZGF0YS5kYXRhID0gTlVMTDsKPiAtCQlwZGF0YS0+ZHJpdmVyX2Rh dGEgPSAmZHJ2X2RhdGE7Cj4gLQl9Cj4gLQo+IC0JLyogTk9URTogIHdlIGN1cnJlbnRseSBpZ25v cmUgcmVndWxhdG9yIElSUXMsIGUuZy4gZm9yIHNob3J0IGNpcmN1aXRzICovCj4gLQlyZXR1cm4g YWRkX251bWJlcmVkX2NoaWxkKFRXTF9NT0RVTEVfUE1fTUFTVEVSLCAidHdsX3JlZyIsIG51bSwK PiAtCQlwZGF0YSwgc2l6ZW9mKCpwZGF0YSksIGZhbHNlLCAwLCAwKTsKPiAtfQo+IC0KPiAtc3Rh dGljIHN0cnVjdCBkZXZpY2UgKgo+IC1hZGRfcmVndWxhdG9yKGludCBudW0sIHN0cnVjdCByZWd1 bGF0b3JfaW5pdF9kYXRhICpwZGF0YSwKPiAtCQl1bnNpZ25lZCBsb25nIGZlYXR1cmVzKQo+IC17 Cj4gLQlyZXR1cm4gYWRkX3JlZ3VsYXRvcl9saW5rZWQobnVtLCBwZGF0YSwgTlVMTCwgMCwgZmVh dHVyZXMpOwo+IC19Cj4gLQo+IC0vKgo+IC0gKiBOT1RFOiAgV2Uga25vdyB0aGUgZmlyc3QgOCBJ UlFzIGFmdGVyIHBkYXRhLT5iYXNlX2lycSBhcmUKPiAtICogZm9yIHRoZSBQSUgsIGFuZCB0aGUg bmV4dCBhcmUgZm9yIHRoZSBQV1JfSU5UIFNJSCwgc2luY2UKPiAtICogdGhhdCdzIGhvdyB0d2xf aW5pdF9pcnEoKSBzZXRzIHRoaW5ncyB1cC4KPiAtICovCj4gLQo+IC1zdGF0aWMgaW50Cj4gLWFk ZF9jaGlsZHJlbihzdHJ1Y3QgdHdsNDAzMF9wbGF0Zm9ybV9kYXRhICpwZGF0YSwgdW5zaWduZWQg aXJxX2Jhc2UsCj4gLQkJdW5zaWduZWQgbG9uZyBmZWF0dXJlcykKPiAtewo+IC0Jc3RydWN0IGRl dmljZQkqY2hpbGQ7Cj4gLQo+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX0dQSU9fVFdMNDAzMCkg JiYgcGRhdGEtPmdwaW8pIHsKPiAtCQljaGlsZCA9IGFkZF9jaGlsZChUV0w0MDMwX01PRFVMRV9H UElPLCAidHdsNDAzMF9ncGlvIiwKPiAtCQkJCXBkYXRhLT5ncGlvLCBzaXplb2YoKnBkYXRhLT5n cGlvKSwKPiAtCQkJCWZhbHNlLCBpcnFfYmFzZSArIEdQSU9fSU5UUl9PRkZTRVQsIDApOwo+IC0J CWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjaGlsZCk7Cj4gLQl9Cj4g LQo+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX0tFWUJPQVJEX1RXTDQwMzApICYmIHBkYXRhLT5r ZXlwYWQpIHsKPiAtCQljaGlsZCA9IGFkZF9jaGlsZChUV0w0MDMwX01PRFVMRV9LRVlQQUQsICJ0 d2w0MDMwX2tleXBhZCIsCj4gLQkJCQlwZGF0YS0+a2V5cGFkLCBzaXplb2YoKnBkYXRhLT5rZXlw YWQpLAo+IC0JCQkJdHJ1ZSwgaXJxX2Jhc2UgKyBLRVlQQURfSU5UUl9PRkZTRVQsIDApOwo+IC0J CWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjaGlsZCk7Cj4gLQl9Cj4g LQo+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX1RXTDQwMzBfTUFEQykgJiYgcGRhdGEtPm1hZGMg JiYKPiAtCSAgICB0d2xfY2xhc3NfaXNfNDAzMCgpKSB7Cj4gLQkJY2hpbGQgPSBhZGRfY2hpbGQo VFdMNDAzMF9NT0RVTEVfTUFEQywgInR3bDQwMzBfbWFkYyIsCj4gLQkJCQlwZGF0YS0+bWFkYywg c2l6ZW9mKCpwZGF0YS0+bWFkYyksCj4gLQkJCQl0cnVlLCBpcnFfYmFzZSArIE1BRENfSU5UUl9P RkZTRVQsIDApOwo+IC0JCWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihj aGlsZCk7Cj4gLQl9Cj4gLQo+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX1JUQ19EUlZfVFdMNDAz MCkpIHsKPiAtCQkvKgo+IC0JCSAqIFJFVklTSVQgcGxhdGZvcm1fZGF0YSBoZXJlIGN1cnJlbnRs eSBtaWdodCBleHBvc2UgdGhlCj4gLQkJICogIm1zZWN1cmUiIGxpbmUgLi4uIGJ1dCBmb3Igbm93 IHdlIGp1c3QgZXhwZWN0IGJvYXJkCj4gLQkJICogc2V0dXAgdG8gdGVsbCB0aGUgY2hpcCAiaXQn cyBhbHdheXMgb2sgdG8gU0VUX1RJTUUiLgo+IC0JCSAqIEV2ZW50dWFsbHksIExpbnV4IG1pZ2h0 IGJlY29tZSBtb3JlIGF3YXJlIG9mIHN1Y2gKPiAtCQkgKiBIVyBzZWN1cml0eSBjb25jZXJucywg YW5kICJsZWFzdCBwcml2aWxlZ2UiLgo+IC0JCSAqLwo+IC0JCWNoaWxkID0gYWRkX2NoaWxkKFRX TF9NT0RVTEVfUlRDLCAidHdsX3J0YyIsIE5VTEwsIDAsCj4gLQkJCQl0cnVlLCBpcnFfYmFzZSAr IFJUQ19JTlRSX09GRlNFVCwgMCk7Cj4gLQkJaWYgKElTX0VSUihjaGlsZCkpCj4gLQkJCXJldHVy biBQVFJfRVJSKGNoaWxkKTsKPiAtCX0KPiAtCj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfUFdN X1RXTCkpIHsKPiAtCQljaGlsZCA9IGFkZF9jaGlsZChUV0xfTU9EVUxFX1BXTSwgInR3bC1wd20i LCBOVUxMLCAwLAo+IC0JCQkJICBmYWxzZSwgMCwgMCk7Cj4gLQkJaWYgKElTX0VSUihjaGlsZCkp Cj4gLQkJCXJldHVybiBQVFJfRVJSKGNoaWxkKTsKPiAtCX0KPiAtCj4gLQlpZiAoSVNfRU5BQkxF RChDT05GSUdfUFdNX1RXTF9MRUQpKSB7Cj4gLQkJY2hpbGQgPSBhZGRfY2hpbGQoVFdMX01PRFVM RV9MRUQsICJ0d2wtcHdtbGVkIiwgTlVMTCwgMCwKPiAtCQkJCSAgZmFsc2UsIDAsIDApOwo+IC0J CWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjaGlsZCk7Cj4gLQl9Cj4g LQo+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX1RXTDQwMzBfVVNCKSAmJiBwZGF0YS0+dXNiICYm Cj4gLQkgICAgdHdsX2NsYXNzX2lzXzQwMzAoKSkgewo+IC0KPiAtCQlzdGF0aWMgc3RydWN0IHJl Z3VsYXRvcl9jb25zdW1lcl9zdXBwbHkgdXNiMXY1ID0gewo+IC0JCQkuc3VwcGx5ID0JInVzYjF2 NSIsCj4gLQkJfTsKPiAtCQlzdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9jb25zdW1lcl9zdXBwbHkg dXNiMXY4ID0gewo+IC0JCQkuc3VwcGx5ID0JInVzYjF2OCIsCj4gLQkJfTsKPiAtCQlzdGF0aWMg c3RydWN0IHJlZ3VsYXRvcl9jb25zdW1lcl9zdXBwbHkgdXNiM3YxID0gewo+IC0JCQkuc3VwcGx5 ID0JInVzYjN2MSIsCj4gLQkJfTsKPiAtCj4gLQkvKiBGaXJzdCBhZGQgdGhlIHJlZ3VsYXRvcnMg c28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkIGJ5IHRyYW5zY2VpdmVyICovCj4gLQkJaWYgKElTX0VO QUJMRUQoQ09ORklHX1JFR1VMQVRPUl9UV0w0MDMwKSkgewo+IC0JCQkvKiB0aGlzIGlzIGEgdGVt cGxhdGUgdGhhdCBnZXRzIGNvcGllZCAqLwo+IC0JCQlzdHJ1Y3QgcmVndWxhdG9yX2luaXRfZGF0 YSB1c2JfZml4ZWQgPSB7Cj4gLQkJCQkuY29uc3RyYWludHMudmFsaWRfbW9kZXNfbWFzayA9Cj4g LQkJCQkJUkVHVUxBVE9SX01PREVfTk9STUFMCj4gLQkJCQkJfCBSRUdVTEFUT1JfTU9ERV9TVEFO REJZLAo+IC0JCQkJLmNvbnN0cmFpbnRzLnZhbGlkX29wc19tYXNrID0KPiAtCQkJCQlSRUdVTEFU T1JfQ0hBTkdFX01PREUKPiAtCQkJCQl8IFJFR1VMQVRPUl9DSEFOR0VfU1RBVFVTLAo+IC0JCQl9 Owo+IC0KPiAtCQkJY2hpbGQgPSBhZGRfcmVndWxhdG9yX2xpbmtlZChUV0w0MDMwX1JFR19WVVNC MVY1LAo+IC0JCQkJCQkgICAgICAmdXNiX2ZpeGVkLCAmdXNiMXY1LCAxLAo+IC0JCQkJCQkgICAg ICBmZWF0dXJlcyk7Cj4gLQkJCWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQkJcmV0dXJuIFBUUl9F UlIoY2hpbGQpOwo+IC0KPiAtCQkJY2hpbGQgPSBhZGRfcmVndWxhdG9yX2xpbmtlZChUV0w0MDMw X1JFR19WVVNCMVY4LAo+IC0JCQkJCQkgICAgICAmdXNiX2ZpeGVkLCAmdXNiMXY4LCAxLAo+IC0J CQkJCQkgICAgICBmZWF0dXJlcyk7Cj4gLQkJCWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQkJcmV0 dXJuIFBUUl9FUlIoY2hpbGQpOwo+IC0KPiAtCQkJY2hpbGQgPSBhZGRfcmVndWxhdG9yX2xpbmtl ZChUV0w0MDMwX1JFR19WVVNCM1YxLAo+IC0JCQkJCQkgICAgICAmdXNiX2ZpeGVkLCAmdXNiM3Yx LCAxLAo+IC0JCQkJCQkgICAgICBmZWF0dXJlcyk7Cj4gLQkJCWlmIChJU19FUlIoY2hpbGQpKQo+ IC0JCQkJcmV0dXJuIFBUUl9FUlIoY2hpbGQpOwo+IC0KPiAtCQl9Cj4gLQo+IC0JCWNoaWxkID0g YWRkX2NoaWxkKFRXTF9NT0RVTEVfVVNCLCAidHdsNDAzMF91c2IiLAo+IC0JCQkJcGRhdGEtPnVz Yiwgc2l6ZW9mKCpwZGF0YS0+dXNiKSwgdHJ1ZSwKPiAtCQkJCS8qIGlycTAgPSBVU0JfUFJFUywg aXJxMSA9IFVTQiAqLwo+IC0JCQkJaXJxX2Jhc2UgKyBVU0JfUFJFU19JTlRSX09GRlNFVCwKPiAt CQkJCWlycV9iYXNlICsgVVNCX0lOVFJfT0ZGU0VUKTsKPiAtCj4gLQkJaWYgKElTX0VSUihjaGls ZCkpCj4gLQkJCXJldHVybiBQVFJfRVJSKGNoaWxkKTsKPiAtCj4gLQkJLyogd2UgbmVlZCB0byBj b25uZWN0IHJlZ3VsYXRvcnMgdG8gdGhpcyB0cmFuc2NlaXZlciAqLwo+IC0JCWlmIChJU19FTkFC TEVEKENPTkZJR19SRUdVTEFUT1JfVFdMNDAzMCkgJiYgY2hpbGQpIHsKPiAtCQkJdXNiMXY1LmRl dl9uYW1lID0gZGV2X25hbWUoY2hpbGQpOwo+IC0JCQl1c2IxdjguZGV2X25hbWUgPSBkZXZfbmFt ZShjaGlsZCk7Cj4gLQkJCXVzYjN2MS5kZXZfbmFtZSA9IGRldl9uYW1lKGNoaWxkKTsKPiAtCQl9 Cj4gLQl9Cj4gLQo+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX1RXTDQwMzBfV0FUQ0hET0cpICYm IHR3bF9jbGFzc19pc180MDMwKCkpIHsKPiAtCQljaGlsZCA9IGFkZF9jaGlsZChUV0xfTU9EVUxF X1BNX1JFQ0VJVkVSLCAidHdsNDAzMF93ZHQiLCBOVUxMLAo+IC0JCQkJICAwLCBmYWxzZSwgMCwg MCk7Cj4gLQkJaWYgKElTX0VSUihjaGlsZCkpCj4gLQkJCXJldHVybiBQVFJfRVJSKGNoaWxkKTsK PiAtCX0KPiAtCj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfSU5QVVRfVFdMNDAzMF9QV1JCVVRU T04pICYmIHR3bF9jbGFzc19pc180MDMwKCkpIHsKPiAtCQljaGlsZCA9IGFkZF9jaGlsZChUV0xf TU9EVUxFX1BNX01BU1RFUiwgInR3bDQwMzBfcHdyYnV0dG9uIiwKPiAtCQkJCSAgTlVMTCwgMCwg dHJ1ZSwgaXJxX2Jhc2UgKyA4ICsgMCwgMCk7Cj4gLQkJaWYgKElTX0VSUihjaGlsZCkpCj4gLQkJ CXJldHVybiBQVFJfRVJSKGNoaWxkKTsKPiAtCX0KPiAtCj4gLQlpZiAoSVNfRU5BQkxFRChDT05G SUdfTUZEX1RXTDQwMzBfQVVESU8pICYmIHBkYXRhLT5hdWRpbyAmJgo+IC0JICAgIHR3bF9jbGFz c19pc180MDMwKCkpIHsKPiAtCQljaGlsZCA9IGFkZF9jaGlsZChUV0w0MDMwX01PRFVMRV9BVURJ T19WT0lDRSwgInR3bDQwMzAtYXVkaW8iLAo+IC0JCQkJcGRhdGEtPmF1ZGlvLCBzaXplb2YoKnBk YXRhLT5hdWRpbyksCj4gLQkJCQlmYWxzZSwgMCwgMCk7Cj4gLQkJaWYgKElTX0VSUihjaGlsZCkp Cj4gLQkJCXJldHVybiBQVFJfRVJSKGNoaWxkKTsKPiAtCX0KPiAtCj4gLQkvKiB0d2w0MDMwIHJl Z3VsYXRvcnMgKi8KPiAtCWlmIChJU19FTkFCTEVEKENPTkZJR19SRUdVTEFUT1JfVFdMNDAzMCkg JiYgdHdsX2NsYXNzX2lzXzQwMzAoKSkgewo+IC0JCWNoaWxkID0gYWRkX3JlZ3VsYXRvcihUV0w0 MDMwX1JFR19WUExMMSwgcGRhdGEtPnZwbGwxLAo+IC0JCQkJCWZlYXR1cmVzKTsKPiAtCQlpZiAo SVNfRVJSKGNoaWxkKSkKPiAtCQkJcmV0dXJuIFBUUl9FUlIoY2hpbGQpOwo+IC0KPiAtCQljaGls ZCA9IGFkZF9yZWd1bGF0b3IoVFdMNDAzMF9SRUdfVklPLCBwZGF0YS0+dmlvLAo+IC0JCQkJCWZl YXR1cmVzKTsKPiAtCQlpZiAoSVNfRVJSKGNoaWxkKSkKPiAtCQkJcmV0dXJuIFBUUl9FUlIoY2hp bGQpOwo+IC0KPiAtCQljaGlsZCA9IGFkZF9yZWd1bGF0b3IoVFdMNDAzMF9SRUdfVkREMSwgcGRh dGEtPnZkZDEsCj4gLQkJCQkJZmVhdHVyZXMpOwo+IC0JCWlmIChJU19FUlIoY2hpbGQpKQo+IC0J CQlyZXR1cm4gUFRSX0VSUihjaGlsZCk7Cj4gLQo+IC0JCWNoaWxkID0gYWRkX3JlZ3VsYXRvcihU V0w0MDMwX1JFR19WREQyLCBwZGF0YS0+dmRkMiwKPiAtCQkJCQlmZWF0dXJlcyk7Cj4gLQkJaWYg KElTX0VSUihjaGlsZCkpCj4gLQkJCXJldHVybiBQVFJfRVJSKGNoaWxkKTsKPiAtCj4gLQkJY2hp bGQgPSBhZGRfcmVndWxhdG9yKFRXTDQwMzBfUkVHX1ZNTUMxLCBwZGF0YS0+dm1tYzEsCj4gLQkJ CQkJZmVhdHVyZXMpOwo+IC0JCWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VS UihjaGlsZCk7Cj4gLQo+IC0JCWNoaWxkID0gYWRkX3JlZ3VsYXRvcihUV0w0MDMwX1JFR19WREFD LCBwZGF0YS0+dmRhYywKPiAtCQkJCQlmZWF0dXJlcyk7Cj4gLQkJaWYgKElTX0VSUihjaGlsZCkp Cj4gLQkJCXJldHVybiBQVFJfRVJSKGNoaWxkKTsKPiAtCj4gLQkJY2hpbGQgPSBhZGRfcmVndWxh dG9yKChmZWF0dXJlcyAmIFRXTDQwMzBfVkFVWDIpCj4gLQkJCQkJPyBUV0w0MDMwX1JFR19WQVVY Ml80MDMwCj4gLQkJCQkJOiBUV0w0MDMwX1JFR19WQVVYMiwKPiAtCQkJCXBkYXRhLT52YXV4Miwg ZmVhdHVyZXMpOwo+IC0JCWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihj aGlsZCk7Cj4gLQo+IC0JCWNoaWxkID0gYWRkX3JlZ3VsYXRvcihUV0w0MDMwX1JFR19WSU5UQU5B MSwgcGRhdGEtPnZpbnRhbmExLAo+IC0JCQkJCWZlYXR1cmVzKTsKPiAtCQlpZiAoSVNfRVJSKGNo aWxkKSkKPiAtCQkJcmV0dXJuIFBUUl9FUlIoY2hpbGQpOwo+IC0KPiAtCQljaGlsZCA9IGFkZF9y ZWd1bGF0b3IoVFdMNDAzMF9SRUdfVklOVEFOQTIsIHBkYXRhLT52aW50YW5hMiwKPiAtCQkJCQlm ZWF0dXJlcyk7Cj4gLQkJaWYgKElTX0VSUihjaGlsZCkpCj4gLQkJCXJldHVybiBQVFJfRVJSKGNo aWxkKTsKPiAtCj4gLQkJY2hpbGQgPSBhZGRfcmVndWxhdG9yKFRXTDQwMzBfUkVHX1ZJTlRESUcs IHBkYXRhLT52aW50ZGlnLAo+IC0JCQkJCWZlYXR1cmVzKTsKPiAtCQlpZiAoSVNfRVJSKGNoaWxk KSkKPiAtCQkJcmV0dXJuIFBUUl9FUlIoY2hpbGQpOwo+IC0JfQo+IC0KPiAtCS8qIG1heWJlIGFk ZCBMRE9zIHRoYXQgYXJlIG9taXR0ZWQgb24gY29zdC1yZWR1Y2VkIHBhcnRzICovCj4gLQlpZiAo SVNfRU5BQkxFRChDT05GSUdfUkVHVUxBVE9SX1RXTDQwMzApICYmICEoZmVhdHVyZXMgJiBUUFNf U1VCU0VUKQo+IC0JICAmJiB0d2xfY2xhc3NfaXNfNDAzMCgpKSB7Cj4gLQkJY2hpbGQgPSBhZGRf cmVndWxhdG9yKFRXTDQwMzBfUkVHX1ZQTEwyLCBwZGF0YS0+dnBsbDIsCj4gLQkJCQkJZmVhdHVy ZXMpOwo+IC0JCWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjaGlsZCk7 Cj4gLQo+IC0JCWNoaWxkID0gYWRkX3JlZ3VsYXRvcihUV0w0MDMwX1JFR19WTU1DMiwgcGRhdGEt PnZtbWMyLAo+IC0JCQkJCWZlYXR1cmVzKTsKPiAtCQlpZiAoSVNfRVJSKGNoaWxkKSkKPiAtCQkJ cmV0dXJuIFBUUl9FUlIoY2hpbGQpOwo+IC0KPiAtCQljaGlsZCA9IGFkZF9yZWd1bGF0b3IoVFdM NDAzMF9SRUdfVlNJTSwgcGRhdGEtPnZzaW0sCj4gLQkJCQkJZmVhdHVyZXMpOwo+IC0JCWlmIChJ U19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjaGlsZCk7Cj4gLQo+IC0JCWNoaWxk ID0gYWRkX3JlZ3VsYXRvcihUV0w0MDMwX1JFR19WQVVYMSwgcGRhdGEtPnZhdXgxLAo+IC0JCQkJ CWZlYXR1cmVzKTsKPiAtCQlpZiAoSVNfRVJSKGNoaWxkKSkKPiAtCQkJcmV0dXJuIFBUUl9FUlIo Y2hpbGQpOwo+IC0KPiAtCQljaGlsZCA9IGFkZF9yZWd1bGF0b3IoVFdMNDAzMF9SRUdfVkFVWDMs IHBkYXRhLT52YXV4MywKPiAtCQkJCQlmZWF0dXJlcyk7Cj4gLQkJaWYgKElTX0VSUihjaGlsZCkp Cj4gLQkJCXJldHVybiBQVFJfRVJSKGNoaWxkKTsKPiAtCj4gLQkJY2hpbGQgPSBhZGRfcmVndWxh dG9yKFRXTDQwMzBfUkVHX1ZBVVg0LCBwZGF0YS0+dmF1eDQsCj4gLQkJCQkJZmVhdHVyZXMpOwo+ IC0JCWlmIChJU19FUlIoY2hpbGQpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjaGlsZCk7Cj4gLQl9 Cj4gLQo+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX0NIQVJHRVJfVFdMNDAzMCkgJiYgcGRhdGEt PmJjaSAmJgo+IC0JCQkhKGZlYXR1cmVzICYgKFRQU19TVUJTRVQgfCBUV0w1MDMxKSkpIHsKPiAt CQljaGlsZCA9IGFkZF9jaGlsZChUV0xfTU9EVUxFX01BSU5fQ0hBUkdFLCAidHdsNDAzMF9iY2ki LAo+IC0JCQkJcGRhdGEtPmJjaSwgc2l6ZW9mKCpwZGF0YS0+YmNpKSwgZmFsc2UsCj4gLQkJCQkv KiBpcnEwID0gQ0hHX1BSRVMsIGlycTEgPSBCQ0kgKi8KPiAtCQkJCWlycV9iYXNlICsgQkNJX1BS RVNfSU5UUl9PRkZTRVQsCj4gLQkJCQlpcnFfYmFzZSArIEJDSV9JTlRSX09GRlNFVCk7Cj4gLQkJ aWYgKElTX0VSUihjaGlsZCkpCj4gLQkJCXJldHVybiBQVFJfRVJSKGNoaWxkKTsKPiAtCX0KPiAt Cj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfVFdMNDAzMF9QT1dFUikgJiYgcGRhdGEtPnBvd2Vy KSB7Cj4gLQkJY2hpbGQgPSBhZGRfY2hpbGQoVFdMX01PRFVMRV9QTV9NQVNURVIsICJ0d2w0MDMw X3Bvd2VyIiwKPiAtCQkJCSAgcGRhdGEtPnBvd2VyLCBzaXplb2YoKnBkYXRhLT5wb3dlciksIGZh bHNlLAo+IC0JCQkJICAwLCAwKTsKPiAtCQlpZiAoSVNfRVJSKGNoaWxkKSkKPiAtCQkJcmV0dXJu IFBUUl9FUlIoY2hpbGQpOwo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC0vKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLwo+IC0KPiAgLyoKPiAgICogVGhlc2UgdGhyZWUgZnVuY3Rpb25zIGluaXRp YWxpemUgdGhlIG9uLWNoaXAgY2xvY2sgZnJhbWV3b3JrLAo+ICAgKiBsZXR0aW5nIGl0IGdlbmVy YXRlIHRoZSByaWdodCBmcmVxdWVuY2llcyBmb3IgVVNCLCBNQURDLCBhbmQKPiBAQCAtMTAwMCw4 ICs2MzMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBfX2luaXQgdW5wcm90ZWN0X3BtX21hc3Rlcih2 b2lkKQo+ICAJcmV0dXJuIGU7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGNsb2Nrc19pbml0KHN0 cnVjdCBkZXZpY2UgKmRldiwKPiAtCQkJc3RydWN0IHR3bDQwMzBfY2xvY2tfaW5pdF9kYXRhICpj bG9jaykKPiArc3RhdGljIHZvaWQgY2xvY2tzX2luaXQoc3RydWN0IGRldmljZSAqZGV2KQo+ICB7 Cj4gIAlpbnQgZSA9IDA7Cj4gIAlzdHJ1Y3QgY2xrICpvc2M7Cj4gQEAgLTEwMzEsOCArNjYzLDYg QEAgc3RhdGljIHZvaWQgY2xvY2tzX2luaXQoc3RydWN0IGRldmljZSAqZGV2LAo+ICAJfQo+ICAK PiAgCWN0cmwgfD0gSElHSF9QRVJGX1NROwo+IC0JaWYgKGNsb2NrICYmIGNsb2NrLT5jazMya19s b3dwd3JfZW5hYmxlKQo+IC0JCWN0cmwgfD0gQ0szMktfTE9XUFdSX0VOOwo+ICAKPiAgCWUgfD0g dW5wcm90ZWN0X3BtX21hc3RlcigpOwo+ICAJLyogZWZmZWN0LT5NQURDK1VTQiBjayBlbiAqLwo+ IEBAIC0xMDgwLDcgKzcxMCw2IEBAIHN0YXRpYyBzdHJ1Y3Qgb2ZfZGV2X2F1eGRhdGEgdHdsX2F1 eGRhdGFfbG9va3VwW10gPSB7Cj4gIHN0YXRpYyBpbnQKPiAgdHdsX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQsIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiAgewo+IC0J c3RydWN0IHR3bDQwMzBfcGxhdGZvcm1fZGF0YQkqcGRhdGEgPSBkZXZfZ2V0X3BsYXRkYXRhKCZj bGllbnQtPmRldik7Cj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUJCSpub2RlID0gY2xpZW50LT5kZXYu b2Zfbm9kZTsKPiAgCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UJCSpwZGV2Owo+ICAJY29uc3Qgc3Ry dWN0IHJlZ21hcF9jb25maWcJKnR3bF9yZWdtYXBfY29uZmlnOwo+IEBAIC0xMDg4LDggKzcxNyw4 IEBAIHR3bF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBjb25zdCBzdHJ1Y3QgaTJj X2RldmljZV9pZCAqaWQpCj4gIAlpbnQJCQkJc3RhdHVzOwo+ICAJdW5zaWduZWQJCQlpLCBudW1f c2xhdmVzOwo+ICAKPiAtCWlmICghbm9kZSAmJiAhcGRhdGEpIHsKPiAtCQlkZXZfZXJyKCZjbGll bnQtPmRldiwgIm5vIHBsYXRmb3JtIGRhdGFcbiIpOwo+ICsJaWYgKCFub2RlKSB7Cj4gKwkJZGV2 X2VycigmY2xpZW50LT5kZXYsICJubyBEVCBpbmZvXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiAgCj4gQEAgLTExNzcsNyArODA2LDcgQEAgdHdsX3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQsIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiAgCXR3bF9wcml2 LT5yZWFkeSA9IHRydWU7Cj4gIAo+ICAJLyogc2V0dXAgY2xvY2sgZnJhbWV3b3JrICovCj4gLQlj bG9ja3NfaW5pdCgmcGRldi0+ZGV2LCBwZGF0YSA/IHBkYXRhLT5jbG9jayA6IE5VTEwpOwo+ICsJ Y2xvY2tzX2luaXQoJnBkZXYtPmRldik7Cj4gIAo+ICAJLyogcmVhZCBUV0wgSURDT0RFIFJlZ2lz dGVyICovCj4gIAlpZiAodHdsX2NsYXNzX2lzXzQwMzAoKSkgewo+IEBAIC0xMjI1LDE0ICs4NTQs OCBAQCB0d2xfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgKmlkKQo+ICAJCQkJIFRXTDQwMzBfRENEQ19HTE9CQUxfQ0ZHKTsKPiAgCX0K PiAgCj4gLQlpZiAobm9kZSkgewo+IC0JCWlmIChwZGF0YSkKPiAtCQkJdHdsX2F1eGRhdGFfbG9v a3VwWzBdLnBsYXRmb3JtX2RhdGEgPSBwZGF0YS0+Z3BpbzsKPiAtCQlzdGF0dXMgPSBvZl9wbGF0 Zm9ybV9wb3B1bGF0ZShub2RlLCBOVUxMLCB0d2xfYXV4ZGF0YV9sb29rdXAsCj4gLQkJCQkJICAg ICAgJmNsaWVudC0+ZGV2KTsKPiAtCX0gZWxzZSB7Cj4gLQkJc3RhdHVzID0gYWRkX2NoaWxkcmVu KHBkYXRhLCBpcnFfYmFzZSwgaWQtPmRyaXZlcl9kYXRhKTsKPiAtCX0KPiArCXN0YXR1cyA9IG9m X3BsYXRmb3JtX3BvcHVsYXRlKG5vZGUsIE5VTEwsIHR3bF9hdXhkYXRhX2xvb2t1cCwKPiArCQkJ CQkmY2xpZW50LT5kZXYpOwo+ICAKPiAgZmFpbDoKPiAgCWlmIChzdGF0dXMgPCAwKQoKLS0gCkxl ZSBKb25lcwpMaW5hcm8gU1RNaWNyb2VsZWN0cm9uaWNzIExhbmRpbmcgVGVhbSBMZWFkCkxpbmFy by5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29DcwpGb2xsb3cgTGluYXJv OiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==