From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: [PATCH v7 5/6] drm/i2c: tda998x: Register ASoC hdmi-codec and add audio DT binding Date: Thu, 17 Mar 2016 12:03:47 +0200 Message-ID: <6f10d667e5e56806ec1a788b39412ab45086c38c.1458207661.git.jsarha@ti.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, airlied@linux.ie, linux-omap@vger.kernel.org, devicetree@vger.kernel.org, bcousson@baylibre.com, alsa-devel@alsa-project.org Cc: peter.ujfalusi@ti.com, tony@atomide.com, broonie@kernel.org, arnaud.pouliquen@st.com, Jyri Sarha , liam.r.girdwood@linux.intel.com, tomi.valkeinen@ti.com, rmk+kernel@arm.linux.org.uk List-Id: devicetree@vger.kernel.org UmVnaXN0ZXIgQVNvQyBIRE1JIGNvZGVjIGZvciBhdWRpbyBmdW5jdGlvbmFsaXR5IGFuZCBhZGRz IGRldmljZSB0cmVlCmJpbmRpbmcgZm9yIGF1ZGlvIGNvbmZpZ3VyYXRpb24uCgpXaXRoIHRoZSBy ZWdpc3RlcmVkIEhETUkgY29kZWMgdGhlIHRkYTk5OHggbm9kZSBjYW4gYmUgdXNlZCBsaWtlIGEK cmVndWxhciBjb2RlYyBub2RlIGluIEFTb0MgY2FyZCBjb25maWd1cmF0aW9ucy4gSERNSSBhdWRp byBpbmZvLWZyYW1lCmFuZCBhdWRpbyBzdHJlYW0gaGVhZGVyIGlzIGdlbmVyYXRlZCBieSB0aGUg QVNvQyBIRE1JIGNvZGVjLiBUaGUgY29kZWMKYWxzbyBhcHBsaWVzIGNvbnN0cmFpbnRzIGZvciBh dmFpbGFibGUgc2FtcGxlLXJhdGVzIGJhc2VkIG9uIEVkaWQgTGlrZQpEYXRhIGZyb20gdGhlIGRp c3BsYXkuIFRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGRvY3VtZW50IGhhcyBiZWVuCnVwZGF0ZWQg WzFdLgoKUGFydCBvZiB0aGlzIHBhdGNoIGhhcyBiZWVuIGluc3BpcmVkIGJ5IEplYW4gRnJhbmNv aXNlJ3MgImRybS9pMmM6IHRkYTk5OHg6CkFkZCBzdXBwb3J0IG9mIGEgRFQgZ3JhcGggb2YgcG9y dHMiLXBhdGNoIFsyXS4gVGhlcmUgbWF5IHN0aWxsIGJlIHNvbWUKaWRlbnRpY2FsIGxpbmVzIGxl ZnQgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2ggYW5kIHNvbWUgb2YgdGhlIGlkZWFzCmhhdmUgY29t ZSBmcm9tIHRoZXJlLgoKWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNw bGF5L2JyaWRnZS90ZGE5OTh4LnR4dApbMl0gaHR0cDovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9y Zy9waXBlcm1haWwvYWxzYS1kZXZlbC8yMDE1LUp1bHkvMDk1MjU1Lmh0bWwKClNpZ25lZC1vZmYt Ynk6IEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+Ci0tLQogLi4uL2RldmljZXRyZWUvYmluZGlu Z3MvZGlzcGxheS9icmlkZ2UvdGRhOTk4eC50eHQgfCAgMTggKysKIGRyaXZlcnMvZ3B1L2RybS9p MmMvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2Ry bS9pMmMvdGRhOTk4eF9kcnYuYyAgICAgICAgICAgICAgICAgIHwgMTk5ICsrKysrKysrKysrKysr KysrKysrLQogaW5jbHVkZS9kcm0vaTJjL3RkYTk5OHguaCAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIGluY2x1ZGUvZHQtYmluZGluZ3MvZGlzcGxheS90ZGE5OTh4LmggICAgICAg ICAgICAgIHwgICA3ICsKIDUgZmlsZXMgY2hhbmdlZCwgMjI0IGluc2VydGlvbnMoKyksIDUgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kdC1iaW5kaW5ncy9kaXNwbGF5 L3RkYTk5OHguaAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9kaXNwbGF5L2JyaWRnZS90ZGE5OTh4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9kaXNwbGF5L2JyaWRnZS90ZGE5OTh4LnR4dAppbmRleCBlMTc4ZTZiLi4yNGNjMjQ2 IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9i cmlkZ2UvdGRhOTk4eC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz L2Rpc3BsYXkvYnJpZGdlL3RkYTk5OHgudHh0CkBAIC0yMSw4ICsyMSwxOSBAQCBPcHRpb25hbCBw cm9wZXJ0aWVzOgogICAtIHZpZGVvLXBvcnRzOiAyNCBiaXRzIHZhbHVlIHdoaWNoIGRlZmluZXMg aG93IHRoZSB2aWRlbyBjb250cm9sbGVyCiAJb3V0cHV0IGlzIHdpcmVkIHRvIHRoZSBUREE5OTh4 IGlucHV0IC0gZGVmYXVsdDogPDB4MjMwMTQ1PgogCisgIC0gYXVkaW8tcG9ydHM6IGFycmF5IG9m IDgtYml0IHZhbHVlcywgMiB2YWx1ZXMgcGVyIG9uZSBEQUlbMV0uCisJVGhlIGZpcnN0IHZhbHVl IGRlZmluZXMgdGhlIERBSSB0eXBlOiBUREE5OTh4X1NQRElGIG9yIFREQTk5OHhfSTJTWzJdLgor CVRoZSBzZWNvbmQgdmFsdWUgZGVmaW5lcyB0aGUgdGRhOTk4eCBBUF9FTkEgcmVnIGNvbnRlbnQg d2hlbiB0aGUgREFJCisJaW4gcXVlc3Rpb24gaXMgdXNlZC4gVGhlIGltcGxlbWVudGF0aW9uIGFs bG93cyBvbmUgb3IgdHdvIERBSXMuIElmIHR3bworCURBSXMgYXJlIGRlZmluZWQsIHRoZXkgbXVz dCBiZSBvZiBkaWZmZXJlbnQgdHlwZS4KKworWzFdIERvY3VtZW50YXRpb24vc291bmQvYWxzYS9z b2MvREFJLnR4dAorWzJdIGluY2x1ZGUvZHQtYmluZGluZ3MvZGlzcGxheS90ZGE5OTh4LmgKKwog RXhhbXBsZToKIAorI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Rpc3BsYXkvdGRhOTk4eC5oPgorCiAJ dGRhOTk4eDogaGRtaS1lbmNvZGVyIHsKIAkJY29tcGF0aWJsZSA9ICJueHAsdGRhOTk4eCI7CiAJ CXJlZyA9IDwweDcwPjsKQEAgLTMwLDQgKzQxLDExIEBAIEV4YW1wbGU6CiAJCWludGVycnVwdHMg PSA8MjcgMj47CQkvKiBmYWxsaW5nIGVkZ2UgKi8KIAkJcGluY3RybC0wID0gPCZwbXhfY2FtZXJh PjsKIAkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJdmlkZW8tcG9ydHMgPSA8MHgyMzAx NDU+OworCisJCSNzb3VuZC1kYWktY2VsbHMgPSA8Mj47CisJCQkgICAgIC8qCURBSS1mb3JtYXQJ QVBfRU5BIHJlZyB2YWx1ZSAqLworCQlhdWRpby1wb3J0cyA9IDwJVERBOTk4eF9TUERJRgkweDA0 CisJCQkJVERBOTk4eF9JMlMJMHgwMz47CisKIAl9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2kyYy9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2kyYy9LY29uZmlnCmluZGV4IDIyYzdl ZDYuLjA4OGYyNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pMmMvS2NvbmZpZworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTJjL0tjb25maWcKQEAgLTI4LDYgKzI4LDcgQEAgY29uZmlnIERS TV9JMkNfU0lMMTY0CiBjb25maWcgRFJNX0kyQ19OWFBfVERBOTk4WAogCXRyaXN0YXRlICJOWFAg U2VtaWNvbmR1Y3RvcnMgVERBOTk4WCBIRE1JIGVuY29kZXIiCiAJZGVmYXVsdCBtIGlmIERSTV9U SUxDREMKKwlzZWxlY3QgU05EX1NPQ19IRE1JX0NPREVDIGlmIFNORF9TT0MKIAloZWxwCiAJICBT dXBwb3J0IGZvciBOWFAgU2VtaWNvbmR1Y3RvcnMgVERBOTk4WCBIRE1JIGVuY29kZXJzLgogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTJjL3RkYTk5OHhfZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTJjL3RkYTk5OHhfZHJ2LmMKaW5kZXggZjk3Yjc0OC4uYTBkY2NmOSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2kyYy90ZGE5OTh4X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pMmMvdGRhOTk4eF9kcnYuYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2lycS5oPgogI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZGVm Lmg+CisjaW5jbHVkZSA8c291bmQvaGRtaS1jb2RlYy5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybVAu aD4KICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KQEAgLTMwLDYgKzMxLDExIEBA CiAKICNkZWZpbmUgREJHKGZtdCwgLi4uKSBEUk1fREVCVUcoZm10IlxuIiwgIyNfX1ZBX0FSR1Nf XykKIAorc3RydWN0IHRkYTk5OHhfYXVkaW9fcG9ydCB7CisJdTggZm9ybWF0OwkJLyogQUZNVF94 eHggKi8KKwl1OCBjb25maWc7CQkvKiBBUCB2YWx1ZSAqLworfTsKKwogc3RydWN0IHRkYTk5OHhf cHJpdiB7CiAJc3RydWN0IGkyY19jbGllbnQgKmNlYzsKIAlzdHJ1Y3QgaTJjX2NsaWVudCAqaGRt aTsKQEAgLTQzLDYgKzQ5LDggQEAgc3RydWN0IHRkYTk5OHhfcHJpdiB7CiAJdTggdmlwX2NudHJs XzI7CiAJc3RydWN0IHRkYTk5OHhfYXVkaW9fcGFyYW1zIGF1ZGlvX3BhcmFtczsKIAorCXN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKmF1ZGlvX3BkZXY7CisKIAl3YWl0X3F1ZXVlX2hlYWRfdCB3cV9l ZGlkOwogCXZvbGF0aWxlIGludCB3cV9lZGlkX3dhaXQ7CiAKQEAgLTUzLDYgKzYxLDggQEAgc3Ry dWN0IHRkYTk5OHhfcHJpdiB7CiAKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKIAlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7CisKKwlzdHJ1Y3QgdGRhOTk4eF9hdWRpb19wb3J0 IGF1ZGlvX3BvcnRbMl07CiB9OwogCiAjZGVmaW5lIGNvbm5fdG9fdGRhOTk4eF9wcml2KHgpIFwK QEAgLTcwNyw2ICs3MTcsNyBAQCB0ZGE5OTh4X2NvbmZpZ3VyZV9hdWRpbyhzdHJ1Y3QgdGRhOTk4 eF9wcml2ICpwcml2LAogewogCXU4IGJ1Zls2XSwgY2xrc2VsX2FpcCwgY2xrc2VsX2ZzLCBjdHNf biwgYWRpdjsKIAl1MzIgbjsKKwlpbnQgcmV0OwogCiAJLyogRW5hYmxlIGF1ZGlvIHBvcnRzICov CiAJcmVnX3dyaXRlKHByaXYsIFJFR19FTkFfQVAsIHBhcmFtcy0+Y29uZmlnKTsKQEAgLTc0Myw3 ICs3NTQsNyBAQCB0ZGE5OTh4X2NvbmZpZ3VyZV9hdWRpbyhzdHJ1Y3QgdGRhOTk4eF9wcml2ICpw cml2LAogCQlicmVhazsKIAogCWRlZmF1bHQ6Ci0JCUJVRygpOworCQlkZXZfZXJyKCZwcml2LT5o ZG1pLT5kZXYsICJVbnN1cHBvcnRlZCBJMlMgZm9ybWF0XG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQogCkBAIC0xMTYwLDYgKzExNzEsOCBAQCBzdGF0aWMgaW50IHRkYTk5OHhfY29ubmVjdG9y X2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCWRybV9tb2RlX2Nv bm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOwogCW4gPSBkcm1f YWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKIAlwcml2LT5pc19oZG1pX3NpbmsgPSBk cm1fZGV0ZWN0X2hkbWlfbW9uaXRvcihlZGlkKTsKKwlkcm1fZWRpZF90b19lbGQoY29ubmVjdG9y LCBlZGlkKTsKKwogCWtmcmVlKGVkaWQpOwogCiAJcmV0dXJuIG47CkBAIC0xMTgxLDYgKzExOTQs OSBAQCBzdGF0aWMgdm9pZCB0ZGE5OTh4X2Rlc3Ryb3koc3RydWN0IHRkYTk5OHhfcHJpdiAqcHJp dikKIAljZWNfd3JpdGUocHJpdiwgUkVHX0NFQ19SWFNIUERJTlRFTkEsIDApOwogCXJlZ19jbGVh cihwcml2LCBSRUdfSU5UX0ZMQUdTXzIsIElOVF9GTEFHU18yX0VESURfQkxLX1JEKTsKIAorCWlm IChwcml2LT5hdWRpb19wZGV2KQorCQlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3Rlcihwcml2LT5h dWRpb19wZGV2KTsKKwogCWlmIChwcml2LT5oZG1pLT5pcnEpCiAJCWZyZWVfaXJxKHByaXYtPmhk bWktPmlycSwgcHJpdik7CiAKQEAgLTExOTAsOCArMTIwNiwxNzkgQEAgc3RhdGljIHZvaWQgdGRh OTk4eF9kZXN0cm95KHN0cnVjdCB0ZGE5OTh4X3ByaXYgKnByaXYpCiAJaTJjX3VucmVnaXN0ZXJf ZGV2aWNlKHByaXYtPmNlYyk7CiB9CiAKK3N0YXRpYyBpbnQgdGRhOTk4eF9hdWRpb19od19wYXJh bXMoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgIHN0cnVjdCBoZG1pX2NvZGVjX2RhaWZtdCAq ZGFpZm10LAorCQkJCSAgIHN0cnVjdCBoZG1pX2NvZGVjX3BhcmFtcyAqcGFyYW1zKQoreworCXN0 cnVjdCB0ZGE5OTh4X3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgaSwg cmV0OworCXN0cnVjdCB0ZGE5OTh4X2F1ZGlvX3BhcmFtcyBhdWRpbyA9IHsKKwkJLnNhbXBsZV93 aWR0aCA9IHBhcmFtcy0+c2FtcGxlX3dpZHRoLAorCQkuc2FtcGxlX3JhdGUgPSBwYXJhbXMtPnNh bXBsZV9yYXRlLAorCQkuY2VhID0gcGFyYW1zLT5jZWEsCisJfTsKKworCWlmICghcHJpdi0+ZW5j b2Rlci5jcnRjKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCW1lbWNweShhdWRpby5zdGF0dXMsIHBh cmFtcy0+aWVjLnN0YXR1cywKKwkgICAgICAgbWluKHNpemVvZihhdWRpby5zdGF0dXMpLCBzaXpl b2YocGFyYW1zLT5pZWMuc3RhdHVzKSkpOworCisJc3dpdGNoIChkYWlmbXQtPmZtdCkgeworCWNh c2UgSERNSV9JMlM6CisJCWlmIChkYWlmbXQtPmJpdF9jbGtfaW52IHx8IGRhaWZtdC0+ZnJhbWVf Y2xrX2ludiB8fAorCQkgICAgZGFpZm10LT5iaXRfY2xrX21hc3RlciB8fCBkYWlmbXQtPmZyYW1l X2Nsa19tYXN0ZXIpIHsKKwkJCWRldl9lcnIoZGV2LCAiJXM6IEJhZCBmbGFncyAlZCAlZCAlZCAl ZFxuIiwgX19mdW5jX18sCisJCQkJZGFpZm10LT5iaXRfY2xrX2ludiwgZGFpZm10LT5mcmFtZV9j bGtfaW52LAorCQkJCWRhaWZtdC0+Yml0X2Nsa19tYXN0ZXIsCisJCQkJZGFpZm10LT5mcmFtZV9j bGtfbWFzdGVyKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKHByaXYtPmF1ZGlvX3BvcnQpOyBpKyspCisJCQlpZiAocHJpdi0+YXVkaW9fcG9y dFtpXS5mb3JtYXQgPT0gQUZNVF9JMlMpCisJCQkJYXVkaW8uY29uZmlnID0gcHJpdi0+YXVkaW9f cG9ydFtpXS5jb25maWc7CisJCWF1ZGlvLmZvcm1hdCA9IEFGTVRfSTJTOworCQlicmVhazsKKwlj YXNlIEhETUlfU1BESUY6CisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHByaXYtPmF1ZGlv X3BvcnQpOyBpKyspCisJCQlpZiAocHJpdi0+YXVkaW9fcG9ydFtpXS5mb3JtYXQgPT0gQUZNVF9T UERJRikKKwkJCQlhdWRpby5jb25maWcgPSBwcml2LT5hdWRpb19wb3J0W2ldLmNvbmZpZzsKKwkJ YXVkaW8uZm9ybWF0ID0gQUZNVF9TUERJRjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGV2X2Vy cihkZXYsICIlczogSW52YWxpZCBmb3JtYXQgJWRcbiIsIF9fZnVuY19fLCBkYWlmbXQtPmZtdCk7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChhdWRpby5jb25maWcgPT0gMCkgeworCQlk ZXZfZXJyKGRldiwgIiVzOiBObyBhdWRpbyBjb25maWd1dGF0aW9uIGZvdW5kXG4iLCBfX2Z1bmNf Xyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IHRkYTk5OHhfY29uZmlndXJlX2F1 ZGlvKHByaXYsCisJCQkJICAgICAgJmF1ZGlvLAorCQkJCSAgICAgIHByaXYtPmVuY29kZXIuY3J0 Yy0+aHdtb2RlLmNsb2NrKTsKKworCWlmIChyZXQgPT0gMCkKKwkJcHJpdi0+YXVkaW9fcGFyYW1z ID0gYXVkaW87CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCB0ZGE5OTh4X2F1ZGlv X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdGRhOTk4eF9wcml2ICpw cml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlyZWdfd3JpdGUocHJpdiwgUkVHX0VOQV9B UCwgMCk7CisKKwlwcml2LT5hdWRpb19wYXJhbXMuZm9ybWF0ID0gQUZNVF9VTlVTRUQ7Cit9CisK K2ludCB0ZGE5OTh4X2F1ZGlvX2RpZ2l0YWxfbXV0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wg ZW5hYmxlKQoreworCXN0cnVjdCB0ZGE5OTh4X3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKKworCXRkYTk5OHhfYXVkaW9fbXV0ZShwcml2LCBlbmFibGUpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgdGRhOTk4eF9hdWRpb19nZXRfZWxkKHN0cnVjdCBkZXZpY2UgKmRl diwgdWludDhfdCAqYnVmLCBzaXplX3QgbGVuKQoreworCXN0cnVjdCB0ZGE5OTh4X3ByaXYgKnBy aXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25m aWcgPSAmcHJpdi0+ZW5jb2Rlci5kZXYtPm1vZGVfY29uZmlnOworCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3I7CisJaW50IHJldCA9IC1FTk9ERVY7CisKKwltdXRleF9sb2NrKCZjb25m aWctPm11dGV4KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmNvbmZpZy0+Y29u bmVjdG9yX2xpc3QsIGhlYWQpIHsKKwkJaWYgKCZwcml2LT5lbmNvZGVyID09IGNvbm5lY3Rvci0+ ZW5jb2RlcikgeworCQkJbWVtY3B5KGJ1ZiwgY29ubmVjdG9yLT5lbGQsCisJCQkgICAgICAgbWlu KHNpemVvZihjb25uZWN0b3ItPmVsZCksIGxlbikpOworCQkJcmV0ID0gMDsKKwkJfQorCX0KKwlt dXRleF91bmxvY2soJmNvbmZpZy0+bXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBoZG1pX2NvZGVjX29wcyBhdWRpb19jb2RlY19vcHMgPSB7CisJLmh3X3Bh cmFtcyA9IHRkYTk5OHhfYXVkaW9faHdfcGFyYW1zLAorCS5hdWRpb19zaHV0ZG93biA9IHRkYTk5 OHhfYXVkaW9fc2h1dGRvd24sCisJLmRpZ2l0YWxfbXV0ZSA9IHRkYTk5OHhfYXVkaW9fZGlnaXRh bF9tdXRlLAorCS5nZXRfZWxkID0gdGRhOTk4eF9hdWRpb19nZXRfZWxkLAorfTsKKworc3RhdGlj IGludCB0ZGE5OTh4X2F1ZGlvX2NvZGVjX2luaXQoc3RydWN0IHRkYTk5OHhfcHJpdiAqcHJpdiwK KwkJCQkgICAgc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBoZG1pX2NvZGVjX3BkYXRh IGNvZGVjX2RhdGEgPSB7CisJCS5vcHMgPSAmYXVkaW9fY29kZWNfb3BzLAorCQkubWF4X2kyc19j aGFubmVscyA9IDIsCisJfTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHByaXYtPmF1ZGlvX3BvcnQpOyBpKyspIHsKKwkJaWYgKHByaXYtPmF1ZGlvX3BvcnRbaV0uZm9y bWF0ID09IEFGTVRfSTJTICYmCisJCSAgICBwcml2LT5hdWRpb19wb3J0W2ldLmNvbmZpZyAhPSAw KQorCQkJY29kZWNfZGF0YS5pMnMgPSAxOworCQlpZiAocHJpdi0+YXVkaW9fcG9ydFtpXS5mb3Jt YXQgPT0gQUZNVF9TUERJRiAmJgorCQkgICAgcHJpdi0+YXVkaW9fcG9ydFtpXS5jb25maWcgIT0g MCkKKwkJCWNvZGVjX2RhdGEuc3BkaWYgPSAxOworCX0KKworCXByaXYtPmF1ZGlvX3BkZXYgPSBw bGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZGF0YSgKKwkJZGV2LCBIRE1JX0NPREVDX0RSVl9OQU1F LCBQTEFURk9STV9ERVZJRF9BVVRPLAorCQkmY29kZWNfZGF0YSwgc2l6ZW9mKGNvZGVjX2RhdGEp KTsKKworCXJldHVybiBQVFJfRVJSX09SX1pFUk8ocHJpdi0+YXVkaW9fcGRldik7Cit9CisKIC8q IEkyQyBkcml2ZXIgZnVuY3Rpb25zICovCiAKK3N0YXRpYyBpbnQgdGRhOTk4eF9nZXRfYXVkaW9f cG9ydHMoc3RydWN0IHRkYTk5OHhfcHJpdiAqcHJpdiwKKwkJCQkgICBzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wKQoreworCWNvbnN0IHUzMiAqcG9ydF9kYXRhOworCXUzMiBzaXplOworCWludCBpOwor CisJcG9ydF9kYXRhID0gb2ZfZ2V0X3Byb3BlcnR5KG5wLCAiYXVkaW8tcG9ydHMiLCAmc2l6ZSk7 CisJaWYgKCFwb3J0X2RhdGEpCisJCXJldHVybiAwOworCisJc2l6ZSAvPSBzaXplb2YodTMyKTsK KwlpZiAoc2l6ZSA+IDIgKiBBUlJBWV9TSVpFKHByaXYtPmF1ZGlvX3BvcnQpIHx8IHNpemUgJSAy ICE9IDApIHsKKwkJZGV2X2VycigmcHJpdi0+aGRtaS0+ZGV2LAorCQkJIkJhZCBudW1iZXIgb2Yg ZWxlbWVudHMgaW4gYXVkaW8tcG9ydHMgZHQtcHJvcGVydHlcbiIpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlzaXplIC89IDI7CisKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisJ CXU4IGFmbXQgPSBiZTMyX3RvX2NwdXAoJnBvcnRfZGF0YVsyKmldKTsKKwkJdTggZW5hX2FwID0g YmUzMl90b19jcHVwKCZwb3J0X2RhdGFbMippKzFdKTsKKworCQlpZiAoYWZtdCAhPSBBRk1UX1NQ RElGICYmIGFmbXQgIT0gQUZNVF9JMlMpIHsKKwkJCWRldl9lcnIoJnByaXYtPmhkbWktPmRldiwK KwkJCQkiQmFkIGF1ZGlvIGZvcm1hdCAldVxuIiwgYWZtdCk7CisJCQlyZXR1cm4gLUVJTlZBTDsK KwkJfQorCisJCXByaXYtPmF1ZGlvX3BvcnRbaV0uZm9ybWF0ID0gYWZtdDsKKwkJcHJpdi0+YXVk aW9fcG9ydFtpXS5jb25maWcgPSBlbmFfYXA7CisJfQorCisJaWYgKHByaXYtPmF1ZGlvX3BvcnRb MF0uZm9ybWF0ID09IHByaXYtPmF1ZGlvX3BvcnRbMV0uZm9ybWF0KSB7CisJCWRldl9lcnIoJnBy aXYtPmhkbWktPmRldiwKKwkJCSJUaGVyZSBjYW4gb25seSBiZSBvbiBJMlMgcG9ydCBhbmQgb25l IFNQRElGIHBvcnRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJcmV0dXJuIDA7Cit9CisK IHN0YXRpYyBpbnQgdGRhOTk4eF9jcmVhdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgc3Ry dWN0IHRkYTk5OHhfcHJpdiAqcHJpdikKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gY2xp ZW50LT5kZXYub2Zfbm9kZTsKQEAgLTEzMDUsNyArMTQ5Miw3IEBAIHN0YXRpYyBpbnQgdGRhOTk4 eF9jcmVhdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgc3RydWN0IHRkYTk5OHhfcHJpdiAq cHJpdikKIAlpZiAoIW5wKQogCQlyZXR1cm4gMDsJCS8qIG5vbi1EVCAqLwogCi0JLyogZ2V0IHRo ZSBvcHRpb25hbCB2aWRlbyBwcm9wZXJ0aWVzICovCisJLyogZ2V0IHRoZSBkZXZpY2UgdHJlZSBw YXJhbWV0ZXJzICovCiAJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJ2aWRlby1wb3J0 cyIsICZ2aWRlbyk7CiAJaWYgKHJldCA9PSAwKSB7CiAJCXByaXYtPnZpcF9jbnRybF8wID0gdmlk ZW8gPj4gMTY7CkBAIC0xMzEzLDggKzE1MDAsMTQgQEAgc3RhdGljIGludCB0ZGE5OTh4X2NyZWF0 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBzdHJ1Y3QgdGRhOTk4eF9wcml2ICpwcml2KQog CQlwcml2LT52aXBfY250cmxfMiA9IHZpZGVvOwogCX0KIAotCXJldHVybiAwOworCXJldCA9IHRk YTk5OHhfZ2V0X2F1ZGlvX3BvcnRzKHByaXYsIG5wKTsKKwlpZiAocmV0KQorCQlnb3RvIGZhaWw7 CiAKKwlpZiAocHJpdi0+YXVkaW9fcG9ydFswXS5mb3JtYXQgIT0gQUZNVF9VTlVTRUQpCisJCXRk YTk5OHhfYXVkaW9fY29kZWNfaW5pdChwcml2LCAmY2xpZW50LT5kZXYpOworCisJcmV0dXJuIDA7 CiBmYWlsOgogCS8qIGlmIGVuY29kZXJfaW5pdCBmYWlscywgdGhlIGVuY29kZXIgc2xhdmUgaXMg bmV2ZXIgcmVnaXN0ZXJlZCwKIAkgKiBzbyBjbGVhbnVwIGhlcmU6CmRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9pMmMvdGRhOTk4eC5oIGIvaW5jbHVkZS9kcm0vaTJjL3RkYTk5OHguaAppbmRleCAy NGJlN2FhLi5iNTc1MzMyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9pMmMvdGRhOTk4eC5oCisr KyBiL2luY2x1ZGUvZHJtL2kyYy90ZGE5OTh4LmgKQEAgLTEsOSArMSw5IEBACiAjaWZuZGVmIF9f RFJNX0kyQ19UREE5OThYX0hfXwogI2RlZmluZSBfX0RSTV9JMkNfVERBOTk4WF9IX18KIAorI2lu Y2x1ZGUgPGR0LWJpbmRpbmdzL2Rpc3BsYXkvdGRhOTk4eC5oPgorCiAjZGVmaW5lIEFGTVRfVU5V U0VECTAKLSNkZWZpbmUgQUZNVF9TUERJRgkxCi0jZGVmaW5lIEFGTVRfSTJTCTIKIAogc3RydWN0 IHRkYTk5OHhfYXVkaW9fcGFyYW1zIHsKIAl1OCBjb25maWc7CmRpZmYgLS1naXQgYS9pbmNsdWRl L2R0LWJpbmRpbmdzL2Rpc3BsYXkvdGRhOTk4eC5oIGIvaW5jbHVkZS9kdC1iaW5kaW5ncy9kaXNw bGF5L3RkYTk5OHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGVmNzQx Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kdC1iaW5kaW5ncy9kaXNwbGF5L3RkYTk5OHgu aApAQCAtMCwwICsxLDcgQEAKKyNpZm5kZWYgX0RUX0JJTkRJTkdTX1REQTk5OFhfSAorI2RlZmlu ZSBfRFRfQklORElOR1NfVERBOTk4WF9ICisKKyNkZWZpbmUgQUZNVF9TUERJRgkxCisjZGVmaW5l IEFGTVRfSTJTCTIKKworI2VuZGlmIC8qX0RUX0JJTkRJTkdTX1REQTk5OFhfSCAqLwotLSAKMS45 LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=