From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell King Subject: [PATCH v2 6/7] drm/i2c: tda998x: add CEC support Date: Wed, 06 Dec 2017 12:35:49 +0000 Message-ID: References: <20171206123452.GA13127@n2100.armlinux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:3201:214:fdff:fe10:1be6]) by gabe.freedesktop.org (Postfix) with ESMTPS id 62E7A6E179 for ; Wed, 6 Dec 2017 12:36:01 +0000 (UTC) In-Reply-To: <20171206123452.GA13127@n2100.armlinux.org.uk> Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Airlie , Hans Verkuil Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlIFREQTk5OHggaXMgYSBIRE1JIHRyYW5zbWl0dGVyIHdpdGggYSBUREE5OTUwIENFQyBlbmdp bmUgaW50ZWdyYXRlZApvbnRvIHRoZSBzYW1lIGRpZS4gIEFkZCBzdXBwb3J0IGZvciB0aGUgVERB OTk1MCBDRUMgZW5naW5lIHRvIHRoZQpUREE5OTh4IGRyaXZlci4KClNpZ25lZC1vZmYtYnk6IFJ1 c3NlbGwgS2luZyA8cm1rK2tlcm5lbEBhcm1saW51eC5vcmcudWs+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2kyYy9LY29uZmlnICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pMmMvdGRhOTk4 eF9kcnYuYyB8IDIwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogMiBm aWxlcyBjaGFuZ2VkLCAxOTYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2kyYy9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2kyYy9L Y29uZmlnCmluZGV4IDNhMjMyZjVmZjBhMS4uMDk2ZDIxMzllNzMzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTJjL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2kyYy9LY29uZmln CkBAIC0yMiw2ICsyMiw3IEBAIGNvbmZpZyBEUk1fSTJDX1NJTDE2NAogY29uZmlnIERSTV9JMkNf TlhQX1REQTk5OFgKIAl0cmlzdGF0ZSAiTlhQIFNlbWljb25kdWN0b3JzIFREQTk5OFggSERNSSBl bmNvZGVyIgogCWRlZmF1bHQgbSBpZiBEUk1fVElMQ0RDCisJc2VsZWN0IENFQ19OT1RJRklFUgog CXNlbGVjdCBTTkRfU09DX0hETUlfQ09ERUMgaWYgU05EX1NPQwogCWhlbHAKIAkgIFN1cHBvcnQg Zm9yIE5YUCBTZW1pY29uZHVjdG9ycyBUREE5OThYIEhETUkgZW5jb2RlcnMuCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTJjL3RkYTk5OHhfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTJj L3RkYTk5OHhfZHJ2LmMKaW5kZXggZTI5NGY1YjUwMjM2Li4zYWQzOWQwMThhYjYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pMmMvdGRhOTk4eF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTJjL3RkYTk5OHhfZHJ2LmMKQEAgLTE2LDggKzE2LDEwIEBACiAgKi8KIAogI2luY2x1ZGUg PGxpbnV4L2NvbXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KICNp bmNsdWRlIDxsaW51eC9oZG1pLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGF0YS90ZGE5OTUwLmg+CiAjaW5jbHVkZSA8bGludXgvaXJxLmg+ CiAjaW5jbHVkZSA8c291bmQvYXNvdW5kZWYuaD4KICNpbmNsdWRlIDxzb3VuZC9oZG1pLWNvZGVj Lmg+CkBAIC0yOSw2ICszMSw4IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgogI2luY2x1ZGUg PGRybS9pMmMvdGRhOTk4eC5oPgogCisjaW5jbHVkZSA8bWVkaWEvY2VjLW5vdGlmaWVyLmg+CisK ICNkZWZpbmUgREJHKGZtdCwgLi4uKSBEUk1fREVCVUcoZm10IlxuIiwgIyNfX1ZBX0FSR1NfXykK IAogc3RydWN0IHRkYTk5OHhfYXVkaW9fcG9ydCB7CkBAIC01NSw2ICs1OSw3IEBAIHN0cnVjdCB0 ZGE5OTh4X3ByaXYgewogCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmF1ZGlvX3BkZXY7CiAJc3Ry dWN0IG11dGV4IGF1ZGlvX211dGV4OwogCisJc3RydWN0IG11dGV4IGVkaWRfbXV0ZXg7CiAJd2Fp dF9xdWV1ZV9oZWFkX3Qgd3FfZWRpZDsKIAl2b2xhdGlsZSBpbnQgd3FfZWRpZF93YWl0OwogCkBA IC02Nyw2ICs3Miw5IEBAIHN0cnVjdCB0ZGE5OTh4X3ByaXYgewogCXN0cnVjdCBkcm1fY29ubmVj dG9yIGNvbm5lY3RvcjsKIAogCXN0cnVjdCB0ZGE5OTh4X2F1ZGlvX3BvcnQgYXVkaW9fcG9ydFsy XTsKKwlzdHJ1Y3QgdGRhOTk1MF9nbHVlIGNlY19nbHVlOworCXN0cnVjdCBncGlvX2Rlc2MgKmNh bGliOworCXN0cnVjdCBjZWNfbm90aWZpZXIgKmNlY19ub3RpZnk7CiB9OwogCiAjZGVmaW5lIGNv bm5fdG9fdGRhOTk4eF9wcml2KHgpIFwKQEAgLTM0NSw2ICszNTMsMTIgQEAgc3RydWN0IHRkYTk5 OHhfcHJpdiB7CiAjZGVmaW5lIFJFR19DRUNfSU5UU1RBVFVTCSAgMHhlZQkJICAgICAgLyogcmVh ZCAqLwogIyBkZWZpbmUgQ0VDX0lOVFNUQVRVU19DRUMJICAoMSA8PCAwKQogIyBkZWZpbmUgQ0VD X0lOVFNUQVRVU19IRE1JCSAgKDEgPDwgMSkKKyNkZWZpbmUgUkVHX0NFQ19DQUxfWE9TQ19DVFJM MSAgICAweGYyCisjIGRlZmluZSBDRUNfQ0FMX1hPU0NfQ1RSTDFfRU5BX0NBTAlCSVQoMCkKKyNk ZWZpbmUgUkVHX0NFQ19ERVNfRlJFUTIgICAgICAgICAweGY1CisjIGRlZmluZSBDRUNfREVTX0ZS RVEyX0RJU19BVVRPQ0FMIEJJVCg3KQorI2RlZmluZSBSRUdfQ0VDX0NMSyAgICAgICAgICAgICAg IDB4ZjYKKyMgZGVmaW5lIENFQ19DTEtfRlJPICAgICAgICAgICAgICAweDExCiAjZGVmaW5lIFJF R19DRUNfRlJPX0lNX0NMS19DVFJMICAgMHhmYiAgICAgICAgICAgICAgICAvKiByZWFkL3dyaXRl ICovCiAjIGRlZmluZSBDRUNfRlJPX0lNX0NMS19DVFJMX0dIT1NUX0RJUyAoMSA8PCA3KQogIyBk ZWZpbmUgQ0VDX0ZST19JTV9DTEtfQ1RSTF9FTkFfT1RQICAgKDEgPDwgNikKQEAgLTM1OSw2ICsz NzMsNyBAQCBzdHJ1Y3QgdGRhOTk4eF9wcml2IHsKICMgZGVmaW5lIENFQ19SWFNIUERMRVZfSFBE ICAgICAgICAoMSA8PCAxKQogCiAjZGVmaW5lIFJFR19DRUNfRU5BTU9EUyAgICAgICAgICAgMHhm ZiAgICAgICAgICAgICAgICAvKiByZWFkL3dyaXRlICovCisjIGRlZmluZSBDRUNfRU5BTU9EU19F Tl9DRUNfQ0xLICAgKDEgPDwgNykKICMgZGVmaW5lIENFQ19FTkFNT0RTX0RJU19GUk8gICAgICAo MSA8PCA2KQogIyBkZWZpbmUgQ0VDX0VOQU1PRFNfRElTX0NDTEsgICAgICgxIDw8IDUpCiAjIGRl ZmluZSBDRUNfRU5BTU9EU19FTl9SWFNFTlMgICAgKDEgPDwgMikKQEAgLTQxNyw2ICs0MzIsMTE0 IEBAIGNlY19yZWFkKHN0cnVjdCB0ZGE5OTh4X3ByaXYgKnByaXYsIHU4IGFkZHIpCiAJcmV0dXJu IHZhbDsKIH0KIAorc3RhdGljIHZvaWQgY2VjX2VuYW1vZHMoc3RydWN0IHRkYTk5OHhfcHJpdiAq cHJpdiwgdTggbW9kcywgYm9vbCBlbmFibGUpCit7CisJaW50IHZhbCA9IGNlY19yZWFkKHByaXYs IFJFR19DRUNfRU5BTU9EUyk7CisKKwlpZiAodmFsIDwgMCkKKwkJcmV0dXJuOworCisJaWYgKGVu YWJsZSkKKwkJdmFsIHw9IG1vZHM7CisJZWxzZQorCQl2YWwgJj0gfm1vZHM7CisKKwljZWNfd3Jp dGUocHJpdiwgUkVHX0NFQ19FTkFNT0RTLCB2YWwpOworfQorCitzdGF0aWMgdm9pZCB0ZGE5OTh4 X2NlY19zZXRfY2FsaWJyYXRpb24oc3RydWN0IHRkYTk5OHhfcHJpdiAqcHJpdiwgYm9vbCBlbmFi bGUpCit7CisJaWYgKGVuYWJsZSkgeworCQl1OCB2YWw7CisKKwkJY2VjX3dyaXRlKHByaXYsIDB4 ZjMsIDB4YzApOworCQljZWNfd3JpdGUocHJpdiwgMHhmNCwgMHhkNCk7CisKKwkJLyogRW5hYmxl IGF1dG9tYXRpYyBjYWxpYnJhdGlvbiBtb2RlICovCisJCXZhbCA9IGNlY19yZWFkKHByaXYsIFJF R19DRUNfREVTX0ZSRVEyKTsKKwkJdmFsICY9IH5DRUNfREVTX0ZSRVEyX0RJU19BVVRPQ0FMOwor CQljZWNfd3JpdGUocHJpdiwgUkVHX0NFQ19ERVNfRlJFUTIsIHZhbCk7CisKKwkJLyogRW5hYmxl IGZyZWUgcnVubmluZyBvc2NpbGxhdG9yICovCisJCWNlY193cml0ZShwcml2LCBSRUdfQ0VDX0NM SywgQ0VDX0NMS19GUk8pOworCQljZWNfZW5hbW9kcyhwcml2LCBDRUNfRU5BTU9EU19ESVNfRlJP LCBmYWxzZSk7CisKKwkJY2VjX3dyaXRlKHByaXYsIFJFR19DRUNfQ0FMX1hPU0NfQ1RSTDEsCisJ CQkgIENFQ19DQUxfWE9TQ19DVFJMMV9FTkFfQ0FMKTsKKwl9IGVsc2UgeworCQljZWNfd3JpdGUo cHJpdiwgUkVHX0NFQ19DQUxfWE9TQ19DVFJMMSwgMCk7CisJfQorfQorCisvKgorICogQ2FsaWJy YXRpb24gZm9yIHRoZSBpbnRlcm5hbCBvc2NpbGxhdG9yOiB3ZSBuZWVkIHRvIHNldCBjYWxpYnJh dGlvbiBtb2RlLAorICogYW5kIHRoZW4gcHVsc2UgdGhlIElSUSBsaW5lIGxvdyBmb3IgYSAxMG1z IMKxIDElIHBlcmlvZC4KKyAqLworc3RhdGljIHZvaWQgdGRhOTk4eF9jZWNfY2FsaWJyYXRpb24o c3RydWN0IHRkYTk5OHhfcHJpdiAqcHJpdikKK3sKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpjYWxpYiA9 IHByaXYtPmNhbGliOworCisJbXV0ZXhfbG9jaygmcHJpdi0+ZWRpZF9tdXRleCk7CisJaWYgKHBy aXYtPmhkbWktPmlycSA+IDApCisJCWRpc2FibGVfaXJxKHByaXYtPmhkbWktPmlycSk7CisJZ3Bp b2RfZGlyZWN0aW9uX291dHB1dChjYWxpYiwgMSk7CisJdGRhOTk4eF9jZWNfc2V0X2NhbGlicmF0 aW9uKHByaXYsIHRydWUpOworCisJbG9jYWxfaXJxX2Rpc2FibGUoKTsKKwlncGlvZF9zZXRfdmFs dWUoY2FsaWIsIDApOworCW1kZWxheSgxMCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKGNhbGliLCAxKTsK Kwlsb2NhbF9pcnFfZW5hYmxlKCk7CisKKwl0ZGE5OTh4X2NlY19zZXRfY2FsaWJyYXRpb24ocHJp diwgZmFsc2UpOworCWdwaW9kX2RpcmVjdGlvbl9pbnB1dChjYWxpYik7CisJaWYgKHByaXYtPmhk bWktPmlycSA+IDApCisJCWVuYWJsZV9pcnEocHJpdi0+aGRtaS0+aXJxKTsKKwltdXRleF91bmxv Y2soJnByaXYtPmVkaWRfbXV0ZXgpOworfQorCitzdGF0aWMgaW50IHRkYTk5OHhfY2VjX2hvb2tf aW5pdCh2b2lkICpkYXRhKQoreworCXN0cnVjdCB0ZGE5OTh4X3ByaXYgKnByaXYgPSBkYXRhOwor CXN0cnVjdCBncGlvX2Rlc2MgKmNhbGliOworCisJY2FsaWIgPSBncGlvZF9nZXQoJnByaXYtPmhk bWktPmRldiwgIm54cCxjYWxpYiIsIEdQSU9EX0FTSVMpOworCWlmIChJU19FUlIoY2FsaWIpKSB7 CisJCWRldl93YXJuKCZwcml2LT5oZG1pLT5kZXYsICJmYWlsZWQgdG8gZ2V0IGNhbGlicmF0aW9u IGdwaW86ICVsZFxuIiwKKwkJCSBQVFJfRVJSKGNhbGliKSk7CisJCXJldHVybiBQVFJfRVJSKGNh bGliKTsKKwl9CisKKwlwcml2LT5jYWxpYiA9IGNhbGliOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyB2b2lkIHRkYTk5OHhfY2VjX2hvb2tfZXhpdCh2b2lkICpkYXRhKQoreworCXN0cnVjdCB0 ZGE5OTh4X3ByaXYgKnByaXYgPSBkYXRhOworCisJZ3Bpb2RfcHV0KHByaXYtPmNhbGliKTsKKwlw cml2LT5jYWxpYiA9IE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgdGRhOTk4eF9jZWNfaG9va19vcGVu KHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHRkYTk5OHhfcHJpdiAqcHJpdiA9IGRhdGE7CisKKwlj ZWNfZW5hbW9kcyhwcml2LCBDRUNfRU5BTU9EU19FTl9DRUNfQ0xLIHwgQ0VDX0VOQU1PRFNfRU5f Q0VDLCB0cnVlKTsKKwl0ZGE5OTh4X2NlY19jYWxpYnJhdGlvbihwcml2KTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCB0ZGE5OTh4X2NlY19ob29rX3JlbGVhc2Uodm9pZCAqZGF0YSkK K3sKKwlzdHJ1Y3QgdGRhOTk4eF9wcml2ICpwcml2ID0gZGF0YTsKKworCWNlY19lbmFtb2RzKHBy aXYsIENFQ19FTkFNT0RTX0VOX0NFQ19DTEsgfCBDRUNfRU5BTU9EU19FTl9DRUMsIGZhbHNlKTsK K30KKwogc3RhdGljIGludAogc2V0X3BhZ2Uoc3RydWN0IHRkYTk5OHhfcHJpdiAqcHJpdiwgdTE2 IHJlZykKIHsKQEAgLTY1NywxMCArNzgwLDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB0ZGE5OTh4 X2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGF0YSkKIAkJCXN0YSwgY2VjLCBsdmwsIGZsYWcw LCBmbGFnMSwgZmxhZzIpOwogCiAJCWlmIChjZWMgJiBDRUNfUlhTSFBESU5UX0hQRCkgewotCQkJ aWYgKGx2bCAmIENFQ19SWFNIUERMRVZfSFBEKQorCQkJaWYgKGx2bCAmIENFQ19SWFNIUERMRVZf SFBEKSB7CiAJCQkJdGRhOTk4eF9lZGlkX2RlbGF5X3N0YXJ0KHByaXYpOwotCQkJZWxzZQorCQkJ fSBlbHNlIHsKIAkJCQlzY2hlZHVsZV93b3JrKCZwcml2LT5kZXRlY3Rfd29yayk7CisJCQkJY2Vj X25vdGlmaWVyX3NldF9waHlzX2FkZHIocHJpdi0+Y2VjX25vdGlmeSwKKwkJCQkJCSAgIENFQ19Q SFlTX0FERFJfSU5WQUxJRCk7CisJCQl9CiAKIAkJCWhhbmRsZWQgPSB0cnVlOwogCQl9CkBAIC05 ODEsNiArMTEwNyw4IEBAIHN0YXRpYyBpbnQgdGRhOTk4eF9jb25uZWN0b3JfZmlsbF9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCWlmIChjb25uZWN0b3ItPmVkaWRfYmxv Yl9wdHIpIHsKIAkJc3RydWN0IGVkaWQgKmVkaWQgPSAodm9pZCAqKWNvbm5lY3Rvci0+ZWRpZF9i bG9iX3B0ci0+ZGF0YTsKIAorCQljZWNfbm90aWZpZXJfc2V0X3BoeXNfYWRkcl9mcm9tX2VkaWQo cHJpdi0+Y2VjX25vdGlmeSwgZWRpZCk7CisKIAkJcHJpdi0+c2lua19oYXNfYXVkaW8gPSBkcm1f ZGV0ZWN0X21vbml0b3JfYXVkaW8oZWRpZCk7CiAJfSBlbHNlIHsKIAkJcHJpdi0+c2lua19oYXNf YXVkaW8gPSBmYWxzZTsKQEAgLTEwMjQsNiArMTE1Miw4IEBAIHN0YXRpYyBpbnQgcmVhZF9lZGlk X2Jsb2NrKHZvaWQgKmRhdGEsIHU4ICpidWYsIHVuc2lnbmVkIGludCBibGssIHNpemVfdCBsZW5n dGgpCiAJb2Zmc2V0ID0gKGJsayAmIDEpID8gMTI4IDogMDsKIAlzZWdwdHIgPSBibGsgLyAyOwog CisJbXV0ZXhfbG9jaygmcHJpdi0+ZWRpZF9tdXRleCk7CisKIAlyZWdfd3JpdGUocHJpdiwgUkVH X0REQ19BRERSLCAweGEwKTsKIAlyZWdfd3JpdGUocHJpdiwgUkVHX0REQ19PRkZTLCBvZmZzZXQp OwogCXJlZ193cml0ZShwcml2LCBSRUdfRERDX1NFR01fQUREUiwgMHg2MCk7CkBAIC0xMDQzLDE0 ICsxMTczLDE1IEBAIHN0YXRpYyBpbnQgcmVhZF9lZGlkX2Jsb2NrKHZvaWQgKmRhdGEsIHU4ICpi dWYsIHVuc2lnbmVkIGludCBibGssIHNpemVfdCBsZW5ndGgpCiAJCQkJCW1zZWNzX3RvX2ppZmZp ZXMoMTAwKSk7CiAJCWlmIChpIDwgMCkgewogCQkJZGV2X2VycigmcHJpdi0+aGRtaS0+ZGV2LCAi cmVhZCBlZGlkIHdhaXQgZXJyICVkXG4iLCBpKTsKLQkJCXJldHVybiBpOworCQkJcmV0ID0gaTsK KwkJCWdvdG8gZmFpbGVkOwogCQl9CiAJfSBlbHNlIHsKIAkJZm9yIChpID0gMTAwOyBpID4gMDsg aS0tKSB7CiAJCQltc2xlZXAoMSk7CiAJCQlyZXQgPSByZWdfcmVhZChwcml2LCBSRUdfSU5UX0ZM QUdTXzIpOwogCQkJaWYgKHJldCA8IDApCi0JCQkJcmV0dXJuIHJldDsKKwkJCQlnb3RvIGZhaWxl ZDsKIAkJCWlmIChyZXQgJiBJTlRfRkxBR1NfMl9FRElEX0JMS19SRCkKIAkJCQlicmVhazsKIAkJ fQpAQCAtMTA1OCwxNyArMTE4OSwyMiBAQCBzdGF0aWMgaW50IHJlYWRfZWRpZF9ibG9jayh2b2lk ICpkYXRhLCB1OCAqYnVmLCB1bnNpZ25lZCBpbnQgYmxrLCBzaXplX3QgbGVuZ3RoKQogCiAJaWYg KGkgPT0gMCkgewogCQlkZXZfZXJyKCZwcml2LT5oZG1pLT5kZXYsICJyZWFkIGVkaWQgdGltZW91 dFxuIik7Ci0JCXJldHVybiAtRVRJTUVET1VUOworCQlyZXQgPSAtRVRJTUVET1VUOworCQlnb3Rv IGZhaWxlZDsKIAl9CiAKIAlyZXQgPSByZWdfcmVhZF9yYW5nZShwcml2LCBSRUdfRURJRF9EQVRB XzAsIGJ1ZiwgbGVuZ3RoKTsKIAlpZiAocmV0ICE9IGxlbmd0aCkgewogCQlkZXZfZXJyKCZwcml2 LT5oZG1pLT5kZXYsICJmYWlsZWQgdG8gcmVhZCBlZGlkIGJsb2NrICVkOiAlZFxuIiwKIAkJCWJs aywgcmV0KTsKLQkJcmV0dXJuIHJldDsKKwkJZ290byBmYWlsZWQ7CiAJfQogCi0JcmV0dXJuIDA7 CisJcmV0ID0gMDsKKworIGZhaWxlZDoKKwltdXRleF91bmxvY2soJnByaXYtPmVkaWRfbXV0ZXgp OworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgdGRhOTk4eF9jb25uZWN0b3JfZ2V0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCkBAIC0xNDI0LDYgKzE1NjAsOSBA QCBzdGF0aWMgdm9pZCB0ZGE5OTh4X2Rlc3Ryb3koc3RydWN0IHRkYTk5OHhfcHJpdiAqcHJpdikK IAljYW5jZWxfd29ya19zeW5jKCZwcml2LT5kZXRlY3Rfd29yayk7CiAKIAlpMmNfdW5yZWdpc3Rl cl9kZXZpY2UocHJpdi0+Y2VjKTsKKworCWlmIChwcml2LT5jZWNfbm90aWZ5KQorCQljZWNfbm90 aWZpZXJfcHV0KHByaXYtPmNlY19ub3RpZnkpOwogfQogCiAvKiBJMkMgZHJpdmVyIGZ1bmN0aW9u cyAqLwpAQCAtMTQ3MywxMSArMTYxMiwxMyBAQCBzdGF0aWMgaW50IHRkYTk5OHhfZ2V0X2F1ZGlv X3BvcnRzKHN0cnVjdCB0ZGE5OTh4X3ByaXYgKnByaXYsCiBzdGF0aWMgaW50IHRkYTk5OHhfY3Jl YXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHN0cnVjdCB0ZGE5OTh4X3ByaXYgKnByaXYp CiB7CiAJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGNsaWVudC0+ZGV2Lm9mX25vZGU7CisJc3Ry dWN0IGkyY19ib2FyZF9pbmZvIGNlY19pbmZvOwogCXUzMiB2aWRlbzsKIAlpbnQgcmV2X2xvLCBy ZXZfaGksIHJldDsKIAogCW11dGV4X2luaXQoJnByaXYtPm11dGV4KTsJLyogcHJvdGVjdCB0aGUg cGFnZSBhY2Nlc3MgKi8KIAltdXRleF9pbml0KCZwcml2LT5hdWRpb19tdXRleCk7IC8qIHByb3Rl Y3QgYWNjZXNzIGZyb20gYXVkaW8gdGhyZWFkICovCisJbXV0ZXhfaW5pdCgmcHJpdi0+ZWRpZF9t dXRleCk7CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmcHJpdi0+ZWRpZF9kZWxheV93YWl0cSk7CiAJ dGltZXJfc2V0dXAoJnByaXYtPmVkaWRfZGVsYXlfdGltZXIsIHRkYTk5OHhfZWRpZF9kZWxheV9k b25lLCAwKTsKIAlJTklUX1dPUksoJnByaXYtPmRldGVjdF93b3JrLCB0ZGE5OTh4X2RldGVjdF93 b3JrKTsKQEAgLTE1NTYsMTEgKzE2OTcsOCBAQCBzdGF0aWMgaW50IHRkYTk5OHhfY3JlYXRlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHN0cnVjdCB0ZGE5OTh4X3ByaXYgKnByaXYpCiAJcmVn X3JlYWQocHJpdiwgUkVHX0lOVF9GTEFHU18xKTsKIAlyZWdfcmVhZChwcml2LCBSRUdfSU5UX0ZM QUdTXzIpOwogCi0JLyogaW5pdGlhbGl6ZSB0aGUgb3B0aW9uYWwgSVJRICovCi0JcHJpdi0+Y2Vj ID0gaTJjX25ld19kdW1teShjbGllbnQtPmFkYXB0ZXIsIHByaXYtPmNlY19hZGRyKTsKLQlpZiAo IXByaXYtPmNlYykKLQkJcmV0dXJuIC1FTk9ERVY7CiAKKwkvKiBpbml0aWFsaXplIHRoZSBvcHRp b25hbCBJUlEgKi8KIAlpZiAoY2xpZW50LT5pcnEpIHsKIAkJdW5zaWduZWQgbG9uZyBpcnFfZmxh Z3M7CiAKQEAgLTE1NjksNiArMTcwNyw5IEBAIHN0YXRpYyBpbnQgdGRhOTk4eF9jcmVhdGUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCwgc3RydWN0IHRkYTk5OHhfcHJpdiAqcHJpdikKIAogCQlp cnFfZmxhZ3MgPQogCQkJaXJxZF9nZXRfdHJpZ2dlcl90eXBlKGlycV9nZXRfaXJxX2RhdGEoY2xp ZW50LT5pcnEpKTsKKworCQlwcml2LT5jZWNfZ2x1ZS5pcnFfZmxhZ3MgPSBpcnFfZmxhZ3M7CisK IAkJaXJxX2ZsYWdzIHw9IElSUUZfU0hBUkVEIHwgSVJRRl9PTkVTSE9UOwogCQlyZXQgPSByZXF1 ZXN0X3RocmVhZGVkX2lycShjbGllbnQtPmlycSwgTlVMTCwKIAkJCQkJICAgdGRhOTk4eF9pcnFf dGhyZWFkLCBpcnFfZmxhZ3MsCkBAIC0xNTc3LDEzICsxNzE4LDQ2IEBAIHN0YXRpYyBpbnQgdGRh OTk4eF9jcmVhdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgc3RydWN0IHRkYTk5OHhfcHJp diAqcHJpdikKIAkJCWRldl9lcnIoJmNsaWVudC0+ZGV2LAogCQkJCSJmYWlsZWQgdG8gcmVxdWVz dCBJUlEjJXU6ICVkXG4iLAogCQkJCWNsaWVudC0+aXJxLCByZXQpOwotCQkJZ290byBlcnJfaXJx OworCQkJcmV0dXJuIHJldDsKIAkJfQogCiAJCS8qIGVuYWJsZSBIUEQgaXJxICovCiAJCWNlY193 cml0ZShwcml2LCBSRUdfQ0VDX1JYU0hQRElOVEVOQSwgQ0VDX1JYU0hQRExFVl9IUEQpOwogCX0K IAorCXByaXYtPmNlY19ub3RpZnkgPSBjZWNfbm90aWZpZXJfZ2V0KCZjbGllbnQtPmRldik7CisJ aWYgKCFwcml2LT5jZWNfbm90aWZ5KSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbDsK Kwl9CisKKwlwcml2LT5jZWNfZ2x1ZS5wYXJlbnQgPSAmY2xpZW50LT5kZXY7CisJcHJpdi0+Y2Vj X2dsdWUuZGF0YSA9IHByaXY7CisJcHJpdi0+Y2VjX2dsdWUuaW5pdCA9IHRkYTk5OHhfY2VjX2hv b2tfaW5pdDsKKwlwcml2LT5jZWNfZ2x1ZS5leGl0ID0gdGRhOTk4eF9jZWNfaG9va19leGl0Owor CXByaXYtPmNlY19nbHVlLm9wZW4gPSB0ZGE5OTh4X2NlY19ob29rX29wZW47CisJcHJpdi0+Y2Vj X2dsdWUucmVsZWFzZSA9IHRkYTk5OHhfY2VjX2hvb2tfcmVsZWFzZTsKKworCS8qCisJICogU29t ZSBUREE5OTh4IGFyZSBhY3R1YWxseSB0d28gSTJDIGRldmljZXMgbWVyZ2VkIG9udG8gb25lIHBp ZWNlCisJICogb2Ygc2lsaWNvbjogVERBOTk4OSBhbmQgVERBMTk5ODkgY29tYmluZSB0aGUgSERN SSB0cmFuc21pdHRlcgorCSAqIHdpdGggYSBzbGlnaHRseSBtb2RpZmllZCBUREE5OTUwIENFQyBk ZXZpY2UuICBUaGUgQ0VDIGRldmljZQorCSAqIGlzIGF0IHRoZSBUREE5OTUwIGFkZHJlc3MsIHdp dGggdGhlIGFkZHJlc3MgcGlucyBzdHJhcHBlZCBhY3Jvc3MKKwkgKiB0byB0aGUgVERBOTk4eCBh ZGRyZXNzIHBpbnMuICBIZW5jZSwgaXQgYWx3YXlzIGhhcyB0aGUgc2FtZQorCSAqIG9mZnNldC4K KwkgKi8KKwltZW1zZXQoJmNlY19pbmZvLCAwLCBzaXplb2YoY2VjX2luZm8pKTsKKwlzdHJsY3B5 KGNlY19pbmZvLnR5cGUsICJ0ZGE5OTUwIiwgc2l6ZW9mKGNlY19pbmZvLnR5cGUpKTsKKwljZWNf aW5mby5hZGRyID0gcHJpdi0+Y2VjX2FkZHI7CisJY2VjX2luZm8ucGxhdGZvcm1fZGF0YSA9ICZw cml2LT5jZWNfZ2x1ZTsKKwljZWNfaW5mby5pcnEgPSBjbGllbnQtPmlycTsKKworCXByaXYtPmNl YyA9IGkyY19uZXdfZGV2aWNlKGNsaWVudC0+YWRhcHRlciwgJmNlY19pbmZvKTsKKwlpZiAoIXBy aXYtPmNlYykgeworCQlmcmVlX2lycShwcml2LT5oZG1pLT5pcnEsIHByaXYpOworCQlyZXR1cm4g LUVOT0RFVjsKKwl9CisKIAkvKiBlbmFibGUgRURJRCByZWFkIGlycTogKi8KIAlyZWdfc2V0KHBy aXYsIFJFR19JTlRfRkxBR1NfMiwgSU5UX0ZMQUdTXzJfRURJRF9CTEtfUkQpOwogCkBAIC0xNjEw LDggKzE3ODQsMTUgQEAgc3RhdGljIGludCB0ZGE5OTh4X2NyZWF0ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50LCBzdHJ1Y3QgdGRhOTk4eF9wcml2ICpwcml2KQogZXJyX2F1ZGlvOgogCWlmIChj bGllbnQtPmlycSkKIAkJZnJlZV9pcnEoY2xpZW50LT5pcnEsIHByaXYpOwotZXJyX2lycToKLQlp MmNfdW5yZWdpc3Rlcl9kZXZpY2UocHJpdi0+Y2VjKTsKK2ZhaWw6CisJLyogaWYgZW5jb2Rlcl9p bml0IGZhaWxzLCB0aGUgZW5jb2RlciBzbGF2ZSBpcyBuZXZlciByZWdpc3RlcmVkLAorCSAqIHNv IGNsZWFudXAgaGVyZToKKwkgKi8KKwlpZiAocHJpdi0+Y2VjKQorCQlpMmNfdW5yZWdpc3Rlcl9k ZXZpY2UocHJpdi0+Y2VjKTsKKwlpZiAocHJpdi0+Y2VjX25vdGlmeSkKKwkJY2VjX25vdGlmaWVy X3B1dChwcml2LT5jZWNfbm90aWZ5KTsKKwlmcmVlX2lycShwcml2LT5oZG1pLT5pcnEsIHByaXYp OwogCXJldHVybiByZXQ7CiB9CiAKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK