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: [v4,04/18] dmaengine: dma-jz4780: Separate chan/ctrl registers From: Paul Cercueil Message-Id: <20180807114218.20091-5-paul@crapouillou.net> Date: Tue, 7 Aug 2018 13:42:04 +0200 To: Vinod Koul , Rob Herring , Mark Rutland , Ralf Baechle , Paul Burton , James Hogan , Zubair Lutfullah Kakakhel Cc: Paul Cercueil , dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@linux-mips.org List-ID: VGhlIHJlZ2lzdGVyIGFyZWEgb2YgdGhlIEpaNDc4MCBETUEgY29yZSBjYW4gYmUgc3BsaXQgaW50 byBkaWZmZXJlbnQKc2VjdGlvbnMgZm9yIGRpZmZlcmVudCBwdXJwb3NlczoKCiogb25lIHNldCBv ZiByZWdpc3RlcnMgaXMgdXNlZCB0byBwZXJmb3JtIGFjdGlvbnMgYXQgdGhlIERNQSBjb3JlIGxl dmVsLAp0aGF0IHdpbGwgZ2VuZXJhbGx5IGFmZmVjdCBhbGwgY2hhbm5lbHM7CgoqIG9uZSBzZXQg b2YgcmVnaXN0ZXJzIHBlciBETUEgY2hhbm5lbCwgdG8gcGVyZm9ybSBhY3Rpb25zIGF0IHRoZSBE TUEKY2hhbm5lbCBsZXZlbCwgdGhhdCB3aWxsIG9ubHkgYWZmZWN0IHRoZSBjaGFubmVsIGluIHF1 ZXN0aW9uLgoKVGhlIHByb2JsZW0gcmlzZXMgd2hlbiB0cnlpbmcgdG8gc3VwcG9ydCBuZXcgdmVy c2lvbnMgb2YgdGhlIEpaNDd4eApJbmdlbmljIFNvQy4gRm9yIGluc3RhbmNlLCB0aGUgSlo0Nzcw IGhhcyB0d28gRE1BIGNvcmVzLCBlYWNoIG9uZQp3aXRoIHNpeCBETUEgY2hhbm5lbHMsIGFuZCB0 aGUgcmVnaXN0ZXIgc2V0cyBhcmUgaW50ZXJsZWF2ZWQ6CjxETUEwIGNoYW4gcmVncz4gPERNQTEg Y2hhbiByZWdzPiA8RE1BMCBjdHJsIHJlZ3M+IDxETUExIGN0cmwgcmVncz4KCkJ5IHVzaW5nIG9u ZSBtZW1vcnkgcmVzb3VyY2UgZm9yIHRoZSBjaGFubmVsLXNwZWNpZmljIHJlZ2lzdGVycyBhbmQK b25lIG1lbW9yeSByZXNvdXJjZSBmb3IgdGhlIGNvcmUtc3BlY2lmaWMgcmVnaXN0ZXJzLCB3ZSBj YW4gc3VwcG9ydAp0aGUgSlo0NzcwLCBieSBpbml0aWFsaXppbmcgdGhlIGRyaXZlciBvbmNlIHBl ciBETUEgY29yZSB3aXRoIGRpZmZlcmVudAphZGRyZXNzZXMuCgpTaWduZWQtb2ZmLWJ5OiBQYXVs IENlcmN1ZWlsIDxwYXVsQGNyYXBvdWlsbG91Lm5ldD4KVGVzdGVkLWJ5OiBNYXRoaWV1IE1hbGF0 ZXJyZSA8bWFsYXRAZGViaWFuLm9yZz4KLS0tCiBkcml2ZXJzL2RtYS9kbWEtano0NzgwLmMgfCAx MTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCiB2MjogLSBBZGQg YSBmYWxsYmFjayBtZWNoYW5pc20gZm9yIEpaNDc4MCBpZiB0aGUgc2Vjb25kIG1lbW9yeSByZXNv dXJjZQogICAgICAgd2FzIG5vdCBzdXBwbGllZCBpbiB0aGUgZGV2aWNldHJlZS4KICAgICAtIFRo ZSBkb2N1bWVudGF0aW9uIHVwZGF0ZSB3YXMgbW92ZWQgdG8gcGF0Y2ggMDEvMTcKCiB2MzogTm8g Y2hhbmdlCgogdjQ6IE5vIGNoYW5nZQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2RtYS1qejQ3 ODAuYyBiL2RyaXZlcnMvZG1hL2RtYS1qejQ3ODAuYwppbmRleCA5ZWMyMmNmMTVhMzMuLmFkZjRk NWVmY2VkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvZG1hLWp6NDc4MC5jCisrKyBiL2RyaXZl cnMvZG1hL2RtYS1qejQ3ODAuYwpAQCAtMjUsMjYgKzI1LDI2IEBACiAjaW5jbHVkZSAidmlydC1k bWEuaCIKIAogLyogR2xvYmFsIHJlZ2lzdGVycy4gKi8KLSNkZWZpbmUgSlpfRE1BX1JFR19ETUFD CQkweDEwMDAKLSNkZWZpbmUgSlpfRE1BX1JFR19ESVJRUAkweDEwMDQKLSNkZWZpbmUgSlpfRE1B X1JFR19ERFIJCTB4MTAwOAotI2RlZmluZSBKWl9ETUFfUkVHX0REUlMJCTB4MTAwYwotI2RlZmlu ZSBKWl9ETUFfUkVHX0RNQUNQCTB4MTAxYwotI2RlZmluZSBKWl9ETUFfUkVHX0RTSVJRUAkweDEw MjAKLSNkZWZpbmUgSlpfRE1BX1JFR19EU0lSUU0JMHgxMDI0Ci0jZGVmaW5lIEpaX0RNQV9SRUdf RENJUlFQCTB4MTAyOAotI2RlZmluZSBKWl9ETUFfUkVHX0RDSVJRTQkweDEwMmMKKyNkZWZpbmUg SlpfRE1BX1JFR19ETUFDCQkweDAwCisjZGVmaW5lIEpaX0RNQV9SRUdfRElSUVAJMHgwNAorI2Rl ZmluZSBKWl9ETUFfUkVHX0REUgkJMHgwOAorI2RlZmluZSBKWl9ETUFfUkVHX0REUlMJCTB4MGMK KyNkZWZpbmUgSlpfRE1BX1JFR19ETUFDUAkweDFjCisjZGVmaW5lIEpaX0RNQV9SRUdfRFNJUlFQ CTB4MjAKKyNkZWZpbmUgSlpfRE1BX1JFR19EU0lSUU0JMHgyNAorI2RlZmluZSBKWl9ETUFfUkVH X0RDSVJRUAkweDI4CisjZGVmaW5lIEpaX0RNQV9SRUdfRENJUlFNCTB4MmMKIAogLyogUGVyLWNo YW5uZWwgcmVnaXN0ZXJzLiAqLwogI2RlZmluZSBKWl9ETUFfUkVHX0NIQU4obikJKG4gKiAweDIw KQotI2RlZmluZSBKWl9ETUFfUkVHX0RTQShuKQkoMHgwMCArIEpaX0RNQV9SRUdfQ0hBTihuKSkK LSNkZWZpbmUgSlpfRE1BX1JFR19EVEEobikJKDB4MDQgKyBKWl9ETUFfUkVHX0NIQU4obikpCi0j ZGVmaW5lIEpaX0RNQV9SRUdfRFRDKG4pCSgweDA4ICsgSlpfRE1BX1JFR19DSEFOKG4pKQotI2Rl ZmluZSBKWl9ETUFfUkVHX0RSVChuKQkoMHgwYyArIEpaX0RNQV9SRUdfQ0hBTihuKSkKLSNkZWZp bmUgSlpfRE1BX1JFR19EQ1MobikJKDB4MTAgKyBKWl9ETUFfUkVHX0NIQU4obikpCi0jZGVmaW5l IEpaX0RNQV9SRUdfRENNKG4pCSgweDE0ICsgSlpfRE1BX1JFR19DSEFOKG4pKQotI2RlZmluZSBK Wl9ETUFfUkVHX0REQShuKQkoMHgxOCArIEpaX0RNQV9SRUdfQ0hBTihuKSkKLSNkZWZpbmUgSlpf RE1BX1JFR19EU0QobikJKDB4MWMgKyBKWl9ETUFfUkVHX0NIQU4obikpCisjZGVmaW5lIEpaX0RN QV9SRUdfRFNBCQkweDAwCisjZGVmaW5lIEpaX0RNQV9SRUdfRFRBCQkweDA0CisjZGVmaW5lIEpa X0RNQV9SRUdfRFRDCQkweDA4CisjZGVmaW5lIEpaX0RNQV9SRUdfRFJUCQkweDBjCisjZGVmaW5l IEpaX0RNQV9SRUdfRENTCQkweDEwCisjZGVmaW5lIEpaX0RNQV9SRUdfRENNCQkweDE0CisjZGVm aW5lIEpaX0RNQV9SRUdfRERBCQkweDE4CisjZGVmaW5lIEpaX0RNQV9SRUdfRFNECQkweDFjCiAK ICNkZWZpbmUgSlpfRE1BX0RNQUNfRE1BRQlCSVQoMCkKICNkZWZpbmUgSlpfRE1BX0RNQUNfQVIJ CUJJVCgyKQpAQCAtODUsNiArODUsOCBAQAogCQkJCSBCSVQoRE1BX1NMQVZFX0JVU1dJRFRIXzJf QllURVMpIHwgXAogCQkJCSBCSVQoRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVMpKQogCisjZGVm aW5lIEpaNDc4MF9ETUFfQ1RSTF9PRkZTRVQJMHgxMDAwCisKIC8qKgogICogc3RydWN0IGp6NDc4 MF9kbWFfaHdkZXNjIC0gZGVzY3JpcHRvciBzdHJ1Y3R1cmUgcmVhZCBieSB0aGUgRE1BIGNvbnRy b2xsZXIuCiAgKiBAZGNtOiB2YWx1ZSBmb3IgdGhlIERDTSAoY2hhbm5lbCBjb21tYW5kKSByZWdp c3RlcgpAQCAtMTQwLDcgKzE0Miw4IEBAIHN0cnVjdCBqejQ3ODBfZG1hX3NvY19kYXRhIHsKIAog c3RydWN0IGp6NDc4MF9kbWFfZGV2IHsKIAlzdHJ1Y3QgZG1hX2RldmljZSBkbWFfZGV2aWNlOwot CXZvaWQgX19pb21lbSAqYmFzZTsKKwl2b2lkIF9faW9tZW0gKmNobl9iYXNlOworCXZvaWQgX19p b21lbSAqY3RybF9iYXNlOwogCXN0cnVjdCBjbGsgKmNsazsKIAl1bnNpZ25lZCBpbnQgaXJxOwog CWNvbnN0IHN0cnVjdCBqejQ3ODBfZG1hX3NvY19kYXRhICpzb2NfZGF0YTsKQEAgLTE3MywxNiAr MTc2LDI4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGp6NDc4MF9kbWFfZGV2ICpqejQ3ODBfZG1h X2NoYW5fcGFyZW50KAogCQkJICAgIGRtYV9kZXZpY2UpOwogfQogCi1zdGF0aWMgaW5saW5lIHVp bnQzMl90IGp6NDc4MF9kbWFfcmVhZGwoc3RydWN0IGp6NDc4MF9kbWFfZGV2ICpqemRtYSwKK3N0 YXRpYyBpbmxpbmUgdWludDMyX3Qgano0NzgwX2RtYV9jaG5fcmVhZGwoc3RydWN0IGp6NDc4MF9k bWFfZGV2ICpqemRtYSwKKwl1bnNpZ25lZCBpbnQgY2huLCB1bnNpZ25lZCBpbnQgcmVnKQorewor CXJldHVybiByZWFkbChqemRtYS0+Y2huX2Jhc2UgKyByZWcgKyBKWl9ETUFfUkVHX0NIQU4oY2hu KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBqejQ3ODBfZG1hX2Nobl93cml0ZWwoc3RydWN0 IGp6NDc4MF9kbWFfZGV2ICpqemRtYSwKKwl1bnNpZ25lZCBpbnQgY2huLCB1bnNpZ25lZCBpbnQg cmVnLCB1aW50MzJfdCB2YWwpCit7CisJd3JpdGVsKHZhbCwganpkbWEtPmNobl9iYXNlICsgcmVn ICsgSlpfRE1BX1JFR19DSEFOKGNobikpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IGp6 NDc4MF9kbWFfY3RybF9yZWFkbChzdHJ1Y3Qgano0NzgwX2RtYV9kZXYgKmp6ZG1hLAogCXVuc2ln bmVkIGludCByZWcpCiB7Ci0JcmV0dXJuIHJlYWRsKGp6ZG1hLT5iYXNlICsgcmVnKTsKKwlyZXR1 cm4gcmVhZGwoanpkbWEtPmN0cmxfYmFzZSArIHJlZyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p ZCBqejQ3ODBfZG1hX3dyaXRlbChzdHJ1Y3Qgano0NzgwX2RtYV9kZXYgKmp6ZG1hLAorc3RhdGlj IGlubGluZSB2b2lkIGp6NDc4MF9kbWFfY3RybF93cml0ZWwoc3RydWN0IGp6NDc4MF9kbWFfZGV2 ICpqemRtYSwKIAl1bnNpZ25lZCBpbnQgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0Jd3JpdGVsKHZh bCwganpkbWEtPmJhc2UgKyByZWcpOworCXdyaXRlbCh2YWwsIGp6ZG1hLT5jdHJsX2Jhc2UgKyBy ZWcpOwogfQogCiBzdGF0aWMgc3RydWN0IGp6NDc4MF9kbWFfZGVzYyAqano0NzgwX2RtYV9kZXNj X2FsbG9jKApAQCAtNDc3LDE3ICs0OTIsMTggQEAgc3RhdGljIHZvaWQgano0NzgwX2RtYV9iZWdp bihzdHJ1Y3Qgano0NzgwX2RtYV9jaGFuICpqemNoYW4pCiAJfQogCiAJLyogVXNlIDgtd29yZCBk ZXNjcmlwdG9ycy4gKi8KLQlqejQ3ODBfZG1hX3dyaXRlbChqemRtYSwgSlpfRE1BX1JFR19EQ1Mo anpjaGFuLT5pZCksIEpaX0RNQV9EQ1NfREVTOCk7CisJano0NzgwX2RtYV9jaG5fd3JpdGVsKGp6 ZG1hLCBqemNoYW4tPmlkLAorCQkJICAgICAgSlpfRE1BX1JFR19EQ1MsIEpaX0RNQV9EQ1NfREVT OCk7CiAKIAkvKiBXcml0ZSBkZXNjcmlwdG9yIGFkZHJlc3MgYW5kIGluaXRpYXRlIGRlc2NyaXB0 b3IgZmV0Y2guICovCiAJZGVzY19waHlzID0ganpjaGFuLT5kZXNjLT5kZXNjX3BoeXMgKwogCQkg ICAgKGp6Y2hhbi0+Y3Vycl9od2Rlc2MgKiBzaXplb2YoKmp6Y2hhbi0+ZGVzYy0+ZGVzYykpOwot CWp6NDc4MF9kbWFfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0REQShqemNoYW4tPmlkKSwgZGVz Y19waHlzKTsKLQlqejQ3ODBfZG1hX3dyaXRlbChqemRtYSwgSlpfRE1BX1JFR19ERFJTLCBCSVQo anpjaGFuLT5pZCkpOworCWp6NDc4MF9kbWFfY2huX3dyaXRlbChqemRtYSwganpjaGFuLT5pZCwg SlpfRE1BX1JFR19EREEsIGRlc2NfcGh5cyk7CisJano0NzgwX2RtYV9jdHJsX3dyaXRlbChqemRt YSwgSlpfRE1BX1JFR19ERFJTLCBCSVQoanpjaGFuLT5pZCkpOwogCiAJLyogRW5hYmxlIHRoZSBj aGFubmVsLiAqLwotCWp6NDc4MF9kbWFfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RDUyhqemNo YW4tPmlkKSwKLQkJCSAgSlpfRE1BX0RDU19ERVM4IHwgSlpfRE1BX0RDU19DVEUpOworCWp6NDc4 MF9kbWFfY2huX3dyaXRlbChqemRtYSwganpjaGFuLT5pZCwgSlpfRE1BX1JFR19EQ1MsCisJCQkg ICAgICBKWl9ETUFfRENTX0RFUzggfCBKWl9ETUFfRENTX0NURSk7CiB9CiAKIHN0YXRpYyB2b2lk IGp6NDc4MF9kbWFfaXNzdWVfcGVuZGluZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCkBAIC01MTMs NyArNTI5LDcgQEAgc3RhdGljIGludCBqejQ3ODBfZG1hX3Rlcm1pbmF0ZV9hbGwoc3RydWN0IGRt YV9jaGFuICpjaGFuKQogCXNwaW5fbG9ja19pcnFzYXZlKCZqemNoYW4tPnZjaGFuLmxvY2ssIGZs YWdzKTsKIAogCS8qIENsZWFyIHRoZSBETUEgc3RhdHVzIGFuZCBzdG9wIHRoZSB0cmFuc2Zlci4g Ki8KLQlqejQ3ODBfZG1hX3dyaXRlbChqemRtYSwgSlpfRE1BX1JFR19EQ1MoanpjaGFuLT5pZCks IDApOworCWp6NDc4MF9kbWFfY2huX3dyaXRlbChqemRtYSwganpjaGFuLT5pZCwgSlpfRE1BX1JF R19EQ1MsIDApOwogCWlmIChqemNoYW4tPmRlc2MpIHsKIAkJdmNoYW5fdGVybWluYXRlX3ZkZXNj KCZqemNoYW4tPmRlc2MtPnZkZXNjKTsKIAkJanpjaGFuLT5kZXNjID0gTlVMTDsKQEAgLTU2Miw4 ICs1NzgsOCBAQCBzdGF0aWMgc2l6ZV90IGp6NDc4MF9kbWFfZGVzY19yZXNpZHVlKHN0cnVjdCBq ejQ3ODBfZG1hX2NoYW4gKmp6Y2hhbiwKIAkJcmVzaWR1ZSArPSBkZXNjLT5kZXNjW2ldLmR0YyA8 PCBqemNoYW4tPnRyYW5zZmVyX3NoaWZ0OwogCiAJaWYgKG5leHRfc2cgIT0gMCkgewotCQljb3Vu dCA9IGp6NDc4MF9kbWFfcmVhZGwoanpkbWEsCi0JCQkJCSBKWl9ETUFfUkVHX0RUQyhqemNoYW4t PmlkKSk7CisJCWNvdW50ID0gano0NzgwX2RtYV9jaG5fcmVhZGwoanpkbWEsIGp6Y2hhbi0+aWQs CisJCQkJCSBKWl9ETUFfUkVHX0RUQyk7CiAJCXJlc2lkdWUgKz0gY291bnQgPDwganpjaGFuLT50 cmFuc2Zlcl9zaGlmdDsKIAl9CiAKQEAgLTYxMCw4ICs2MjYsOCBAQCBzdGF0aWMgdm9pZCBqejQ3 ODBfZG1hX2NoYW5faXJxKHN0cnVjdCBqejQ3ODBfZG1hX2RldiAqanpkbWEsCiAKIAlzcGluX2xv Y2soJmp6Y2hhbi0+dmNoYW4ubG9jayk7CiAKLQlkY3MgPSBqejQ3ODBfZG1hX3JlYWRsKGp6ZG1h LCBKWl9ETUFfUkVHX0RDUyhqemNoYW4tPmlkKSk7Ci0Jano0NzgwX2RtYV93cml0ZWwoanpkbWEs IEpaX0RNQV9SRUdfRENTKGp6Y2hhbi0+aWQpLCAwKTsKKwlkY3MgPSBqejQ3ODBfZG1hX2Nobl9y ZWFkbChqemRtYSwganpjaGFuLT5pZCwgSlpfRE1BX1JFR19EQ1MpOworCWp6NDc4MF9kbWFfY2hu X3dyaXRlbChqemRtYSwganpjaGFuLT5pZCwgSlpfRE1BX1JFR19EQ1MsIDApOwogCiAJaWYgKGRj cyAmIEpaX0RNQV9EQ1NfQVIpIHsKIAkJZGV2X3dhcm4oJmp6Y2hhbi0+dmNoYW4uY2hhbi5kZXYt PmRldmljZSwKQEAgLTY1MCw3ICs2NjYsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgano0NzgwX2Rt YV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQogCXVpbnQzMl90IHBlbmRpbmcsIGRt YWM7CiAJaW50IGk7CiAKLQlwZW5kaW5nID0gano0NzgwX2RtYV9yZWFkbChqemRtYSwgSlpfRE1B X1JFR19ESVJRUCk7CisJcGVuZGluZyA9IGp6NDc4MF9kbWFfY3RybF9yZWFkbChqemRtYSwgSlpf RE1BX1JFR19ESVJRUCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwganpkbWEtPnNvY19kYXRhLT5uYl9j aGFubmVsczsgaSsrKSB7CiAJCWlmICghKHBlbmRpbmcgJiAoMTw8aSkpKQpAQCAtNjYwLDEyICs2 NzYsMTIgQEAgc3RhdGljIGlycXJldHVybl90IGp6NDc4MF9kbWFfaXJxX2hhbmRsZXIoaW50IGly cSwgdm9pZCAqZGF0YSkKIAl9CiAKIAkvKiBDbGVhciBoYWx0IGFuZCBhZGRyZXNzIGVycm9yIHN0 YXR1cyBvZiBhbGwgY2hhbm5lbHMuICovCi0JZG1hYyA9IGp6NDc4MF9kbWFfcmVhZGwoanpkbWEs IEpaX0RNQV9SRUdfRE1BQyk7CisJZG1hYyA9IGp6NDc4MF9kbWFfY3RybF9yZWFkbChqemRtYSwg SlpfRE1BX1JFR19ETUFDKTsKIAlkbWFjICY9IH4oSlpfRE1BX0RNQUNfSExUIHwgSlpfRE1BX0RN QUNfQVIpOwotCWp6NDc4MF9kbWFfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RNQUMsIGRtYWMp OworCWp6NDc4MF9kbWFfY3RybF93cml0ZWwoanpkbWEsIEpaX0RNQV9SRUdfRE1BQywgZG1hYyk7 CiAKIAkvKiBDbGVhciBpbnRlcnJ1cHQgcGVuZGluZyBzdGF0dXMuICovCi0Jano0NzgwX2RtYV93 cml0ZWwoanpkbWEsIEpaX0RNQV9SRUdfRElSUVAsIDApOworCWp6NDc4MF9kbWFfY3RybF93cml0 ZWwoanpkbWEsIEpaX0RNQV9SRUdfRElSUVAsIDApOwogCiAJcmV0dXJuIElSUV9IQU5ETEVEOwog fQpAQCAtNzkwLDkgKzgwNiwyMyBAQCBzdGF0aWMgaW50IGp6NDc4MF9kbWFfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JanpkbWEt PmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwotCWlmIChJU19FUlIoanpk bWEtPmJhc2UpKQotCQlyZXR1cm4gUFRSX0VSUihqemRtYS0+YmFzZSk7CisJanpkbWEtPmNobl9i YXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKGp6ZG1h LT5jaG5fYmFzZSkpCisJCXJldHVybiBQVFJfRVJSKGp6ZG1hLT5jaG5fYmFzZSk7CisKKwlyZXMg PSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpOworCWlmIChy ZXMpIHsKKwkJanpkbWEtPmN0cmxfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJl cyk7CisJCWlmIChJU19FUlIoanpkbWEtPmN0cmxfYmFzZSkpCisJCQlyZXR1cm4gUFRSX0VSUihq emRtYS0+Y3RybF9iYXNlKTsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBPbiBKWjQ3ODAsIGlmIHRo ZSBzZWNvbmQgbWVtb3J5IHJlc291cmNlIHdhcyBub3Qgc3VwcGxpZWQsCisJCSAqIGFzc3VtZSB3 ZSdyZSB1c2luZyBhbiBvbGQgZGV2aWNldHJlZSwgYW5kIGNhbGN1bGF0ZSB0aGUKKwkJICogb2Zm c2V0IHRvIHRoZSBjb250cm9sIHJlZ2lzdGVycy4KKwkJICovCisJCWp6ZG1hLT5jdHJsX2Jhc2Ug PSBqemRtYS0+Y2huX2Jhc2UgKyBKWjQ3ODBfRE1BX0NUUkxfT0ZGU0VUOworCX0KIAogCXJldCA9 IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CiAJaWYgKHJldCA8IDApIHsKQEAgLTg1MCw5ICs4 ODAsOSBAQCBzdGF0aWMgaW50IGp6NDc4MF9kbWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAkgKiBBbHNvIHNldCB0aGUgRk1TQyBiaXQgLSBpdCBpbmNyZWFzZXMgTVNDIHBl cmZvcm1hbmNlLCBzbyBpdCBtYWtlcwogCSAqIGxpdHRsZSBzZW5zZSBub3QgdG8gZW5hYmxlIGl0 LgogCSAqLwotCWp6NDc4MF9kbWFfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RNQUMsCisJano0 NzgwX2RtYV9jdHJsX3dyaXRlbChqemRtYSwgSlpfRE1BX1JFR19ETUFDLAogCQkJICBKWl9ETUFf RE1BQ19ETUFFIHwgSlpfRE1BX0RNQUNfRk1TQyk7Ci0Jano0NzgwX2RtYV93cml0ZWwoanpkbWEs IEpaX0RNQV9SRUdfRE1BQ1AsIDApOworCWp6NDc4MF9kbWFfY3RybF93cml0ZWwoanpkbWEsIEpa X0RNQV9SRUdfRE1BQ1AsIDApOwogCiAJSU5JVF9MSVNUX0hFQUQoJmRkLT5jaGFubmVscyk7CiAK