From mboxrd@z Thu Jan 1 00:00:00 1970 From: YT Shen Subject: [PATCH v8 7/9] drm/mediatek: add dsi transfer function Date: Mon, 12 Sep 2016 20:01:10 +0800 Message-ID: <1473681672-47144-8-git-send-email-yt.shen@mediatek.com> References: <1473681672-47144-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: <1473681672-47144-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: Daniel Vetter , Jie Qiu , Mao Huang , yingjoe.chen@mediatek.com, Dan Carpenter , Jitao Shi , 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 , Maxime Ripard List-Id: linux-mediatek@lists.infradead.org RnJvbTogc2hhb21pbmcgY2hlbiA8c2hhb21pbmcuY2hlbkBtZWRpYXRlay5jb20+CgphZGQgZHNp IHJlYWQvd3JpdGUgY29tbWFuZHMgZm9yIHRyYW5zZmVyIGZ1bmN0aW9uCgpTaWduZWQtb2ZmLWJ5 OiBzaGFvbWluZyBjaGVuIDxzaGFvbWluZy5jaGVuQG1lZGlhdGVrLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5jIHwgMTgzICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxODMgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmMgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RzaS5jCmluZGV4IDAxOWU1MjYuLmNjNjdjZDcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kc2kuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPGxpbnV4L29m X2dyYXBoLmg+CiAjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgogI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgogI2luY2x1 ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgogCiAjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5oIgpA QCAtODEsOCArODIsMTYgQEAKICNkZWZpbmUgRFNJX0hCUF9XQwkJMHg1NAogI2RlZmluZSBEU0lf SEZQX1dDCQkweDU4CiAKKyNkZWZpbmUgRFNJX0NNRFFfU0laRQkJMHg2MAorI2RlZmluZSBDTURR X1NJWkUJCTB4M2YKKwogI2RlZmluZSBEU0lfSFNUWF9DS0xfV0MJCTB4NjQKIAorI2RlZmluZSBE U0lfUlhfREFUQTAJCTB4NzQKKyNkZWZpbmUgRFNJX1JYX0RBVEExCQkweDc4CisjZGVmaW5lIERT SV9SWF9EQVRBMgkJMHg3YworI2RlZmluZSBEU0lfUlhfREFUQTMJCTB4ODAKKwogI2RlZmluZSBE U0lfUkFDSwkJMHg4NAogI2RlZmluZSBSQUNLCQkJCUJJVCgwKQogCkBAIC0xMTgsOCArMTI3LDIz IEBACiAjZGVmaW5lIENMS19IU19QT1NUCQkJKDB4ZmYgPDwgOCkKICNkZWZpbmUgQ0xLX0hTX0VY SVQJCQkoMHhmZiA8PCAxNikKIAorI2RlZmluZSBEU0lfQ01EUTAJCTB4MTgwCisjZGVmaW5lIENP TkZJRwkJCQkoMHhmZiA8PCAwKQorI2RlZmluZSBTSE9SVF9QQUNLRVQJCQkwCisjZGVmaW5lIExP TkdfUEFDS0VUCQkJMgorI2RlZmluZSBCVEEJCQkJQklUKDIpCisjZGVmaW5lIERBVEFfSUQJCQkJ KDB4ZmYgPDwgOCkKKyNkZWZpbmUgREFUQV8wCQkJCSgweGZmIDw8IDE2KQorI2RlZmluZSBEQVRB XzEJCQkJKDB4ZmYgPDwgMjQpCisKICNkZWZpbmUgTlNfVE9fQ1lDTEUobiwgYykgICAgKChuKSAv IChjKSArICgoKG4pICUgKGMpKSA/IDEgOiAwKSkKIAorI2RlZmluZSBNVEtfRFNJX0hPU1RfSVNf UkVBRCh0eXBlKSBcCisJKCh0eXBlID09IE1JUElfRFNJX0dFTkVSSUNfUkVBRF9SRVFVRVNUXzBf UEFSQU0pIHx8IFwKKwkodHlwZSA9PSBNSVBJX0RTSV9HRU5FUklDX1JFQURfUkVRVUVTVF8xX1BB UkFNKSB8fCBcCisJKHR5cGUgPT0gTUlQSV9EU0lfR0VORVJJQ19SRUFEX1JFUVVFU1RfMl9QQVJB TSkgfHwgXAorCSh0eXBlID09IE1JUElfRFNJX0RDU19SRUFEKSkKKwogc3RydWN0IHBoeTsKIAog c3RydWN0IG10a19kc2kgewpAQCAtNzkyLDkgKzgxNiwxNjggQEAgc3RhdGljIGludCBtdGtfZHNp X2hvc3RfZGV0YWNoKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCXJldHVybiAwOwogfQog CitzdGF0aWMgdm9pZCBtdGtfZHNpX3dhaXRfZm9yX2lkbGUoc3RydWN0IG10a19kc2kgKmRzaSkK K3sKKwl1MzIgdGltZW91dF9tcyA9IDUwMDAwMDsgLyogdG90YWwgMXMgfiAycyB0aW1lb3V0ICov CisKKwl3aGlsZSAodGltZW91dF9tcy0tKSB7CisJCWlmICghKHJlYWRsKGRzaS0+cmVncyArIERT SV9JTlRTVEEpICYgRFNJX0JVU1kpKQorCQkJYnJlYWs7CisKKwkJdXNsZWVwX3JhbmdlKDIsIDQp OworCX0KKworCWlmICh0aW1lb3V0X21zID09IDApIHsKKwkJZGV2X2luZm8oZHNpLT5kZXYsICJw b2xsaW5nIGRzaSB3YWl0IG5vdCBidXN5IHRpbWVvdXQhXG4iKTsKKworCQltdGtfZHNpX2VuYWJs ZShkc2kpOworCQltdGtfZHNpX3Jlc2V0X2VuZ2luZShkc2kpOworCX0KK30KKworc3RhdGljIHMz MiBtdGtfZHNpX3dhaXRfZm9yX2lycV9kb25lKHN0cnVjdCBtdGtfZHNpICpkc2ksIHUzMiBpcnFf ZmxhZywKKwkJCQkgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0KQoreworCXMzMiByZXQgPSAwOwor CXVuc2lnbmVkIGxvbmcgamlmZmllcyA9IG1zZWNzX3RvX2ppZmZpZXModGltZW91dCk7CisKKwly ZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChkc2ktPmlycV93YWl0X3F1ZXVl LAorCQkJCQkgICAgICAgZHNpLT5pcnFfZGF0YSAmIGlycV9mbGFnLAorCQkJCQkgICAgICAgamlm Zmllcyk7CisJaWYgKHJldCA9PSAwKSB7CisJCWRldl9pbmZvKGRzaS0+ZGV2LCAiV2FpdCBEU0kg SVJRKDB4JTA4eCkgVGltZW91dFxuIiwgaXJxX2ZsYWcpOworCisJCW10a19kc2lfZW5hYmxlKGRz aSk7CisJCW10a19kc2lfcmVzZXRfZW5naW5lKGRzaSk7CisJfQorCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIHUzMiBtdGtfZHNpX3JlY3ZfY250KHU4IHR5cGUsIHU4ICpyZWFkX2RhdGEpCit7 CisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBNSVBJX0RTSV9SWF9HRU5FUklDX1NIT1JUX1JFQURf UkVTUE9OU0VfMUJZVEU6CisJY2FzZSBNSVBJX0RTSV9SWF9EQ1NfU0hPUlRfUkVBRF9SRVNQT05T RV8xQllURToKKwkJcmV0dXJuIDE7CisJY2FzZSBNSVBJX0RTSV9SWF9HRU5FUklDX1NIT1JUX1JF QURfUkVTUE9OU0VfMkJZVEU6CisJY2FzZSBNSVBJX0RTSV9SWF9EQ1NfU0hPUlRfUkVBRF9SRVNQ T05TRV8yQllURToKKwkJcmV0dXJuIDI7CisJY2FzZSBNSVBJX0RTSV9SWF9HRU5FUklDX0xPTkdf UkVBRF9SRVNQT05TRToKKwljYXNlIE1JUElfRFNJX1JYX0RDU19MT05HX1JFQURfUkVTUE9OU0U6 CisJCXJldHVybiByZWFkX2RhdGFbMV0gKyByZWFkX2RhdGFbMl0gKiAxNjsKKwljYXNlIE1JUElf RFNJX1JYX0FDS05PV0xFREdFX0FORF9FUlJPUl9SRVBPUlQ6CisJCURSTV9JTkZPKCJ0eXBlIGlz IDB4MDIsIHRyeSBhZ2FpblxuIik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURSTV9JTkZPKCJ0 eXBlKDB4JXgpIGNhbm5vdCBiZSBub24tcmVjb2duaXRlXG4iLCB0eXBlKTsKKwkJYnJlYWs7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kc2lfY21kcShzdHJ1Y3QgbXRr X2RzaSAqZHNpLCBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpCit7CisJY29uc3QgY2hh ciAqdHhfYnVmID0gbXNnLT50eF9idWY7CisJdTggY29uZmlnLCBjbWRxX3NpemUsIGNtZHFfb2Zm LCB0eXBlID0gbXNnLT50eXBlOworCXUzMiByZWdfdmFsLCBjbWRxX21hc2ssIGk7CisKKwlpZiAo TVRLX0RTSV9IT1NUX0lTX1JFQUQodHlwZSkpCisJCWNvbmZpZyA9IEJUQTsKKwllbHNlCisJCWNv bmZpZyA9IChtc2ctPnR4X2xlbiA+IDIpID8gTE9OR19QQUNLRVQgOiBTSE9SVF9QQUNLRVQ7CisK KwlpZiAobXNnLT50eF9sZW4gPiAyKSB7CisJCWNtZHFfc2l6ZSA9IDEgKyAobXNnLT50eF9sZW4g KyAzKSAvIDQ7CisJCWNtZHFfb2ZmID0gNDsKKwkJY21kcV9tYXNrID0gQ09ORklHIHwgREFUQV9J RCB8IERBVEFfMCB8IERBVEFfMTsKKwkJcmVnX3ZhbCA9IChtc2ctPnR4X2xlbiA8PCAxNikgfCAo dHlwZSA8PCA4KSB8IGNvbmZpZzsKKwl9IGVsc2UgeworCQljbWRxX3NpemUgPSAxOworCQljbWRx X29mZiA9IDI7CisJCWNtZHFfbWFzayA9IENPTkZJRyB8IERBVEFfSUQ7CisJCXJlZ192YWwgPSAo dHlwZSA8PCA4KSB8IGNvbmZpZzsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbXNnLT50eF9sZW47 IGkrKykKKwkJd3JpdGViKHR4X2J1ZltpXSwgZHNpLT5yZWdzICsgRFNJX0NNRFEwICsgY21kcV9v ZmYgKyBpKTsKKworCW10a19kc2lfbWFzayhkc2ksIERTSV9DTURRMCwgY21kcV9tYXNrLCByZWdf dmFsKTsKKwltdGtfZHNpX21hc2soZHNpLCBEU0lfQ01EUV9TSVpFLCBDTURRX1NJWkUsIGNtZHFf c2l6ZSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IG10a19kc2lfaG9zdF9zZW5kX2NtZChzdHJ1Y3Qg bXRrX2RzaSAqZHNpLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnLCB1 OCBmbGFnKQoreworCW10a19kc2lfd2FpdF9mb3JfaWRsZShkc2kpOworCW10a19kc2lfaXJxX2Rh dGFfY2xlYXIoZHNpLCBmbGFnKTsKKwltdGtfZHNpX2NtZHEoZHNpLCBtc2cpOworCW10a19kc2lf c3RhcnQoZHNpKTsKKworCWlmICghbXRrX2RzaV93YWl0X2Zvcl9pcnFfZG9uZShkc2ksIGZsYWcs IDIwMDApKQorCQlyZXR1cm4gLTE7CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKworc3RhdGljIHNz aXplX3QgbXRrX2RzaV9ob3N0X3RyYW5zZmVyKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAor CQkJCSAgICAgY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQoreworCXN0cnVjdCBtdGtf ZHNpICpkc2kgPSBob3N0X3RvX2RzaShob3N0KTsKKwl1MzIgcmVjdl9jbnQsIGk7CisJdTggcmVh ZF9kYXRhWzE2XTsKKwl2b2lkICpzcmNfYWRkcjsKKwl1OCBpcnFfZmxhZyA9IENNRF9ET05FX0lO VF9GTEFHOworCisJaWYgKHJlYWRsKGRzaS0+cmVncyArIERTSV9NT0RFX0NUUkwpICYgTU9ERSkg eworCQlkZXZfaW5mbyhkc2ktPmRldiwgImRzaSBlbmdpbmUgaXMgbm90IGNvbW1hbmQgbW9kZVxu Iik7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAoTVRLX0RTSV9IT1NUX0lTX1JFQUQobXNnLT50 eXBlKSkKKwkJaXJxX2ZsYWcgfD0gTFBSWF9SRF9SRFlfSU5UX0ZMQUc7CisKKwlpZiAobXRrX2Rz aV9ob3N0X3NlbmRfY21kKGRzaSwgbXNnLCBpcnFfZmxhZykgPCAwKQorCQlyZXR1cm4gLTE7CisK KwlpZiAoIU1US19EU0lfSE9TVF9JU19SRUFEKG1zZy0+dHlwZSkpCisJCXJldHVybiAwOworCisJ aWYgKCFtc2ctPnJ4X2J1ZikgeworCQlkZXZfaW5mbyhkc2ktPmRldiwgImRzaSByZWNlaXZlIGJ1 ZmZlciBzaXplIG1heSBiZSBOVUxMXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWZvciAoaSA9 IDA7IGkgPCAxNjsgaSsrKQorCQkqKHJlYWRfZGF0YSArIGkpID0gcmVhZGIoZHNpLT5yZWdzICsg RFNJX1JYX0RBVEEwICsgaSk7CisKKwlyZWN2X2NudCA9IG10a19kc2lfcmVjdl9jbnQocmVhZF9k YXRhWzBdLCByZWFkX2RhdGEpOworCisJaWYgKHJlY3ZfY250ID4gMikKKwkJc3JjX2FkZHIgPSAm cmVhZF9kYXRhWzRdOworCWVsc2UKKwkJc3JjX2FkZHIgPSAmcmVhZF9kYXRhWzFdOworCisJaWYg KHJlY3ZfY250ID4gMTApCisJCXJlY3ZfY250ID0gMTA7CisKKwlpZiAocmVjdl9jbnQgPiBtc2ct PnJ4X2xlbikKKwkJcmVjdl9jbnQgPSBtc2ctPnJ4X2xlbjsKKworCWlmIChyZWN2X2NudCkKKwkJ bWVtY3B5KG1zZy0+cnhfYnVmLCBzcmNfYWRkciwgcmVjdl9jbnQpOworCisJZGV2X2luZm8oZHNp LT5kZXYsICJkc2kgZ2V0ICVkIGJ5dGUgZGF0YSBmcm9tIHRoZSBwYW5lbCBhZGRyZXNzKDB4JXgp XG4iLAorCQkgcmVjdl9jbnQsICooKHU4ICopKG1zZy0+dHhfYnVmKSkpOworCisJcmV0dXJuIHJl Y3ZfY250OworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3BzIG10a19k c2lfb3BzID0gewogCS5hdHRhY2ggPSBtdGtfZHNpX2hvc3RfYXR0YWNoLAogCS5kZXRhY2ggPSBt dGtfZHNpX2hvc3RfZGV0YWNoLAorCS50cmFuc2ZlciA9IG10a19kc2lfaG9zdF90cmFuc2ZlciwK IH07CiAKIHN0YXRpYyBpbnQgbXRrX2RzaV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=