From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: Re: [PATCH RFC 10/15] drm: panel: Add support for Himax HX8369A MIPI DSI panel Date: Wed, 17 Dec 2014 18:27:04 +0800 Message-ID: <54915A78.9040904@freescale.com> References: <1418200648-32656-1-git-send-email-Ying.Liu@freescale.com> <1418200648-32656-11-git-send-email-Ying.Liu@freescale.com> <20141210140334.GE23558@ulmo.nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0117.outbound.protection.outlook.com [157.56.111.117]) by gabe.freedesktop.org (Postfix) with ESMTP id 616F56E558 for ; Wed, 17 Dec 2014 02:22:50 -0800 (PST) In-Reply-To: <20141210140334.GE23558@ulmo.nvidia.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: devicetree@vger.kernel.org, linux@arm.linux.org.uk, kernel@pengutronix.de, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, mturquette@linaro.org, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org CgpPbiAxMi8xMC8yMDE0IDEwOjAzIFBNLCBUaGllcnJ5IFJlZGluZyB3cm90ZToKPiBPbiBXZWQs IERlYyAxMCwgMjAxNCBhdCAwNDozNzoyM1BNICswODAwLCBMaXUgWWluZyB3cm90ZToKPj4gVGhp cyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEhpbWF4IEhYODM2OUEgTUlQSSBEU0kgcGFuZWwuCj4+ Cj4+IFNpZ25lZC1vZmYtYnk6IExpdSBZaW5nIDxZaW5nLkxpdUBmcmVlc2NhbGUuY29tPgo+PiAt LS0KPj4gICAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9wYW5lbC9oaW1heCxoeDgzNjlhLnR4dCAg ICB8ICA4NiArKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAgICAg ICAgICAgICAgICB8ICAgNiArCj4+ICAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC1oeDgzNjlhLmMgICAgICAgICAgICAgIHwgNjI3ICsrKysrKysrKysrKysrKysrKysrKwo+PiAg IDQgZmlsZXMgY2hhbmdlZCwgNzIwIGluc2VydGlvbnMoKykKPj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BhbmVsL2hpbWF4LGh4ODM2OWEu dHh0Cj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1o eDgzNjlhLmMKPj4KPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy9wYW5lbC9oaW1heCxoeDgzNjlhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9wYW5lbC9oaW1heCxoeDgzNjlhLnR4dAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ PiBpbmRleCAwMDAwMDAwLi42ZmUyNTFlCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvRG9jdW1l bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BhbmVsL2hpbWF4LGh4ODM2OWEudHh0Cj4+IEBA IC0wLDAgKzEsODYgQEAKPj4gK0hpbWF4IEhYODM2OUEgV1ZHQSAxNi43TSBjb2xvciBURlQgc2lu Z2xlIGNoaXAgZHJpdmVyIHdpdGggaW50ZXJuYWwgR1JBTQo+PiArCj4+ICtIaW1heCBIWDgzNjlB IGlzIGEgV1ZHQSByZXNvbHV0aW9uIGRyaXZpbmcgY29udHJvbGxlci4KPj4gK0l0IGlzIGRlc2ln bmVkIHRvIHByb3ZpZGUgYSBzaW5nbGUgY2hpcCBzb2x1dGlvbiB0aGF0IGNvbWJpbmVzIGEgc291 cmNlCj4+ICtkcml2ZXIgYW5kIHBvd2VyIHN1cHBseSBjaXJjdWl0cyB0byBkcml2ZSBhIFRGVCBk b3QgbWF0cml4IExDRCB3aXRoCj4+ICs0ODBSR0J4ODY0IGRvdHMgYXQgdGhlIG1heGltdW0uCj4+ ICsKPj4gK1RoZSBIWDgzNjlBIHN1cHBvcnRzIHNldmVyYWwgaW50ZXJmYWNlIG1vZGVzLCBpbmNs dWRpbmcgTVBVIE1JUEkgREJJIFR5cGUKPj4gK0EvQiBtb2RlLCBNSVBJIERQSS9EQkkgVHlwZSBD IG1vZGUsIE1JUEkgRFNJIHZpZGVvIG1vZGUsIE1JUEkgRFNJIGNvbW1hbmQKPj4gK21vZGUgYW5k IE1EREkgbW9kZS4gVGhlIGludGVyZmFjZSBtb2RlIGlzIHNlbGVjdGVkIGJ5IHRoZSBleHRlcm5h bCBoYXJkd2FyZQo+PiArcGlucyBCU1szOjBdLgo+PiArCj4+ICtDdXJyZW50bHksIG9ubHkgdGhl IE1JUEkgRFNJIHZpZGVvIG1vZGUgaXMgc3VwcG9ydGVkLgo+PiArCj4+ICtSZXF1aXJlZCBwcm9w ZXJ0aWVzOgo+PiArICAtIGNvbXBhdGlibGU6ICJoaW1heCxoeDgzNjlhLWRzaSIKPj4gKyAgLSBy ZWc6IHRoZSB2aXJ0dWFsIGNoYW5uZWwgbnVtYmVyIG9mIGEgRFNJIHBlcmlwaGVyYWwKPj4gKyAg LSByZXNldC1ncGlvczogYSBHUElPIHNwZWMgZm9yIHRoZSByZXNldCBwaW4KPj4gKyAgLSBkYXRh LWxhbmVzOiB0aGUgZGF0YSBsYW5lIG51bWJlciBvZiBhIERTSSBwZXJpcGhlcmFsCj4KPiBUaGlz IGlzIGltcGxpZWQgYnkgdGhlIGNvbXBhdGlibGUgYWxyZWFkeS4KCkFjY2VwdGVkLgoKPgo+PiAr ICAtIGRpc3BsYXktdGltaW5nczogdGltaW5ncyBmb3IgdGhlIGNvbm5lY3RlZCBwYW5lbCBhcyBk ZXNjcmliZWQgYnkgWzFdCj4KPiBBbHNvIGltcGxpZWQgYnkgdGhlIGNvbXBhdGlibGUgdmFsdWUu CgpBY2NlcHRlZC4KCj4KPj4gKyAgLSBiczogdGhlIGludGVyZmFjZSBtb2RlIG51bWJlciBkZXNj cmliZWQgYnkgdGhlIGZvbGxvd2luZyB0YWJsZQo+PiArICAgICAgICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+PiArICAgICAgIHwgREJJX1RZUEVfQV84QklUICAgICB8ICAwIHwKPj4gKyAg ICAgICB8IERCSV9UWVBFX0FfOUJJVCAgICAgfCAgMSB8Cj4+ICsgICAgICAgfCBEQklfVFlQRV9B XzE2QklUICAgIHwgIDIgfAo+PiArICAgICAgIHwgREJJX1RZUEVfQV8xOEJJVCAgICB8ICAzIHwK Pj4gKyAgICAgICB8IERCSV9UWVBFX0JfOEJJVCAgICAgfCAgNCB8Cj4+ICsgICAgICAgfCBEQklf VFlQRV9CXzlCSVQgICAgIHwgIDUgfAo+PiArICAgICAgIHwgREJJX1RZUEVfQl8xNkJJVCAgICB8 ICA2IHwKPj4gKyAgICAgICB8IERCSV9UWVBFX0JfMThCSVQgICAgfCAgNyB8Cj4+ICsgICAgICAg fCBEU0lfQ01EX01PREUgICAgICAgIHwgIDggfAo+PiArICAgICAgIHwgREJJX1RZUEVfQl8yNEJJ VCAgICB8ICA5IHwKPj4gKyAgICAgICB8IERTSV9WSURFT19NT0RFICAgICAgfCAxMCB8Cj4+ICsg ICAgICAgfCBNRERJICAgICAgICAgICAgICAgIHwgMTEgfAo+PiArICAgICAgIHwgRFBJX0RCSV9U WVBFX0NfT1BUMSB8IDEyIHwKPj4gKyAgICAgICB8IERQSV9EQklfVFlQRV9DX09QVDIgfCAxMyB8 Cj4+ICsgICAgICAgfCBEUElfREJJX1RZUEVfQ19PUFQzIHwgMTQgfAo+PiArICAgICAgICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gQ2FuIHRoaXMgbm90IGJlIGluZmVycmVkIGJ5IHRo ZSBkcml2ZXI/IElmIGl0J3MgYSBEU0kgZHJpdmVyIGNhbid0IGl0Cj4gc2VsZWN0IGJldHdlZW4g RFNJX1ZJREVPX01PREUgb3IgRFNJX0NNRF9NT0RFIGJhc2VkIG9uIGl0cyBjYXBhYmlsaXRpZXM/ Cj4gVGhhdCBpcywgaWYgdGhlIHBhbmVsIGRyaXZlciBjYW4gc2V0dXAgY29tbWFuZCBtb2RlLCBz aG91bGRuJ3QgaXQgYmUKPiB1c2luZyBjb21tYW5kIG1vZGUgaW4gdGhhdCBjYXNlPyBBbmQgdXNl IERTSV9WSURFT19NT0RFIG90aGVyd2lzZT8KCkkgbWF5IHJlbW92ZSB0aGlzIHByb3BlcnR5LgpC dXQsIEkgY2hvb3NlIG5vdCB0byBhZGQgYW55IGxvZ2ljIGluIHRoZSBob3N0IGFuZCBzbGF2ZSBk cml2ZXJzIHRvCmhhbmRsZSB0aGUgaW50ZXJmYWNlIG1vZGUgc2VsZWN0aW9uIGF0IHByZXNlbnQs IHNpbmNlIEkgb25seSBzdXBwb3J0CnRoZSBEU0lfVklERU9fTU9ERSBub3cuIElzIHRoaXMgYWNj ZXB0YWJsZT8KCj4KPj4gK09wdGlvbmFsIHByb3BlcnRpZXM6Cj4+ICsgIC0gcG93ZXItb24tZGVs YXk6IGRlbGF5IGFmdGVyIHR1cm5pbmcgcmVndWxhdG9ycyBvbiBbbXNdCj4+ICsgIC0gcmVzZXQt ZGVsYXk6IGRlbGF5IGFmdGVyIHJlc2V0IHNlcXVlbmNlIFttc10KPgo+IFN1cmVseSB0aGVzZSBh cmUgY29uc3RhbnQgZm9yIHRoaXMgcGFuZWw/CgpBY2NlcHRlZC4KCj4KPj4gKyAgLSBwYW5lbC13 aWR0aC1tbTogcGh5c2ljYWwgcGFuZWwgd2lkdGggW21tXQo+PiArICAtIHBhbmVsLWhlaWdodC1t bTogcGh5c2ljYWwgcGFuZWwgaGVpZ2h0IFttbV0KPgo+IFRoZXNlIGFyZSBhbHNvIGltcGxpZWQg YnkgY29tcGF0aWJsZS4KPgoKQWNjZXB0ZWQuCgo+PiArRXhhbXBsZToKPj4gKwlwYW5lbEAwIHsK Pj4gKwkJY29tcGF0aWJsZSA9ICJoaW1heCxoeDgzNjlhLWRzaSI7Cj4+ICsJCXJlZyA9IDwwPjsK Pj4gKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKPj4gKwkJcGluY3RybC0wID0gPCZwaW5j dHJsX21pcGlfcGFuZWw+Owo+PiArCQlyZXNldC1ncGlvcyA9IDwmZ3BpbzYgMTEgR1BJT19BQ1RJ VkVfTE9XPjsKPj4gKwkJcmVzZXQtZGVsYXkgPSA8MTIwPjsKPj4gKwkJYnMyLWdwaW9zID0gPCZn cGlvNiAxNCBHUElPX0FDVElWRV9ISUdIPjsKPj4gKwkJZGF0YS1sYW5lcyA9IDwyPjsKPj4gKwkJ cGFuZWwtd2lkdGgtbW0gPSA8NDU+Owo+PiArCQlwYW5lbC1oZWlnaHQtbW0gPSA8NzY+Owo+PiAr CQlicyA9IDwxMD47Cj4+ICsJCXN0YXR1cyA9ICJva2F5IjsKPgo+IHN0YXR1cyA9ICJva2F5IiBp cyB0aGUgZGVmYXVsdCwgc28gaXQgcHJvYmFibHkgc2hvdWxkbid0IGJlIGluIHRoaXMKPiBleGFt cGxlLgo+CgpBY2NlcHRlZC4KCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv S2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+IGluZGV4IDAyNGU5OGUu LmYxYTViNTggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+IEBAIC00MCw0ICs0MCwxMCBA QCBjb25maWcgRFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFTWDAxCj4+ICAgCSAgVG8gY29tcGlsZSB0 aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQo+PiAgIAkg IHdpbGwgYmUgY2FsbGVkIHBhbmVsLXNoYXJwLWxxMTAxcjFzeDAxLgo+Pgo+PiArY29uZmlnIERS TV9QQU5FTF9IWDgzNjlBCj4+ICsJdHJpc3RhdGUgIkhYODM2OUEgcGFuZWwiCj4+ICsJZGVwZW5k cyBvbiBPRgo+PiArCXNlbGVjdCBEUk1fTUlQSV9EU0kKPj4gKwlzZWxlY3QgVklERU9NT0RFX0hF TFBFUlMKPj4gKwo+Cj4gVGhpcyBzaG91bGQgYmUgc29ydGVkIGFscGhhYmV0aWNhbGx5LiBJIHRo aW5rIGl0IHdvdWxkIGFsc28gYmUgYSBnb29kCj4gaWRlYSB0byB1c2UgYSBISU1BWCBwcmVmaXgg aGVyZSwganVzdCB0byByZWR1Y2UgdGhlIHBvdGVudGlhbCBmb3IgbmFtZQo+IGNsYXNoZXMuCgpB Y2NlcHRlZC4KCj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+PiBpbmRleCA0YjJhMDQzLi5kNjc2 OGNhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4+IEBAIC0yLDMgKzIsNCBAQCBvYmot JChDT05GSUdfRFJNX1BBTkVMX1NJTVBMRSkgKz0gcGFuZWwtc2ltcGxlLm8KPj4gICBvYmotJChD T05GSUdfRFJNX1BBTkVMX0xEOTA0MCkgKz0gcGFuZWwtbGQ5MDQwLm8KPj4gICBvYmotJChDT05G SUdfRFJNX1BBTkVMX1M2RThBQTApICs9IHBhbmVsLXM2ZThhYTAubwo+PiAgIG9iai0kKENPTkZJ R19EUk1fUEFORUxfU0hBUlBfTFExMDFSMVNYMDEpICs9IHBhbmVsLXNoYXJwLWxxMTAxcjFzeDAx Lm8KPj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfSFg4MzY5QSkgKz0gcGFuZWwtaHg4MzY5YS5v Cj4KPiBOZWVkcyB0byBiZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHksIHRvby4KCkFjY2VwdGVkLgoK Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWh4ODM2OWEuYyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1oeDgzNjlhLmMKPiBbLi4uXQo+PiArI2luY2x1 ZGUgPGRybS9kcm1QLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgo+PiArI2lu Y2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29u c3VtZXIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPj4gKwo+ PiArI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+PiArI2luY2x1ZGUgPHZpZGVvL29m X3ZpZGVvbW9kZS5oPgo+PiArI2luY2x1ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgo+PiArCj4+ICsj ZGVmaW5lIFNFVENMVU1OX0FERFIJMHgyYQo+PiArI2RlZmluZSBTRVRQQUdFX0FERFIgCTB4MmIK Pj4gKyNkZWZpbmUgU0VUUElYRUxfRk1UIAkweDNhCj4KPiBUaGVyZSBhcmUgc3RhbmRhcmQgRENT IGZ1bmN0aW9ucyBmb3IgdGhlc2Ugbm93LgoKQWNjZXB0ZWQuCgo+Cj4+ICsjZGVmaW5lIFdSRElT QlYJICAgICAJMHg1MQo+PiArI2RlZmluZSBXUkNUUkxECSAgICAgCTB4NTMKPj4gKyNkZWZpbmUg V1JDQUJDCSAgICAgCTB4NTUKPj4gKyNkZWZpbmUgU0VUUE9XRVIgICAgIAkweGIxCj4+ICsjZGVm aW5lIFNFVERJU1AJICAgICAJMHhiMgo+PiArI2RlZmluZSBTRVRDWUMJICAgICAJMHhiNAo+PiAr I2RlZmluZSBTRVRWQ09NCSAgICAgCTB4YjYKPj4gKyNkZWZpbmUgU0VURVhUQwkgICAgIAkweGI5 Cj4+ICsjZGVmaW5lIFNFVE1JUEkJICAgICAJMHhiYQo+PiArI2RlZmluZSBTRVRQQU5FTCAgICAg CTB4Y2MKPj4gKyNkZWZpbmUgU0VUR0lQCSAgICAgCTB4ZDUKPj4gKyNkZWZpbmUgU0VUR0FNTUEg ICAgIAkweGUwCj4KPiBXYXRjaCB5b3VyIGluZGVudGF0aW9uIGhlcmUgYW5kIGFib3ZlLiBVc2Ug dGFicyBhbmQgc3BhY2VzIG1vcmUKPiBjb25zaXN0ZW50bHkuCgpBY2NlcHRlZC4KCj4KPj4gK3N0 YXRpYyBib29sIGh4ODM2OWFfaXNfZHNpX2ludGVyZmFjZShzdHJ1Y3QgaHg4MzY5YSAqY3R4KSB7 Cj4KPiBDb2Rpbmcgc3R5bGU6IG9wZW5pbmcgeyBnb2VzIG9uIGEgbGluZSBieSBpdHNlbGYuCgpB Y2NlcHRlZC4KCj4KPj4gKwlpZiAoY3R4LT5tcHVfaW50ZXJmYWNlID09IEhYODM2OUFfRFNJX1ZJ REVPX01PREUgfHwKPj4gKwkgICAgY3R4LT5tcHVfaW50ZXJmYWNlID09IEhYODM2OUFfRFNJX0NN RF9NT0RFKQo+PiArCQlyZXR1cm4gdHJ1ZTsKPj4gKwo+PiArCXJldHVybiBmYWxzZTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIHZvaWQgaHg4MzY5YV9kY3Nfd3JpdGUoc3RydWN0IGh4ODM2OWEgKmN0 eCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbikKPj4gK3sKPj4gKwlzdHJ1Y3QgbWlwaV9k c2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+PiArCXNzaXpl X3QgcmV0Owo+PiArCj4+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcihkc2ksIGRh dGEsIGxlbik7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJlcnJv ciAlemQgd3JpdGluZyBkY3Mgc2VxOiAlKnBoXG4iLCByZXQsIGxlbiwKPj4gKwkJCWRhdGEpOwo+ PiArfQo+Cj4gWW91IHJlYWxseSBzaG91bGRuJ3QgaGF2ZSBiYXNlZCB0aGlzIG9uIHRoZSBTYW1z dW5nIGRyaXZlcnMuIFlvdSByZWFsbHkKPiBzaG91bGQgZG8gcHJvcGVyIGVycm9yIGhhbmRsaW5n IGhlcmUuIFRoZXNlIGVycm9yIG1lc3NhZ2VzIGFyZSBnb2luZyB0bwo+IGJlIGNvbXBsZXRlbHkg Y3J5cHRpYyBhbmQgdmVyeSBoYXJkIGZvciBwZW9wbGUgdG8gbG9vayB1cCBpbiB0aGUgZHJpdmVy Cj4gYXMgb3Bwb3NlZCB0byBhIHNpbXBsZSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIGxpa2U6Cj4K PiAJZGV2X2VycihjdHgtPmRldiwgImZhaWxlZCB0byBkbyBYWVo6ICVkXG4iLCBlcnIpOwo+Cj4g d2hpY2ggd2lsbCBpbW1lZGlhdGVseSBsZXQgeW91IGxvb2sgdXAgdGhlIHJpZ2h0IGxvY2F0aW9u IHdpdGhvdXQgYSBuZWVkCj4gdG8gZGVjb2RlIHRoZSBoZXhkdW1wIGFuZCBsb29rIGZvciB0aGUg Y29ycmVjdCBhcnJheS4KCkFjY2VwdGVkLgoKPgo+PiArI2RlZmluZSBoeDgzNjlhX2Rjc193cml0 ZV9zZXEoY3R4LCBzZXEuLi4pIFwKPj4gKyh7XAo+PiArCWNvbnN0IHU4IGRbXSA9IHsgc2VxIH07 XAo+PiArCUJVSUxEX0JVR19PTl9NU0coQVJSQVlfU0laRShkKSA+IDY0LCAiRENTIHNlcXVlbmNl IHRvbyBiaWcgZm9yIHN0YWNrIik7XAo+PiArCWh4ODM2OWFfZGNzX3dyaXRlKGN0eCwgZCwgQVJS QVlfU0laRShkKSk7XAo+PiArfSkKPj4gKwo+PiArI2RlZmluZSBoeDgzNjlhX2Rjc193cml0ZV9z ZXFfc3RhdGljKGN0eCwgc2VxLi4uKSBcCj4+ICsoe1wKPj4gKwlzdGF0aWMgY29uc3QgdTggZFtd ID0geyBzZXEgfTtcCj4+ICsJaHg4MzY5YV9kY3Nfd3JpdGUoY3R4LCBkLCBBUlJBWV9TSVpFKGQp KTtcCj4+ICt9KQo+PiArCj4+ICtzdGF0aWMgdm9pZCBoeDgzNjlhX2RzaV9zZXRfZGlzcGxheV9y ZWxhdGVkX3JlZ2lzdGVyKHN0cnVjdCBoeDgzNjlhICpjdHgpCj4+ICt7Cj4+ICsJdTggc2VjX3Ag PSAoY3R4LT5yZXNfc2VsIDw8IDQpIHwgMHgwMzsKPj4gKwo+PiArCWh4ODM2OWFfZGNzX3dyaXRl X3NlcShjdHgsIFNFVERJU1AsIDB4MDAsIHNlY19wLCAweDAzLAo+PiArCQkweDAzLCAweDcwLCAw eDAwLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAo+PiArCQkweDAzLCAweDAzLCAweDAw LCAweDAxKTsKPj4gK30KPgo+IFRoaXMgYW5kIGFsbCBvZiB0aGUgb3RoZXIgaW5pdGlhbGl6YXRp b24gZnVuY3Rpb25zIGJlbG93IGNvbXBsZXRlbHkKPiBpZ25vcmUgYW55IGVycm9ycy4gT3RoZXIg dGhhbiBzcGFtbWluZyB0aGUga2VybmVsIGxvZyB0aGUgdXNlciB3b24ndCBnZXQKPiBhbnkgaW5k aWNhdGlvbiBvZiBhbnl0aGluZyBnb2luZyB3cm9uZy4KPgo+PiArc3RhdGljIHZvaWQgaHg4MzY5 YV9kc2lfc2V0X2ludGVyZmFjZV9waXhlbF9mb21hdChzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiAr ewo+IFsuLi5dCj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGh4ODM2OWFfZHNpX3NldF9jb2x1 bW5fYWRkcmVzcyhzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiArewo+IFsuLi5dCj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyB2b2lkIGh4ODM2OWFfZHNpX3NldF9wYWdlX2FkZHJlc3Moc3RydWN0IGh4ODM2 OWEgKmN0eCkKPj4gK3sKPiBbLi4uXQo+PiArfQo+Cj4gV2UgaGF2ZSBzdGFuZGFyZCBmdW5jdGlv bnMgZm9yIHRoZXNlLCBwbGVhc2UgdXNlIHRoZW0uCj4KPj4gK3N0YXRpYyB2b2lkIGh4ODM2OWFf ZHNpX3NldF9leHRlbnNpb25fY29tbWFuZChzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiArewo+PiAr CWh4ODM2OWFfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBTRVRFWFRDLCAweGZmLCAweDgzLCAw eDY5KTsKPj4gK30KPgo+IFdoYXQgZG9lcyB0aGlzIGRvIGV4YWN0bHk/IEl0IHNlZW1zIHRvIGJl IG1vcmUgdGhhbiBzZXR0aW5nIGFuIGV4dGVuc2lvbgo+IGNvbW1hbmQuCgpUaGUgcGFuZWwgZGF0 YSBzaGVldCB0ZWxscyB0aGF0IHNldmVyYWwgY29tbWFuZHMgcmVseSBvbiB0aGUgU0VURVhUQywK c3VjaCBhcyBTRVRNSVBJLCBTRVRQQU5FTCBhbmQgU0VUQ1lDIC4uLiwgd2hpY2ggYXJlIHVzZWQg aW4gdGhpcyBkcml2ZXIuCgo+Cj4+ICtzdGF0aWMgdm9pZCBoeDgzNjlhX2RzaV9zZXRfbWF4aW11 bV9yZXR1cm5fcGFja2V0X3NpemUoc3RydWN0IGh4ODM2OWEgKmN0eCwKPj4gKwkJCQkJCSAgICAg ICB1MTYgc2l6ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19t aXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlyZXQgPSBt aXBpX2RzaV9zZXRfbWF4aW11bV9yZXR1cm5fcGFja2V0X3NpemUoZHNpLCBzaXplKTsKPj4gKwlp ZiAocmV0IDwgMCkKPj4gKwkJZGV2X2VycihjdHgtPmRldiwKPj4gKwkJCSJlcnJvciAlZCBzZXR0 aW5nIG1heGltdW0gcmV0dXJuIHBhY2tldCBzaXplIHRvICVkXG4iLAo+PiArCQkJcmV0LCBzaXpl KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBoeDgzNjlhX2RzaV9zZXRfc2VxdWVuY2Uoc3Ry dWN0IGh4ODM2OWEgKmN0eCkKPj4gK3sKPj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kg PSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlo eDgzNjlhX2RzaV9zZXRfZXh0ZW5zaW9uX2NvbW1hbmQoY3R4KTsKPj4gKwloeDgzNjlhX2RzaV9z ZXRfbWF4aW11bV9yZXR1cm5fcGFja2V0X3NpemUoY3R4LCA0KTsKPj4gKwloeDgzNjlhX2RzaV9w YW5lbF9pbml0KGN0eCk7Cj4+ICsKPj4gKwlyZXQgPSBtaXBpX2RzaV9kY3NfZXhpdF9zbGVlcF9t b2RlKGRzaSk7Cj4+ICsJaWYgKHJldCA8IDApIHsKPj4gKwkJZGV2X2VycihjdHgtPmRldiwgImZh aWxlZCB0byBleGl0IHNsZWVwIG1vZGU6ICVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gcmV0Owo+ PiArCX0KPj4gKwo+PiArCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vbihkc2kpOwo+ PiArCWlmIChyZXQgPCAwKSB7Cj4+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJmYWlsZWQgdG8gc2V0 IGRpc3BsYXkgb246ICVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+ PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4KPj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfZGlz YWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4gK3sKPj4gKwlyZXR1cm4gMDsKPj4gK30K PiBbLi4uXQo+PiArc3RhdGljIGludCBoeDgzNjlhX2RzaV9lbmFibGUoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCj4+ICt7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4KPiBEb2Vzbid0IHRoaXMgdXN1 YWxseSBjb21lIHdpdGggYSBiYWNrbGlnaHQgYXR0YWNoZWQgdGhhdCB5b3Ugd2FudCB0bwo+IGNv bnRyb2wgaGVyZT8KCkFjY2VwdGVkLgoKPgo+PiArc3RhdGljIGludCBoeDgzNjlhX2dldF9tb2Rl cyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3RvcjsKPj4gKwlzdHJ1Y3QgaHg4MzY5YSAqY3R4 ID0gcGFuZWxfdG9faHg4MzY5YShwYW5lbCk7Cj4+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGU7Cj4+ICsKPj4gKwltb2RlID0gZHJtX21vZGVfY3JlYXRlKGNvbm5lY3Rvci0+ZGV2KTsK Pj4gKwlpZiAoIW1vZGUpIHsKPj4gKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGEgbmV3 IGRpc3BsYXkgbW9kZVxuIik7Cj4+ICsJCXJldHVybiAwOwo+PiArCX0KPj4gKwo+PiArCWRybV9k aXNwbGF5X21vZGVfZnJvbV92aWRlb21vZGUoJmN0eC0+dm0sIG1vZGUpOwo+Cj4gTGlrZSBJJ3Zl IHNhaWQgYmVmb3JlLCB0aGUgZHJpdmVyIHNob3VsZCBoYXJkY29kZSB0aGUgbW9kZSBiZWNhdXNl IGl0IGlzCj4gaW1wbGllZCBieSB0aGUgY29tcGF0aWJsZSB2YWx1ZS4KCkFjY2VwdGVkLgoKPgo+ PiArCW1vZGUtPndpZHRoX21tID0gY3R4LT53aWR0aF9tbTsKPj4gKwltb2RlLT5oZWlnaHRfbW0g PSBjdHgtPmhlaWdodF9tbTsKPj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9 IG1vZGUtPndpZHRoX21tOwo+PiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9 IG1vZGUtPmhlaWdodF9tbTsKPj4gKwo+PiArCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RS SVZFUiB8IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEOwo+PiArCWRybV9tb2RlX3Byb2JlZF9hZGQo Y29ubmVjdG9yLCBtb2RlKTsKPj4gKwo+PiArCXJldHVybiAxOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBoeDgzNjlhX2RzaV9kcm1fZnVuY3MgPSB7 Cj4+ICsJLmRpc2FibGUgPSBoeDgzNjlhX2RzaV9kaXNhYmxlLAo+PiArCS51bnByZXBhcmUgPSBo eDgzNjlhX2RzaV91bnByZXBhcmUsCj4+ICsJLnByZXBhcmUgPSBoeDgzNjlhX2RzaV9wcmVwYXJl LAo+PiArCS5lbmFibGUgPSBoeDgzNjlhX2RzaV9lbmFibGUsCj4+ICsJLmdldF9tb2RlcyA9IGh4 ODM2OWFfZ2V0X21vZGVzLAo+PiArfTsKPgo+PiArc3RhdGljIGludCBoeDgzNjlhX2RzaV9wcm9i ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4+ICt7Cj4+ICsJc3RydWN0IGRldmljZSAq ZGV2ID0gJmRzaS0+ZGV2Owo+PiArCXN0cnVjdCBoeDgzNjlhICpjdHg7Cj4+ICsJaW50IHJldCwg aTsKPj4gKwljaGFyIGJzWzRdOwo+PiArCj4+ICsJY3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKHN0cnVjdCBoeDgzNjlhKSwgR0ZQX0tFUk5FTCk7Cj4KPiBJJ2QgcHJlZmVyIHNpemVvZigq Y3R4KS4KCkFjY2VwdGVkLgoKPgo+PiArCWN0eC0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0 KGRldiwgInJlc2V0Iik7Cj4+ICsJaWYgKElTX0VSUihjdHgtPnJlc2V0X2dwaW8pKSB7Cj4+ICsJ CWRldl9lcnIoZGV2LCAiY2Fubm90IGdldCByZXNldC1ncGlvcyAlbGRcbiIsCj4+ICsJCQlQVFJf RVJSKGN0eC0+cmVzZXRfZ3BpbykpOwo+PiArCQlyZXR1cm4gUFRSX0VSUihjdHgtPnJlc2V0X2dw aW8pOwo+PiArCX0KPj4gKwlyZXQgPSBncGlvZF9kaXJlY3Rpb25fb3V0cHV0KGN0eC0+cmVzZXRf Z3BpbywgMCk7Cj4+ICsJaWYgKHJldCA8IDApIHsKPj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3Qg Y29uZmlndXJlIHJlc2V0LWdwaW9zICVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiAr CX0KPgo+IEkgdGhpbmsgeW91J3JlIHN1cHBvc2VkIHRvIGNvbWJpbmUgdGhpcyBpbnRvIHNvbWV0 aGluZyBsaWtlOgo+Cj4gCXJldCA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0Rf T1VUX0xPVyk7Cj4KPiBub3dhZGF5cy4KCkFjY2VwdGVkLgoKPgo+PiArCj4+ICsJZm9yIChpID0g MDsgaSA8IDQ7IGkrKykgewo+PiArCQlzbnByaW50Zihicywgc2l6ZW9mKGJzKSwgImJzJWQiLCBp KTsKPj4gKwkJY3R4LT5ic19ncGlvW2ldID0gZGV2bV9ncGlvZF9nZXQoZGV2LCBicyk7Cj4+ICsJ CWlmIChJU19FUlIoY3R4LT5ic19ncGlvW2ldKSkKPj4gKwkJCWNvbnRpbnVlOwo+PiArCj4+ICsJ CXJldCA9IGdwaW9kX2RpcmVjdGlvbl9vdXRwdXQoY3R4LT5ic19ncGlvW2ldLCAxKTsKPj4gKwkJ aWYgKHJldCA8IDApIHsKPj4gKwkJCWRldl9lcnIoZGV2LCAiY2Fubm90IGNvbmZpZ3VyZSBicyVk LWdwaW8gJWRcbiIsIGksIHJldCk7Cj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCQl9Cj4KPiBTaW1p bGFybHkgdG8gdGhlIGFib3ZlOgo+Cj4gCXJldCA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgYnMsIEdQ SU9EX09VVF9ISUdIKTsKPgo+PiArc3RhdGljIGludCBfX2luaXQgaHg4MzY5YV9pbml0KHZvaWQp Cj4+ICt7Cj4+ICsJaW50IGVycjsKPj4gKwo+PiArCWVyciA9IG1pcGlfZHNpX2RyaXZlcl9yZWdp c3RlcigmaHg4MzY5YV9kc2lfZHJpdmVyKTsKPj4gKwlpZiAoZXJyIDwgMCkKPj4gKwkJcmV0dXJu IGVycjsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArbW9kdWxlX2luaXQoaHg4MzY5YV9p bml0KTsKPj4gKwo+PiArc3RhdGljIHZvaWQgX19leGl0IGh4ODM2OWFfZXhpdCh2b2lkKQo+PiAr ewo+PiArCW1pcGlfZHNpX2RyaXZlcl91bnJlZ2lzdGVyKCZoeDgzNjlhX2RzaV9kcml2ZXIpOwo+ PiArfQo+PiArbW9kdWxlX2V4aXQoaHg4MzY5YV9leGl0KTsKPgo+IFdoeSBjYW4ndCB0aGlzIGJl IG1vZHVsZV9taXBpX2RzaV9kcml2ZXIoJmh4ODM2OWFfZHNpX2RyaXZlcik/CgpMaWtlIHRoZSBw YW5lbC1zaW1wbGUgZHJpdmVyLiBJIHRob3VnaHQgdGhhdCB3ZSBwcm9iYWJseSBtYXkgYWRkIG90 aGVyCmRyaXZlciByZWdpc3RlcnMgaGVyZS4gQnV0LCBzaW5jZSB0aGUgZHJpdmVyIG9ubHkgc3Vw cG9ydHMgRFNJIG5vdywKSSBtYXkgY2hhbmdlIHRvIHVzZSBtb2R1bGVfbWlwaV9kc2lfZHJpdmVy KCkuCgo+Cj4+ICsKPj4gK01PRFVMRV9ERVNDUklQVElPTigiSGltYXggSFg4MzY5QSBwYW5lbCBk cml2ZXIiKTsKPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPgo+IE1pc3NpbmcgTU9EVUxF X0FVVEhPUigpPwoKSSdsbCBhZGQgaXQuCgoKVGhhbmtzLAoKTGl1IFlpbmcKCj4KPiBUaGllcnJ5 Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK