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: [RFC,1/6] dma: Add Synopsys eDMA IP core driver From: Vinod Koul Message-Id: <20181217065120.GH2472@vkoul-mobl> Date: Mon, 17 Dec 2018 12:21:20 +0530 To: Gustavo Pimentel Cc: linux-pci@vger.kernel.org, dmaengine@vger.kernel.org, Eugeniy Paltsev , Andy Shevchenko , Joao Pinto List-ID: T24gMTItMTItMTgsIDEyOjEzLCBHdXN0YXZvIFBpbWVudGVsIHdyb3RlOgo+IEFkZCBTeW5vcHN5 cyBlRE1BIElQIGNvcmUgZHJpdmVyIHRvIGtlcm5lbC4KPiAKPiBUaGlzIGNvcmUgZHJpdmVyLCBp bml0aWFsaXplcyBhbmQgY29uZmlndXJlcyB0aGUgZURNQSBJUCB1c2luZyB2bWEtaGVscGVycwo+ IGZ1bmN0aW9ucyBhbmQgZG1hLWVuZ2luZSBzdWJzeXN0ZW0uCj4gCj4gQWxzbyBjcmVhdGVzIGFu IGFic3RyYXRpb24gbGF5ZXIgdGhyb3VnaCBjYWxsYmFja3MgYWxsb3dpbmcgZGlmZmVyZW50Cj4g cmVnaXN0ZXJzIG1hcHBpbmdzIGluIHRoZSBmdXR1cmUsIG9yZ2FuaXplZCBpbiB0byB2ZXJzaW9u cy4KPiAKPiBUaGlzIGRyaXZlciBjYW4gYmUgY29tcGlsZSBhcyBidWlsdC1pbiBvciBleHRlcm5h bCBtb2R1bGUgaW4ga2VybmVsLgo+IAo+IFRvIGVuYWJsZSB0aGlzIGRyaXZlciBqdXN0IHNlbGVj dCBEV19FRE1BIG9wdGlvbiBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiwKPiBob3dldmVyIGl0IHJl cXVpcmVzIGFuZCBzZWxlY3RzIGF1dG9tYXRpY2FsbHkgRE1BX0VOR0lORSBhbmQKPiBETUFfVklS VFVBTF9DSEFOTkVMUyBvcHRpb24gdG9vLgoKVGhlIHN1YnN5c3RlbSBuYW1lIGlzIGRtYWVuZ2lu ZTogc28gcGxlYXNlIHVzZSB0aGF0IHRhZy4gSWYgeW91IGFyZSBub3QKYXdhcmUgdGhlbiBnaXQg bG9nIGZvciB0aGF0IHN1YnN5c3RlbSBoZWxwcyB5b3Ugd2l0aCB0aGUgcGF0dGVybnMKZXhwZWN0 ZWQKCkkgZGlkIGEgcXVpY2sgbG9vayBhdCB0aGUgcGF0Y2gsIEkgaGF2ZSBoaWdobGlnaHRlZCBm ZXcgY29uY2VybnMgYW5kCnRoZXkgcmVwZWF0IGluIHNpbWlsYXIgY29kZSBwYXR0ZXJucyBpbiB0 aGlzIHBhdGNoCgo+ICsjaW5jbHVkZSAiZHctZWRtYS1jb3JlLmgiCj4gKyNpbmNsdWRlICIuLi9k bWFlbmdpbmUuaCIKPiArI2luY2x1ZGUgIi4uL3ZpcnQtZG1hLmgiCj4gKwo+ICsjZGVmaW5lIERS Vl9DT1JFX05BTUUJCQkJImR3LWVkbWEtY29yZSIKCldoeSBpcyB0aGlzIHJlcXVpcmVkPwoKPiAr Cj4gKyNkZWZpbmUgU0VUKHJlZywgbmFtZSwgdmFsKQkJCVwKPiArCXJlZy5uYW1lID0gdmFsCj4g Kwo+ICsjZGVmaW5lIFNFVF9CT1RIX0NIKG5hbWUsIHZhbHVlKQkJXAo+ICsJZG8gewkJCQkJXAo+ ICsJCVNFVChkdy0+d3JfZWRtYSwgbmFtZSwgdmFsdWUpOwlcCj4gKwkJU0VUKGR3LT5yZF9lZG1h LCBuYW1lLCB2YWx1ZSk7CVwKPiArCX0gd2hpbGUgKDApCgpJIGFtIG5vdCBzdXJlIGhvdyB0aGlz IGhlbHBzLCBtYWtlcyB0aGluZ3Mgbm90IGV4cGxpY2l0Li4KCj4gK3N0YXRpYyBzdHJ1Y3QgZHdf ZWRtYV9idXJzdCAqZHdfZWRtYV9hbGxvY19idXJzdChzdHJ1Y3QgZHdfZWRtYV9jaHVuayAqY2h1 bmspCj4gK3sKPiArCXN0cnVjdCBkd19lZG1hX2NoYW4gKmNoYW4gPSBjaHVuay0+Y2hhbjsKPiAr CXN0cnVjdCBkd19lZG1hX2J1cnN0ICpidXJzdDsKPiArCj4gKwlidXJzdCA9IGt6YWxsb2Moc2l6 ZW9mKHN0cnVjdCBkd19lZG1hX2J1cnN0KSwgR0ZQX05PV0FJVCk7Cj4gKwlpZiAodW5saWtlbHko IWJ1cnN0KSkgewo+ICsJCWRldl9lcnIoY2hhbjJkZXYoY2hhbiksICI6IGZhaWwgdG8gYWxsb2Mg bmV3IGJ1cnN0XG4iKTsKCm5vIG5lZWQgdG8gbG9nIG1lbSBhbGxvYyBmYWlsdXJlcwoKPiArCQly ZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwlJTklUX0xJU1RfSEVBRCgmYnVyc3QtPmxpc3QpOwo+ ICsJYnVyc3QtPnNhciA9IDA7Cj4gKwlidXJzdC0+ZGFyID0gMDsKPiArCWJ1cnN0LT5zeiA9IDA7 Cgp5b3UgZGlkIGt6YWxsb2MgcmlnaHQ/Cgo+ICsKPiArCWlmIChjaHVuay0+YnVyc3QpIHsKPiAr CQlhdG9taWNfaW5jKCZjaHVuay0+YnVyc3RzX2FsbG9jKTsKCndoeSBkb2VzIHRoaXMgbmVlZCBh dG9taWMgdmFyaWFibGVzPwoKPiArc3RhdGljIHZvaWQgZHdfZWRtYV9mcmVlX2J1cnN0KHN0cnVj dCBkd19lZG1hX2NodW5rICpjaHVuaykKPiArewo+ICsJc3RydWN0IGR3X2VkbWFfYnVyc3QgKmNo aWxkLCAqX25leHQ7Cj4gKwo+ICsJaWYgKCFjaHVuay0+YnVyc3QpCj4gKwkJcmV0dXJuOwo+ICsK PiArCS8vIFJlbW92ZSBhbGwgdGhlIGxpc3QgZWxlbWVudHMKCldlIGRvbnQgdXNlIEM5OSBzdHls ZSBjb21tZW50cywgcGxlYXNlIHVzZSAKICAgICAgICAvKiBzaW5nbGUgbGluZSAqLwphbmQKICAg ICAgICAvKgogICAgICAgICAqIG11bHRpCiAgICAgICAgICogbGluZQogICAgICAgICAqLwoKPiAr c3RhdGljIHZvaWQgc3RhcnRfdHJhbnNmZXIoc3RydWN0IGR3X2VkbWFfY2hhbiAqY2hhbikKPiAr ewo+ICsJc3RydWN0IHZpcnRfZG1hX2Rlc2MgKnZkOwo+ICsJc3RydWN0IGR3X2VkbWFfZGVzYyAq ZGVzYzsKPiArCXN0cnVjdCBkd19lZG1hX2NodW5rICpjaGlsZCwgKl9uZXh0Owo+ICsJY29uc3Qg c3RydWN0IGR3X2VkbWFfY29yZV9vcHMgKm9wcyA9IGNoYW4yb3BzKGNoYW4pOwo+ICsKPiArCXZk ID0gdmNoYW5fbmV4dF9kZXNjKCZjaGFuLT52Yyk7Cj4gKwlpZiAoIXZkKQo+ICsJCXJldHVybjsK PiArCj4gKwlkZXNjID0gdmQyZHdfZWRtYV9kZXNjKHZkKTsKPiArCWlmICghZGVzYykKPiArCQly ZXR1cm47Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNoaWxkLCBfbmV4dCwgJmRl c2MtPmNodW5rLT5saXN0LCBsaXN0KSB7Cj4gKwkJb3BzLT5zdGFydChjaGlsZCwgIWRlc2MtPnhm ZXJfc3opOwo+ICsJCWRlc2MtPnhmZXJfc3ogKz0gY2hpbGQtPnN6Owo+ICsJCWRldl9kYmcoY2hh bjJkZXYoY2hhbiksCj4gKwkJCSI6IHRyYW5zZmVyIG9mICV1IGJ5dGVzIHN0YXJ0ZWRcbiIsIGNo aWxkLT5zeik7Cj4gKwo+ICsJCWR3X2VkbWFfZnJlZV9idXJzdChjaGlsZCk7Cj4gKwkJaWYgKGF0 b21pY19yZWFkKCZjaGlsZC0+YnVyc3RzX2FsbG9jKSkKPiArCQkJZGV2X2RiZyhjaGFuMmRldihj aGFuKSwKPiArCQkJCSI6ICVkIGJ1cnN0cyBzdGlsbCBhbGxvY2F0ZWRcbiIsCj4gKwkJCQlhdG9t aWNfcmVhZCgmY2hpbGQtPmJ1cnN0c19hbGxvYykpOwo+ICsJCWxpc3RfZGVsKCZjaGlsZC0+bGlz dCk7Cj4gKwkJa2ZyZWUoY2hpbGQpOwo+ICsJCWF0b21pY19kZWMoJmRlc2MtPmNodW5rc19hbGxv Yyk7Cj4gKwo+ICsJCXJldHVybjsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGludCBkd19lZG1h X2RldmljZV9jb25maWcoc3RydWN0IGRtYV9jaGFuICpkY2hhbiwKPiArCQkJCSBzdHJ1Y3QgZG1h X3NsYXZlX2NvbmZpZyAqY29uZmlnKQoKcGxlYXNlIGFsaWduIHRvIHByZWNlZGluZyBicmFjZS4g QWxzbyBydW5uaW5nIGNoZWNrcGF0Y2ggd2l0aCAtLXN0cmljdApvcHRpb24gaGVscHMsIHdhcm5p bmcgY2hlY2twYXRjaCBpcyBhIGd1aWRlYm9vayBhbmQgbm90IGEgcnVsZSBib29rIQoKCj4gK3sK PiArCXN0cnVjdCBkd19lZG1hX2NoYW4gKmNoYW4gPSBkY2hhbjJkd19lZG1hX2NoYW4oZGNoYW4p Owo+ICsJY29uc3Qgc3RydWN0IGR3X2VkbWFfY29yZV9vcHMgKm9wcyA9IGNoYW4yb3BzKGNoYW4p Owo+ICsJZW51bSBkbWFfdHJhbnNmZXJfZGlyZWN0aW9uIGRpcjsKPiArCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hhbi0+ dmMubG9jaywgZmxhZ3MpOwo+ICsKPiArCWlmICghY29uZmlnKSB7Cj4gKwkJZXJyID0gLUVJTlZB TDsKPiArCQlnb3RvIGVycl9jb25maWc7Cj4gKwl9Cj4gKwo+ICsJaWYgKGNoYW4tPmNvbmZpZ3Vy ZWQpIHsKPiArCQlkZXZfZXJyKGNoYW4yZGV2KGNoYW4pLCAiOiBjaGFubmVsIGFscmVhZHkgY29u ZmlndXJlZFxuIik7Cj4gKwkJZXJyID0gLUVQRVJNOwo+ICsJCWdvdG8gZXJyX2NvbmZpZzsKPiAr CX0KPiArCj4gKwlkaXIgPSBjb25maWctPmRpcmVjdGlvbjsKCkRpcmVjdGlvbiBpcyBkZXByZWNp YXRlZCwgSSBoYXZlIGFscmVhZHkgcmVtb3ZlZCB0aGUgdXNhZ2VzLCBzbyBwbGVhc2UKZG8gbm90 IGFkZCBuZXcgb25lcy4KCllvdSBuZWVkIHRvIHRha2UgZGlyZWN0aW9uIGZvciByZXNwZWN0aXZl IHByZXBfIGNhbGxzCgo+ICsJaWYgKGRpciA9PSBETUFfREVWX1RPX01FTSAmJiBjaGFuLT5kaXIg PT0gRURNQV9ESVJfV1JJVEUpIHsKPiArCQlkZXZfaW5mbyhjaGFuMmRldihjaGFuKSwKPiArCQkJ IjogZGlyZWN0aW9uIERNQV9ERVZfVE9fTUVNIChFRE1BX0RJUl9XUklURSlcbiIpOwo+ICsJCWNo YW4tPnBfYWRkciA9IGNvbmZpZy0+c3JjX2FkZHI7Cj4gKwl9IGVsc2UgaWYgKGRpciA9PSBETUFf TUVNX1RPX0RFViAmJiBjaGFuLT5kaXIgPT0gRURNQV9ESVJfUkVBRCkgewo+ICsJCWRldl9pbmZv KGNoYW4yZGV2KGNoYW4pLAo+ICsJCQkiOiBkaXJlY3Rpb24gRE1BX01FTV9UT19ERVYgKEVETUFf RElSX1JFQUQpXG4iKTsKPiArCQljaGFuLT5wX2FkZHIgPSBjb25maWctPmRzdF9hZGRyOwo+ICsJ fSBlbHNlIHsKPiArCQlkZXZfZXJyKGNoYW4yZGV2KGNoYW4pLCAiOiBpbnZhbGlkIGRpcmVjdGlv blxuIik7Cj4gKwkJZXJyID0gLUVJTlZBTDsKPiArCQlnb3RvIGVycl9jb25maWc7Cj4gKwl9CgpU aGlzIHNob3VsZCBiZSByZW1vdmVkCgo+ICsKPiArCWRldl9pbmZvKGNoYW4yZGV2KGNoYW4pLAo+ ICsJCSI6IHNyY19hZGRyKHBoeXNpY2FsKSA9IDB4JS4xNnhcbiIsIGNvbmZpZy0+c3JjX2FkZHIp Owo+ICsJZGV2X2luZm8oY2hhbjJkZXYoY2hhbiksCj4gKwkJIjogZHN0X2FkZHIocGh5c2ljYWwp ID0gMHglLjE2eFxuIiwgY29uZmlnLT5kc3RfYWRkcik7CgpZb3UgaGF2ZSB0b28gbWFueSBsb2dz LCBpdCBpcyBnb29kIGZvciBicmluZ3VwIGFuZCBpbml0aWFsIHdvcmsgYnV0IG5vdApzdWl0ZWQg Zm9yIHByb2R1Y3Rpb24uCgo+ICsKPiArCWVyciA9IG9wcy0+ZGV2aWNlX2NvbmZpZyhkY2hhbik7 Cgpva2F5IHdoYXQgZG9lcyB0aGlzIGNhbGxiYWNrIGRvLiBZb3UgYXJlIGFscmVhZHkgdW5kZXIg YW5kIGRtYWVuZ2luZSBmd2sKc28gd2hhdCBpcyB0aGUgbmVlZCB0byBhZGQgb25lIG1vcmUgYWJz dHJhY3Rpb24gbGF5ZXIsIGNhbiB5b3UgZXhwbGFpbgp0aGF0IGluIGRldGFpbHMgcGxlYXNlCgo+ ICtzdGF0aWMgaW50IGR3X2VkbWFfZGV2aWNlX3BhdXNlKHN0cnVjdCBkbWFfY2hhbiAqZGNoYW4p Cj4gK3sKPiArCXN0cnVjdCBkd19lZG1hX2NoYW4gKmNoYW4gPSBkY2hhbjJkd19lZG1hX2NoYW4o ZGNoYW4pOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCWludCBlcnIgPSAwOwo+ICsKPiAr CXNwaW5fbG9ja19pcnFzYXZlKCZjaGFuLT52Yy5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJaWYgKCFj aGFuLT5jb25maWd1cmVkKSB7Cj4gKwkJZGV2X2VycihkY2hhbjJkZXYoZGNoYW4pLCAiOiBjaGFu bmVsIG5vdCBjb25maWd1cmVkXG4iKTsKPiArCQllcnIgPSAtRVBFUk07Cj4gKwkJZ290byBlcnJf cGF1c2U7Cj4gKwl9Cj4gKwo+ICsJc3dpdGNoIChjaGFuLT5zdGF0dXMpIHsKPiArCWNhc2UgRURN QV9TVF9JRExFOgo+ICsJCWRldl9lcnIoZGNoYW4yZGV2KGRjaGFuKSwgIjogY2hhbm5lbCBpcyBp ZGxlXG4iKTsKPiArCQllcnIgPSAtRVBFUk07Cj4gKwkJZ290byBlcnJfcGF1c2U7Cj4gKwljYXNl IEVETUFfU1RfUEFVU0U6Cj4gKwkJZGV2X2VycihkY2hhbjJkZXYoZGNoYW4pLCAiOiBjaGFubmVs IGlzIGFscmVhZHkgcGF1c2VkXG4iKTsKPiArCQllcnIgPSAtRVBFUk07Cj4gKwkJZ290byBlcnJf cGF1c2U7Cj4gKwljYXNlIEVETUFfU1RfQlVTWToKPiArCQkvLyBPbmx5IGFjY2VwdGFibGUgc3Rh dGUKPiArCQlicmVhazsKCkRvZXNuJ3QgaXQgbG9vayBhcyBvdmVya2lsbCB0byB1c2Ugc3dpdGNo IGZvciBzaW5nbGUgYWNjZXB0YWJsZSBjYXNlLgpXaHkgbm90IGRvCgogICAgICAgIGlmIChjaGFu LT5zdGF0dXMgIT0gRURNQV9TVF9CVVNZKSB7CiAgICAgICAgICAgICAgICBlcnIgPSAtRVBFUk07 CiAgICAgICAgICAgICAgICAuLi4KICAgICAgICB9Cgo+ICsJZGVmYXVsdDoKPiArCQlkZXZfZXJy KGRjaGFuMmRldihkY2hhbiksICI6IGludmFsaWQgc3RhdHVzIHN0YXRlXG4iKTsKPiArCQllcnIg PSAtRUlOVkFMOwo+ICsJCWdvdG8gZXJyX3BhdXNlOwo+ICsJfQo+ICsKPiArCXN3aXRjaCAoY2hh bi0+cmVxdWVzdCkgewoKd2hhdCBpcyB0aGUgbmVlZCB0byB0cmFjayBjaGFubmVsIHN0YXR1cyBh bmQgY2hhbm5lbCByZXF1ZXN0cz8K