From mboxrd@z Thu Jan 1 00:00:00 1970 From: YT Shen Subject: [PATCH v12 09/12] drm/mediatek: add dsi transfer function Date: Mon, 23 Jan 2017 19:05:22 +0800 Message-ID: <1485169525-22163-10-git-send-email-yt.shen@mediatek.com> References: <1485169525-22163-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: <1485169525-22163-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 , CK Hu Cc: Mark Rutland , devicetree@vger.kernel.org, srv_heupstream@mediatek.com, emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Rob Herring , linux-mediatek@lists.infradead.org, Matthias Brugger , yingjoe.chen@mediatek.com, shaoming chen , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org RnJvbTogc2hhb21pbmcgY2hlbiA8c2hhb21pbmcuY2hlbkBtZWRpYXRlay5jb20+CgphZGQgZHNp IHJlYWQvd3JpdGUgY29tbWFuZHMgZm9yIHRyYW5zZmVyIGZ1bmN0aW9uCgpTaWduZWQtb2ZmLWJ5 OiBzaGFvbWluZyBjaGVuIDxzaGFvbWluZy5jaGVuQG1lZGlhdGVrLmNvbT4KQWNrZWQtYnk6IENL IEh1IDxjay5odUBtZWRpYXRlay5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kc2kuYyB8IDE2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZp bGUgY2hhbmdlZCwgMTY2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHNpLmMKaW5kZXggNDc0ODYxYS4uYjNjN2ZkOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kc2kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2RzaS5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8bGludXgvb2ZfZ3Jh cGguaD4KICNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+CiAjaW5jbHVkZSA8 dmlkZW8vdmlkZW9tb2RlLmg+CiAKICNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCkBAIC04 MCw4ICs4MSwxNiBAQAogI2RlZmluZSBEU0lfSEJQX1dDCQkweDU0CiAjZGVmaW5lIERTSV9IRlBf V0MJCTB4NTgKIAorI2RlZmluZSBEU0lfQ01EUV9TSVpFCQkweDYwCisjZGVmaW5lIENNRFFfU0la RQkJCTB4M2YKKwogI2RlZmluZSBEU0lfSFNUWF9DS0xfV0MJCTB4NjQKIAorI2RlZmluZSBEU0lf UlhfREFUQTAJCTB4NzQKKyNkZWZpbmUgRFNJX1JYX0RBVEExCQkweDc4CisjZGVmaW5lIERTSV9S WF9EQVRBMgkJMHg3YworI2RlZmluZSBEU0lfUlhfREFUQTMJCTB4ODAKKwogI2RlZmluZSBEU0lf UkFDSwkJMHg4NAogI2RlZmluZSBSQUNLCQkJCUJJVCgwKQogCkBAIC0xMTcsNiArMTI2LDE1IEBA CiAjZGVmaW5lIENMS19IU19QT1NUCQkJKDB4ZmYgPDwgOCkKICNkZWZpbmUgQ0xLX0hTX0VYSVQJ CQkoMHhmZiA8PCAxNikKIAorI2RlZmluZSBEU0lfQ01EUTAJCTB4MTgwCisjZGVmaW5lIENPTkZJ RwkJCQkoMHhmZiA8PCAwKQorI2RlZmluZSBTSE9SVF9QQUNLRVQJCQkwCisjZGVmaW5lIExPTkdf UEFDS0VUCQkJMgorI2RlZmluZSBCVEEJCQkJQklUKDIpCisjZGVmaW5lIERBVEFfSUQJCQkJKDB4 ZmYgPDwgOCkKKyNkZWZpbmUgREFUQV8wCQkJCSgweGZmIDw8IDE2KQorI2RlZmluZSBEQVRBXzEJ CQkJKDB4ZmYgPDwgMjQpCisKICNkZWZpbmUgVF9MUFgJCTUKICNkZWZpbmUgVF9IU19QUkVQCTYK ICNkZWZpbmUgVF9IU19UUkFJTAk4CkBAIC0xMjUsNiArMTQzLDEyIEBACiAKICNkZWZpbmUgTlNf VE9fQ1lDTEUobiwgYykgICAgKChuKSAvIChjKSArICgoKG4pICUgKGMpKSA/IDEgOiAwKSkKIAor I2RlZmluZSBNVEtfRFNJX0hPU1RfSVNfUkVBRCh0eXBlKSBcCisJKCh0eXBlID09IE1JUElfRFNJ X0dFTkVSSUNfUkVBRF9SRVFVRVNUXzBfUEFSQU0pIHx8IFwKKwkodHlwZSA9PSBNSVBJX0RTSV9H RU5FUklDX1JFQURfUkVRVUVTVF8xX1BBUkFNKSB8fCBcCisJKHR5cGUgPT0gTUlQSV9EU0lfR0VO RVJJQ19SRUFEX1JFUVVFU1RfMl9QQVJBTSkgfHwgXAorCSh0eXBlID09IE1JUElfRFNJX0RDU19S RUFEKSkKKwogc3RydWN0IHBoeTsKIAogc3RydWN0IG10a19kc2kgewpAQCAtNDk3LDEyICs1MjEs MTIgQEAgc3RhdGljIHZvaWQgbXRrX2RzaV9pcnFfZGF0YV9zZXQoc3RydWN0IG10a19kc2kgKmRz aSwgdTMyIGlycV9iaXQpCiAJZHNpLT5pcnFfZGF0YSB8PSBpcnFfYml0OwogfQogCi1zdGF0aWMg X19tYXliZV91bnVzZWQgdm9pZCBtdGtfZHNpX2lycV9kYXRhX2NsZWFyKHN0cnVjdCBtdGtfZHNp ICpkc2ksIHUzMiBpcnFfYml0KQorc3RhdGljIHZvaWQgbXRrX2RzaV9pcnFfZGF0YV9jbGVhcihz dHJ1Y3QgbXRrX2RzaSAqZHNpLCB1MzIgaXJxX2JpdCkKIHsKIAlkc2ktPmlycV9kYXRhICY9IH5p cnFfYml0OwogfQogCi1zdGF0aWMgX19tYXliZV91bnVzZWQgczMyIG10a19kc2lfd2FpdF9mb3Jf aXJxX2RvbmUoc3RydWN0IG10a19kc2kgKmRzaSwgdTMyIGlycV9mbGFnLAorc3RhdGljIHMzMiBt dGtfZHNpX3dhaXRfZm9yX2lycV9kb25lKHN0cnVjdCBtdGtfZHNpICpkc2ksIHUzMiBpcnFfZmxh ZywKIAkJCQkgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0KQogewogCXMzMiByZXQgPSAwOwpAQCAt ODMyLDkgKzg1NiwxNDkgQEAgc3RhdGljIGludCBtdGtfZHNpX2hvc3RfZGV0YWNoKHN0cnVjdCBt aXBpX2RzaV9ob3N0ICpob3N0LAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBtdGtfZHNp X3dhaXRfZm9yX2lkbGUoc3RydWN0IG10a19kc2kgKmRzaSkKK3sKKwl1MzIgdGltZW91dF9tcyA9 IDUwMDAwMDsgLyogdG90YWwgMXMgfiAycyB0aW1lb3V0ICovCisKKwl3aGlsZSAodGltZW91dF9t cy0tKSB7CisJCWlmICghKHJlYWRsKGRzaS0+cmVncyArIERTSV9JTlRTVEEpICYgRFNJX0JVU1kp KQorCQkJYnJlYWs7CisKKwkJdXNsZWVwX3JhbmdlKDIsIDQpOworCX0KKworCWlmICh0aW1lb3V0 X21zID09IDApIHsKKwkJRFJNX1dBUk4oInBvbGxpbmcgZHNpIHdhaXQgbm90IGJ1c3kgdGltZW91 dCFcbiIpOworCisJCW10a19kc2lfZW5hYmxlKGRzaSk7CisJCW10a19kc2lfcmVzZXRfZW5naW5l KGRzaSk7CisJfQorfQorCitzdGF0aWMgdTMyIG10a19kc2lfcmVjdl9jbnQodTggdHlwZSwgdTgg KnJlYWRfZGF0YSkKK3sKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIE1JUElfRFNJX1JYX0dFTkVS SUNfU0hPUlRfUkVBRF9SRVNQT05TRV8xQllURToKKwljYXNlIE1JUElfRFNJX1JYX0RDU19TSE9S VF9SRUFEX1JFU1BPTlNFXzFCWVRFOgorCQlyZXR1cm4gMTsKKwljYXNlIE1JUElfRFNJX1JYX0dF TkVSSUNfU0hPUlRfUkVBRF9SRVNQT05TRV8yQllURToKKwljYXNlIE1JUElfRFNJX1JYX0RDU19T SE9SVF9SRUFEX1JFU1BPTlNFXzJCWVRFOgorCQlyZXR1cm4gMjsKKwljYXNlIE1JUElfRFNJX1JY X0dFTkVSSUNfTE9OR19SRUFEX1JFU1BPTlNFOgorCWNhc2UgTUlQSV9EU0lfUlhfRENTX0xPTkdf UkVBRF9SRVNQT05TRToKKwkJcmV0dXJuIHJlYWRfZGF0YVsxXSArIHJlYWRfZGF0YVsyXSAqIDE2 OworCWNhc2UgTUlQSV9EU0lfUlhfQUNLTk9XTEVER0VfQU5EX0VSUk9SX1JFUE9SVDoKKwkJRFJN X0lORk8oInR5cGUgaXMgMHgwMiwgdHJ5IGFnYWluXG4iKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJRFJNX0lORk8oInR5cGUoMHgleCkgY2Fubm90IGJlIG5vbi1yZWNvZ25pdGVcbiIsIHR5cGUp OworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbXRrX2RzaV9j bWRxKHN0cnVjdCBtdGtfZHNpICpkc2ksIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9tc2cgKm1zZykK K3sKKwljb25zdCBjaGFyICp0eF9idWYgPSBtc2ctPnR4X2J1ZjsKKwl1OCBjb25maWcsIGNtZHFf c2l6ZSwgY21kcV9vZmYsIHR5cGUgPSBtc2ctPnR5cGU7CisJdTMyIHJlZ192YWwsIGNtZHFfbWFz aywgaTsKKworCWlmIChNVEtfRFNJX0hPU1RfSVNfUkVBRCh0eXBlKSkKKwkJY29uZmlnID0gQlRB OworCWVsc2UKKwkJY29uZmlnID0gKG1zZy0+dHhfbGVuID4gMikgPyBMT05HX1BBQ0tFVCA6IFNI T1JUX1BBQ0tFVDsKKworCWlmIChtc2ctPnR4X2xlbiA+IDIpIHsKKwkJY21kcV9zaXplID0gMSAr IChtc2ctPnR4X2xlbiArIDMpIC8gNDsKKwkJY21kcV9vZmYgPSA0OworCQljbWRxX21hc2sgPSBD T05GSUcgfCBEQVRBX0lEIHwgREFUQV8wIHwgREFUQV8xOworCQlyZWdfdmFsID0gKG1zZy0+dHhf bGVuIDw8IDE2KSB8ICh0eXBlIDw8IDgpIHwgY29uZmlnOworCX0gZWxzZSB7CisJCWNtZHFfc2l6 ZSA9IDE7CisJCWNtZHFfb2ZmID0gMjsKKwkJY21kcV9tYXNrID0gQ09ORklHIHwgREFUQV9JRDsK KwkJcmVnX3ZhbCA9ICh0eXBlIDw8IDgpIHwgY29uZmlnOworCX0KKworCWZvciAoaSA9IDA7IGkg PCBtc2ctPnR4X2xlbjsgaSsrKQorCQl3cml0ZWIodHhfYnVmW2ldLCBkc2ktPnJlZ3MgKyBEU0lf Q01EUTAgKyBjbWRxX29mZiArIGkpOworCisJbXRrX2RzaV9tYXNrKGRzaSwgRFNJX0NNRFEwLCBj bWRxX21hc2ssIHJlZ192YWwpOworCW10a19kc2lfbWFzayhkc2ksIERTSV9DTURRX1NJWkUsIENN RFFfU0laRSwgY21kcV9zaXplKTsKK30KKworc3RhdGljIHNzaXplX3QgbXRrX2RzaV9ob3N0X3Nl bmRfY21kKHN0cnVjdCBtdGtfZHNpICpkc2ksCisJCQkJICAgICBjb25zdCBzdHJ1Y3QgbWlwaV9k c2lfbXNnICptc2csIHU4IGZsYWcpCit7CisJbXRrX2RzaV93YWl0X2Zvcl9pZGxlKGRzaSk7CisJ bXRrX2RzaV9pcnFfZGF0YV9jbGVhcihkc2ksIGZsYWcpOworCW10a19kc2lfY21kcShkc2ksIG1z Zyk7CisJbXRrX2RzaV9zdGFydChkc2kpOworCisJaWYgKCFtdGtfZHNpX3dhaXRfZm9yX2lycV9k b25lKGRzaSwgZmxhZywgMjAwMCkpCisJCXJldHVybiAtRVRJTUU7CisJZWxzZQorCQlyZXR1cm4g MDsKK30KKworc3RhdGljIHNzaXplX3QgbXRrX2RzaV9ob3N0X3RyYW5zZmVyKHN0cnVjdCBtaXBp X2RzaV9ob3N0ICpob3N0LAorCQkJCSAgICAgY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNn KQoreworCXN0cnVjdCBtdGtfZHNpICpkc2kgPSBob3N0X3RvX2RzaShob3N0KTsKKwl1MzIgcmVj dl9jbnQsIGk7CisJdTggcmVhZF9kYXRhWzE2XTsKKwl2b2lkICpzcmNfYWRkcjsKKwl1OCBpcnFf ZmxhZyA9IENNRF9ET05FX0lOVF9GTEFHOworCisJaWYgKHJlYWRsKGRzaS0+cmVncyArIERTSV9N T0RFX0NUUkwpICYgTU9ERSkgeworCQlEUk1fRVJST1IoImRzaSBlbmdpbmUgaXMgbm90IGNvbW1h bmQgbW9kZVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChNVEtfRFNJX0hPU1Rf SVNfUkVBRChtc2ctPnR5cGUpKQorCQlpcnFfZmxhZyB8PSBMUFJYX1JEX1JEWV9JTlRfRkxBRzsK KworCWlmIChtdGtfZHNpX2hvc3Rfc2VuZF9jbWQoZHNpLCBtc2csIGlycV9mbGFnKSA8IDApCisJ CXJldHVybiAtRVRJTUU7CisKKwlpZiAoIU1US19EU0lfSE9TVF9JU19SRUFEKG1zZy0+dHlwZSkp CisJCXJldHVybiAwOworCisJaWYgKCFtc2ctPnJ4X2J1ZikgeworCQlEUk1fRVJST1IoImRzaSBy ZWNlaXZlIGJ1ZmZlciBzaXplIG1heSBiZSBOVUxMXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisJCSoocmVhZF9kYXRhICsgaSkgPSByZWFk Yihkc2ktPnJlZ3MgKyBEU0lfUlhfREFUQTAgKyBpKTsKKworCXJlY3ZfY250ID0gbXRrX2RzaV9y ZWN2X2NudChyZWFkX2RhdGFbMF0sIHJlYWRfZGF0YSk7CisKKwlpZiAocmVjdl9jbnQgPiAyKQor CQlzcmNfYWRkciA9ICZyZWFkX2RhdGFbNF07CisJZWxzZQorCQlzcmNfYWRkciA9ICZyZWFkX2Rh dGFbMV07CisKKwlpZiAocmVjdl9jbnQgPiAxMCkKKwkJcmVjdl9jbnQgPSAxMDsKKworCWlmIChy ZWN2X2NudCA+IG1zZy0+cnhfbGVuKQorCQlyZWN2X2NudCA9IG1zZy0+cnhfbGVuOworCisJaWYg KHJlY3ZfY250KQorCQltZW1jcHkobXNnLT5yeF9idWYsIHNyY19hZGRyLCByZWN2X2NudCk7CisK KwlEUk1fSU5GTygiZHNpIGdldCAlZCBieXRlIGRhdGEgZnJvbSB0aGUgcGFuZWwgYWRkcmVzcygw eCV4KVxuIiwKKwkJIHJlY3ZfY250LCAqKCh1OCAqKShtc2ctPnR4X2J1ZikpKTsKKworCXJldHVy biByZWN2X2NudDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9ob3N0X29wcyBt dGtfZHNpX29wcyA9IHsKIAkuYXR0YWNoID0gbXRrX2RzaV9ob3N0X2F0dGFjaCwKIAkuZGV0YWNo ID0gbXRrX2RzaV9ob3N0X2RldGFjaCwKKwkudHJhbnNmZXIgPSBtdGtfZHNpX2hvc3RfdHJhbnNm ZXIsCiB9OwogCiBzdGF0aWMgaW50IG10a19kc2lfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKLS0gCjEuOS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK