From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robin Murphy Subject: Re: [PATCH 1/2 v3] drm/pl111: Support the Versatile Express Date: Wed, 18 Apr 2018 13:48:54 +0100 Message-ID: <55427808-5ebc-e9b3-827a-b61622878a4e@arm.com> References: <20180418085242.19525-1-linus.walleij@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by gabe.freedesktop.org (Postfix) with ESMTP id 1A17C6E579 for ; Wed, 18 Apr 2018 12:48:58 +0000 (UTC) In-Reply-To: <20180418085242.19525-1-linus.walleij@linaro.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Linus Walleij , Daniel Vetter , Jani Nikula , Sean Paul , Eric Anholt , Liviu Dudau Cc: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, Pawel Moll List-Id: dri-devel@lists.freedesktop.org T24gMTgvMDQvMTggMDk6NTIsIExpbnVzIFdhbGxlaWogd3JvdGU6Cj4gVGhlIFZlcnNhdGlsZSBF eHByZXNzIHVzZXMgYSBzcGVjaWFsIGNvbmZpZ3VyYXRpb24gY29udHJvbGxlcgo+IGRlZXBseSBl bWJlZGRlZCBpbiB0aGUgc3lzdGVtIG1vdGhlcmJvYXJkIEZQR0EgdG8gbXVsdGlwbGV4IHRoZQo+ IHR3byB0byB0aHJlZSAoISkgZGlzcGxheSBjb250cm9sbGVyIGluc3RhbmNlcyBvdXQgdG8gdGhl IHNpbmdsZQo+IFNpSTkwMjIgYnJpZGdlLgo+IAo+IFNldCB1cCBhbiBleHRyYSBmaWxlIHdpdGgg dGhlIGxvZ2ljIHRvIHByb2JlIHRvIHRoZSBGUEdBIG11eAo+IHJlZ2lzdGVyIG9uIHRoZSBzeXN0 ZW0gY29udHJvbGxlciBidXMsIHRoZW4gcGFyc2UgdGhlIGRldmljZQo+IHRyZWUgdG8gc2VlIGlm IHRoZXJlIGlzIGEgQ0xDRCBvciBIRExDRCBpbnN0YW5jZSBvbiB0aGUgY29yZQo+IHRpbGUgKGFs c28ga25vd24gYXMgdGhlIGRhdWdodGVyYm9hcmQpIGJ5IGxvb2tpbmcgaW4gdGhlCj4gcm9vdCBv ZiB0aGUgZGV2aWNlIHRyZWUgZm9yIGNvbXBhdGlibGUgbm9kZXMuCj4gCj4gLSBJZiB0aGVyZSBp cyBhIEhETENEIG9uIHRoZSBjb3JlIHRpbGUsIGFuZCB0aGVyZSBpcyBhIGRyaXZlcgo+ICAgIGZv ciBpdCwgd2UgZXhpdCBwcm9iZSBhbmQgZGVhY3RpdmF0ZSB0aGUgbW90aGVyYm9hcmQgQ0xDRC4K PiAgICBXZSBkbyBub3QgdG91Y2ggdGhlIERWSSBtdXggaW4gdGhpcyBjYXNlLCB0byBtYWtlIHN1 cmUgd2UKPiAgICBkb24ndCBicmVhayBIRExDRC4KPiAKPiAtIElmIHRoZXJlIGlzIGEgQ0xDRCBv biBib3RoIHRoZSBtb3RoZXJib2FyZCBhbmQgdGhlIGNvcmUgdGlsZQo+ICAgIChvbmx5IHRoZSBD QTkgaGFzIHRoaXMpIHRoZSBjb3JlIHRpbGUgQ0xDRCB0YWtlcyBwcmVjZWRlbmNlCj4gICAgYW5k IGdldCBtdXhlZCB0byB0aGUgRFZJIGNvbm5lY3Rvci4KPiAKPiAtIE9ubHkgaWYgdGhlcmUgaXMg bm8gd29ya2luZyBncmFwaGljcyBvbiB0aGUgY29yZSB0aWxlLCB0aGUKPiAgICBtb3RoZXJib2Fy ZCBDTENEIGlzIHByb2JlZCBhbmQgbXV4ZWQgdG8gdGhlIERWSSBjb25uZWN0b3IuCgpUaGlzIGFw cHJvYWNoIHNlZW1zIHJlYXNvbmFibGUgKG1vZHVsbyBhIGNvdXBsZSBvZiBuaXRzIGJlbG93KSwg YW5kIAphbG1vc3QgY2VydGFpbmx5IHN1ZmZpY2llbnQgZm9yIG1vc3QgcmVhbGlzdGljIHVzZXMs IGJ1dCBJIGNhbid0IGhlbHAgCndvbmRlcmluZyB3aGV0aGVyIGl0IG1pZ2h0IGJlIGZlYXNpYmxl IHRvIG1vZGVsIHRoZSBtdXggd2l0aCBpdHMgb3duIApzZXBhcmF0ZSBjb25uZWN0b3IvYnJpZGdl IGRyaXZlciB3aGljaCBjb3VsZCBoYW5kbGUgcHJpb3JpdGlzYXRpb24gb2YgCm11bHRpcGxlIGlu cHV0cyBpdHNlbGYgKEknbSBwb25kZXJpbmcgdGhpbmdzIGxpa2UgUkszMjg4L1JLMzM5OSB3aGVy ZSAKdGhlIHR3byBWT1BzIGZlZWRpbmcgaW50byB0aGUgc2luZ2xlIEhETUkgYmxvY2sgbG9va3Mg YSBmYWlyIGJpdCBsaWtlIAp0aGUgVjJQLUNBOSBzaXR1YXRpb24gaWYgeW91IHNxdWludCBhdCBp dCkuCgo+IENvcmUgdGlsZSBncmFwaGljcyBzaG91bGQgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSBh cyBpdCBjYW4KPiBhZGRyZXNzIGFsbCBtZW1vcnkgYW5kIGlzIGFsc28gZmFzdGVyLCBob3dldmVy IHRoZSBtb3RoZXJib2FyZAo+IENMQ0QgaXMgZ29vZCB0byBoYXZlIGFyb3VuZCBmb3IgZGlhZ25v c3RpY3MgYW5kIHRlc3RpbmcuCj4gCj4gSXQgaXMgcG9zc2libGUgdG8gdGVzdCB0aGUgbW90aGVy Ym9hcmQgQ0xDRCBieSBzZXR0aW5nIHRoZQo+IHN0YXR1cyA9ICJkaXNhYmxlZCIgcHJvcGVydHkg b24gdGhlIGNvcmUgdGlsZSBDTENEIG9yCj4gSERMQ0QuCj4gCj4gU2NhbGUgZG93biB0aGUgVmVy c2F0aWxlIEV4cHJlc3MgdG8gMTZCUFAgc28gd2UgY2FuIHN1cHBvcnQgYQo+IDEwMjR4NzY4IGRp c3BsYXkgZGVzcGl0ZSB0aGUgYnVzIGJhbmR3aWR0aCByZXN0cmljdGlvbnMgb24gdGhpcwo+IHBs YXRmb3JtLiAoVGhlIG1vdGhlcmJvYXJkIENMQ0Qgc3VwcG9ydHMgc2xpZ2h0bHkgbG93ZXIKPiBy ZXNvbHV0aW9uLikKPiAKPiBDYzogTGl2aXUgRHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+Cj4g Q2M6IFBhd2VsIE1vbGwgPHBhd2VsLm1vbGxAYXJtLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBMaW51 cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+Cj4gLS0tCj4gQ2hhbmdlTG9nIHYy LT52MzoKPiAtIFJld3JpdGUgQ0xDRCBkZXRlY3Rpb24gYW5kIG11eCBwcmlvcml0eSBsb2dpYywg bG9vayBpbgo+ICAgIHRoZSBkZXZpY2UgdHJlZSByb290IGZvciBjb3JlIHRpbGUgZ3JhcGhpY3Mu Cj4gQ2hhbmdlTG9nIHYxLT52MjoKPiAtIE5vIGNoYW5nZXMganVzdCByZXBvc3RpbmcgcmViYXNl ZCBvbiBtYWlubGluZSBjaGFuZ2VzLgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL3BsMTExL01h a2VmaWxlICAgICAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV92 ZXJzYXRpbGUuYyB8ICA0OCArKysrKysrKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9wbDExMS9w bDExMV92ZXhwcmVzcy5jICB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ICAgZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZleHByZXNzLmggIHwgIDIyICsrKysrKwo+ ICAgNCBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV92ZXhwcmVzcy5j Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZleHBy ZXNzLmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL3BsMTExL01ha2VmaWxlCj4gaW5kZXggOWM1ZThkYmE4YWM2Li4xOWE4 MTg5ZGM1NGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL01ha2VmaWxlCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL01ha2VmaWxlCj4gQEAgLTMsNiArMyw3IEBAIHBs MTExX2RybS15ICs9CXBsMTExX2Rpc3BsYXkubyBcCj4gICAJCXBsMTExX3ZlcnNhdGlsZS5vIFwK PiAgIAkJcGwxMTFfZHJ2Lm8KPiAgIAo+ICtwbDExMV9kcm0tJChDT05GSUdfQVJDSF9WRVhQUkVT UykgKz0gcGwxMTFfdmV4cHJlc3Mubwo+ICAgcGwxMTFfZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSAr PSBwbDExMV9kZWJ1Z2ZzLm8KPiAgIAo+ICAgb2JqLSQoQ09ORklHX0RSTV9QTDExMSkgKz0gcGwx MTFfZHJtLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZlcnNh dGlsZS5jIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZlcnNhdGlsZS5jCj4gaW5kZXgg OTMwMmY1MTYwNDVlLi41NjllZGYwMmEzNmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3BsMTExL3BsMTExX3ZlcnNhdGlsZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3Bs MTExX3ZlcnNhdGlsZS5jCj4gQEAgLTEsMTIgKzEsMTQgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9h bWJhL2NsY2QtcmVncy5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICAgI2luY2x1 ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgo+ICAgI2lu Y2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4K PiAgICNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KPiAgICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAgI2luY2x1ZGUgInBsMTExX3ZlcnNhdGls ZS5oIgo+ICsjaW5jbHVkZSAicGwxMTFfdmV4cHJlc3MuaCIKPiAgICNpbmNsdWRlICJwbDExMV9k cm0uaCIKPiAgIAo+ICAgc3RhdGljIHN0cnVjdCByZWdtYXAgKnZlcnNhdGlsZV9zeXNjb25fbWFw Owo+IEBAIC0yMiw2ICsyNCw3IEBAIGVudW0gdmVyc2F0aWxlX2NsY2Qgewo+ICAgCVJFQUxWSUVX X0NMQ0RfUEIxMU1QLAo+ICAgCVJFQUxWSUVXX0NMQ0RfUEJBOCwKPiAgIAlSRUFMVklFV19DTENE X1BCWCwKPiArCVZFWFBSRVNTX0NMQ0RfVjJNLAo+ICAgfTsKPiAgIAo+ICAgc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgdmVyc2F0aWxlX2NsY2Rfb2ZfbWF0Y2hbXSA9IHsKPiBAQCAt NTMsNiArNTYsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdmVyc2F0aWxl X2NsY2Rfb2ZfbWF0Y2hbXSA9IHsKPiAgIAkJLmNvbXBhdGlibGUgPSAiYXJtLHJlYWx2aWV3LXBi eC1zeXNjb24iLAo+ICAgCQkuZGF0YSA9ICh2b2lkICopUkVBTFZJRVdfQ0xDRF9QQlgsCj4gICAJ fSwKPiArCXsKPiArCQkuY29tcGF0aWJsZSA9ICJhcm0sdmV4cHJlc3MtbXV4ZnBnYSIsCj4gKwkJ LmRhdGEgPSAodm9pZCAqKVZFWFBSRVNTX0NMQ0RfVjJNLAo+ICsJfSwKPiAgIAl7fSwKPiAgIH07 Cj4gICAKPiBAQCAtMjg2LDEyICsyOTMsMjYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwbDExMV92 YXJpYW50X2RhdGEgcGwxMTFfcmVhbHZpZXcgPSB7Cj4gICAJLmZiX2JwcCA9IDE2LAo+ICAgfTsK PiAgIAo+ICsvKgo+ICsgKiBWZXJzYXRpbGUgRXhwcmVzcyBQTDExMSB2YXJpYW50LCBhZ2FpbiB3 ZSBqdXN0IHB1c2ggdGhlIG1heGltdW0KPiArICogQlBQIHRvIDE2IHRvIGJlIGFibGUgdG8gZ2V0 IDEwMjR4NzY4IHdpdGhvdXQgc2F0dXJhdGluZyB0aGUgbWVtb3J5Cj4gKyAqIGJ1cy4gVGhlIGNs b2NrZGl2aWRlciBhbHNvIHNlZW1zIGJyb2tlbiBvbiB0aGUgVmVyc2F0aWxlIEV4cHJlc3MuCj4g KyAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBsMTExX3ZhcmlhbnRfZGF0YSBwbDExMV92ZXhw cmVzcyA9IHsKPiArCS5uYW1lID0gIlBMMTExIFZlcnNhdGlsZSBFeHByZXNzIiwKPiArCS5mb3Jt YXRzID0gcGwxMTFfcmVhbHZpZXdfcGl4ZWxfZm9ybWF0cywKPiArCS5uZm9ybWF0cyA9IEFSUkFZ X1NJWkUocGwxMTFfcmVhbHZpZXdfcGl4ZWxfZm9ybWF0cyksCj4gKwkuZmJfYnBwID0gMTYsCj4g KwkuYnJva2VuX2Nsb2NrZGl2aWRlciA9IHRydWUsCj4gK307Cj4gKwo+ICAgaW50IHBsMTExX3Zl cnNhdGlsZV9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsMTExX2RybV9kZXZfcHJp dmF0ZSAqcHJpdikKPiAgIHsKPiAgIAljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpjbGNkX2lk Owo+ICAgCWVudW0gdmVyc2F0aWxlX2NsY2QgdmVyc2F0aWxlX2NsY2RfdHlwZTsKPiAgIAlzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wOwo+ICAgCXN0cnVjdCByZWdtYXAgKm1hcDsKPiArCWludCByZXQ7 Cj4gICAKPiAgIAlucCA9IG9mX2ZpbmRfbWF0Y2hpbmdfbm9kZV9hbmRfbWF0Y2goTlVMTCwgdmVy c2F0aWxlX2NsY2Rfb2ZfbWF0Y2gsCj4gICAJCQkJCSAgICAgJmNsY2RfaWQpOwo+IEBAIC0zMDEs NyArMzIyLDI1IEBAIGludCBwbDExMV92ZXJzYXRpbGVfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBwbDExMV9kcm1fZGV2X3ByaXZhdGUgKnByaXYpCj4gICAJfQo+ICAgCXZlcnNhdGls ZV9jbGNkX3R5cGUgPSAoZW51bSB2ZXJzYXRpbGVfY2xjZCljbGNkX2lkLT5kYXRhOwo+ICAgCj4g LQltYXAgPSBzeXNjb25fbm9kZV90b19yZWdtYXAobnApOwo+ICsJLyogVmVyc2F0aWxlIEV4cHJl c3Mgc3BlY2lhbCBoYW5kbGluZyAqLwo+ICsJaWYgKHZlcnNhdGlsZV9jbGNkX3R5cGUgPT0gVkVY UFJFU1NfQ0xDRF9WMk0pIHsKPiArCQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2Owo+ICsK PiArCQkvKiBDYWxsIGludG8gZGVlcCBWZXhwcmVzcyBjb25maWd1cmF0aW9uIEFQSSAqLwo+ICsJ CXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKG5wKTsKClN0cmljdGx5LCB5b3Ugc2hvdWxk IGhhdmUgYSBwbGF0Zm9ybV9kZXZpY2VfcHV0KHBkZXYpIGhlcmUuCgo+ICsJCWlmICghcGRldikg ewo+ICsJCQlkZXZfZXJyKGRldiwgImNhbid0IGZpbmQgdGhlIHN5c3JlZyBkZXZpY2UsIGRlZmVy cmluZ1xuIik7Cj4gKwkJCXJldHVybiAtRVBST0JFX0RFRkVSOwo+ICsJCX0KPiArCQltYXAgPSBk ZXZfZ2V0X2RydmRhdGEoJnBkZXYtPmRldik7Cj4gKwkJaWYgKCFtYXApIHsKPiArCQkJZGV2X2Vy cihkZXYsICJzeXNyZWcgaGFzIG5vdCB5ZXQgcHJvYmVkXG4iKTsKPiArCQkJcmV0dXJuIC1FUFJP QkVfREVGRVI7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQltYXAgPSBzeXNjb25fbm9kZV90b19y ZWdtYXAobnApOwo+ICsJfQo+ICsKPiAgIAlpZiAoSVNfRVJSKG1hcCkpIHsKPiAgIAkJZGV2X2Vy cihkZXYsICJubyBWZXJzYXRpbGUgc3lzY29uIHJlZ21hcFxuIik7Cj4gICAJCXJldHVybiBQVFJf RVJSKG1hcCk7Cj4gQEAgLTM0MCw2ICszNzksMTMgQEAgaW50IHBsMTExX3ZlcnNhdGlsZV9pbml0 KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsMTExX2RybV9kZXZfcHJpdmF0ZSAqcHJpdikK PiAgIAkJcHJpdi0+dmFyaWFudF9kaXNwbGF5X2Rpc2FibGUgPSBwbDExMV9yZWFsdmlld19jbGNk X2Rpc2FibGU7Cj4gICAJCWRldl9pbmZvKGRldiwgInNldCB1cCBjYWxsYmFja3MgZm9yIFJlYWxW aWV3IFBMMTExXG4iKTsKPiAgIAkJYnJlYWs7Cj4gKwljYXNlIFZFWFBSRVNTX0NMQ0RfVjJNOgo+ ICsJCXByaXYtPnZhcmlhbnQgPSAmcGwxMTFfdmV4cHJlc3M7Cj4gKwkJZGV2X2luZm8oZGV2LCAi aW5pdGlhbGl6aW5nIFZlcnNhdGlsZSBFeHByZXNzIFBMMTExXG4iKTsKPiArCQlyZXQgPSBwbDEx MV92ZXhwcmVzc19jbGNkX2luaXQoZGV2LCBwcml2LCBtYXApOwo+ICsJCWlmIChyZXQpCj4gKwkJ CXJldHVybiByZXQ7Cj4gKwkJYnJlYWs7Cj4gICAJZGVmYXVsdDoKPiAgIAkJZGV2X2luZm8oZGV2 LCAidW5rbm93biBWZXJzYXRpbGUgc3lzdGVtIGNvbnRyb2xsZXJcbiIpOwo+ICAgCQlicmVhazsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZleHByZXNzLmMgYi9k cml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfdmV4cHJlc3MuYwo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi41NjkwODAyNzY1OWYKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZleHByZXNzLmMKPiBAQCAtMCwwICsx LDEyNyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsg KiBWZXJzYXRpbGUgRXhwcmVzcyBQTDExMSBoYW5kbGluZwo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTggTGludXMgV2FsbGVpago+ICsgKgo+ICsgKiBUaGlzIG1vZHVsZSBiaW5kcyB0byB0aGUgImFy bSx2ZXhwcmVzcy1tdXhmcGdhIiBkZXZpY2Ugb24gdGhlCj4gKyAqIFZlcnNhdGlsZSBFeHByZXNz IGNvbmZpZ3VyYXRpb24gYnVzIGFuZCBzZXRzIHVwIHdoaWNoIENMQ0QgaW5zdGFuY2UKPiArICog Z2V0cyBtdXhlZCBvdXQgb24gdGhlIERWSSBicmlkZ2UuCj4gKyAqLwo+ICsjaW5jbHVkZSA8bGlu dXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxp bnV4L3JlZ21hcC5oPgo+ICsjaW5jbHVkZSA8bGludXgvdmV4cHJlc3MuaD4KPiArI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3Jt Lmg+Cj4gKyNpbmNsdWRlICJwbDExMV9kcm0uaCIKPiArI2luY2x1ZGUgInBsMTExX3ZleHByZXNz LmgiCj4gKwo+ICsjZGVmaW5lIFZFWFBSRVNTX0ZQR0FNVVhfTU9USEVSQk9BUkQJCTB4MDAKPiAr I2RlZmluZSBWRVhQUkVTU19GUEdBTVVYX0RBVUdIVEVSQk9BUkRfMQkweDAxCj4gKyNkZWZpbmUg VkVYUFJFU1NfRlBHQU1VWF9EQVVHSFRFUkJPQVJEXzIJMHgwMgo+ICsKPiAraW50IHBsMTExX3Zl eHByZXNzX2NsY2RfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgc3RydWN0IHBs MTExX2RybV9kZXZfcHJpdmF0ZSAqcHJpdiwKPiArCQkJICAgICBzdHJ1Y3QgcmVnbWFwICptYXAp Cj4gK3sKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcm9vdDsKPiArCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqY2hpbGQ7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmN0X2NsY2QgPSBOVUxMOwo+ICsJYm9v bCBoYXNfY29yZXRpbGVfY2xjZCA9IGZhbHNlOwo+ICsJYm9vbCBoYXNfY29yZXRpbGVfaGRsY2Qg PSBmYWxzZTsKPiArCWJvb2wgbXV4X21vdGhlcmJvYXJkID0gdHJ1ZTsKPiArCXUzMiB2YWw7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBDaGVjayBpZiB3ZSBoYXZlIGEgQ0xDRCBvciBI RExDRCBvbiB0aGUgY29yZSB0aWxlIGJ5IGNoZWNraW5nIGlmIGEKPiArCSAqIENMQ0Qgb3IgSERM Q0QgaXMgYXZhaWxhYmxlIGluIHRoZSByb290IG9mIHRoZSBkZXZpY2UgdHJlZS4KPiArCSAqLwo+ ICsJcm9vdCA9IG9mX2ZpbmRfbm9kZV9ieV9wYXRoKCIvIik7Cj4gKwlpZiAoIXJvb3QpCj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShyb290LCBjaGls ZCkgewoKZm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGUoKT8KClJvYmluLgoKPiArCQlp ZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoY2hpbGQsICJhcm0scGwxMTEiKQo+ICsJCSAgICAm JiBvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKGNoaWxkKSkgewo+ICsJCQloYXNfY29yZXRpbGVfY2xj ZCA9IHRydWU7Cj4gKwkJCWN0X2NsY2QgPSBjaGlsZDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJ CWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShjaGlsZCwgImFybSxoZGxjZCIpCj4gKwkJICAg ICYmIG9mX2RldmljZV9pc19hdmFpbGFibGUoY2hpbGQpKSB7Cj4gKwkJCWhhc19jb3JldGlsZV9o ZGxjZCA9IHRydWU7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwkvKgo+ICsJICog SWYgdGhlcmUgaXMgYSBjb3JldGlsZSBIRExDRCBhbmQgaXQgaGFzIGEgZHJpdmVyLAo+ICsJICog ZG8gbm90IG11eCB0aGUgQ0xDRCBvbiB0aGUgbW90aGVyYm9hcmQgdG8gdGhlIERWSS4KPiArCSAq Lwo+ICsJaWYgKGhhc19jb3JldGlsZV9oZGxjZCAmJiBJU19FTkFCTEVEKENPTkZJR19EUk1fSERM Q0QpKQo+ICsJCW11eF9tb3RoZXJib2FyZCA9IGZhbHNlOwo+ICsKPiArCS8qCj4gKwkgKiBPbiB0 aGUgVmV4cHJlc3MgQ0E5IHdlIGxldCB0aGUgQ0xDRCBvbiB0aGUgY29yZXRpbGUKPiArCSAqIHRh a2UgcHJlY2VkZW5jZSwgc28gYWxzbyBpbiB0aGlzIGNhc2UgZG8gbm90IG11eCB0aGUKPiArCSAq IG1vdGhlcmJvYXJkIHRvIHRoZSBEVkkuCj4gKwkgKi8KPiArCWlmIChoYXNfY29yZXRpbGVfY2xj ZCkKPiArCQltdXhfbW90aGVyYm9hcmQgPSBmYWxzZTsKPiArCj4gKwlpZiAobXV4X21vdGhlcmJv YXJkKSB7Cj4gKwkJZGV2X2luZm8oZGV2LCAiRFZJIG11eGVkIHRvIG1vdGhlcmJvYXJkIENMQ0Rc biIpOwo+ICsJCXZhbCA9IFZFWFBSRVNTX0ZQR0FNVVhfTU9USEVSQk9BUkQ7Cj4gKwl9IGVsc2Ug aWYgKGN0X2NsY2QgPT0gZGV2LT5vZl9ub2RlKSB7Cj4gKwkJZGV2X2luZm8oZGV2LAo+ICsJCQkg IkRWSSBtdXhlZCB0byBkYXVnaHRlcmJvYXJkIDEgKGNvcmUgdGlsZSkgQ0xDRFxuIik7Cj4gKwkJ dmFsID0gVkVYUFJFU1NfRlBHQU1VWF9EQVVHSFRFUkJPQVJEXzE7Cj4gKwl9IGVsc2Ugewo+ICsJ CWRldl9pbmZvKGRldiwgImNvcmUgdGlsZSBncmFwaGljcyBwcmVzZW50XG4iKTsKPiArCQlkZXZf aW5mbyhkZXYsICJ0aGlzIGRldmljZSB3aWxsIGJlIGRlYWN0aXZhdGVkXG4iKTsKPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiArCX0KPiArCj4gKwlyZXQgPSByZWdtYXBfd3JpdGUobWFwLCAwLCB2YWwp Owo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiZXJyb3Igc2V0dGluZyBEVkkgbXV4 bW9kZVxuIik7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gKy8qCj4gKyAqIFRoaXMgc2V0cyB1cCB0aGUgcmVnbWFwIHBvaW50ZXIgdGhhdCB3 aWxsIHRoZW4gYmUgcmV0cmlldmVkIGJ5Cj4gKyAqIHRoZSBkZXRlY3Rpb24gY29kZSBpbiBwbDEx MV92ZXJzYXRpbGUuYyBhbmQgcGFzc2VkIGluIHRvIHRoZQo+ICsgKiBwbDExMV92ZXhwcmVzc19j bGNkX2luaXQoKSBmdW5jdGlvbiBhYm92ZS4KPiArICovCj4gK3N0YXRpYyBpbnQgdmV4cHJlc3Nf bXV4ZnBnYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ICsJc3RydWN0IHJlZ21hcCAqbWFwOwo+ICsK PiArCW1hcCA9IGRldm1fcmVnbWFwX2luaXRfdmV4cHJlc3NfY29uZmlnKCZwZGV2LT5kZXYpOwo+ ICsJaWYgKElTX0VSUihtYXApKQo+ICsJCXJldHVybiBQVFJfRVJSKG1hcCk7Cj4gKwlkZXZfc2V0 X2RydmRhdGEoZGV2LCBtYXApOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB2ZXhwcmVzc19tdXhmcGdhX21hdGNoW10gPSB7Cj4g Kwl7IC5jb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcy1tdXhmcGdhIiwgfQo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdmV4cHJlc3NfbXV4ZnBnYV9kcml2ZXIgPSB7 Cj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1lID0gInZleHByZXNzLW11eGZwZ2EiLAo+ICsJCS5v Zl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cih2ZXhwcmVzc19tdXhmcGdhX21hdGNoKSwKPiAr CX0sCj4gKwkucHJvYmUgPSB2ZXhwcmVzc19tdXhmcGdhX3Byb2JlLAo+ICt9Owo+ICsKPiArbW9k dWxlX3BsYXRmb3JtX2RyaXZlcih2ZXhwcmVzc19tdXhmcGdhX2RyaXZlcik7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV92ZXhwcmVzcy5oIGIvZHJpdmVycy9ncHUv ZHJtL3BsMTExL3BsMTExX3ZleHByZXNzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uNDk4NzY0MTdmN2I2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9wbDExMS9wbDExMV92ZXhwcmVzcy5oCj4gQEAgLTAsMCArMSwyMiBAQAo+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsKPiArc3RydWN0IGRldmljZTsK PiArc3RydWN0IHBsMTExX2RybV9kZXZfcHJpdmF0ZTsKPiArc3RydWN0IHJlZ21hcDsKPiArCj4g KyNpZmRlZiBDT05GSUdfQVJDSF9WRVhQUkVTUwo+ICsKPiAraW50IHBsMTExX3ZleHByZXNzX2Ns Y2RfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgc3RydWN0IHBsMTExX2RybV9k ZXZfcHJpdmF0ZSAqcHJpdiwKPiArCQkJICAgICBzdHJ1Y3QgcmVnbWFwICptYXApOwo+ICsKPiAr I2Vsc2UKPiArCj4gK3N0YXRpYyBpbnQgaW5saW5lIHBsMTExX3ZleHByZXNzX2NsY2RfaW5pdChz dHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkJICAgc3RydWN0IHBsMTExX2RybV9kZXZfcHJpdmF0 ZSAqcHJpdiwKPiArCQkJCQkgICBzdHJ1Y3QgcmVnbWFwICptYXApCj4gK3sKPiArCXJldHVybiAt RU5PREVWOwo+ICt9Cj4gKwo+ICsjZW5kaWYKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==