From mboxrd@z Thu Jan 1 00:00:00 1970 From: YT Shen Subject: [PATCH v6 07/10] drm/mediatek: add dsi transfer function Date: Thu, 4 Aug 2016 19:07:21 +0800 Message-ID: <1470308844-20895-8-git-send-email-yt.shen@mediatek.com> References: <1470308844-20895-1-git-send-email-yt.shen@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1470308844-20895-1-git-send-email-yt.shen@mediatek.com> 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, Philipp Zabel Cc: Mark Rutland , Russell King , Mao Huang , yingjoe.chen@mediatek.com, devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , Rob Herring , linux-mediatek@lists.infradead.org, Matthias Brugger , shaoming chen , linux-arm-kernel@lists.infradead.org, srv_heupstream@mediatek.com, emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Sascha Hauer , Kumar Gala List-Id: devicetree@vger.kernel.org RnJvbTogc2hhb21pbmcgY2hlbiA8c2hhb21pbmcuY2hlbkBtZWRpYXRlay5jb20+CgphZGQgZHNp IHJlYWQvd3JpdGUgY29tbWFuZHMgZm9yIHRyYW5zZmVyIGZ1bmN0aW9uCgpTaWduZWQtb2ZmLWJ5 OiBzaGFvbWluZyBjaGVuIDxzaGFvbWluZy5jaGVuQG1lZGlhdGVrLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5jIHwgIDI2MSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmMgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RzaS5jCmluZGV4IGVlYTYxOTIuLjQ1NDFmNTkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kc2kuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPGxpbnV4L29m X2dyYXBoLmg+CiAjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgogI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgogI2luY2x1 ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgogCiAjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5oIgpA QCAtODEsOCArODIsMTYgQEAKICNkZWZpbmUgRFNJX0hCUF9XQwkJMHg1NAogI2RlZmluZSBEU0lf SEZQX1dDCQkweDU4CiAKKyNkZWZpbmUgRFNJX0NNRFFfU0laRQkJMHg2MAorI2RlZmluZSBDTURR X1NJWkUJCTB4M2YKKwogI2RlZmluZSBEU0lfSFNUWF9DS0xfV0MJCTB4NjQKIAorI2RlZmluZSBE U0lfUlhfREFUQTAJCTB4NzQKKyNkZWZpbmUgRFNJX1JYX0RBVEExCQkweDc4CisjZGVmaW5lIERT SV9SWF9EQVRBMgkJMHg3YworI2RlZmluZSBEU0lfUlhfREFUQTMJCTB4ODAKKwogI2RlZmluZSBE U0lfUkFDSwkJMHg4NAogI2RlZmluZSBSQUNLCQkJCUJJVCgwKQogCkBAIC0xMTgsOCArMTI3LDI1 IEBACiAjZGVmaW5lIENMS19IU19QT1NUCQkJKDB4ZmYgPDwgOCkKICNkZWZpbmUgQ0xLX0hTX0VY SVQJCQkoMHhmZiA8PCAxNikKIAorI2RlZmluZSBEU0lfQ01EUTAJCTB4MTgwCisKICNkZWZpbmUg TlNfVE9fQ1lDTEUobiwgYykgICAgKChuKSAvIChjKSArICgoKG4pICUgKGMpKSA/IDEgOiAwKSkK IAorI2RlZmluZSBNVEtfRFNJX0hPU1RfSVNfUkVBRCh0eXBlKSBcCisJKCh0eXBlID09IE1JUElf RFNJX0dFTkVSSUNfUkVBRF9SRVFVRVNUXzBfUEFSQU0pIHx8IFwKKwkodHlwZSA9PSBNSVBJX0RT SV9HRU5FUklDX1JFQURfUkVRVUVTVF8xX1BBUkFNKSB8fCBcCisJKHR5cGUgPT0gTUlQSV9EU0lf R0VORVJJQ19SRUFEX1JFUVVFU1RfMl9QQVJBTSkgfHwgXAorCSh0eXBlID09IE1JUElfRFNJX0RD U19SRUFEKSkKKworI2RlZmluZSBNVEtfRFNJX0hPU1RfSVNfV1JJVEUodHlwZSkgXAorCSgodHlw ZSA9PSBNSVBJX0RTSV9HRU5FUklDX1NIT1JUX1dSSVRFXzBfUEFSQU0pIHx8IFwKKwkodHlwZSA9 PSBNSVBJX0RTSV9HRU5FUklDX1NIT1JUX1dSSVRFXzFfUEFSQU0pIHx8IFwKKwkodHlwZSA9PSBN SVBJX0RTSV9HRU5FUklDX1NIT1JUX1dSSVRFXzJfUEFSQU0pIHx8IFwKKwkodHlwZSA9PSBNSVBJ X0RTSV9EQ1NfU0hPUlRfV1JJVEUpIHx8IFwKKwkodHlwZSA9PSBNSVBJX0RTSV9EQ1NfU0hPUlRf V1JJVEVfUEFSQU0pIHx8IFwKKwkodHlwZSA9PSBNSVBJX0RTSV9HRU5FUklDX0xPTkdfV1JJVEUp IHx8IFwKKwkodHlwZSA9PSBNSVBJX0RTSV9EQ1NfTE9OR19XUklURSkpCisKIHN0cnVjdCBwaHk7 CiAKIHN0cnVjdCBtdGtfZHNpIHsKQEAgLTE0OSw2ICsxNzUsMTMgQEAgc3RydWN0IG10a19kc2kg ewogCWludCBpcnFfZGF0YTsKIH07CiAKK3N0cnVjdCBkc2lfcnh0eF9kYXRhIHsKKwl1OCBieXRl MDsKKwl1OCBieXRlMTsKKwl1OCBieXRlMjsKKwl1OCBieXRlMzsKK307CisKIHN0YXRpYyB3YWl0 X3F1ZXVlX2hlYWRfdCBfZHNpX2lycV93YWl0X3F1ZXVlOwogCiBzdGF0aWMgaW5saW5lIHN0cnVj dCBtdGtfZHNpICplbmNvZGVyX3RvX2RzaShzdHJ1Y3QgZHJtX2VuY29kZXIgKmUpCkBAIC03OTks OSArODMyLDIzNyBAQCBzdGF0aWMgaW50IG10a19kc2lfaG9zdF9kZXRhY2goc3RydWN0IG1pcGlf ZHNpX2hvc3QgKmhvc3QsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIG10a19kc2lfd2Fp dF9mb3JfaWRsZShzdHJ1Y3QgbXRrX2RzaSAqZHNpKQoreworCXUzMiB0aW1lb3V0X21zID0gNTAw MDAwOyAvKiB0b3RhbCAxcyB+IDJzIHRpbWVvdXQgKi8KKworCXdoaWxlICh0aW1lb3V0X21zLS0p IHsKKwkJaWYgKCEocmVhZGwoZHNpLT5yZWdzICsgRFNJX0lOVFNUQSkgJiBEU0lfQlVTWSkpCisJ CQlicmVhazsKKworCQl1c2xlZXBfcmFuZ2UoMiwgNCk7CisJfQorCisJaWYgKHRpbWVvdXRfbXMg PT0gMCkgeworCQlkZXZfaW5mbyhkc2ktPmRldiwgInBvbGxpbmcgZHNpIHdhaXQgbm90IGJ1c3kg dGltZW91dCFcbiIpOworCisJCW10a19kc2lfZW5hYmxlKGRzaSk7CisJCW10a19kc2lfcmVzZXRf ZW5naW5lKGRzaSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBtdGtfZHNpX3dhaXRfZm9yX2NtZF9k b25lKHN0cnVjdCBtdGtfZHNpICpkc2kpCit7CisJczMyIHJldCA9IDA7CisJdW5zaWduZWQgbG9u ZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyg1MDApOworCisJZHNpLT5pcnFfZGF0YSAmPSB+ Q01EX0RPTkVfSU5UX0ZMQUc7CisKKwlyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGlt ZW91dChfZHNpX2lycV93YWl0X3F1ZXVlLAorCQkJZHNpLT5pcnFfZGF0YSAmIENNRF9ET05FX0lO VF9GTEFHLCB0aW1lb3V0KTsKKwlpZiAocmV0ID09IDApIHsKKwkJZGV2X2luZm8oZHNpLT5kZXYs ICJkc2kgd2FpdCBlbmdpbmUgY21kIGRvbmUgZmFpbFxuIik7CisKKwkJbXRrX2RzaV9lbmFibGUo ZHNpKTsKKwkJbXRrX2RzaV9yZXNldF9lbmdpbmUoZHNpKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lk IG10a19kc2lfY21kcShzdHJ1Y3QgbXRrX2RzaSAqZHNpLCBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lf bXNnICptc2cpCit7CisJY29uc3QgY2hhciAqdHhfYnVmID0gbXNnLT50eF9idWY7CisJdTMyIHJl Z192YWwsIGk7CisJdTE2IHdjMTY7CisJdTggY29uZmlnLCBkYXRhMCwgZGF0YTEsIHR5cGU7CisK KwlpZiAoTVRLX0RTSV9IT1NUX0lTX1JFQUQodHlwZSkpIHsKKwkJY29uZmlnID0gNDsKKwkJZGF0 YTAgPSB0eF9idWZbMF07CisKKwkJaWYgKG1zZy0+cnhfbGVuIDwgMykKKwkJCXR5cGUgPSBNSVBJ X0RTSV9EQ1NfUkVBRDsKKwkJZWxzZQorCQkJdHlwZSA9IE1JUElfRFNJX0dFTkVSSUNfUkVBRF9S RVFVRVNUXzFfUEFSQU07CisKKwkJZGF0YTEgPSAwOworCQlyZWdfdmFsID0gKGRhdGExIDw8IDI0 KSB8IChkYXRhMCA8PCAxNikgfCAodHlwZSA8PCA4KSB8IGNvbmZpZzsKKworCQl3cml0ZWwocmVn X3ZhbCwgZHNpLT5yZWdzICsgRFNJX0NNRFEwKTsKKwkJbXRrX2RzaV9tYXNrKGRzaSwgRFNJX0NN RFFfU0laRSwgQ01EUV9TSVpFLCAxKTsKKwl9IGVsc2UgaWYgKG1zZy0+dHhfbGVuID4gMikgewkv KiBzZW5kIGxvbmcgcGFja2V0ICovCisJCWNvbmZpZyA9IDI7CisJCXR5cGUgPSBtc2ctPnR5cGU7 CisJCXdjMTYgPSBtc2ctPnR4X2xlbjsKKworCQlyZWdfdmFsID0gKHdjMTYgPDwgMTYpIHwgKHR5 cGUgPDwgOCkgfCBjb25maWc7CisKKwkJd3JpdGVsKHJlZ192YWwsIGRzaS0+cmVncyArIERTSV9D TURRMCk7CisKKwkJZm9yIChpID0gMDsgaSA8IG1zZy0+dHhfbGVuOyBpKyspCisJCQl3cml0ZWIo dHhfYnVmW2ldLCBkc2ktPnJlZ3MgKyBEU0lfQ01EUTAgKyA0ICsgaSk7CisKKwkJbXRrX2RzaV9t YXNrKGRzaSwgRFNJX0NNRFFfU0laRSwgQ01EUV9TSVpFLAorCQkJICAgICAxICsgKG1zZy0+dHhf bGVuICsgMykgLyA0KTsKKwl9IGVsc2UgewkvKiBzZW5kIHNob3J0IHBhY2tldCAqLworCQljb25m aWcgPSAwOworCQlkYXRhMCA9IHR4X2J1ZlswXTsKKworCQlpZiAobXNnLT50eF9sZW4gPT0gMikg eworCQkJdHlwZSA9IE1JUElfRFNJX0RDU19TSE9SVF9XUklURV9QQVJBTTsKKwkJCWRhdGExID0g dHhfYnVmWzFdOworCQl9IGVsc2UgeworCQkJdHlwZSA9IE1JUElfRFNJX0RDU19TSE9SVF9XUklU RTsKKwkJCWRhdGExID0gMDsKKwkJfQorCisJCXJlZ192YWwgPSAoZGF0YTEgPDwgMjQpIHwgKGRh dGEwIDw8IDE2KSB8ICh0eXBlIDw8IDgpIHwgY29uZmlnOworCisJCXdyaXRlbChyZWdfdmFsLCBk c2ktPnJlZ3MgKyBEU0lfQ01EUTApOworCQltdGtfZHNpX21hc2soZHNpLCBEU0lfQ01EUV9TSVpF LCBDTURRX1NJWkUsIDEpOworCX0KK30KKworc3RhdGljIHNzaXplX3QgbXRrX2RzaV9ob3N0X3Jl YWRfY21kKHN0cnVjdCBtdGtfZHNpICpkc2ksCisJCQkJICAgICBjb25zdCBzdHJ1Y3QgbWlwaV9k c2lfbXNnICptc2cpCit7CisJdTggbWF4X3RyeV9jb3VudCA9IDU7CisJdTMyIHJlY3ZfY250Owor CXN0cnVjdCBkc2lfcnh0eF9kYXRhIHJlYWRfZGF0YVs0XTsKKwlzMzIgcmV0OworCXVuc2lnbmVk IGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoMjAwMCk7CisKKwl1OCAqYnVmZmVyID0g bXNnLT5yeF9idWY7CisJdTggYnVmZmVyX3NpemUgPSBtc2ctPnJ4X2xlbjsKKwl1OCB0eXBlOwor CisJaWYgKHJlYWRsKGRzaS0+cmVncyArIERTSV9NT0RFX0NUUkwpICYgTU9ERSkgeworCQlkZXZf aW5mbyhkc2ktPmRldiwgImRzaSBlbmdpbmUgaXMgbm90IGNvbW1hbmQgbW9kZVxuIik7CisJCXJl dHVybiAtMTsKKwl9CisKKwlpZiAoIWJ1ZmZlcikgeworCQlkZXZfaW5mbyhkc2ktPmRldiwgImRz aSByZWNlaXZlIGJ1ZmZlciBzaXplIG1heSBiZSBOVUxMXG4iKTsKKwkJcmV0dXJuIC0xOworCX0K KworCWRvIHsKKwkJaWYgKG1heF90cnlfY291bnQgPT0gMCkgeworCQkJZGV2X2luZm8oZHNpLT5k ZXYsICJkc2kgZW5naW5lIHJlYWQgY291bnRlciBoYXMgYmVlbiBtYXhpbnVtXG4iKTsKKwkJCXJl dHVybiAtMTsKKwkJfQorCisJCW1heF90cnlfY291bnQtLTsKKwkJcmVjdl9jbnQgPSAwOworCisJ CW10a19kc2lfd2FpdF9mb3JfaWRsZShkc2kpOworCQltdGtfZHNpX2NtZHEoZHNpLCBtc2cpOwor CisJCWRzaS0+aXJxX2RhdGEgJj0gfkxQUlhfUkRfUkRZX0lOVF9GTEFHOworCisJCW10a19kc2lf c3RhcnQoZHNpKTsKKworCQkvKiAycyB0aW1lb3V0Ki8KKwkJcmV0ID0gd2FpdF9ldmVudF9pbnRl cnJ1cHRpYmxlX3RpbWVvdXQoX2RzaV9pcnFfd2FpdF9xdWV1ZSwKKwkJCQlkc2ktPmlycV9kYXRh ICYgTFBSWF9SRF9SRFlfSU5UX0ZMQUcsIHRpbWVvdXQpOworCQlpZiAocmV0ID09IDApIHsKKwkJ CWRldl9pbmZvKGRzaS0+ZGV2LCAiV2FpdCBEU0kgcmVhZCByZWFkeSB0aW1lb3V0ISEhXG4iKTsK KworCQkJbXRrX2RzaV9lbmFibGUoZHNpKTsKKwkJCW10a19kc2lfcmVzZXRfZW5naW5lKGRzaSk7 CisKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQkqKHUzMiAqKSgmcmVhZF9kYXRhWzBdKSA9IHJl YWRsKGRzaS0+cmVncyArIERTSV9SWF9EQVRBMCk7CisJCSoodTMyICopKCZyZWFkX2RhdGFbMV0p ID0gcmVhZGwoZHNpLT5yZWdzICsgRFNJX1JYX0RBVEExKTsKKwkJKih1MzIgKikoJnJlYWRfZGF0 YVsyXSkgPSByZWFkbChkc2ktPnJlZ3MgKyBEU0lfUlhfREFUQTIpOworCQkqKHUzMiAqKSgmcmVh ZF9kYXRhWzNdKSA9IHJlYWRsKGRzaS0+cmVncyArIERTSV9SWF9EQVRBMyk7CisKKwkJdHlwZSA9 IHJlYWRfZGF0YVswXS5ieXRlMDsKKworCQlpZiAodHlwZSA9PSBNSVBJX0RTSV9SWF9HRU5FUklD X0xPTkdfUkVBRF9SRVNQT05TRSB8fAorCQkgICAgdHlwZSA9PSBNSVBJX0RTSV9SWF9EQ1NfTE9O R19SRUFEX1JFU1BPTlNFKSB7CisJCQkvKgorCQkJICogRGF0YSBJRCgxIGJ5dGUpICsgV29yZCBD b3VudCgyIGJ5dGVzKSArIEVDQygxIGJ5dGUpICsKKwkJCSAqIGRhdGEgMCArIC4uLisgZGF0YSBX Qy0xICsgQ0hFQ0tTVU0gKDIgYnl0ZXMpCisJCQkgKi8KKwkJCXJlY3ZfY250ID0gcmVhZF9kYXRh WzBdLmJ5dGUxICsgcmVhZF9kYXRhWzBdLmJ5dGUyICogMTY7CisJCQlkZXZfaW5mbyhkc2ktPmRl diwgImxvbmcgcGFja2V0IHNpemU6ICVkXG4iLCByZWN2X2NudCk7CisKKwkJCS8qCisJCQkgKiB0 aGUgYnVmZmVyIHNpemUgaXMgMTYgYnl0ZXMgb25jZSwgc28gdGhlIGRhdGEgcGF5bG9hZAorCQkJ ICogaXMsIDE2IC0gYnl0ZXMoZGF0YSBJRCArIFdDICsgRUNDICsgQ0hFQ0tTVU0pLCBpZgorCQkJ ICogb3ZlciAxMCBieXRlcywgaXQgd2lsbCBiZSByZWFkIGFnYWluCisJCQkgKi8KKwkJCWlmIChy ZWN2X2NudCA+IDEwKQorCQkJCXJlY3ZfY250ID0gMTA7CisKKwkJCWlmIChyZWN2X2NudCA+IGJ1 ZmZlcl9zaXplKQorCQkJCXJlY3ZfY250ID0gYnVmZmVyX3NpemU7CisKKwkJCW1lbWNweShidWZm ZXIsICZyZWFkX2RhdGFbMV0sIHJlY3ZfY250KTsKKwkJfSBlbHNlIGlmICh0eXBlID09IE1JUElf RFNJX1JYX0dFTkVSSUNfU0hPUlRfUkVBRF9SRVNQT05TRV8xQllURSB8fAorCQkJICAgdHlwZSA9 PSBNSVBJX0RTSV9SWF9HRU5FUklDX1NIT1JUX1JFQURfUkVTUE9OU0VfMkJZVEUgfHwKKwkJCSAg IHR5cGUgPT0gTUlQSV9EU0lfUlhfRENTX1NIT1JUX1JFQURfUkVTUE9OU0VfMUJZVEUgfHwKKwkJ CSAgIHR5cGUgPT0gTUlQSV9EU0lfUlhfRENTX1NIT1JUX1JFQURfUkVTUE9OU0VfMkJZVEUpIHsK KwkJCWlmICh0eXBlID09IE1JUElfRFNJX1JYX0dFTkVSSUNfU0hPUlRfUkVBRF9SRVNQT05TRV8x QllURSB8fAorCQkJICAgIHR5cGUgPT0gTUlQSV9EU0lfUlhfRENTX1NIT1JUX1JFQURfUkVTUE9O U0VfMUJZVEUpCisJCQkJcmVjdl9jbnQgPSAxOworCQkJZWxzZQorCQkJCXJlY3ZfY250ID0gMjsK KworCQkJaWYgKHJlY3ZfY250ID4gYnVmZmVyX3NpemUpCisJCQkJcmVjdl9jbnQgPSBidWZmZXJf c2l6ZTsKKworCQkJbWVtY3B5KGJ1ZmZlciwgJnJlYWRfZGF0YVswXS5ieXRlMSwgcmVjdl9jbnQp OworCQl9IGVsc2UgaWYgKHR5cGUgPT0gTUlQSV9EU0lfUlhfQUNLTk9XTEVER0VfQU5EX0VSUk9S X1JFUE9SVCkgeworCQkJZGV2X2luZm8oZHNpLT5kZXYsICJwYWNrZXQgdHlwZSBpcyAweDAyLCB0 cnkgYWdhaW5cbiIpOworCQl9IGVsc2UgeworCQkJZGV2X2luZm8oZHNpLT5kZXYsICJwYWNrZXQg dHlwZSgweCV4KSBjYW5ub3QgYmUgbm9uLXJlY29nbml6ZVxuIiwKKwkJCQkgdHlwZSk7CisKKwkJ CXJldHVybiAwOworCQl9CisJfSB3aGlsZSAodHlwZSA9PSBNSVBJX0RTSV9SWF9BQ0tOT1dMRURH RV9BTkRfRVJST1JfUkVQT1JUKTsKKworCWRldl9pbmZvKGRzaS0+ZGV2LCAiZHNpIGdldCAlZCBi eXRlIGRhdGEgZnJvbSB0aGUgcGFuZWwgYWRkcmVzcygweCV4KVxuIiwKKwkJIHJlY3ZfY250LCAq KCh1OCAqKShtc2ctPnR4X2J1ZikpKTsKKworCXJldHVybiByZWN2X2NudDsKK30KKworc3RhdGlj IHNzaXplX3QgbXRrX2RzaV9ob3N0X3dyaXRlX2NtZChzdHJ1Y3QgbXRrX2RzaSAqZHNpLAorCQkJ CSAgICAgIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9tc2cgKm1zZykKK3sKKwltdGtfZHNpX3dhaXRf Zm9yX2lkbGUoZHNpKTsKKworCW10a19kc2lfY21kcShkc2ksIG1zZyk7CisKKwltdGtfZHNpX3N0 YXJ0KGRzaSk7CisJbXRrX2RzaV93YWl0X2Zvcl9jbWRfZG9uZShkc2kpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBzc2l6ZV90IG10a19kc2lfaG9zdF90cmFuc2ZlcihzdHJ1Y3QgbWlwaV9k c2lfaG9zdCAqaG9zdCwKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9tc2cgKm1zZykK K3sKKwlzdHJ1Y3QgbXRrX2RzaSAqZHNpID0gaG9zdF90b19kc2koaG9zdCk7CisJdTggdHlwZSA9 IG1zZy0+dHlwZTsKKwlzc2l6ZV90IHJldCA9IDA7CisKKwlpZiAoTVRLX0RTSV9IT1NUX0lTX1JF QUQodHlwZSkpCisJCXJldCA9IG10a19kc2lfaG9zdF9yZWFkX2NtZChkc2ksIG1zZyk7CisJZWxz ZSBpZiAoTVRLX0RTSV9IT1NUX0lTX1dSSVRFKHR5cGUpKQorCQlyZXQgPSBtdGtfZHNpX2hvc3Rf d3JpdGVfY21kKGRzaSwgbXNnKTsKKworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgbWlwaV9kc2lfaG9zdF9vcHMgbXRrX2RzaV9vcHMgPSB7CiAJLmF0dGFjaCA9IG10a19k c2lfaG9zdF9hdHRhY2gsCiAJLmRldGFjaCA9IG10a19kc2lfaG9zdF9kZXRhY2gsCisJLnRyYW5z ZmVyID0gbXRrX2RzaV9ob3N0X3RyYW5zZmVyLAogfTsKIAogc3RhdGljIGludCBtdGtfZHNpX2Jp bmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEp Ci0tIAoxLjcuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK