From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aaron Lu Subject: Re: [PATCH 07/32] acpi-video-detect: Rewrite backlight interface selection logic Date: Thu, 11 Jun 2015 17:00:15 +0800 Message-ID: <20150611090015.GA3235@aaronlu.sh.intel.com> References: <1433941292-21530-1-git-send-email-hdegoede@redhat.com> <1433941292-21530-8-git-send-email-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1433941292-21530-8-git-send-email-hdegoede@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hans de Goede Cc: Matthew Garrett , Ike Panhc , linux-acpi@vger.kernel.org, ibm-acpi-devel@lists.sourceforge.net, Henrique de Moraes Holschuh , acpi4asus-user@lists.sourceforge.net, "Rafael J. Wysocki" , dri-devel@lists.freedesktop.org, Azael Avalos , Lee Chun-Yi , Mattia Dongili , Cezary Jackiewicz , Ben Skeggs , Corentin Chary , Pali =?iso-8859-1?Q?Roh=E1r?= , Darren Hart , platform-driver-x86@vger.kernel.org List-Id: linux-acpi@vger.kernel.org T24gV2VkLCBKdW4gMTAsIDIwMTUgYXQgMDM6MDE6MDdQTSArMDIwMCwgSGFucyBkZSBHb2VkZSB3 cm90ZToKPiBDdXJyZW50bHkgd2UgaGF2ZSAyIGtlcm5lbCBjb21tYW5kbGluZSBvcHRpb25zICsg ZG1pLXF1aXJrcyBpbiAzIHBsYWNlcyBhbGwKPiBpbnRlcmFjdGluZyAoaW4gaW50ZXJlc3Rpbmcg d2F5cykgdG8gc2VsZWN0IHdoaWNoIHdoaWNoIGJhY2tsaWdodCBpbnRlcmZhY2UKPiB0byB1c2Uu IE9uIHRoZSBjb21tYW5kbGluZSB3ZSd2ZSBhY3BpX2JhY2tsaWdodD1bdmlkZW98dmVuZG9yXSBh bmQKPiB2aWRlby51c2VfbmF0aXZlX2JhY2tsaWdodD1bMHwxXS4gRE1JIHF1aXJrcyB3ZSBoYXZl IGluCj4gYWNwaS92aWRlby1kZXRlY3QuYywgYWNwaS92aWRlby5jIGFuZCBkcml2ZXJzL3BsYXRm b3JtL3g4Ni8qLmMgLgo+IAo+IFRoaXMgY29tbWl0IGlzIHRoZSBmaXJzdCBzdGVwIHRvIGNsZWFu aW5nIHRoaXMgdXAsIHJlcGxhY2luZyB0aGUgMiBjbWRsaW5lCj4gb3B0aW9ucyB3aXRoIGp1c3Qg YWNwaV92aWRlby5iYWNrbGlnaHQ9W3ZpZGVvfHZlbmRvcnxuYXRpdmV8bm9uZV0sIGFuZAo+IGFk ZGluZyBhIG5ldyBBUEkgdG8gdmlkZW9fZGV0ZWN0LmMgdG8gcmVmbGVjdCB0aGlzLgoKSSBsaWtl IGJhY2tsaWdodD1bZmlybXdhcmV8cGxhdGZvcm18cmF3fG5vbmVdIGJldHRlciwgYnV0IHRoYXQg d291bGQKcmVxdWlyZSB0byBwdXQgdGhlIHNlbGVjdGlvbi9xdWlyayBsb2dpYyB0byBiYWNrbGln aHQgY29yZS4gV2hhdCBkbyB5b3UKdGhpbms/CgpSZWdhcmRzLApBYXJvbgoKPiAKPiBGb2xsb3cg dXAgY29tbWl0cyB3aWxsIGFsc28gbW92ZSBvdGhlciByZWxhdGVkIGNvZGUsIGxpa2UgdW5yZWdp c3RlcmluZyB0aGUKPiBhY3BpX3ZpZGVvIGJhY2tsaWdodCBpbnRlcmZhY2UgaWYgaXQgd2FzIHJl Z2lzdGVyZWQgYmVmb3JlIG90aGVyIGRyaXZlcnMKPiB3aGljaCB0YWtlIHByaW9yaXR5IG92ZXIg aXQgYXJlIGxvYWRlZCwgdG8gdmlkZW9fZGV0ZWN0LmMgd2hlcmUgdGhpcwo+IGxvZ2ljIHJlYWxs eSBiZWxvbmdzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJl ZGhhdC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvYWNwaS92aWRlb19kZXRlY3QuYyB8IDE3MiArKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBpbmNsdWRlL2FjcGkv dmlkZW8uaCAgICAgICAgfCAgMTcgKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0 aW9ucygrKSwgODkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS92 aWRlb19kZXRlY3QuYyBiL2RyaXZlcnMvYWNwaS92aWRlb19kZXRlY3QuYwo+IGluZGV4IDBiYzhi OTguLjAxYzhjNDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9hY3BpL3ZpZGVvX2RldGVjdC5jCj4g KysrIGIvZHJpdmVycy9hY3BpL3ZpZGVvX2RldGVjdC5jCj4gQEAgLTEsNCArMSw2IEBACj4gIC8q Cj4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgICAgICAgUmVkIEhhdCBJbmMuCj4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4K PiAgICogIENvcHlyaWdodCAoQykgMjAwOCAgICAgICBTdVNFIExpbnV4IFByb2R1Y3RzIEdtYkgK PiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgUmVubmluZ2VyIDx0cmVubkBz dXNlLmRlPgo+ICAgKgo+IEBAIC05LDI4ICsxMSwyNCBAQAo+ICAgKiBhY3BpX2dldF9wY2lfZGV2 KCkgY2FuIGJlIGNhbGxlZCB0byBpZGVudGlmeSBBQ1BJIGdyYXBoaWNzCj4gICAqIGRldmljZXMg Zm9yIHdoaWNoIGEgcmVhbCBncmFwaGljcyBjYXJkIGlzIHBsdWdnZWQgaW4KPiAgICoKPiAtICog Tm93IGFjcGlfdmlkZW9fZ2V0X2NhcGFiaWxpdGllcygpIGNhbiBiZSBjYWxsZWQgdG8gY2hlY2sg d2hpY2gKPiAtICogY2FwYWJpbGl0aWVzIHRoZSBncmFwaGljcyBjYXJkcyBwbHVnZ2VkIGluIHN1 cHBvcnQuIFRoZSBjaGVjayBmb3IgZ2VuZXJhbAo+IC0gKiB2aWRlbyBjYXBhYmlsaXRpZXMgd2ls bCBiZSB0cmlnZ2VyZWQgYnkgdGhlIGZpcnN0IGNhbGxlciBvZgo+IC0gKiBhY3BpX3ZpZGVvX2dl dF9jYXBhYmlsaXRpZXMoTlVMTCk7IHdoaWNoIHdpbGwgaGFwcGVuIHdoZW4gdGhlIGZpcnN0Cj4g LSAqIGJhY2tsaWdodCBzd2l0Y2hpbmcgc3VwcG9ydGluZyBkcml2ZXIgY2FsbHM6Cj4gLSAqIGFj cGlfdmlkZW9fYmFja2xpZ2h0X3N1cHBvcnQoKTsKPiAtICoKPiAgICogRGVwZW5kaW5nIG9uIHdo ZXRoZXIgQUNQSSBncmFwaGljcyBleHRlbnNpb25zIChjbXAuIEFDUEkgc3BlYyBBcHBlbmRpeCBC KQo+ICAgKiBhcmUgYXZhaWxhYmxlLCB2aWRlby5rbyBzaG91bGQgYmUgdXNlZCB0byBoYW5kbGUg dGhlIGRldmljZS4KPiAgICoKPiAgICogT3RoZXJ3aXNlIHZlbmRvciBzcGVjaWZpYyBkcml2ZXJz IGxpa2UgdGhpbmtwYWRfYWNwaSwgYXN1cy1sYXB0b3AsCj4gICAqIHNvbnlfYWNwaSwuLi4gY2Fu IHRha2UgY2FyZSBhYm91dCBiYWNrbGlnaHQgYnJpZ2h0bmVzcy4KPiAgICoKPiAtICogSWYgQ09O RklHX0FDUElfVklERU8gaXMgbmVpdGhlciBzZXQgYXMgImNvbXBpbGVkIGluIiAoeSkgbm9yIGFz IGEgbW9kdWxlIChtKQo+IC0gKiB0aGlzIGZpbGUgd2lsbCBub3QgYmUgY29tcGlsZWQsIGFjcGlf dmlkZW9fZ2V0X2NhcGFiaWxpdGllcygpIGFuZAo+IC0gKiBhY3BpX3ZpZGVvX2JhY2tsaWdodF9z dXBwb3J0KCkgd2lsbCBhbHdheXMgcmV0dXJuIDAgYW5kIHZlbmRvciBzcGVjaWZpYwo+IC0gKiBk cml2ZXJzIGFsd2F5cyBjYW4gaGFuZGxlIGJhY2tsaWdodC4KPiArICogQmFja2xpZ2h0IGRyaXZl cnMgY2FuIHVzZSBhY3BpX3ZpZGVvX2dldF9iYWNrbGlnaHRfdHlwZSgpIHRvIGRldGVybWluZQo+ ICsgKiB3aGljaCBkcml2ZXIgc2hvdWxkIGhhbmRsZSB0aGUgYmFja2xpZ2h0Lgo+ICAgKgo+ICsg KiBJZiBDT05GSUdfQUNQSV9WSURFTyBpcyBuZWl0aGVyIHNldCBhcyAiY29tcGlsZWQgaW4iICh5 KSBub3IgYXMgYSBtb2R1bGUgKG0pCj4gKyAqIHRoaXMgZmlsZSB3aWxsIG5vdCBiZSBjb21waWxl ZCBhbmQgYWNwaV92aWRlb19nZXRfYmFja2xpZ2h0X3R5cGUoKSB3aWxsCj4gKyAqIGFsd2F5cyBy ZXR1cm4gYWNwaV9iYWNrbGlnaHRfdmVuZG9yLgo+ICAgKi8KPiAgCj4gKyNpbmNsdWRlIDxhY3Bp L3ZpZGVvLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KPiAgI2luY2x1ZGUgPGxpbnV4 L2FjcGkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgo+ICAjaW5jbHVkZSA8bGlu dXgvZG1pLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiAgI2luY2x1ZGUgPGxpbnV4 L3BjaS5oPgo+IEBAIC0zOCwyMCArMzYsMjQgQEAKPiAgQUNQSV9NT0RVTEVfTkFNRSgidmlkZW8i KTsKPiAgI2RlZmluZSBfQ09NUE9ORU5UCQlBQ1BJX1ZJREVPX0NPTVBPTkVOVAo+ICAKPiAtc3Rh dGljIGxvbmcgYWNwaV92aWRlb19zdXBwb3J0Owo+IC1zdGF0aWMgYm9vbCBhY3BpX3ZpZGVvX2Nh cHNfY2hlY2tlZDsKPiArc3RhdGljIGVudW0gYWNwaV9iYWNrbGlnaHRfdHlwZSBhY3BpX2JhY2ts aWdodF9jbWRsaW5lID0gYWNwaV9iYWNrbGlnaHRfdW5kZWY7Cj4gK3N0YXRpYyBlbnVtIGFjcGlf YmFja2xpZ2h0X3R5cGUgYWNwaV9iYWNrbGlnaHRfZG1pID0gYWNwaV9iYWNrbGlnaHRfdW5kZWY7 Cj4gIAo+ICBzdGF0aWMgY2hhciBhY3BpX2JhY2tsaWdodF9zdHJbMTZdOwo+ICBtb2R1bGVfcGFy YW1fc3RyaW5nKGJhY2tsaWdodCwgYWNwaV9iYWNrbGlnaHRfc3RyLCAxNiwgMDQ0NCk7Cj4gIE1P RFVMRV9QQVJNX0RFU0MoYmFja2xpZ2h0LAo+IC0JIlNlbGVjdCB3aGljaCBiYWNrbGlnaHQgaW50 ZXJmYWNlIHRvIHVzZSBbdmVuZG9yfHZpZGVvXSIpOwo+ICsJIlNlbGVjdCB3aGljaCBiYWNrbGln aHQgaW50ZXJmYWNlIHRvIHVzZSBbdmVuZG9yfHZpZGVvfG5hdGl2ZV0iKTsKPiAgCj4gIHN0YXRp YyB2b2lkIGFjcGlfdmlkZW9fcGFyc2VfY21kbGluZSh2b2lkKQo+ICB7Cj4gIAlpZiAoIXN0cmNt cCgidmVuZG9yIiwgYWNwaV9iYWNrbGlnaHRfc3RyKSkKPiAtCQlhY3BpX3ZpZGVvX3N1cHBvcnQg fD0gQUNQSV9WSURFT19CQUNLTElHSFRfRk9SQ0VfVkVORE9SOwo+ICsJCWFjcGlfYmFja2xpZ2h0 X2NtZGxpbmUgPSBhY3BpX2JhY2tsaWdodF92ZW5kb3I7Cj4gIAlpZiAoIXN0cmNtcCgidmlkZW8i LCBhY3BpX2JhY2tsaWdodF9zdHIpKQo+IC0JCWFjcGlfdmlkZW9fc3VwcG9ydCB8PSBBQ1BJX1ZJ REVPX0JBQ0tMSUdIVF9GT1JDRV9WSURFTzsKPiArCQlhY3BpX2JhY2tsaWdodF9jbWRsaW5lID0g YWNwaV9iYWNrbGlnaHRfdmlkZW87Cj4gKwlpZiAoIXN0cmNtcCgibmF0aXZlIiwgYWNwaV9iYWNr bGlnaHRfc3RyKSkKPiArCQlhY3BpX2JhY2tsaWdodF9jbWRsaW5lID0gYWNwaV9iYWNrbGlnaHRf bmF0aXZlOwo+ICsJaWYgKCFzdHJjbXAoIm5vbmUiLCBhY3BpX2JhY2tsaWdodF9zdHIpKQo+ICsJ CWFjcGlfYmFja2xpZ2h0X2NtZGxpbmUgPSBhY3BpX2JhY2tsaWdodF9ub25lOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgYWNwaV9zdGF0dXMKPiBAQCAtODIsNyArODQsNyBAQCBmaW5kX3ZpZGVvKGFjcGlf aGFuZGxlIGhhbmRsZSwgdTMyIGx2bCwgdm9pZCAqY29udGV4dCwgdm9pZCAqKnJ2KQo+ICAgKiBi dWdneSAqLwo+ICBzdGF0aWMgaW50IHZpZGVvX2RldGVjdF9mb3JjZV92ZW5kb3IoY29uc3Qgc3Ry dWN0IGRtaV9zeXN0ZW1faWQgKmQpCj4gIHsKPiAtCWFjcGlfdmlkZW9fc3VwcG9ydCB8PSBBQ1BJ X1ZJREVPX0JBQ0tMSUdIVF9ETUlfVkVORE9SOwo+ICsJYWNwaV9iYWNrbGlnaHRfZG1pID0gYWNw aV9iYWNrbGlnaHRfdmVuZG9yOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTEzMCw5OSAr MTMyLDkxIEBAIHN0YXRpYyBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCB2aWRlb19kZXRlY3RfZG1pX3Rh YmxlW10gPSB7Cj4gIH07Cj4gIAo+ICAvKgo+IC0gKiBSZXR1cm5zIHRoZSB2aWRlbyBjYXBhYmls aXRpZXMgb2YgYSBzcGVjaWZpYyBBQ1BJIGdyYXBoaWNzIGRldmljZQo+ICsgKiBEZXRlcm1pbmUg d2hpY2ggdHlwZSBvZiBiYWNrbGlnaHQgaW50ZXJmYWNlIHRvIHVzZSBvbiB0aGlzIHN5c3RlbSwK PiArICogRmlyc3QgY2hlY2sgY21kbGluZSwgdGhlbiBkbWkgcXVpcmtzLCB0aGVuIGRvIGF1dG9k ZXRlY3QuCj4gKyAqCj4gKyAqIFRoZSBhdXRvZGV0ZWN0IG9yZGVyIGlzOgo+ICsgKiAxKSBJcyB0 aGUgYWNwaS12aWRlbyBiYWNrbGlnaHQgaW50ZXJmYWNlIHN1cHBvcnRlZCAtPgo+ICsgKiAgbm8s IHVzZSBhIHZlbmRvciBpbnRlcmZhY2UKPiArICogMikgSXMgdGhpcyBhIHdpbjggInJlYWR5IiBC SU9TIGFuZCBkbyB3ZSBoYXZlIGEgbmF0aXZlIGludGVyZmFjZSAtPgo+ICsgKiAgeWVzLCB1c2Ug YSBuYXRpdmUgaW50ZXJmYWNlCj4gKyAqIDMpIEVsc2UgdXNlIHRoZSBhY3BpLXZpZGVvIGludGVy ZmFjZQo+ICAgKgo+IC0gKiBpZiBOVUxMIGlzIHBhc3NlZCBhcyBhcmd1bWVudCBhbGwgQUNQSSBk ZXZpY2VzIGFyZSBlbnVtZXJhdGVkIGFuZAo+IC0gKiBhbGwgZ3JhcGhpY3MgY2FwYWJpbGl0aWVz IG9mIHBoeXNpY2FsbHkgcHJlc2VudCBkZXZpY2VzIGFyZQo+IC0gKiBzdW1tYXJpemVkIGFuZCBy ZXR1cm5lZC4gVGhpcyBpcyBjYWNoZWQgYW5kIGRvbmUgb25seSBvbmNlLgo+ICsgKiBBcmd1YWJs eSB0aGUgbmF0aXZlIG9uIHdpbjggY2hlY2sgc2hvdWxkIGJlIGRvbmUgZmlyc3QsIGJ1dCB0aGF0 IHdvdWxkCj4gKyAqIGJlIGEgYmVoYXZpb3IgY2hhbmdlLCB3aGljaCBtYXkgY2F1c2VzIGlzc3Vl cy4KPiAgICovCj4gLXN0YXRpYyBsb25nIGFjcGlfdmlkZW9fZ2V0X2NhcGFiaWxpdGllcyhhY3Bp X2hhbmRsZSBncmFwaGljc19oYW5kbGUpCj4gK2VudW0gYWNwaV9iYWNrbGlnaHRfdHlwZSBhY3Bp X3ZpZGVvX2dldF9iYWNrbGlnaHRfdHlwZSh2b2lkKQo+ICB7Cj4gLQlsb25nIGNhcHMgPSAwOwo+ IC0Jc3RydWN0IGFjcGlfZGV2aWNlICp0bXBfZGV2Owo+IC0JYWNwaV9zdGF0dXMgc3RhdHVzOwo+ IC0KPiAtCWlmIChhY3BpX3ZpZGVvX2NhcHNfY2hlY2tlZCAmJiBncmFwaGljc19oYW5kbGUgPT0g TlVMTCkKPiAtCQlyZXR1cm4gYWNwaV92aWRlb19zdXBwb3J0Owo+IC0KPiAtCWlmICghZ3JhcGhp Y3NfaGFuZGxlKSB7Cj4gLQkJLyogT25seSBkbyB0aGUgZ2xvYmFsIHdhbGsgdGhyb3VnaCBhbGwg Z3JhcGhpY3MgZGV2aWNlcyBvbmNlICovCj4gLQkJYWNwaV93YWxrX25hbWVzcGFjZShBQ1BJX1RZ UEVfREVWSUNFLCBBQ1BJX1JPT1RfT0JKRUNULAo+IC0JCQkJICAgIEFDUElfVUlOVDMyX01BWCwg ZmluZF92aWRlbywgTlVMTCwKPiAtCQkJCSAgICAmY2FwcywgTlVMTCk7Cj4gLQkJLyogVGhlcmUg bWlnaHQgYmUgYm9vdCBwYXJhbSBmbGFncyBzZXQgYWxyZWFkeS4uLiAqLwo+IC0JCWFjcGlfdmlk ZW9fc3VwcG9ydCB8PSBjYXBzOwo+IC0JCWFjcGlfdmlkZW9fY2Fwc19jaGVja2VkID0gMTsKPiAt CQkvKiBBZGQgYmxhY2tsaXN0cyBoZXJlLiBCZSBjYXJlZnVsIHRvIHVzZSB0aGUgcmlnaHQgKkRN SSogYml0cwo+IC0JCSAqIHRvIHN0aWxsIGJlIGFibGUgdG8gb3ZlcnJpZGUgbG9naWMgdmlhIGJv b3QgcGFyYW1zLCBlLmcuOgo+IC0JCSAqCj4gLQkJICogICBpZiAoZG1pX25hbWVfaW5fdmVuZG9y cygiWFkiKSkgewo+IC0JCSAqCWFjcGlfdmlkZW9fc3VwcG9ydCB8PQo+IC0JCSAqCQlBQ1BJX1ZJ REVPX0JBQ0tMSUdIVF9ETUlfVkVORE9SOwo+IC0JCSAqfQo+IC0JCSAqLwo+ICsJc3RhdGljIERF RklORV9NVVRFWChpbml0X211dGV4KTsKPiArCXN0YXRpYyBib29sIGluaXRfZG9uZTsKPiArCXN0 YXRpYyBsb25nIHZpZGVvX2NhcHM7Cj4gIAo+ICsJLyogUGFyc2UgY21kbGluZSwgZG1pIGFuZCBh Y3BpIG9ubHkgb25jZSAqLwo+ICsJbXV0ZXhfbG9jaygmaW5pdF9tdXRleCk7Cj4gKwlpZiAoIWlu aXRfZG9uZSkgewo+ICsJCWFjcGlfdmlkZW9fcGFyc2VfY21kbGluZSgpOwo+ICAJCWRtaV9jaGVj a19zeXN0ZW0odmlkZW9fZGV0ZWN0X2RtaV90YWJsZSk7Cj4gLQl9IGVsc2Ugewo+IC0JCXN0YXR1 cyA9IGFjcGlfYnVzX2dldF9kZXZpY2UoZ3JhcGhpY3NfaGFuZGxlLCAmdG1wX2Rldik7Cj4gLQkJ aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Cj4gLQkJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZP LCBzdGF0dXMsICJJbnZhbGlkIGRldmljZSIpKTsKPiAtCQkJcmV0dXJuIDA7Cj4gLQkJfQo+IC0J CWFjcGlfd2Fsa19uYW1lc3BhY2UoQUNQSV9UWVBFX0RFVklDRSwgZ3JhcGhpY3NfaGFuZGxlLAo+ ICsJCWFjcGlfd2Fsa19uYW1lc3BhY2UoQUNQSV9UWVBFX0RFVklDRSwgQUNQSV9ST09UX09CSkVD VCwKPiAgCQkJCSAgICBBQ1BJX1VJTlQzMl9NQVgsIGZpbmRfdmlkZW8sIE5VTEwsCj4gLQkJCQkg ICAgJmNhcHMsIE5VTEwpOwo+ICsJCQkJICAgICZ2aWRlb19jYXBzLCBOVUxMKTsKPiArCQlpbml0 X2RvbmUgPSB0cnVlOwo+ICAJfQo+IC0JQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLCAi V2UgaGF2ZSAweCVsWCB2aWRlbyBzdXBwb3J0ICVzICVzXG4iLAo+IC0JCQkgIGdyYXBoaWNzX2hh bmRsZSA/IGNhcHMgOiBhY3BpX3ZpZGVvX3N1cHBvcnQsCj4gLQkJCSAgZ3JhcGhpY3NfaGFuZGxl ID8gIm9uIGRldmljZSAiIDogImluIGdlbmVyYWwiLAo+IC0JCQkgIGdyYXBoaWNzX2hhbmRsZSA/ IGFjcGlfZGV2aWNlX2JpZCh0bXBfZGV2KSA6ICIiKSk7Cj4gLQlyZXR1cm4gY2FwczsKPiArCW11 dGV4X3VubG9jaygmaW5pdF9tdXRleCk7Cj4gKwo+ICsJaWYgKGFjcGlfYmFja2xpZ2h0X2NtZGxp bmUgIT0gYWNwaV9iYWNrbGlnaHRfdW5kZWYpCj4gKwkJcmV0dXJuIGFjcGlfYmFja2xpZ2h0X2Nt ZGxpbmU7Cj4gKwo+ICsJaWYgKGFjcGlfYmFja2xpZ2h0X2RtaSAhPSBhY3BpX2JhY2tsaWdodF91 bmRlZikKPiArCQlyZXR1cm4gYWNwaV9iYWNrbGlnaHRfZG1pOwo+ICsKPiArCWlmICghKHZpZGVv X2NhcHMgJiBBQ1BJX1ZJREVPX0JBQ0tMSUdIVCkpCj4gKwkJcmV0dXJuIGFjcGlfYmFja2xpZ2h0 X3ZlbmRvcjsKPiArCj4gKwlpZiAoYWNwaV9vc2lfaXNfd2luOCgpICYmIGJhY2tsaWdodF9kZXZp Y2VfcmVnaXN0ZXJlZChCQUNLTElHSFRfUkFXKSkKPiArCQlyZXR1cm4gYWNwaV9iYWNrbGlnaHRf bmF0aXZlOwo+ICsKPiArCXJldHVybiBhY3BpX2JhY2tsaWdodF92aWRlbzsKPiAgfQo+ICtFWFBP UlRfU1lNQk9MKGFjcGlfdmlkZW9fZ2V0X2JhY2tsaWdodF90eXBlKTsKPiAgCj4gLXN0YXRpYyB2 b2lkIGFjcGlfdmlkZW9fY2Fwc19jaGVjayh2b2lkKQo+ICsvKgo+ICsgKiBTZXQgdGhlIHByZWZl cnJlZCBiYWNrbGlnaHQgaW50ZXJmYWNlIHR5cGUgYmFzZWQgb24gRE1JIGluZm8uCj4gKyAqIFRo aXMgZnVuY3Rpb24gYWxsb3dzIERNSSBibGFja2xpc3RzIHRvIGJlIGltcGxlbWVudGVkIGJ5IGV4 dGVybmFsCj4gKyAqIHBsYXRmb3JtIGRyaXZlcnMgaW5zdGVhZCBvZiBwdXR0aW5nIGEgYmlnIGJs YWNrbGlzdCBpbiB2aWRlb19kZXRlY3QuYwo+ICsgKi8KPiArdm9pZCBhY3BpX3ZpZGVvX3NldF9k bWlfYmFja2xpZ2h0X3R5cGUoZW51bSBhY3BpX2JhY2tsaWdodF90eXBlIHR5cGUpCj4gIHsKPiAt CS8qCj4gLQkgKiBXZSBtdXN0IGNoZWNrIHdoZXRoZXIgdGhlIEFDUEkgZ3JhcGhpY3MgZGV2aWNl IGlzIHBoeXNpY2FsbHkgcGx1Z2dlZAo+IC0JICogaW4uIFRoZXJlZm9yZSB0aGlzIG11c3QgYmUg Y2FsbGVkIGFmdGVyIGJpbmRpbmcgUENJIGFuZCBBQ1BJIGRldmljZXMKPiAtCSAqLwo+IC0JaWYg KCFhY3BpX3ZpZGVvX2NhcHNfY2hlY2tlZCkgewo+IC0JCWFjcGlfdmlkZW9fcGFyc2VfY21kbGlu ZSgpOwo+IC0JCWFjcGlfdmlkZW9fZ2V0X2NhcGFiaWxpdGllcyhOVUxMKTsKPiAtCX0KPiArCWFj cGlfYmFja2xpZ2h0X2RtaSA9IHR5cGU7Cj4gIH0KPiArRVhQT1JUX1NZTUJPTChhY3BpX3ZpZGVv X3NldF9kbWlfYmFja2xpZ2h0X3R5cGUpOwo+ICAKPiAtLyogUHJvbW90ZSB0aGUgdmVuZG9yIGlu dGVyZmFjZSBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIHZpZGVvIG1vZHVsZS4KPiAtICogVGhpcyBm dW5jdGlvbiBhbGxvdyBETUkgYmxhY2tsaXN0cyB0byBiZSBpbXBsZW1lbnRlZCBieSBleHRlcm5h bHMKPiAtICogcGxhdGZvcm0gZHJpdmVycyBpbnN0ZWFkIG9mIHB1dHRpbmcgYSBiaWcgYmxhY2ts aXN0IGluIHZpZGVvX2RldGVjdC5jCj4gKy8qCj4gKyAqIENvbXBhdGlibGl0eSBmdW5jdGlvbiwg dGhpcyBpcyBnb2luZyBhd2F5IGFzIHNvb24gYXMgYWxsIGRyaXZlcnMgYXJlCj4gKyAqIGNvbnZl cnRlZCB0byBhY3BpX3ZpZGVvX3NldF9kbWlfYmFja2xpZ2h0X3R5cGUoKS4KPiArICoKPiArICog UHJvbW90ZSB0aGUgdmVuZG9yIGludGVyZmFjZSBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIHZpZGVv IG1vZHVsZS4KPiAgICogQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHlvdSB3aWxsIHByb2Jh Ymx5IHdhbnQgdG8gY2FsbAo+ICAgKiBhY3BpX3ZpZGVvX3VucmVnaXN0ZXIoKSB0byBtYWtlIHN1 cmUgdGhlIHZpZGVvIG1vZHVsZSBpcyBub3QgbG9hZGVkCj4gICAqLwo+ICB2b2lkIGFjcGlfdmlk ZW9fZG1pX3Byb21vdGVfdmVuZG9yKHZvaWQpCj4gIHsKPiAtCWFjcGlfdmlkZW9fY2Fwc19jaGVj aygpOwo+IC0JYWNwaV92aWRlb19zdXBwb3J0IHw9IEFDUElfVklERU9fQkFDS0xJR0hUX0RNSV9W RU5ET1I7Cj4gKwlhY3BpX3ZpZGVvX3NldF9kbWlfYmFja2xpZ2h0X3R5cGUoYWNwaV9iYWNrbGln aHRfdmVuZG9yKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGFjcGlfdmlkZW9fZG1pX3Byb21vdGVf dmVuZG9yKTsKPiAgCj4gLS8qIFJldHVybnMgdHJ1ZSBpZiB2aWRlby5rbyBjYW4gZG8gYmFja2xp Z2h0IHN3aXRjaGluZyAqLwo+ICsvKgo+ICsgKiBDb21wYXRpYmxpdHkgZnVuY3Rpb24sIHRoaXMg aXMgZ29pbmcgYXdheSBhcyBzb29uIGFzIGFsbCBkcml2ZXJzIGFyZQo+ICsgKiBjb252ZXJ0ZWQg dG8gYWNwaV92aWRlb19nZXRfYmFja2xpZ2h0X3R5cGUoKS4KPiArICoKPiArICogUmV0dXJucyB0 cnVlIGlmIHZpZGVvLmtvIGNhbiBkbyBiYWNrbGlnaHQgc3dpdGNoaW5nLgo+ICsgKi8KPiAgaW50 IGFjcGlfdmlkZW9fYmFja2xpZ2h0X3N1cHBvcnQodm9pZCkKPiAgewo+IC0JYWNwaV92aWRlb19j YXBzX2NoZWNrKCk7Cj4gLQo+IC0JLyogRmlyc3QgY2hlY2sgZm9yIGJvb3QgcGFyYW0gLT4gaGln aGVzdCBwcmlvICovCj4gLQlpZiAoYWNwaV92aWRlb19zdXBwb3J0ICYgQUNQSV9WSURFT19CQUNL TElHSFRfRk9SQ0VfVkVORE9SKQo+IC0JCXJldHVybiAwOwo+IC0JZWxzZSBpZiAoYWNwaV92aWRl b19zdXBwb3J0ICYgQUNQSV9WSURFT19CQUNLTElHSFRfRk9SQ0VfVklERU8pCj4gLQkJcmV0dXJu IDE7Cj4gLQo+IC0JLyogVGhlbiBjaGVjayBmb3IgRE1JIGJsYWNrbGlzdCAtPiBzZWNvbmQgaGln aGVzdCBwcmlvICovCj4gLQlpZiAoYWNwaV92aWRlb19zdXBwb3J0ICYgQUNQSV9WSURFT19CQUNL TElHSFRfRE1JX1ZFTkRPUikKPiAtCQlyZXR1cm4gMDsKPiAtCWVsc2UgaWYgKGFjcGlfdmlkZW9f c3VwcG9ydCAmIEFDUElfVklERU9fQkFDS0xJR0hUX0RNSV9WSURFTykKPiAtCQlyZXR1cm4gMTsK PiAtCj4gLQkvKiBUaGVuIGdvIHRoZSBkZWZhdWx0IHdheSAqLwo+IC0JcmV0dXJuIGFjcGlfdmlk ZW9fc3VwcG9ydCAmIEFDUElfVklERU9fQkFDS0xJR0hUOwo+ICsJLyoKPiArCSAqIFRoaXMgaXMg ZG9uZSB0aGlzIHdheSBzaW5jZSB2ZW5kb3IgZHJpdmVycyBjYWxsIHRoaXMgdG8gc2VlCj4gKwkg KiBpZiB0aGV5IHNob3VsZCBsb2FkLCBhbmQgd2UgZG8gbm90IHdhbnQgdGhlbSB0byBsb2FkIGZv ciBib3RoCj4gKwkgKiB0aGUgYWNwaV9iYWNrbGlnaHRfdmlkZW8gYW5kIGFjcGlfYmFja2xpZ2h0 X25hdGl2ZSBjYXNlcy4KPiArCSAqLwo+ICsJcmV0dXJuIGFjcGlfdmlkZW9fZ2V0X2JhY2tsaWdo dF90eXBlKCkgIT0gYWNwaV9iYWNrbGlnaHRfdmVuZG9yOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wo YWNwaV92aWRlb19iYWNrbGlnaHRfc3VwcG9ydCk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNw aS92aWRlby5oIGIvaW5jbHVkZS9hY3BpL3ZpZGVvLmgKPiBpbmRleCA4NDNlZjFhLi4wMWI1Y2M3 IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvYWNwaS92aWRlby5oCj4gKysrIGIvaW5jbHVkZS9hY3Bp L3ZpZGVvLmgKPiBAQCAtMTYsNiArMTYsMTQgQEAgc3RydWN0IGFjcGlfZGV2aWNlOwo+ICAjZGVm aW5lIEFDUElfVklERU9fRElTUExBWV9MRUdBQ1lfUEFORUwgICAweDAxMTAKPiAgI2RlZmluZSBB Q1BJX1ZJREVPX0RJU1BMQVlfTEVHQUNZX1RWICAgICAgMHgwMjAwCj4gIAo+ICtlbnVtIGFjcGlf YmFja2xpZ2h0X3R5cGUgewo+ICsJYWNwaV9iYWNrbGlnaHRfdW5kZWYgPSAtMSwKPiArCWFjcGlf YmFja2xpZ2h0X25vbmUgPSAwLAo+ICsJYWNwaV9iYWNrbGlnaHRfdmlkZW8sCj4gKwlhY3BpX2Jh Y2tsaWdodF92ZW5kb3IsCj4gKwlhY3BpX2JhY2tsaWdodF9uYXRpdmUsCj4gK307Cj4gKwo+ICAj aWYgKGRlZmluZWQgQ09ORklHX0FDUElfVklERU8gfHwgZGVmaW5lZCBDT05GSUdfQUNQSV9WSURF T19NT0RVTEUpCj4gIGV4dGVybiBpbnQgYWNwaV92aWRlb19yZWdpc3Rlcih2b2lkKTsKPiAgZXh0 ZXJuIHZvaWQgYWNwaV92aWRlb191bnJlZ2lzdGVyKHZvaWQpOwo+IEBAIC0yMyw2ICszMSw4IEBA IGV4dGVybiB2b2lkIGFjcGlfdmlkZW9fdW5yZWdpc3Rlcl9iYWNrbGlnaHQodm9pZCk7Cj4gIGV4 dGVybiBpbnQgYWNwaV92aWRlb19nZXRfZWRpZChzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSwg aW50IHR5cGUsCj4gIAkJCSAgICAgICBpbnQgZGV2aWNlX2lkLCB2b2lkICoqZWRpZCk7Cj4gIGV4 dGVybiBib29sIGFjcGlfdmlkZW9fdmVyaWZ5X2JhY2tsaWdodF9zdXBwb3J0KHZvaWQpOwo+ICtl eHRlcm4gZW51bSBhY3BpX2JhY2tsaWdodF90eXBlIGFjcGlfdmlkZW9fZ2V0X2JhY2tsaWdodF90 eXBlKHZvaWQpOwo+ICtleHRlcm4gdm9pZCBhY3BpX3ZpZGVvX3NldF9kbWlfYmFja2xpZ2h0X3R5 cGUoZW51bSBhY3BpX2JhY2tsaWdodF90eXBlIHR5cGUpOwo+ICAjZWxzZQo+ICBzdGF0aWMgaW5s aW5lIGludCBhY3BpX3ZpZGVvX3JlZ2lzdGVyKHZvaWQpIHsgcmV0dXJuIDA7IH0KPiAgc3RhdGlj IGlubGluZSB2b2lkIGFjcGlfdmlkZW9fdW5yZWdpc3Rlcih2b2lkKSB7IHJldHVybjsgfQo+IEBA IC0zMyw2ICs0MywxMyBAQCBzdGF0aWMgaW5saW5lIGludCBhY3BpX3ZpZGVvX2dldF9lZGlkKHN0 cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlLCBpbnQgdHlwZSwKPiAgCXJldHVybiAtRU5PREVWOwo+ ICB9Cj4gIHN0YXRpYyBpbmxpbmUgYm9vbCBhY3BpX3ZpZGVvX3ZlcmlmeV9iYWNrbGlnaHRfc3Vw cG9ydCh2b2lkKSB7IHJldHVybiBmYWxzZTsgfQo+ICtzdGF0aWMgaW5saW5lIGVudW0gYWNwaV9i YWNrbGlnaHRfdHlwZSBhY3BpX3ZpZGVvX2dldF9iYWNrbGlnaHRfdHlwZSh2b2lkKQo+ICt7Cj4g KwlyZXR1cm4gYWNwaV9iYWNrbGlnaHRfdmVuZG9yOwo+ICt9Cj4gK3N0YXRpYyB2b2lkIGFjcGlf dmlkZW9fc2V0X2RtaV9iYWNrbGlnaHRfdHlwZShlbnVtIGFjcGlfYmFja2xpZ2h0X3R5cGUgdHlw ZSkKPiArewo+ICt9Cj4gICNlbmRpZgo+ICAKPiAgI2VuZGlmCj4gLS0gCj4gMi40LjIKPiAKPiAt LQo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNj cmliZSBsaW51eC1hY3BpIiBpbgo+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9A dmdlci5rZXJuZWwub3JnCj4gTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2Vy bmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==