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,2/2] dmaengine: fsl-edma: add ColdFire mcf5441x edma support From: Angelo Dureghello Message-Id: <20180703103716.20482-2-angelo@sysam.it> Date: Tue, 3 Jul 2018 12:37:16 +0200 To: vinod.koul@linaro.org Cc: dmaengine@vger.kernel.org, linux-m68k@vger.kernel.org, Angelo Dureghello List-ID: VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIENvbGRGaXJlIG1jZjU0NDF4LWZhbWlseSBlZG1h Cm1vZHVsZS4KClRoZSBDb2xkRmlyZSBlZG1hIG1vZHVsZSBpcyBzbGlnaHRseSBkaWZmZXJlbnQg ZnJvbSBmc2wtZWRtYSwKc28gYSBuZXcgZHJpdmVyIGlzIGFkZGVkLiBCdXQgbW9zdCBvZiB0aGUg Y29kZSBpcyBjb21tb24KYmV0d2VlbiBmc2wtZWRtYSBhbmQgbWNmLWVkbWEgc28gaXQgaGFzIGJl ZW4gY29sbGVjdGVkIGludG8gYQpzZXBhcmF0ZSBjb21tb24gbW9kdWxlIGZzbC1lZG1hLWNvbW1v biAocGF0Y2ggMS8yKS4KClNpZ25lZC1vZmYtYnk6IEFuZ2VsbyBEdXJlZ2hlbGxvIDxhbmdlbG9A c3lzYW0uaXQ+Ci0tLQpDaGFuZ2VzIGZvciB2MjoKLSBwYXRjaCBzcGxpdHRlZCBpbnRvIDQKLSBh ZGQgbWNmLWVkbWEgYXMgbWluaW1hbCBkaWZmZXJlbnQgcGFydHMgZnJvbSBmc2wtZWRtYQoKQ2hh bmdlcyBmb3IgdjM6Cm5vbmUKCkNoYW5nZXMgZm9yIHY0OgotIHBhdGNoIHNpbXBsaWZpZWQgZnJv bSA0LzQgaW50byAyLzIKLSBjb2xsZWN0aW5nIGFsbCB0aGUgbWNmLWVkbWEtcmVsYXRlZCBjaGFu Z2VzCgpDaGFuZ2VzIGZvciB2NToKbm9uZQoKQ2hhbmdlcyBmb3IgdjY6Ci0gYWRqdXN0ZWQgY29t bWVudCBoZWFkZXIKLSBmaXhlZCBiaXQgc2hpZnQgd2l0aCBCSVQoKQotIHdlIG5lZWQgdG8gZnJl ZSB0aGUgaW50ZXJydXB0cyBhdCByZW1vdmUoKSwgc28gcmVtb3ZlZCBhbGwgZGV2bV8KICBpbnRl cnJ1cHQgcmVsYXRlZCBjYWxscwoKQ2hhbmdlcyBmb3Igdjc6Cm5vbmUKLS0tCiBkcml2ZXJzL2Rt YS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKwogZHJpdmVycy9kbWEvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZG1hL21jZi1lZG1h LmMgICAgICAgICAgICAgICAgICAgICB8IDMxNSArKysrKysrKysrKysrKysrKysrKysKIGluY2x1 ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtbWNmLWVkbWEuaCB8ICAzOCArKysKIDQgZmlsZXMg Y2hhbmdlZCwgMzY1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Rt YS9tY2YtZWRtYS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9k YXRhL2RtYS1tY2YtZWRtYS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvS2NvbmZpZyBiL2Ry aXZlcnMvZG1hL0tjb25maWcKaW5kZXggY2ExNjgwYWZhMjBhLi4yM2Y0NDQ2MDg1MTQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZG1hL0tjb25maWcKKysrIGIvZHJpdmVycy9kbWEvS2NvbmZpZwpAQCAt MzIwLDYgKzMyMCwxNyBAQCBjb25maWcgTFBDMThYWF9ETUFNVVgKIAkgIEVuYWJsZSBzdXBwb3J0 IGZvciBETUEgb24gTlhQIExQQzE4eHgvNDN4eCBwbGF0Zm9ybXMKIAkgIHdpdGggUEwwODAgYW5k IG11bHRpcGxleGVkIERNQSByZXF1ZXN0IGxpbmVzLgogCitjb25maWcgTUNGX0VETUEKKyAgICAg ICAgdHJpc3RhdGUgIkZyZWVzY2FsZSBlRE1BIGVuZ2luZSBzdXBwb3J0LCBDb2xkRmlyZSBtY2Y1 NDQxeCBTb0NzIgorICAgICAgICBkZXBlbmRzIG9uIE01NDQxeAorICAgICAgICBzZWxlY3QgRE1B X0VOR0lORQorICAgICAgICBzZWxlY3QgRE1BX1ZJUlRVQUxfQ0hBTk5FTFMKKyAgICAgICAgaGVs cAorICAgICAgICAgIFN1cHBvcnQgdGhlIEZyZWVzY2FsZSBDb2xkRmlyZSBlRE1BIGVuZ2luZSwg NjQtY2hhbm5lbAorICAgICAgICAgIGltcGxlbWVudGF0aW9uIHRoYXQgcGVyZm9ybXMgY29tcGxl eCBkYXRhIHRyYW5zZmVycyB3aXRoCisgICAgICAgICAgbWluaW1hbCBpbnRlcnZlbnRpb24gZnJv bSBhIGhvc3QgcHJvY2Vzc29yLgorICAgICAgICAgIFRoaXMgbW9kdWxlIGNhbiBiZSBmb3VuZCBv biBGcmVlc2NhbGUgQ29sZEZpcmUgbWNmNTQ0MXggU29Dcy4KKwogY29uZmlnIE1NUF9QRE1BCiAJ Ym9vbCAiTU1QIFBETUEgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIEFSQ0hfTU1QIHx8IEFSQ0hfUFhB IHx8IENPTVBJTEVfVEVTVApkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvTWFrZWZpbGUgYi9kcml2 ZXJzL2RtYS9NYWtlZmlsZQppbmRleCA2NjAyMmY1OWZjYTQuLmQ5N2YzMTdmNGIzNCAxMDA2NDQK LS0tIGEvZHJpdmVycy9kbWEvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9kbWEvTWFrZWZpbGUKQEAg LTMyLDYgKzMyLDcgQEAgb2JqLSQoQ09ORklHX0RXX0RNQUNfQ09SRSkgKz0gZHcvCiBvYmotJChD T05GSUdfRVA5M1hYX0RNQSkgKz0gZXA5M3h4X2RtYS5vCiBvYmotJChDT05GSUdfRlNMX0RNQSkg Kz0gZnNsZG1hLm8KIG9iai0kKENPTkZJR19GU0xfRURNQSkgKz0gZnNsLWVkbWEubyBmc2wtZWRt YS1jb21tb24ubworb2JqLSQoQ09ORklHX01DRl9FRE1BKSArPSBtY2YtZWRtYS5vIGZzbC1lZG1h LWNvbW1vbi5vCiBvYmotJChDT05GSUdfRlNMX1JBSUQpICs9IGZzbF9yYWlkLm8KIG9iai0kKENP TkZJR19IU1VfRE1BKSArPSBoc3UvCiBvYmotJChDT05GSUdfSU1HX01EQ19ETUEpICs9IGltZy1t ZGMtZG1hLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL21jZi1lZG1hLmMgYi9kcml2ZXJzL2Rt YS9tY2YtZWRtYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzFl NTMxN2E4ZjkwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9kbWEvbWNmLWVkbWEuYwpAQCAt MCwwICsxLDMxNSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8vCisv LyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jCisv LyBDb3B5cmlnaHQgKGMpIDIwMTcgU3lzYW0sIEFuZ2VsbyBEdXJlZ2hlbGxvICA8YW5nZWxvQHN5 c2FtLml0PgorCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvaW50 ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hZW5naW5lLmg+CisjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS9kbWEtbWNm LWVkbWEuaD4KKworI2luY2x1ZGUgImZzbC1lZG1hLWNvbW1vbi5oIgorCisjZGVmaW5lIEVETUFf Q0hBTk5FTFMJCTY0CisjZGVmaW5lIEVETUFfTUFTS19DSCh4KQkJKCh4KSAmIEdFTk1BU0soNSwg MCkpCisKK3N0YXRpYyBpcnFyZXR1cm5fdCBtY2ZfZWRtYV90eF9oYW5kbGVyKGludCBpcnEsIHZv aWQgKmRldl9pZCkKK3sKKwlzdHJ1Y3QgZnNsX2VkbWFfZW5naW5lICptY2ZfZWRtYSA9IGRldl9p ZDsKKwlzdHJ1Y3QgZWRtYV9yZWdzICpyZWdzID0gJm1jZl9lZG1hLT5yZWdzOworCXVuc2lnbmVk IGludCBjaDsKKwlzdHJ1Y3QgZnNsX2VkbWFfY2hhbiAqbWNmX2NoYW47CisJdTY0IGludG1hcDsK KworCWludG1hcCA9IGlvcmVhZDMyKHJlZ3MtPmludGgpOworCWludG1hcCA8PD0gMzI7CisJaW50 bWFwIHw9IGlvcmVhZDMyKHJlZ3MtPmludGwpOworCWlmICghaW50bWFwKQorCQlyZXR1cm4gSVJR X05PTkU7CisKKwlmb3IgKGNoID0gMDsgY2ggPCBtY2ZfZWRtYS0+bl9jaGFuczsgY2grKykgewor CQlpZiAoaW50bWFwICYgQklUKGNoKSkgeworCQkJaW93cml0ZTgoRURNQV9NQVNLX0NIKGNoKSwg cmVncy0+Y2ludCk7CisKKwkJCW1jZl9jaGFuID0gJm1jZl9lZG1hLT5jaGFuc1tjaF07CisKKwkJ CXNwaW5fbG9jaygmbWNmX2NoYW4tPnZjaGFuLmxvY2spOworCQkJaWYgKCFtY2ZfY2hhbi0+ZWRl c2MtPmlzY3ljbGljKSB7CisJCQkJbGlzdF9kZWwoJm1jZl9jaGFuLT5lZGVzYy0+dmRlc2Mubm9k ZSk7CisJCQkJdmNoYW5fY29va2llX2NvbXBsZXRlKCZtY2ZfY2hhbi0+ZWRlc2MtPnZkZXNjKTsK KwkJCQltY2ZfY2hhbi0+ZWRlc2MgPSBOVUxMOworCQkJCW1jZl9jaGFuLT5zdGF0dXMgPSBETUFf Q09NUExFVEU7CisJCQkJbWNmX2NoYW4tPmlkbGUgPSB0cnVlOworCQkJfSBlbHNlIHsKKwkJCQl2 Y2hhbl9jeWNsaWNfY2FsbGJhY2soJm1jZl9jaGFuLT5lZGVzYy0+dmRlc2MpOworCQkJfQorCisJ CQlpZiAoIW1jZl9jaGFuLT5lZGVzYykKKwkJCQlmc2xfZWRtYV94ZmVyX2Rlc2MobWNmX2NoYW4p OworCisJCQlzcGluX3VubG9jaygmbWNmX2NoYW4tPnZjaGFuLmxvY2spOworCQl9CisJfQorCisJ cmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgbWNmX2VkbWFfZXJy X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQoreworCXN0cnVjdCBmc2xfZWRtYV9lbmdp bmUgKm1jZl9lZG1hID0gZGV2X2lkOworCXN0cnVjdCBlZG1hX3JlZ3MgKnJlZ3MgPSAmbWNmX2Vk bWEtPnJlZ3M7CisJdW5zaWduZWQgaW50IGVyciwgY2g7CisKKwllcnIgPSBpb3JlYWQzMihyZWdz LT5lcnJsKTsKKwlpZiAoIWVycikKKwkJcmV0dXJuIElSUV9OT05FOworCisJZm9yIChjaCA9IDA7 IGNoIDwgKEVETUFfQ0hBTk5FTFMgLyAyKTsgY2grKykgeworCQlpZiAoZXJyICYgQklUKGNoKSkg eworCQkJZnNsX2VkbWFfZGlzYWJsZV9yZXF1ZXN0KCZtY2ZfZWRtYS0+Y2hhbnNbY2hdKTsKKwkJ CWlvd3JpdGU4KEVETUFfQ0VSUl9DRVJSKGNoKSwgcmVncy0+Y2Vycik7CisJCQltY2ZfZWRtYS0+ Y2hhbnNbY2hdLnN0YXR1cyA9IERNQV9FUlJPUjsKKwkJCW1jZl9lZG1hLT5jaGFuc1tjaF0uaWRs ZSA9IHRydWU7CisJCX0KKwl9CisKKwllcnIgPSBpb3JlYWQzMihyZWdzLT5lcnJoKTsKKwlpZiAo IWVycikKKwkJcmV0dXJuIElSUV9OT05FOworCisJZm9yIChjaCA9IChFRE1BX0NIQU5ORUxTIC8g Mik7IGNoIDwgRURNQV9DSEFOTkVMUzsgY2grKykgeworCQlpZiAoZXJyICYgKEJJVChjaCAtIChF RE1BX0NIQU5ORUxTIC8gMikpKSkgeworCQkJZnNsX2VkbWFfZGlzYWJsZV9yZXF1ZXN0KCZtY2Zf ZWRtYS0+Y2hhbnNbY2hdKTsKKwkJCWlvd3JpdGU4KEVETUFfQ0VSUl9DRVJSKGNoKSwgcmVncy0+ Y2Vycik7CisJCQltY2ZfZWRtYS0+Y2hhbnNbY2hdLnN0YXR1cyA9IERNQV9FUlJPUjsKKwkJCW1j Zl9lZG1hLT5jaGFuc1tjaF0uaWRsZSA9IHRydWU7CisJCX0KKwl9CisKKwlyZXR1cm4gSVJRX0hB TkRMRUQ7Cit9CisKK3N0YXRpYyBpbnQgbWNmX2VkbWFfaXJxX2luaXQoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldiwKKwkJCQlzdHJ1Y3QgZnNsX2VkbWFfZW5naW5lICptY2ZfZWRtYSkKK3sK KwlpbnQgcmV0ID0gMCwgaTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKworCXJlcyA9IHBsYXRm b3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwKKwkJCQlJT1JFU09VUkNFX0lSUSwgImVkbWEt dHgtMDAtMTUiKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIC0xOworCisJZm9yIChyZXQgPSAwLCBp ID0gcmVzLT5zdGFydDsgaSA8PSByZXMtPmVuZDsgKytpKQorCQlyZXQgfD0gcmVxdWVzdF9pcnEo aSwgbWNmX2VkbWFfdHhfaGFuZGxlciwgMCwgImVETUEiLCBtY2ZfZWRtYSk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRl diwKKwkJCUlPUkVTT1VSQ0VfSVJRLCAiZWRtYS10eC0xNi01NSIpOworCWlmICghcmVzKQorCQly ZXR1cm4gLTE7CisKKwlmb3IgKHJldCA9IDAsIGkgPSByZXMtPnN0YXJ0OyBpIDw9IHJlcy0+ZW5k OyArK2kpCisJCXJldCB8PSByZXF1ZXN0X2lycShpLCBtY2ZfZWRtYV90eF9oYW5kbGVyLCAwLCAi ZURNQSIsIG1jZl9lZG1hKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gcGxh dGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgImVkbWEtdHgtNTYtNjMiKTsKKwlpZiAocmV0ICE9 IC1FTlhJTykgeworCQlyZXQgPSByZXF1ZXN0X2lycShyZXQsIG1jZl9lZG1hX3R4X2hhbmRsZXIs CisJCQkJICAwLCAiZURNQSIsIG1jZl9lZG1hKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7 CisJfQorCisJcmV0ID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgImVkbWEtZXJyIik7 CisJaWYgKHJldCAhPSAtRU5YSU8pIHsKKwkJcmV0ID0gcmVxdWVzdF9pcnEocmV0LCBtY2ZfZWRt YV9lcnJfaGFuZGxlciwKKwkJCQkgIDAsICJlRE1BIiwgbWNmX2VkbWEpOworCQlpZiAocmV0KQor CQkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbWNmX2Vk bWFfaXJxX2ZyZWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKKwkJCQlzdHJ1Y3QgZnNs X2VkbWFfZW5naW5lICptY2ZfZWRtYSkKK3sKKwlpbnQgaXJxOworCXN0cnVjdCByZXNvdXJjZSAq cmVzOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LAorCQkJSU9S RVNPVVJDRV9JUlEsICJlZG1hLXR4LTAwLTE1Iik7CisJaWYgKHJlcykgeworCQlmb3IgKGlycSA9 IHJlcy0+c3RhcnQ7IGlycSA8PSByZXMtPmVuZDsgaXJxKyspCisJCQlmcmVlX2lycShpcnEsIG1j Zl9lZG1hKTsKKwl9CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYs CisJCQlJT1JFU09VUkNFX0lSUSwgImVkbWEtdHgtMTYtNTUiKTsKKwlpZiAocmVzKSB7CisJCWZv ciAoaXJxID0gcmVzLT5zdGFydDsgaXJxIDw9IHJlcy0+ZW5kOyBpcnErKykKKwkJCWZyZWVfaXJx KGlycSwgbWNmX2VkbWEpOworCX0KKworCWlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKHBk ZXYsICJlZG1hLXR4LTU2LTYzIik7CisJaWYgKGlycSAhPSAtRU5YSU8pCisJCWZyZWVfaXJxKGly cSwgbWNmX2VkbWEpOworCisJaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgImVk bWEtZXJyIik7CisJaWYgKGlycSAhPSAtRU5YSU8pCisJCWZyZWVfaXJxKGlycSwgbWNmX2VkbWEp OworfQorCitzdGF0aWMgaW50IG1jZl9lZG1hX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCit7CisJc3RydWN0IG1jZl9lZG1hX3BsYXRmb3JtX2RhdGEgKnBkYXRhOworCXN0cnVj dCBmc2xfZWRtYV9lbmdpbmUgKm1jZl9lZG1hOworCXN0cnVjdCBmc2xfZWRtYV9jaGFuICptY2Zf Y2hhbjsKKwlzdHJ1Y3QgZWRtYV9yZWdzICpyZWdzOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOwor CWludCByZXQsIGksIGxlbiwgY2hhbnM7CisKKwlwZGF0YSA9IGRldl9nZXRfcGxhdGRhdGEoJnBk ZXYtPmRldik7CisJaWYgKCFwZGF0YSkKKwkJcmV0dXJuIFBUUl9FUlIocGRhdGEpOworCisJY2hh bnMgPSBwZGF0YS0+ZG1hX2NoYW5uZWxzOworCWxlbiA9IHNpemVvZigqbWNmX2VkbWEpICsgc2l6 ZW9mKCptY2ZfY2hhbikgKiBjaGFuczsKKwltY2ZfZWRtYSA9IGRldm1fa3phbGxvYygmcGRldi0+ ZGV2LCBsZW4sIEdGUF9LRVJORUwpOworCWlmICghbWNmX2VkbWEpCisJCXJldHVybiAtRU5PTUVN OworCisJbWNmX2VkbWEtPm5fY2hhbnMgPSBjaGFuczsKKworCS8qIFNldCB1cCB2ZXJzaW9uIGZv ciBDb2xkRmlyZSBlZG1hICovCisJbWNmX2VkbWEtPnZlcnNpb24gPSB2MjsKKwltY2ZfZWRtYS0+ YmlnX2VuZGlhbiA9IDE7CisKKwlpZiAoIW1jZl9lZG1hLT5uX2NoYW5zKSB7CisJCWRldl9pbmZv KCZwZGV2LT5kZXYsICJzZXR0aW5nIGRlZmF1bHQgY2hhbm5lbCBudW1iZXIgdG8gNjQiKTsKKwkJ bWNmX2VkbWEtPm5fY2hhbnMgPSA2NDsKKwl9CisKKwltdXRleF9pbml0KCZtY2ZfZWRtYS0+ZnNs X2VkbWFfbXV0ZXgpOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsKKworCW1jZl9lZG1hLT5tZW1iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291 cmNlKCZwZGV2LT5kZXYsIHJlcyk7CisJaWYgKElTX0VSUihtY2ZfZWRtYS0+bWVtYmFzZSkpCisJ CXJldHVybiBQVFJfRVJSKG1jZl9lZG1hLT5tZW1iYXNlKTsKKworCWZzbF9lZG1hX3NldHVwX3Jl Z3MobWNmX2VkbWEpOworCXJlZ3MgPSAmbWNmX2VkbWEtPnJlZ3M7CisKKwlJTklUX0xJU1RfSEVB RCgmbWNmX2VkbWEtPmRtYV9kZXYuY2hhbm5lbHMpOworCWZvciAoaSA9IDA7IGkgPCBtY2ZfZWRt YS0+bl9jaGFuczsgaSsrKSB7CisJCXN0cnVjdCBmc2xfZWRtYV9jaGFuICptY2ZfY2hhbiA9ICZt Y2ZfZWRtYS0+Y2hhbnNbaV07CisKKwkJbWNmX2NoYW4tPmVkbWEgPSBtY2ZfZWRtYTsKKwkJbWNm X2NoYW4tPnNsYXZlX2lkID0gaTsKKwkJbWNmX2NoYW4tPmlkbGUgPSB0cnVlOworCQltY2ZfY2hh bi0+dmNoYW4uZGVzY19mcmVlID0gZnNsX2VkbWFfZnJlZV9kZXNjOworCQl2Y2hhbl9pbml0KCZt Y2ZfY2hhbi0+dmNoYW4sICZtY2ZfZWRtYS0+ZG1hX2Rldik7CisJCWlvd3JpdGUzMigweDAsICZy ZWdzLT50Y2RbaV0uY3NyKTsKKwl9CisKKwlpb3dyaXRlMzIofjAsIHJlZ3MtPmludGgpOworCWlv d3JpdGUzMih+MCwgcmVncy0+aW50bCk7CisKKwlyZXQgPSBtY2ZfZWRtYV9pcnFfaW5pdChwZGV2 LCBtY2ZfZWRtYSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWRtYV9jYXBfc2V0KERN QV9QUklWQVRFLCBtY2ZfZWRtYS0+ZG1hX2Rldi5jYXBfbWFzayk7CisJZG1hX2NhcF9zZXQoRE1B X1NMQVZFLCBtY2ZfZWRtYS0+ZG1hX2Rldi5jYXBfbWFzayk7CisJZG1hX2NhcF9zZXQoRE1BX0NZ Q0xJQywgbWNmX2VkbWEtPmRtYV9kZXYuY2FwX21hc2spOworCisJbWNmX2VkbWEtPmRtYV9kZXYu ZGV2ID0gJnBkZXYtPmRldjsKKwltY2ZfZWRtYS0+ZG1hX2Rldi5kZXZpY2VfYWxsb2NfY2hhbl9y ZXNvdXJjZXMgPQorCQkJZnNsX2VkbWFfYWxsb2NfY2hhbl9yZXNvdXJjZXM7CisJbWNmX2VkbWEt PmRtYV9kZXYuZGV2aWNlX2ZyZWVfY2hhbl9yZXNvdXJjZXMgPQorCQkJZnNsX2VkbWFfZnJlZV9j aGFuX3Jlc291cmNlczsKKwltY2ZfZWRtYS0+ZG1hX2Rldi5kZXZpY2VfY29uZmlnID0gZnNsX2Vk bWFfc2xhdmVfY29uZmlnOworCW1jZl9lZG1hLT5kbWFfZGV2LmRldmljZV9wcmVwX2RtYV9jeWNs aWMgPQorCQkJZnNsX2VkbWFfcHJlcF9kbWFfY3ljbGljOworCW1jZl9lZG1hLT5kbWFfZGV2LmRl dmljZV9wcmVwX3NsYXZlX3NnID0gZnNsX2VkbWFfcHJlcF9zbGF2ZV9zZzsKKwltY2ZfZWRtYS0+ ZG1hX2Rldi5kZXZpY2VfdHhfc3RhdHVzID0gZnNsX2VkbWFfdHhfc3RhdHVzOworCW1jZl9lZG1h LT5kbWFfZGV2LmRldmljZV9wYXVzZSA9IGZzbF9lZG1hX3BhdXNlOworCW1jZl9lZG1hLT5kbWFf ZGV2LmRldmljZV9yZXN1bWUgPSBmc2xfZWRtYV9yZXN1bWU7CisJbWNmX2VkbWEtPmRtYV9kZXYu ZGV2aWNlX3Rlcm1pbmF0ZV9hbGwgPSBmc2xfZWRtYV90ZXJtaW5hdGVfYWxsOworCW1jZl9lZG1h LT5kbWFfZGV2LmRldmljZV9pc3N1ZV9wZW5kaW5nID0gZnNsX2VkbWFfaXNzdWVfcGVuZGluZzsK KworCW1jZl9lZG1hLT5kbWFfZGV2LnNyY19hZGRyX3dpZHRocyA9IEZTTF9FRE1BX0JVU1dJRFRI UzsKKwltY2ZfZWRtYS0+ZG1hX2Rldi5kc3RfYWRkcl93aWR0aHMgPSBGU0xfRURNQV9CVVNXSURU SFM7CisJbWNmX2VkbWEtPmRtYV9kZXYuZGlyZWN0aW9ucyA9CisJCQlCSVQoRE1BX0RFVl9UT19N RU0pIHwgQklUKERNQV9NRU1fVE9fREVWKTsKKworCW1jZl9lZG1hLT5kbWFfZGV2LmZpbHRlci5m biA9IG1jZl9lZG1hX2ZpbHRlcl9mbjsKKwltY2ZfZWRtYS0+ZG1hX2Rldi5maWx0ZXIubWFwID0g cGRhdGEtPnNsYXZlX21hcDsKKwltY2ZfZWRtYS0+ZG1hX2Rldi5maWx0ZXIubWFwY250ID0gcGRh dGEtPnNsYXZlY250OworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWNmX2VkbWEpOwor CisJcmV0ID0gZG1hX2FzeW5jX2RldmljZV9yZWdpc3RlcigmbWNmX2VkbWEtPmRtYV9kZXYpOwor CWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LAorCQkJIkNhbid0IHJlZ2lzdGVyIEZy ZWVzY2FsZSBlRE1BIGVuZ2luZS4gKCVkKVxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisK KwkvKiBFbmFibGUgcm91bmQgcm9iaW4gYXJiaXRyYXRpb24gKi8KKwlpb3dyaXRlMzIoRURNQV9D Ul9FUkdBIHwgRURNQV9DUl9FUkNBLCByZWdzLT5jcik7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBtY2ZfZWRtYV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sK KwlzdHJ1Y3QgZnNsX2VkbWFfZW5naW5lICptY2ZfZWRtYSA9IHBsYXRmb3JtX2dldF9kcnZkYXRh KHBkZXYpOworCisJbWNmX2VkbWFfaXJxX2ZyZWUocGRldiwgbWNmX2VkbWEpOworCWZzbF9lZG1h X2NsZWFudXBfdmNoYW4oJm1jZl9lZG1hLT5kbWFfZGV2KTsKKwlkbWFfYXN5bmNfZGV2aWNlX3Vu cmVnaXN0ZXIoJm1jZl9lZG1hLT5kbWFfZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtY2ZfZWRtYV9kcml2ZXIgPSB7CisJLmRyaXZlcgkJPSB7 CisJCS5uYW1lCT0gIm1jZi1lZG1hIiwKKwl9LAorCS5wcm9iZQkJPSBtY2ZfZWRtYV9wcm9iZSwK KwkucmVtb3ZlCQk9IG1jZl9lZG1hX3JlbW92ZSwKK307CisKK2Jvb2wgbWNmX2VkbWFfZmlsdGVy X2ZuKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgdm9pZCAqcGFyYW0pCit7CisJaWYgKGNoYW4tPmRl dmljZS0+ZGV2LT5kcml2ZXIgPT0gJm1jZl9lZG1hX2RyaXZlci5kcml2ZXIpIHsKKwkJc3RydWN0 IGZzbF9lZG1hX2NoYW4gKm1jZl9jaGFuID0gdG9fZnNsX2VkbWFfY2hhbihjaGFuKTsKKworCQly ZXR1cm4gKG1jZl9jaGFuLT5zbGF2ZV9pZCA9PSAoaW50KXBhcmFtKTsKKwl9CisKKwlyZXR1cm4g ZmFsc2U7Cit9CitFWFBPUlRfU1lNQk9MKG1jZl9lZG1hX2ZpbHRlcl9mbik7CisKK3N0YXRpYyBp bnQgX19pbml0IG1jZl9lZG1hX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gcGxhdGZvcm1fZHJpdmVy X3JlZ2lzdGVyKCZtY2ZfZWRtYV9kcml2ZXIpOworfQorc3Vic3lzX2luaXRjYWxsKG1jZl9lZG1h X2luaXQpOworCitzdGF0aWMgdm9pZCBfX2V4aXQgbWNmX2VkbWFfZXhpdCh2b2lkKQoreworCXBs YXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZtY2ZfZWRtYV9kcml2ZXIpOworfQorbW9kdWxlX2V4 aXQobWNmX2VkbWFfZXhpdCk7CisKK01PRFVMRV9BTElBUygicGxhdGZvcm06bWNmLWVkbWEiKTsK K01PRFVMRV9ERVNDUklQVElPTigiRnJlZXNjYWxlIGVETUEgZW5naW5lIGRyaXZlciwgQ29sZEZp cmUgZmFtaWx5Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CmRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZG1hLW1jZi1lZG1hLmggYi9pbmNsdWRlL2xpbnV4L3Bs YXRmb3JtX2RhdGEvZG1hLW1jZi1lZG1hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi40ZjQ1ZDBkNDBhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4 L3BsYXRmb3JtX2RhdGEvZG1hLW1jZi1lZG1hLmgKQEAgLTAsMCArMSwzOCBAQAorLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qCisgKiBGcmVlc2NhbGUgZURNQSBwbGF0 Zm9ybSBkYXRhLCBDb2xkRmlyZSBTb0MncyBmYW1pbHkuCisgKgorICogQ29weXJpZ2h0IChjKSAy MDE3IEFuZ2VsbyBEdXJlZ2hlbGxvIDxhbmdlbG9AeHh4eHh4eHg+CisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpZm5kZWYgX19NQUNIX01D Rl9FRE1BX0hfXworI2RlZmluZSBfX01BQ0hfTUNGX0VETUFfSF9fCisKK3N0cnVjdCBkbWFfc2xh dmVfbWFwOworCitib29sIG1jZl9lZG1hX2ZpbHRlcl9mbihzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4s IHZvaWQgKnBhcmFtKTsKKworI2RlZmluZSBNQ0ZfRURNQV9GSUxURVJfUEFSQU0oY2gpCSgodm9p ZCAqKWNoKQorCisvKioKKyAqIHN0cnVjdCBtY2ZfZWRtYV9wbGF0Zm9ybV9kYXRhIC0gcGxhdGZv cm0gc3BlY2lmaWMgZGF0YSBmb3IgZURNQSBlbmdpbmUKKyAqCisgKiBAdmVyCQkJVGhlIGVETUEg bW9kdWxlIHZlcnNpb24uCisgKiBAZG1hX2NoYW5uZWxzCVRoZSBudW1iZXIgb2YgZURNQSBjaGFu bmVscy4KKyAqLworc3RydWN0IG1jZl9lZG1hX3BsYXRmb3JtX2RhdGEgeworCWludCBkbWFfY2hh bm5lbHM7CisJY29uc3Qgc3RydWN0IGRtYV9zbGF2ZV9tYXAgKnNsYXZlX21hcDsKKwlpbnQgc2xh dmVjbnQ7Cit9OworCisjZW5kaWYgLyogX19NQUNIX01DRl9FRE1BX0hfXyAqLwo=