From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH 5/5] drm: zte: add tvenc driver support Date: Fri, 20 Jan 2017 00:25:00 +0800 Message-ID: <1484843100-16284-6-git-send-email-shawnguo@kernel.org> References: <1484843100-16284-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1484843100-16284-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: Mark Rutland , devicetree@vger.kernel.org, Daniel Vetter , Baoyou Xie , Rob Herring , Jun Nie List-Id: devicetree@vger.kernel.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KCkl0IGFkZHMgdGhlIFRWIEVu Y29kZXIgZHJpdmVyIHRvIHN1cHBvcnQgdmlkZW8gb3V0cHV0IGluIFBBTCBhbmQgTlRTQwpmb3Jt YXQuICBUaGUgZHJpdmVyIHVzZXMgc3lzY29uL3JlZ21hcCBpbnRlcmZhY2UgdG8gY29uZmlndXJl IHJlZ2lzdGVyCmJpdCBzaXR0aW5nIGluIFNZU0NUUkwgbW9kdWxlIGZvciBEQUMgcG93ZXIgY29u dHJvbC4KClNpZ25lZC1vZmYtYnk6IFNoYXduIEd1byA8c2hhd24uZ3VvQGxpbmFyby5vcmc+Ci0t LQogZHJpdmVycy9ncHUvZHJtL3p0ZS9NYWtlZmlsZSAgICAgICAgfCAgIDEgKwogZHJpdmVycy9n cHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmMgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96 eF9kcm1fZHJ2LmggICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96eF90dmVuYy5jICAg ICAgfCA0MTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dw dS9kcm0venRlL3p4X3R2ZW5jX3JlZ3MuaCB8ICAzMSArKysKIGRyaXZlcnMvZ3B1L2RybS96dGUv enhfdm91LmMgICAgICAgIHwgICA1ICsKIDYgZmlsZXMgY2hhbmdlZCwgNDU1IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3R2ZW5jLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3R2ZW5jX3JlZ3MuaAoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v enRlL01ha2VmaWxlCmluZGV4IDY5OTE4MGJmZDU3Yy4uMDEzNTJiNTZjNDE4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0venRlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUv TWFrZWZpbGUKQEAgLTIsNiArMiw3IEBAIHp4ZHJtLXkgOj0gXAogCXp4X2RybV9kcnYubyBcCiAJ enhfaGRtaS5vIFwKIAl6eF9wbGFuZS5vIFwKKwl6eF90dmVuYy5vIFwKIAl6eF92b3UubwogCiBv YmotJChDT05GSUdfRFJNX1pURSkgKz0genhkcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuYwpp bmRleCAzZTc2ZjcyYzkyZmYuLjEzMDgxZmVkOTAyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF9kcm1fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2 LmMKQEAgLTI0Nyw2ICsyNDcsNyBAQCBzdGF0aWMgaW50IHp4X2RybV9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcml2 ZXJzW10gPSB7CiAJJnp4X2NydGNfZHJpdmVyLAogCSZ6eF9oZG1pX2RyaXZlciwKKwkmenhfdHZl bmNfZHJpdmVyLAogCSZ6eF9kcm1fcGxhdGZvcm1fZHJpdmVyLAogfTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4 X2RybV9kcnYuaAppbmRleCBlNjVjZDE4YTZjYmEuLjVjYTAzNWIwNzljNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0 ZS96eF9kcm1fZHJ2LmgKQEAgLTEzLDYgKzEzLDcgQEAKIAogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgenhfY3J0Y19kcml2ZXI7CiBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciB6 eF9oZG1pX2RyaXZlcjsKK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHp4X3R2ZW5jX2Ry aXZlcjsKIAogc3RhdGljIGlubGluZSB1MzIgenhfcmVhZGwodm9pZCBfX2lvbWVtICpyZWcpCiB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3R2ZW5jLmMgYi9kcml2ZXJzL2dw dS9kcm0venRlL3p4X3R2ZW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi41YTZjZmYxZmY4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0venRl L3p4X3R2ZW5jLmMKQEAgLTAsMCArMSw0MTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNyBMaW5h cm8gTHRkLgorICogQ29weXJpZ2h0IDIwMTcgWlRFIENvcnBvcmF0aW9uLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxs aW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+CisjaW5jbHVk ZSA8bGludXgvcmVnbWFwLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybVAuaD4K KworI2luY2x1ZGUgInp4X2RybV9kcnYuaCIKKyNpbmNsdWRlICJ6eF90dmVuY19yZWdzLmgiCisj aW5jbHVkZSAienhfdm91LmgiCisKK3N0cnVjdCB6eF90dmVuY19wd3JjdHJsIHsKKwlzdHJ1Y3Qg cmVnbWFwICpyZWdtYXA7CisJdTMyIHJlZzsKKwl1MzIgbWFzazsKK307CisKK3N0cnVjdCB6eF90 dmVuYyB7CisJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOworCXN0cnVjdCBkcm1fZW5j b2RlciBlbmNvZGVyOworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwl2b2lkIF9faW9tZW0gKm1taW87 CisJY29uc3Qgc3RydWN0IHZvdV9pbmYgKmluZjsKKwlzdHJ1Y3QgenhfdHZlbmNfcHdyY3RybCBw d3JjdHJsOworfTsKKworI2RlZmluZSB0b196eF90dmVuYyh4KSBjb250YWluZXJfb2YoeCwgc3Ry dWN0IHp4X3R2ZW5jLCB4KQorCitzdHJ1Y3QgenhfdHZlbmNfbW9kZSB7CisJY2hhciAqbmFtZTsK Kwl1MzIgaGRpc3BsYXk7CisJdTMyIHZkaXNwbGF5OworCXUzMiBoZnA7CisJdTMyIGhicDsKKwl1 MzIgaHN3OworCXUzMiB2ZnA7CisJdTMyIHZicDsKKwl1MzIgdnN3OworCXUzMiB2aWRlb19pbmZv OworCXUzMiB2aWRlb19yZXM7CisJdTMyIGZpZWxkMV9wYXJhbTsKKwl1MzIgZmllbGQyX3BhcmFt OworCXUzMiBidXJzdF9saW5lX29kZDE7CisJdTMyIGJ1cnN0X2xpbmVfZXZlbjE7CisJdTMyIGJ1 cnN0X2xpbmVfb2RkMjsKKwl1MzIgYnVyc3RfbGluZV9ldmVuMjsKKwl1MzIgbGluZV90aW1pbmdf cGFyYW07CisJdTMyIHdlaWdodF92YWx1ZTsKKwl1MzIgYmxhbmtfYmxhY2tfbGV2ZWw7CisJdTMy IGJ1cnN0X2xldmVsOworCXUzMiBjb250cm9sX3BhcmFtOworCXUzMiBzdWJfY2Fycmllcl9waGFz ZTE7CisJdTMyIHBoYXNlX2xpbmVfaW5jcl9jdmJzOworfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCB6eF90dmVuY19tb2RlIHR2ZW5jX21vZGVzW10gPSB7CisJeworCQkubmFtZSA9ICJQQUwiLAor CQkuaGRpc3BsYXkgPSA3MjAsCisJCS52ZGlzcGxheSA9IDU3NiwKKwkJLmhmcCA9IDEyLAorCQku aGJwID0gMTMwLAorCQkuaHN3ID0gMiwKKwkJLnZmcCA9IDIsCisJCS52YnAgPSAyMCwKKwkJLnZz dyA9IDIsCisJCS52aWRlb19pbmZvID0gMHgwMDA0MDA0MCwKKwkJLnZpZGVvX3JlcyA9IDB4MDVh OWM3NjAsCisJCS5maWVsZDFfcGFyYW0gPSAweDAwMDRkNDE2LAorCQkuZmllbGQyX3BhcmFtID0g MHgwMDA5Yjk0ZiwKKwkJLmJ1cnN0X2xpbmVfb2RkMSA9IDB4MDAwNGQ0MDYsCisJCS5idXJzdF9s aW5lX2V2ZW4xID0gMHgwMDA5YjUzZSwKKwkJLmJ1cnN0X2xpbmVfb2RkMiA9IDB4MDAwNGQ4MDUs CisJCS5idXJzdF9saW5lX2V2ZW4yID0gMHgwMDA5YjkzZiwKKwkJLmxpbmVfdGltaW5nX3BhcmFt ID0gMHgwNmE5NmZkZiwKKwkJLndlaWdodF92YWx1ZSA9IDB4MDBjMTg4YTAsCisJCS5ibGFua19i bGFja19sZXZlbCA9IDB4MDAwMGZjZmMsCisJCS5idXJzdF9sZXZlbCA9IDB4MDAwMDE1OTUsCisJ CS5jb250cm9sX3BhcmFtID0gMHgwMDAwMDAwMSwKKwkJLnN1Yl9jYXJyaWVyX3BoYXNlMSA9IDB4 MTUwNGM1NjYsCisJCS5waGFzZV9saW5lX2luY3JfY3ZicyA9IDB4YzA2OGRiOGMsCisJfSwgewor CQkubmFtZSA9ICJOVFNDIiwKKwkJLmhkaXNwbGF5ID0gNzIwLAorCQkudmRpc3BsYXkgPSA0ODAs CisJCS5oZnAgPSAxNiwKKwkJLmhicCA9IDEyMCwKKwkJLmhzdyA9IDIsCisJCS52ZnAgPSAzLAor CQkudmJwID0gMTcsCisJCS52c3cgPSAyLAorCQkudmlkZW9faW5mbyA9IDB4MDAwNDAwODAsCisJ CS52aWRlb19yZXMgPSAweDA1YTgzNzVhLAorCQkuZmllbGQxX3BhcmFtID0gMHgwMDA0MTgxNywK KwkJLmZpZWxkMl9wYXJhbSA9IDB4MDAwODM1MWUsCisJCS5idXJzdF9saW5lX29kZDEgPSAweDAw MDQxMDA2LAorCQkuYnVyc3RfbGluZV9ldmVuMSA9IDB4MDAwODI5MGQsCisJCS5idXJzdF9saW5l X29kZDIgPSAweDAwMDAwMDAwLAorCQkuYnVyc3RfbGluZV9ldmVuMiA9IDB4MDAwMDAwMDAsCisJ CS5saW5lX3RpbWluZ19wYXJhbSA9IDB4MDZhOGVmOWUsCisJCS53ZWlnaHRfdmFsdWUgPSAweDAw YjY4MTk3LAorCQkuYmxhbmtfYmxhY2tfbGV2ZWwgPSAweDAwMDBmMGYwLAorCQkuYnVyc3RfbGV2 ZWwgPSAweDAwMDAwMDljLAorCQkuY29udHJvbF9wYXJhbSA9IDB4MDAwMDAwMDEsCisJCS5zdWJf Y2Fycmllcl9waGFzZTEgPSAweDEwZjgzZTEwLAorCQkucGhhc2VfbGluZV9pbmNyX2N2YnMgPSAw eDgwMDAwMDAwLAorCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4X3R2ZW5jX21vZGUg KgorenhfdHZlbmNfZmluZF96bW9kZShzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sK KwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHR2ZW5jX21vZGVzKTsgaSsr KSB7CisJCWNvbnN0IHN0cnVjdCB6eF90dmVuY19tb2RlICp6bW9kZSA9ICZ0dmVuY19tb2Rlc1tp XTsKKworCQlpZiAoIXN0cmNtcChtb2RlLT5uYW1lLCB6bW9kZS0+bmFtZSkpCisJCQlyZXR1cm4g 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 ID0geworCS5kZXN0cm95ID0gZHJtX2VuY29kZXJfY2xlYW51cCwKK307CisKK3N0YXRpYyB2b2lk IHp4X3R2ZW5jX21vZGVfdG9fZHJtX21vZGUoY29uc3Qgc3RydWN0IHp4X3R2ZW5jX21vZGUgKnpt b2RlLAorCQkJCSAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXN0cmNw eShtb2RlLT5uYW1lLCB6bW9kZS0+bmFtZSk7CisKKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQ RV9EUklWRVI7CisJbW9kZS0+ZmxhZ3MgPSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRTsKKwltb2Rl LT5mbGFncyB8PSBEUk1fTU9ERV9GTEFHX05IU1lOQyB8IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwor CisJLyoKKwkgKiBUaGUgQ1JNIGNhbm5vdCBkaXJlY3RseSBwcm92aWRlIHN1Y2ggYSBsb3cgcmF0 ZSwgYW5kIHdlIGhhdmUgdG8KKwkgKiBhc2sgYSBtdWx0aWZsaWVkIHJhdGUgZnJvbSBDUk0gYW5k IHVzZSB0aGUgZGl2aWRlciBpbiBWT1UgdG8gZ2V0CisJICogdGhlIGRpc2lyZWQgb25lLgorCSAq LworCW1vZGUtPmNsb2NrID0gMTM1MDAgKiA0OworCisJbW9kZS0+aGRpc3BsYXkgPSB6bW9kZS0+ aGRpc3BsYXk7CisJbW9kZS0+aHN5bmNfc3RhcnQgPSBtb2RlLT5oZGlzcGxheSArIHptb2RlLT5o ZnA7CisJbW9kZS0+aHN5bmNfZW5kID0gbW9kZS0+aHN5bmNfc3RhcnQgKyB6bW9kZS0+aHN3Owor CW1vZGUtPmh0b3RhbCA9IG1vZGUtPmhzeW5jX2VuZCArIHptb2RlLT5oYnA7CisKKwltb2RlLT52 ZGlzcGxheSA9IHptb2RlLT52ZGlzcGxheTsKKwltb2RlLT52c3luY19zdGFydCA9IG1vZGUtPnZk aXNwbGF5ICsgem1vZGUtPnZmcDsKKwltb2RlLT52c3luY19lbmQgPSBtb2RlLT52c3luY19zdGFy dCArIHptb2RlLT52c3c7CisJbW9kZS0+dnRvdGFsID0gbW9kZS0+dnN5bmNfZW5kICsgem1vZGUt PnZicDsKK30KKworc3RhdGljIGludCB6eF90dmVuY19jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IHp4X3R2ZW5jICp0dmVuYyA9 IHRvX3p4X3R2ZW5jKGNvbm5lY3Rvcik7CisJc3RydWN0IGRldmljZSAqZGV2ID0gdHZlbmMtPmRl djsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHR2ZW5jX21vZGVzKTsg aSsrKSB7CisJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOworCQljb25zdCBzdHJ1Y3Qg enhfdHZlbmNfbW9kZSAqem1vZGUgPSAmdHZlbmNfbW9kZXNbaV07CisKKwkJbW9kZSA9IGRybV9t b2RlX2NyZWF0ZShjb25uZWN0b3ItPmRldik7CisJCWlmICghbW9kZSkgeworCQkJRFJNX0RFVl9F UlJPUihkZXYsICJmYWlsZWQgdG8gY3JlYXRlIGRybSBtb2RlXG4iKTsKKwkJCXJldHVybiAwOwor CQl9CisKKwkJenhfdHZlbmNfbW9kZV90b19kcm1fbW9kZSh6bW9kZSwgbW9kZSk7CisJCWRybV9t b2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKKwl9CisKKwlyZXR1cm4gaTsKK30KKwor c3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzCit6eF90dmVuY19jb25uZWN0b3JfbW9kZV92YWxp ZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJICAgICAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUpCit7CisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgenhfdHZlbmNfY29ubmVjdG9yX2hlbHBlcl9m dW5jcyA9IHsKKwkuZ2V0X21vZGVzID0genhfdHZlbmNfY29ubmVjdG9yX2dldF9tb2RlcywKKwku bW9kZV92YWxpZCA9IHp4X3R2ZW5jX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkLAorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIHp4X3R2ZW5jX2Nvbm5lY3Rvcl9mdW5j cyA9IHsKKwkuZHBtcyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAorCS5maWxs X21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAorCS5kZXN0 cm95ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAorCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9yZXNldCwKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNf aGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCisJLmF0b21pY19kZXN0cm95X3N0YXRl ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCit9OworCitzdGF0 aWMgaW50IHp4X3R2ZW5jX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCB6 eF90dmVuYyAqdHZlbmMpCit7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJnR2ZW5j LT5lbmNvZGVyOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmdHZlbmMtPmNv bm5lY3RvcjsKKworCS8qCisJICogVGhlIHR2ZW5jIGlzIGRlc2lnbmVkIHRvIHVzZSBhdXggY2hh bm5lbCwgYXMgdGhlcmUgaXMgYSBkZWZsaWNrZXIKKwkgKiBibG9jayBmb3IgdGhlIGNoYW5uZWwu CisJICovCisJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSBCSVQoMSk7CisKKwlkcm1fZW5jb2Rl cl9pbml0KGRybSwgZW5jb2RlciwgJnp4X3R2ZW5jX2VuY29kZXJfZnVuY3MsCisJCQkgRFJNX01P REVfRU5DT0RFUl9UVkRBQywgTlVMTCk7CisJZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVy LCAmenhfdHZlbmNfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOworCisJY29ubmVjdG9yLT5pbnRlcmxh Y2VfYWxsb3dlZCA9IHRydWU7CisKKwlkcm1fY29ubmVjdG9yX2luaXQoZHJtLCBjb25uZWN0b3Is ICZ6eF90dmVuY19jb25uZWN0b3JfZnVuY3MsCisJCQkgICBEUk1fTU9ERV9DT05ORUNUT1JfQ29t cG9zaXRlKTsKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmenhfdHZlbmNf Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisKKwlkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2Vu Y29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHp4X3R2ZW5jX3B3cmN0cmxfaW5pdChzdHJ1Y3QgenhfdHZlbmMgKnR2ZW5jKQoreworCXN0cnVj dCB6eF90dmVuY19wd3JjdHJsICpwd3JjdHJsID0gJnR2ZW5jLT5wd3JjdHJsOworCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHR2ZW5jLT5kZXY7CisJc3RydWN0IG9mX3BoYW5kbGVfYXJncyBvdXRfYXJn czsKKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7CisJaW50IHJldDsKKworCXJldCA9IG9mX3BhcnNl X3BoYW5kbGVfd2l0aF9maXhlZF9hcmdzKGRldi0+b2Zfbm9kZSwKKwkJCQkienRlLHR2ZW5jLXBv d2VyLWNvbnRyb2wiLCAyLCAwLCAmb3V0X2FyZ3MpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CisKKwlyZWdtYXAgPSBzeXNjb25fbm9kZV90b19yZWdtYXAob3V0X2FyZ3MubnApOworCWlmIChJ U19FUlIocmVnbWFwKSkgeworCQlyZXQgPSBQVFJfRVJSKHJlZ21hcCk7CisJCWdvdG8gb3V0Owor CX0KKworCXB3cmN0cmwtPnJlZ21hcCA9IHJlZ21hcDsKKwlwd3JjdHJsLT5yZWcgPSBvdXRfYXJn cy5hcmdzWzBdOworCXB3cmN0cmwtPm1hc2sgPSBvdXRfYXJncy5hcmdzWzFdOworCitvdXQ6CisJ b2Zfbm9kZV9wdXQob3V0X2FyZ3MubnApOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQg enhfdHZlbmNfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwg dm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZv cm1fZGV2aWNlKGRldik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRhdGE7CisJc3RydWN0 IHJlc291cmNlICpyZXM7CisJc3RydWN0IHp4X3R2ZW5jICp0dmVuYzsKKwlpbnQgcmV0OworCisJ dHZlbmMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnR2ZW5jKSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCF0dmVuYykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwl0dmVuYy0+ZGV2ID0gZGV2OworCWRl dl9zZXRfZHJ2ZGF0YShkZXYsIHR2ZW5jKTsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJj ZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJdHZlbmMtPm1taW8gPSBkZXZtX2lvcmVtYXBf cmVzb3VyY2UoZGV2LCByZXMpOworCWlmIChJU19FUlIodHZlbmMtPm1taW8pKSB7CisJCXJldCA9 IFBUUl9FUlIodHZlbmMtPm1taW8pOworCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBy ZW1hcCB0dmVuYyByZWdpb246ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJl dCA9IHp4X3R2ZW5jX3B3cmN0cmxfaW5pdCh0dmVuYyk7CisJaWYgKHJldCkgeworCQlEUk1fREVW X0VSUk9SKGRldiwgImZhaWxlZCB0byBpbml0IHBvd2VyIGNvbnRyb2w6ICVkXG4iLCByZXQpOwor CQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHp4X3R2ZW5jX3JlZ2lzdGVyKGRybSwgdHZlbmMp OworCWlmIChyZXQpIHsKKwkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIg dHZlbmM6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQor CitzdGF0aWMgdm9pZCB6eF90dmVuY191bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlICptYXN0ZXIsCisJCQkgICAgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgenhfdHZlbmMg KnR2ZW5jID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwl0dmVuYy0+Y29ubmVjdG9yLmZ1bmNz LT5kZXN0cm95KCZ0dmVuYy0+Y29ubmVjdG9yKTsKKwl0dmVuYy0+ZW5jb2Rlci5mdW5jcy0+ZGVz dHJveSgmdHZlbmMtPmVuY29kZXIpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVu dF9vcHMgenhfdHZlbmNfY29tcG9uZW50X29wcyA9IHsKKwkuYmluZCA9IHp4X3R2ZW5jX2JpbmQs CisJLnVuYmluZCA9IHp4X3R2ZW5jX3VuYmluZCwKK307CisKK3N0YXRpYyBpbnQgenhfdHZlbmNf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlyZXR1cm4gY29tcG9uZW50 X2FkZCgmcGRldi0+ZGV2LCAmenhfdHZlbmNfY29tcG9uZW50X29wcyk7Cit9CisKK3N0YXRpYyBp bnQgenhfdHZlbmNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJY29t cG9uZW50X2RlbCgmcGRldi0+ZGV2LCAmenhfdHZlbmNfY29tcG9uZW50X29wcyk7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHp4X3R2ZW5jX29mX21h dGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJ6dGUsengyOTY3MTgtdHZlbmMiLCB9LAorCXsg LyogZW5kICovIH0sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgenhfdHZlbmNfb2ZfbWF0 Y2gpOworCitzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHp4X3R2ZW5jX2RyaXZlciA9IHsKKwkucHJv YmUgPSB6eF90dmVuY19wcm9iZSwKKwkucmVtb3ZlID0genhfdHZlbmNfcmVtb3ZlLAorCS5kcml2 ZXIJPSB7CisJCS5uYW1lID0gInp4LXR2ZW5jIiwKKwkJLm9mX21hdGNoX3RhYmxlCT0genhfdHZl bmNfb2ZfbWF0Y2gsCisJfSwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4 X3R2ZW5jX3JlZ3MuaCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdHZlbmNfcmVncy5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmQ5MWY1ZGNjMWYzCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF90dmVuY19yZWdzLmgKQEAgLTAsMCAr MSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IExpbmFybyBMdGQuCisgKiBDb3B5cmlnaHQg MjAxNyBaVEUgQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisg KiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKwor I2lmbmRlZiBfX1pYX1RWRU5DX1JFR1NfSF9fCisjZGVmaW5lIF9fWlhfVFZFTkNfUkVHU19IX18K KworI2RlZmluZSBWRU5DX1ZJREVPX0lORk8JCQkweDA0CisjZGVmaW5lIFZFTkNfVklERU9fUkVT CQkJMHgwOAorI2RlZmluZSBWRU5DX0ZJRUxEMV9QQVJBTQkJMHgxMAorI2RlZmluZSBWRU5DX0ZJ RUxEMl9QQVJBTQkJMHgxNAorI2RlZmluZSBWRU5DX0xJTkVfT18xCQkJMHgxOAorI2RlZmluZSBW RU5DX0xJTkVfRV8xCQkJMHgxYworI2RlZmluZSBWRU5DX0xJTkVfT18yCQkJMHgyMAorI2RlZmlu ZSBWRU5DX0xJTkVfRV8yCQkJMHgyNAorI2RlZmluZSBWRU5DX0xJTkVfVElNSU5HX1BBUkFNCQkw eDI4CisjZGVmaW5lIFZFTkNfV0VJR0hUX1ZBTFVFCQkweDJjCisjZGVmaW5lIFZFTkNfQkxBTktf QkxBQ0tfTEVWRUwJCTB4MzAKKyNkZWZpbmUgVkVOQ19CVVJTVF9MRVZFTAkJMHgzNAorI2RlZmlu ZSBWRU5DX0NPTlRST0xfUEFSQU0JCTB4M2MKKyNkZWZpbmUgVkVOQ19TVUJfQ0FSUklFUl9QSEFT RTEJCTB4NDAKKyNkZWZpbmUgVkVOQ19QSEFTRV9MSU5FX0lOQ1JfQ1ZCUwkweDQ4CisjZGVmaW5l IFZFTkNfRU5BQkxFCQkJMHhhOAorCisjZW5kaWYgLyogX19aWF9UVkVOQ19SRUdTX0hfXyAqLwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3UuYyBiL2RyaXZlcnMvZ3B1L2Ry bS96dGUvenhfdm91LmMKaW5kZXggOThmMGY1MWY5NzQ4Li42MWQ0ZmY3MDlkODMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0 ZS96eF92b3UuYwpAQCAtMTkyLDYgKzE5MiwxMSBAQCBzdHJ1Y3Qgdm91X2luZiB7CiAJCS5jbG9j a3NfZW5fYml0cyA9IEJJVCgyNCkgfCBCSVQoMTgpIHwgQklUKDYpLAogCQkuY2xvY2tzX3NlbF9i aXRzID0gQklUKDEzKSB8IEJJVCgyKSwKIAl9LAorCVtWT1VfVFZfRU5DXSA9IHsKKwkJLmRhdGFf c2VsID0gVk9VX1lVVjQ0NCwKKwkJLmNsb2Nrc19lbl9iaXRzID0gQklUKDE1KSwKKwkJLmNsb2Nr c19zZWxfYml0cyA9IEJJVCgxMSkgfCBCSVQoMCksCisJfSwKIH07CiAKIHN0YXRpYyBpbmxpbmUg c3RydWN0IHp4X3ZvdV9odyAqY3J0Y190b192b3Uoc3RydWN0IGRybV9jcnRjICpjcnRjKQotLSAK MS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=