From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v6 3/8] drm: rcar-du: Add support for CMM Date: Thu, 17 Oct 2019 15:48:58 +0300 Message-ID: <20191017124858.GC4901@pendragon.ideasonboard.com> References: <20191016085548.105703-1-jacopo+renesas@jmondi.org> <20191016085548.105703-4-jacopo+renesas@jmondi.org> <20191016134526.GD5175@pendragon.ideasonboard.com> <20191017124349.ncay2wc75bwpcd7d@uno.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8B3DB6EA70 for ; Thu, 17 Oct 2019 12:49:05 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191017124349.ncay2wc75bwpcd7d@uno.localdomain> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jacopo Mondi Cc: horms@verge.net.au, airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, kieran.bingham+renesas@ideasonboard.com, geert@linux-m68k.org, Jacopo Mondi , uli+renesas@fpond.eu List-Id: dri-devel@lists.freedesktop.org SGkgSmFjb3BvLAoKT24gVGh1LCBPY3QgMTcsIDIwMTkgYXQgMDI6NDM6NDlQTSArMDIwMCwgSmFj b3BvIE1vbmRpIHdyb3RlOgo+IE9uIFdlZCwgT2N0IDE2LCAyMDE5IGF0IDA0OjQ1OjI2UE0gKzAz MDAsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiBPbiBXZWQsIE9jdCAxNiwgMjAxOSBhdCAx MDo1NTo0M0FNICswMjAwLCBKYWNvcG8gTW9uZGkgd3JvdGU6Cj4gPiA+IEFkZCBhIGRyaXZlciBm b3IgdGhlIFItQ2FyIERpc3BsYXkgVW5pdCBDb2xvciBDb3JyZWN0aW9uIE1vZHVsZS4KPiA+ID4K PiA+ID4gSW4gbW9zdCBvZiBHZW4zIFNvQ3MsIGVhY2ggRFUgb3V0cHV0IGNoYW5uZWwgaXMgcHJv dmlkZWQgd2l0aCBhIENNTSB1bml0Cj4gPiA+IHRvIHBlcmZvcm0gaW1hZ2UgZW5oYW5jZW1lbnQg YW5kIGNvbG9yIGNvcnJlY3Rpb24uCj4gPiA+Cj4gPiA+IEFkZCBzdXBwb3J0IGZvciBDTU0gdGhy b3VnaCBhIGRyaXZlciB0aGF0IHN1cHBvcnRzIGNvbmZpZ3VyYXRpb24gb2YKPiA+ID4gdGhlIDEt ZGltZW5zaW9uYWwgTFVUIHRhYmxlLiBNb3JlIGFkdmFuY2VkIENNTSBmZWF0dXJlcyB3aWxsIGJl Cj4gPiA+IGltcGxlbWVudGVkIG9uIHRvcCBvZiB0aGlzIGluaXRpYWwgb25lLgo+ID4gPgo+ID4g PiBSZXZpZXdlZC1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29u Ym9hcmQuY29tPgo+ID4gPiBSZXZpZXdlZC1ieTogS2llcmFuIEJpbmdoYW0gPGtpZXJhbi5iaW5n aGFtK3JlbmVzYXNAaWRlYXNvbmJvYXJkLmNvbT4KPiA+ID4gU2lnbmVkLW9mZi1ieTogSmFjb3Bv IE1vbmRpIDxqYWNvcG8rcmVuZXNhc0BqbW9uZGkub3JnPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZl cnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcgICAgfCAgIDcgKwo+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL3JjYXItZHUvTWFrZWZpbGUgICB8ICAgMSArCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vcmNh ci1kdS9yY2FyX2NtbS5jIHwgMjEyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ ICBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2NtbS5oIHwgIDU4ICsrKysrKysrCj4gPiA+ ICA0IGZpbGVzIGNoYW5nZWQsIDI3OCBpbnNlcnRpb25zKCspCj4gPiA+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9jbW0uYwo+ID4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfY21tLmgKPiA+ID4KPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcgYi9kcml2ZXJzL2dw dS9kcm0vcmNhci1kdS9LY29uZmlnCj4gPiA+IGluZGV4IDE1Mjk4NDllMjE3ZS4uNTM5ZDIzMjc5 MGQxIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9LY29uZmlnCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcKPiA+ID4gQEAgLTEzLDYg KzEzLDEzIEBAIGNvbmZpZyBEUk1fUkNBUl9EVQo+ID4gPiAgCSAgQ2hvb3NlIHRoaXMgb3B0aW9u IGlmIHlvdSBoYXZlIGFuIFItQ2FyIGNoaXBzZXQuCj4gPiA+ICAJICBJZiBNIGlzIHNlbGVjdGVk IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcmNhci1kdS1kcm0uCj4gPiA+Cj4gPiA+ICtjb25m aWcgRFJNX1JDQVJfQ01NCj4gPiA+ICsJYm9vbCAiUi1DYXIgRFUgQ29sb3IgTWFuYWdlbWVudCBN b2R1bGUgKENNTSkgU3VwcG9ydCIKPiA+ID4gKwlkZXBlbmRzIG9uIERSTSAmJiBPRgo+ID4gPiAr CWRlcGVuZHMgb24gRFJNX1JDQVJfRFUKPiA+ID4gKwloZWxwCj4gPiA+ICsJICBFbmFibGUgc3Vw cG9ydCBmb3IgUi1DYXIgQ29sb3IgTWFuYWdlbWVudCBNb2R1bGUgKENNTSkuCj4gPiA+ICsKPiA+ ID4gIGNvbmZpZyBEUk1fUkNBUl9EV19IRE1JCj4gPiA+ICAJdHJpc3RhdGUgIlItQ2FyIERVIEdl bjMgSERNSSBFbmNvZGVyIFN1cHBvcnQiCj4gPiA+ICAJZGVwZW5kcyBvbiBEUk0gJiYgT0YKPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL3JjYXItZHUvTWFrZWZpbGUKPiA+ID4gaW5kZXggNmMyZWQ5YzQ2NDY3Li40ZDEx ODdjY2MzZTUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L01ha2Vm aWxlCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L01ha2VmaWxlCj4gPiA+IEBA IC0xNSw2ICsxNSw3IEBAIHJjYXItZHUtZHJtLSQoQ09ORklHX0RSTV9SQ0FSX0xWRFMpCSs9IHJj YXJfZHVfb2YubyBcCj4gPiA+ICByY2FyLWR1LWRybS0kKENPTkZJR19EUk1fUkNBUl9WU1ApCSs9 IHJjYXJfZHVfdnNwLm8KPiA+ID4gIHJjYXItZHUtZHJtLSQoQ09ORklHX0RSTV9SQ0FSX1dSSVRF QkFDSykgKz0gcmNhcl9kdV93cml0ZWJhY2subwo+ID4gPgo+ID4gPiArb2JqLSQoQ09ORklHX0RS TV9SQ0FSX0NNTSkJCSs9IHJjYXJfY21tLm8KPiA+ID4gIG9iai0kKENPTkZJR19EUk1fUkNBUl9E VSkJCSs9IHJjYXItZHUtZHJtLm8KPiA+ID4gIG9iai0kKENPTkZJR19EUk1fUkNBUl9EV19IRE1J KQkJKz0gcmNhcl9kd19oZG1pLm8KPiA+ID4gIG9iai0kKENPTkZJR19EUk1fUkNBUl9MVkRTKQkJ Kz0gcmNhcl9sdmRzLm8KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1 L3JjYXJfY21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2NtbS5jCj4gPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNDE3MDYyNjIwOGNm Cj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUv cmNhcl9jbW0uYwo+ID4gPiBAQCAtMCwwICsxLDIxMiBAQAo+ID4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjArCj4gPiA+ICsvKgo+ID4gPiArICogcmNhcl9jbW0uYyAtLSBS LUNhciBEaXNwbGF5IFVuaXQgQ29sb3IgTWFuYWdlbWVudCBNb2R1bGUKPiA+ID4gKyAqCj4gPiA+ ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSmFjb3BvIE1vbmRpIDxqYWNvcG8rcmVuZXNhc0BqbW9u ZGkub3JnPgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ ID4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L29m Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gPiA+ICsjaW5j bHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9jb2xvcl9tZ210Lmg+Cj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlICJyY2FyX2NtbS5oIgo+ID4g PiArCj4gPiA+ICsjZGVmaW5lIENNMl9MVVRfQ1RSTAkJMHgwMDAwCj4gPiA+ICsjZGVmaW5lIENN Ml9MVVRfQ1RSTF9MVVRfRU4JQklUKDApCj4gPiA+ICsjZGVmaW5lIENNMl9MVVRfVEJMX0JBU0UJ MHgwNjAwCj4gPiA+ICsjZGVmaW5lIENNMl9MVVRfVEJMKF9faSkJKENNMl9MVVRfVEJMX0JBU0Ug KyAoX19pKSAqIDQpCj4gPiA+ICsKPiA+ID4gK3N0cnVjdCByY2FyX2NtbSB7Cj4gPiA+ICsJdm9p ZCBfX2lvbWVtICpiYXNlOwo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBAbHV0OgkJMUQt TFVUIHN0YXRlCj4gPiA+ICsJICogQGx1dC5lbmFibGVkOgkxRC1MVVQgZW5hYmxlZCBmbGFnCj4g PiA+ICsJICovCj4gPiA+ICsJc3RydWN0IHsKPiA+ID4gKwkJYm9vbCBlbmFibGVkOwo+ID4gPiAr CX0gbHV0Owo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIGlubGluZSBpbnQgcmNhcl9j bW1fcmVhZChzdHJ1Y3QgcmNhcl9jbW0gKnJjbW0sIHUzMiByZWcpCj4gPiA+ICt7Cj4gPiA+ICsJ cmV0dXJuIGlvcmVhZDMyKHJjbW0tPmJhc2UgKyByZWcpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgaW5saW5lIHZvaWQgcmNhcl9jbW1fd3JpdGUoc3RydWN0IHJjYXJfY21tICpyY21t LCB1MzIgcmVnLCB1MzIgZGF0YSkKPiA+ID4gK3sKPiA+ID4gKwlpb3dyaXRlMzIoZGF0YSwgcmNt bS0+YmFzZSArIHJlZyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiByY2Fy X2NtbV9sdXRfd3JpdGUoKSAtIFNjYWxlIHRoZSBEUk0gTFVUIHRhYmxlIGVudHJpZXMgdG8gaGFy ZHdhcmUgcHJlY2lzaW9uCj4gPiA+ICsgKgkJCSAgYW5kIHdyaXRlIHRvIHRoZSBDTU0gcmVnaXN0 ZXJzCj4gPiA+ICsgKiBAcmNtbTogUG9pbnRlciB0byB0aGUgQ01NIGRldmljZQo+ID4gPiArICog QGRybV9sdXQ6IFBvaW50ZXIgdG8gdGhlIERSTSBMVVQgdGFibGUKPiA+ID4gKyAqLwo+ID4gPiAr c3RhdGljIHZvaWQgcmNhcl9jbW1fbHV0X3dyaXRlKHN0cnVjdCByY2FyX2NtbSAqcmNtbSwKPiA+ ID4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZHJtX2x1dCkKPiA+ID4g K3sKPiA+ID4gKwl1bnNpZ25lZCBpbnQgaTsKPiA+ID4gKwo+ID4gPiArCWZvciAoaSA9IDA7IGkg PCBDTTJfTFVUX1NJWkU7ICsraSkgewo+ID4gPiArCQl1MzIgZW50cnkgPSBkcm1fY29sb3JfbHV0 X2V4dHJhY3QoZHJtX2x1dFtpXS5yZWQsIDgpIDw8IDE2Cj4gPiA+ICsJCQkgIHwgZHJtX2NvbG9y X2x1dF9leHRyYWN0KGRybV9sdXRbaV0uZ3JlZW4sIDgpIDw8IDgKPiA+ID4gKwkJCSAgfCBkcm1f Y29sb3JfbHV0X2V4dHJhY3QoZHJtX2x1dFtpXS5ibHVlLCA4KTsKPiA+ID4gKwo+ID4gPiArCQly Y2FyX2NtbV93cml0ZShyY21tLCBDTTJfTFVUX1RCTChpKSwgZW50cnkpOwo+ID4gPiArCX0KPiA+ ID4gK30KPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqIHJjYXJfY21tX3NldHVwKCkgLSBDb25m aWd1cmUgdGhlIENNTSB1bml0Cj4gPiA+ICsgKiBAcGRldjogVGhlIHBsYXRmb3JtIGRldmljZSBh c3NvY2lhdGVkIHdpdGggdGhlIENNTSBpbnN0YW5jZQo+ID4gPiArICogQGNvbmZpZzogVGhlIENN TSB1bml0IGNvbmZpZ3VyYXRpb24KPiA+ID4gKyAqCj4gPiA+ICsgKiBDb25maWd1cmUgdGhlIENN TSB1bml0IHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uIEN1cnJlbnRseSBlbmFibGluZywK PiA+ID4gKyAqIGRpc2FibGluZyBhbmQgcHJvZ3JhbW1pbmcgb2YgdGhlIDEtRCBMVVQgdW5pdCBp cyBzdXBwb3J0ZWQuCj4gPgo+ID4gRGlkIHlvdSBtaXNzIHRoZSBjb21tZW50IGluIHRoZSBwcmV2 aW91cyB2ZXJzaW9uIGFib3V0IGV4cGxhaW5pbmcgd2hlbgo+ID4gcmNhcl9jbW1fc2V0dXAoKSBj YW4gYmUgY2FsbGVkIChiYXNpY2FsbHkgcmVxdWlyaW5nIHRoZSBDTU0gdG8gYmUKPiA+IGVuYWJs ZWQpID8gSSBjYW4gZml4IHRoaXMgd2hlbiBhcHBseWluZyBpZiB5b3UgdGVsbCBtZSB3aGF0IEkg c2hvdWxkCj4gPiB3cml0ZS4KPiAKPiBObyBJIGRpZG4ndC4KPiAKPiBBcyB0aGUgRFUgaXMgdGhl IG9ubHkgdXNlciBvZiB0aGlzIGZ1bmN0aW9uLCBJIGRvbid0IGdldCB3aHkgd2Ugc2hvdWxkCj4g c3BlY2lmeSBoZXJlIHdoaWNoIGlzIHRoZSBvcmRlciBvZiB0aGUgY2FsbHMsIGFzIHRoZXkgYXJl IHBlcmZvcm1lZCBieQo+IHRoZSBjcmN0IGRyaXZlciBpbiB0aGUgcmlnaHQgb3JkZXIgYWxyZWFk eS4KCkkgdGhpbmsgaXQncyBpbXBvcnRhbnQgYXMgd2UncmUgZGVhbGluZyB3aXRoIHR3byBkaWZm ZXJlbnQgZHJpdmVycy4gV2l0aApwcm9wZXIgQVBJIGRvY3VtZW50YXRpb24gd29ya2luZyBvbiB0 aGUgRFUgZHJpdmVyIHdvbid0IHJlcXVpcmUgaGF2aW5nCmFjdGl2ZSBrbm93bGVkZ2Ugb2YgdGhl IENNTSBkcml2ZXIgZGVzaWduLCBhbmQgdmljZS12ZXJzYS4gT25seSB3aGVuCmNoYW5naW5nIEFQ SSBpbiBhIHdheSB0aGF0IHdvdWxkIGJyZWFrIHRoZSBjb250cmFjdCB3b3VsZCB3ZSBuZWVkIHRv CmNhcmVmdWxseSBzdHVkeSBib3RoIHNpZGVzLiBJdCdzIGVhc3kgdG9kYXksIHRoZSBkb2N1bWVu dGF0aW9uIGlzIGZvciBpbgphIGZldyBtb250aHMgd2hlbiB0aGlzIHdvbid0IGJlIGZyZXNoIGlu IHlvdXIgbWVtb3J5IGFueW1vcmUgOi0pCgo+IFBsZWFzZSBmZWVsIGZyZWUgdG8gYWRkIHdoYXRl dmVyIHlvdSBjb25zaWRlciBhcHByb3ByaWF0ZSB0byB0aGlzCj4gY29tbWVudCBzZWN0aW9uIHdo ZW4gYXBwbHlpbmcuCj4gCj4gPiA+ICsgKgo+ID4gPiArICogVE9ETzogQWRkIHN1cHBvcnQgZm9y IExVVCBkb3VibGUgYnVmZmVyIG9wZXJhdGlvbnMgdG8gYXZvaWQgdXBkYXRpbmcgdGhlCj4gPiA+ ICsgKiBMVVQgdGFibGUgZW50cmllcyB3aGlsZSBhIGZyYW1lIGlzIGJlaW5nIGRpc3BsYXllZC4K PiA+ID4gKyAqLwo+ID4gPiAraW50IHJjYXJfY21tX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsCj4gPiA+ICsJCSAgIGNvbnN0IHN0cnVjdCByY2FyX2NtbV9jb25maWcgKmNvbmZp ZykKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgcmNhcl9jbW0gKnJjbW0gPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsKPiA+ID4gKwo+ID4gPiArCS8qIERpc2FibGUgTFVUIGlmIG5vIHRhYmxl IGlzIHByb3ZpZGVkLiAqLwo+ID4gPiArCWlmICghY29uZmlnLT5sdXQudGFibGUpIHsKPiA+ID4g KwkJaWYgKHJjbW0tPmx1dC5lbmFibGVkKSB7Cj4gPiA+ICsJCQlyY2FyX2NtbV93cml0ZShyY21t LCBDTTJfTFVUX0NUUkwsIDApOwo+ID4gPiArCQkJcmNtbS0+bHV0LmVuYWJsZWQgPSBmYWxzZTsK PiA+ID4gKwkJfQo+ID4gPiArCj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+ID4gKwo+ ID4gPiArCS8qIEVuYWJsZSBMVVQgYW5kIHByb2dyYW0gdGhlIG5ldyBnYW1tYSB0YWJsZSB2YWx1 ZXMuICovCj4gPiA+ICsJaWYgKCFyY21tLT5sdXQuZW5hYmxlZCkgewo+ID4gPiArCQlyY2FyX2Nt bV93cml0ZShyY21tLCBDTTJfTFVUX0NUUkwsIENNMl9MVVRfQ1RSTF9MVVRfRU4pOwo+ID4gPiAr CQlyY21tLT5sdXQuZW5hYmxlZCA9IHRydWU7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmNh cl9jbW1fbHV0X3dyaXRlKHJjbW0sIGNvbmZpZy0+bHV0LnRhYmxlKTsKPiA+ID4gKwo+ID4gPiAr CXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocmNhcl9jbW1fc2V0 dXApOwo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICogcmNhcl9jbW1fZW5hYmxlKCkgLSBFbmFi bGUgdGhlIENNTSB1bml0Cj4gPiA+ICsgKiBAcGRldjogVGhlIHBsYXRmb3JtIGRldmljZSBhc3Nv Y2lhdGVkIHdpdGggdGhlIENNTSBpbnN0YW5jZQo+ID4gPiArICoKPiA+ID4gKyAqIFdoZW4gdGhl IG91dHB1dCBvZiB0aGUgY29ycmVzcG9uZGluZyBEVSBjaGFubmVsIGlzIHJvdXRlZCB0byB0aGUg Q01NIHVuaXQsCj4gPiA+ICsgKiB0aGUgdW5pdCBzaGFsbCBiZSBlbmFibGVkIGJlZm9yZSB0aGUg RFUgY2hhbm5lbCBpcyBzdGFydGVkLCBhbmQgcmVtYWluCj4gPiA+ICsgKiBlbmFibGVkIHVudGls IHRoZSBjaGFubmVsIGlzIHN0b3BwZWQuIFRoZSBDTU0gdW5pdCBzaGFsbCBiZSBkaXNhYmxlZCB3 aXRoCj4gPiA+ICsgKiByY2FyX2NtbV9kaXNhYmxlKCkuCj4gPiA+ICsgKgo+ID4gPiArICogQ2Fs bHMgdG8gcmNhcl9jbW1fZW5hYmxlKCkgYW5kIHJjYXJfY21tX2Rpc2FibGUoKSBhcmUgbm90IHJl ZmVyZW5jZS1jb3VudGVkLgo+ID4gPiArICogSXQgaXMgYW4gZXJyb3IgdG8gYXR0ZW1wdCB0byBl bmFibGUgYW4gYWxyZWFkeSBlbmFibGVkIENNTSB1bml0LCBvciB0bwo+ID4gPiArICogYXR0ZW1w dCB0byBkaXNhYmxlIGEgZGlzYWJsZWQgdW5pdC4KPiA+ID4gKyAqLwo+ID4gPiAraW50IHJjYXJf Y21tX2VuYWJsZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiArewo+ID4gPiAr CWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKCZwZGV2 LT5kZXYpOwo+ID4gPiArCWlmIChyZXQgPCAwKQo+ID4gPiArCQlyZXR1cm4gcmV0Owo+ID4gPiAr Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChyY2Fy X2NtbV9lbmFibGUpOwo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICogcmNhcl9jbW1fZGlzYWJs ZSgpIC0gRGlzYWJsZSB0aGUgQ01NIHVuaXQKPiA+ID4gKyAqIEBwZGV2OiBUaGUgcGxhdGZvcm0g ZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ01NIGluc3RhbmNlCj4gPiA+ICsgKgo+ID4gPiAr ICogU2VlIHJjYXJfY21tX2VuYWJsZSgpIGZvciB1c2FnZSBpbmZvcm1hdGlvbi4KPiA+ID4gKyAq Cj4gPiA+ICsgKiBEaXNhYmxpbmcgdGhlIENNTSB1bml0IGRpc2FibGUgYWxsIHRoZSBpbnRlcm5h bCBwcm9jZXNzaW5nIGJsb2Nrcy4gVGhlIENNTQo+ID4gPiArICogc3RhdGUgc2hhbGwgdGh1cyBi ZSByZXN0b3JlZCB3aXRoIHJjYXJfY21tX3NldHVwKCkgd2hlbiByZS1lbmFibGluZyB0aGUgQ01N Cj4gPiA+ICsgKiB1bml0IGFmdGVyIHRoZSBuZXh0IHJjYXJfY21tX2VuYWJsZSgpIGNhbGwuCj4g PiA+ICsgKi8KPiA+ID4gK3ZvaWQgcmNhcl9jbW1fZGlzYWJsZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCByY2FyX2NtbSAqcmNtbSA9IHBsYXRm b3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ID4gPiArCj4gPiA+ICsJcmNhcl9jbW1fd3JpdGUocmNt bSwgQ00yX0xVVF9DVFJMLCAwKTsKPiA+ID4gKwlyY21tLT5sdXQuZW5hYmxlZCA9IGZhbHNlOwo+ ID4gPiArCj4gPiA+ICsJcG1fcnVudGltZV9wdXQoJnBkZXYtPmRldik7Cj4gPiA+ICt9Cj4gPiA+ ICtFWFBPUlRfU1lNQk9MX0dQTChyY2FyX2NtbV9kaXNhYmxlKTsKPiA+ID4gKwo+ID4gPiArLyoK PiA+ID4gKyAqIHJjYXJfY21tX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIENNTSB1bml0Cj4gPiA+ ICsgKiBAcGRldjogVGhlIHBsYXRmb3JtIGRldmljZSBhc3NvY2lhdGVkIHdpdGggdGhlIENNTSBp bnN0YW5jZQo+ID4gPiArICoKPiA+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCAtRVBST0JF X0RFRkVSIGlmIHRoZSBDTU0gaXMgbm90IGF2YWlsYWJsZSB5ZXQsCj4gPiA+ICsgKiAgICAgICAg IC1FTk9ERVYgaWYgdGhlIERSTV9SQ0FSX0NNTSBjb25maWcgb3B0aW9uIGlzIGRpc2FibGVkCj4g PiA+ICsgKi8KPiA+ID4gK2ludCByY2FyX2NtbV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IHJjYXJfY21tICpyY21tID0gcGxhdGZvcm1f Z2V0X2RydmRhdGEocGRldik7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIXJjbW0pCj4gPiA+ICsJCXJl dHVybiAtRVBST0JFX0RFRkVSOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4g PiA+ICtFWFBPUlRfU1lNQk9MX0dQTChyY2FyX2NtbV9pbml0KTsKPiA+ID4gKwo+ID4gPiArc3Rh dGljIGludCByY2FyX2NtbV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4g PiArewo+ID4gPiArCXN0cnVjdCByY2FyX2NtbSAqcmNtbTsKPiA+ID4gKwo+ID4gPiArCXJjbW0g PSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpyY21tKSwgR0ZQX0tFUk5FTCk7Cj4g PiA+ICsJaWYgKCFyY21tKQo+ID4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ID4gKwlwbGF0Zm9y bV9zZXRfZHJ2ZGF0YShwZGV2LCByY21tKTsKPiA+ID4gKwo+ID4gPiArCXJjbW0tPmJhc2UgPSBk ZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7Cj4gPiA+ICsJaWYgKElTX0VS UihyY21tLT5iYXNlKSkKPiA+ID4gKwkJcmV0dXJuIFBUUl9FUlIocmNtbS0+YmFzZSk7Cj4gPiA+ ICsKPiA+ID4gKwlwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsKPiA+ID4gKwo+ID4gPiAr CXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IHJjYXJfY21tX3Jl bW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiArewo+ID4gPiArCXBtX3J1 bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiAwOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCByY2Fy X2NtbV9vZl90YWJsZVtdID0gewo+ID4gPiArCXsgLmNvbXBhdGlibGUgPSAicmVuZXNhcyxyY2Fy LWdlbjMtY21tIiwgfSwKPiA+ID4gKwl7IC5jb21wYXRpYmxlID0gInJlbmVzYXMscmNhci1nZW4y LWNtbSIsIH0sCj4gPiA+ICsJeyB9LAo+ID4gPiArfTsKPiA+ID4gK01PRFVMRV9ERVZJQ0VfVEFC TEUob2YsIHJjYXJfY21tX29mX3RhYmxlKTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgcmNhcl9jbW1fcGxhdGZvcm1fZHJpdmVyID0gewo+ID4gPiArCS5wcm9i ZQkJPSByY2FyX2NtbV9wcm9iZSwKPiA+ID4gKwkucmVtb3ZlCQk9IHJjYXJfY21tX3JlbW92ZSwK PiA+ID4gKwkuZHJpdmVyCQk9IHsKPiA+ID4gKwkJLm5hbWUJPSAicmNhci1jbW0iLAo+ID4gPiAr CQkub2ZfbWF0Y2hfdGFibGUgPSByY2FyX2NtbV9vZl90YWJsZSwKPiA+ID4gKwl9LAo+ID4gPiAr fTsKPiA+ID4gKwo+ID4gPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihyY2FyX2NtbV9wbGF0Zm9y bV9kcml2ZXIpOwo+ID4gPiArCj4gPiA+ICtNT0RVTEVfQVVUSE9SKCJKYWNvcG8gTW9uZGkgPGph Y29wbytyZW5lc2FzQGptb25kaS5vcmc+Iik7Cj4gPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlJl bmVzYXMgUi1DYXIgQ01NIERyaXZlciIpOwo+ID4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIp Owo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9jbW0uaCBi L2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfY21tLmgKPiA+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5iNWY3ZWM2ZGIwNGEKPiA+ID4gLS0tIC9k ZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2NtbS5oCj4g PiA+IEBAIC0wLDAgKzEsNTggQEAKPiA+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wKyAqLwo+ID4gPiArLyoKPiA+ID4gKyAqIHJjYXJfY21tLmggLS0gUi1DYXIgRGlzcGxh eSBVbml0IENvbG9yIE1hbmFnZW1lbnQgTW9kdWxlCj4gPiA+ICsgKgo+ID4gPiArICogQ29weXJp Z2h0IChDKSAyMDE5IEphY29wbyBNb25kaSA8amFjb3BvK3JlbmVzYXNAam1vbmRpLm9yZz4KPiA+ ID4gKyAqLwo+ID4gPiArCj4gPiA+ICsjaWZuZGVmIF9fUkNBUl9DTU1fSF9fCj4gPiA+ICsjZGVm aW5lIF9fUkNBUl9DTU1fSF9fCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgQ00yX0xVVF9TSVpFCQky NTYKPiA+ID4gKwo+ID4gPiArc3RydWN0IGRybV9jb2xvcl9sdXQ7Cj4gPiA+ICtzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlOwo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIHN0cnVjdCByY2FyX2Nt bV9jb25maWcgLSBDTU0gY29uZmlndXJhdGlvbgo+ID4gPiArICoKPiA+ID4gKyAqIEBsdXQ6CTFE LUxVVCBjb25maWd1cmF0aW9uCj4gPiA+ICsgKiBAbHV0LnRhYmxlOgkxRC1MVVQgdGFibGUgZW50 cmllcy4gRGlzYWJsZSBMVVQgb3BlcmF0aW9ucyB3aGVuIE5VTEwKPiA+ID4gKyAqLwo+ID4gPiAr c3RydWN0IHJjYXJfY21tX2NvbmZpZyB7Cj4gPiA+ICsJc3RydWN0IHsKPiA+ID4gKwkJc3RydWN0 IGRybV9jb2xvcl9sdXQgKnRhYmxlOwo+ID4gPiArCX0gbHV0Owo+ID4gPiArfTsKPiA+ID4gKwo+ ID4gPiArI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9SQ0FSX0NNTSkKPiA+ID4gK2ludCByY2Fy X2NtbV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOwo+ID4gPiArCj4gPiA+ICtp bnQgcmNhcl9jbW1fZW5hYmxlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOwo+ID4gPiAr dm9pZCByY2FyX2NtbV9kaXNhYmxlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOwo+ID4g PiArCj4gPiA+ICtpbnQgcmNhcl9jbW1fc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwKPiA+ID4gKwkJICAgY29uc3Qgc3RydWN0IHJjYXJfY21tX2NvbmZpZyAqY29uZmlnKTsKPiA+ ID4gKyNlbHNlCj4gPiA+ICtzdGF0aWMgaW5saW5lIGludCByY2FyX2NtbV9pbml0KHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIC1FTk9ERVY7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50IHJjYXJfY21tX2VuYWJsZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiArewo+ID4gPiArCXJldHVybiAwOwo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgcmNhcl9jbW1fZGlzYWJs ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiArewo+ID4gPiArfQo+ID4gPiAr Cj4gPiA+ICtzdGF0aWMgaW5saW5lIGludCByY2FyX2NtbV9zZXR1cChzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2LAo+ID4gPiArCQkJCSBjb25zdCBzdHJ1Y3QgcmNhcl9jbW1fY29uZmlnICpj b25maWcpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsjZW5kaWYg LyogSVNfRU5BQkxFRChDT05GSUdfRFJNX1JDQVJfQ01NKSAqLwo+ID4gPiArCj4gPiA+ICsjZW5k aWYgLyogX19SQ0FSX0NNTV9IX18gKi8KCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=