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: [v3,4/7] dmaengine: stm32-dma: Add DMA/MDMA chaining support From: Pierre Yves MORDRET Message-Id: Date: Tue, 9 Oct 2018 10:40:30 +0200 To: Vinod Cc: Rob Herring , Mark Rutland , Alexandre Torgue , Maxime Coquelin , Dan Williams , devicetree@vger.kernel.org, dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org List-ID: T24gMTAvMDcvMjAxOCAwNjowMCBQTSwgVmlub2Qgd3JvdGU6Cj4gT24gMjgtMDktMTgsIDE1OjAx LCBQaWVycmUtWXZlcyBNT1JEUkVUIHdyb3RlOgo+PiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBv ZiBETUEvTURNQSBjaGFpbmluZyBzdXBwb3J0Lgo+PiBJdCBpbnRyb2R1Y2VzIGFuIGludGVybWVk aWF0ZSB0cmFuc2ZlciBiZXR3ZWVuIHBlcmlwaGVyYWxzIGFuZCBTVE0zMiBETUEuCj4+IFRoaXMg aW50ZXJtZWRpYXRlIHRyYW5zZmVyIGlzIHRyaWdnZXJlZCBieSBTVyBmb3Igc2luZ2xlIE0yRCB0 cmFuc2ZlciBhbmQKPj4gYnkgU1RNMzIgRE1BIElQIGZvciBhbGwgb3RoZXIgbW9kZXMgKHNnLCBj eWNsaWMpIGFuZCBkaXJlY3Rpb24gKEQyTSkuCj4+Cj4+IEEgZ2VuZXJpYyBTUkFNIGFsbG9jYXRv ciBpcyB1c2VkIGZvciB0aGlzIGludGVybWVkaWF0ZSBidWZmZXIKPj4gRWFjaCBETUEgY2hhbm5l bCB3aWxsIGJlIGFibGUgdG8gZGVmaW5lIGl0cyBTUkFNIG5lZWRzIHRvIGFjaGlldmUgY2hhaW5p bmcKPj4gZmVhdHVyZSA6ICgyIF4gb3JkZXIpICogUEFHRV9TSVpFLgo+PiBGb3IgY3ljbGljLCBT UkFNIGJ1ZmZlciBpcyBkZXJpdmVkIGZyb20gcGVyaW9kIGxlbmd0aCAocm91bmRlZCBvbgo+PiBQ QUdFX1NJWkUpLgo+IAo+IFNvIElJVUMsIHlvdSBjaGFpbiB0d28gZG1hIHR4bnMgdG9nZXRoZXIg YW5kIHRyYW5zZmVyIGRhdGEgdmlhIGFuIFNSQU0/CgpDb3JyZWN0LiBvbmUgRE1BIGlzIERNQXYy IChzdG0zMi1kbWEpIGFuZCB0aGUgb3RoZXIgaXMgTURNQShzdG0zMi1tZG1hKS4KSW50ZXJtZWRp YXRlIHRyYW5zZmVyIGlzIGJldHdlZW4gZGV2aWNlIGFuZCBtZW1vcnkuClRoaXMgaW50ZXJtZWRp YXRlIHRyYW5zZmVyIGlzIHVzaW5nIFNEUkFNLgoKPiAKPj4KPj4gU2lnbmVkLW9mZi1ieTogUGll cnJlLVl2ZXMgTU9SRFJFVCA8cGllcnJlLXl2ZXMubW9yZHJldEBzdC5jb20+Cj4+IC0tLQo+PiAg IFZlcnNpb24gaGlzdG9yeToKPj4gICAgIHYzOgo+PiAgICAgICAgKiBTb2x2ZSBLQnVpbGQgd2Fy bmluZwo+PiAgICAgdjI6Cj4+ICAgICB2MToKPj4gICAgICAgICogSW5pdGlhbAo+PiAtLS0KPj4g LS0tCj4+ICBkcml2ZXJzL2RtYS9zdG0zMi1kbWEuYyB8IDg3OSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KPiAKPiB0aGF0IGlzIGEgbG90IG9mIGNoYW5n ZSBmb3IgYSBkcml2ZXIsIGNvbnNpZGVyIHNwbGl0dGluZyBpdCB1cAo+IGxvZ2ljYWxseSBpbiBz bWFsbGVyIGNoYW5nZXMuLi4KPiAKClRoaXMgZmVhdHVyZSBpcyByYXRoZXIgbW9ub2xpdGhpYy4g RGlmZmljdWx0IHRvIHNwbGl0IHVwLgpBbGwgdGhlIGNvZGUgaXMgcmVxdWlyZWQgYXQgb25jZS4K Cj4+ICAxIGZpbGUgY2hhbmdlZCwgNzcyIGluc2VydGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkK Pj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3N0bTMyLWRtYS5jIGIvZHJpdmVycy9kbWEv c3RtMzItZG1hLmMKPj4gaW5kZXggMzc5ZThkNS4uODVlODFjNCAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9kbWEvc3RtMzItZG1hLmMKPj4gKysrIGIvZHJpdmVycy9kbWEvc3RtMzItZG1hLmMKPj4g QEAgLTE1LDExICsxNSwxNCBAQAo+PiAgI2luY2x1ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPgo+PiAg I2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvZXJyLmg+ Cj4+ICsjaW5jbHVkZSA8bGludXgvZ2VuYWxsb2MuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9pbml0 Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvamlm Zmllcy5oPgo+PiAgI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9vZi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L29m X2FkZHJlc3MuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPj4gICNpbmNsdWRl IDxsaW51eC9vZl9kbWEuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K Pj4gQEAgLTExOCw2ICsxMjEsNyBAQAo+PiAgI2RlZmluZSBTVE0zMl9ETUFfRklGT19USFJFU0hP TERfRlVMTAkJCTB4MDMKPj4gIAo+PiAgI2RlZmluZSBTVE0zMl9ETUFfTUFYX0RBVEFfSVRFTVMJ MHhmZmZmCj4+ICsjZGVmaW5lIFNUTTMyX0RNQV9TUkFNX0dSQU5VTEFSSVRZCVBBR0VfU0laRQo+ PiAgLyoKPj4gICAqIFZhbGlkIHRyYW5zZmVyIHN0YXJ0cyBmcm9tIEAwIHRvIEAweEZGRkUgbGVh ZGluZyB0byB1bmFsaWduZWQgc2NhdHRlcgo+PiAgICogZ2F0aGVyIGF0IGJvdW5kYXJ5LiBUaHVz IGl0J3Mgc2FmZXIgdG8gcm91bmQgZG93biB0aGlzIHZhbHVlIG9uIEZJRk8KPj4gQEAgLTEzNSw2 ICsxMzksMTIgQEAKPj4gIC8qIERNQSBGZWF0dXJlcyAqLwo+PiAgI2RlZmluZSBTVE0zMl9ETUFf VEhSRVNIT0xEX0ZUUl9NQVNLCUdFTk1BU0soMSwgMCkKPj4gICNkZWZpbmUgU1RNMzJfRE1BX1RI UkVTSE9MRF9GVFJfR0VUKG4pCSgobikgJiBTVE0zMl9ETUFfVEhSRVNIT0xEX0ZUUl9NQVNLKQo+ PiArI2RlZmluZSBTVE0zMl9ETUFfTURNQV9DSEFJTl9GVFJfTUFTSwlCSVQoMikKPj4gKyNkZWZp bmUgU1RNMzJfRE1BX01ETUFfQ0hBSU5fRlRSX0dFVChuKQkoKChuKSAmIFNUTTMyX0RNQV9NRE1B X0NIQUlOX0ZUUl9NQVNLKSBcCj4+ICsJCQkJCSA+PiAyKQo+PiArI2RlZmluZSBTVE0zMl9ETUFf TURNQV9TUkFNX1NJWkVfTUFTSwlHRU5NQVNLKDQsIDMpCj4+ICsjZGVmaW5lIFNUTTMyX0RNQV9N RE1BX1NSQU1fU0laRV9HRVQobikJKCgobikgJiBTVE0zMl9ETUFfTURNQV9TUkFNX1NJWkVfTUFT SykgXAo+PiArCQkJCQkgPj4gMykKPj4gIAo+PiAgZW51bSBzdG0zMl9kbWFfd2lkdGggewo+PiAg CVNUTTMyX0RNQV9CWVRFLAo+PiBAQCAtMTc2LDE1ICsxODYsMzEgQEAgc3RydWN0IHN0bTMyX2Rt YV9jaGFuX3JlZyB7Cj4+ICAJdTMyIGRtYV9zZmNyOwo+PiAgfTsKPj4gIAo+PiArc3RydWN0IHN0 bTMyX2RtYV9tZG1hX2Rlc2Mgewo+PiArCXN0cnVjdCBzZ190YWJsZSBzZ3Q7Cj4+ICsJc3RydWN0 IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkZXNjOwo+PiArfTsKPj4gKwo+PiArc3RydWN0IHN0 bTMyX2RtYV9tZG1hIHsKPj4gKwlzdHJ1Y3QgZG1hX2NoYW4gKmNoYW47Cj4+ICsJZW51bSBkbWFf dHJhbnNmZXJfZGlyZWN0aW9uIGRpcjsKPj4gKwlkbWFfYWRkcl90IHNyYW1fYnVmOwo+PiArCXUz MiBzcmFtX3BlcmlvZDsKPj4gKwl1MzIgbnVtX3NnczsKPj4gK307Cj4+ICsKPj4gIHN0cnVjdCBz dG0zMl9kbWFfc2dfcmVxIHsKPj4gLQl1MzIgbGVuOwo+PiArCXN0cnVjdCBzY2F0dGVybGlzdCBz dG0zMl9zZ2xfcmVxOwo+PiAgCXN0cnVjdCBzdG0zMl9kbWFfY2hhbl9yZWcgY2hhbl9yZWc7Cj4+ ICsJc3RydWN0IHN0bTMyX2RtYV9tZG1hX2Rlc2MgbV9kZXNjOwo+PiAgfTsKPj4gIAo+PiAgc3Ry dWN0IHN0bTMyX2RtYV9kZXNjIHsKPj4gIAlzdHJ1Y3QgdmlydF9kbWFfZGVzYyB2ZGVzYzsKPj4g IAlib29sIGN5Y2xpYzsKPj4gIAl1MzIgbnVtX3NnczsKPj4gKwlkbWFfYWRkcl90IGRtYV9idWY7 Cj4+ICsJdm9pZCAqZG1hX2J1Zl9jcHU7Cj4+ICAJc3RydWN0IHN0bTMyX2RtYV9zZ19yZXEgc2df cmVxW107Cj4+ICB9Owo+PiAgCj4+IEBAIC0yMDEsNiArMjI3LDEwIEBAIHN0cnVjdCBzdG0zMl9k bWFfY2hhbiB7Cj4+ICAJdTMyIHRocmVzaG9sZDsKPj4gIAl1MzIgbWVtX2J1cnN0Owo+PiAgCXUz MiBtZW1fd2lkdGg7Cj4+ICsJc3RydWN0IHN0bTMyX2RtYV9tZG1hIG1jaGFuOwo+PiArCXUzMiB1 c2VfbWRtYTsKPj4gKwl1MzIgc3JhbV9zaXplOwo+PiArCXUzMiByZXNpZHVlX2FmdGVyX2RyYWlu Owo+PiAgfTsKPj4gIAo+PiAgc3RydWN0IHN0bTMyX2RtYV9kZXZpY2Ugewo+PiBAQCAtMjEwLDYg KzI0MCw3IEBAIHN0cnVjdCBzdG0zMl9kbWFfZGV2aWNlIHsKPj4gIAlzdHJ1Y3QgcmVzZXRfY29u dHJvbCAqcnN0Owo+PiAgCWJvb2wgbWVtMm1lbTsKPj4gIAlzdHJ1Y3Qgc3RtMzJfZG1hX2NoYW4g Y2hhbltTVE0zMl9ETUFfTUFYX0NIQU5ORUxTXTsKPj4gKwlzdHJ1Y3QgZ2VuX3Bvb2wgKnNyYW1f cG9vbDsKPj4gIH07Cj4+ICAKPj4gIHN0YXRpYyBzdHJ1Y3Qgc3RtMzJfZG1hX2RldmljZSAqc3Rt MzJfZG1hX2dldF9kZXYoc3RydWN0IHN0bTMyX2RtYV9jaGFuICpjaGFuKQo+PiBAQCAtNDk3LDEx ICs1MjgsMTUgQEAgc3RhdGljIHZvaWQgc3RtMzJfZG1hX3N0b3Aoc3RydWN0IHN0bTMyX2RtYV9j aGFuICpjaGFuKQo+PiAgc3RhdGljIGludCBzdG0zMl9kbWFfdGVybWluYXRlX2FsbChzdHJ1Y3Qg ZG1hX2NoYW4gKmMpCj4+ICB7Cj4+ICAJc3RydWN0IHN0bTMyX2RtYV9jaGFuICpjaGFuID0gdG9f c3RtMzJfZG1hX2NoYW4oYyk7Cj4+ICsJc3RydWN0IHN0bTMyX2RtYV9tZG1hICptY2hhbiA9ICZj aGFuLT5tY2hhbjsKPj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiAgCUxJU1RfSEVBRChoZWFk KTsKPj4gIAo+PiAgCXNwaW5fbG9ja19pcnFzYXZlKCZjaGFuLT52Y2hhbi5sb2NrLCBmbGFncyk7 Cj4+ICAKPj4gKwlpZiAoY2hhbi0+dXNlX21kbWEpCj4+ICsJCWRtYWVuZ2luZV90ZXJtaW5hdGVf YXN5bmMobWNoYW4tPmNoYW4pOwo+PiArCj4+ICAJaWYgKGNoYW4tPmJ1c3kpIHsKPj4gIAkJc3Rt MzJfZG1hX3N0b3AoY2hhbik7Cj4+ICAJCWNoYW4tPmRlc2MgPSBOVUxMOwo+PiBAQCAtNTE0LDkg KzU0OSw5NiBAQCBzdGF0aWMgaW50IHN0bTMyX2RtYV90ZXJtaW5hdGVfYWxsKHN0cnVjdCBkbWFf Y2hhbiAqYykKPj4gIAlyZXR1cm4gMDsKPj4gIH0KPj4gIAo+PiArc3RhdGljIHUzMiBzdG0zMl9k bWFfZ2V0X3JlbWFpbmluZ19ieXRlcyhzdHJ1Y3Qgc3RtMzJfZG1hX2NoYW4gKmNoYW4pCj4+ICt7 Cj4+ICsJdTMyIGRtYV9zY3IsIHdpZHRoLCBuZHRyOwo+PiArCXN0cnVjdCBzdG0zMl9kbWFfZGV2 aWNlICpkbWFkZXYgPSBzdG0zMl9kbWFfZ2V0X2RldihjaGFuKTsKPj4gKwo+PiArCWRtYV9zY3Ig PSBzdG0zMl9kbWFfcmVhZChkbWFkZXYsIFNUTTMyX0RNQV9TQ1IoY2hhbi0+aWQpKTsKPj4gKwl3 aWR0aCA9IFNUTTMyX0RNQV9TQ1JfUFNJWkVfR0VUKGRtYV9zY3IpOwo+PiArCW5kdHIgPSBzdG0z Ml9kbWFfcmVhZChkbWFkZXYsIFNUTTMyX0RNQV9TTkRUUihjaGFuLT5pZCkpOwo+PiArCj4+ICsJ cmV0dXJuIG5kdHIgPDwgd2lkdGg7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc3RtMzJfZG1h X21kbWFfZHJhaW4oc3RydWN0IHN0bTMyX2RtYV9jaGFuICpjaGFuKQo+PiArewo+PiArCXN0cnVj dCBzdG0zMl9kbWFfbWRtYSAqbWNoYW4gPSAmY2hhbi0+bWNoYW47Cj4+ICsJc3RydWN0IHN0bTMy X2RtYV9zZ19yZXEgKnNnX3JlcTsKPj4gKwlzdHJ1Y3QgZG1hX2RldmljZSAqZGRldiA9IG1jaGFu LT5jaGFuLT5kZXZpY2U7Cj4+ICsJc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkZXNj ID0gTlVMTDsKPj4gKwllbnVtIGRtYV9zdGF0dXMgc3RhdHVzOwo+PiArCWRtYV9hZGRyX3Qgc3Jj X2J1ZiwgZHN0X2J1ZjsKPj4gKwl1MzIgbWRtYV9yZXNpZHVlLCBtZG1hX3dyb3RlLCBkbWFfdG9f d3JpdGUsIGxlbjsKPj4gKwlzdHJ1Y3QgZG1hX3R4X3N0YXRlIHN0YXRlOwo+PiArCWludCByZXQ7 Cj4+ICsKPj4gKwkvKiBETUEvTURNQSBjaGFpbjogZHJhaW4gcmVtYWluaW5nIGRhdGEgaW4gU1JB TSAqLwo+PiArCj4+ICsJLyogR2V0IHRoZSByZXNpZHVlIG9uIE1ETUEgc2lkZSAqLwo+PiArCXN0 YXR1cyA9IGRtYWVuZ2luZV90eF9zdGF0dXMobWNoYW4tPmNoYW4sIG1jaGFuLT5jaGFuLT5jb29r aWUsICZzdGF0ZSk7Cj4+ICsJaWYgKHN0YXR1cyA9PSBETUFfQ09NUExFVEUpCj4+ICsJCXJldHVy biBzdGF0dXM7Cj4+ICsKPj4gKwltZG1hX3Jlc2lkdWUgPSBzdGF0ZS5yZXNpZHVlOwo+PiArCXNn X3JlcSA9ICZjaGFuLT5kZXNjLT5zZ19yZXFbY2hhbi0+bmV4dF9zZyAtIDFdOwo+PiArCWxlbiA9 IHNnX2RtYV9sZW4oJnNnX3JlcS0+c3RtMzJfc2dsX3JlcSk7Cj4+ICsKPj4gKwkvKgo+PiArCSAq IFRvdGFsID0gbWRtYSBibG9ja3MgKiBzcmFtX3BlcmlvZCArIHJlc3QgKDwgc3JhbV9wZXJpb2Qp Cj4+ICsJICogc28gbWRtYSBibG9ja3MgKiBzcmFtX3BlcmlvZCA9IGxlbiAtIG1kbWEgcmVzaWR1 ZSAtIHJlc3QKPj4gKwkgKi8KPj4gKwltZG1hX3dyb3RlID0gbGVuIC0gbWRtYV9yZXNpZHVlIC0g KGxlbiAlIG1jaGFuLT5zcmFtX3BlcmlvZCk7Cj4+ICsKPj4gKwkvKiBSZW1haW5pbmcgZGF0YSBz dHVjayBpbiBTUkFNICovCj4+ICsJZG1hX3RvX3dyaXRlID0gbWNoYW4tPnNyYW1fcGVyaW9kIC0g c3RtMzJfZG1hX2dldF9yZW1haW5pbmdfYnl0ZXMoY2hhbik7Cj4+ICsJaWYgKGRtYV90b193cml0 ZSA+IDApIHsKPj4gKwkJLyogU3RvcCBETUEgY3VycmVudCBvcGVyYXRpb24gKi8KPj4gKwkJc3Rt MzJfZG1hX2Rpc2FibGVfY2hhbihjaGFuKTsKPj4gKwo+PiArCQkvKiBUZXJtaW5hdGUgY3VycmVu dCBNRE1BIHRvIGluaXRpYXRlIGEgbmV3IG9uZSAqLwo+PiArCQlkbWFlbmdpbmVfdGVybWluYXRl X2FsbChtY2hhbi0+Y2hhbik7Cj4+ICsKPj4gKwkJLyogRG91YmxlIGJ1ZmZlciBtYW5hZ2VtZW50 ICovCj4+ICsJCXNyY19idWYgPSBtY2hhbi0+c3JhbV9idWYgKwo+PiArCQkJICAoKG1kbWFfd3Jv dGUgLyBtY2hhbi0+c3JhbV9wZXJpb2QpICYgMHgxKSAqCj4+ICsJCQkgIG1jaGFuLT5zcmFtX3Bl cmlvZDsKPj4gKwkJZHN0X2J1ZiA9IHNnX2RtYV9hZGRyZXNzKCZzZ19yZXEtPnN0bTMyX3NnbF9y ZXEpICsgbWRtYV93cm90ZTsKPj4gKwo+PiArCQlkZXNjID0gZGRldi0+ZGV2aWNlX3ByZXBfZG1h X21lbWNweShtY2hhbi0+Y2hhbiwKPj4gKwkJCQkJCSAgICBkc3RfYnVmLCBzcmNfYnVmLAo+PiAr CQkJCQkJICAgIGRtYV90b193cml0ZSwKPj4gKwkJCQkJCSAgICBETUFfUFJFUF9JTlRFUlJVUFQp Owo+IAo+IHdoeSB3b3VsZCB5b3UgZG8gdGhhdD8KPiAKPiBJZiBhdCBhbGwgeW91IG5lZWQgdG8g Y3JlYXRlIGFub3RoZSB0eG4sIEkgdGhpbmsgaXQgd291bGQgYmUgZ29vZCB0bwo+IHByZXBhcmUg YSBuZXcgZGVzY3JpcHRvciBhbmQgY2hhaW4gaXQsIG5vdCBjYWxsIHRoZSBkbWFlbmdpbmUgQVBJ cy4uCj4gCgpJbiB0aGlzIFVDLCBETUF2MiBpcyBjb25maWd1cmVkIGluIGN5Y2xpYyBtb2RlIGJl Y2F1c2UgdGhpcyBETUEgZG9lc24ndCB3b3JrCndpdGggaHcgTExJIG9ubHkgc3cuIFRoaXMgaXMg cmVhbGx5IGZvciBwZXJmb3JtYW5jZXMgcmVhc29uIHdlIHVzZSB0aGlzIGN5Y2xpYyBtb2RlLgpU aGlzIHZlcnkgbGFzdCB0eG4gaXMgdG8gZmx1c2ggcmVtYWluaW5nIGJ5dGVzIHN0aWNrIGluIFNE UkFNLgpJIGRvbid0IGJlbGlldmUgSSBjYW4gY2hhaW4gY3ljbGljIGFuZCB0aGlzIGxhc3QgdHhu Lgo=