From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: Re: [PATCH 07/32] acpi-video-detect: Rewrite backlight interface selection logic Date: Thu, 11 Jun 2015 11:19:20 +0200 Message-ID: <55795298.9030904@redhat.com> References: <1433941292-21530-1-git-send-email-hdegoede@redhat.com> <1433941292-21530-8-git-send-email-hdegoede@redhat.com> <20150611090015.GA3235@aaronlu.sh.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20150611090015.GA3235@aaronlu.sh.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Aaron Lu 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 , =?windows-1252?Q?Pali_Roh=E1r?= , Darren Hart , platform-driver-x86@vger.kernel.org List-Id: linux-acpi@vger.kernel.org SGksCgpPbiAxMS0wNi0xNSAxMTowMCwgQWFyb24gTHUgd3JvdGU6Cj4gT24gV2VkLCBKdW4gMTAs IDIwMTUgYXQgMDM6MDE6MDdQTSArMDIwMCwgSGFucyBkZSBHb2VkZSB3cm90ZToKPj4gQ3VycmVu dGx5IHdlIGhhdmUgMiBrZXJuZWwgY29tbWFuZGxpbmUgb3B0aW9ucyArIGRtaS1xdWlya3MgaW4g MyBwbGFjZXMgYWxsCj4+IGludGVyYWN0aW5nIChpbiBpbnRlcmVzdGluZyB3YXlzKSB0byBzZWxl Y3Qgd2hpY2ggd2hpY2ggYmFja2xpZ2h0IGludGVyZmFjZQo+PiB0byB1c2UuIE9uIHRoZSBjb21t YW5kbGluZSB3ZSd2ZSBhY3BpX2JhY2tsaWdodD1bdmlkZW98dmVuZG9yXSBhbmQKPj4gdmlkZW8u dXNlX25hdGl2ZV9iYWNrbGlnaHQ9WzB8MV0uIERNSSBxdWlya3Mgd2UgaGF2ZSBpbgo+PiBhY3Bp L3ZpZGVvLWRldGVjdC5jLCBhY3BpL3ZpZGVvLmMgYW5kIGRyaXZlcnMvcGxhdGZvcm0veDg2Lyou YyAuCj4+Cj4+IFRoaXMgY29tbWl0IGlzIHRoZSBmaXJzdCBzdGVwIHRvIGNsZWFuaW5nIHRoaXMg dXAsIHJlcGxhY2luZyB0aGUgMiBjbWRsaW5lCj4+IG9wdGlvbnMgd2l0aCBqdXN0IGFjcGlfdmlk ZW8uYmFja2xpZ2h0PVt2aWRlb3x2ZW5kb3J8bmF0aXZlfG5vbmVdLCBhbmQKPj4gYWRkaW5nIGEg bmV3IEFQSSB0byB2aWRlb19kZXRlY3QuYyB0byByZWZsZWN0IHRoaXMuCj4KPiBJIGxpa2UgYmFj a2xpZ2h0PVtmaXJtd2FyZXxwbGF0Zm9ybXxyYXd8bm9uZV0gYmV0dGVyLCBidXQgdGhhdCB3b3Vs ZAo+IHJlcXVpcmUgdG8gcHV0IHRoZSBzZWxlY3Rpb24vcXVpcmsgbG9naWMgdG8gYmFja2xpZ2h0 IGNvcmUuIFdoYXQgZG8geW91Cj4gdGhpbms/CgpJIHRoaW5rIHlvdSBhcmUgYXNraW5nIDMgc2Vw YXJhdGUgcXVlc3Rpb25zOgoKMSkgU2hvdWxkIHRoZSBiYWNrbGlnaHQgc2VsZWN0aW9uIGxvZ2lj IG1heWJlIGJlIG1vdmVkIHRvIHRoZSBiYWNrbGlnaHQKY2xhc3MgY29kZSA/CgpNeSBhbnN3ZXIg dG8gdGhhdCBvbmUgaXM6IG5vIGl0IHNob3VsZCBub3QgYXMgaXQgaXMgeDg2L2FjcGkgc3BlY2lm aWMuCgoyKSBXaGF0IHdvdWxkIGJlIGEgZ29vZCBrZXJuZWwgY21kbGluZSBvcHRpb24gbmFtZSBm b3IgdGhpcz8KCkdpdmVuIHRoZSBhbnN3ZXIgdG8gb25lIEkgdGhpbmsgaXQgaXMgZ29vZCB0byBr ZWVwIGFjcGkgaW4gdGhlIG5hbWUKc3BhY2Ugb2YgdGhlIGNtZGxpbmUgb3B0aW9uLiBBbHNvIG5v dGUgdGhhdCBtb3ZpbmcgdGhlIGNvZGUgdG8gdGhlCmJhY2tsaWdodCBjbGFzcyBjb2RlIGRvZXMg bm90IG1hZ2ljYWxseSBnaXZlIHVzIGEgYmFja2xpZ2h0PSBjbWRsaW5lCm9wdGlvbi4gTm9uZSBt b2R1bGUtbmFtZSBwcmVmaXhlZCBjbWRsaW5lIG9wdGlvbnMgYXJlIG9ubHkgYXZhaWxhYmxlCnRv IGNvZGUgd2hpY2ggaXMgYWx3YXlzIGJ1aWx0aW4sIGFuZCB0aGUgYmFja2xpZ2h0IGNsYXNzIGNv ZGUgY2FuIGJlCmJ1aWxkIGFzIGEgbW9kdWxlLCBzbyBwdXR0aW5nIHRoZSBjbWRsaW5lIG9wdGlv biBpbiB0aGUgYmFja2xpZ2h0CmNsYXNzIHdpbGwgZ2l2ZSB1czogYmFja2xpZ2h0LmJhY2tsaWdo dD0KClNvIGFsbCBpbiBhbGwgSSB0aGluayBhY3BpX3ZpZGVvLmJhY2tsaWdodD0gaXMgYWN0dWFs bHkgcHJldHR5IG9rLgoKMykgV2hhdCB3b3VsZCBiZSBhIGdvb2Qga2VybmVsIGNtZGxpbmUgb3B0 aW9uIHZhbHVlcyBmb3IgdGhpcz8KCkkgYWdyZWUgdGhhdCB0aGUgb2xkIHZlbmRvci92aWRlby9u YXRpdmUgdmFsdWUgbGFiZWxzIGFyZSBub3QKbmVjZXNzYXJpbHkgdGhlIGJlc3QgbGFiZWxzIGZv ciB0aGlzLCBidXQgSSB3b3VsZCBsaWtlIHRvIGtlZXAKdGhlbSBhcyB0aG9zZSBhcmUgd2hhdCBw ZW9wbGUgYXJlIHVzZWQgdG8uIElkZWFsbHkgSSB3b3VsZCBsaWtlCnRvIGhhdmUganVzdCBrZXB0 IGFjcGlfYmFja2xpZ2h0PVt2aWRlb3x2ZW5kb3J8bmF0aXZlfG5vbmVdCmJ1dCB0aGF0IGlzIG5v dCBwb3NzaWJsZSB3aXRob3V0IG1ha2luZyBhbGwgb2YgdGhlIGFjcGlfdmlkZW8KY29kZSBhbHdh eXMgYnVpbHRpbi4KClJlZ2FyZHMsCgpIYW5zCgo+PiBGb2xsb3cgdXAgY29tbWl0cyB3aWxsIGFs c28gbW92ZSBvdGhlciByZWxhdGVkIGNvZGUsIGxpa2UgdW5yZWdpc3RlcmluZyB0aGUKPj4gYWNw aV92aWRlbyBiYWNrbGlnaHQgaW50ZXJmYWNlIGlmIGl0IHdhcyByZWdpc3RlcmVkIGJlZm9yZSBv dGhlciBkcml2ZXJzCj4+IHdoaWNoIHRha2UgcHJpb3JpdHkgb3ZlciBpdCBhcmUgbG9hZGVkLCB0 byB2aWRlb19kZXRlY3QuYyB3aGVyZSB0aGlzCj4+IGxvZ2ljIHJlYWxseSBiZWxvbmdzLgo+Pgo+ PiBTaWduZWQtb2ZmLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgo+PiAt LS0KPj4gICBkcml2ZXJzL2FjcGkvdmlkZW9fZGV0ZWN0LmMgfCAxNzIgKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gICBpbmNsdWRlL2FjcGkvdmlkZW8uaCAg ICAgICAgfCAgMTcgKysrKysKPj4gICAyIGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCsp LCA4OSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS92aWRlb19k ZXRlY3QuYyBiL2RyaXZlcnMvYWNwaS92aWRlb19kZXRlY3QuYwo+PiBpbmRleCAwYmM4Yjk4Li4w MWM4YzQ2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2FjcGkvdmlkZW9fZGV0ZWN0LmMKPj4gKysr IGIvZHJpdmVycy9hY3BpL3ZpZGVvX2RldGVjdC5jCj4+IEBAIC0xLDQgKzEsNiBAQAo+PiAgIC8q Cj4+ICsgKiAgQ29weXJpZ2h0IChDKSAyMDE1ICAgICAgIFJlZCBIYXQgSW5jLgo+PiArICogICAg ICAgICAgICAgICAgICAgICAgICAgICBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29t Pgo+PiAgICAqICBDb3B5cmlnaHQgKEMpIDIwMDggICAgICAgU3VTRSBMaW51eCBQcm9kdWN0cyBH bWJICj4+ICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgUmVubmluZ2VyIDx0 cmVubkBzdXNlLmRlPgo+PiAgICAqCj4+IEBAIC05LDI4ICsxMSwyNCBAQAo+PiAgICAqIGFjcGlf Z2V0X3BjaV9kZXYoKSBjYW4gYmUgY2FsbGVkIHRvIGlkZW50aWZ5IEFDUEkgZ3JhcGhpY3MKPj4g ICAgKiBkZXZpY2VzIGZvciB3aGljaCBhIHJlYWwgZ3JhcGhpY3MgY2FyZCBpcyBwbHVnZ2VkIGlu Cj4+ICAgICoKPj4gLSAqIE5vdyBhY3BpX3ZpZGVvX2dldF9jYXBhYmlsaXRpZXMoKSBjYW4gYmUg Y2FsbGVkIHRvIGNoZWNrIHdoaWNoCj4+IC0gKiBjYXBhYmlsaXRpZXMgdGhlIGdyYXBoaWNzIGNh cmRzIHBsdWdnZWQgaW4gc3VwcG9ydC4gVGhlIGNoZWNrIGZvciBnZW5lcmFsCj4+IC0gKiB2aWRl byBjYXBhYmlsaXRpZXMgd2lsbCBiZSB0cmlnZ2VyZWQgYnkgdGhlIGZpcnN0IGNhbGxlciBvZgo+ PiAtICogYWNwaV92aWRlb19nZXRfY2FwYWJpbGl0aWVzKE5VTEwpOyB3aGljaCB3aWxsIGhhcHBl biB3aGVuIHRoZSBmaXJzdAo+PiAtICogYmFja2xpZ2h0IHN3aXRjaGluZyBzdXBwb3J0aW5nIGRy aXZlciBjYWxsczoKPj4gLSAqIGFjcGlfdmlkZW9fYmFja2xpZ2h0X3N1cHBvcnQoKTsKPj4gLSAq Cj4+ICAgICogRGVwZW5kaW5nIG9uIHdoZXRoZXIgQUNQSSBncmFwaGljcyBleHRlbnNpb25zIChj bXAuIEFDUEkgc3BlYyBBcHBlbmRpeCBCKQo+PiAgICAqIGFyZSBhdmFpbGFibGUsIHZpZGVvLmtv IHNob3VsZCBiZSB1c2VkIHRvIGhhbmRsZSB0aGUgZGV2aWNlLgo+PiAgICAqCj4+ICAgICogT3Ro ZXJ3aXNlIHZlbmRvciBzcGVjaWZpYyBkcml2ZXJzIGxpa2UgdGhpbmtwYWRfYWNwaSwgYXN1cy1s YXB0b3AsCj4+ICAgICogc29ueV9hY3BpLC4uLiBjYW4gdGFrZSBjYXJlIGFib3V0IGJhY2tsaWdo dCBicmlnaHRuZXNzLgo+PiAgICAqCj4+IC0gKiBJZiBDT05GSUdfQUNQSV9WSURFTyBpcyBuZWl0 aGVyIHNldCBhcyAiY29tcGlsZWQgaW4iICh5KSBub3IgYXMgYSBtb2R1bGUgKG0pCj4+IC0gKiB0 aGlzIGZpbGUgd2lsbCBub3QgYmUgY29tcGlsZWQsIGFjcGlfdmlkZW9fZ2V0X2NhcGFiaWxpdGll cygpIGFuZAo+PiAtICogYWNwaV92aWRlb19iYWNrbGlnaHRfc3VwcG9ydCgpIHdpbGwgYWx3YXlz IHJldHVybiAwIGFuZCB2ZW5kb3Igc3BlY2lmaWMKPj4gLSAqIGRyaXZlcnMgYWx3YXlzIGNhbiBo YW5kbGUgYmFja2xpZ2h0Lgo+PiArICogQmFja2xpZ2h0IGRyaXZlcnMgY2FuIHVzZSBhY3BpX3Zp ZGVvX2dldF9iYWNrbGlnaHRfdHlwZSgpIHRvIGRldGVybWluZQo+PiArICogd2hpY2ggZHJpdmVy IHNob3VsZCBoYW5kbGUgdGhlIGJhY2tsaWdodC4KPj4gICAgKgo+PiArICogSWYgQ09ORklHX0FD UElfVklERU8gaXMgbmVpdGhlciBzZXQgYXMgImNvbXBpbGVkIGluIiAoeSkgbm9yIGFzIGEgbW9k dWxlIChtKQo+PiArICogdGhpcyBmaWxlIHdpbGwgbm90IGJlIGNvbXBpbGVkIGFuZCBhY3BpX3Zp ZGVvX2dldF9iYWNrbGlnaHRfdHlwZSgpIHdpbGwKPj4gKyAqIGFsd2F5cyByZXR1cm4gYWNwaV9i YWNrbGlnaHRfdmVuZG9yLgo+PiAgICAqLwo+Pgo+PiArI2luY2x1ZGUgPGFjcGkvdmlkZW8uaD4K Pj4gICAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L2FjcGku aD4KPj4gKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KPj4gICAjaW5jbHVkZSA8bGludXgv ZG1pLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiAgICNpbmNsdWRlIDxsaW51 eC9wY2kuaD4KPj4gQEAgLTM4LDIwICszNiwyNCBAQAo+PiAgIEFDUElfTU9EVUxFX05BTUUoInZp ZGVvIik7Cj4+ICAgI2RlZmluZSBfQ09NUE9ORU5UCQlBQ1BJX1ZJREVPX0NPTVBPTkVOVAo+Pgo+ PiAtc3RhdGljIGxvbmcgYWNwaV92aWRlb19zdXBwb3J0Owo+PiAtc3RhdGljIGJvb2wgYWNwaV92 aWRlb19jYXBzX2NoZWNrZWQ7Cj4+ICtzdGF0aWMgZW51bSBhY3BpX2JhY2tsaWdodF90eXBlIGFj cGlfYmFja2xpZ2h0X2NtZGxpbmUgPSBhY3BpX2JhY2tsaWdodF91bmRlZjsKPj4gK3N0YXRpYyBl bnVtIGFjcGlfYmFja2xpZ2h0X3R5cGUgYWNwaV9iYWNrbGlnaHRfZG1pID0gYWNwaV9iYWNrbGln aHRfdW5kZWY7Cj4+Cj4+ICAgc3RhdGljIGNoYXIgYWNwaV9iYWNrbGlnaHRfc3RyWzE2XTsKPj4g ICBtb2R1bGVfcGFyYW1fc3RyaW5nKGJhY2tsaWdodCwgYWNwaV9iYWNrbGlnaHRfc3RyLCAxNiwg MDQ0NCk7Cj4+ICAgTU9EVUxFX1BBUk1fREVTQyhiYWNrbGlnaHQsCj4+IC0JIlNlbGVjdCB3aGlj aCBiYWNrbGlnaHQgaW50ZXJmYWNlIHRvIHVzZSBbdmVuZG9yfHZpZGVvXSIpOwo+PiArCSJTZWxl Y3Qgd2hpY2ggYmFja2xpZ2h0IGludGVyZmFjZSB0byB1c2UgW3ZlbmRvcnx2aWRlb3xuYXRpdmVd Iik7Cj4+Cj4+ICAgc3RhdGljIHZvaWQgYWNwaV92aWRlb19wYXJzZV9jbWRsaW5lKHZvaWQpCj4+ ICAgewo+PiAgIAlpZiAoIXN0cmNtcCgidmVuZG9yIiwgYWNwaV9iYWNrbGlnaHRfc3RyKSkKPj4g LQkJYWNwaV92aWRlb19zdXBwb3J0IHw9IEFDUElfVklERU9fQkFDS0xJR0hUX0ZPUkNFX1ZFTkRP UjsKPj4gKwkJYWNwaV9iYWNrbGlnaHRfY21kbGluZSA9IGFjcGlfYmFja2xpZ2h0X3ZlbmRvcjsK Pj4gICAJaWYgKCFzdHJjbXAoInZpZGVvIiwgYWNwaV9iYWNrbGlnaHRfc3RyKSkKPj4gLQkJYWNw aV92aWRlb19zdXBwb3J0IHw9IEFDUElfVklERU9fQkFDS0xJR0hUX0ZPUkNFX1ZJREVPOwo+PiAr CQlhY3BpX2JhY2tsaWdodF9jbWRsaW5lID0gYWNwaV9iYWNrbGlnaHRfdmlkZW87Cj4+ICsJaWYg KCFzdHJjbXAoIm5hdGl2ZSIsIGFjcGlfYmFja2xpZ2h0X3N0cikpCj4+ICsJCWFjcGlfYmFja2xp Z2h0X2NtZGxpbmUgPSBhY3BpX2JhY2tsaWdodF9uYXRpdmU7Cj4+ICsJaWYgKCFzdHJjbXAoIm5v bmUiLCBhY3BpX2JhY2tsaWdodF9zdHIpKQo+PiArCQlhY3BpX2JhY2tsaWdodF9jbWRsaW5lID0g YWNwaV9iYWNrbGlnaHRfbm9uZTsKPj4gICB9Cj4+Cj4+ICAgc3RhdGljIGFjcGlfc3RhdHVzCj4+ IEBAIC04Miw3ICs4NCw3IEBAIGZpbmRfdmlkZW8oYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgbHZs LCB2b2lkICpjb250ZXh0LCB2b2lkICoqcnYpCj4+ICAgICogYnVnZ3kgKi8KPj4gICBzdGF0aWMg aW50IHZpZGVvX2RldGVjdF9mb3JjZV92ZW5kb3IoY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQg KmQpCj4+ICAgewo+PiAtCWFjcGlfdmlkZW9fc3VwcG9ydCB8PSBBQ1BJX1ZJREVPX0JBQ0tMSUdI VF9ETUlfVkVORE9SOwo+PiArCWFjcGlfYmFja2xpZ2h0X2RtaSA9IGFjcGlfYmFja2xpZ2h0X3Zl bmRvcjsKPj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+Pgo+PiBAQCAtMTMwLDk5ICsxMzIsOTEgQEAg c3RhdGljIHN0cnVjdCBkbWlfc3lzdGVtX2lkIHZpZGVvX2RldGVjdF9kbWlfdGFibGVbXSA9IHsK Pj4gICB9Owo+Pgo+PiAgIC8qCj4+IC0gKiBSZXR1cm5zIHRoZSB2aWRlbyBjYXBhYmlsaXRpZXMg b2YgYSBzcGVjaWZpYyBBQ1BJIGdyYXBoaWNzIGRldmljZQo+PiArICogRGV0ZXJtaW5lIHdoaWNo IHR5cGUgb2YgYmFja2xpZ2h0IGludGVyZmFjZSB0byB1c2Ugb24gdGhpcyBzeXN0ZW0sCj4+ICsg KiBGaXJzdCBjaGVjayBjbWRsaW5lLCB0aGVuIGRtaSBxdWlya3MsIHRoZW4gZG8gYXV0b2RldGVj dC4KPj4gKyAqCj4+ICsgKiBUaGUgYXV0b2RldGVjdCBvcmRlciBpczoKPj4gKyAqIDEpIElzIHRo ZSBhY3BpLXZpZGVvIGJhY2tsaWdodCBpbnRlcmZhY2Ugc3VwcG9ydGVkIC0+Cj4+ICsgKiAgbm8s IHVzZSBhIHZlbmRvciBpbnRlcmZhY2UKPj4gKyAqIDIpIElzIHRoaXMgYSB3aW44ICJyZWFkeSIg QklPUyBhbmQgZG8gd2UgaGF2ZSBhIG5hdGl2ZSBpbnRlcmZhY2UgLT4KPj4gKyAqICB5ZXMsIHVz ZSBhIG5hdGl2ZSBpbnRlcmZhY2UKPj4gKyAqIDMpIEVsc2UgdXNlIHRoZSBhY3BpLXZpZGVvIGlu dGVyZmFjZQo+PiAgICAqCj4+IC0gKiBpZiBOVUxMIGlzIHBhc3NlZCBhcyBhcmd1bWVudCBhbGwg QUNQSSBkZXZpY2VzIGFyZSBlbnVtZXJhdGVkIGFuZAo+PiAtICogYWxsIGdyYXBoaWNzIGNhcGFi aWxpdGllcyBvZiBwaHlzaWNhbGx5IHByZXNlbnQgZGV2aWNlcyBhcmUKPj4gLSAqIHN1bW1hcml6 ZWQgYW5kIHJldHVybmVkLiBUaGlzIGlzIGNhY2hlZCBhbmQgZG9uZSBvbmx5IG9uY2UuCj4+ICsg KiBBcmd1YWJseSB0aGUgbmF0aXZlIG9uIHdpbjggY2hlY2sgc2hvdWxkIGJlIGRvbmUgZmlyc3Qs IGJ1dCB0aGF0IHdvdWxkCj4+ICsgKiBiZSBhIGJlaGF2aW9yIGNoYW5nZSwgd2hpY2ggbWF5IGNh dXNlcyBpc3N1ZXMuCj4+ICAgICovCj4+IC1zdGF0aWMgbG9uZyBhY3BpX3ZpZGVvX2dldF9jYXBh YmlsaXRpZXMoYWNwaV9oYW5kbGUgZ3JhcGhpY3NfaGFuZGxlKQo+PiArZW51bSBhY3BpX2JhY2ts aWdodF90eXBlIGFjcGlfdmlkZW9fZ2V0X2JhY2tsaWdodF90eXBlKHZvaWQpCj4+ICAgewo+PiAt CWxvbmcgY2FwcyA9IDA7Cj4+IC0Jc3RydWN0IGFjcGlfZGV2aWNlICp0bXBfZGV2Owo+PiAtCWFj cGlfc3RhdHVzIHN0YXR1czsKPj4gLQo+PiAtCWlmIChhY3BpX3ZpZGVvX2NhcHNfY2hlY2tlZCAm JiBncmFwaGljc19oYW5kbGUgPT0gTlVMTCkKPj4gLQkJcmV0dXJuIGFjcGlfdmlkZW9fc3VwcG9y dDsKPj4gLQo+PiAtCWlmICghZ3JhcGhpY3NfaGFuZGxlKSB7Cj4+IC0JCS8qIE9ubHkgZG8gdGhl IGdsb2JhbCB3YWxrIHRocm91Z2ggYWxsIGdyYXBoaWNzIGRldmljZXMgb25jZSAqLwo+PiAtCQlh Y3BpX3dhbGtfbmFtZXNwYWNlKEFDUElfVFlQRV9ERVZJQ0UsIEFDUElfUk9PVF9PQkpFQ1QsCj4+ IC0JCQkJICAgIEFDUElfVUlOVDMyX01BWCwgZmluZF92aWRlbywgTlVMTCwKPj4gLQkJCQkgICAg JmNhcHMsIE5VTEwpOwo+PiAtCQkvKiBUaGVyZSBtaWdodCBiZSBib290IHBhcmFtIGZsYWdzIHNl dCBhbHJlYWR5Li4uICovCj4+IC0JCWFjcGlfdmlkZW9fc3VwcG9ydCB8PSBjYXBzOwo+PiAtCQlh Y3BpX3ZpZGVvX2NhcHNfY2hlY2tlZCA9IDE7Cj4+IC0JCS8qIEFkZCBibGFja2xpc3RzIGhlcmUu IEJlIGNhcmVmdWwgdG8gdXNlIHRoZSByaWdodCAqRE1JKiBiaXRzCj4+IC0JCSAqIHRvIHN0aWxs IGJlIGFibGUgdG8gb3ZlcnJpZGUgbG9naWMgdmlhIGJvb3QgcGFyYW1zLCBlLmcuOgo+PiAtCQkg Kgo+PiAtCQkgKiAgIGlmIChkbWlfbmFtZV9pbl92ZW5kb3JzKCJYWSIpKSB7Cj4+IC0JCSAqCWFj cGlfdmlkZW9fc3VwcG9ydCB8PQo+PiAtCQkgKgkJQUNQSV9WSURFT19CQUNLTElHSFRfRE1JX1ZF TkRPUjsKPj4gLQkJICp9Cj4+IC0JCSAqLwo+PiArCXN0YXRpYyBERUZJTkVfTVVURVgoaW5pdF9t dXRleCk7Cj4+ICsJc3RhdGljIGJvb2wgaW5pdF9kb25lOwo+PiArCXN0YXRpYyBsb25nIHZpZGVv X2NhcHM7Cj4+Cj4+ICsJLyogUGFyc2UgY21kbGluZSwgZG1pIGFuZCBhY3BpIG9ubHkgb25jZSAq Lwo+PiArCW11dGV4X2xvY2soJmluaXRfbXV0ZXgpOwo+PiArCWlmICghaW5pdF9kb25lKSB7Cj4+ ICsJCWFjcGlfdmlkZW9fcGFyc2VfY21kbGluZSgpOwo+PiAgIAkJZG1pX2NoZWNrX3N5c3RlbSh2 aWRlb19kZXRlY3RfZG1pX3RhYmxlKTsKPj4gLQl9IGVsc2Ugewo+PiAtCQlzdGF0dXMgPSBhY3Bp X2J1c19nZXRfZGV2aWNlKGdyYXBoaWNzX2hhbmRsZSwgJnRtcF9kZXYpOwo+PiAtCQlpZiAoQUNQ SV9GQUlMVVJFKHN0YXR1cykpIHsKPj4gLQkJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0 dXMsICJJbnZhbGlkIGRldmljZSIpKTsKPj4gLQkJCXJldHVybiAwOwo+PiAtCQl9Cj4+IC0JCWFj cGlfd2Fsa19uYW1lc3BhY2UoQUNQSV9UWVBFX0RFVklDRSwgZ3JhcGhpY3NfaGFuZGxlLAo+PiAr CQlhY3BpX3dhbGtfbmFtZXNwYWNlKEFDUElfVFlQRV9ERVZJQ0UsIEFDUElfUk9PVF9PQkpFQ1Qs Cj4+ICAgCQkJCSAgICBBQ1BJX1VJTlQzMl9NQVgsIGZpbmRfdmlkZW8sIE5VTEwsCj4+IC0JCQkJ ICAgICZjYXBzLCBOVUxMKTsKPj4gKwkJCQkgICAgJnZpZGVvX2NhcHMsIE5VTEwpOwo+PiArCQlp bml0X2RvbmUgPSB0cnVlOwo+PiAgIAl9Cj4+IC0JQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9J TkZPLCAiV2UgaGF2ZSAweCVsWCB2aWRlbyBzdXBwb3J0ICVzICVzXG4iLAo+PiAtCQkJICBncmFw aGljc19oYW5kbGUgPyBjYXBzIDogYWNwaV92aWRlb19zdXBwb3J0LAo+PiAtCQkJICBncmFwaGlj c19oYW5kbGUgPyAib24gZGV2aWNlICIgOiAiaW4gZ2VuZXJhbCIsCj4+IC0JCQkgIGdyYXBoaWNz X2hhbmRsZSA/IGFjcGlfZGV2aWNlX2JpZCh0bXBfZGV2KSA6ICIiKSk7Cj4+IC0JcmV0dXJuIGNh cHM7Cj4+ICsJbXV0ZXhfdW5sb2NrKCZpbml0X211dGV4KTsKPj4gKwo+PiArCWlmIChhY3BpX2Jh Y2tsaWdodF9jbWRsaW5lICE9IGFjcGlfYmFja2xpZ2h0X3VuZGVmKQo+PiArCQlyZXR1cm4gYWNw aV9iYWNrbGlnaHRfY21kbGluZTsKPj4gKwo+PiArCWlmIChhY3BpX2JhY2tsaWdodF9kbWkgIT0g YWNwaV9iYWNrbGlnaHRfdW5kZWYpCj4+ICsJCXJldHVybiBhY3BpX2JhY2tsaWdodF9kbWk7Cj4+ ICsKPj4gKwlpZiAoISh2aWRlb19jYXBzICYgQUNQSV9WSURFT19CQUNLTElHSFQpKQo+PiArCQly ZXR1cm4gYWNwaV9iYWNrbGlnaHRfdmVuZG9yOwo+PiArCj4+ICsJaWYgKGFjcGlfb3NpX2lzX3dp bjgoKSAmJiBiYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyZWQoQkFDS0xJR0hUX1JBVykpCj4+ICsJ CXJldHVybiBhY3BpX2JhY2tsaWdodF9uYXRpdmU7Cj4+ICsKPj4gKwlyZXR1cm4gYWNwaV9iYWNr bGlnaHRfdmlkZW87Cj4+ICAgfQo+PiArRVhQT1JUX1NZTUJPTChhY3BpX3ZpZGVvX2dldF9iYWNr bGlnaHRfdHlwZSk7Cj4+Cj4+IC1zdGF0aWMgdm9pZCBhY3BpX3ZpZGVvX2NhcHNfY2hlY2sodm9p ZCkKPj4gKy8qCj4+ICsgKiBTZXQgdGhlIHByZWZlcnJlZCBiYWNrbGlnaHQgaW50ZXJmYWNlIHR5 cGUgYmFzZWQgb24gRE1JIGluZm8uCj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBETUkgYmxh Y2tsaXN0cyB0byBiZSBpbXBsZW1lbnRlZCBieSBleHRlcm5hbAo+PiArICogcGxhdGZvcm0gZHJp dmVycyBpbnN0ZWFkIG9mIHB1dHRpbmcgYSBiaWcgYmxhY2tsaXN0IGluIHZpZGVvX2RldGVjdC5j Cj4+ICsgKi8KPj4gK3ZvaWQgYWNwaV92aWRlb19zZXRfZG1pX2JhY2tsaWdodF90eXBlKGVudW0g YWNwaV9iYWNrbGlnaHRfdHlwZSB0eXBlKQo+PiAgIHsKPj4gLQkvKgo+PiAtCSAqIFdlIG11c3Qg Y2hlY2sgd2hldGhlciB0aGUgQUNQSSBncmFwaGljcyBkZXZpY2UgaXMgcGh5c2ljYWxseSBwbHVn Z2VkCj4+IC0JICogaW4uIFRoZXJlZm9yZSB0aGlzIG11c3QgYmUgY2FsbGVkIGFmdGVyIGJpbmRp bmcgUENJIGFuZCBBQ1BJIGRldmljZXMKPj4gLQkgKi8KPj4gLQlpZiAoIWFjcGlfdmlkZW9fY2Fw c19jaGVja2VkKSB7Cj4+IC0JCWFjcGlfdmlkZW9fcGFyc2VfY21kbGluZSgpOwo+PiAtCQlhY3Bp X3ZpZGVvX2dldF9jYXBhYmlsaXRpZXMoTlVMTCk7Cj4+IC0JfQo+PiArCWFjcGlfYmFja2xpZ2h0 X2RtaSA9IHR5cGU7Cj4+ICAgfQo+PiArRVhQT1JUX1NZTUJPTChhY3BpX3ZpZGVvX3NldF9kbWlf YmFja2xpZ2h0X3R5cGUpOwo+Pgo+PiAtLyogUHJvbW90ZSB0aGUgdmVuZG9yIGludGVyZmFjZSBp bnN0ZWFkIG9mIHRoZSBnZW5lcmljIHZpZGVvIG1vZHVsZS4KPj4gLSAqIFRoaXMgZnVuY3Rpb24g YWxsb3cgRE1JIGJsYWNrbGlzdHMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgZXh0ZXJuYWxzCj4+IC0g KiBwbGF0Zm9ybSBkcml2ZXJzIGluc3RlYWQgb2YgcHV0dGluZyBhIGJpZyBibGFja2xpc3QgaW4g dmlkZW9fZGV0ZWN0LmMKPj4gKy8qCj4+ICsgKiBDb21wYXRpYmxpdHkgZnVuY3Rpb24sIHRoaXMg aXMgZ29pbmcgYXdheSBhcyBzb29uIGFzIGFsbCBkcml2ZXJzIGFyZQo+PiArICogY29udmVydGVk IHRvIGFjcGlfdmlkZW9fc2V0X2RtaV9iYWNrbGlnaHRfdHlwZSgpLgo+PiArICoKPj4gKyAqIFBy b21vdGUgdGhlIHZlbmRvciBpbnRlcmZhY2UgaW5zdGVhZCBvZiB0aGUgZ2VuZXJpYyB2aWRlbyBt b2R1bGUuCj4+ICAgICogQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHlvdSB3aWxsIHByb2Jh Ymx5IHdhbnQgdG8gY2FsbAo+PiAgICAqIGFjcGlfdmlkZW9fdW5yZWdpc3RlcigpIHRvIG1ha2Ug c3VyZSB0aGUgdmlkZW8gbW9kdWxlIGlzIG5vdCBsb2FkZWQKPj4gICAgKi8KPj4gICB2b2lkIGFj cGlfdmlkZW9fZG1pX3Byb21vdGVfdmVuZG9yKHZvaWQpCj4+ICAgewo+PiAtCWFjcGlfdmlkZW9f Y2Fwc19jaGVjaygpOwo+PiAtCWFjcGlfdmlkZW9fc3VwcG9ydCB8PSBBQ1BJX1ZJREVPX0JBQ0tM SUdIVF9ETUlfVkVORE9SOwo+PiArCWFjcGlfdmlkZW9fc2V0X2RtaV9iYWNrbGlnaHRfdHlwZShh Y3BpX2JhY2tsaWdodF92ZW5kb3IpOwo+PiAgIH0KPj4gICBFWFBPUlRfU1lNQk9MKGFjcGlfdmlk ZW9fZG1pX3Byb21vdGVfdmVuZG9yKTsKPj4KPj4gLS8qIFJldHVybnMgdHJ1ZSBpZiB2aWRlby5r byBjYW4gZG8gYmFja2xpZ2h0IHN3aXRjaGluZyAqLwo+PiArLyoKPj4gKyAqIENvbXBhdGlibGl0 eSBmdW5jdGlvbiwgdGhpcyBpcyBnb2luZyBhd2F5IGFzIHNvb24gYXMgYWxsIGRyaXZlcnMgYXJl Cj4+ICsgKiBjb252ZXJ0ZWQgdG8gYWNwaV92aWRlb19nZXRfYmFja2xpZ2h0X3R5cGUoKS4KPj4g KyAqCj4+ICsgKiBSZXR1cm5zIHRydWUgaWYgdmlkZW8ua28gY2FuIGRvIGJhY2tsaWdodCBzd2l0 Y2hpbmcuCj4+ICsgKi8KPj4gICBpbnQgYWNwaV92aWRlb19iYWNrbGlnaHRfc3VwcG9ydCh2b2lk KQo+PiAgIHsKPj4gLQlhY3BpX3ZpZGVvX2NhcHNfY2hlY2soKTsKPj4gLQo+PiAtCS8qIEZpcnN0 IGNoZWNrIGZvciBib290IHBhcmFtIC0+IGhpZ2hlc3QgcHJpbyAqLwo+PiAtCWlmIChhY3BpX3Zp ZGVvX3N1cHBvcnQgJiBBQ1BJX1ZJREVPX0JBQ0tMSUdIVF9GT1JDRV9WRU5ET1IpCj4+IC0JCXJl dHVybiAwOwo+PiAtCWVsc2UgaWYgKGFjcGlfdmlkZW9fc3VwcG9ydCAmIEFDUElfVklERU9fQkFD S0xJR0hUX0ZPUkNFX1ZJREVPKQo+PiAtCQlyZXR1cm4gMTsKPj4gLQo+PiAtCS8qIFRoZW4gY2hl Y2sgZm9yIERNSSBibGFja2xpc3QgLT4gc2Vjb25kIGhpZ2hlc3QgcHJpbyAqLwo+PiAtCWlmIChh Y3BpX3ZpZGVvX3N1cHBvcnQgJiBBQ1BJX1ZJREVPX0JBQ0tMSUdIVF9ETUlfVkVORE9SKQo+PiAt CQlyZXR1cm4gMDsKPj4gLQllbHNlIGlmIChhY3BpX3ZpZGVvX3N1cHBvcnQgJiBBQ1BJX1ZJREVP X0JBQ0tMSUdIVF9ETUlfVklERU8pCj4+IC0JCXJldHVybiAxOwo+PiAtCj4+IC0JLyogVGhlbiBn byB0aGUgZGVmYXVsdCB3YXkgKi8KPj4gLQlyZXR1cm4gYWNwaV92aWRlb19zdXBwb3J0ICYgQUNQ SV9WSURFT19CQUNLTElHSFQ7Cj4+ICsJLyoKPj4gKwkgKiBUaGlzIGlzIGRvbmUgdGhpcyB3YXkg c2luY2UgdmVuZG9yIGRyaXZlcnMgY2FsbCB0aGlzIHRvIHNlZQo+PiArCSAqIGlmIHRoZXkgc2hv dWxkIGxvYWQsIGFuZCB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGxvYWQgZm9yIGJvdGgKPj4gKwkg KiB0aGUgYWNwaV9iYWNrbGlnaHRfdmlkZW8gYW5kIGFjcGlfYmFja2xpZ2h0X25hdGl2ZSBjYXNl cy4KPj4gKwkgKi8KPj4gKwlyZXR1cm4gYWNwaV92aWRlb19nZXRfYmFja2xpZ2h0X3R5cGUoKSAh PSBhY3BpX2JhY2tsaWdodF92ZW5kb3I7Cj4+ICAgfQo+PiAgIEVYUE9SVF9TWU1CT0woYWNwaV92 aWRlb19iYWNrbGlnaHRfc3VwcG9ydCk7Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvdmlk ZW8uaCBiL2luY2x1ZGUvYWNwaS92aWRlby5oCj4+IGluZGV4IDg0M2VmMWEuLjAxYjVjYzcgMTAw NjQ0Cj4+IC0tLSBhL2luY2x1ZGUvYWNwaS92aWRlby5oCj4+ICsrKyBiL2luY2x1ZGUvYWNwaS92 aWRlby5oCj4+IEBAIC0xNiw2ICsxNiwxNCBAQCBzdHJ1Y3QgYWNwaV9kZXZpY2U7Cj4+ICAgI2Rl ZmluZSBBQ1BJX1ZJREVPX0RJU1BMQVlfTEVHQUNZX1BBTkVMICAgMHgwMTEwCj4+ICAgI2RlZmlu ZSBBQ1BJX1ZJREVPX0RJU1BMQVlfTEVHQUNZX1RWICAgICAgMHgwMjAwCj4+Cj4+ICtlbnVtIGFj cGlfYmFja2xpZ2h0X3R5cGUgewo+PiArCWFjcGlfYmFja2xpZ2h0X3VuZGVmID0gLTEsCj4+ICsJ YWNwaV9iYWNrbGlnaHRfbm9uZSA9IDAsCj4+ICsJYWNwaV9iYWNrbGlnaHRfdmlkZW8sCj4+ICsJ YWNwaV9iYWNrbGlnaHRfdmVuZG9yLAo+PiArCWFjcGlfYmFja2xpZ2h0X25hdGl2ZSwKPj4gK307 Cj4+ICsKPj4gICAjaWYgKGRlZmluZWQgQ09ORklHX0FDUElfVklERU8gfHwgZGVmaW5lZCBDT05G SUdfQUNQSV9WSURFT19NT0RVTEUpCj4+ICAgZXh0ZXJuIGludCBhY3BpX3ZpZGVvX3JlZ2lzdGVy KHZvaWQpOwo+PiAgIGV4dGVybiB2b2lkIGFjcGlfdmlkZW9fdW5yZWdpc3Rlcih2b2lkKTsKPj4g QEAgLTIzLDYgKzMxLDggQEAgZXh0ZXJuIHZvaWQgYWNwaV92aWRlb191bnJlZ2lzdGVyX2JhY2ts aWdodCh2b2lkKTsKPj4gICBleHRlcm4gaW50IGFjcGlfdmlkZW9fZ2V0X2VkaWQoc3RydWN0IGFj cGlfZGV2aWNlICpkZXZpY2UsIGludCB0eXBlLAo+PiAgIAkJCSAgICAgICBpbnQgZGV2aWNlX2lk LCB2b2lkICoqZWRpZCk7Cj4+ICAgZXh0ZXJuIGJvb2wgYWNwaV92aWRlb192ZXJpZnlfYmFja2xp Z2h0X3N1cHBvcnQodm9pZCk7Cj4+ICtleHRlcm4gZW51bSBhY3BpX2JhY2tsaWdodF90eXBlIGFj cGlfdmlkZW9fZ2V0X2JhY2tsaWdodF90eXBlKHZvaWQpOwo+PiArZXh0ZXJuIHZvaWQgYWNwaV92 aWRlb19zZXRfZG1pX2JhY2tsaWdodF90eXBlKGVudW0gYWNwaV9iYWNrbGlnaHRfdHlwZSB0eXBl KTsKPj4gICAjZWxzZQo+PiAgIHN0YXRpYyBpbmxpbmUgaW50IGFjcGlfdmlkZW9fcmVnaXN0ZXIo dm9pZCkgeyByZXR1cm4gMDsgfQo+PiAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhY3BpX3ZpZGVvX3Vu cmVnaXN0ZXIodm9pZCkgeyByZXR1cm47IH0KPj4gQEAgLTMzLDYgKzQzLDEzIEBAIHN0YXRpYyBp bmxpbmUgaW50IGFjcGlfdmlkZW9fZ2V0X2VkaWQoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2Us IGludCB0eXBlLAo+PiAgIAlyZXR1cm4gLUVOT0RFVjsKPj4gICB9Cj4+ICAgc3RhdGljIGlubGlu ZSBib29sIGFjcGlfdmlkZW9fdmVyaWZ5X2JhY2tsaWdodF9zdXBwb3J0KHZvaWQpIHsgcmV0dXJu IGZhbHNlOyB9Cj4+ICtzdGF0aWMgaW5saW5lIGVudW0gYWNwaV9iYWNrbGlnaHRfdHlwZSBhY3Bp X3ZpZGVvX2dldF9iYWNrbGlnaHRfdHlwZSh2b2lkKQo+PiArewo+PiArCXJldHVybiBhY3BpX2Jh Y2tsaWdodF92ZW5kb3I7Cj4+ICt9Cj4+ICtzdGF0aWMgdm9pZCBhY3BpX3ZpZGVvX3NldF9kbWlf YmFja2xpZ2h0X3R5cGUoZW51bSBhY3BpX2JhY2tsaWdodF90eXBlIHR5cGUpCj4+ICt7Cj4+ICt9 Cj4+ICAgI2VuZGlmCj4+Cj4+ICAgI2VuZGlmCj4+IC0tCj4+IDIuNC4yCj4+Cj4+IC0tCj4+IFRv IHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBs aW51eC1hY3BpIiBpbgo+PiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIu a2VybmVsLm9yZwo+PiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwu b3JnL21ham9yZG9tby1pbmZvLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK