From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2,3/4] serial: 8250-mtk: add uart DMA support From: Long Cheng Message-Id: <1543999380-7946-4-git-send-email-long.cheng@mediatek.com> Date: Wed, 5 Dec 2018 16:42:59 +0800 To: Vinod Koul , Rob Herring , Mark Rutland Cc: Matthias Brugger , Dan Williams , Greg Kroah-Hartman , Jiri Slaby , Sean Wang , Long Cheng , dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, srv_heupstream@mediatek.com, Yingjoe Chen , YT Shen List-ID: TW9kaWZ5IHVhcnQgcmVnaXN0ZXIgdG8gc3VwcG9ydCBETUEgZnVuY3Rpb24uCgpTaWduZWQtb2Zm LWJ5OiBMb25nIENoZW5nIDxsb25nLmNoZW5nQG1lZGlhdGVrLmNvbT4KLS0tCiBkcml2ZXJzL3R0 eS9zZXJpYWwvODI1MC84MjUwX210ay5jIHwgIDIxMCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAyMDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfbXRrLmMgYi9k cml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX210ay5jCmluZGV4IGRkNWUxY2UuLjFkYTczZTgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfbXRrLmMKKysrIGIvZHJp dmVycy90dHkvc2VyaWFsLzgyNTAvODI1MF9tdGsuYwpAQCAtMTQsNiArMTQsMTAgQEAKICNpbmNs dWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CiAjaW5jbHVkZSA8bGludXgvc2VyaWFsXzgyNTAuaD4K ICNpbmNsdWRlIDxsaW51eC9zZXJpYWxfcmVnLmg+CisjaW5jbHVkZSA8bGludXgvY29uc29sZS5o PgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdHR5Lmg+ CisjaW5jbHVkZSA8bGludXgvdHR5X2ZsaXAuaD4KIAogI2luY2x1ZGUgIjgyNTAuaCIKIApAQCAt MjIsMTIgKzI2LDE3MiBAQAogI2RlZmluZSBVQVJUX01US19TQU1QTEVfUE9JTlQJMHgwYgkvKiBT YW1wbGUgcG9pbnQgcmVnaXN0ZXIgKi8KICNkZWZpbmUgTVRLX1VBUlRfUkFURV9GSVgJMHgwZAkv KiBVQVJUIFJhdGUgRml4IFJlZ2lzdGVyICovCiAKKyNkZWZpbmUgTVRLX1VBUlRfRE1BX0VOCQkw eDEzCS8qIERNQSBFbmFibGUgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVRLX1VBUlRfRE1BX0VOX1RY CTB4MgorI2RlZmluZSBNVEtfVUFSVF9ETUFfRU5fUlgJMHg1CisKKyNkZWZpbmUgTVRLX1VBUlRf VFhfU0laRQlVQVJUX1hNSVRfU0laRQorI2RlZmluZSBNVEtfVUFSVF9SWF9TSVpFCTB4ODAwMAor I2RlZmluZSBNVEtfVUFSVF9UWF9UUklHR0VSCTEKKyNkZWZpbmUgTVRLX1VBUlRfUlhfVFJJR0dF UglNVEtfVUFSVF9SWF9TSVpFCisKKyNpZmRlZiBDT05GSUdfU0VSSUFMXzgyNTBfRE1BCitlbnVt IGRtYV9yeF9zdGF0dXMgeworCURNQV9SWF9TVEFSVCA9IDAsCisJRE1BX1JYX1JVTk5JTkcgPSAx LAorCURNQV9SWF9TSFVURE9XTiA9IDIsCit9OworI2VuZGlmCisKIHN0cnVjdCBtdGs4MjUwX2Rh dGEgewogCWludAkJCWxpbmU7CisJdW5zaWduZWQgaW50CQlyeF9wb3M7CiAJc3RydWN0IGNsawkJ KnVhcnRfY2xrOwogCXN0cnVjdCBjbGsJCSpidXNfY2xrOworCXN0cnVjdCB1YXJ0XzgyNTBfZG1h CSpkbWE7CisjaWZkZWYgQ09ORklHX1NFUklBTF84MjUwX0RNQQorCWVudW0gZG1hX3J4X3N0YXR1 cwlyeF9zdGF0dXM7CisjZW5kaWYKIH07CiAKKyNpZmRlZiBDT05GSUdfU0VSSUFMXzgyNTBfRE1B CitzdGF0aWMgdm9pZCBtdGs4MjUwX3J4X2RtYShzdHJ1Y3QgdWFydF84MjUwX3BvcnQgKnVwKTsK Kworc3RhdGljIHZvaWQgbXRrODI1MF9kbWFfcnhfY29tcGxldGUodm9pZCAqcGFyYW0pCit7CisJ c3RydWN0IHVhcnRfODI1MF9wb3J0ICp1cCA9IHBhcmFtOworCXN0cnVjdCB1YXJ0XzgyNTBfZG1h ICpkbWEgPSB1cC0+ZG1hOworCXN0cnVjdCBtdGs4MjUwX2RhdGEgKmRhdGEgPSB1cC0+cG9ydC5w cml2YXRlX2RhdGE7CisJc3RydWN0IHR0eV9wb3J0ICp0dHlfcG9ydCA9ICZ1cC0+cG9ydC5zdGF0 ZS0+cG9ydDsKKwlzdHJ1Y3QgZG1hX3R4X3N0YXRlIHN0YXRlOworCXVuc2lnbmVkIGNoYXIgKnB0 cjsKKwlpbnQgY29waWVkOworCisJZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoZG1hLT5yeGNoYW4t PmRldmljZS0+ZGV2LCBkbWEtPnJ4X2FkZHIsCisJCQkJZG1hLT5yeF9zaXplLCBETUFfRlJPTV9E RVZJQ0UpOworCisJZG1hZW5naW5lX3R4X3N0YXR1cyhkbWEtPnJ4Y2hhbiwgZG1hLT5yeF9jb29r aWUsICZzdGF0ZSk7CisKKwlpZiAoZGF0YS0+cnhfc3RhdHVzID09IERNQV9SWF9TSFVURE9XTikK KwkJcmV0dXJuOworCisJaWYgKChkYXRhLT5yeF9wb3MgKyBzdGF0ZS5yZXNpZHVlKSA8PSBkbWEt PnJ4X3NpemUpIHsKKwkJcHRyID0gKHVuc2lnbmVkIGNoYXIgKikoZGF0YS0+cnhfcG9zICsgZG1h LT5yeF9idWYpOworCQljb3BpZWQgPSB0dHlfaW5zZXJ0X2ZsaXBfc3RyaW5nKHR0eV9wb3J0LCBw dHIsIHN0YXRlLnJlc2lkdWUpOworCX0gZWxzZSB7CisJCXB0ciA9ICh1bnNpZ25lZCBjaGFyICop KGRhdGEtPnJ4X3BvcyArIGRtYS0+cnhfYnVmKTsKKwkJY29waWVkID0gdHR5X2luc2VydF9mbGlw X3N0cmluZyh0dHlfcG9ydCwgcHRyLAorCQkJCQkJZG1hLT5yeF9zaXplIC0gZGF0YS0+cnhfcG9z KTsKKwkJcHRyID0gKHVuc2lnbmVkIGNoYXIgKikoZG1hLT5yeF9idWYpOworCQljb3BpZWQgKz0g dHR5X2luc2VydF9mbGlwX3N0cmluZyh0dHlfcG9ydCwgcHRyLAorCQkJCWRhdGEtPnJ4X3BvcyAr IHN0YXRlLnJlc2lkdWUgLSBkbWEtPnJ4X3NpemUpOworCX0KKwl1cC0+cG9ydC5pY291bnQucngg Kz0gY29waWVkOworCisJdHR5X2ZsaXBfYnVmZmVyX3B1c2godHR5X3BvcnQpOworCisJbXRrODI1 MF9yeF9kbWEodXApOworfQorCitzdGF0aWMgdm9pZCBtdGs4MjUwX3J4X2RtYShzdHJ1Y3QgdWFy dF84MjUwX3BvcnQgKnVwKQoreworCXN0cnVjdCB1YXJ0XzgyNTBfZG1hICpkbWEgPSB1cC0+ZG1h OworCXN0cnVjdCBtdGs4MjUwX2RhdGEgKmRhdGEgPSB1cC0+cG9ydC5wcml2YXRlX2RhdGE7CisJ c3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yCSpkZXNjOworCXN0cnVjdCBkbWFfdHhfc3Rh dGUJIHN0YXRlOworCisJZGVzYyA9IGRtYWVuZ2luZV9wcmVwX3NsYXZlX3NpbmdsZShkbWEtPnJ4 Y2hhbiwgZG1hLT5yeF9hZGRyLAorCQkJCQkgICBkbWEtPnJ4X3NpemUsIERNQV9ERVZfVE9fTUVN LAorCQkJCQkgICBETUFfUFJFUF9JTlRFUlJVUFQgfCBETUFfQ1RSTF9BQ0spOworCWlmICghZGVz YykgeworCQlwcl9lcnIoImZhaWxlZCB0byBwcmVwYXJlIHJ4IHNsYXZlIHNpbmdsZVxuIik7CisJ CXJldHVybjsKKwl9CisKKwlkZXNjLT5jYWxsYmFjayA9IG10azgyNTBfZG1hX3J4X2NvbXBsZXRl OworCWRlc2MtPmNhbGxiYWNrX3BhcmFtID0gdXA7CisKKwlkbWEtPnJ4X2Nvb2tpZSA9IGRtYWVu Z2luZV9zdWJtaXQoZGVzYyk7CisKKwlkbWFlbmdpbmVfdHhfc3RhdHVzKGRtYS0+cnhjaGFuLCBk bWEtPnJ4X2Nvb2tpZSwgJnN0YXRlKTsKKwlkYXRhLT5yeF9wb3MgPSBzdGF0ZS5yZXNpZHVlOwor CisJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZG1hLT5yeGNoYW4tPmRldmljZS0+ZGV2LCBk bWEtPnJ4X2FkZHIsCisJCQkJICAgZG1hLT5yeF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpOworCisJ ZG1hX2FzeW5jX2lzc3VlX3BlbmRpbmcoZG1hLT5yeGNoYW4pOworfQorCitzdGF0aWMgdm9pZCBt dGs4MjUwX2RtYV9lbmFibGUoc3RydWN0IHVhcnRfODI1MF9wb3J0ICp1cCkKK3sKKwlzdHJ1Y3Qg dWFydF84MjUwX2RtYSAqZG1hID0gdXAtPmRtYTsKKwlzdHJ1Y3QgbXRrODI1MF9kYXRhICpkYXRh ID0gdXAtPnBvcnQucHJpdmF0ZV9kYXRhOworCWludCBsY3IgPSBzZXJpYWxfaW4odXAsIFVBUlRf TENSKTsKKworCWlmIChkYXRhLT5yeF9zdGF0dXMgIT0gRE1BX1JYX1NUQVJUKQorCQlyZXR1cm47 CisKKwlkbWEtPnJ4Y29uZi5kaXJlY3Rpb24JCT0gRE1BX0RFVl9UT19NRU07CisJZG1hLT5yeGNv bmYuc3JjX2FkZHJfd2lkdGgJPSBkbWEtPnJ4X3NpemUgLyAxMDI0OworCWRtYS0+cnhjb25mLnNy Y19hZGRyCQk9IGRtYS0+cnhfYWRkcjsKKworCWRtYS0+dHhjb25mLmRpcmVjdGlvbgkJPSBETUFf TUVNX1RPX0RFVjsKKwlkbWEtPnR4Y29uZi5kc3RfYWRkcl93aWR0aAk9IE1US19VQVJUX1RYX1NJ WkUgLyAxMDI0OworCWRtYS0+dHhjb25mLmRzdF9hZGRyCQk9IGRtYS0+dHhfYWRkcjsKKworCXNl cmlhbF9vdXQodXAsIFVBUlRfRkNSLCBVQVJUX0ZDUl9FTkFCTEVfRklGTyB8IFVBUlRfRkNSX0NM RUFSX1JDVlIgfAorCQlVQVJUX0ZDUl9DTEVBUl9YTUlUKTsKKwlzZXJpYWxfb3V0KHVwLCBNVEtf VUFSVF9ETUFfRU4sCisJCSAgIE1US19VQVJUX0RNQV9FTl9SWCB8IE1US19VQVJUX0RNQV9FTl9U WCk7CisKKwlzZXJpYWxfb3V0KHVwLCBVQVJUX0xDUiwgVUFSVF9MQ1JfQ09ORl9NT0RFX0IpOwor CXNlcmlhbF9vdXQodXAsIFVBUlRfRUZSLCBVQVJUX0VGUl9FQ0IpOworCXNlcmlhbF9vdXQodXAs IFVBUlRfTENSLCBsY3IpOworCisJaWYgKGRtYWVuZ2luZV9zbGF2ZV9jb25maWcoZG1hLT5yeGNo YW4sICZkbWEtPnJ4Y29uZikgIT0gMCkKKwkJcHJfZXJyKCJmYWlsZWQgdG8gY29uZmlndXJlIHJ4 IGRtYSBjaGFubmVsXG4iKTsKKwlpZiAoZG1hZW5naW5lX3NsYXZlX2NvbmZpZyhkbWEtPnR4Y2hh biwgJmRtYS0+dHhjb25mKSAhPSAwKQorCQlwcl9lcnIoImZhaWxlZCB0byBjb25maWd1cmUgdHgg ZG1hIGNoYW5uZWxcbiIpOworCisJZGF0YS0+cnhfc3RhdHVzID0gRE1BX1JYX1JVTk5JTkc7CisJ ZGF0YS0+cnhfcG9zID0gMDsKKwltdGs4MjUwX3J4X2RtYSh1cCk7Cit9CisjZW5kaWYKKworc3Rh dGljIGludCBtdGs4MjUwX3N0YXJ0dXAoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKyNpZmRl ZiBDT05GSUdfU0VSSUFMXzgyNTBfRE1BCisJc3RydWN0IHVhcnRfODI1MF9wb3J0ICp1cCA9IHVw X3RvX3U4MjUwcChwb3J0KTsKKwlzdHJ1Y3QgbXRrODI1MF9kYXRhICpkYXRhID0gcG9ydC0+cHJp dmF0ZV9kYXRhOworCisJLyogZGlzYWJsZSBETUEgZm9yIGNvbnNvbGUgKi8KKwlpZiAodWFydF9j b25zb2xlKHBvcnQpKQorCQl1cC0+ZG1hID0gTlVMTDsKKworCWlmICh1cC0+ZG1hKSB7CisJCWRh dGEtPnJ4X3N0YXR1cyA9IERNQV9SWF9TVEFSVDsKKwkJdWFydF9jaXJjX2NsZWFyKCZwb3J0LT5z dGF0ZS0+eG1pdCk7CisJfQorI2VuZGlmCisJbWVtc2V0KCZwb3J0LT5pY291bnQsIDAsIHNpemVv Zihwb3J0LT5pY291bnQpKTsKKworCXJldHVybiBzZXJpYWw4MjUwX2RvX3N0YXJ0dXAocG9ydCk7 Cit9CisKK3N0YXRpYyB2b2lkIG10azgyNTBfc2h1dGRvd24oc3RydWN0IHVhcnRfcG9ydCAqcG9y dCkKK3sKKyNpZmRlZiBDT05GSUdfU0VSSUFMXzgyNTBfRE1BCisJc3RydWN0IHVhcnRfODI1MF9w b3J0ICp1cCA9IHVwX3RvX3U4MjUwcChwb3J0KTsKKwlzdHJ1Y3QgbXRrODI1MF9kYXRhICpkYXRh ID0gcG9ydC0+cHJpdmF0ZV9kYXRhOworCisJaWYgKHVwLT5kbWEpCisJCWRhdGEtPnJ4X3N0YXR1 cyA9IERNQV9SWF9TSFVURE9XTjsKKyNlbmRpZgorCisJcmV0dXJuIHNlcmlhbDgyNTBfZG9fc2h1 dGRvd24ocG9ydCk7Cit9CisKIHN0YXRpYyB2b2lkCiBtdGs4MjUwX3NldF90ZXJtaW9zKHN0cnVj dCB1YXJ0X3BvcnQgKnBvcnQsIHN0cnVjdCBrdGVybWlvcyAqdGVybWlvcywKIAkJCXN0cnVjdCBr dGVybWlvcyAqb2xkKQpAQCAtMzYsNiArMjAwLDE3IEBAIHN0cnVjdCBtdGs4MjUwX2RhdGEgewog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5zaWduZWQgaW50IGJhdWQsIHF1b3Q7CiAKKyNpZmRl ZiBDT05GSUdfU0VSSUFMXzgyNTBfRE1BCisJaWYgKHVwLT5kbWEpIHsKKwkJaWYgKHVhcnRfY29u c29sZShwb3J0KSkgeworCQkJZGV2bV9rZnJlZSh1cC0+cG9ydC5kZXYsIHVwLT5kbWEpOworCQkJ dXAtPmRtYSA9IE5VTEw7CisJCX0gZWxzZSB7CisJCQltdGs4MjUwX2RtYV9lbmFibGUodXApOwor CQl9CisJfQorI2VuZGlmCisKIAlzZXJpYWw4MjUwX2RvX3NldF90ZXJtaW9zKHBvcnQsIHRlcm1p b3MsIG9sZCk7CiAKIAkvKgpAQCAtMTQzLDkgKzMxOCwyMCBAQCBzdGF0aWMgaW50IF9fbWF5YmVf dW51c2VkIG10azgyNTBfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCQlwbV9y dW50aW1lX3B1dF9zeW5jX3N1c3BlbmQocG9ydC0+ZGV2KTsKIH0KIAorI2lmZGVmIENPTkZJR19T RVJJQUxfODI1MF9ETUEKK3N0YXRpYyBib29sIG10azgyNTBfZG1hX2ZpbHRlcihzdHJ1Y3QgZG1h X2NoYW4gKmNoYW4sIHZvaWQgKnBhcmFtKQoreworCXJldHVybiBmYWxzZTsKK30KKyNlbmRpZgor CiBzdGF0aWMgaW50IG10azgyNTBfcHJvYmVfb2Yoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwgc3RydWN0IHVhcnRfcG9ydCAqcCwKIAkJCSAgIHN0cnVjdCBtdGs4MjUwX2RhdGEgKmRhdGEp CiB7CisjaWZkZWYgQ09ORklHX1NFUklBTF84MjUwX0RNQQorCWludCBkbWFjbnQ7CisjZW5kaWYK KwogCWRhdGEtPnVhcnRfY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJiYXVkIik7CiAJ aWYgKElTX0VSUihkYXRhLT51YXJ0X2NsaykpIHsKIAkJLyoKQEAgLTE2Miw3ICszNDgsMjMgQEAg c3RhdGljIGludCBtdGs4MjUwX3Byb2JlX29mKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYs IHN0cnVjdCB1YXJ0X3BvcnQgKnAsCiAJfQogCiAJZGF0YS0+YnVzX2NsayA9IGRldm1fY2xrX2dl dCgmcGRldi0+ZGV2LCAiYnVzIik7Ci0JcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhkYXRhLT5idXNf Y2xrKTsKKwlpZiAoSVNfRVJSKGRhdGEtPmJ1c19jbGspKQorCQlyZXR1cm4gUFRSX0VSUihkYXRh LT5idXNfY2xrKTsKKworCWRhdGEtPmRtYSA9IE5VTEw7CisjaWZkZWYgQ09ORklHX1NFUklBTF84 MjUwX0RNQQorCWRtYWNudCA9IG9mX3Byb3BlcnR5X2NvdW50X3N0cmluZ3MocGRldi0+ZGV2Lm9m X25vZGUsICJkbWEtbmFtZXMiKTsKKwlpZiAoZG1hY250ID09IDIpIHsKKwkJZGF0YS0+ZG1hID0g ZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqZGF0YS0+ZG1hKSwKKwkJCQkJIEdGUF9L RVJORUwpOworCQlkYXRhLT5kbWEtPmZuID0gbXRrODI1MF9kbWFfZmlsdGVyOworCQlkYXRhLT5k bWEtPnJ4X3NpemUgPSBNVEtfVUFSVF9SWF9TSVpFOworCQlkYXRhLT5kbWEtPnJ4Y29uZi5zcmNf bWF4YnVyc3QgPSBNVEtfVUFSVF9SWF9UUklHR0VSOworCQlkYXRhLT5kbWEtPnR4Y29uZi5kc3Rf bWF4YnVyc3QgPSBNVEtfVUFSVF9UWF9UUklHR0VSOworCX0KKyNlbmRpZgorCisJcmV0dXJuIDA7 CiB9CiAKIHN0YXRpYyBpbnQgbXRrODI1MF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQpAQCAtMjA0LDggKzQwNiwxNCBAQCBzdGF0aWMgaW50IG10azgyNTBfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAl1YXJ0LnBvcnQuaW90eXBlID0gVVBJT19NRU0zMjsK IAl1YXJ0LnBvcnQucmVnc2hpZnQgPSAyOwogCXVhcnQucG9ydC5wcml2YXRlX2RhdGEgPSBkYXRh OworCXVhcnQucG9ydC5zaHV0ZG93biA9IG10azgyNTBfc2h1dGRvd247CisJdWFydC5wb3J0LnN0 YXJ0dXAgPSBtdGs4MjUwX3N0YXJ0dXA7CiAJdWFydC5wb3J0LnNldF90ZXJtaW9zID0gbXRrODI1 MF9zZXRfdGVybWlvczsKIAl1YXJ0LnBvcnQudWFydGNsayA9IGNsa19nZXRfcmF0ZShkYXRhLT51 YXJ0X2Nsayk7CisjaWZkZWYgQ09ORklHX1NFUklBTF84MjUwX0RNQQorCWlmIChkYXRhLT5kbWEp CisJCXVhcnQuZG1hID0gZGF0YS0+ZG1hOworI2VuZGlmCiAKIAkvKiBEaXNhYmxlIFJhdGUgRml4 IGZ1bmN0aW9uICovCiAJd3JpdGVsKDB4MCwgdWFydC5wb3J0Lm1lbWJhc2UgKwo=