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: [v9,1/2] dmaengine: 8250_mtk_dma: add MediaTek uart DMA support From: Vinod Koul Message-Id: <20190120052750.GN4635@vkoul-mobl> Date: Sun, 20 Jan 2019 10:57:50 +0530 To: Long Cheng Cc: Randy Dunlap , Rob Herring , Mark Rutland , Ryder Lee , Sean Wang , Nicolas Boichat , Matthias Brugger , Dan Williams , Greg Kroah-Hartman , Jiri Slaby , Sean Wang , 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 , Zhenbao Liu List-ID: T24gMTAtMDEtMTksIDE4OjMzLCBMb25nIENoZW5nIHdyb3RlOgo+IE9uIEZyaSwgMjAxOS0wMS0w NCBhdCAyMjo0OSArMDUzMCwgVmlub2QgS291bCB3cm90ZToKPiA+IE9uIDAyLTAxLTE5LCAxMDox MiwgTG9uZyBDaGVuZyB3cm90ZToKPiA+ID4gSW4gRE1BIGVuZ2luZSBmcmFtZXdvcmssIGFkZCA4 MjUwIHVhcnQgZG1hIHRvIHN1cHBvcnQgTWVkaWFUZWsgdWFydC4KPiA+ID4gSWYgTWVkaWFUZWsg dWFydCBlbmFibGVkKFNFUklBTF84MjUwX01UNjU3NyksIGFuZCB3YW50IHRvIGltcHJvdmUKPiA+ ID4gdGhlIHBlcmZvcm1hbmNlLCBjYW4gZW5hYmxlIHRoZSBmdW5jdGlvbi4KPiA+IAo+ID4gSXMg dGhlIERNQSBjb250cm9sbGVyIFVBUlQgc3BlY2lmaWMsIGNhbiBpdCB3b3JrIHdpdGggb3RoZXIg Y29udHJvbGxlcnMKPiA+IGFzIHdlbGwsIGlmIHNvIHlvdSBzaG91bGQgZ2V0IHJpZCBvZiB1YXJ0 IG5hbWUgaW4gcGF0Y2gKPiAKPiBJIGRvbid0IGtub3cgdGhhdCBpdCBjYW4gd29yayBvciBub3Qg b24gb3RoZXIgY29udHJvbGxlci4gYnV0IGl0J3MgZm9yCj4gTWVkaWFUZWsgU09DCgpXaGF0IEkg bWVhbnQgd2FzIHRoYXQgaWYgY2FuIHdvcmsgd2l0aCBvdGhlciBjb250cm9sbGVycyAodXNlcnMp IGFwYXJ0CmZyb20gVUFSVCwgaG93IGFib3V0IHNheSBhdWRpbywgc3BpIGV0YyEhCgo+IAo+ID4g PiArI2RlZmluZSBNVEtfVUFSVF9BUERNQV9DSEFOTkVMUwkJKENPTkZJR19TRVJJQUxfODI1MF9O Ul9VQVJUUyAqIDIpCj4gPiAKPiA+IFdoeSBhcmUgdGhlIGNoYW5uZWxzIG5vdCBjb21pbmcgZnJv bSBEVD8KPiA+IAo+IAo+IGkgd2lsbCB1c2luZyBkbWEtcmVxdWVzdHMgaW5zdGFsbCBvZiBpdC4K PiAKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBWRkZfRU5fQgkJQklUKDApCj4gPiA+ICsjZGVmaW5l IFZGRl9TVE9QX0IJCUJJVCgwKQo+ID4gPiArI2RlZmluZSBWRkZfRkxVU0hfQgkJQklUKDApCj4g PiA+ICsjZGVmaW5lIFZGRl80R19TVVBQT1JUX0IJQklUKDApCj4gPiA+ICsjZGVmaW5lIFZGRl9S WF9JTlRfRU4wX0IJQklUKDApCS8qcnggdmFsaWQgc2l6ZSA+PSAgdmZmIHRocmUqLwo+ID4gPiAr I2RlZmluZSBWRkZfUlhfSU5UX0VOMV9CCUJJVCgxKQo+ID4gPiArI2RlZmluZSBWRkZfVFhfSU5U X0VOX0IJCUJJVCgwKQkvKnR4IGxlZnQgc2l6ZSA+PSB2ZmYgdGhyZSovCj4gPiAKPiA+IHNwYWNl IGFyb3VuZCAvKiBzcGFjZSAqLyBhbHNvIHJ1biBjaGVja3BhdGNoIHRvIGNoZWNrIGZvciBzdHls ZSBlcnJvcnMKPiA+IAo+IAo+IG9rLgo+IAo+ID4gPiArc3RhdGljIHZvaWQgbXRrX3VhcnRfYXBk bWFfc3RhcnRfdHgoc3RydWN0IG10a19jaGFuICpjKQo+ID4gPiArewo+ID4gPiArCXVuc2lnbmVk IGludCBsZW4sIHNlbmQsIGxlZnQsIHdwdCwgZF93cHQsIHRtcDsKPiA+ID4gKwlpbnQgcmV0Owo+ ID4gPiArCj4gPiA+ICsJbGVmdCA9IG10a191YXJ0X2FwZG1hX3JlYWQoYywgVkZGX0xFRlRfU0la RSk7Cj4gPiA+ICsJaWYgKCFsZWZ0KSB7Cj4gPiA+ICsJCW10a191YXJ0X2FwZG1hX3dyaXRlKGMs IFZGRl9JTlRfRU4sIFZGRl9UWF9JTlRfRU5fQik7Cj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwl9 Cj4gPiA+ICsKPiA+ID4gKwkvKiBXYWl0IDFzZWMgZm9yIGZsdXNoLCAgY2FuJ3Qgc2xlZXAqLwo+ ID4gPiArCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChyZWFkbCwgYy0+YmFzZSArIFZGRl9GTFVT SCwgdG1wLAo+ID4gPiArCQkJdG1wICE9IFZGRl9GTFVTSF9CLCAwLCAxMDAwMDAwKTsKPiA+ID4g KwlpZiAocmV0KQo+ID4gPiArCQlkZXZfd2FybihjLT52Yy5jaGFuLmRldmljZS0+ZGV2LCAidHg6 IGZhaWwsIGRlYnVnPTB4JXhcbiIsCj4gPiA+ICsJCQltdGtfdWFydF9hcGRtYV9yZWFkKGMsIFZG Rl9ERUJVR19TVEFUVVMpKTsKPiA+ID4gKwo+ID4gPiArCXNlbmQgPSBtaW5fdCh1bnNpZ25lZCBp bnQsIGxlZnQsIGMtPmRlc2MtPmF2YWlsX2xlbik7Cj4gPiA+ICsJd3B0ID0gbXRrX3VhcnRfYXBk bWFfcmVhZChjLCBWRkZfV1BUKTsKPiA+ID4gKwlsZW4gPSBtdGtfdWFydF9hcGRtYV9yZWFkKGMs IFZGRl9MRU4pOwo+ID4gPiArCj4gPiA+ICsJZF93cHQgPSB3cHQgKyBzZW5kOwo+ID4gPiArCWlm ICgoZF93cHQgJiBWRkZfUklOR19TSVpFKSA+PSBsZW4pIHsKPiA+ID4gKwkJZF93cHQgPSBkX3dw dCAtIGxlbjsKPiA+ID4gKwkJZF93cHQgPSBkX3dwdCBeIFZGRl9SSU5HX1dSQVA7Cj4gPiA+ICsJ fQo+ID4gPiArCW10a191YXJ0X2FwZG1hX3dyaXRlKGMsIFZGRl9XUFQsIGRfd3B0KTsKPiA+ID4g Kwo+ID4gPiArCWMtPmRlc2MtPmF2YWlsX2xlbiAtPSBzZW5kOwo+ID4gPiArCj4gPiA+ICsJbXRr X3VhcnRfYXBkbWFfd3JpdGUoYywgVkZGX0lOVF9FTiwgVkZGX1RYX0lOVF9FTl9CKTsKPiA+ID4g KwlpZiAobXRrX3VhcnRfYXBkbWFfcmVhZChjLCBWRkZfRkxVU0gpID09IDBVKQo+ID4gPiArCQlt dGtfdWFydF9hcGRtYV93cml0ZShjLCBWRkZfRkxVU0gsIFZGRl9GTFVTSF9CKTsKPiA+ID4gK30K PiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgbXRrX3VhcnRfYXBkbWFfc3RhcnRfcngoc3RydWN0 IG10a19jaGFuICpjKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBtdGtfdWFydF9hcGRtYV9kZXNj ICpkID0gYy0+ZGVzYzsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgbGVuLCB3ZywgcmcsIGNudDsKPiA+ ID4gKwo+ID4gPiArCWlmICgobXRrX3VhcnRfYXBkbWFfcmVhZChjLCBWRkZfVkFMSURfU0laRSkg PT0gMFUpIHx8Cj4gPiA+ICsJCSFkIHx8ICF2Y2hhbl9uZXh0X2Rlc2MoJmMtPnZjKSkKPiA+ID4g KwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJbGVuID0gbXRrX3VhcnRfYXBkbWFfcmVhZChjLCBW RkZfTEVOKTsKPiA+ID4gKwlyZyA9IG10a191YXJ0X2FwZG1hX3JlYWQoYywgVkZGX1JQVCk7Cj4g PiA+ICsJd2cgPSBtdGtfdWFydF9hcGRtYV9yZWFkKGMsIFZGRl9XUFQpOwo+ID4gPiArCWlmICgo cmcgXiB3ZykgJiBWRkZfUklOR19XUkFQKQo+ID4gPiArCQljbnQgPSAod2cgJiBWRkZfUklOR19T SVpFKSArIGxlbiAtIChyZyAmIFZGRl9SSU5HX1NJWkUpOwo+ID4gPiArCWVsc2UKPiA+ID4gKwkJ Y250ID0gKHdnICYgVkZGX1JJTkdfU0laRSkgLSAocmcgJiBWRkZfUklOR19TSVpFKTsKPiA+ID4g Kwo+ID4gPiArCWMtPnJ4X3N0YXR1cyA9IGNudDsKPiA+ID4gKwltdGtfdWFydF9hcGRtYV93cml0 ZShjLCBWRkZfUlBULCB3Zyk7Cj4gPiA+ICsKPiA+ID4gKwlsaXN0X2RlbCgmZC0+dmQubm9kZSk7 Cj4gPiA+ICsJdmNoYW5fY29va2llX2NvbXBsZXRlKCZkLT52ZCk7Cj4gPiA+ICt9Cj4gPiAKPiA+ IHRoaXMgbG9va3Mgb2RkLCB3aHkgZG8geW91IGhhdmUgZGlmZmVyZW50IHJ4IGFuZCB0eCBzdGFy dCByb3V0aW5lcz8KPiA+IAo+IAo+IFdvdWxkIHlvdSBsaWtlIGV4cGxhaW4gaXQgaW4gbW9yZSBk ZXRhaWw/IHRoYW5rcy4KPiBJbiB0eCBmdW5jdGlvbiwgd2lsbCB3YWl0IHRoZSBsYXN0IGRhdGEg Zmx1c2ggZG9uZS4gYW5kIHRoZSBjb3VudCB0aGUKPiBzaXplIHRoYXQgc2VuZC4KPiBJbiBSeCBm dW5jdGlvbiwgd2lsbCBjb3VudCB0aGUgc2l6ZSB0aGF0IHJlY2VpdmUuCj4gQW55IHdheSwgaW4g cnggLyB0eCwgbmVlZCBhbmRsZSBXUFQgb3IgUlBULgo+IAo+ID4gPiArc3RhdGljIGludCBtdGtf dWFydF9hcGRtYV9hbGxvY19jaGFuX3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCj4g PiA+ICt7Cj4gPiA+ICsJc3RydWN0IG10a191YXJ0X2FwZG1hZGV2ICptdGtkID0gdG9fbXRrX3Vh cnRfYXBkbWFfZGV2KGNoYW4tPmRldmljZSk7Cj4gPiA+ICsJc3RydWN0IG10a19jaGFuICpjID0g dG9fbXRrX3VhcnRfYXBkbWFfY2hhbihjaGFuKTsKPiA+ID4gKwl1MzIgdG1wOwo+ID4gPiArCWlu dCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlwbV9ydW50aW1lX2dldF9zeW5jKG10a2QtPmRkZXYuZGV2 KTsKPiA+ID4gKwo+ID4gPiArCW10a191YXJ0X2FwZG1hX3dyaXRlKGMsIFZGRl9BRERSLCAwKTsK PiA+ID4gKwltdGtfdWFydF9hcGRtYV93cml0ZShjLCBWRkZfVEhSRSwgMCk7Cj4gPiA+ICsJbXRr X3VhcnRfYXBkbWFfd3JpdGUoYywgVkZGX0xFTiwgMCk7Cj4gPiA+ICsJbXRrX3VhcnRfYXBkbWFf d3JpdGUoYywgVkZGX1JTVCwgVkZGX1dBUk1fUlNUX0IpOwo+ID4gPiArCj4gPiA+ICsJcmV0ID0g cmVhZHhfcG9sbF90aW1lb3V0KHJlYWRsLCBjLT5iYXNlICsgVkZGX0VOLCB0bXAsCj4gPiA+ICsJ CQl0bXAgPT0gMCwgMTAsIDEwMCk7Cj4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiArCQlkZXZfZXJy KGNoYW4tPmRldmljZS0+ZGV2LCAiZG1hIHJlc2V0OiBmYWlsLCB0aW1lb3V0XG4iKTsKPiA+ID4g KwkJcmV0dXJuIHJldDsKPiA+ID4gKwl9Cj4gPiAKPiA+IHJlZ2lzdGVyIHJlYWQgZG9lcyByZXNl dD8KPiA+IAo+IAo+ICdtdGtfdWFydF9hcGRtYV93cml0ZShjLCBWRkZfUlNULCBWRkZfV0FSTV9S U1RfQik7JyBpcyByZXNldC4gcmVzZCBqdXN0Cj4gcG9sbCByZXNldCBkb25lLgo+IAo+ID4gPiAr Cj4gPiA+ICsJaWYgKCFjLT5yZXF1ZXN0ZWQpIHsKPiA+ID4gKwkJYy0+cmVxdWVzdGVkID0gdHJ1 ZTsKPiA+ID4gKwkJcmV0ID0gcmVxdWVzdF9pcnEobXRrZC0+ZG1hX2lycVtjaGFuLT5jaGFuX2lk XSwKPiA+ID4gKwkJCQkgIG10a191YXJ0X2FwZG1hX2lycV9oYW5kbGVyLCBJUlFGX1RSSUdHRVJf Tk9ORSwKPiA+ID4gKwkJCQkgIEtCVUlMRF9NT0ROQU1FLCBjaGFuKTsKPiA+IAo+ID4gd2h5IGlz IHRoZSBpcnEgbm90IHJlcXVlc3RlZCBpbiBkcml2ZXIgcHJvYmU/Cj4gPiAKPiAKPiBJIGhhdmUg ZXhwbGFpbmVkIGluIGJlbG93LAo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL3BpcGVybWFp bC9saW51eC1tZWRpYXRlay8yMDE4LURlY2VtYmVyLzAxNjQxOC5odG1sCj4gCj4gPiA+ICtzdGF0 aWMgZW51bSBkbWFfc3RhdHVzIG10a191YXJ0X2FwZG1hX3R4X3N0YXR1cyhzdHJ1Y3QgZG1hX2No YW4gKmNoYW4sCj4gPiA+ICsJCQkJCSBkbWFfY29va2llX3QgY29va2llLAo+ID4gPiArCQkJCQkg c3RydWN0IGRtYV90eF9zdGF0ZSAqdHhzdGF0ZSkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgbXRr X2NoYW4gKmMgPSB0b19tdGtfdWFydF9hcGRtYV9jaGFuKGNoYW4pOwo+ID4gPiArCWVudW0gZG1h X3N0YXR1cyByZXQ7Cj4gPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ID4gKwo+ID4gPiAr CWlmICghdHhzdGF0ZSkKPiA+ID4gKwkJcmV0dXJuIERNQV9FUlJPUjsKPiA+ID4gKwo+ID4gPiAr CXJldCA9IGRtYV9jb29raWVfc3RhdHVzKGNoYW4sIGNvb2tpZSwgdHhzdGF0ZSk7Cj4gPiA+ICsJ c3Bpbl9sb2NrX2lycXNhdmUoJmMtPnZjLmxvY2ssIGZsYWdzKTsKPiA+ID4gKwlpZiAocmV0ID09 IERNQV9JTl9QUk9HUkVTUykgewo+ID4gPiArCQljLT5yeF9zdGF0dXMgPSBtdGtfdWFydF9hcGRt YV9yZWFkKGMsIFZGRl9SUFQpICYgVkZGX1JJTkdfU0laRTsKPiA+ID4gKwkJZG1hX3NldF9yZXNp ZHVlKHR4c3RhdGUsIGMtPnJ4X3N0YXR1cyk7Cj4gPiA+ICsJfSBlbHNlIGlmIChyZXQgPT0gRE1B X0NPTVBMRVRFICYmIGMtPmNmZy5kaXJlY3Rpb24gPT0gRE1BX0RFVl9UT19NRU0pIHsKPiA+IAo+ ID4gd2h5IHNldCByZXNpZGUgd2hlbiBpdCBpcyBjb21wbGV0ZT8gYWxzbyByZXNpZGUgY2FuIGJl IG51bGwsIHRoYXQgc2hvdWxkCj4gPiBiZSBjaGVja2VkIGFzIHdlbGwKPiA+IAo+IEluIGRpZmZl cmVudCBzdGF0dXMsIHNldCBkaWZmZXJlbnQgcmVzaWRlLgoKQ2FuIHlvdSBleHBsYWluIHRoYXQu LgoKPiAKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKm10a191 YXJ0X2FwZG1hX3ByZXBfc2xhdmVfc2cKPiA+ID4gKwkoc3RydWN0IGRtYV9jaGFuICpjaGFuLCBz dHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCwKPiA+ID4gKwl1bnNpZ25lZCBpbnQgc2dsZW4sIGVudW0g ZG1hX3RyYW5zZmVyX2RpcmVjdGlvbiBkaXIsCj4gPiA+ICsJdW5zaWduZWQgbG9uZyB0eF9mbGFn cywgdm9pZCAqY29udGV4dCkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgbXRrX2NoYW4gKmMgPSB0 b19tdGtfdWFydF9hcGRtYV9jaGFuKGNoYW4pOwo+ID4gPiArCXN0cnVjdCBtdGtfdWFydF9hcGRt YV9kZXNjICpkOwo+ID4gPiArCj4gPiA+ICsJaWYgKChkaXIgIT0gRE1BX0RFVl9UT19NRU0pICYm Cj4gPiA+ICsJCShkaXIgIT0gRE1BX01FTV9UT19ERVYpKSB7Cj4gPiA+ICsJCWRldl9lcnIoY2hh bi0+ZGV2aWNlLT5kZXYsICJiYWQgZGlyZWN0aW9uXG4iKTsKPiA+ID4gKwkJcmV0dXJuIE5VTEw7 Cj4gPiA+ICsJfQo+ID4gCj4gPiB3ZSBoYXZlIGEgbWFjcm8gZm9yIHRoaXMKPiAKPiBUaGFua3Mg Zm9yIHlvdXIgc3VnZ2VzdGlvbi4gaSB3aWxsIG1vZGlmeSBpdC4KPiA+IAo+ID4gPiArCj4gPiA+ ICsJLyogTm93IGFsbG9jYXRlIGFuZCBzZXR1cCB0aGUgZGVzY3JpcHRvciAqLwo+ID4gPiArCWQg PSBremFsbG9jKHNpemVvZigqZCksIEdGUF9BVE9NSUMpOwo+ID4gPiArCWlmICghZCkKPiA+ID4g KwkJcmV0dXJuIE5VTEw7Cj4gPiA+ICsKPiA+ID4gKwkvKiBzZ2xlbiBpcyAxICovCj4gPiAKPiA+ ID8KPiA+IAo+ID4gPiArc3RhdGljIGludCBtdGtfdWFydF9hcGRtYV9zbGF2ZV9jb25maWcoc3Ry dWN0IGRtYV9jaGFuICpjaGFuLAo+ID4gPiArCQkJCXN0cnVjdCBkbWFfc2xhdmVfY29uZmlnICpj ZmcpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IG10a19jaGFuICpjID0gdG9fbXRrX3VhcnRfYXBk bWFfY2hhbihjaGFuKTsKPiA+ID4gKwlzdHJ1Y3QgbXRrX3VhcnRfYXBkbWFkZXYgKm10a2QgPQo+ ID4gPiArCQkJCXRvX210a191YXJ0X2FwZG1hX2RldihjLT52Yy5jaGFuLmRldmljZSk7Cj4gPiA+ ICsKPiA+ID4gKwljLT5jZmcgPSAqY2ZnOwo+ID4gPiArCj4gPiA+ICsJaWYgKGNmZy0+ZGlyZWN0 aW9uID09IERNQV9ERVZfVE9fTUVNKSB7Cj4gPiAKPiA+IGZnLT5kaXJlY3Rpb24gaXMgZGVwcmVj YXRlZCwgaW4gZmFjdCBJIGhhdmUgcmVtb3ZlZCBhbGwgdXNlcnMgcmVjZW50bHksCj4gPiBwbGVh c2UgZG8gbm90IHVzZSB0aGlzCj4gCj4gWW91IHdpbGwgcmVtb3ZlICdkaXJlY3Rpb24nIGluICdz dHJ1Y3QgZG1hX3NsYXZlX2NvbmZpZyc/IGlmIHJlbW92ZSwgaG93Cj4gZG8gY29uZmlybSBkaXJl Y3Rpb24/CgpZZXMgcGxlYXNlIHVzZSB0aGUgZGlyZWN0aW9uIGFyZ3VtZW50IGluIHByZXBfeHgg Y2FsbHMK