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: [v7,1/6] dmaengine: xilinx_dma: Check for channel idle state before submitting dma descriptor From: Kedareswara rao Appana Message-Id: <1512624067-13554-2-git-send-email-appanad@xilinx.com> Date: Thu, 7 Dec 2017 10:51:02 +0530 To: dan.j.williams@intel.com, vinod.koul@intel.com, michal.simek@xilinx.com, appanad@xilinx.com, lars@metafoo.de, akinobu.mita@gmail.com, joabreu@synopsys.com, mike.looijmans@topic.nl, kedare06@gmail.com Cc: dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org List-ID: QWRkIHZhcmlhYmxlIGZvciBjaGVja2luZyBjaGFubmVsIGlkbGUgc3RhdGUgdG8gZW5zdXJlIHRo YXQgZG1hCmRlc2NyaXB0b3IgaXMgbm90IHN1Ym1pdHRlZCB3aGVuIGRtYWVuZ2luZSBpcyBpbiBw cm9ncmVzcy4KClRoaXMgd2lsbCBhdm9pZCB0aGUgcG9sbGluZyBmb3IgYSBiaXQgaW4gdGhlIHN0 YXR1cyByZWdpc3RlciB0byBrbm93CmRtYSBzdGF0ZSBpbiB0aGUgZHJpdmVyIGhvdCBwYXRoLgoK UmV2aWV3ZWQtYnk6IEpvc2UgQWJyZXUgPGpvYWJyZXVAc3lub3BzeXMuY29tPgpTaWduZWQtb2Zm LWJ5OiBLZWRhcmVzd2FyYSByYW8gQXBwYW5hIDxhcHBhbmFkQHhpbGlueC5jb20+Ci0tLQpDaGFu Z2VzIGZvciB2NzoKLS0tPiBOb25lLgpDaGFuZ2VzIGZvciB2NjoKLS0tPiBVcGRhdGVkIGNvbW1p dCBtZXNzYWdlIGFzIHN1Z2dlc3RlZCBieSBWaW5vZC4KLS0tPiBBZGRlZCBDaGFubmVsIGlkbGUg dmFyaWFibGUgZGVzY3JpcHRpb24gaW4gdGhlIGRyaXZlcgogICAgIGFzIHN1Z2dlc3RlZCBieSBW aW5vZC4KQ2hhbmdlcyBmb3IgdjU6Ci0tLT4gTm9uZS4KQ2hhbmdlcyBmb3IgdjQ6Ci0tLT4gTm9u ZS4KQ2hhbmdlcyBmb3IgdjM6Ci0tLT4gTm9uZS4KQ2hhbmdlcyBmb3IgdjI6Ci0tLT4gQWRkIGlk bGUgY2hlY2sgaW4gdGhlIHJlc2V0IGFzIHN1Z2dlc3RlZCBieSBKb3NlIEFicmV1Ci0tLT4gUmVt b3ZlZCB4aWxpbnhfZG1hX2lzX3J1bm5pbmcveGlsaW54X2RtYV9pc19pZGxlIGNoZWNrcwogICAg aW4gdGhlIGRyaXZlciBhbmQgdXNlZCBjb21tb24gaWRsZSBjaGVja3MgYWNyb3NzIHRoZSBkcml2 ZXIKICAgIGFzIHN1Z2dlc3RlZCBieSBMYXVyZW50IFBpbmNoYXJ0LgoKIGRyaXZlcnMvZG1hL3hp bGlueC94aWxpbnhfZG1hLmMgfCA2MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3hpbGlueC94aWxpbnhfZG1hLmMgYi9kcml2ZXJz L2RtYS94aWxpbngveGlsaW54X2RtYS5jCmluZGV4IDVlZWYxMzMuLmMyNDY1NjMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZG1hL3hpbGlueC94aWxpbnhfZG1hLmMKKysrIGIvZHJpdmVycy9kbWEveGls aW54L3hpbGlueF9kbWEuYwpAQCAtMzIxLDYgKzMyMSw3IEBAIHN0cnVjdCB4aWxpbnhfZG1hX3R4 X2Rlc2NyaXB0b3IgewogICogQGN5Y2xpYzogQ2hlY2sgZm9yIGN5Y2xpYyB0cmFuc2ZlcnMuCiAg KiBAZ2VubG9jazogU3VwcG9ydCBnZW5sb2NrIG1vZGUKICAqIEBlcnI6IENoYW5uZWwgaGFzIGVy cm9ycworICogQGlkbGU6IENoZWNrIGZvciBjaGFubmVsIGlkbGUKICAqIEB0YXNrbGV0OiBDbGVh bnVwIHdvcmsgYWZ0ZXIgaXJxCiAgKiBAY29uZmlnOiBEZXZpY2UgY29uZmlndXJhdGlvbiBpbmZv CiAgKiBAZmx1c2hfb25fZnN5bmM6IEZsdXNoIG9uIEZyYW1lIHN5bmMKQEAgLTM1Miw2ICszNTMs NyBAQCBzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuIHsKIAlib29sIGN5Y2xpYzsKIAlib29sIGdlbmxv Y2s7CiAJYm9vbCBlcnI7CisJYm9vbCBpZGxlOwogCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCB0YXNr bGV0OwogCXN0cnVjdCB4aWxpbnhfdmRtYV9jb25maWcgY29uZmlnOwogCWJvb2wgZmx1c2hfb25f ZnN5bmM7CkBAIC05MzYsMzIgKzkzOCw2IEBAIHN0YXRpYyBlbnVtIGRtYV9zdGF0dXMgeGlsaW54 X2RtYV90eF9zdGF0dXMoc3RydWN0IGRtYV9jaGFuICpkY2hhbiwKIH0KIAogLyoqCi0gKiB4aWxp bnhfZG1hX2lzX3J1bm5pbmcgLSBDaGVjayBpZiBETUEgY2hhbm5lbCBpcyBydW5uaW5nCi0gKiBA Y2hhbjogRHJpdmVyIHNwZWNpZmljIERNQSBjaGFubmVsCi0gKgotICogUmV0dXJuOiAnMScgaWYg cnVubmluZywgJzAnIGlmIG5vdC4KLSAqLwotc3RhdGljIGJvb2wgeGlsaW54X2RtYV9pc19ydW5u aW5nKHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4pCi17Ci0JcmV0dXJuICEoZG1hX2N0cmxf cmVhZChjaGFuLCBYSUxJTlhfRE1BX1JFR19ETUFTUikgJgotCQkgWElMSU5YX0RNQV9ETUFTUl9I QUxURUQpICYmCi0JCShkbWFfY3RybF9yZWFkKGNoYW4sIFhJTElOWF9ETUFfUkVHX0RNQUNSKSAm Ci0JCSBYSUxJTlhfRE1BX0RNQUNSX1JVTlNUT1ApOwotfQotCi0vKioKLSAqIHhpbGlueF9kbWFf aXNfaWRsZSAtIENoZWNrIGlmIERNQSBjaGFubmVsIGlzIGlkbGUKLSAqIEBjaGFuOiBEcml2ZXIg c3BlY2lmaWMgRE1BIGNoYW5uZWwKLSAqCi0gKiBSZXR1cm46ICcxJyBpZiBpZGxlLCAnMCcgaWYg bm90LgotICovCi1zdGF0aWMgYm9vbCB4aWxpbnhfZG1hX2lzX2lkbGUoc3RydWN0IHhpbGlueF9k bWFfY2hhbiAqY2hhbikKLXsKLQlyZXR1cm4gZG1hX2N0cmxfcmVhZChjaGFuLCBYSUxJTlhfRE1B X1JFR19ETUFTUikgJgotCQlYSUxJTlhfRE1BX0RNQVNSX0lETEU7Ci19Ci0KLS8qKgogICogeGls aW54X2RtYV9zdG9wX3RyYW5zZmVyIC0gSGFsdCBETUEgY2hhbm5lbAogICogQGNoYW46IERyaXZl ciBzcGVjaWZpYyBETUEgY2hhbm5lbAogICovCkBAIC0xMDI5LDYgKzEwMDUsOSBAQCBzdGF0aWMg dm9pZCB4aWxpbnhfdmRtYV9zdGFydF90cmFuc2ZlcihzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuICpj aGFuKQogCWlmIChjaGFuLT5lcnIpCiAJCXJldHVybjsKIAorCWlmICghY2hhbi0+aWRsZSkKKwkJ cmV0dXJuOworCiAJaWYgKGxpc3RfZW1wdHkoJmNoYW4tPnBlbmRpbmdfbGlzdCkpCiAJCXJldHVy bjsKIApAQCAtMTA0MCwxMyArMTAxOSw2IEBAIHN0YXRpYyB2b2lkIHhpbGlueF92ZG1hX3N0YXJ0 X3RyYW5zZmVyKHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4pCiAJdGFpbF9zZWdtZW50ID0g bGlzdF9sYXN0X2VudHJ5KCZ0YWlsX2Rlc2MtPnNlZ21lbnRzLAogCQkJCSAgICAgICBzdHJ1Y3Qg eGlsaW54X3ZkbWFfdHhfc2VnbWVudCwgbm9kZSk7CiAKLQkvKiBJZiBpdCBpcyBTRyBtb2RlIGFu ZCBoYXJkd2FyZSBpcyBidXN5LCBjYW5ub3Qgc3VibWl0ICovCi0JaWYgKGNoYW4tPmhhc19zZyAm JiB4aWxpbnhfZG1hX2lzX3J1bm5pbmcoY2hhbikgJiYKLQkgICAgIXhpbGlueF9kbWFfaXNfaWRs ZShjaGFuKSkgewotCQlkZXZfZGJnKGNoYW4tPmRldiwgIkRNQSBjb250cm9sbGVyIHN0aWxsIGJ1 c3lcbiIpOwotCQlyZXR1cm47Ci0JfQotCiAJLyoKIAkgKiBJZiBoYXJkd2FyZSBpcyBpZGxlLCB0 aGVuIGFsbCBkZXNjcmlwdG9ycyBvbiB0aGUgcnVubmluZyBsaXN0cyBhcmUKIAkgKiBkb25lLCBz dGFydCBuZXcgdHJhbnNmZXJzCkBAIC0xMTQzLDYgKzExMTUsOCBAQCBzdGF0aWMgdm9pZCB4aWxp bnhfdmRtYV9zdGFydF90cmFuc2ZlcihzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuICpjaGFuKQogCQls aXN0X3NwbGljZV90YWlsX2luaXQoJmNoYW4tPnBlbmRpbmdfbGlzdCwgJmNoYW4tPmFjdGl2ZV9s aXN0KTsKIAkJY2hhbi0+ZGVzY19wZW5kaW5nY291bnQgPSAwOwogCX0KKworCWNoYW4tPmlkbGUg PSBmYWxzZTsKIH0KIAogLyoqCkBAIC0xMTU4LDYgKzExMzIsOSBAQCBzdGF0aWMgdm9pZCB4aWxp bnhfY2RtYV9zdGFydF90cmFuc2ZlcihzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuICpjaGFuKQogCWlm IChjaGFuLT5lcnIpCiAJCXJldHVybjsKIAorCWlmICghY2hhbi0+aWRsZSkKKwkJcmV0dXJuOwor CiAJaWYgKGxpc3RfZW1wdHkoJmNoYW4tPnBlbmRpbmdfbGlzdCkpCiAJCXJldHVybjsKIApAQCAt MTIwMyw2ICsxMTgwLDcgQEAgc3RhdGljIHZvaWQgeGlsaW54X2NkbWFfc3RhcnRfdHJhbnNmZXIo c3RydWN0IHhpbGlueF9kbWFfY2hhbiAqY2hhbikKIAogCWxpc3Rfc3BsaWNlX3RhaWxfaW5pdCgm Y2hhbi0+cGVuZGluZ19saXN0LCAmY2hhbi0+YWN0aXZlX2xpc3QpOwogCWNoYW4tPmRlc2NfcGVu ZGluZ2NvdW50ID0gMDsKKwljaGFuLT5pZGxlID0gZmFsc2U7CiB9CiAKIC8qKgpAQCAtMTIyMSwx MiArMTE5OSw4IEBAIHN0YXRpYyB2b2lkIHhpbGlueF9kbWFfc3RhcnRfdHJhbnNmZXIoc3RydWN0 IHhpbGlueF9kbWFfY2hhbiAqY2hhbikKIAlpZiAobGlzdF9lbXB0eSgmY2hhbi0+cGVuZGluZ19s aXN0KSkKIAkJcmV0dXJuOwogCi0JLyogSWYgaXQgaXMgU0cgbW9kZSBhbmQgaGFyZHdhcmUgaXMg YnVzeSwgY2Fubm90IHN1Ym1pdCAqLwotCWlmIChjaGFuLT5oYXNfc2cgJiYgeGlsaW54X2RtYV9p c19ydW5uaW5nKGNoYW4pICYmCi0JICAgICF4aWxpbnhfZG1hX2lzX2lkbGUoY2hhbikpIHsKLQkJ ZGV2X2RiZyhjaGFuLT5kZXYsICJETUEgY29udHJvbGxlciBzdGlsbCBidXN5XG4iKTsKKwlpZiAo IWNoYW4tPmlkbGUpCiAJCXJldHVybjsKLQl9CiAKIAloZWFkX2Rlc2MgPSBsaXN0X2ZpcnN0X2Vu dHJ5KCZjaGFuLT5wZW5kaW5nX2xpc3QsCiAJCQkJICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9k ZXNjcmlwdG9yLCBub2RlKTsKQEAgLTEzMjQsNiArMTI5OCw3IEBAIHN0YXRpYyB2b2lkIHhpbGlu eF9kbWFfc3RhcnRfdHJhbnNmZXIoc3RydWN0IHhpbGlueF9kbWFfY2hhbiAqY2hhbikKIAogCWxp c3Rfc3BsaWNlX3RhaWxfaW5pdCgmY2hhbi0+cGVuZGluZ19saXN0LCAmY2hhbi0+YWN0aXZlX2xp c3QpOwogCWNoYW4tPmRlc2NfcGVuZGluZ2NvdW50ID0gMDsKKwljaGFuLT5pZGxlID0gZmFsc2U7 CiB9CiAKIC8qKgpAQCAtMTM4OCw2ICsxMzYzLDcgQEAgc3RhdGljIGludCB4aWxpbnhfZG1hX3Jl c2V0KHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4pCiAJfQogCiAJY2hhbi0+ZXJyID0gZmFs c2U7CisJY2hhbi0+aWRsZSA9IHRydWU7CiAKIAlyZXR1cm4gZXJyOwogfQpAQCAtMTQ2OSw2ICsx NDQ1LDcgQEAgc3RhdGljIGlycXJldHVybl90IHhpbGlueF9kbWFfaXJxX2hhbmRsZXIoaW50IGly cSwgdm9pZCAqZGF0YSkKIAlpZiAoc3RhdHVzICYgWElMSU5YX0RNQV9ETUFTUl9GUk1fQ05UX0lS USkgewogCQlzcGluX2xvY2soJmNoYW4tPmxvY2spOwogCQl4aWxpbnhfZG1hX2NvbXBsZXRlX2Rl c2NyaXB0b3IoY2hhbik7CisJCWNoYW4tPmlkbGUgPSB0cnVlOwogCQljaGFuLT5zdGFydF90cmFu c2ZlcihjaGFuKTsKIAkJc3Bpbl91bmxvY2soJmNoYW4tPmxvY2spOwogCX0KQEAgLTIwMjksNiAr MjAwNiw3IEBAIHN0YXRpYyBpbnQgeGlsaW54X2RtYV90ZXJtaW5hdGVfYWxsKHN0cnVjdCBkbWFf Y2hhbiAqZGNoYW4pCiAKIAkvKiBSZW1vdmUgYW5kIGZyZWUgYWxsIG9mIHRoZSBkZXNjcmlwdG9y cyBpbiB0aGUgbGlzdHMgKi8KIAl4aWxpbnhfZG1hX2ZyZWVfZGVzY3JpcHRvcnMoY2hhbik7CisJ Y2hhbi0+aWRsZSA9IHRydWU7CiAKIAlpZiAoY2hhbi0+Y3ljbGljKSB7CiAJCXJlZyA9IGRtYV9j dHJsX3JlYWQoY2hhbiwgWElMSU5YX0RNQV9SRUdfRE1BQ1IpOwpAQCAtMjM0NCw2ICsyMzIyLDEy IEBAIHN0YXRpYyBpbnQgeGlsaW54X2RtYV9jaGFuX3Byb2JlKHN0cnVjdCB4aWxpbnhfZG1hX2Rl dmljZSAqeGRldiwKIAljaGFuLT5oYXNfc2cgPSB4ZGV2LT5oYXNfc2c7CiAJY2hhbi0+ZGVzY19w ZW5kaW5nY291bnQgPSAweDA7CiAJY2hhbi0+ZXh0X2FkZHIgPSB4ZGV2LT5leHRfYWRkcjsKKwkv KiBUaGlzIHZhcmlhYmxlIGVudXNyZXMgdGhhdCBkZXNjcmlwb3RycyBhcmUgbm90CisJICogU3Vi bWl0ZWQgd2hlbiBkbWEgZW5naW5lIGlzIGluIHByb2dyZXNzLiBUaGlzIHZhcmlhYmxlIGlzCisJ ICogQWRkZWQgdG8gYXZvaWQgcG9sbGxpbmcgZm9yIGEgYml0IGluIHRoZSBzdGF0dXMgcmVnaXN0 ZXIgdG8KKwkgKiBLbm93IGRtYSBzdGF0ZSBpbiB0aGUgZHJpdmVyIGhvdCBwYXRoLgorCSAqLwor CWNoYW4tPmlkbGUgPSB0cnVlOwogCiAJc3Bpbl9sb2NrX2luaXQoJmNoYW4tPmxvY2spOwogCUlO SVRfTElTVF9IRUFEKCZjaGFuLT5wZW5kaW5nX2xpc3QpOwo=