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: [v8,3/7] dmaengine: fsl-qdma: Add qDMA controller driver for Layerscape SoCs From: Vinod Koul Message-Id: <20180827093018.GY2388@vkoul-mobl> Date: Mon, 27 Aug 2018 15:00:18 +0530 To: Wen He Cc: dmaengine@vger.kernel.org, robh+dt@kernel.org, leoyang.li@nxp.com, jiafei.pan@nxp.com, peng.ma@nxp.com List-ID: T24gMTctMDgtMTgsIDEwOjU0LCBXZW4gSGUgd3JvdGU6Cj4gTlhQIFF1ZXVlIERNQSBjb250cm9s bGVyKHFETUEpIG9uIExheWVyc2NhcGUgU29DcyBzdXBwb3J0cyBjaGFubmVsCj4gdmlydHVhbGxp emF0aW9uIGJ5IGFsbG93aW5nIERNQSBqb2JzIHRvIGJlIGVucXVldWVkIGludG8gZGlmZmVyZW50 Cgp0eXBvIHZpcnR1YWxsaXphdGlvbgoKPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+ ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNz Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgoKYWxsIHRoZXNlIG9mXyBoZWFk ZXJzLCBhcmUgYWxsIHJlcXVpcmVkPwoKPiArc3RhdGljIGlubGluZSB1NjQKPiArcWRtYV9jY2Rm X2FkZHJfZ2V0NjQoY29uc3Qgc3RydWN0IGZzbF9xZG1hX2Zvcm1hdCAqY2NkZikKPiArewo+ICsJ cmV0dXJuIGxlNjRfdG9fY3B1KGNjZGYtPmRhdGEpICYgKFU2NF9NQVggPj4gMjQpOwoKc28gd2hh dCBpcyB0aGlzICpzdXBwb3NlZCogdG8gZG8sIGRhdGEgaXMgdTY0IHJpZ2h0PwoKPiArc3RhdGlj IGlubGluZSB2b2lkCj4gK3FkbWFfZGVzY19hZGRyX3NldDY0KHN0cnVjdCBmc2xfcWRtYV9mb3Jt YXQgKmNjZGYsIHU2NCBhZGRyKQo+ICt7Cj4gKwljY2RmLT5hZGRyX2hpID0gdXBwZXJfMzJfYml0 cyhhZGRyKTsKPiArCWNjZGYtPmFkZHJfbG8gPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGFk ZHIpKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1NjQKPiArcWRtYV9jY2RmX2dldF9xdWV1 ZShjb25zdCBzdHJ1Y3QgZnNsX3FkbWFfZm9ybWF0ICpjY2RmKQo+ICt7Cj4gKwlyZXR1cm4gY2Nk Zi0+Y2ZnOGJfdzEgJiBVOF9NQVg7Cgp3aHkgbm90IHJldHVybiB1OD8KCj4gK3N0YXRpYyBzdHJ1 Y3QgZnNsX3FkbWFfcXVldWUgKmZzbF9xZG1hX2FsbG9jX3F1ZXVlX3Jlc291cmNlcygKPiArCQkJ CQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICsJCQkJCXVuc2lnbmVkIGludCBxdWV1 ZV9udW0pCj4gK3sKPiArCXN0cnVjdCBmc2xfcWRtYV9xdWV1ZSAqcXVldWVfaGVhZCwgKnF1ZXVl X3RlbXA7Cj4gKwlpbnQgcmV0LCBpOwo+ICsJdW5zaWduZWQgaW50IHF1ZXVlX3NpemVbRlNMX1FE TUFfUVVFVUVfTUFYXTsKCml0IHdvdWxkIGhlbHAgaW4gcmVhZGFiaWxpdHkgaWYgdGhpcyBpcyBw cmVjZWRpbmcsIGludmVydGVkIGNocmlzdG1hcwp0cmVlIDopCgo+ICsKPiArCWlmIChxdWV1ZV9u dW0gPiBGU0xfUURNQV9RVUVVRV9NQVgpCj4gKwkJcXVldWVfbnVtID0gRlNMX1FETUFfUVVFVUVf TUFYOwo+ICsJcXVldWVfaGVhZCA9IGRldm1fa2NhbGxvYygmcGRldi0+ZGV2LCBxdWV1ZV9udW0s Cj4gKwkJCQlzaXplb2YoKnF1ZXVlX2hlYWQpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghcXVldWVf aGVhZCkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXQgPSBkZXZpY2VfcHJvcGVydHlfcmVh ZF91MzJfYXJyYXkoJnBkZXYtPmRldiwgInF1ZXVlLXNpemVzIiwKPiArCQkJCQlxdWV1ZV9zaXpl LCBxdWV1ZV9udW0pOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkNh bid0IGdldCBxdWV1ZS1zaXplcy5cbiIpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ICsKPiAr CWZvciAoaSA9IDA7IGkgPCBxdWV1ZV9udW07IGkrKykgewo+ICsJCWlmIChxdWV1ZV9zaXplW2ld ID4gRlNMX1FETUFfQ0lSQ1VMQVJfREVTQ19TSVpFX01BWCB8fAo+ICsJCQkgICAgcXVldWVfc2l6 ZVtpXSA8IEZTTF9RRE1BX0NJUkNVTEFSX0RFU0NfU0laRV9NSU4pIHsKPiArCQkJZGV2X2Vycigm cGRldi0+ZGV2LCAiR2V0IHdyb25nIHF1ZXVlLXNpemVzLlxuIik7Cj4gKwkJCXJldHVybiBOVUxM Owo+ICsJCX0KPiArCQlxdWV1ZV90ZW1wID0gcXVldWVfaGVhZCArIGk7Cj4gKwkJcXVldWVfdGVt cC0+Y3EgPSBkbWFfYWxsb2NfY29oZXJlbnQoJnBkZXYtPmRldiwKPiArCQkJCQkJc2l6ZW9mKHN0 cnVjdCBmc2xfcWRtYV9mb3JtYXQpICoKPiArCQkJCQkJcXVldWVfc2l6ZVtpXSwKPiArCQkJCQkJ JnF1ZXVlX3RlbXAtPmJ1c19hZGRyLAo+ICsJCQkJCQlHRlBfS0VSTkVMKTsKPiArCQlpZiAoIXF1 ZXVlX3RlbXAtPmNxKSB7Cj4gKwkJCWRldm1fa2ZyZWUoJnBkZXYtPmRldiwgcXVldWVfaGVhZCk7 Cgp3aHkgZG8geW91IHdhbnQgdG8gZG8gdGhhdD8KCj4gK3N0YXRpYyBzdHJ1Y3QgZnNsX3FkbWFf cXVldWUgKmZzbF9xZG1hX3ByZXBfc3RhdHVzX3F1ZXVlKAo+ICsJCQkJCQlzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ ZGV2Lm9mX25vZGU7Cj4gKwlzdHJ1Y3QgZnNsX3FkbWFfcXVldWUgKnN0YXR1c19oZWFkOwo+ICsJ dW5zaWduZWQgaW50IHN0YXR1c19zaXplOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBvZl9w cm9wZXJ0eV9yZWFkX3UzMihucCwgInN0YXR1cy1zaXplcyIsICZzdGF0dXNfc2l6ZSk7Cj4gKwlp ZiAocmV0KSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiQ2FuJ3QgZ2V0IHN0YXR1cy1zaXpl cy5cbiIpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ICsJaWYgKHN0YXR1c19zaXplID4gRlNM X1FETUFfQ0lSQ1VMQVJfREVTQ19TSVpFX01BWAo+ICsJCQl8fCBzdGF0dXNfc2l6ZSA8IEZTTF9R RE1BX0NJUkNVTEFSX0RFU0NfU0laRV9NSU4pIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJH ZXQgd3Jvbmcgc3RhdHVzX3NpemUuXG4iKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCXN0 YXR1c19oZWFkID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqc3RhdHVzX2hlYWQp LAo+ICsJCQkJCQkJCUdGUF9LRVJORUwpOwoKdGhpcyBpcyBiYWQgb24gbXkgZXllcyEgSG93IGFi b3V0PwoKICAgICAgICBzdGF0dXNfaGVhZCA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpzdGF0dXNfaGVhZCksIEdGUF9L RVJORUwpOwoKZm9yIGhlcmUgYW5kIGZldyBvdGhlciBmb3JtYXQgc3R5bGUgeW91IHVzZWQuIHJ1 bm5pbmcgY2hlY2twYXRjaCB3aXRoCi0tc3RyaWN0IG9wdGlvbiB3b3VsZCBoZWxwIGFzIHdlbGwK Cj4gK3N0YXRpYyBpbnQgZnNsX3FkbWFfcXVldWVfdHJhbnNmZXJfY29tcGxldGUoc3RydWN0IGZz bF9xZG1hX2VuZ2luZSAqZnNsX3FkbWEpCj4gK3sKPiArCXN0cnVjdCBmc2xfcWRtYV9xdWV1ZSAq ZnNsX3F1ZXVlID0gZnNsX3FkbWEtPnF1ZXVlOwo+ICsJc3RydWN0IGZzbF9xZG1hX3F1ZXVlICpm c2xfc3RhdHVzID0gZnNsX3FkbWEtPnN0YXR1czsKPiArCXN0cnVjdCBmc2xfcWRtYV9xdWV1ZSAq dGVtcF9xdWV1ZTsKPiArCXN0cnVjdCBmc2xfcWRtYV9jb21wICpmc2xfY29tcDsKPiArCXN0cnVj dCBmc2xfcWRtYV9mb3JtYXQgKnN0YXR1c19hZGRyOwo+ICsJc3RydWN0IGZzbF9xZG1hX2Zvcm1h dCAqY3NnZl9zcmM7Cj4gKwlzdHJ1Y3QgZnNsX3ByZV9zdGF0dXMgcHJlOwo+ICsJdm9pZCBfX2lv bWVtICpibG9jayA9IGZzbF9xZG1hLT5ibG9ja19iYXNlOwo+ICsJdTMyIHJlZywgaSwgY291bnQ7 Cj4gKwlib29sIGR1cGxpY2F0ZTsKPiArCj4gKwltZW1zZXQoJnByZSwgMCwgc2l6ZW9mKHN0cnVj dCBmc2xfcHJlX3N0YXR1cykpOwo+ICsJY291bnQgPSBGU0xfUURNQV9NQVhfU0laRTsKPiArCj4g Kwl3aGlsZSAoY291bnQtLSkgewo+ICsJCWR1cGxpY2F0ZSA9IDA7Cj4gKwo+ICsJCXJlZyA9IHFk bWFfcmVhZGwoZnNsX3FkbWEsIGJsb2NrICsgRlNMX1FETUFfQlNRU1IpOwo+ICsJCWlmIChyZWcg JiBGU0xfUURNQV9CU1FTUl9RRSkKPiArCQkJcmV0dXJuIDA7Cj4gKwo+ICsJCXN0YXR1c19hZGRy ID0gZnNsX3N0YXR1cy0+dmlydF9oZWFkOwo+ICsJCWlmIChxZG1hX2NjZGZfZ2V0X3F1ZXVlKHN0 YXR1c19hZGRyKSA9PSBwcmUucXVldWUgJiYKPiArCQkJcWRtYV9jY2RmX2FkZHJfZ2V0NjQoc3Rh dHVzX2FkZHIpID09IHByZS5hZGRyKQo+ICsJCQlkdXBsaWNhdGUgPSAxOwoKYmFkIGluZGVudHMg OigKCj4gKwo+ICsJCWkgPSBxZG1hX2NjZGZfZ2V0X3F1ZXVlKHN0YXR1c19hZGRyKTsKPiArCQlw cmUucXVldWUgPSBxZG1hX2NjZGZfZ2V0X3F1ZXVlKHN0YXR1c19hZGRyKTsKPiArCQlwcmUuYWRk ciA9IHFkbWFfY2NkZl9hZGRyX2dldDY0KHN0YXR1c19hZGRyKTsKPiArCQl0ZW1wX3F1ZXVlID0g ZnNsX3F1ZXVlICsgaTsKPiArCQlzcGluX2xvY2soJnRlbXBfcXVldWUtPnF1ZXVlX2xvY2spOwo+ ICsJCWlmIChsaXN0X2VtcHR5KCZ0ZW1wX3F1ZXVlLT5jb21wX3VzZWQpKSB7Cj4gKwkJCWlmICgh ZHVwbGljYXRlKSB7Cj4gKwkJCQlzcGluX3VubG9jaygmdGVtcF9xdWV1ZS0+cXVldWVfbG9jayk7 Cj4gKwkJCQlyZXR1cm4gLUVBR0FJTjsKPiArCQkJfQo+ICsJCX0gZWxzZSB7Cj4gKwkJCWZzbF9j b21wID0gbGlzdF9maXJzdF9lbnRyeSgmdGVtcF9xdWV1ZS0+Y29tcF91c2VkLAo+ICsJCQkJCQkJ c3RydWN0IGZzbF9xZG1hX2NvbXAsCj4gKwkJCQkJCQlsaXN0KTsKPiArCQkJY3NnZl9zcmMgPSBm c2xfY29tcC0+dmlydF9hZGRyICsgMjsKPiArCQkJaWYgKGZzbF9jb21wLT5idXNfYWRkciArIDE2 ICE9IHByZS5hZGRyKSB7Cj4gKwkJCQlpZiAoZHVwbGljYXRlKSB7Cj4gKwkJCQkJc3Bpbl91bmxv Y2soJnRlbXBfcXVldWUtPnF1ZXVlX2xvY2spOwo+ICsJCQkJCXJldHVybiAtRUFHQUlOOwo+ICsJ CQkJfQo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQkJaWYgKGR1cGxpY2F0ZSkgewo+ICsJCQkJcmVn ID0gcWRtYV9yZWFkbChmc2xfcWRtYSwgYmxvY2sgKwo+ICsJCQkJCQlGU0xfUURNQV9CU1FNUik7 Cgp0aGlzIGNvZGUgYmxvY2sgaW5kZW50IHNlZW1zIGNvbXBsZXRlIHdyb25nIG9yIHNvbWV0aGlu ZyBpcyByZWFsbHkKbWVzc2VkIHVwIGhlcmUsIG5vdCBhbGlnbmluZyB3aXRoIGVsc2UgYWJvdmUh Cgo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZnNsX3FkbWFfZXJyb3JfaGFuZGxlcihpbnQgaXJxLCB2 b2lkICpkZXZfaWQpCj4gK3sKPiArCXN0cnVjdCBmc2xfcWRtYV9lbmdpbmUgKmZzbF9xZG1hID0g ZGV2X2lkOwo+ICsJdW5zaWduZWQgaW50IGludHI7Cj4gKwl2b2lkIF9faW9tZW0gKnN0YXR1cyA9 IGZzbF9xZG1hLT5zdGF0dXNfYmFzZTsKPiArCj4gKwlpbnRyID0gcWRtYV9yZWFkbChmc2xfcWRt YSwgc3RhdHVzICsgRlNMX1FETUFfREVEUik7Cj4gKwo+ICsJaWYgKGludHIpCj4gKwkJZGV2X2Vy cihmc2xfcWRtYS0+ZG1hX2Rldi5kZXYsICJETUEgdHJhbnNhY3Rpb24gZXJyb3IhXG4iKTsKPiAr Cj4gKwkvKiBDbGVhciBhbGwgZXJyb3IgY29uZGl0aW9ucyBhbmQgaW50ZXJydXB0cy4gKi8KPiAr CXFkbWFfd3JpdGVsKGZzbF9xZG1hLCBGU0xfUURNQV9ERURSX0NMRUFSLCBzdGF0dXMgKyBGU0xf UURNQV9ERURSKTsKCmNsZWFyIGV2ZW4gaWYgaW50ciBpcyBub3Qgc2V0PwoKPiArc3RhdGljIGVu dW0gZG1hX3N0YXR1cyBmc2xfcWRtYV90eF9zdGF0dXMoc3RydWN0IGRtYV9jaGFuICpjaGFuLAo+ ICsJCWRtYV9jb29raWVfdCBjb29raWUsIHN0cnVjdCBkbWFfdHhfc3RhdGUgKnR4c3RhdGUpCj4g K3sKPiArCWVudW0gZG1hX3N0YXR1cyByZXQ7Cj4gKwo+ICsJcmV0ID0gZG1hX2Nvb2tpZV9zdGF0 dXMoY2hhbiwgY29va2llLCB0eHN0YXRlKTsKPiArCWlmIChyZXQgPT0gRE1BX0NPTVBMRVRFIHx8 ICF0eHN0YXRlKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIHJldDsKCiAgICAgICAg cmV0dXJuIGRtYV9jb29raWVfc3RhdHVzKCkKCm9yIHVzZSBkbWFfY29va2llX3N0YXR1cyBhcyB5 b3VyIHN0YXR1cyBmbj8K