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: [3/4] serial: 8250-mtk: add uart DMA support From: Long Cheng Message-Id: <1537425673-18807-4-git-send-email-long.cheng@mediatek.com> Date: Thu, 20 Sep 2018 14:41:12 +0800 To: Vinod Koul , Rob Herring , Mark Rutland Cc: Matthias Brugger , Dan Williams , Greg Kroah-Hartman , Jiri Slaby , Ed Blake , 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 eS9zZXJpYWwvODI1MC84MjUwX210ay5jIHwgIDIxMSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfbXRrLmMgYi9k cml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX210ay5jCmluZGV4IGRkNWUxY2UuLjlkYTlkYjQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfbXRrLmMKKysrIGIvZHJp dmVycy90dHkvc2VyaWFsLzgyNTAvODI1MF9tdGsuYwpAQCAtMTQsNiArMTQsMTAgQEAKICNpbmNs dWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CiAjaW5jbHVkZSA8bGludXgvc2VyaWFsXzgyNTAuaD4K ICNpbmNsdWRlIDxsaW51eC9zZXJpYWxfcmVnLmg+CisjaW5jbHVkZSA8bGludXgvY29uc29sZS5o PgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdHR5Lmg+ CisjaW5jbHVkZSA8bGludXgvdHR5X2ZsaXAuaD4KIAogI2luY2x1ZGUgIjgyNTAuaCIKIApAQCAt MjIsMTIgKzI2LDE3MyBAQAogI2RlZmluZSBVQVJUX01US19TQU1QTEVfUE9JTlQJMHgwYgkvKiBT 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 aWUsICZzdGF0ZSk7CisJZG1hZW5naW5lX3Rlcm1pbmF0ZV9hbGwoZG1hLT5yeGNoYW4pOworCisJ aWYgKGRhdGEtPnJ4X3N0YXR1cyA9PSBETUFfUlhfU0hVVERPV04pCisJCXJldHVybjsKKworCWlm ICgoZGF0YS0+cnhfcG9zICsgc3RhdGUucmVzaWR1ZSkgPD0gZG1hLT5yeF9zaXplKSB7CisJCXB0 ciA9ICh1bnNpZ25lZCBjaGFyICopKGRhdGEtPnJ4X3BvcyArIGRtYS0+cnhfYnVmKTsKKwkJY29w aWVkID0gdHR5X2luc2VydF9mbGlwX3N0cmluZyh0dHlfcG9ydCwgcHRyLCBzdGF0ZS5yZXNpZHVl KTsKKwl9IGVsc2UgeworCQlwdHIgPSAodW5zaWduZWQgY2hhciAqKShkYXRhLT5yeF9wb3MgKyBk bWEtPnJ4X2J1Zik7CisJCWNvcGllZCA9IHR0eV9pbnNlcnRfZmxpcF9zdHJpbmcodHR5X3BvcnQs IHB0ciwKKwkJCQkJCWRtYS0+cnhfc2l6ZSAtIGRhdGEtPnJ4X3Bvcyk7CisJCXB0ciA9ICh1bnNp Z25lZCBjaGFyICopKGRtYS0+cnhfYnVmKTsKKwkJY29waWVkICs9IHR0eV9pbnNlcnRfZmxpcF9z dHJpbmcodHR5X3BvcnQsIHB0ciwKKwkJCQlkYXRhLT5yeF9wb3MgKyBzdGF0ZS5yZXNpZHVlIC0g ZG1hLT5yeF9zaXplKTsKKwl9CisJdXAtPnBvcnQuaWNvdW50LnJ4ICs9IGNvcGllZDsKKworCXR0 eV9mbGlwX2J1ZmZlcl9wdXNoKHR0eV9wb3J0KTsKKworCW10azgyNTBfcnhfZG1hKHVwKTsKK30K Kworc3RhdGljIHZvaWQgbXRrODI1MF9yeF9kbWEoc3RydWN0IHVhcnRfODI1MF9wb3J0ICp1cCkK K3sKKwlzdHJ1Y3QgdWFydF84MjUwX2RtYSAqZG1hID0gdXAtPmRtYTsKKwlzdHJ1Y3QgbXRrODI1 MF9kYXRhICpkYXRhID0gdXAtPnBvcnQucHJpdmF0ZV9kYXRhOworCXN0cnVjdCBkbWFfYXN5bmNf dHhfZGVzY3JpcHRvcgkqZGVzYzsKKwlzdHJ1Y3QgZG1hX3R4X3N0YXRlCSBzdGF0ZTsKKworCWRl c2MgPSBkbWFlbmdpbmVfcHJlcF9zbGF2ZV9zaW5nbGUoZG1hLT5yeGNoYW4sIGRtYS0+cnhfYWRk ciwKKwkJCQkJICAgZG1hLT5yeF9zaXplLCBETUFfREVWX1RPX01FTSwKKwkJCQkJICAgRE1BX1BS RVBfSU5URVJSVVBUIHwgRE1BX0NUUkxfQUNLKTsKKwlpZiAoIWRlc2MpIHsKKwkJcHJfZXJyKCJm YWlsZWQgdG8gcHJlcGFyZSByeCBzbGF2ZSBzaW5nbGVcbiIpOworCQlyZXR1cm47CisJfQorCisJ ZGVzYy0+Y2FsbGJhY2sgPSBtdGs4MjUwX2RtYV9yeF9jb21wbGV0ZTsKKwlkZXNjLT5jYWxsYmFj a19wYXJhbSA9IHVwOworCisJZG1hLT5yeF9jb29raWUgPSBkbWFlbmdpbmVfc3VibWl0KGRlc2Mp OworCisJZG1hZW5naW5lX3R4X3N0YXR1cyhkbWEtPnJ4Y2hhbiwgZG1hLT5yeF9jb29raWUsICZz dGF0ZSk7CisJZGF0YS0+cnhfcG9zID0gc3RhdGUucmVzaWR1ZTsKKworCWRtYV9zeW5jX3Npbmds ZV9mb3JfZGV2aWNlKGRtYS0+cnhjaGFuLT5kZXZpY2UtPmRldiwgZG1hLT5yeF9hZGRyLAorCQkJ CSAgIGRtYS0+cnhfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTsKKworCWRtYV9hc3luY19pc3N1ZV9w ZW5kaW5nKGRtYS0+cnhjaGFuKTsKK30KKworc3RhdGljIHZvaWQgbXRrODI1MF9kbWFfZW5hYmxl KHN0cnVjdCB1YXJ0XzgyNTBfcG9ydCAqdXApCit7CisJc3RydWN0IHVhcnRfODI1MF9kbWEgKmRt YSA9IHVwLT5kbWE7CisJc3RydWN0IG10azgyNTBfZGF0YSAqZGF0YSA9IHVwLT5wb3J0LnByaXZh dGVfZGF0YTsKKwlpbnQgbGNyID0gc2VyaWFsX2luKHVwLCBVQVJUX0xDUik7CisKKwlpZiAoZGF0 YS0+cnhfc3RhdHVzICE9IERNQV9SWF9TVEFSVCkKKwkJcmV0dXJuOworCisJZG1hLT5yeGNvbmYu ZGlyZWN0aW9uCQk9IERNQV9ERVZfVE9fTUVNOworCWRtYS0+cnhjb25mLnNyY19hZGRyX3dpZHRo CT0gZG1hLT5yeF9zaXplIC8gMTAyNDsKKwlkbWEtPnJ4Y29uZi5zcmNfYWRkcgkJPSBkbWEtPnJ4 X2FkZHI7CisKKwlkbWEtPnR4Y29uZi5kaXJlY3Rpb24JCT0gRE1BX01FTV9UT19ERVY7CisJZG1h LT50eGNvbmYuZHN0X2FkZHJfd2lkdGgJPSBNVEtfVUFSVF9UWF9TSVpFIC8gMTAyNDsKKwlkbWEt PnR4Y29uZi5kc3RfYWRkcgkJPSBkbWEtPnR4X2FkZHI7CisKKwlzZXJpYWxfb3V0KHVwLCBVQVJU X0ZDUiwgVUFSVF9GQ1JfRU5BQkxFX0ZJRk8gfCBVQVJUX0ZDUl9DTEVBUl9SQ1ZSIHwKKwkJVUFS VF9GQ1JfQ0xFQVJfWE1JVCk7CisJc2VyaWFsX291dCh1cCwgTVRLX1VBUlRfRE1BX0VOLAorCQkg ICBNVEtfVUFSVF9ETUFfRU5fUlggfCBNVEtfVUFSVF9ETUFfRU5fVFgpOworCisJc2VyaWFsX291 dCh1cCwgVUFSVF9MQ1IsIFVBUlRfTENSX0NPTkZfTU9ERV9CKTsKKwlzZXJpYWxfb3V0KHVwLCBV QVJUX0VGUiwgVUFSVF9FRlJfRUNCKTsKKwlzZXJpYWxfb3V0KHVwLCBVQVJUX0xDUiwgbGNyKTsK KworCWlmIChkbWFlbmdpbmVfc2xhdmVfY29uZmlnKGRtYS0+cnhjaGFuLCAmZG1hLT5yeGNvbmYp ICE9IDApCisJCXByX2VycigiZmFpbGVkIHRvIGNvbmZpZ3VyZSByeCBkbWEgY2hhbm5lbFxuIik7 CisJaWYgKGRtYWVuZ2luZV9zbGF2ZV9jb25maWcoZG1hLT50eGNoYW4sICZkbWEtPnR4Y29uZikg IT0gMCkKKwkJcHJfZXJyKCJmYWlsZWQgdG8gY29uZmlndXJlIHR4IGRtYSBjaGFubmVsXG4iKTsK KworCWRhdGEtPnJ4X3N0YXR1cyA9IERNQV9SWF9SVU5OSU5HOworCWRhdGEtPnJ4X3BvcyA9IDA7 CisJbXRrODI1MF9yeF9kbWEodXApOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgbXRrODI1MF9z dGFydHVwKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCit7CisjaWZkZWYgQ09ORklHX1NFUklBTF84 MjUwX0RNQQorCXN0cnVjdCB1YXJ0XzgyNTBfcG9ydCAqdXAgPSB1cF90b191ODI1MHAocG9ydCk7 CisJc3RydWN0IG10azgyNTBfZGF0YSAqZGF0YSA9IHBvcnQtPnByaXZhdGVfZGF0YTsKKworCS8q IGRpc2FibGUgRE1BIGZvciBjb25zb2xlICovCisJaWYgKHVhcnRfY29uc29sZShwb3J0KSkKKwkJ dXAtPmRtYSA9IE5VTEw7CisKKwlpZiAodXAtPmRtYSkgeworCQlkYXRhLT5yeF9zdGF0dXMgPSBE TUFfUlhfU1RBUlQ7CisJCXVhcnRfY2lyY19jbGVhcigmcG9ydC0+c3RhdGUtPnhtaXQpOworCX0K KyNlbmRpZgorCW1lbXNldCgmcG9ydC0+aWNvdW50LCAwLCBzaXplb2YocG9ydC0+aWNvdW50KSk7 CisKKwlyZXR1cm4gc2VyaWFsODI1MF9kb19zdGFydHVwKHBvcnQpOworfQorCitzdGF0aWMgdm9p ZCBtdGs4MjUwX3NodXRkb3duKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCit7CisjaWZkZWYgQ09O RklHX1NFUklBTF84MjUwX0RNQQorCXN0cnVjdCB1YXJ0XzgyNTBfcG9ydCAqdXAgPSB1cF90b191 ODI1MHAocG9ydCk7CisJc3RydWN0IG10azgyNTBfZGF0YSAqZGF0YSA9IHBvcnQtPnByaXZhdGVf ZGF0YTsKKworCWlmICh1cC0+ZG1hKQorCQlkYXRhLT5yeF9zdGF0dXMgPSBETUFfUlhfU0hVVERP V047CisjZW5kaWYKKworCXJldHVybiBzZXJpYWw4MjUwX2RvX3NodXRkb3duKHBvcnQpOworfQor CiBzdGF0aWMgdm9pZAogbXRrODI1MF9zZXRfdGVybWlvcyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0 LCBzdHJ1Y3Qga3Rlcm1pb3MgKnRlcm1pb3MsCiAJCQlzdHJ1Y3Qga3Rlcm1pb3MgKm9sZCkKQEAg LTM2LDYgKzIwMSwxNyBAQCBzdHJ1Y3QgbXRrODI1MF9kYXRhIHsKIAl1bnNpZ25lZCBsb25nIGZs YWdzOwogCXVuc2lnbmVkIGludCBiYXVkLCBxdW90OwogCisjaWZkZWYgQ09ORklHX1NFUklBTF84 MjUwX0RNQQorCWlmICh1cC0+ZG1hKSB7CisJCWlmICh1YXJ0X2NvbnNvbGUocG9ydCkpIHsKKwkJ CWRldm1fa2ZyZWUodXAtPnBvcnQuZGV2LCB1cC0+ZG1hKTsKKwkJCXVwLT5kbWEgPSBOVUxMOwor CQl9IGVsc2UgeworCQkJbXRrODI1MF9kbWFfZW5hYmxlKHVwKTsKKwkJfQorCX0KKyNlbmRpZgor CiAJc2VyaWFsODI1MF9kb19zZXRfdGVybWlvcyhwb3J0LCB0ZXJtaW9zLCBvbGQpOwogCiAJLyoK QEAgLTE0Myw5ICszMTksMjAgQEAgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdGs4MjUwX3J1 bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJcG1fcnVudGltZV9wdXRfc3luY19z dXNwZW5kKHBvcnQtPmRldik7CiB9CiAKKyNpZmRlZiBDT05GSUdfU0VSSUFMXzgyNTBfRE1BCitz dGF0aWMgYm9vbCBtdGs4MjUwX2RtYV9maWx0ZXIoc3RydWN0IGRtYV9jaGFuICpjaGFuLCB2b2lk ICpwYXJhbSkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogc3RhdGljIGludCBtdGs4 MjUwX3Byb2JlX29mKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCB1YXJ0X3Bv cnQgKnAsCiAJCQkgICBzdHJ1Y3QgbXRrODI1MF9kYXRhICpkYXRhKQogeworI2lmZGVmIENPTkZJ R19TRVJJQUxfODI1MF9ETUEKKwlpbnQgZG1hY250OworI2VuZGlmCisKIAlkYXRhLT51YXJ0X2Ns ayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAiYmF1ZCIpOwogCWlmIChJU19FUlIoZGF0YS0+ dWFydF9jbGspKSB7CiAJCS8qCkBAIC0xNjIsNyArMzQ5LDIzIEBAIHN0YXRpYyBpbnQgbXRrODI1 MF9wcm9iZV9vZihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgdWFydF9wb3J0 ICpwLAogCX0KIAogCWRhdGEtPmJ1c19jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgImJ1 cyIpOwotCXJldHVybiBQVFJfRVJSX09SX1pFUk8oZGF0YS0+YnVzX2Nsayk7CisJaWYgKElTX0VS UihkYXRhLT5idXNfY2xrKSkKKwkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+YnVzX2Nsayk7CisKKwlk YXRhLT5kbWEgPSBOVUxMOworI2lmZGVmIENPTkZJR19TRVJJQUxfODI1MF9ETUEKKwlkbWFjbnQg PSBvZl9wcm9wZXJ0eV9jb3VudF9zdHJpbmdzKHBkZXYtPmRldi5vZl9ub2RlLCAiZG1hLW5hbWVz Iik7CisJaWYgKGRtYWNudCA9PSAyKSB7CisJCWRhdGEtPmRtYSA9IGRldm1fa3phbGxvYygmcGRl di0+ZGV2LCBzaXplb2YoKmRhdGEtPmRtYSksCisJCQkJCSBHRlBfS0VSTkVMKTsKKwkJZGF0YS0+ ZG1hLT5mbiA9IG10azgyNTBfZG1hX2ZpbHRlcjsKKwkJZGF0YS0+ZG1hLT5yeF9zaXplID0gTVRL X1VBUlRfUlhfU0laRTsKKwkJZGF0YS0+ZG1hLT5yeGNvbmYuc3JjX21heGJ1cnN0ID0gTVRLX1VB UlRfUlhfVFJJR0dFUjsKKwkJZGF0YS0+ZG1hLT50eGNvbmYuZHN0X21heGJ1cnN0ID0gTVRLX1VB UlRfVFhfVFJJR0dFUjsKKwl9CisjZW5kaWYKKworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50 IG10azgyNTBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKQEAgLTIwNCw4ICs0 MDcsMTQgQEAgc3RhdGljIGludCBtdGs4MjUwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJdWFydC5wb3J0LmlvdHlwZSA9IFVQSU9fTUVNMzI7CiAJdWFydC5wb3J0LnJlZ3No aWZ0ID0gMjsKIAl1YXJ0LnBvcnQucHJpdmF0ZV9kYXRhID0gZGF0YTsKKwl1YXJ0LnBvcnQuc2h1 dGRvd24gPSBtdGs4MjUwX3NodXRkb3duOworCXVhcnQucG9ydC5zdGFydHVwID0gbXRrODI1MF9z dGFydHVwOwogCXVhcnQucG9ydC5zZXRfdGVybWlvcyA9IG10azgyNTBfc2V0X3Rlcm1pb3M7CiAJ dWFydC5wb3J0LnVhcnRjbGsgPSBjbGtfZ2V0X3JhdGUoZGF0YS0+dWFydF9jbGspOworI2lmZGVm IENPTkZJR19TRVJJQUxfODI1MF9ETUEKKwlpZiAoZGF0YS0+ZG1hKQorCQl1YXJ0LmRtYSA9IGRh dGEtPmRtYTsKKyNlbmRpZgogCiAJLyogRGlzYWJsZSBSYXRlIEZpeCBmdW5jdGlvbiAqLwogCXdy aXRlbCgweDAsIHVhcnQucG9ydC5tZW1iYXNlICsK