From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH v2 5/5] drm: zte: add tvenc driver support Date: Thu, 26 Jan 2017 23:20:53 +0800 Message-ID: <1485444053-8331-6-git-send-email-shawnguo@kernel.org> References: <1485444053-8331-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5A2926EBE0 for ; Thu, 26 Jan 2017 15:22:18 +0000 (UTC) In-Reply-To: <1485444053-8331-1-git-send-email-shawnguo@kernel.org> 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 Cc: Daniel Vetter , Baoyou Xie , Jun Nie List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KCkl0IGFkZHMgdGhlIFRWIEVu Y29kZXIgZHJpdmVyIHRvIHN1cHBvcnQgdmlkZW8gb3V0cHV0IGluIFBBTCBhbmQgTlRTQwpmb3Jt YXQuICBUaGUgZHJpdmVyIHVzZXMgc3lzY29uL3JlZ21hcCBpbnRlcmZhY2UgdG8gY29uZmlndXJl IHJlZ2lzdGVyCmJpdCBzaXR0aW5nIGluIFNZU0NUUkwgbW9kdWxlIGZvciBEQUMgcG93ZXIgY29u dHJvbC4KClNpZ25lZC1vZmYtYnk6IFNoYXduIEd1byA8c2hhd24uZ3VvQGxpbmFyby5vcmc+Ci0t LQpDaGFuZ2VzIGZvciB2MjoKIC0gRW1iZWQgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgaW4genhf dHZlbmNfbW9kZSB0byBzYXZlIGZ1bmN0aW9uCiAgIHp4X3R2ZW5jX21vZGVfdG9fZHJtX21vZGUo KS4KIC0gVXNlIGRybV9tb2RlX2VxdWFsKCkgdG8gZmluZCB0aGUgbWF0Y2hpbmcgbW9kZS4KIC0g VXNlIGRybV9tb2RlX3NldF9uYW1lKCkgdG8gbmFtZSBtb2RlLgogLSBGaXggdHlwb3MgaW4gY2xv Y2sgbXVsdGlwbGllciBjb21tZW50LgogLSBBZGQgYSBzYW5pdHkgY2hlY2sgaW4gLm1vZGVfdmFs aWQgaG9vayB0byBlbnN1cmUgdGhlIGdpdmVuIG1vZGUgaXMKICAgdmFsaWQuCiAtIFJlbW92ZSBk ZXN0cm95KCkgY2FsbHMgZnJvbSAudW5iaW5kIGhvb2ssIGFzIHRob3NlIGFyZSBhbHJlYWR5IHRh a2VuCiAgIGNhcmUgb2YgYnkgZHJtX21vZGVfY29uZmlnX2NsZWFudXAoKS4KCiBkcml2ZXJzL2dw dS9kcm0venRlL01ha2VmaWxlICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4 X2RybV9kcnYuYyAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuaCAg ICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3R2ZW5jLmMgICAgICB8IDQwNyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS96dGUvenhf dHZlbmNfcmVncy5oIHwgIDMxICsrKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3UuYyAgICAg ICAgfCAgIDUgKwogNiBmaWxlcyBjaGFuZ2VkLCA0NDYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdHZlbmMuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdHZlbmNfcmVncy5oCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3p0ZS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS96dGUvTWFrZWZpbGUK aW5kZXggNjk5MTgwYmZkNTdjLi4wMTM1MmI1NmM0MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS96dGUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS9NYWtlZmlsZQpAQCAt Miw2ICsyLDcgQEAgenhkcm0teSA6PSBcCiAJenhfZHJtX2Rydi5vIFwKIAl6eF9oZG1pLm8gXAog CXp4X3BsYW5lLm8gXAorCXp4X3R2ZW5jLm8gXAogCXp4X3ZvdS5vCiAKIG9iai0kKENPTkZJR19E Uk1fWlRFKSArPSB6eGRybS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2Ry bV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfZHJtX2Rydi5jCmluZGV4IDNlNzZmNzJj OTJmZi4uMTMwODFmZWQ5MDJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2Ry bV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuYwpAQCAtMjQ3LDYg KzI0Nyw3IEBAIHN0YXRpYyBpbnQgenhfZHJtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRyaXZlcnNbXSA9IHsKIAkm enhfY3J0Y19kcml2ZXIsCiAJJnp4X2hkbWlfZHJpdmVyLAorCSZ6eF90dmVuY19kcml2ZXIsCiAJ Jnp4X2RybV9wbGF0Zm9ybV9kcml2ZXIsCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0venRlL3p4X2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfZHJtX2Rydi5oCmlu ZGV4IGU2NWNkMThhNmNiYS4uNWNhMDM1YjA3OWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0venRlL3p4X2RybV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYu aApAQCAtMTMsNiArMTMsNyBAQAogCiBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciB6eF9j cnRjX2RyaXZlcjsKIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHp4X2hkbWlfZHJpdmVy OworZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgenhfdHZlbmNfZHJpdmVyOwogCiBzdGF0 aWMgaW5saW5lIHUzMiB6eF9yZWFkbCh2b2lkIF9faW9tZW0gKnJlZykKIHsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdHZlbmMuYyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhf dHZlbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1NmRjNjk4 NDNmYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdHZlbmMuYwpA QCAtMCwwICsxLDQwNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IExpbmFybyBMdGQuCisgKiBD b3B5cmlnaHQgMjAxNyBaVEUgQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAq CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVu dC5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdt YXAuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRy bS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorCisjaW5jbHVkZSAi enhfZHJtX2Rydi5oIgorI2luY2x1ZGUgInp4X3R2ZW5jX3JlZ3MuaCIKKyNpbmNsdWRlICJ6eF92 b3UuaCIKKworc3RydWN0IHp4X3R2ZW5jX3B3cmN0cmwgeworCXN0cnVjdCByZWdtYXAgKnJlZ21h cDsKKwl1MzIgcmVnOworCXUzMiBtYXNrOworfTsKKworc3RydWN0IHp4X3R2ZW5jIHsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7CisJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7 CisJc3RydWN0IGRldmljZSAqZGV2OworCXZvaWQgX19pb21lbSAqbW1pbzsKKwljb25zdCBzdHJ1 Y3Qgdm91X2luZiAqaW5mOworCXN0cnVjdCB6eF90dmVuY19wd3JjdHJsIHB3cmN0cmw7Cit9Owor CisjZGVmaW5lIHRvX3p4X3R2ZW5jKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgenhfdHZlbmMs IHgpCisKK3N0cnVjdCB6eF90dmVuY19tb2RlIHsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBt b2RlOworCXUzMiB2aWRlb19pbmZvOworCXUzMiB2aWRlb19yZXM7CisJdTMyIGZpZWxkMV9wYXJh bTsKKwl1MzIgZmllbGQyX3BhcmFtOworCXUzMiBidXJzdF9saW5lX29kZDE7CisJdTMyIGJ1cnN0 X2xpbmVfZXZlbjE7CisJdTMyIGJ1cnN0X2xpbmVfb2RkMjsKKwl1MzIgYnVyc3RfbGluZV9ldmVu MjsKKwl1MzIgbGluZV90aW1pbmdfcGFyYW07CisJdTMyIHdlaWdodF92YWx1ZTsKKwl1MzIgYmxh bmtfYmxhY2tfbGV2ZWw7CisJdTMyIGJ1cnN0X2xldmVsOworCXUzMiBjb250cm9sX3BhcmFtOwor CXUzMiBzdWJfY2Fycmllcl9waGFzZTE7CisJdTMyIHBoYXNlX2xpbmVfaW5jcl9jdmJzOworfTsK KworLyoKKyAqIFRoZSBDUk0gY2Fubm90IGRpcmVjdGx5IHByb3ZpZGUgYSBzdWl0YWJsZSBmcmVx dWVuY3ksIGFuZCB3ZSBoYXZlIHRvCisgKiBhc2sgYSBtdWx0aXBsaWVkIHJhdGUgZnJvbSBDUk0g YW5kIHVzZSB0aGUgZGl2aWRlciBpbiBWT1UgdG8gZ2V0IHRoZQorICogZGVzaXJlZCBvbmUuCisg Ki8KKyNkZWZpbmUgVFZFTkNfQ0xPQ0tfTVVMVElQTElFUgk0CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgenhfdHZlbmNfbW9kZSB0dmVuY19tb2RlX3BhbCA9IHsKKwkubW9kZSA9IHsKKwkJLmNsb2Nr ID0gMTM1MDAgKiBUVkVOQ19DTE9DS19NVUxUSVBMSUVSLAorCQkuaGRpc3BsYXkgPSA3MjAsCisJ CS5oc3luY19zdGFydCA9IDcyMCArIDEyLAorCQkuaHN5bmNfZW5kID0gNzIwICsgMTIgKyAyLAor CQkuaHRvdGFsID0gNzIwICsgMTIgKyAyICsgMTMwLAorCQkudmRpc3BsYXkgPSA1NzYsCisJCS52 c3luY19zdGFydCA9IDU3NiArIDIsCisJCS52c3luY19lbmQgPSA1NzYgKyAyICsgMiwKKwkJLnZ0 b3RhbCA9IDU3NiArIDIgKyAyICsgMjAsCisJCS5mbGFncyA9IERSTV9NT0RFX0ZMQUdfTkhTWU5D IHwgRFJNX01PREVfRkxBR19OVlNZTkMgfAorCQkJIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFLAor CX0sCisJLnZpZGVvX2luZm8gPSAweDAwMDQwMDQwLAorCS52aWRlb19yZXMgPSAweDA1YTljNzYw LAorCS5maWVsZDFfcGFyYW0gPSAweDAwMDRkNDE2LAorCS5maWVsZDJfcGFyYW0gPSAweDAwMDli OTRmLAorCS5idXJzdF9saW5lX29kZDEgPSAweDAwMDRkNDA2LAorCS5idXJzdF9saW5lX2V2ZW4x ID0gMHgwMDA5YjUzZSwKKwkuYnVyc3RfbGluZV9vZGQyID0gMHgwMDA0ZDgwNSwKKwkuYnVyc3Rf bGluZV9ldmVuMiA9IDB4MDAwOWI5M2YsCisJLmxpbmVfdGltaW5nX3BhcmFtID0gMHgwNmE5NmZk ZiwKKwkud2VpZ2h0X3ZhbHVlID0gMHgwMGMxODhhMCwKKwkuYmxhbmtfYmxhY2tfbGV2ZWwgPSAw eDAwMDBmY2ZjLAorCS5idXJzdF9sZXZlbCA9IDB4MDAwMDE1OTUsCisJLmNvbnRyb2xfcGFyYW0g PSAweDAwMDAwMDAxLAorCS5zdWJfY2Fycmllcl9waGFzZTEgPSAweDE1MDRjNTY2LAorCS5waGFz ZV9saW5lX2luY3JfY3ZicyA9IDB4YzA2OGRiOGMsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IHp4X3R2ZW5jX21vZGUgdHZlbmNfbW9kZV9udHNjID0geworCS5tb2RlID0geworCQkuY2xvY2sg PSAxMzUwMCAqIFRWRU5DX0NMT0NLX01VTFRJUExJRVIsCisJCS5oZGlzcGxheSA9IDcyMCwKKwkJ LmhzeW5jX3N0YXJ0ID0gNzIwICsgMTYsCisJCS5oc3luY19lbmQgPSA3MjAgKyAxNiArIDIsCisJ CS5odG90YWwgPSA3MjAgKyAxNiArIDIgKyAxMjAsCisJCS52ZGlzcGxheSA9IDQ4MCwKKwkJLnZz eW5jX3N0YXJ0ID0gNDgwICsgMywKKwkJLnZzeW5jX2VuZCA9IDQ4MCArIDMgKyAyLAorCQkudnRv dGFsID0gNDgwICsgMyArIDIgKyAxNywKKwkJLmZsYWdzID0gRFJNX01PREVfRkxBR19OSFNZTkMg fCBEUk1fTU9ERV9GTEFHX05WU1lOQyB8CisJCQkgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UsCisJ fSwKKwkudmlkZW9faW5mbyA9IDB4MDAwNDAwODAsCisJLnZpZGVvX3JlcyA9IDB4MDVhODM3NWEs CisJLmZpZWxkMV9wYXJhbSA9IDB4MDAwNDE4MTcsCisJLmZpZWxkMl9wYXJhbSA9IDB4MDAwODM1 MWUsCisJLmJ1cnN0X2xpbmVfb2RkMSA9IDB4MDAwNDEwMDYsCisJLmJ1cnN0X2xpbmVfZXZlbjEg PSAweDAwMDgyOTBkLAorCS5idXJzdF9saW5lX29kZDIgPSAweDAwMDAwMDAwLAorCS5idXJzdF9s aW5lX2V2ZW4yID0gMHgwMDAwMDAwMCwKKwkubGluZV90aW1pbmdfcGFyYW0gPSAweDA2YThlZjll LAorCS53ZWlnaHRfdmFsdWUgPSAweDAwYjY4MTk3LAorCS5ibGFua19ibGFja19sZXZlbCA9IDB4 MDAwMGYwZjAsCisJLmJ1cnN0X2xldmVsID0gMHgwMDAwMDA5YywKKwkuY29udHJvbF9wYXJhbSA9 IDB4MDAwMDAwMDEsCisJLnN1Yl9jYXJyaWVyX3BoYXNlMSA9IDB4MTBmODNlMTAsCisJLnBoYXNl X2xpbmVfaW5jcl9jdmJzID0gMHg4MDAwMDAwMCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg enhfdHZlbmNfbW9kZSAqdHZlbmNfbW9kZXNbXSA9IHsKKwkmdHZlbmNfbW9kZV9wYWwsCisJJnR2 ZW5jX21vZGVfbnRzYywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgenhfdHZlbmNfbW9kZSAq Cit6eF90dmVuY19maW5kX3ptb2RlKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQorewor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodHZlbmNfbW9kZXMpOyBpKysp IHsKKwkJY29uc3Qgc3RydWN0IHp4X3R2ZW5jX21vZGUgKnptb2RlID0gdHZlbmNfbW9kZXNbaV07 CisKKwkJaWYgKGRybV9tb2RlX2VxdWFsKG1vZGUsICZ6bW9kZS0+bW9kZSkpCisJCQlyZXR1cm4g em1vZGU7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIHp4X3R2ZW5jX2Vu Y29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgICAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCSAgICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGpfbW9kZSkKK3sKKwlzdHJ1Y3QgenhfdHZlbmMgKnR2ZW5jID0gdG9fenhfdHZl bmMoZW5jb2Rlcik7CisJY29uc3Qgc3RydWN0IHp4X3R2ZW5jX21vZGUgKnptb2RlOworCXN0cnVj dCB2b3VfZGl2X2NvbmZpZyBjb25maWdzW10gPSB7CisJCXsgVk9VX0RJVl9JTkYsICAgVk9VX0RJ Vl80IH0sCisJCXsgVk9VX0RJVl9UVkVOQywgVk9VX0RJVl8xIH0sCisJCXsgVk9VX0RJVl9MQVlF UiwgVk9VX0RJVl8yIH0sCisJfTsKKworCXp4X3ZvdV9jb25maWdfZGl2aWRlcnMoZW5jb2Rlci0+ Y3J0YywgY29uZmlncywgQVJSQVlfU0laRShjb25maWdzKSk7CisKKwl6bW9kZSA9IHp4X3R2ZW5j X2ZpbmRfem1vZGUobW9kZSk7CisJaWYgKCF6bW9kZSkgeworCQlEUk1fREVWX0VSUk9SKHR2ZW5j LT5kZXYsICJmYWlsZWQgdG8gZmluZCB6bW9kZVxuIik7CisJCXJldHVybjsKKwl9CisKKwl6eF93 cml0ZWwodHZlbmMtPm1taW8gKyBWRU5DX1ZJREVPX0lORk8sIHptb2RlLT52aWRlb19pbmZvKTsK Kwl6eF93cml0ZWwodHZlbmMtPm1taW8gKyBWRU5DX1ZJREVPX1JFUywgem1vZGUtPnZpZGVvX3Jl cyk7CisJenhfd3JpdGVsKHR2ZW5jLT5tbWlvICsgVkVOQ19GSUVMRDFfUEFSQU0sIHptb2RlLT5m aWVsZDFfcGFyYW0pOworCXp4X3dyaXRlbCh0dmVuYy0+bW1pbyArIFZFTkNfRklFTEQyX1BBUkFN LCB6bW9kZS0+ZmllbGQyX3BhcmFtKTsKKwl6eF93cml0ZWwodHZlbmMtPm1taW8gKyBWRU5DX0xJ TkVfT18xLCB6bW9kZS0+YnVyc3RfbGluZV9vZGQxKTsKKwl6eF93cml0ZWwodHZlbmMtPm1taW8g KyBWRU5DX0xJTkVfRV8xLCB6bW9kZS0+YnVyc3RfbGluZV9ldmVuMSk7CisJenhfd3JpdGVsKHR2 ZW5jLT5tbWlvICsgVkVOQ19MSU5FX09fMiwgem1vZGUtPmJ1cnN0X2xpbmVfb2RkMik7CisJenhf d3JpdGVsKHR2ZW5jLT5tbWlvICsgVkVOQ19MSU5FX0VfMiwgem1vZGUtPmJ1cnN0X2xpbmVfZXZl bjIpOworCXp4X3dyaXRlbCh0dmVuYy0+bW1pbyArIFZFTkNfTElORV9USU1JTkdfUEFSQU0sCisJ CSAgem1vZGUtPmxpbmVfdGltaW5nX3BhcmFtKTsKKwl6eF93cml0ZWwodHZlbmMtPm1taW8gKyBW RU5DX1dFSUdIVF9WQUxVRSwgem1vZGUtPndlaWdodF92YWx1ZSk7CisJenhfd3JpdGVsKHR2ZW5j LT5tbWlvICsgVkVOQ19CTEFOS19CTEFDS19MRVZFTCwKKwkJICB6bW9kZS0+YmxhbmtfYmxhY2tf bGV2ZWwpOworCXp4X3dyaXRlbCh0dmVuYy0+bW1pbyArIFZFTkNfQlVSU1RfTEVWRUwsIHptb2Rl LT5idXJzdF9sZXZlbCk7CisJenhfd3JpdGVsKHR2ZW5jLT5tbWlvICsgVkVOQ19DT05UUk9MX1BB UkFNLCB6bW9kZS0+Y29udHJvbF9wYXJhbSk7CisJenhfd3JpdGVsKHR2ZW5jLT5tbWlvICsgVkVO Q19TVUJfQ0FSUklFUl9QSEFTRTEsCisJCSAgem1vZGUtPnN1Yl9jYXJyaWVyX3BoYXNlMSk7CisJ enhfd3JpdGVsKHR2ZW5jLT5tbWlvICsgVkVOQ19QSEFTRV9MSU5FX0lOQ1JfQ1ZCUywKKwkJICB6 bW9kZS0+cGhhc2VfbGluZV9pbmNyX2N2YnMpOworfQorCitzdGF0aWMgdm9pZCB6eF90dmVuY19l bmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0IHp4 X3R2ZW5jICp0dmVuYyA9IHRvX3p4X3R2ZW5jKGVuY29kZXIpOworCXN0cnVjdCB6eF90dmVuY19w d3JjdHJsICpwd3JjdHJsID0gJnR2ZW5jLT5wd3JjdHJsOworCisJLyogU2V0IGJpdCB0byBwb3dl ciB1cCBUVkVOQyBEQUMgKi8KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHdyY3RybC0+cmVnbWFwLCBw d3JjdHJsLT5yZWcsIHB3cmN0cmwtPm1hc2ssCisJCQkgICBwd3JjdHJsLT5tYXNrKTsKKworCXZv dV9pbmZfZW5hYmxlKFZPVV9UVl9FTkMsIGVuY29kZXItPmNydGMpOworCisJenhfd3JpdGVsKHR2 ZW5jLT5tbWlvICsgVkVOQ19FTkFCTEUsIDEpOworfQorCitzdGF0aWMgdm9pZCB6eF90dmVuY19l bmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCB6 eF90dmVuYyAqdHZlbmMgPSB0b196eF90dmVuYyhlbmNvZGVyKTsKKwlzdHJ1Y3QgenhfdHZlbmNf cHdyY3RybCAqcHdyY3RybCA9ICZ0dmVuYy0+cHdyY3RybDsKKworCXp4X3dyaXRlbCh0dmVuYy0+ bW1pbyArIFZFTkNfRU5BQkxFLCAwKTsKKworCXZvdV9pbmZfZGlzYWJsZShWT1VfVFZfRU5DLCBl bmNvZGVyLT5jcnRjKTsKKworCS8qIENsZWFyIGJpdCB0byBwb3dlciBkb3duIFRWRU5DIERBQyAq LworCXJlZ21hcF91cGRhdGVfYml0cyhwd3JjdHJsLT5yZWdtYXAsIHB3cmN0cmwtPnJlZywgcHdy Y3RybC0+bWFzaywgMCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVs cGVyX2Z1bmNzIHp4X3R2ZW5jX2VuY29kZXJfaGVscGVyX2Z1bmNzID0geworCS5lbmFibGUJPSB6 eF90dmVuY19lbmNvZGVyX2VuYWJsZSwKKwkuZGlzYWJsZSA9IHp4X3R2ZW5jX2VuY29kZXJfZGlz YWJsZSwKKwkubW9kZV9zZXQgPSB6eF90dmVuY19lbmNvZGVyX21vZGVfc2V0LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyB6eF90dmVuY19lbmNvZGVyX2Z1bmNz ID0geworCS5kZXN0cm95ID0gZHJtX2VuY29kZXJfY2xlYW51cCwKK307CisKK3N0YXRpYyBpbnQg enhfdHZlbmNfY29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQoreworCXN0cnVjdCB6eF90dmVuYyAqdHZlbmMgPSB0b196eF90dmVuYyhjb25uZWN0b3Ip OworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHR2ZW5jLT5kZXY7CisJaW50IGk7CisKKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRSh0dmVuY19tb2Rlcyk7IGkrKykgeworCQljb25zdCBzdHJ1Y3Qg enhfdHZlbmNfbW9kZSAqem1vZGUgPSB0dmVuY19tb2Rlc1tpXTsKKwkJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGU7CisKKwkJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShjb25uZWN0b3It PmRldiwgJnptb2RlLT5tb2RlKTsKKwkJaWYgKCFtb2RlKSB7CisJCQlEUk1fREVWX0VSUk9SKGRl diwgImZhaWxlZCB0byBkdXBsaWNhdGUgZHJtIG1vZGVcbiIpOworCQkJY29udGludWU7CisJCX0K KworCQlkcm1fbW9kZV9zZXRfbmFtZShtb2RlKTsKKwkJZHJtX21vZGVfcHJvYmVkX2FkZChjb25u ZWN0b3IsIG1vZGUpOworCX0KKworCXJldHVybiBpOworfQorCitzdGF0aWMgZW51bSBkcm1fbW9k ZV9zdGF0dXMKK3p4X3R2ZW5jX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkK K3sKKwlzdHJ1Y3QgenhfdHZlbmMgKnR2ZW5jID0gdG9fenhfdHZlbmMoY29ubmVjdG9yKTsKKwlj b25zdCBzdHJ1Y3QgenhfdHZlbmNfbW9kZSAqem1vZGU7CisKKwl6bW9kZSA9IHp4X3R2ZW5jX2Zp bmRfem1vZGUobW9kZSk7CisJaWYgKCF6bW9kZSkgeworCQlEUk1fREVWX0VSUk9SKHR2ZW5jLT5k ZXYsICJ1bnN1cHBvcnRlZCBtb2RlOiAlc1xuIiwgbW9kZS0+bmFtZSk7CisJCXJldHVybiBNT0RF X05PTU9ERTsKKwl9CisKKwlyZXR1cm4gTU9ERV9PSzsKK30KKworc3RhdGljIHN0cnVjdCBkcm1f Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyB6eF90dmVuY19jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0g eworCS5nZXRfbW9kZXMgPSB6eF90dmVuY19jb25uZWN0b3JfZ2V0X21vZGVzLAorCS5tb2RlX3Zh bGlkID0genhfdHZlbmNfY29ubmVjdG9yX21vZGVfdmFsaWQsCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgenhfdHZlbmNfY29ubmVjdG9yX2Z1bmNzID0gewor CS5kcG1zID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2RwbXMsCisJLmZpbGxfbW9kZXMg PSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLmRlc3Ryb3kgPSBk cm1fY29ubmVjdG9yX2NsZWFudXAsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX3Jlc2V0LAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1f YXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBpbnQg enhfdHZlbmNfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IHp4X3R2ZW5j ICp0dmVuYykKK3sKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmdHZlbmMtPmVuY29k ZXI7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZ0dmVuYy0+Y29ubmVjdG9y OworCisJLyoKKwkgKiBUaGUgdHZlbmMgaXMgZGVzaWduZWQgdG8gdXNlIGF1eCBjaGFubmVsLCBh cyB0aGVyZSBpcyBhIGRlZmxpY2tlcgorCSAqIGJsb2NrIGZvciB0aGUgY2hhbm5lbC4KKwkgKi8K KwllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IEJJVCgxKTsKKworCWRybV9lbmNvZGVyX2luaXQo ZHJtLCBlbmNvZGVyLCAmenhfdHZlbmNfZW5jb2Rlcl9mdW5jcywKKwkJCSBEUk1fTU9ERV9FTkNP REVSX1RWREFDLCBOVUxMKTsKKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKGVuY29kZXIsICZ6eF90 dmVuY19lbmNvZGVyX2hlbHBlcl9mdW5jcyk7CisKKwljb25uZWN0b3ItPmludGVybGFjZV9hbGxv d2VkID0gdHJ1ZTsKKworCWRybV9jb25uZWN0b3JfaW5pdChkcm0sIGNvbm5lY3RvciwgJnp4X3R2 ZW5jX2Nvbm5lY3Rvcl9mdW5jcywKKwkJCSAgIERSTV9NT0RFX0NPTk5FQ1RPUl9Db21wb3NpdGUp OworCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZ6eF90dmVuY19jb25uZWN0 b3JfaGVscGVyX2Z1bmNzKTsKKworCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rlcihj b25uZWN0b3IsIGVuY29kZXIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgenhfdHZl bmNfcHdyY3RybF9pbml0KHN0cnVjdCB6eF90dmVuYyAqdHZlbmMpCit7CisJc3RydWN0IHp4X3R2 ZW5jX3B3cmN0cmwgKnB3cmN0cmwgPSAmdHZlbmMtPnB3cmN0cmw7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gdHZlbmMtPmRldjsKKwlzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzIG91dF9hcmdzOworCXN0 cnVjdCByZWdtYXAgKnJlZ21hcDsKKwlpbnQgcmV0OworCisJcmV0ID0gb2ZfcGFyc2VfcGhhbmRs ZV93aXRoX2ZpeGVkX2FyZ3MoZGV2LT5vZl9ub2RlLAorCQkJCSJ6dGUsdHZlbmMtcG93ZXItY29u dHJvbCIsIDIsIDAsICZvdXRfYXJncyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJl Z21hcCA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcChvdXRfYXJncy5ucCk7CisJaWYgKElTX0VSUihy ZWdtYXApKSB7CisJCXJldCA9IFBUUl9FUlIocmVnbWFwKTsKKwkJZ290byBvdXQ7CisJfQorCisJ cHdyY3RybC0+cmVnbWFwID0gcmVnbWFwOworCXB3cmN0cmwtPnJlZyA9IG91dF9hcmdzLmFyZ3Nb MF07CisJcHdyY3RybC0+bWFzayA9IG91dF9hcmdzLmFyZ3NbMV07CisKK291dDoKKwlvZl9ub2Rl X3B1dChvdXRfYXJncy5ucCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB6eF90dmVu Y19iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpk YXRhKQoreworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZp Y2UoZGV2KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGF0YTsKKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnJlczsKKwlzdHJ1Y3QgenhfdHZlbmMgKnR2ZW5jOworCWludCByZXQ7CisKKwl0dmVuYyA9 IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqdHZlbmMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXR2 ZW5jKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXR2ZW5jLT5kZXYgPSBkZXY7CisJZGV2X3NldF9k cnZkYXRhKGRldiwgdHZlbmMpOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYs IElPUkVTT1VSQ0VfTUVNLCAwKTsKKwl0dmVuYy0+bW1pbyA9IGRldm1faW9yZW1hcF9yZXNvdXJj ZShkZXYsIHJlcyk7CisJaWYgKElTX0VSUih0dmVuYy0+bW1pbykpIHsKKwkJcmV0ID0gUFRSX0VS Uih0dmVuYy0+bW1pbyk7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRvIHJlbWFwIHR2 ZW5jIHJlZ2lvbjogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0genhf dHZlbmNfcHdyY3RybF9pbml0KHR2ZW5jKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1Io ZGV2LCAiZmFpbGVkIHRvIGluaXQgcG93ZXIgY29udHJvbDogJWRcbiIsIHJldCk7CisJCXJldHVy biByZXQ7CisJfQorCisJcmV0ID0genhfdHZlbmNfcmVnaXN0ZXIoZHJtLCB0dmVuYyk7CisJaWYg KHJldCkgeworCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byByZWdpc3RlciB0dmVuYzog JWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIHp4X3R2ZW5jX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Ug Km1hc3RlciwKKwkJCSAgICB2b2lkICpkYXRhKQoreworCS8qIE5vdGhpbmcgdG8gZG8gKi8KK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIHp4X3R2ZW5jX2NvbXBvbmVudF9v cHMgPSB7CisJLmJpbmQgPSB6eF90dmVuY19iaW5kLAorCS51bmJpbmQgPSB6eF90dmVuY191bmJp bmQsCit9OworCitzdGF0aWMgaW50IHp4X3R2ZW5jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCit7CisJcmV0dXJuIGNvbXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJnp4X3R2ZW5j X2NvbXBvbmVudF9vcHMpOworfQorCitzdGF0aWMgaW50IHp4X3R2ZW5jX3JlbW92ZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJnp4 X3R2ZW5jX2NvbXBvbmVudF9vcHMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCB6eF90dmVuY19vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUg PSAienRlLHp4Mjk2NzE4LXR2ZW5jIiwgfSwKKwl7IC8qIGVuZCAqLyB9LAorfTsKK01PRFVMRV9E RVZJQ0VfVEFCTEUob2YsIHp4X3R2ZW5jX29mX21hdGNoKTsKKworc3RydWN0IHBsYXRmb3JtX2Ry aXZlciB6eF90dmVuY19kcml2ZXIgPSB7CisJLnByb2JlID0genhfdHZlbmNfcHJvYmUsCisJLnJl bW92ZSA9IHp4X3R2ZW5jX3JlbW92ZSwKKwkuZHJpdmVyCT0geworCQkubmFtZSA9ICJ6eC10dmVu YyIsCisJCS5vZl9tYXRjaF90YWJsZQk9IHp4X3R2ZW5jX29mX21hdGNoLAorCX0sCit9OwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF90dmVuY19yZWdzLmggYi9kcml2ZXJzL2dw dS9kcm0venRlL3p4X3R2ZW5jX3JlZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmJkOTFmNWRjYzFmMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS96dGUvenhfdHZlbmNfcmVncy5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg MjAxNyBMaW5hcm8gTHRkLgorICogQ29weXJpZ2h0IDIwMTcgWlRFIENvcnBvcmF0aW9uLgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNpZm5kZWYgX19aWF9UVkVOQ19SRUdTX0hf XworI2RlZmluZSBfX1pYX1RWRU5DX1JFR1NfSF9fCisKKyNkZWZpbmUgVkVOQ19WSURFT19JTkZP CQkJMHgwNAorI2RlZmluZSBWRU5DX1ZJREVPX1JFUwkJCTB4MDgKKyNkZWZpbmUgVkVOQ19GSUVM RDFfUEFSQU0JCTB4MTAKKyNkZWZpbmUgVkVOQ19GSUVMRDJfUEFSQU0JCTB4MTQKKyNkZWZpbmUg VkVOQ19MSU5FX09fMQkJCTB4MTgKKyNkZWZpbmUgVkVOQ19MSU5FX0VfMQkJCTB4MWMKKyNkZWZp bmUgVkVOQ19MSU5FX09fMgkJCTB4MjAKKyNkZWZpbmUgVkVOQ19MSU5FX0VfMgkJCTB4MjQKKyNk ZWZpbmUgVkVOQ19MSU5FX1RJTUlOR19QQVJBTQkJMHgyOAorI2RlZmluZSBWRU5DX1dFSUdIVF9W QUxVRQkJMHgyYworI2RlZmluZSBWRU5DX0JMQU5LX0JMQUNLX0xFVkVMCQkweDMwCisjZGVmaW5l IFZFTkNfQlVSU1RfTEVWRUwJCTB4MzQKKyNkZWZpbmUgVkVOQ19DT05UUk9MX1BBUkFNCQkweDNj CisjZGVmaW5lIFZFTkNfU1VCX0NBUlJJRVJfUEhBU0UxCQkweDQwCisjZGVmaW5lIFZFTkNfUEhB U0VfTElORV9JTkNSX0NWQlMJMHg0OAorI2RlZmluZSBWRU5DX0VOQUJMRQkJCTB4YTgKKworI2Vu ZGlmIC8qIF9fWlhfVFZFTkNfUkVHU19IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS96dGUvenhfdm91LmMgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jCmluZGV4IDgyM2I3 NGVhNzU4YS4uNzFhYWY4ZjJiMDcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4 X3ZvdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMKQEAgLTE5Miw2ICsxOTIs MTEgQEAgc3RydWN0IHZvdV9pbmYgewogCQkuY2xvY2tzX2VuX2JpdHMgPSBCSVQoMjQpIHwgQklU KDE4KSB8IEJJVCg2KSwKIAkJLmNsb2Nrc19zZWxfYml0cyA9IEJJVCgxMykgfCBCSVQoMiksCiAJ fSwKKwlbVk9VX1RWX0VOQ10gPSB7CisJCS5kYXRhX3NlbCA9IFZPVV9ZVVY0NDQsCisJCS5jbG9j a3NfZW5fYml0cyA9IEJJVCgxNSksCisJCS5jbG9ja3Nfc2VsX2JpdHMgPSBCSVQoMTEpIHwgQklU KDApLAorCX0sCiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB6eF92b3VfaHcgKmNydGNfdG9f dm91KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK