From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: [RFC PATCH 5/5] media: platform: Add Chrome OS EC CEC driver Date: Tue, 15 May 2018 00:40:39 +0200 Message-ID: <1526337639-3568-6-git-send-email-narmstrong@baylibre.com> References: <1526337639-3568-1-git-send-email-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1526337639-3568-1-git-send-email-narmstrong@baylibre.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: airlied@linux.ie, hans.verkuil@cisco.com, lee.jones@linaro.org, olof@lixom.net, seanpaul@google.com Cc: Neil Armstrong , sadolfsson@google.com, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, fparent@baylibre.com, felixe@google.com, bleung@google.com, darekm@google.com, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org VGhlIENocm9tZSBPUyBFbWJlZGRlZCBDb250cm9sbGVyIGNhbiBleHBvc2UgYSBDRUMgYnVzLCB0 aGlzIHBhdGNoIGFkZCB0aGUKZHJpdmVyIGZvciBzdWNoIGZlYXR1cmUgb2YgdGhlIEVtYmVkZGVk IENvbnRyb2xsZXIuCgpUaGlzIGRyaXZlciBpcyBwYXJ0IG9mIHRoZSBjcm9zLWVjIE1GRCBhbmQg d2lsbCBiZSBhZGQgYXMgYSBzdWItZGV2aWNlIHdoZW4KdGhlIGZlYXR1cmUgYml0IGlzIGV4cG9z ZWQgYnkgdGhlIEVDLgoKVGhlIGNvbnRyb2xsZXIgd2lsbCBvbmx5IGhhbmRsZSBhIHNpbmdsZSBs b2dpY2FsIGFkZHJlc3MgYW5kIGhhbmRsZXMKYWxsIHRoZSBtZXNzYWdlcyByZXRyaWVzIGFuZCB3 aWxsIG9ubHkgZXhwb3NlIFN1Y2Nlc3Mgb3IgRXJyb3IuCgpXaGVuIHRoZSBsb2dpY2FsIGFkZHJl c3MgaXMgaW52YWxpZCwgdGhlIGNvbnRyb2xsZXIgd2lsbCBhY3QgYXMgYSBDRUMgc25pZmZlcgph bmQgdHJhbnNmZXIgYWxsIG1lc3NhZ2VzIG9uIHRoZSBidXMuCgpTaWduZWQtb2ZmLWJ5OiBOZWls IEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Ci0tLQogZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9LY29uZmlnICAgICAgICAgICAgICAgfCAgMTEgKwogZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9jcm9zLWVjL01ha2VmaWxlICAgICAgfCAgIDEgKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9j cm9zLWVjL2Nyb3MtZWMtY2VjLmMgfCAzMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0 IGZpbGVzIGNoYW5nZWQsIDM0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9jcm9zLWVjL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9jcm9zLWVjL2Nyb3MtZWMtY2VjLmMKCmRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L0tjb25maWcKaW5kZXggYzdhMWNmOC4uZTU1YThlZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcK QEAgLTU0Niw2ICs1NDYsMTcgQEAgbWVudWNvbmZpZyBDRUNfUExBVEZPUk1fRFJJVkVSUwogCiBp ZiBDRUNfUExBVEZPUk1fRFJJVkVSUwogCitjb25maWcgVklERU9fQ1JPU19FQ19DRUMKKwl0cmlz dGF0ZSAiQ2hyb21lIE9TIEVDIENFQyBkcml2ZXIiCisJZGVwZW5kcyBvbiBNRkRfQ1JPU19FQyB8 fCBDT01QSUxFX1RFU1QKKwlzZWxlY3QgQ0VDX0NPUkUKKwlzZWxlY3QgQ0VDX05PVElGSUVSCisJ LS0taGVscC0tLQorCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3Ugd2lsbCBnZXQgc3VwcG9ydCBm b3IgdGhlCisJICBDaHJvbWUgT1MgRW1iZWRkZWQgQ29udHJvbGxlcidzIENFQy4KKwkgIFRoZSBD RUMgYnVzIGlzIHByZXNlbnQgaW4gdGhlIEhETUkgY29ubmVjdG9yIGFuZCBlbmFibGVzIGNvbW11 bmljYXRpb24KKwkgIGJldHdlZW4gY29tcGF0aWJsZSBkZXZpY2VzLgorCiBjb25maWcgVklERU9f TUVTT05fQU9fQ0VDCiAJdHJpc3RhdGUgIkFtbG9naWMgTWVzb24gQU8gQ0VDIGRyaXZlciIKIAlk ZXBlbmRzIG9uIEFSQ0hfTUVTT04gfHwgQ09NUElMRV9URVNUCmRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmls ZQppbmRleCA5MzI1MTVkLi4wZTA1ODJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vTWFrZWZpbGUKQEAgLTky LDMgKzkyLDUgQEAgb2JqLSQoQ09ORklHX1ZJREVPX1FDT01fQ0FNU1MpCQkrPSBxY29tL2NhbXNz LTh4MTYvCiBvYmotJChDT05GSUdfVklERU9fUUNPTV9WRU5VUykJCSs9IHFjb20vdmVudXMvCiAK IG9iai15CQkJCQkrPSBtZXNvbi8KKworb2JqLXkJCQkJCSs9IGNyb3MtZWMvCmRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2Nyb3MtZWMvTWFrZWZpbGUgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2Nyb3MtZWMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uOWNlOTdmOQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v Y3Jvcy1lYy9NYWtlZmlsZQpAQCAtMCwwICsxIEBACitvYmotJChDT05GSUdfVklERU9fQ1JPU19F Q19DRUMpICs9IGNyb3MtZWMtY2VjLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vY3Jvcy1lYy9jcm9zLWVjLWNlYy5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9jcm9zLWVj L2Nyb3MtZWMtY2VjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVhOTBk YQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vY3Jvcy1lYy9jcm9z LWVjLWNlYy5jCkBAIC0wLDAgKzEsMzMxIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMCsKKy8qCisgKiBDRUMgZHJpdmVyIGZvciBDaHJvbWUgT1MgRW1iZWRkZWQgQ29udHJv bGxlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOCBCYXlMaWJyZSwgU0FTCisgKiBBdXRob3I6 IE5laWwgQXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4KKyAqLworCisjaW5jbHVk ZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZG1pLmg+CisjaW5jbHVk ZSA8bGludXgvY2VjLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4 L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPG1lZGlhL2NlYy5oPgorI2luY2x1ZGUgPG1lZGlhL2Nl Yy1ub3RpZmllci5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9jcm9zX2VjLmg+CisjaW5jbHVkZSA8 bGludXgvbWZkL2Nyb3NfZWNfY29tbWFuZHMuaD4KKworI2RlZmluZSBEUlZfTkFNRQkiY3Jvcy1l Yy1jZWMiCisKKy8qKgorICogc3RydWN0IGNyb3NfZWNfY2VjIC0gRHJpdmVyIGRhdGEgZm9yIEVD IENFQworICoKKyAqIEBjcm9zX2VjOiBQb2ludGVyIHRvIEVDIGRldmljZQorICogQG5vdGlmaWVy OiBOb3RpZmllciBpbmZvIGZvciByZXNwb25kaW5nIHRvIEVDIGV2ZW50cworICogQGFkYXA6IENF QyBhZGFwdGVyCisgKiBAbm90aWZ5OiBDRUMgbm90aWZpZXIgcG9pbnRlcgorICogQHJjX21zZzog c3RvcmFnZSBmb3IgYSByZWNlaXZlZCBtZXNzYWdlCisgKi8KK3N0cnVjdCBjcm9zX2VjX2NlYyB7 CisJc3RydWN0IGNyb3NfZWNfZGV2aWNlICpjcm9zX2VjOworCXN0cnVjdCBub3RpZmllcl9ibG9j ayBub3RpZmllcjsKKwlzdHJ1Y3QgY2VjX2FkYXB0ZXIgKmFkYXA7CisJc3RydWN0IGNlY19ub3Rp ZmllciAqbm90aWZ5OworCXN0cnVjdCBjZWNfbXNnIHJ4X21zZzsKK307CisKK3N0YXRpYyB2b2lk IGhhbmRsZV9jZWNfbWVzc2FnZShzdHJ1Y3QgY3Jvc19lY19jZWMgKmNyb3NfZWNfY2VjKQorewor CXN0cnVjdCBjcm9zX2VjX2RldmljZSAqY3Jvc19lYyA9IGNyb3NfZWNfY2VjLT5jcm9zX2VjOwor CXVpbnQ4X3QgKmNlY19tZXNzYWdlID0gY3Jvc19lYy0+ZXZlbnRfZGF0YS5kYXRhLmNlY19tZXNz YWdlOworCXVuc2lnbmVkIGludCBsZW4gPSBjcm9zX2VjLT5ldmVudF9zaXplOworCisJY3Jvc19l Y19jZWMtPnJ4X21zZy5sZW4gPSBsZW47CisJbWVtY3B5KGNyb3NfZWNfY2VjLT5yeF9tc2cubXNn LCBjZWNfbWVzc2FnZSwgbGVuKTsKKworCWNlY19yZWNlaXZlZF9tc2coY3Jvc19lY19jZWMtPmFk YXAsICZjcm9zX2VjX2NlYy0+cnhfbXNnKTsKK30KKworc3RhdGljIHZvaWQgaGFuZGxlX2NlY19l dmVudChzdHJ1Y3QgY3Jvc19lY19jZWMgKmNyb3NfZWNfY2VjKQoreworCXN0cnVjdCBjcm9zX2Vj X2RldmljZSAqY3Jvc19lYyA9IGNyb3NfZWNfY2VjLT5jcm9zX2VjOworCXVpbnQzMl90IGV2ZW50 cyA9IGNyb3NfZWMtPmV2ZW50X2RhdGEuZGF0YS5jZWNfZXZlbnRzOworCisJaWYgKGV2ZW50cyAm IEVDX01LQlBfQ0VDX1NFTkRfT0spCisJCWNlY190cmFuc21pdF9hdHRlbXB0X2RvbmUoY3Jvc19l Y19jZWMtPmFkYXAsCisJCQkJCSAgQ0VDX1RYX1NUQVRVU19PSyk7CisKKwlpZiAoZXZlbnRzICYg RUNfTUtCUF9DRUNfU0VORF9GQUlMRUQpCisJCWNlY190cmFuc21pdF9hdHRlbXB0X2RvbmUoY3Jv c19lY19jZWMtPmFkYXAsCisJCQkJCSAgQ0VDX1RYX1NUQVRVU19FUlJPUik7Cit9CisKK3N0YXRp YyBpbnQgY3Jvc19lY19jZWNfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKKwl1bnNp Z25lZCBsb25nIHF1ZXVlZF9kdXJpbmdfc3VzcGVuZCwgdm9pZCAqX25vdGlmeSkKK3sKKwlzdHJ1 Y3QgY3Jvc19lY19jZWMgKmNyb3NfZWNfY2VjOworCXN0cnVjdCBjcm9zX2VjX2RldmljZSAqY3Jv c19lYzsKKworCWNyb3NfZWNfY2VjID0gY29udGFpbmVyX29mKG5iLCBzdHJ1Y3QgY3Jvc19lY19j ZWMsIG5vdGlmaWVyKTsKKwljcm9zX2VjID0gY3Jvc19lY19jZWMtPmNyb3NfZWM7CisKKwlpZiAo Y3Jvc19lYy0+ZXZlbnRfZGF0YS5ldmVudF90eXBlID09IEVDX01LQlBfQ0VDX0VWRU5UKSB7CisJ CWhhbmRsZV9jZWNfZXZlbnQoY3Jvc19lY19jZWMpOworCQlyZXR1cm4gTk9USUZZX09LOworCX0K KworCWlmIChjcm9zX2VjLT5ldmVudF9kYXRhLmV2ZW50X3R5cGUgPT0gRUNfTUtCUF9FVkVOVF9D RUNfTUVTU0FHRSkgeworCQloYW5kbGVfY2VjX21lc3NhZ2UoY3Jvc19lY19jZWMpOworCQlyZXR1 cm4gTk9USUZZX09LOworCX0KKworCXJldHVybiBOT1RJRllfRE9ORTsKK30KKworc3RhdGljIGlu dCBjcm9zX2VjX2NlY19zZXRfbG9nX2FkZHIoc3RydWN0IGNlY19hZGFwdGVyICphZGFwLCB1OCBs b2dpY2FsX2FkZHIpCit7CisJc3RydWN0IGNyb3NfZWNfY2VjICpjcm9zX2VjX2NlYyA9IGFkYXAt PnByaXY7CisJc3RydWN0IGNyb3NfZWNfZGV2aWNlICpjcm9zX2VjID0gY3Jvc19lY19jZWMtPmNy b3NfZWM7CisJc3RydWN0IHsKKwkJc3RydWN0IGNyb3NfZWNfY29tbWFuZCBtc2c7CisJCXN0cnVj dCBlY19wYXJhbXNfY2VjX3NldCBkYXRhOworCX0gX19wYWNrZWQgbXNnOworCWludCByZXQgPSAw OworCisJaWYgKGxvZ2ljYWxfYWRkciA9PSBDRUNfTE9HX0FERFJfSU5WQUxJRCkKKwkJcmV0dXJu IDA7CisKKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCW1zZy5tc2cuY29tbWFuZCA9 IEVDX0NNRF9DRUNfU0VUOworCW1zZy5tc2cub3V0c2l6ZSA9IHNpemVvZihtc2cuZGF0YSk7CisJ bXNnLmRhdGEuY21kID0gQ0VDX0NNRF9MT0dJQ0FMX0FERFJFU1M7CisJbXNnLmRhdGEuYWRkcmVz cyA9IGxvZ2ljYWxfYWRkcjsKKworCXJldCA9IGNyb3NfZWNfY21kX3hmZXJfc3RhdHVzKGNyb3Nf ZWMsICZtc2cubXNnKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGNyb3NfZWMtPmRldiwK KwkJCSJlcnJvciBzZXR0aW5nIENFQyBsb2dpY2FsIGFkZHJlc3Mgb24gRUM6ICVkXG4iLCByZXQp OworCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNyb3Nf ZWNfY2VjX3RyYW5zbWl0KHN0cnVjdCBjZWNfYWRhcHRlciAqYWRhcCwgdTggYXR0ZW1wdHMsCisJ CQkJdTMyIHNpZ25hbF9mcmVlX3RpbWUsIHN0cnVjdCBjZWNfbXNnICpjZWNfbXNnKQoreworCXN0 cnVjdCBjcm9zX2VjX2NlYyAqY3Jvc19lY19jZWMgPSBhZGFwLT5wcml2OworCXN0cnVjdCBjcm9z X2VjX2RldmljZSAqY3Jvc19lYyA9IGNyb3NfZWNfY2VjLT5jcm9zX2VjOworCXN0cnVjdCB7CisJ CXN0cnVjdCBjcm9zX2VjX2NvbW1hbmQgbXNnOworCQlzdHJ1Y3QgZWNfcGFyYW1zX2NlY193cml0 ZSBkYXRhOworCX0gX19wYWNrZWQgbXNnOworCWludCByZXQgPSAwOworCisJaWYgKGNlY19tc2ct PmxlbiA+IE1BWF9DRUNfTVNHX0xFTikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltZW1zZXQoJm1z ZywgMCwgc2l6ZW9mKG1zZykpOworCW1zZy5tc2cuY29tbWFuZCA9IEVDX0NNRF9DRUNfV1JJVEVf TVNHOworCW1zZy5tc2cub3V0c2l6ZSA9IGNlY19tc2ctPmxlbjsKKwltZW1jcHkobXNnLmRhdGEu bXNnLCBjZWNfbXNnLT5tc2csIGNlY19tc2ctPmxlbik7CisKKwlyZXQgPSBjcm9zX2VjX2NtZF94 ZmVyX3N0YXR1cyhjcm9zX2VjLCAmbXNnLm1zZyk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vy cihjcm9zX2VjLT5kZXYsCisJCQkiZXJyb3Igd3JpdHRpbmcgQ0VDIG1zZyBvbiBFQzogJWRcbiIs IHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg Y3Jvc19lY19jZWNfYWRhcF9lbmFibGUoc3RydWN0IGNlY19hZGFwdGVyICphZGFwLCBib29sIGVu YWJsZSkKK3sKKwlzdHJ1Y3QgY3Jvc19lY19jZWMgKmNyb3NfZWNfY2VjID0gYWRhcC0+cHJpdjsK KwlzdHJ1Y3QgY3Jvc19lY19kZXZpY2UgKmNyb3NfZWMgPSBjcm9zX2VjX2NlYy0+Y3Jvc19lYzsK KwlzdHJ1Y3QgeworCQlzdHJ1Y3QgY3Jvc19lY19jb21tYW5kIG1zZzsKKwkJc3RydWN0IGVjX3Bh cmFtc19jZWNfc2V0IGRhdGE7CisJfSBfX3BhY2tlZCBtc2c7CisJaW50IHJldCA9IDA7CisKKwlt ZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCW1zZy5tc2cuY29tbWFuZCA9IEVDX0NNRF9D RUNfU0VUOworCW1zZy5tc2cub3V0c2l6ZSA9IHNpemVvZihtc2cuZGF0YSk7CisJbXNnLmRhdGEu Y21kID0gQ0VDX0NNRF9FTkFCTEU7CisJbXNnLmRhdGEuZW5hYmxlID0gZW5hYmxlOworCisJcmV0 ID0gY3Jvc19lY19jbWRfeGZlcl9zdGF0dXMoY3Jvc19lYywgJm1zZy5tc2cpOworCWlmIChyZXQg PCAwKSB7CisJCWRldl9lcnIoY3Jvc19lYy0+ZGV2LAorCQkJImVycm9yICVzYWJsaW5nIENFQyBv biBFQzogJWRcbiIsCisJCQkoZW5hYmxlID8gImVuIiA6ICJkaXMiKSwgcmV0KTsKKwkJcmV0dXJu IHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjZWNfYWRh cF9vcHMgY3Jvc19lY19jZWNfb3BzID0geworCS5hZGFwX2VuYWJsZSA9IGNyb3NfZWNfY2VjX2Fk YXBfZW5hYmxlLAorCS5hZGFwX2xvZ19hZGRyID0gY3Jvc19lY19jZWNfc2V0X2xvZ19hZGRyLAor CS5hZGFwX3RyYW5zbWl0ID0gY3Jvc19lY19jZWNfdHJhbnNtaXQsCit9OworCisjaWZkZWYgQ09O RklHX1BNX1NMRUVQCitzdGF0aWMgaW50IGNyb3NfZWNfY2VjX3N1c3BlbmQoc3RydWN0IGRldmlj ZSAqZGV2KQoreworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9k ZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgY3Jvc19lY19jZWMgKmNyb3NfZWNfY2VjID0gZGV2X2dldF9k cnZkYXRhKCZwZGV2LT5kZXYpOworCisJaWYgKGRldmljZV9tYXlfd2FrZXVwKGRldikpCisJCWVu YWJsZV9pcnFfd2FrZShjcm9zX2VjX2NlYy0+Y3Jvc19lYy0+aXJxKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IGNyb3NfZWNfY2VjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7 CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYp OworCXN0cnVjdCBjcm9zX2VjX2NlYyAqY3Jvc19lY19jZWMgPSBkZXZfZ2V0X2RydmRhdGEoJnBk ZXYtPmRldik7CisKKwlpZiAoZGV2aWNlX21heV93YWtldXAoZGV2KSkKKwkJZGlzYWJsZV9pcnFf d2FrZShjcm9zX2VjX2NlYy0+Y3Jvc19lYy0+aXJxKTsKKworCXJldHVybiAwOworfQorI2VuZGlm CisKK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhjcm9zX2VjX2NlY19wbV9vcHMsCisJY3Jvc19l Y19jZWNfc3VzcGVuZCwgY3Jvc19lY19jZWNfcmVzdW1lKTsKKworCitzdHJ1Y3QgY2VjX2RtaV9t YXRjaCB7CisJY2hhciAqc3lzX3ZlbmRvcjsKKwljaGFyICpwcm9kdWN0X25hbWU7CisJY2hhciAq ZGV2bmFtZTsKKwljaGFyICpjb25uOworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjZWNfZG1p X21hdGNoIGNlY19kbWlfbWF0Y2hfdGFibGVbXSA9IHsKKwkvKiBHb29nbGUgRml6eiAqLworCXsg Ikdvb2dsZSIsICJGaXp6IiwgIjAwMDA6MDA6MDIuMCIsICJIRE1JLUEtMSIgfSwKK307CisKK3N0 YXRpYyBpbnQgY3Jvc19lY19jZWNfZ2V0X25vdGlmaWVyKHN0cnVjdCBjZWNfbm90aWZpZXIgKipu b3RpZnkpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwIDsgaSA8IEFSUkFZX1NJWkUoY2VjX2Rt aV9tYXRjaF90YWJsZSkgOyArK2kpIHsKKwkJY29uc3Qgc3RydWN0IGNlY19kbWlfbWF0Y2ggKm0g PSAmY2VjX2RtaV9tYXRjaF90YWJsZVtpXTsKKworCQlpZiAoZG1pX21hdGNoKERNSV9TWVNfVkVO RE9SLCBtLT5zeXNfdmVuZG9yKSAmJgorCQkgICAgZG1pX21hdGNoKERNSV9QUk9EVUNUX05BTUUs IG0tPnByb2R1Y3RfbmFtZSkpIHsKKwkJCSpub3RpZnkgPSBjZWNfbm90aWZpZXJfZ2V0X2J5bmFt ZShtLT5kZXZuYW1lLCBtLT5jb25uKTsKKwkJCXJldHVybiAwOworCQl9CisJfQorCisJcmV0dXJu IC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgY3Jvc19lY19jZWNfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgY3Jvc19lY19kZXYgKmVjX2RldiA9IGRldl9n ZXRfZHJ2ZGF0YShwZGV2LT5kZXYucGFyZW50KTsKKwlzdHJ1Y3QgY3Jvc19lY19kZXZpY2UgKmNy b3NfZWMgPSBlY19kZXYtPmVjX2RldjsKKwlzdHJ1Y3QgY3Jvc19lY19jZWMgKmNyb3NfZWNfY2Vj OworCXVuc2lnbmVkIGludCBjZWNfY2FwcyA9IENFQ19DQVBfREVGQVVMVFM7CisJaW50IHJldDsK KworCWNyb3NfZWNfY2VjID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqY3Jvc19l Y19jZWMpLAorCQkJCSAgIEdGUF9LRVJORUwpOworCWlmICghY3Jvc19lY19jZWMpCisJCXJldHVy biAtRU5PTUVNOworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgY3Jvc19lY19jZWMpOwor CWNyb3NfZWNfY2VjLT5jcm9zX2VjID0gY3Jvc19lYzsKKworCXJldCA9IGNyb3NfZWNfY2VjX2dl dF9ub3RpZmllcigmY3Jvc19lY19jZWMtPm5vdGlmeSk7CisJaWYgKHJldCkgeworCQlkZXZfd2Fy bigmcGRldi0+ZGV2LCAibm8gQ0VDIG5vdGlmaWVyIGF2YWlsYWJsZVxuIik7CisJCWNlY19jYXBz IHw9IENFQ19DQVBfUEhZU19BRERSOworCX0gZWxzZSBpZiAoIWNyb3NfZWNfY2VjLT5ub3RpZnkp IHsKKwkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CisJfQorCisJcmV0ID0gZGV2aWNlX2luaXRfd2Fr ZXVwKCZwZGV2LT5kZXYsIDEpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAi ZmFpbGVkIHRvIGluaXRpYWxpemUgd2FrZXVwXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlj cm9zX2VjX2NlYy0+YWRhcCA9IGNlY19hbGxvY2F0ZV9hZGFwdGVyKCZjcm9zX2VjX2NlY19vcHMs IGNyb3NfZWNfY2VjLAorCQkJCQkJIERSVl9OQU1FLCBjZWNfY2FwcywgMSk7CisJaWYgKElTX0VS Uihjcm9zX2VjX2NlYy0+YWRhcCkpCisJCXJldHVybiBQVFJfRVJSKGNyb3NfZWNfY2VjLT5hZGFw KTsKKworCWNyb3NfZWNfY2VjLT5hZGFwLT5vd25lciA9IFRISVNfTU9EVUxFOworCisJLyogR2V0 IENFQyBldmVudHMgZnJvbSB0aGUgRUMuICovCisJY3Jvc19lY19jZWMtPm5vdGlmaWVyLm5vdGlm aWVyX2NhbGwgPSBjcm9zX2VjX2NlY19ldmVudDsKKwlyZXQgPSBibG9ja2luZ19ub3RpZmllcl9j aGFpbl9yZWdpc3RlcigmY3Jvc19lYy0+ZXZlbnRfbm90aWZpZXIsCisJCQkJCSAgICAgICAmY3Jv c19lY19jZWMtPm5vdGlmaWVyKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwg ImZhaWxlZCB0byByZWdpc3RlciBub3RpZmllclxuIik7CisJCWNlY19kZWxldGVfYWRhcHRlcihj cm9zX2VjX2NlYy0+YWRhcCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gY2VjX3JlZ2lz dGVyX2FkYXB0ZXIoY3Jvc19lY19jZWMtPmFkYXAsICZwZGV2LT5kZXYpOworCWlmIChyZXQgPCAw KSB7CisJCWNlY19kZWxldGVfYWRhcHRlcihjcm9zX2VjX2NlYy0+YWRhcCk7CisJCXJldHVybiBy ZXQ7CisJfQorCisJY2VjX3JlZ2lzdGVyX2NlY19ub3RpZmllcihjcm9zX2VjX2NlYy0+YWRhcCwg Y3Jvc19lY19jZWMtPm5vdGlmeSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjcm9z X2VjX2NlY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qg Y3Jvc19lY19jZWMgKmNyb3NfZWNfY2VjID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJ c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlpbnQgcmV0OworCisJcmV0ID0gYmxv Y2tpbmdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcigKKwkJCSZjcm9zX2VjX2NlYy0+Y3Jvc19l Yy0+ZXZlbnRfbm90aWZpZXIsCisJCQkmY3Jvc19lY19jZWMtPm5vdGlmaWVyKTsKKworCWlmIChy ZXQpIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gdW5yZWdpc3RlciBub3RpZmllclxuIik7 CisJCXJldHVybiByZXQ7CisJfQorCisJY2VjX3VucmVnaXN0ZXJfYWRhcHRlcihjcm9zX2VjX2Nl Yy0+YWRhcCk7CisKKwlpZiAoY3Jvc19lY19jZWMtPm5vdGlmeSkKKwkJY2VjX25vdGlmaWVyX3B1 dChjcm9zX2VjX2NlYy0+bm90aWZ5KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBjcm9zX2VjX2NlY19kcml2ZXIgPSB7CisJLnByb2JlID0gY3Jvc19l Y19jZWNfcHJvYmUsCisJLnJlbW92ZSAgPSBjcm9zX2VjX2NlY19yZW1vdmUsCisJLmRyaXZlciA9 IHsKKwkJLm5hbWUgPSBEUlZfTkFNRSwKKwkJLnBtID0gJmNyb3NfZWNfY2VjX3BtX29wcywKKwl9 LAorfTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjcm9zX2VjX2NlY19kcml2ZXIpOworCitN T0RVTEVfREVTQ1JJUFRJT04oIkNFQyBkcml2ZXIgZm9yIENocm9tZSBPUyBFQ3MiKTsKK01PRFVM RV9BVVRIT1IoIk5laWwgQXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4iKTsKK01P RFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBEUlZfTkFNRSk7 Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==