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,v3,5/7] dmaengine: Add Synopsys eDMA IP PCIe glue-logic From: Gustavo Pimentel Message-Id: <916f319b-9e45-6d78-4ecc-850feda84bb3@synopsys.com> Date: Mon, 14 Jan 2019 11:38:02 +0000 To: Andy Shevchenko , Gustavo Pimentel Cc: "linux-pci@vger.kernel.org" , "dmaengine@vger.kernel.org" , Vinod Koul , Dan Williams , Eugeniy Paltsev , Russell King , Niklas Cassel , Lorenzo Pieralisi , Joao Pinto , Jose Abreu , Luis Oliveira , Vitor Soares , Nelson Costa , Pedro Sousa List-ID: T24gMTEvMDEvMjAxOSAxOTo0NywgQW5keSBTaGV2Y2hlbmtvIHdyb3RlOgo+IE9uIEZyaSwgSmFu IDExLCAyMDE5IGF0IDA3OjMzOjQxUE0gKzAxMDAsIEd1c3Rhdm8gUGltZW50ZWwgd3JvdGU6Cj4+ IFN5bm9wc3lzIGVETUEgSVAgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgYWxvbmcgd2l0aCBTeW5v cHN5cyBQQ0llCj4+IEVuZFBvaW50IElQIChkZXBlbmRzIG9mIHRoZSB1c2UgYW5kIGxpY2Vuc2lu ZyBhZ3JlZW1lbnQpLgo+Pgo+PiBUaGlzIElQIHJlcXVpcmVzIHNvbWUgYmFzaWMgY29uZmlndXJh dGlvbnMsIHN1Y2ggYXM6Cj4+ICAtIGVETUEgcmVnaXN0ZXJzIEJBUgo+PiAgLSBlRE1BIHJlZ2lz dGVycyBvZmZzZXQKPj4gIC0gZURNQSByZWdpc3RlcnMgc2l6ZQo+PiAgLSBlRE1BIGxpbmtlZCBs aXN0IG1lbW9yeSBCQVIKPj4gIC0gZURNQSBsaW5rZWQgbGlzdCBtZW1vcnkgb2Zmc2V0Cj4+ICAt IGVETUEgbGlua2VkIGxpc3QgbWVtb3J5IHN6ZQo+PiAgLSBlRE1BIGRhdGEgbWVtb3J5IEJBUgo+ PiAgLSBlRE1BIGRhdGEgbWVtb3J5IG9mZnNldAo+PiAgLSBlRE1BIGRhdGEgbWVtb3J5IHNpemUK Pj4gIC0gZURNQSB2ZXJzaW9uCj4+ICAtIGVETUEgbW9kZQo+PiAgLSBJUlFzIGF2YWlsYWJsZSBm b3IgZURNQQo+Pgo+PiBBcyBhIHdvcmtpbmcgZXhhbXBsZSwgUENJZSBnbHVlLWxvZ2ljIHdpbGwg YXR0YWNoIHRvIGEgU3lub3BzeXMgUENJZQo+PiBFbmRQb2ludCBJUCBwcm90b3R5cGUga2l0IChW ZW5kb3IgSUQgPSAweDE2YzMsIERldmljZSBJRCA9IDB4ZWRkYSksCj4+IHdoaWNoIGhhcyBidWls dC1pbiBhbiBlRE1BIElQIHdpdGggdGhpcyBkZWZhdWx0IGNvbmZpZ3VyYXRpb246Cj4+ICAtIGVE TUEgcmVnaXN0ZXJzIEJBUiA9IDAKPj4gIC0gZURNQSByZWdpc3RlcnMgb2Zmc2V0ID0gMHgwMDAw MTAwMCAoNCBLYnl0ZXMpCj4+ICAtIGVETUEgcmVnaXN0ZXJzIHNpemUgPSAweDAwMDAyMDAwICg4 IEtieXRlcykKPj4gIC0gZURNQSBsaW5rZWQgbGlzdCBtZW1vcnkgQkFSID0gMgo+PiAgLSBlRE1B IGxpbmtlZCBsaXN0IG1lbW9yeSBvZmZzZXQgPSAweDAwMDAwMDAwICgwIEtieXRlcykKPj4gIC0g ZURNQSBsaW5rZWQgbGlzdCBtZW1vcnkgc2l6ZSA9IDB4MDA4MDAwMDAgKDggTWJ5dGVzKQo+PiAg LSBlRE1BIGRhdGEgbWVtb3J5IEJBUiA9IDIKPj4gIC0gZURNQSBkYXRhIG1lbW9yeSBvZmZzZXQg PSAweDAwODAwMDAwICg4IE1ieXRlcykKPj4gIC0gZURNQSBkYXRhIG1lbW9yeSBzaXplID0gMHgw MzgwMDAwMCAoNTYgTWJ5dGVzKQo+PiAgLSBlRE1BIHZlcnNpb24gPSAwCj4+ICAtIGVETUEgbW9k ZSA9IEVETUFfTU9ERV9VTlJPTEwKPj4gIC0gSVJRcyA9IDEKPj4KPj4gVGhpcyBkcml2ZXIgY2Fu IGJlIGNvbXBpbGUgYXMgYnVpbHQtaW4gb3IgZXh0ZXJuYWwgbW9kdWxlIGluIGtlcm5lbC4KPj4K Pj4gVG8gZW5hYmxlIHRoaXMgZHJpdmVyIGp1c3Qgc2VsZWN0IERXX0VETUFfUENJRSBvcHRpb24g aW4ga2VybmVsCj4+IGNvbmZpZ3VyYXRpb24sIGhvd2V2ZXIgaXQgcmVxdWlyZXMgYW5kIHNlbGVj dHMgYXV0b21hdGljYWxseSBEV19FRE1BCj4+IG9wdGlvbiB0b28uCj4+Cj4gCj4+IENoYW5nZXM6 Cj4+IFJGQyB2MS0+UkZDIHYyOgo+IAo+IENoYW5nZXMgZ28gYWZ0ZXIgJy0tLSAnIGxpbmUuCgpB dCB0aGUgbGFzdCBMaW51eCBQbHVtYmVycyBDb25mZXJlbmNlIHRoZXJlIHdlcmUgc29tZSBzdWJz eXN0ZW0gbWFpbnRhaW5lcnMgd2hvCmFza2VkIHRoYXQgdGhlIHRyYWNrIGNoYW5nZXMgYmUgaW5j bHVkZWQgaW4gdGhlIGRlc2NyaXB0aW9uIGFzIGEgd2F5IHRvIG5vdCBsb3NlCnRoZSBwcmV2aW91 cyB3b3JrIGRvbmUuIFRoYXQgd2h5IEkgcHV0IGl0IGJlZm9yZSB0aGUgJy0tLScgbGluZSwgYnV0 IGl0J3MKaW5kaWZmZXJlbnQgdG8gbWUsIEkgY2FuIHB1dCBpdCBhZnRlciB0aGUgJy0tLScgbGlu ZS4KCj4gCj4+ICAtIFJlcGxhY2UgY29tbWVudHMgLy8gKEM5OSBzdHlsZSkgYnkgLyoqLwo+PiAg LSBNZXJnZSB0d28gcGNpbV9pb21hcF9yZWdpb25zKCkgY2FsbHMgaW50byBqdXN0IG9uZSBjYWxs Cj4+ICAtIFJlbW92ZSBwY2lfdHJ5X3NldF9td2koKSBjYWxsCj4+ICAtIFJlcGxhY2Ugc29tZSBk ZXZfaW5mbygpIGJ5IGRldl9kYmcoKSB0byByZWR1Y2UgKm5vaXNlKgo+PiAgLSBSZW1vdmUgcGNp X25hbWUocGRldikgY2FsbCBhZnRlciBiZWluZyBjYWxsIGR3X2VkbWFfcmVtb3ZlKCkKPj4gIC0g UmVtb3ZlIGFsbCBwb3dlciBtYW5hZ2VtZW50IHN1cHBvcnQKPj4gIC0gRml4IHRoZSBoZWFkZXJz IG9mIHRoZSAuYyBhbmQgLmggZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSBtb3N0IHJlY2VudAo+PiAg ICBjb252ZW50aW9uCj4+ICAtIEZpeCBlcnJvcnMgYW5kIGNoZWNrcyBwb2ludGVkIG91dCBieSBj aGVja3BhdGNoIHdpdGggLS1zdHJpY3Qgb3B0aW9uCj4+ICAtIFJlcGxhY2UgcGF0Y2ggc21hbGwg ZGVzY3JpcHRpb24gdGFnIGZyb20gZG1hIGJ5IGRtYWVuZ2luZQo+PiBSRkMgdjItPlJGQyB2MzoK Pj4gIC0gRml4IHByaW50ayB2YXJpYWJsZSBvZiBwaHlzX2FkZHJfdCB0eXBlCj4+ICAtIEZpeCBt aXNzaW5nIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uIChjaGFuLT5jb25maWd1cmVkKQo+PiAgLSBD aGFuZ2UgbGlua2VkIGxpc3Qgc2l6ZSB0byA1MTIgS2J5dGVzCj4+ICAtIEFkZCBkYXRhIG1lbW9y eSBpbmZvcm1hdGlvbgo+PiAgLSBBZGQgcmVnaXN0ZXIgc2l6ZSBpbmZvcm1hdGlvbgo+PiAgLSBB ZGQgY29tbWVudHMgb3IgaW1wcm92ZSBleGlzdGluZyBvbmVzCj4+ICAtIEFkZCBwb3NzaWJpbGl0 eSB0byB3b3JrIHdpdGggbXVsdGlwbGUgSVJRcyBmZWF0dXJlCj4+ICAtIFJlcGxhY2UgTVNJIGFu ZCBNU0ktWCBlbmFibGUgY29uZGl0aW9uIGJ5IHBjaV9kZXZfbXNpX2VuYWJsZWQoKQo+PiAgLSBS ZXBsYWNlIGNvZGUgdG8gYWNxdWlyZSBNU0koLVgpIGFkZHJlc3MgYW5kIGRhdGEgYnkKPj4gICAg Z2V0X2NhY2hlZF9tc2lfbXNnKCkKPiAKPj4gK2VudW0gZHdfZWRtYV9wY2llX2JhciB7Cj4+ICsJ QkFSXzAsCj4+ICsJQkFSXzEsCj4+ICsJQkFSXzIsCj4+ICsJQkFSXzMsCj4+ICsJQkFSXzQsCj4+ ICsJQkFSXzUKPj4gK307Cj4gCj4gcGNpLWVwZi5oIGhhcyB0aGlzLgo+IFdoeSBkdXBsaWNhdGU/ CgpJIGNhbiB1c2UgdGhhdCBoZWFkZXIgc3VyZS4gVGhhbmtzLgoKPiAKPiAKPiBXaGF0IGVsc2Ug aXMgYmVpbmcgZHVwbGljYXRlZCBmcm9tIFBDSSBjb3JlPwo+IAo+PiArc3RhdGljIGJvb2wgZGlz YWJsZV9tc2l4Owo+PiArbW9kdWxlX3BhcmFtKGRpc2FibGVfbXNpeCwgYm9vbCwgMDY0NCk7Cj4+ ICtNT0RVTEVfUEFSTV9ERVNDKGRpc2FibGVfbXNpeCwgIkRpc2FibGUgTVNJLVggaW50ZXJydXB0 cyIpOwo+IAo+IFdoeT8hCj4gV2UgYXJlIG5vIGFsbG93IG5ldyBtb2R1bGUgcGFyYW1ldGVycyB3 aXRob3V0IHZlcnkgc3Ryb25nIGFyZ3VtZW50cy4KClNpbmNlIHRoaXMgaXMgYSByZWZlcmVuY2Ug ZHJpdmVyIGFuZCBtaWdodCBiZSB1c2VkIHRvIHRlc3QgY3VzdG9taXplZCBIVwpzb2x1dGlvbnMs IEkgYWRkZWQgdGhpcyBwYXJhbWV0ZXIgdG8gYWxsb3cgdGhlIHBvc3NpYmlsaXR5IHRvIHRlc3Qg dGhlIHNvbHV0aW9uCmZvcmNpbmcgdGhlIE1TSSBmZWF0dXJlIGJpbmRpbmcuIFRoaXMgaXMgcmVx dWlyZWQgc3BlY2lhbGx5IGlmIHdobyB3aWxsIHRlc3QKdGhpcyBzb2x1dGlvbiBoYXMgYSBSb290 IENvbXBsZXggd2l0aCBib3RoIGZlYXR1cmVzIGF2YWlsYWJsZSAoTVNJIGFuZCBNU0ktWCksCmJl Y2F1c2UgdGhlIEtlcm5lbCB3aWxsIGdpdmUgYWx3YXlzIHByZWZlcmVuY2UgdG8gTVNJLVggYmlu ZGluZyAoYXNzdW1pbmcgdGhhdAp0aGUgRVAgaGFzIGFsc28gYm90aCBmZWF0dXJlcyBhdmFpbGFi bGUpLgoKPiAKPj4gKwo+PiArc3RhdGljIGludCBkd19lZG1hX3BjaWVfcHJvYmUoc3RydWN0IHBj aV9kZXYgKnBkZXYsCj4+ICsJCQkgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGlk KQo+PiArewo+PiArCWNvbnN0IHN0cnVjdCBkd19lZG1hX3BjaWVfZGF0YSAqcGRhdGEgPSAodm9p ZCAqKXBpZC0+ZHJpdmVyX2RhdGE7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRl djsKPj4gKwlzdHJ1Y3QgZHdfZWRtYV9jaGlwICpjaGlwOwo+PiArCXN0cnVjdCBkd19lZG1hICpk dzsKPj4gKwl1bnNpZ25lZCBpbnQgaXJxX2ZsYWdzID0gUENJX0lSUV9NU0k7Cj4+ICsJaW50IGVy ciwgbnJfaXJxcywgaTsKPj4gKwo+IAo+PiArCWlmICghcGRhdGEpIHsKPj4gKwkJZGV2X2Vycihk ZXYsICIlcyBtaXNzaW5nIGRhdGEgc3RydWN0dXJlXG4iLCBwY2lfbmFtZShwZGV2KSk7Cj4+ICsJ CXJldHVybiAtRUZBVUxUOwo+PiArCX0KPiAKPiBVc2VsZXNzIGNoZWNrLgoKV2h5PyBJdCdzIGp1 c3QgYSBwcmVjYXV0aW9uLCBpc24ndCBpdCBhIGdvb2QgcHJhY3RpY2UgYWx3YXlzIHRvIHRoaW5r IG9mIHRoZQp3b3JzdCBjYXNlPwoKPiAKPj4gKwo+PiArCS8qIEVuYWJsZSBQQ0kgZGV2aWNlICov Cj4+ICsJZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpOwo+PiArCWlmIChlcnIpIHsKPj4g KwkJZGV2X2VycihkZXYsICIlcyBlbmFibGluZyBkZXZpY2UgZmFpbGVkXG4iLCBwY2lfbmFtZShw ZGV2KSk7Cj4+ICsJCXJldHVybiBlcnI7Cj4+ICsJfQo+PiArCj4+ICsJLyogTWFwcGluZyBQQ0kg QkFSIHJlZ2lvbnMgKi8KPj4gKwllcnIgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKHBk YXRhLT5yZ19iYXIpIHwKPj4gKwkJCQkgICAgICAgQklUKHBkYXRhLT5sbF9iYXIpIHwKPj4gKwkJ CQkgICAgICAgQklUKHBkYXRhLT5kdF9iYXIpLAo+PiArCQkJCSBwY2lfbmFtZShwZGV2KSk7Cj4+ ICsJaWYgKGVycikgewo+IAo+PiArCQlkZXZfZXJyKGRldiwgIiVzIGVETUEgQkFSIEkvTyByZW1h cHBpbmcgZmFpbGVkXG4iLAo+PiArCQkJcGNpX25hbWUocGRldikpOwo+IAo+IElzbid0IGl0IHBj aV9lcnIoKSA/Cj4gU2FtZSBjb21tZW50IGZvciB0aGUgcmVzdCBzaW1pbGFyIGNhc2VzIGFib3Zl IGFuZCBiZWxvdy4KCk9rLCBJJ2xsIHJlcGxhY2UgYWxsIGRldl8qIGZ1bmN0aW9uIGluIHRoaXMg ZmlsZS4KVGhhbmtzLgoKPiAKPj4gKwkJcmV0dXJuIGVycjsKPj4gKwl9Cj4+ICsKPj4gKwlwY2lf c2V0X21hc3RlcihwZGV2KTsKPj4gKwo+PiArCW5yX2lycXMgPSBwY2lfYWxsb2NfaXJxX3ZlY3Rv cnMocGRldiwgMSwgcGRhdGEtPmlycXNfY250LCBpcnFfZmxhZ3MpOwo+PiArCWlmIChucl9pcnFz IDwgMSkgewo+PiArCQlkZXZfZXJyKGRldiwgIiVzIGZhaWxlZCB0byBhbGxvYyBJUlEgdmVjdG9y IChOdW1iZXIgb2YgSVJRcz0ldSlcbiIsCj4+ICsJCQlwY2lfbmFtZShwZGV2KSwgbnJfaXJxcyk7 Cj4+ICsJCXJldHVybiAtRVBFUk07Cj4+ICsJfQo+PiArCj4+ICsJLyogRGF0YSBzdHJ1Y3R1cmUg aW5pdGlhbGl6YXRpb24gKi8KPj4gKwljaGlwLT5kdyA9IGR3Owo+PiArCWNoaXAtPmRldiA9IGRl djsKPj4gKwljaGlwLT5pZCA9IHBkZXYtPmRldmZuOwo+PiArCWNoaXAtPmlycSA9IHBkZXYtPmly cTsKPj4gKwo+IAo+PiArCWlmICghcGNpbV9pb21hcF90YWJsZShwZGV2KSkKPj4gKwkJcmV0dXJu IC1FQUNDRVM7Cj4gCj4gTmV2ZXIgaGFwcGVuIGNvbmRpdGlvbi4gVGh1cyB1c2VsZXNzLgoKcGNp bV9pb21hcF90YWJsZSgpIGNhbiByZXR1cm4gTlVMTCBpbiBjYXNlIG9mIGFsbG9jYXRpb24gZmFp bHVyZS4gQmVzaWRlcyB0aGF0LAppc24ndCBpdCBhIGdvb2QgcHJhY3RpY2UgYWx3YXlzIHRvIHRo aW5rIG9mIHRoZSB3b3JzdCBjYXNlPwoKPiAKPj4gKwlkZXZfaW5mbyhkZXYsICJEZXNpZ25XYXJl IGVETUEgUENJZSBkcml2ZXIgbG9hZGVkIGNvbXBsZXRlbHlcbiIpOwo+IAo+IFVzZWxlc3MuCgpJ dCdzIGhlbHBmdWwgZm9yIGJyaW5nIHVwLCBJIGNhbiBwYXNzIGl0IHRvIGRiZy4KCj4gCj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGR3X2VkbWFfcGNpZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYg KnBkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IGR3X2VkbWFfY2hpcCAqY2hpcCA9IHBjaV9nZXRfZHJ2 ZGF0YShwZGV2KTsKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+PiArCWlu dCBlcnI7Cj4+ICsKPj4gKwkvKiBTdG9wcGluZyBlRE1BIGRyaXZlciAqLwo+PiArCWVyciA9IGR3 X2VkbWFfcmVtb3ZlKGNoaXApOwo+PiArCWlmIChlcnIpCj4+ICsJCWRldl93YXJuKGRldiwgImNh bid0IHJlbW92ZSBkZXZpY2UgcHJvcGVybHk6ICVkXG4iLCBlcnIpOwo+PiArCj4+ICsJLyogRnJl ZWluZyBJUlFzICovCj4+ICsJcGNpX2ZyZWVfaXJxX3ZlY3RvcnMocGRldik7Cj4+ICsKPj4gKwlk ZXZfaW5mbyhkZXYsICJEZXNpZ25XYXJlIGVETUEgUENJZSBkcml2ZXIgdW5sb2FkZWQgY29tcGxl dGVseVxuIik7Cj4gCj4gRGl0dG8uCgpJdCdzIGhlbHBmdWwgZm9yIGJyaW5nIHVwLCBJIGNhbiBw YXNzIGl0IHRvIGRiZy4KCj4gCj4+ICt9Cj4gCj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwg ZHdfZWRtYV9wY2llX2lkX3RhYmxlKTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVy IGR3X2VkbWFfcGNpZV9kcml2ZXIgPSB7Cj4+ICsJLm5hbWUJCT0gImR3LWVkbWEtcGNpZSIsCj4+ ICsJLmlkX3RhYmxlCT0gZHdfZWRtYV9wY2llX2lkX3RhYmxlLAo+PiArCS5wcm9iZQkJPSBkd19l ZG1hX3BjaWVfcHJvYmUsCj4+ICsJLnJlbW92ZQkJPSBkd19lZG1hX3BjaWVfcmVtb3ZlLAo+IAo+ IFBvd2VyIG1hbmFnZW1lbnQ/CgpJJ3ZlIHJlbW92ZWQgdGhlIHBvd2VyIG1hbmFnZW1lbnQgZm9y IG5vdywgc2luY2Ugd2l0aCBteSBjdXJyZW50IHNldHVwIEkgZG9uJ3QKaGF2ZSB0aGUgbmVjZXNz YXJ5IGNvbmRpdGlvbnMgdG8gdGVzdCBpdC4gSSBwcmVmZXIgbm90IHN1Ym1pdHRpbmcgdGhhdCBj b2RlIGZvciBub3cuCgo+IAo+PiArfTsKPiAKClRoYW5rcyBmb3IgdGhlIGlucHV0cyBBbmR5ISBU aGV5IGhhdmUgYmVlbiBwcmV0dHkgZ29vZCEKClJlZ2FyZHMsCkd1c3Rhdm8K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5ACBCC43387 for ; Mon, 14 Jan 2019 11:42:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1F0372086D for ; Mon, 14 Jan 2019 11:42:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="B5J2We1j" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726515AbfANLmr (ORCPT ); Mon, 14 Jan 2019 06:42:47 -0500 Received: from us01smtprelay-2.synopsys.com ([198.182.47.9]:38684 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726437AbfANLmr (ORCPT ); Mon, 14 Jan 2019 06:42:47 -0500 Received: from mailhost.synopsys.com (mailhost1.synopsys.com [10.12.238.239]) by smtprelay.synopsys.com (Postfix) with ESMTP id 9317624E0F81; Mon, 14 Jan 2019 03:42:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1547466167; bh=tjyI30pq+gRxRfGgJFK8IsypcHtuZc1SmD/n1cUr3EQ=; h=Subject:To:CC:References:From:Date:In-Reply-To:From; b=B5J2We1jSX1Am5t7x7p5W8TKKzg89MpIwwMSee6Ir0g7iLediHeEa+Ku5bSW8FXJM iDASeEpvLLm4WquoaIozi8ORkp26FFIbl8Uk6puqezadC6byDXln9oSNEvbaWXBPrT JK8dplSXzXIpeRWDzvl1QfVZ8XpZONOJYYUqMoLnyaXoR0jZTT1tLm+H0uwP3C3bYH VXVYfVLI3CzppDd9dAzK0ntzGcjMYtL798SW+xZ30B8226a/57UIzfA4YKlWWw/8fP bAV7YCpEozw5ppC0N+/hslcH2C+3KOp15WR+cLhv6JSTPUUXbp+yu2MJqkHDCWqllx Btn6qDcUbML9g== Received: from US01WEHTC2.internal.synopsys.com (us01wehtc2-vip.internal.synopsys.com [10.12.239.238]) by mailhost.synopsys.com (Postfix) with ESMTP id D4294574E; Mon, 14 Jan 2019 03:42:45 -0800 (PST) Received: from DE02WEHTCB.internal.synopsys.com (10.225.19.94) by US01WEHTC2.internal.synopsys.com (10.12.239.237) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 14 Jan 2019 03:42:45 -0800 Received: from DE02WEHTCA.internal.synopsys.com (10.225.19.92) by DE02WEHTCB.internal.synopsys.com (10.225.19.94) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 14 Jan 2019 12:42:43 +0100 Received: from [10.107.25.131] (10.107.25.131) by DE02WEHTCA.internal.synopsys.com (10.225.19.80) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 14 Jan 2019 12:42:43 +0100 Subject: Re: [RFC v3 5/7] dmaengine: Add Synopsys eDMA IP PCIe glue-logic To: Andy Shevchenko , Gustavo Pimentel CC: "linux-pci@vger.kernel.org" , "dmaengine@vger.kernel.org" , Vinod Koul , Dan Williams , Eugeniy Paltsev , Russell King , Niklas Cassel , Lorenzo Pieralisi , Joao Pinto , Jose Abreu , Luis Oliveira , Vitor Soares , Nelson Costa , Pedro Sousa References: <20190111194705.GU9170@smile.fi.intel.com> From: Gustavo Pimentel Message-ID: <916f319b-9e45-6d78-4ecc-850feda84bb3@synopsys.com> Date: Mon, 14 Jan 2019 11:38:02 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <20190111194705.GU9170@smile.fi.intel.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.107.25.131] Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On 11/01/2019 19:47, Andy Shevchenko wrote: > On Fri, Jan 11, 2019 at 07:33:41PM +0100, Gustavo Pimentel wrote: >> Synopsys eDMA IP is normally distributed along with Synopsys PCIe >> EndPoint IP (depends of the use and licensing agreement). >> >> This IP requires some basic configurations, such as: >> - eDMA registers BAR >> - eDMA registers offset >> - eDMA registers size >> - eDMA linked list memory BAR >> - eDMA linked list memory offset >> - eDMA linked list memory sze >> - eDMA data memory BAR >> - eDMA data memory offset >> - eDMA data memory size >> - eDMA version >> - eDMA mode >> - IRQs available for eDMA >> >> As a working example, PCIe glue-logic will attach to a Synopsys PCIe >> EndPoint IP prototype kit (Vendor ID = 0x16c3, Device ID = 0xedda), >> which has built-in an eDMA IP with this default configuration: >> - eDMA registers BAR = 0 >> - eDMA registers offset = 0x00001000 (4 Kbytes) >> - eDMA registers size = 0x00002000 (8 Kbytes) >> - eDMA linked list memory BAR = 2 >> - eDMA linked list memory offset = 0x00000000 (0 Kbytes) >> - eDMA linked list memory size = 0x00800000 (8 Mbytes) >> - eDMA data memory BAR = 2 >> - eDMA data memory offset = 0x00800000 (8 Mbytes) >> - eDMA data memory size = 0x03800000 (56 Mbytes) >> - eDMA version = 0 >> - eDMA mode = EDMA_MODE_UNROLL >> - IRQs = 1 >> >> This driver can be compile as built-in or external module in kernel. >> >> To enable this driver just select DW_EDMA_PCIE option in kernel >> configuration, however it requires and selects automatically DW_EDMA >> option too. >> > >> Changes: >> RFC v1->RFC v2: > > Changes go after '--- ' line. At the last Linux Plumbers Conference there were some subsystem maintainers who asked that the track changes be included in the description as a way to not lose the previous work done. That why I put it before the '---' line, but it's indifferent to me, I can put it after the '---' line. > >> - Replace comments // (C99 style) by /**/ >> - Merge two pcim_iomap_regions() calls into just one call >> - Remove pci_try_set_mwi() call >> - Replace some dev_info() by dev_dbg() to reduce *noise* >> - Remove pci_name(pdev) call after being call dw_edma_remove() >> - Remove all power management support >> - Fix the headers of the .c and .h files according to the most recent >> convention >> - Fix errors and checks pointed out by checkpatch with --strict option >> - Replace patch small description tag from dma by dmaengine >> RFC v2->RFC v3: >> - Fix printk variable of phys_addr_t type >> - Fix missing variable initialization (chan->configured) >> - Change linked list size to 512 Kbytes >> - Add data memory information >> - Add register size information >> - Add comments or improve existing ones >> - Add possibility to work with multiple IRQs feature >> - Replace MSI and MSI-X enable condition by pci_dev_msi_enabled() >> - Replace code to acquire MSI(-X) address and data by >> get_cached_msi_msg() > >> +enum dw_edma_pcie_bar { >> + BAR_0, >> + BAR_1, >> + BAR_2, >> + BAR_3, >> + BAR_4, >> + BAR_5 >> +}; > > pci-epf.h has this. > Why duplicate? I can use that header sure. Thanks. > > > What else is being duplicated from PCI core? > >> +static bool disable_msix; >> +module_param(disable_msix, bool, 0644); >> +MODULE_PARM_DESC(disable_msix, "Disable MSI-X interrupts"); > > Why?! > We are no allow new module parameters without very strong arguments. Since this is a reference driver and might be used to test customized HW solutions, I added this parameter to allow the possibility to test the solution forcing the MSI feature binding. This is required specially if who will test this solution has a Root Complex with both features available (MSI and MSI-X), because the Kernel will give always preference to MSI-X binding (assuming that the EP has also both features available). > >> + >> +static int dw_edma_pcie_probe(struct pci_dev *pdev, >> + const struct pci_device_id *pid) >> +{ >> + const struct dw_edma_pcie_data *pdata = (void *)pid->driver_data; >> + struct device *dev = &pdev->dev; >> + struct dw_edma_chip *chip; >> + struct dw_edma *dw; >> + unsigned int irq_flags = PCI_IRQ_MSI; >> + int err, nr_irqs, i; >> + > >> + if (!pdata) { >> + dev_err(dev, "%s missing data structure\n", pci_name(pdev)); >> + return -EFAULT; >> + } > > Useless check. Why? It's just a precaution, isn't it a good practice always to think of the worst case? > >> + >> + /* Enable PCI device */ >> + err = pcim_enable_device(pdev); >> + if (err) { >> + dev_err(dev, "%s enabling device failed\n", pci_name(pdev)); >> + return err; >> + } >> + >> + /* Mapping PCI BAR regions */ >> + err = pcim_iomap_regions(pdev, BIT(pdata->rg_bar) | >> + BIT(pdata->ll_bar) | >> + BIT(pdata->dt_bar), >> + pci_name(pdev)); >> + if (err) { > >> + dev_err(dev, "%s eDMA BAR I/O remapping failed\n", >> + pci_name(pdev)); > > Isn't it pci_err() ? > Same comment for the rest similar cases above and below. Ok, I'll replace all dev_* function in this file. Thanks. > >> + return err; >> + } >> + >> + pci_set_master(pdev); >> + >> + nr_irqs = pci_alloc_irq_vectors(pdev, 1, pdata->irqs_cnt, irq_flags); >> + if (nr_irqs < 1) { >> + dev_err(dev, "%s failed to alloc IRQ vector (Number of IRQs=%u)\n", >> + pci_name(pdev), nr_irqs); >> + return -EPERM; >> + } >> + >> + /* Data structure initialization */ >> + chip->dw = dw; >> + chip->dev = dev; >> + chip->id = pdev->devfn; >> + chip->irq = pdev->irq; >> + > >> + if (!pcim_iomap_table(pdev)) >> + return -EACCES; > > Never happen condition. Thus useless. pcim_iomap_table() can return NULL in case of allocation failure. Besides that, isn't it a good practice always to think of the worst case? > >> + dev_info(dev, "DesignWare eDMA PCIe driver loaded completely\n"); > > Useless. It's helpful for bring up, I can pass it to dbg. > >> +} >> + >> +static void dw_edma_pcie_remove(struct pci_dev *pdev) >> +{ >> + struct dw_edma_chip *chip = pci_get_drvdata(pdev); >> + struct device *dev = &pdev->dev; >> + int err; >> + >> + /* Stopping eDMA driver */ >> + err = dw_edma_remove(chip); >> + if (err) >> + dev_warn(dev, "can't remove device properly: %d\n", err); >> + >> + /* Freeing IRQs */ >> + pci_free_irq_vectors(pdev); >> + >> + dev_info(dev, "DesignWare eDMA PCIe driver unloaded completely\n"); > > Ditto. It's helpful for bring up, I can pass it to dbg. > >> +} > >> +MODULE_DEVICE_TABLE(pci, dw_edma_pcie_id_table); >> + >> +static struct pci_driver dw_edma_pcie_driver = { >> + .name = "dw-edma-pcie", >> + .id_table = dw_edma_pcie_id_table, >> + .probe = dw_edma_pcie_probe, >> + .remove = dw_edma_pcie_remove, > > Power management? I've removed the power management for now, since with my current setup I don't have the necessary conditions to test it. I prefer not submitting that code for now. > >> +}; > Thanks for the inputs Andy! They have been pretty good! Regards, Gustavo