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,04/18] dmaengine: dma-jz4780: Separate chan/ctrl registers From: Paul Cercueil Message-Id: <20180721110643.19624-5-paul@crapouillou.net> Date: Sat, 21 Jul 2018 13:06:29 +0200 To: Vinod Koul , Rob Herring , Mark Rutland , Ralf Baechle , Paul Burton , James Hogan , Zubair Lutfullah Kakakhel Cc: Mathieu Malaterre , Daniel Silsby , 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 MTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCiB2MjogLSBBZGQg YSBmYWxsYmFjayBtZWNoYW5pc20gZm9yIEpaNDc4MCBpZiB0aGUgc2Vjb25kIG1lbW9yeSByZXNv dXJjZQogICAgICAgd2FzIG5vdCBzdXBwbGllZCBpbiB0aGUgZGV2aWNldHJlZS4KICAgICAtIFRo ZSBkb2N1bWVudGF0aW9uIHVwZGF0ZSB3YXMgbW92ZWQgdG8gcGF0Y2ggMDEvMTcKCiB2MzogTm8g Y2hhbmdlCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZG1hLWp6NDc4MC5jIGIvZHJpdmVycy9k bWEvZG1hLWp6NDc4MC5jCmluZGV4IGEyNjEwN2M4NWVlNy4uMmYxN2EwZmIxZTVjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2RtYS9kbWEtano0NzgwLmMKKysrIGIvZHJpdmVycy9kbWEvZG1hLWp6NDc4 MC5jCkBAIC0yNSwyNiArMjUsMjYgQEAKICNpbmNsdWRlICJ2aXJ0LWRtYS5oIgogCiAvKiBHbG9i YWwgcmVnaXN0ZXJzLiAqLwotI2RlZmluZSBKWl9ETUFfUkVHX0RNQUMJCTB4MTAwMAotI2RlZmlu ZSBKWl9ETUFfUkVHX0RJUlFQCTB4MTAwNAotI2RlZmluZSBKWl9ETUFfUkVHX0REUgkJMHgxMDA4 Ci0jZGVmaW5lIEpaX0RNQV9SRUdfRERSUwkJMHgxMDBjCi0jZGVmaW5lIEpaX0RNQV9SRUdfRE1B Q1AJMHgxMDFjCi0jZGVmaW5lIEpaX0RNQV9SRUdfRFNJUlFQCTB4MTAyMAotI2RlZmluZSBKWl9E TUFfUkVHX0RTSVJRTQkweDEwMjQKLSNkZWZpbmUgSlpfRE1BX1JFR19EQ0lSUVAJMHgxMDI4Ci0j ZGVmaW5lIEpaX0RNQV9SRUdfRENJUlFNCTB4MTAyYworI2RlZmluZSBKWl9ETUFfUkVHX0RNQUMJ CTB4MDAKKyNkZWZpbmUgSlpfRE1BX1JFR19ESVJRUAkweDA0CisjZGVmaW5lIEpaX0RNQV9SRUdf RERSCQkweDA4CisjZGVmaW5lIEpaX0RNQV9SRUdfRERSUwkJMHgwYworI2RlZmluZSBKWl9ETUFf UkVHX0RNQUNQCTB4MWMKKyNkZWZpbmUgSlpfRE1BX1JFR19EU0lSUVAJMHgyMAorI2RlZmluZSBK Wl9ETUFfUkVHX0RTSVJRTQkweDI0CisjZGVmaW5lIEpaX0RNQV9SRUdfRENJUlFQCTB4MjgKKyNk ZWZpbmUgSlpfRE1BX1JFR19EQ0lSUU0JMHgyYwogCiAvKiBQZXItY2hhbm5lbCByZWdpc3RlcnMu ICovCiAjZGVmaW5lIEpaX0RNQV9SRUdfQ0hBTihuKQkobiAqIDB4MjApCi0jZGVmaW5lIEpaX0RN QV9SRUdfRFNBKG4pCSgweDAwICsgSlpfRE1BX1JFR19DSEFOKG4pKQotI2RlZmluZSBKWl9ETUFf UkVHX0RUQShuKQkoMHgwNCArIEpaX0RNQV9SRUdfQ0hBTihuKSkKLSNkZWZpbmUgSlpfRE1BX1JF R19EVEMobikJKDB4MDggKyBKWl9ETUFfUkVHX0NIQU4obikpCi0jZGVmaW5lIEpaX0RNQV9SRUdf RFJUKG4pCSgweDBjICsgSlpfRE1BX1JFR19DSEFOKG4pKQotI2RlZmluZSBKWl9ETUFfUkVHX0RD UyhuKQkoMHgxMCArIEpaX0RNQV9SRUdfQ0hBTihuKSkKLSNkZWZpbmUgSlpfRE1BX1JFR19EQ00o bikJKDB4MTQgKyBKWl9ETUFfUkVHX0NIQU4obikpCi0jZGVmaW5lIEpaX0RNQV9SRUdfRERBKG4p CSgweDE4ICsgSlpfRE1BX1JFR19DSEFOKG4pKQotI2RlZmluZSBKWl9ETUFfUkVHX0RTRChuKQko MHgxYyArIEpaX0RNQV9SRUdfQ0hBTihuKSkKKyNkZWZpbmUgSlpfRE1BX1JFR19EU0EJCTB4MDAK KyNkZWZpbmUgSlpfRE1BX1JFR19EVEEJCTB4MDQKKyNkZWZpbmUgSlpfRE1BX1JFR19EVEMJCTB4 MDgKKyNkZWZpbmUgSlpfRE1BX1JFR19EUlQJCTB4MGMKKyNkZWZpbmUgSlpfRE1BX1JFR19EQ1MJ CTB4MTAKKyNkZWZpbmUgSlpfRE1BX1JFR19EQ00JCTB4MTQKKyNkZWZpbmUgSlpfRE1BX1JFR19E REEJCTB4MTgKKyNkZWZpbmUgSlpfRE1BX1JFR19EU0QJCTB4MWMKIAogI2RlZmluZSBKWl9ETUFf RE1BQ19ETUFFCUJJVCgwKQogI2RlZmluZSBKWl9ETUFfRE1BQ19BUgkJQklUKDIpCkBAIC04NSw2 ICs4NSw4IEBACiAJCQkJIEJJVChETUFfU0xBVkVfQlVTV0lEVEhfMl9CWVRFUykgfCBcCiAJCQkJ IEJJVChETUFfU0xBVkVfQlVTV0lEVEhfNF9CWVRFUykpCiAKKyNkZWZpbmUgSlo0NzgwX0RNQV9D VFJMX09GRlNFVAkweDEwMDAKKwogLyoqCiAgKiBzdHJ1Y3Qgano0NzgwX2RtYV9od2Rlc2MgLSBk ZXNjcmlwdG9yIHN0cnVjdHVyZSByZWFkIGJ5IHRoZSBETUEgY29udHJvbGxlci4KICAqIEBkY206 IHZhbHVlIGZvciB0aGUgRENNIChjaGFubmVsIGNvbW1hbmQpIHJlZ2lzdGVyCkBAIC0xNDQsNyAr MTQ2LDggQEAgc3RydWN0IGp6NDc4MF9kbWFfc29jX2RhdGEgewogCiBzdHJ1Y3Qgano0NzgwX2Rt YV9kZXYgewogCXN0cnVjdCBkbWFfZGV2aWNlIGRtYV9kZXZpY2U7Ci0Jdm9pZCBfX2lvbWVtICpi YXNlOworCXZvaWQgX19pb21lbSAqY2huX2Jhc2U7CisJdm9pZCBfX2lvbWVtICpjdHJsX2Jhc2U7 CiAJc3RydWN0IGNsayAqY2xrOwogCXVuc2lnbmVkIGludCBpcnE7CiAJZW51bSBqel92ZXJzaW9u IHZlcnNpb247CkBAIC0xNzgsMTYgKzE4MSwyOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBqejQ3 ODBfZG1hX2RldiAqano0NzgwX2RtYV9jaGFuX3BhcmVudCgKIAkJCSAgICBkbWFfZGV2aWNlKTsK IH0KIAotc3RhdGljIGlubGluZSB1aW50MzJfdCBqejQ3ODBfZG1hX3JlYWRsKHN0cnVjdCBqejQ3 ODBfZG1hX2RldiAqanpkbWEsCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IGp6NDc4MF9kbWFfY2hu X3JlYWRsKHN0cnVjdCBqejQ3ODBfZG1hX2RldiAqanpkbWEsCisJdW5zaWduZWQgaW50IGNobiwg dW5zaWduZWQgaW50IHJlZykKK3sKKwlyZXR1cm4gcmVhZGwoanpkbWEtPmNobl9iYXNlICsgcmVn ICsgSlpfRE1BX1JFR19DSEFOKGNobikpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgano0Nzgw X2RtYV9jaG5fd3JpdGVsKHN0cnVjdCBqejQ3ODBfZG1hX2RldiAqanpkbWEsCisJdW5zaWduZWQg aW50IGNobiwgdW5zaWduZWQgaW50IHJlZywgdWludDMyX3QgdmFsKQoreworCXdyaXRlbCh2YWws IGp6ZG1hLT5jaG5fYmFzZSArIHJlZyArIEpaX0RNQV9SRUdfQ0hBTihjaG4pKTsKK30KKworc3Rh dGljIGlubGluZSB1aW50MzJfdCBqejQ3ODBfZG1hX2N0cmxfcmVhZGwoc3RydWN0IGp6NDc4MF9k bWFfZGV2ICpqemRtYSwKIAl1bnNpZ25lZCBpbnQgcmVnKQogewotCXJldHVybiByZWFkbChqemRt YS0+YmFzZSArIHJlZyk7CisJcmV0dXJuIHJlYWRsKGp6ZG1hLT5jdHJsX2Jhc2UgKyByZWcpOwog fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgano0NzgwX2RtYV93cml0ZWwoc3RydWN0IGp6NDc4MF9k bWFfZGV2ICpqemRtYSwKK3N0YXRpYyBpbmxpbmUgdm9pZCBqejQ3ODBfZG1hX2N0cmxfd3JpdGVs KHN0cnVjdCBqejQ3ODBfZG1hX2RldiAqanpkbWEsCiAJdW5zaWduZWQgaW50IHJlZywgdWludDMy X3QgdmFsKQogewotCXdyaXRlbCh2YWwsIGp6ZG1hLT5iYXNlICsgcmVnKTsKKwl3cml0ZWwodmFs LCBqemRtYS0+Y3RybF9iYXNlICsgcmVnKTsKIH0KIAogc3RhdGljIHN0cnVjdCBqejQ3ODBfZG1h X2Rlc2MgKmp6NDc4MF9kbWFfZGVzY19hbGxvYygKQEAgLTQ4MiwxNyArNDk3LDE4IEBAIHN0YXRp YyB2b2lkIGp6NDc4MF9kbWFfYmVnaW4oc3RydWN0IGp6NDc4MF9kbWFfY2hhbiAqanpjaGFuKQog CX0KIAogCS8qIFVzZSA4LXdvcmQgZGVzY3JpcHRvcnMuICovCi0Jano0NzgwX2RtYV93cml0ZWwo anpkbWEsIEpaX0RNQV9SRUdfRENTKGp6Y2hhbi0+aWQpLCBKWl9ETUFfRENTX0RFUzgpOworCWp6 NDc4MF9kbWFfY2huX3dyaXRlbChqemRtYSwganpjaGFuLT5pZCwKKwkJCSAgICAgIEpaX0RNQV9S RUdfRENTLCBKWl9ETUFfRENTX0RFUzgpOwogCiAJLyogV3JpdGUgZGVzY3JpcHRvciBhZGRyZXNz IGFuZCBpbml0aWF0ZSBkZXNjcmlwdG9yIGZldGNoLiAqLwogCWRlc2NfcGh5cyA9IGp6Y2hhbi0+ ZGVzYy0+ZGVzY19waHlzICsKIAkJICAgIChqemNoYW4tPmN1cnJfaHdkZXNjICogc2l6ZW9mKCpq emNoYW4tPmRlc2MtPmRlc2MpKTsKLQlqejQ3ODBfZG1hX3dyaXRlbChqemRtYSwgSlpfRE1BX1JF R19EREEoanpjaGFuLT5pZCksIGRlc2NfcGh5cyk7Ci0Jano0NzgwX2RtYV93cml0ZWwoanpkbWEs IEpaX0RNQV9SRUdfRERSUywgQklUKGp6Y2hhbi0+aWQpKTsKKwlqejQ3ODBfZG1hX2Nobl93cml0 ZWwoanpkbWEsIGp6Y2hhbi0+aWQsIEpaX0RNQV9SRUdfRERBLCBkZXNjX3BoeXMpOworCWp6NDc4 MF9kbWFfY3RybF93cml0ZWwoanpkbWEsIEpaX0RNQV9SRUdfRERSUywgQklUKGp6Y2hhbi0+aWQp KTsKIAogCS8qIEVuYWJsZSB0aGUgY2hhbm5lbC4gKi8KLQlqejQ3ODBfZG1hX3dyaXRlbChqemRt YSwgSlpfRE1BX1JFR19EQ1MoanpjaGFuLT5pZCksCi0JCQkgIEpaX0RNQV9EQ1NfREVTOCB8IEpa X0RNQV9EQ1NfQ1RFKTsKKwlqejQ3ODBfZG1hX2Nobl93cml0ZWwoanpkbWEsIGp6Y2hhbi0+aWQs IEpaX0RNQV9SRUdfRENTLAorCQkJICAgICAgSlpfRE1BX0RDU19ERVM4IHwgSlpfRE1BX0RDU19D VEUpOwogfQogCiBzdGF0aWMgdm9pZCBqejQ3ODBfZG1hX2lzc3VlX3BlbmRpbmcoc3RydWN0IGRt YV9jaGFuICpjaGFuKQpAQCAtNTE4LDcgKzUzNCw3IEBAIHN0YXRpYyBpbnQgano0NzgwX2RtYV90 ZXJtaW5hdGVfYWxsKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKIAlzcGluX2xvY2tfaXJxc2F2ZSgm anpjaGFuLT52Y2hhbi5sb2NrLCBmbGFncyk7CiAKIAkvKiBDbGVhciB0aGUgRE1BIHN0YXR1cyBh bmQgc3RvcCB0aGUgdHJhbnNmZXIuICovCi0Jano0NzgwX2RtYV93cml0ZWwoanpkbWEsIEpaX0RN QV9SRUdfRENTKGp6Y2hhbi0+aWQpLCAwKTsKKwlqejQ3ODBfZG1hX2Nobl93cml0ZWwoanpkbWEs IGp6Y2hhbi0+aWQsIEpaX0RNQV9SRUdfRENTLCAwKTsKIAlpZiAoanpjaGFuLT5kZXNjKSB7CiAJ CXZjaGFuX3Rlcm1pbmF0ZV92ZGVzYygmanpjaGFuLT5kZXNjLT52ZGVzYyk7CiAJCWp6Y2hhbi0+ ZGVzYyA9IE5VTEw7CkBAIC01NjcsOCArNTgzLDggQEAgc3RhdGljIHNpemVfdCBqejQ3ODBfZG1h X2Rlc2NfcmVzaWR1ZShzdHJ1Y3Qgano0NzgwX2RtYV9jaGFuICpqemNoYW4sCiAJCXJlc2lkdWUg Kz0gZGVzYy0+ZGVzY1tpXS5kdGMgPDwganpjaGFuLT50cmFuc2Zlcl9zaGlmdDsKIAogCWlmIChu ZXh0X3NnICE9IDApIHsKLQkJY291bnQgPSBqejQ3ODBfZG1hX3JlYWRsKGp6ZG1hLAotCQkJCQkg SlpfRE1BX1JFR19EVEMoanpjaGFuLT5pZCkpOworCQljb3VudCA9IGp6NDc4MF9kbWFfY2huX3Jl YWRsKGp6ZG1hLCBqemNoYW4tPmlkLAorCQkJCQkgSlpfRE1BX1JFR19EVEMpOwogCQlyZXNpZHVl ICs9IGNvdW50IDw8IGp6Y2hhbi0+dHJhbnNmZXJfc2hpZnQ7CiAJfQogCkBAIC02MTUsOCArNjMx LDggQEAgc3RhdGljIHZvaWQgano0NzgwX2RtYV9jaGFuX2lycShzdHJ1Y3Qgano0NzgwX2RtYV9k ZXYgKmp6ZG1hLAogCiAJc3Bpbl9sb2NrKCZqemNoYW4tPnZjaGFuLmxvY2spOwogCi0JZGNzID0g ano0NzgwX2RtYV9yZWFkbChqemRtYSwgSlpfRE1BX1JFR19EQ1MoanpjaGFuLT5pZCkpOwotCWp6 NDc4MF9kbWFfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RDUyhqemNoYW4tPmlkKSwgMCk7CisJ ZGNzID0gano0NzgwX2RtYV9jaG5fcmVhZGwoanpkbWEsIGp6Y2hhbi0+aWQsIEpaX0RNQV9SRUdf RENTKTsKKwlqejQ3ODBfZG1hX2Nobl93cml0ZWwoanpkbWEsIGp6Y2hhbi0+aWQsIEpaX0RNQV9S RUdfRENTLCAwKTsKIAogCWlmIChkY3MgJiBKWl9ETUFfRENTX0FSKSB7CiAJCWRldl93YXJuKCZq emNoYW4tPnZjaGFuLmNoYW4uZGV2LT5kZXZpY2UsCkBAIC02NTUsNyArNjcxLDcgQEAgc3RhdGlj IGlycXJldHVybl90IGp6NDc4MF9kbWFfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkK IAl1aW50MzJfdCBwZW5kaW5nLCBkbWFjOwogCWludCBpOwogCi0JcGVuZGluZyA9IGp6NDc4MF9k bWFfcmVhZGwoanpkbWEsIEpaX0RNQV9SRUdfRElSUVApOworCXBlbmRpbmcgPSBqejQ3ODBfZG1h X2N0cmxfcmVhZGwoanpkbWEsIEpaX0RNQV9SRUdfRElSUVApOwogCiAJZm9yIChpID0gMDsgaSA8 IGp6ZG1hLT5zb2NfZGF0YS0+bmJfY2hhbm5lbHM7IGkrKykgewogCQlpZiAoIShwZW5kaW5nICYg KDE8PGkpKSkKQEAgLTY2NSwxMiArNjgxLDEyIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBqejQ3ODBf ZG1hX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpCiAJfQogCiAJLyogQ2xlYXIgaGFs dCBhbmQgYWRkcmVzcyBlcnJvciBzdGF0dXMgb2YgYWxsIGNoYW5uZWxzLiAqLwotCWRtYWMgPSBq ejQ3ODBfZG1hX3JlYWRsKGp6ZG1hLCBKWl9ETUFfUkVHX0RNQUMpOworCWRtYWMgPSBqejQ3ODBf ZG1hX2N0cmxfcmVhZGwoanpkbWEsIEpaX0RNQV9SRUdfRE1BQyk7CiAJZG1hYyAmPSB+KEpaX0RN QV9ETUFDX0hMVCB8IEpaX0RNQV9ETUFDX0FSKTsKLQlqejQ3ODBfZG1hX3dyaXRlbChqemRtYSwg SlpfRE1BX1JFR19ETUFDLCBkbWFjKTsKKwlqejQ3ODBfZG1hX2N0cmxfd3JpdGVsKGp6ZG1hLCBK Wl9ETUFfUkVHX0RNQUMsIGRtYWMpOwogCiAJLyogQ2xlYXIgaW50ZXJydXB0IHBlbmRpbmcgc3Rh dHVzLiAqLwotCWp6NDc4MF9kbWFfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RJUlFQLCAwKTsK KwlqejQ3ODBfZG1hX2N0cmxfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RJUlFQLCAwKTsKIAog CXJldHVybiBJUlFfSEFORExFRDsKIH0KQEAgLTgwOSw5ICs4MjUsMjYgQEAgc3RhdGljIGludCBq ejQ3ODBfZG1hX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJldHVybiAt RUlOVkFMOwogCX0KIAotCWp6ZG1hLT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg cmVzKTsKLQlpZiAoSVNfRVJSKGp6ZG1hLT5iYXNlKSkKLQkJcmV0dXJuIFBUUl9FUlIoanpkbWEt PmJhc2UpOworCWp6ZG1hLT5jaG5fYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJl cyk7CisJaWYgKElTX0VSUihqemRtYS0+Y2huX2Jhc2UpKQorCQlyZXR1cm4gUFRSX0VSUihqemRt YS0+Y2huX2Jhc2UpOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAxKTsKKwlpZiAocmVzKSB7CisJCWp6ZG1hLT5jdHJsX2Jhc2UgPSBkZXZtX2lv cmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOworCQlpZiAoSVNfRVJSKGp6ZG1hLT5jdHJsX2Jhc2Up KQorCQkJcmV0dXJuIFBUUl9FUlIoanpkbWEtPmN0cmxfYmFzZSk7CisJfSBlbHNlIGlmICh2ZXJz aW9uID09IElEX0paNDc4MCkgeworCQkvKgorCQkgKiBPbiBKWjQ3ODAsIGlmIHRoZSBzZWNvbmQg bWVtb3J5IHJlc291cmNlIHdhcyBub3Qgc3VwcGxpZWQsCisJCSAqIGFzc3VtZSB3ZSdyZSB1c2lu ZyBhbiBvbGQgZGV2aWNldHJlZSwgYW5kIGNhbGN1bGF0ZSB0aGUKKwkJICogb2Zmc2V0IHRvIHRo ZSBjb250cm9sIHJlZ2lzdGVycy4KKwkJICovCisJCWp6ZG1hLT5jdHJsX2Jhc2UgPSBqemRtYS0+ Y2huX2Jhc2UgKyBKWjQ3ODBfRE1BX0NUUkxfT0ZGU0VUOworCX0gZWxzZSB7CisJCWRldl9lcnIo ZGV2LCAiZmFpbGVkIHRvIGdldCBJL08gbWVtb3J5XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQogCiAJcmV0ID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKIAlpZiAocmV0IDwgMCkgewpA QCAtODY5LDkgKzkwMiw5IEBAIHN0YXRpYyBpbnQgano0NzgwX2RtYV9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQogCSAqIEFsc28gc2V0IHRoZSBGTVNDIGJpdCAtIGl0IGluY3Jl YXNlcyBNU0MgcGVyZm9ybWFuY2UsIHNvIGl0IG1ha2VzCiAJICogbGl0dGxlIHNlbnNlIG5vdCB0 byBlbmFibGUgaXQuCiAJICovCi0Jano0NzgwX2RtYV93cml0ZWwoanpkbWEsIEpaX0RNQV9SRUdf RE1BQywKKwlqejQ3ODBfZG1hX2N0cmxfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RNQUMsCiAJ CQkgIEpaX0RNQV9ETUFDX0RNQUUgfCBKWl9ETUFfRE1BQ19GTVNDKTsKLQlqejQ3ODBfZG1hX3dy aXRlbChqemRtYSwgSlpfRE1BX1JFR19ETUFDUCwgMCk7CisJano0NzgwX2RtYV9jdHJsX3dyaXRl bChqemRtYSwgSlpfRE1BX1JFR19ETUFDUCwgMCk7CiAKIAlJTklUX0xJU1RfSEVBRCgmZGQtPmNo YW5uZWxzKTsKIAo=