From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: [PATCH 07/32] acpi-video-detect: Rewrite backlight interface selection logic Date: Wed, 10 Jun 2015 15:01:07 +0200 Message-ID: <1433941292-21530-8-git-send-email-hdegoede@redhat.com> References: <1433941292-21530-1-git-send-email-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1433941292-21530-1-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: Darren Hart , "Rafael J. Wysocki" Cc: Matthew Garrett , Hans de Goede , Ike Panhc , linux-acpi@vger.kernel.org, ibm-acpi-devel@lists.sourceforge.net, acpi4asus-user@lists.sourceforge.net, Henrique de Moraes Holschuh , dri-devel@lists.freedesktop.org, Azael Avalos , Lee Chun-Yi , Mattia Dongili , Cezary Jackiewicz , Ben Skeggs , Corentin Chary , =?UTF-8?q?Pali=20Roh=C3=A1r?= , platform-driver-x86@vger.kernel.org, Aaron Lu List-Id: linux-acpi@vger.kernel.org Q3VycmVudGx5IHdlIGhhdmUgMiBrZXJuZWwgY29tbWFuZGxpbmUgb3B0aW9ucyArIGRtaS1xdWly a3MgaW4gMyBwbGFjZXMgYWxsCmludGVyYWN0aW5nIChpbiBpbnRlcmVzdGluZyB3YXlzKSB0byBz ZWxlY3Qgd2hpY2ggd2hpY2ggYmFja2xpZ2h0IGludGVyZmFjZQp0byB1c2UuIE9uIHRoZSBjb21t YW5kbGluZSB3ZSd2ZSBhY3BpX2JhY2tsaWdodD1bdmlkZW98dmVuZG9yXSBhbmQKdmlkZW8udXNl X25hdGl2ZV9iYWNrbGlnaHQ9WzB8MV0uIERNSSBxdWlya3Mgd2UgaGF2ZSBpbgphY3BpL3ZpZGVv LWRldGVjdC5jLCBhY3BpL3ZpZGVvLmMgYW5kIGRyaXZlcnMvcGxhdGZvcm0veDg2LyouYyAuCgpU aGlzIGNvbW1pdCBpcyB0aGUgZmlyc3Qgc3RlcCB0byBjbGVhbmluZyB0aGlzIHVwLCByZXBsYWNp bmcgdGhlIDIgY21kbGluZQpvcHRpb25zIHdpdGgganVzdCBhY3BpX3ZpZGVvLmJhY2tsaWdodD1b dmlkZW98dmVuZG9yfG5hdGl2ZXxub25lXSwgYW5kCmFkZGluZyBhIG5ldyBBUEkgdG8gdmlkZW9f ZGV0ZWN0LmMgdG8gcmVmbGVjdCB0aGlzLgoKRm9sbG93IHVwIGNvbW1pdHMgd2lsbCBhbHNvIG1v dmUgb3RoZXIgcmVsYXRlZCBjb2RlLCBsaWtlIHVucmVnaXN0ZXJpbmcgdGhlCmFjcGlfdmlkZW8g YmFja2xpZ2h0IGludGVyZmFjZSBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBiZWZvcmUgb3RoZXIgZHJp dmVycwp3aGljaCB0YWtlIHByaW9yaXR5IG92ZXIgaXQgYXJlIGxvYWRlZCwgdG8gdmlkZW9fZGV0 ZWN0LmMgd2hlcmUgdGhpcwpsb2dpYyByZWFsbHkgYmVsb25ncy4KClNpZ25lZC1vZmYtYnk6IEhh bnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9hY3BpL3ZpZGVv X2RldGVjdC5jIHwgMTcyICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiBpbmNsdWRlL2FjcGkvdmlkZW8uaCAgICAgICAgfCAgMTcgKysrKysKIDIgZmlsZXMgY2hh bmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvYWNwaS92aWRlb19kZXRlY3QuYyBiL2RyaXZlcnMvYWNwaS92aWRlb19kZXRlY3QuYwpp bmRleCAwYmM4Yjk4Li4wMWM4YzQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdmlkZW9fZGV0 ZWN0LmMKKysrIGIvZHJpdmVycy9hY3BpL3ZpZGVvX2RldGVjdC5jCkBAIC0xLDQgKzEsNiBAQAog LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgICAgICAgUmVkIEhhdCBJbmMuCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgIEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CiAg KiAgQ29weXJpZ2h0IChDKSAyMDA4ICAgICAgIFN1U0UgTGludXggUHJvZHVjdHMgR21iSAogICog ICAgICAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgUmVubmluZ2VyIDx0cmVubkBzdXNlLmRl PgogICoKQEAgLTksMjggKzExLDI0IEBACiAgKiBhY3BpX2dldF9wY2lfZGV2KCkgY2FuIGJlIGNh bGxlZCB0byBpZGVudGlmeSBBQ1BJIGdyYXBoaWNzCiAgKiBkZXZpY2VzIGZvciB3aGljaCBhIHJl YWwgZ3JhcGhpY3MgY2FyZCBpcyBwbHVnZ2VkIGluCiAgKgotICogTm93IGFjcGlfdmlkZW9fZ2V0 X2NhcGFiaWxpdGllcygpIGNhbiBiZSBjYWxsZWQgdG8gY2hlY2sgd2hpY2gKLSAqIGNhcGFiaWxp dGllcyB0aGUgZ3JhcGhpY3MgY2FyZHMgcGx1Z2dlZCBpbiBzdXBwb3J0LiBUaGUgY2hlY2sgZm9y IGdlbmVyYWwKLSAqIHZpZGVvIGNhcGFiaWxpdGllcyB3aWxsIGJlIHRyaWdnZXJlZCBieSB0aGUg Zmlyc3QgY2FsbGVyIG9mCi0gKiBhY3BpX3ZpZGVvX2dldF9jYXBhYmlsaXRpZXMoTlVMTCk7IHdo aWNoIHdpbGwgaGFwcGVuIHdoZW4gdGhlIGZpcnN0Ci0gKiBiYWNrbGlnaHQgc3dpdGNoaW5nIHN1 cHBvcnRpbmcgZHJpdmVyIGNhbGxzOgotICogYWNwaV92aWRlb19iYWNrbGlnaHRfc3VwcG9ydCgp OwotICoKICAqIERlcGVuZGluZyBvbiB3aGV0aGVyIEFDUEkgZ3JhcGhpY3MgZXh0ZW5zaW9ucyAo Y21wLiBBQ1BJIHNwZWMgQXBwZW5kaXggQikKICAqIGFyZSBhdmFpbGFibGUsIHZpZGVvLmtvIHNo b3VsZCBiZSB1c2VkIHRvIGhhbmRsZSB0aGUgZGV2aWNlLgogICoKICAqIE90aGVyd2lzZSB2ZW5k b3Igc3BlY2lmaWMgZHJpdmVycyBsaWtlIHRoaW5rcGFkX2FjcGksIGFzdXMtbGFwdG9wLAogICog c29ueV9hY3BpLC4uLiBjYW4gdGFrZSBjYXJlIGFib3V0IGJhY2tsaWdodCBicmlnaHRuZXNzLgog ICoKLSAqIElmIENPTkZJR19BQ1BJX1ZJREVPIGlzIG5laXRoZXIgc2V0IGFzICJjb21waWxlZCBp biIgKHkpIG5vciBhcyBhIG1vZHVsZSAobSkKLSAqIHRoaXMgZmlsZSB3aWxsIG5vdCBiZSBjb21w aWxlZCwgYWNwaV92aWRlb19nZXRfY2FwYWJpbGl0aWVzKCkgYW5kCi0gKiBhY3BpX3ZpZGVvX2Jh Y2tsaWdodF9zdXBwb3J0KCkgd2lsbCBhbHdheXMgcmV0dXJuIDAgYW5kIHZlbmRvciBzcGVjaWZp YwotICogZHJpdmVycyBhbHdheXMgY2FuIGhhbmRsZSBiYWNrbGlnaHQuCisgKiBCYWNrbGlnaHQg ZHJpdmVycyBjYW4gdXNlIGFjcGlfdmlkZW9fZ2V0X2JhY2tsaWdodF90eXBlKCkgdG8gZGV0ZXJt aW5lCisgKiB3aGljaCBkcml2ZXIgc2hvdWxkIGhhbmRsZSB0aGUgYmFja2xpZ2h0LgogICoKKyAq IElmIENPTkZJR19BQ1BJX1ZJREVPIGlzIG5laXRoZXIgc2V0IGFzICJjb21waWxlZCBpbiIgKHkp IG5vciBhcyBhIG1vZHVsZSAobSkKKyAqIHRoaXMgZmlsZSB3aWxsIG5vdCBiZSBjb21waWxlZCBh bmQgYWNwaV92aWRlb19nZXRfYmFja2xpZ2h0X3R5cGUoKSB3aWxsCisgKiBhbHdheXMgcmV0dXJu IGFjcGlfYmFja2xpZ2h0X3ZlbmRvci4KICAqLwogCisjaW5jbHVkZSA8YWNwaS92aWRlby5oPgog I2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgogI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KKyNpbmNs dWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KICNpbmNsdWRlIDxsaW51eC9kbWkuaD4KICNpbmNsdWRl IDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KQEAgLTM4LDIwICszNiwy NCBAQAogQUNQSV9NT0RVTEVfTkFNRSgidmlkZW8iKTsKICNkZWZpbmUgX0NPTVBPTkVOVAkJQUNQ SV9WSURFT19DT01QT05FTlQKIAotc3RhdGljIGxvbmcgYWNwaV92aWRlb19zdXBwb3J0Owotc3Rh dGljIGJvb2wgYWNwaV92aWRlb19jYXBzX2NoZWNrZWQ7CitzdGF0aWMgZW51bSBhY3BpX2JhY2ts aWdodF90eXBlIGFjcGlfYmFja2xpZ2h0X2NtZGxpbmUgPSBhY3BpX2JhY2tsaWdodF91bmRlZjsK K3N0YXRpYyBlbnVtIGFjcGlfYmFja2xpZ2h0X3R5cGUgYWNwaV9iYWNrbGlnaHRfZG1pID0gYWNw aV9iYWNrbGlnaHRfdW5kZWY7CiAKIHN0YXRpYyBjaGFyIGFjcGlfYmFja2xpZ2h0X3N0clsxNl07 CiBtb2R1bGVfcGFyYW1fc3RyaW5nKGJhY2tsaWdodCwgYWNwaV9iYWNrbGlnaHRfc3RyLCAxNiwg MDQ0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKGJhY2tsaWdodCwKLQkiU2VsZWN0IHdoaWNoIGJhY2ts aWdodCBpbnRlcmZhY2UgdG8gdXNlIFt2ZW5kb3J8dmlkZW9dIik7CisJIlNlbGVjdCB3aGljaCBi YWNrbGlnaHQgaW50ZXJmYWNlIHRvIHVzZSBbdmVuZG9yfHZpZGVvfG5hdGl2ZV0iKTsKIAogc3Rh dGljIHZvaWQgYWNwaV92aWRlb19wYXJzZV9jbWRsaW5lKHZvaWQpCiB7CiAJaWYgKCFzdHJjbXAo InZlbmRvciIsIGFjcGlfYmFja2xpZ2h0X3N0cikpCi0JCWFjcGlfdmlkZW9fc3VwcG9ydCB8PSBB Q1BJX1ZJREVPX0JBQ0tMSUdIVF9GT1JDRV9WRU5ET1I7CisJCWFjcGlfYmFja2xpZ2h0X2NtZGxp bmUgPSBhY3BpX2JhY2tsaWdodF92ZW5kb3I7CiAJaWYgKCFzdHJjbXAoInZpZGVvIiwgYWNwaV9i YWNrbGlnaHRfc3RyKSkKLQkJYWNwaV92aWRlb19zdXBwb3J0IHw9IEFDUElfVklERU9fQkFDS0xJ R0hUX0ZPUkNFX1ZJREVPOworCQlhY3BpX2JhY2tsaWdodF9jbWRsaW5lID0gYWNwaV9iYWNrbGln aHRfdmlkZW87CisJaWYgKCFzdHJjbXAoIm5hdGl2ZSIsIGFjcGlfYmFja2xpZ2h0X3N0cikpCisJ CWFjcGlfYmFja2xpZ2h0X2NtZGxpbmUgPSBhY3BpX2JhY2tsaWdodF9uYXRpdmU7CisJaWYgKCFz dHJjbXAoIm5vbmUiLCBhY3BpX2JhY2tsaWdodF9zdHIpKQorCQlhY3BpX2JhY2tsaWdodF9jbWRs aW5lID0gYWNwaV9iYWNrbGlnaHRfbm9uZTsKIH0KIAogc3RhdGljIGFjcGlfc3RhdHVzCkBAIC04 Miw3ICs4NCw3IEBAIGZpbmRfdmlkZW8oYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgbHZsLCB2b2lk ICpjb250ZXh0LCB2b2lkICoqcnYpCiAgKiBidWdneSAqLwogc3RhdGljIGludCB2aWRlb19kZXRl Y3RfZm9yY2VfdmVuZG9yKGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkKQogewotCWFjcGlf dmlkZW9fc3VwcG9ydCB8PSBBQ1BJX1ZJREVPX0JBQ0tMSUdIVF9ETUlfVkVORE9SOworCWFjcGlf YmFja2xpZ2h0X2RtaSA9IGFjcGlfYmFja2xpZ2h0X3ZlbmRvcjsKIAlyZXR1cm4gMDsKIH0KIApA QCAtMTMwLDk5ICsxMzIsOTEgQEAgc3RhdGljIHN0cnVjdCBkbWlfc3lzdGVtX2lkIHZpZGVvX2Rl dGVjdF9kbWlfdGFibGVbXSA9IHsKIH07CiAKIC8qCi0gKiBSZXR1cm5zIHRoZSB2aWRlbyBjYXBh YmlsaXRpZXMgb2YgYSBzcGVjaWZpYyBBQ1BJIGdyYXBoaWNzIGRldmljZQorICogRGV0ZXJtaW5l IHdoaWNoIHR5cGUgb2YgYmFja2xpZ2h0IGludGVyZmFjZSB0byB1c2Ugb24gdGhpcyBzeXN0ZW0s CisgKiBGaXJzdCBjaGVjayBjbWRsaW5lLCB0aGVuIGRtaSBxdWlya3MsIHRoZW4gZG8gYXV0b2Rl dGVjdC4KKyAqCisgKiBUaGUgYXV0b2RldGVjdCBvcmRlciBpczoKKyAqIDEpIElzIHRoZSBhY3Bp LXZpZGVvIGJhY2tsaWdodCBpbnRlcmZhY2Ugc3VwcG9ydGVkIC0+CisgKiAgbm8sIHVzZSBhIHZl bmRvciBpbnRlcmZhY2UKKyAqIDIpIElzIHRoaXMgYSB3aW44ICJyZWFkeSIgQklPUyBhbmQgZG8g d2UgaGF2ZSBhIG5hdGl2ZSBpbnRlcmZhY2UgLT4KKyAqICB5ZXMsIHVzZSBhIG5hdGl2ZSBpbnRl cmZhY2UKKyAqIDMpIEVsc2UgdXNlIHRoZSBhY3BpLXZpZGVvIGludGVyZmFjZQogICoKLSAqIGlm IE5VTEwgaXMgcGFzc2VkIGFzIGFyZ3VtZW50IGFsbCBBQ1BJIGRldmljZXMgYXJlIGVudW1lcmF0 ZWQgYW5kCi0gKiBhbGwgZ3JhcGhpY3MgY2FwYWJpbGl0aWVzIG9mIHBoeXNpY2FsbHkgcHJlc2Vu dCBkZXZpY2VzIGFyZQotICogc3VtbWFyaXplZCBhbmQgcmV0dXJuZWQuIFRoaXMgaXMgY2FjaGVk IGFuZCBkb25lIG9ubHkgb25jZS4KKyAqIEFyZ3VhYmx5IHRoZSBuYXRpdmUgb24gd2luOCBjaGVj ayBzaG91bGQgYmUgZG9uZSBmaXJzdCwgYnV0IHRoYXQgd291bGQKKyAqIGJlIGEgYmVoYXZpb3Ig Y2hhbmdlLCB3aGljaCBtYXkgY2F1c2VzIGlzc3Vlcy4KICAqLwotc3RhdGljIGxvbmcgYWNwaV92 aWRlb19nZXRfY2FwYWJpbGl0aWVzKGFjcGlfaGFuZGxlIGdyYXBoaWNzX2hhbmRsZSkKK2VudW0g YWNwaV9iYWNrbGlnaHRfdHlwZSBhY3BpX3ZpZGVvX2dldF9iYWNrbGlnaHRfdHlwZSh2b2lkKQog ewotCWxvbmcgY2FwcyA9IDA7Ci0Jc3RydWN0IGFjcGlfZGV2aWNlICp0bXBfZGV2OwotCWFjcGlf c3RhdHVzIHN0YXR1czsKLQotCWlmIChhY3BpX3ZpZGVvX2NhcHNfY2hlY2tlZCAmJiBncmFwaGlj c19oYW5kbGUgPT0gTlVMTCkKLQkJcmV0dXJuIGFjcGlfdmlkZW9fc3VwcG9ydDsKLQotCWlmICgh Z3JhcGhpY3NfaGFuZGxlKSB7Ci0JCS8qIE9ubHkgZG8gdGhlIGdsb2JhbCB3YWxrIHRocm91Z2gg YWxsIGdyYXBoaWNzIGRldmljZXMgb25jZSAqLwotCQlhY3BpX3dhbGtfbmFtZXNwYWNlKEFDUElf VFlQRV9ERVZJQ0UsIEFDUElfUk9PVF9PQkpFQ1QsCi0JCQkJICAgIEFDUElfVUlOVDMyX01BWCwg ZmluZF92aWRlbywgTlVMTCwKLQkJCQkgICAgJmNhcHMsIE5VTEwpOwotCQkvKiBUaGVyZSBtaWdo dCBiZSBib290IHBhcmFtIGZsYWdzIHNldCBhbHJlYWR5Li4uICovCi0JCWFjcGlfdmlkZW9fc3Vw cG9ydCB8PSBjYXBzOwotCQlhY3BpX3ZpZGVvX2NhcHNfY2hlY2tlZCA9IDE7Ci0JCS8qIEFkZCBi bGFja2xpc3RzIGhlcmUuIEJlIGNhcmVmdWwgdG8gdXNlIHRoZSByaWdodCAqRE1JKiBiaXRzCi0J CSAqIHRvIHN0aWxsIGJlIGFibGUgdG8gb3ZlcnJpZGUgbG9naWMgdmlhIGJvb3QgcGFyYW1zLCBl LmcuOgotCQkgKgotCQkgKiAgIGlmIChkbWlfbmFtZV9pbl92ZW5kb3JzKCJYWSIpKSB7Ci0JCSAq CWFjcGlfdmlkZW9fc3VwcG9ydCB8PQotCQkgKgkJQUNQSV9WSURFT19CQUNLTElHSFRfRE1JX1ZF TkRPUjsKLQkJICp9Ci0JCSAqLworCXN0YXRpYyBERUZJTkVfTVVURVgoaW5pdF9tdXRleCk7CisJ c3RhdGljIGJvb2wgaW5pdF9kb25lOworCXN0YXRpYyBsb25nIHZpZGVvX2NhcHM7CiAKKwkvKiBQ YXJzZSBjbWRsaW5lLCBkbWkgYW5kIGFjcGkgb25seSBvbmNlICovCisJbXV0ZXhfbG9jaygmaW5p dF9tdXRleCk7CisJaWYgKCFpbml0X2RvbmUpIHsKKwkJYWNwaV92aWRlb19wYXJzZV9jbWRsaW5l KCk7CiAJCWRtaV9jaGVja19zeXN0ZW0odmlkZW9fZGV0ZWN0X2RtaV90YWJsZSk7Ci0JfSBlbHNl IHsKLQkJc3RhdHVzID0gYWNwaV9idXNfZ2V0X2RldmljZShncmFwaGljc19oYW5kbGUsICZ0bXBf ZGV2KTsKLQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCQlBQ1BJX0VYQ0VQVElPTigo QUVfSU5GTywgc3RhdHVzLCAiSW52YWxpZCBkZXZpY2UiKSk7Ci0JCQlyZXR1cm4gMDsKLQkJfQot CQlhY3BpX3dhbGtfbmFtZXNwYWNlKEFDUElfVFlQRV9ERVZJQ0UsIGdyYXBoaWNzX2hhbmRsZSwK KwkJYWNwaV93YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVfREVWSUNFLCBBQ1BJX1JPT1RfT0JKRUNU LAogCQkJCSAgICBBQ1BJX1VJTlQzMl9NQVgsIGZpbmRfdmlkZW8sIE5VTEwsCi0JCQkJICAgICZj YXBzLCBOVUxMKTsKKwkJCQkgICAgJnZpZGVvX2NhcHMsIE5VTEwpOworCQlpbml0X2RvbmUgPSB0 cnVlOwogCX0KLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sICJXZSBoYXZlIDB4JWxY IHZpZGVvIHN1cHBvcnQgJXMgJXNcbiIsCi0JCQkgIGdyYXBoaWNzX2hhbmRsZSA/IGNhcHMgOiBh Y3BpX3ZpZGVvX3N1cHBvcnQsCi0JCQkgIGdyYXBoaWNzX2hhbmRsZSA/ICJvbiBkZXZpY2UgIiA6 ICJpbiBnZW5lcmFsIiwKLQkJCSAgZ3JhcGhpY3NfaGFuZGxlID8gYWNwaV9kZXZpY2VfYmlkKHRt cF9kZXYpIDogIiIpKTsKLQlyZXR1cm4gY2FwczsKKwltdXRleF91bmxvY2soJmluaXRfbXV0ZXgp OworCisJaWYgKGFjcGlfYmFja2xpZ2h0X2NtZGxpbmUgIT0gYWNwaV9iYWNrbGlnaHRfdW5kZWYp CisJCXJldHVybiBhY3BpX2JhY2tsaWdodF9jbWRsaW5lOworCisJaWYgKGFjcGlfYmFja2xpZ2h0 X2RtaSAhPSBhY3BpX2JhY2tsaWdodF91bmRlZikKKwkJcmV0dXJuIGFjcGlfYmFja2xpZ2h0X2Rt aTsKKworCWlmICghKHZpZGVvX2NhcHMgJiBBQ1BJX1ZJREVPX0JBQ0tMSUdIVCkpCisJCXJldHVy biBhY3BpX2JhY2tsaWdodF92ZW5kb3I7CisKKwlpZiAoYWNwaV9vc2lfaXNfd2luOCgpICYmIGJh Y2tsaWdodF9kZXZpY2VfcmVnaXN0ZXJlZChCQUNLTElHSFRfUkFXKSkKKwkJcmV0dXJuIGFjcGlf YmFja2xpZ2h0X25hdGl2ZTsKKworCXJldHVybiBhY3BpX2JhY2tsaWdodF92aWRlbzsKIH0KK0VY UE9SVF9TWU1CT0woYWNwaV92aWRlb19nZXRfYmFja2xpZ2h0X3R5cGUpOwogCi1zdGF0aWMgdm9p ZCBhY3BpX3ZpZGVvX2NhcHNfY2hlY2sodm9pZCkKKy8qCisgKiBTZXQgdGhlIHByZWZlcnJlZCBi YWNrbGlnaHQgaW50ZXJmYWNlIHR5cGUgYmFzZWQgb24gRE1JIGluZm8uCisgKiBUaGlzIGZ1bmN0 aW9uIGFsbG93cyBETUkgYmxhY2tsaXN0cyB0byBiZSBpbXBsZW1lbnRlZCBieSBleHRlcm5hbAor ICogcGxhdGZvcm0gZHJpdmVycyBpbnN0ZWFkIG9mIHB1dHRpbmcgYSBiaWcgYmxhY2tsaXN0IGlu IHZpZGVvX2RldGVjdC5jCisgKi8KK3ZvaWQgYWNwaV92aWRlb19zZXRfZG1pX2JhY2tsaWdodF90 eXBlKGVudW0gYWNwaV9iYWNrbGlnaHRfdHlwZSB0eXBlKQogewotCS8qCi0JICogV2UgbXVzdCBj aGVjayB3aGV0aGVyIHRoZSBBQ1BJIGdyYXBoaWNzIGRldmljZSBpcyBwaHlzaWNhbGx5IHBsdWdn ZWQKLQkgKiBpbi4gVGhlcmVmb3JlIHRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYmluZGluZyBQ Q0kgYW5kIEFDUEkgZGV2aWNlcwotCSAqLwotCWlmICghYWNwaV92aWRlb19jYXBzX2NoZWNrZWQp IHsKLQkJYWNwaV92aWRlb19wYXJzZV9jbWRsaW5lKCk7Ci0JCWFjcGlfdmlkZW9fZ2V0X2NhcGFi aWxpdGllcyhOVUxMKTsKLQl9CisJYWNwaV9iYWNrbGlnaHRfZG1pID0gdHlwZTsKIH0KK0VYUE9S VF9TWU1CT0woYWNwaV92aWRlb19zZXRfZG1pX2JhY2tsaWdodF90eXBlKTsKIAotLyogUHJvbW90 ZSB0aGUgdmVuZG9yIGludGVyZmFjZSBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIHZpZGVvIG1vZHVs ZS4KLSAqIFRoaXMgZnVuY3Rpb24gYWxsb3cgRE1JIGJsYWNrbGlzdHMgdG8gYmUgaW1wbGVtZW50 ZWQgYnkgZXh0ZXJuYWxzCi0gKiBwbGF0Zm9ybSBkcml2ZXJzIGluc3RlYWQgb2YgcHV0dGluZyBh IGJpZyBibGFja2xpc3QgaW4gdmlkZW9fZGV0ZWN0LmMKKy8qCisgKiBDb21wYXRpYmxpdHkgZnVu Y3Rpb24sIHRoaXMgaXMgZ29pbmcgYXdheSBhcyBzb29uIGFzIGFsbCBkcml2ZXJzIGFyZQorICog Y29udmVydGVkIHRvIGFjcGlfdmlkZW9fc2V0X2RtaV9iYWNrbGlnaHRfdHlwZSgpLgorICoKKyAq IFByb21vdGUgdGhlIHZlbmRvciBpbnRlcmZhY2UgaW5zdGVhZCBvZiB0aGUgZ2VuZXJpYyB2aWRl byBtb2R1bGUuCiAgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24geW91IHdpbGwgcHJvYmFi bHkgd2FudCB0byBjYWxsCiAgKiBhY3BpX3ZpZGVvX3VucmVnaXN0ZXIoKSB0byBtYWtlIHN1cmUg dGhlIHZpZGVvIG1vZHVsZSBpcyBub3QgbG9hZGVkCiAgKi8KIHZvaWQgYWNwaV92aWRlb19kbWlf cHJvbW90ZV92ZW5kb3Iodm9pZCkKIHsKLQlhY3BpX3ZpZGVvX2NhcHNfY2hlY2soKTsKLQlhY3Bp X3ZpZGVvX3N1cHBvcnQgfD0gQUNQSV9WSURFT19CQUNLTElHSFRfRE1JX1ZFTkRPUjsKKwlhY3Bp X3ZpZGVvX3NldF9kbWlfYmFja2xpZ2h0X3R5cGUoYWNwaV9iYWNrbGlnaHRfdmVuZG9yKTsKIH0K IEVYUE9SVF9TWU1CT0woYWNwaV92aWRlb19kbWlfcHJvbW90ZV92ZW5kb3IpOwogCi0vKiBSZXR1 cm5zIHRydWUgaWYgdmlkZW8ua28gY2FuIGRvIGJhY2tsaWdodCBzd2l0Y2hpbmcgKi8KKy8qCisg KiBDb21wYXRpYmxpdHkgZnVuY3Rpb24sIHRoaXMgaXMgZ29pbmcgYXdheSBhcyBzb29uIGFzIGFs bCBkcml2ZXJzIGFyZQorICogY29udmVydGVkIHRvIGFjcGlfdmlkZW9fZ2V0X2JhY2tsaWdodF90 eXBlKCkuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHZpZGVvLmtvIGNhbiBkbyBiYWNrbGlnaHQg c3dpdGNoaW5nLgorICovCiBpbnQgYWNwaV92aWRlb19iYWNrbGlnaHRfc3VwcG9ydCh2b2lkKQog ewotCWFjcGlfdmlkZW9fY2Fwc19jaGVjaygpOwotCi0JLyogRmlyc3QgY2hlY2sgZm9yIGJvb3Qg cGFyYW0gLT4gaGlnaGVzdCBwcmlvICovCi0JaWYgKGFjcGlfdmlkZW9fc3VwcG9ydCAmIEFDUElf VklERU9fQkFDS0xJR0hUX0ZPUkNFX1ZFTkRPUikKLQkJcmV0dXJuIDA7Ci0JZWxzZSBpZiAoYWNw aV92aWRlb19zdXBwb3J0ICYgQUNQSV9WSURFT19CQUNLTElHSFRfRk9SQ0VfVklERU8pCi0JCXJl dHVybiAxOwotCi0JLyogVGhlbiBjaGVjayBmb3IgRE1JIGJsYWNrbGlzdCAtPiBzZWNvbmQgaGln aGVzdCBwcmlvICovCi0JaWYgKGFjcGlfdmlkZW9fc3VwcG9ydCAmIEFDUElfVklERU9fQkFDS0xJ R0hUX0RNSV9WRU5ET1IpCi0JCXJldHVybiAwOwotCWVsc2UgaWYgKGFjcGlfdmlkZW9fc3VwcG9y dCAmIEFDUElfVklERU9fQkFDS0xJR0hUX0RNSV9WSURFTykKLQkJcmV0dXJuIDE7Ci0KLQkvKiBU aGVuIGdvIHRoZSBkZWZhdWx0IHdheSAqLwotCXJldHVybiBhY3BpX3ZpZGVvX3N1cHBvcnQgJiBB Q1BJX1ZJREVPX0JBQ0tMSUdIVDsKKwkvKgorCSAqIFRoaXMgaXMgZG9uZSB0aGlzIHdheSBzaW5j ZSB2ZW5kb3IgZHJpdmVycyBjYWxsIHRoaXMgdG8gc2VlCisJICogaWYgdGhleSBzaG91bGQgbG9h ZCwgYW5kIHdlIGRvIG5vdCB3YW50IHRoZW0gdG8gbG9hZCBmb3IgYm90aAorCSAqIHRoZSBhY3Bp X2JhY2tsaWdodF92aWRlbyBhbmQgYWNwaV9iYWNrbGlnaHRfbmF0aXZlIGNhc2VzLgorCSAqLwor CXJldHVybiBhY3BpX3ZpZGVvX2dldF9iYWNrbGlnaHRfdHlwZSgpICE9IGFjcGlfYmFja2xpZ2h0 X3ZlbmRvcjsKIH0KIEVYUE9SVF9TWU1CT0woYWNwaV92aWRlb19iYWNrbGlnaHRfc3VwcG9ydCk7 CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvdmlkZW8uaCBiL2luY2x1ZGUvYWNwaS92aWRlby5o CmluZGV4IDg0M2VmMWEuLjAxYjVjYzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS92aWRlby5o CisrKyBiL2luY2x1ZGUvYWNwaS92aWRlby5oCkBAIC0xNiw2ICsxNiwxNCBAQCBzdHJ1Y3QgYWNw aV9kZXZpY2U7CiAjZGVmaW5lIEFDUElfVklERU9fRElTUExBWV9MRUdBQ1lfUEFORUwgICAweDAx MTAKICNkZWZpbmUgQUNQSV9WSURFT19ESVNQTEFZX0xFR0FDWV9UViAgICAgIDB4MDIwMAogCitl bnVtIGFjcGlfYmFja2xpZ2h0X3R5cGUgeworCWFjcGlfYmFja2xpZ2h0X3VuZGVmID0gLTEsCisJ YWNwaV9iYWNrbGlnaHRfbm9uZSA9IDAsCisJYWNwaV9iYWNrbGlnaHRfdmlkZW8sCisJYWNwaV9i YWNrbGlnaHRfdmVuZG9yLAorCWFjcGlfYmFja2xpZ2h0X25hdGl2ZSwKK307CisKICNpZiAoZGVm aW5lZCBDT05GSUdfQUNQSV9WSURFTyB8fCBkZWZpbmVkIENPTkZJR19BQ1BJX1ZJREVPX01PRFVM RSkKIGV4dGVybiBpbnQgYWNwaV92aWRlb19yZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIGFj cGlfdmlkZW9fdW5yZWdpc3Rlcih2b2lkKTsKQEAgLTIzLDYgKzMxLDggQEAgZXh0ZXJuIHZvaWQg YWNwaV92aWRlb191bnJlZ2lzdGVyX2JhY2tsaWdodCh2b2lkKTsKIGV4dGVybiBpbnQgYWNwaV92 aWRlb19nZXRfZWRpZChzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSwgaW50IHR5cGUsCiAJCQkg ICAgICAgaW50IGRldmljZV9pZCwgdm9pZCAqKmVkaWQpOwogZXh0ZXJuIGJvb2wgYWNwaV92aWRl b192ZXJpZnlfYmFja2xpZ2h0X3N1cHBvcnQodm9pZCk7CitleHRlcm4gZW51bSBhY3BpX2JhY2ts aWdodF90eXBlIGFjcGlfdmlkZW9fZ2V0X2JhY2tsaWdodF90eXBlKHZvaWQpOworZXh0ZXJuIHZv aWQgYWNwaV92aWRlb19zZXRfZG1pX2JhY2tsaWdodF90eXBlKGVudW0gYWNwaV9iYWNrbGlnaHRf dHlwZSB0eXBlKTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIGludCBhY3BpX3ZpZGVvX3JlZ2lzdGVy KHZvaWQpIHsgcmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBhY3BpX3ZpZGVvX3VucmVn aXN0ZXIodm9pZCkgeyByZXR1cm47IH0KQEAgLTMzLDYgKzQzLDEzIEBAIHN0YXRpYyBpbmxpbmUg aW50IGFjcGlfdmlkZW9fZ2V0X2VkaWQoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UsIGludCB0 eXBlLAogCXJldHVybiAtRU5PREVWOwogfQogc3RhdGljIGlubGluZSBib29sIGFjcGlfdmlkZW9f dmVyaWZ5X2JhY2tsaWdodF9zdXBwb3J0KHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9CitzdGF0aWMg aW5saW5lIGVudW0gYWNwaV9iYWNrbGlnaHRfdHlwZSBhY3BpX3ZpZGVvX2dldF9iYWNrbGlnaHRf dHlwZSh2b2lkKQoreworCXJldHVybiBhY3BpX2JhY2tsaWdodF92ZW5kb3I7Cit9CitzdGF0aWMg dm9pZCBhY3BpX3ZpZGVvX3NldF9kbWlfYmFja2xpZ2h0X3R5cGUoZW51bSBhY3BpX2JhY2tsaWdo dF90eXBlIHR5cGUpCit7Cit9CiAjZW5kaWYKIAogI2VuZGlmCi0tIAoyLjQuMgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK