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: [02/14] dmaengine: dma-jz4780: Separate chan/ctrl registers From: Paul Cercueil Message-Id: <1530827112.6642.2@smtp.crapouillou.net> Date: Thu, 05 Jul 2018 23:45:12 +0200 To: PrasannaKumar Muralidharan Cc: Vinod Koul , Rob Herring , Mark Rutland , Ralf Baechle , Paul Burton , James Hogan , Zubair Lutfullah Kakakhel , Mathieu Malaterre , Daniel Silsby , dmaengine@vger.kernel.org, "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , open list , Linux-MIPS List-ID: PiBQYXVsLAo+IAo+IE9uIDMgSnVseSAyMDE4IGF0IDE4OjAyLCBQYXVsIENlcmN1ZWlsIDxwYXVs QGNyYXBvdWlsbG91Lm5ldD4gd3JvdGU6Cj4+ICBUaGUgcmVnaXN0ZXIgYXJlYSBvZiB0aGUgSlo0 NzgwIERNQSBjb3JlIGNhbiBiZSBzcGxpdCBpbnRvIGRpZmZlcmVudAo+PiAgc2VjdGlvbnMgZm9y IGRpZmZlcmVudCBwdXJwb3NlczoKPj4gCj4+ICAqIG9uZSBzZXQgb2YgcmVnaXN0ZXJzIGlzIHVz ZWQgdG8gcGVyZm9ybSBhY3Rpb25zIGF0IHRoZSBETUEgY29yZSAKPj4gbGV2ZWwsCj4+ICB0aGF0 IHdpbGwgZ2VuZXJhbGx5IGFmZmVjdCBhbGwgY2hhbm5lbHM7Cj4+IAo+PiAgKiBvbmUgc2V0IG9m IHJlZ2lzdGVycyBwZXIgRE1BIGNoYW5uZWwsIHRvIHBlcmZvcm0gYWN0aW9ucyBhdCB0aGUgCj4+ IERNQQo+PiAgY2hhbm5lbCBsZXZlbCwgdGhhdCB3aWxsIG9ubHkgYWZmZWN0IHRoZSBjaGFubmVs IGluIHF1ZXN0aW9uLgo+PiAKPj4gIFRoZSBwcm9ibGVtIHJpc2VzIHdoZW4gdHJ5aW5nIHRvIHN1 cHBvcnQgbmV3IHZlcnNpb25zIG9mIHRoZSBKWjQ3eHgKPj4gIEluZ2VuaWMgU29DLiBGb3IgaW5z dGFuY2UsIHRoZSBKWjQ3NzAgaGFzIHR3byBETUEgY29yZXMsIGVhY2ggb25lCj4+ICB3aXRoIHNp eCBETUEgY2hhbm5lbHMsIGFuZCB0aGUgcmVnaXN0ZXIgc2V0cyBhcmUgaW50ZXJsZWF2ZWQ6Cj4+ ICA8RE1BMCBjaGFuIHJlZ3M+IDxETUExIGNoYW4gcmVncz4gPERNQTAgY3RybCByZWdzPiA8RE1B MSBjdHJsIHJlZ3M+Cj4+IAo+PiAgQnkgdXNpbmcgb25lIG1lbW9yeSByZXNvdXJjZSBmb3IgdGhl IGNoYW5uZWwtc3BlY2lmaWMgcmVnaXN0ZXJzIGFuZAo+PiAgb25lIG1lbW9yeSByZXNvdXJjZSBm b3IgdGhlIGNvcmUtc3BlY2lmaWMgcmVnaXN0ZXJzLCB3ZSBjYW4gc3VwcG9ydAo+PiAgdGhlIEpa NDc3MCwgYnkgaW5pdGlhbGl6aW5nIHRoZSBkcml2ZXIgb25jZSBwZXIgRE1BIGNvcmUgd2l0aCAK Pj4gZGlmZmVyZW50Cj4+ICBhZGRyZXNzZXMuCj4gCj4gQXMgcGVyIG15IHVuZGVyc3RhbmRpbmcg ZGV2aWNlIHRyZWUgc2hvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbgo+IGhhcmR3YXJlIGNoYW5n ZXMuIFRoaXMgbG9va3MgdGhlIG90aGVyIHdheSBhcm91bmQuIEl0IG11c3QgYmUgcG9zc2libGUK PiB0byBhY2hpZXZlIHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZG8gaW4gdGhpcyBwYXRjaCB3aXRo b3V0IGNoYW5naW5nCj4gdGhlIGRldmljZSB0cmVlLgoKSSB3b3VsZCBhZ3JlZSB0aGF0IGRldmlj ZXRyZWUgaGFzIGFuIEFCSSB0aGF0IHdlIHNob3VsZG4ndCBicmVhayBpZgpwb3NzaWJsZS4KCkhv d2V2ZXIgRFRTIHN1cHBvcnQgZm9yIGFsbCB0aGUgSW5nZW5pYyBTb0NzL2JvYXJkcyBpcyBmYXIg ZnJvbSBiZWluZwpjb21wbGV0ZSwgYW5kIG1vcmUgaW1wb3J0YW50bHksIGFsbCBJbmdlbmljLWJh c2VkIGJvYXJkcyBjb21waWxlIHRoZSBEVFMKZmlsZSB3aXRoaW4gdGhlIGtlcm5lbDsgc28gYnJl YWtpbmcgdGhlIEFCSSBpcyBub3QgKHlldCkgYSBwcm9ibGVtLCBhbmQKd2Ugc2hvdWxkIHB1c2gg dGhlIGJpZyBjaGFuZ2VzIHJpZ2h0IG5vdyB3aGlsZSBpdCdzIHN0aWxsIHBvc3NpYmxlLgoKPj4g IFNpZ25lZC1vZmYtYnk6IFBhdWwgQ2VyY3VlaWwgPHBhdWxAY3JhcG91aWxsb3UubmV0Pgo+PiAg LS0tCj4+ICAgLi4uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2p6NDc4MC1kbWEudHh0ICAgIHwg ICA2ICstCj4+ICAgZHJpdmVycy9kbWEvZG1hLWp6NDc4MC5jICAgICAgICAgICAgICAgICAgICAg IHwgMTA2IAo+PiArKysrKysrKysrKy0tLS0tLS0KPj4gICAyIGZpbGVzIGNoYW5nZWQsIDY5IGlu c2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQo+PiAKPj4gIGRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2p6NDc4MC1kbWEudHh0IAo+PiBiL0RvY3Vt ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvano0NzgwLWRtYS50eHQKPj4gIGluZGV4 IGYyNWZlZWU2MmIxNS4uZjliMTg2NGY1Yjc3IDEwMDY0NAo+PiAgLS0tIGEvRG9jdW1lbnRhdGlv bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9qejQ3ODAtZG1hLnR4dAo+PiAgKysrIGIvRG9jdW1l bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9qejQ3ODAtZG1hLnR4dAo+PiAgQEAgLTMs NyArMyw4IEBACj4+ICAgUmVxdWlyZWQgcHJvcGVydGllczoKPj4gCj4+ICAgLSBjb21wYXRpYmxl OiBTaG91bGQgYmUgImluZ2VuaWMsano0NzgwLWRtYSIKPj4gIC0tIHJlZzogU2hvdWxkIGNvbnRh aW4gdGhlIERNQSBjb250cm9sbGVyIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgCj4+IGxlbmd0aC4K Pj4gICstIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIERNQSBjaGFubmVsIHJlZ2lzdGVycyBsb2Nh dGlvbiBhbmQgCj4+IGxlbmd0aCwgZm9sbG93ZWQKPj4gICsgIGJ5IHRoZSBETUEgY29udHJvbGxl ciByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KPj4gICAtIGludGVycnVwdHM6IFNob3Vs ZCBjb250YWluIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIG9mIHRoZSBETUEgCj4+IGNvbnRyb2xs ZXIuCj4+ICAgLSBpbnRlcnJ1cHQtcGFyZW50OiBTaG91bGQgYmUgdGhlIHBoYW5kbGUgb2YgdGhl IGludGVycnVwdCAKPj4gY29udHJvbGxlciB0aGF0Cj4+ICAgLSBjbG9ja3M6IFNob3VsZCBjb250 YWluIGEgY2xvY2sgc3BlY2lmaWVyIGZvciB0aGUgSlo0NzgwIFBETUEgCj4+IGNsb2NrLgo+PiAg QEAgLTIyLDcgKzIzLDggQEAgRXhhbXBsZToKPj4gCj4+ICAgZG1hOiBkbWFAMTM0MjAwMDAgewo+ PiAgICAgICAgICBjb21wYXRpYmxlID0gImluZ2VuaWMsano0NzgwLWRtYSI7Cj4+ICAtICAgICAg IHJlZyA9IDwweDEzNDIwMDAwIDB4MTAwMDA+Owo+PiAgKyAgICAgICByZWcgPSA8MHgxMzQyMDAw MCAweDQwMAo+PiAgKyAgICAgICAgICAgICAgMHgxMzQyMTAwMCAweDQwPjsKPj4gCj4+ICAgICAg ICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmludGM+Owo+PiAgICAgICAgICBpbnRlcnJ1cHRzID0g PDEwPjsKPj4gIGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9kbWEtano0NzgwLmMgYi9kcml2ZXJz L2RtYS9kbWEtano0NzgwLmMKPj4gIGluZGV4IGI0MGY0OTFmMDM2Ny4uNGQyMzRjYWY1ZDYyIDEw MDY0NAo+PiAgLS0tIGEvZHJpdmVycy9kbWEvZG1hLWp6NDc4MC5jCj4+ICArKysgYi9kcml2ZXJz L2RtYS9kbWEtano0NzgwLmMKPj4gIEBAIC0yNSwyNiArMjUsMjYgQEAKPj4gICAjaW5jbHVkZSAi dmlydC1kbWEuaCIKPj4gCj4+ICAgLyogR2xvYmFsIHJlZ2lzdGVycy4gKi8KPj4gIC0jZGVmaW5l IEpaX0RNQV9SRUdfRE1BQyAgICAgICAgICAgICAgICAweDEwMDAKPj4gIC0jZGVmaW5lIEpaX0RN QV9SRUdfRElSUVAgICAgICAgMHgxMDA0Cj4+ICAtI2RlZmluZSBKWl9ETUFfUkVHX0REUiAgICAg ICAgIDB4MTAwOAo+PiAgLSNkZWZpbmUgSlpfRE1BX1JFR19ERFJTICAgICAgICAgICAgICAgIDB4 MTAwYwo+PiAgLSNkZWZpbmUgSlpfRE1BX1JFR19ETUFDUCAgICAgICAweDEwMWMKPj4gIC0jZGVm aW5lIEpaX0RNQV9SRUdfRFNJUlFQICAgICAgMHgxMDIwCj4+ICAtI2RlZmluZSBKWl9ETUFfUkVH X0RTSVJRTSAgICAgIDB4MTAyNAo+PiAgLSNkZWZpbmUgSlpfRE1BX1JFR19EQ0lSUVAgICAgICAw eDEwMjgKPj4gIC0jZGVmaW5lIEpaX0RNQV9SRUdfRENJUlFNICAgICAgMHgxMDJjCj4+ICArI2Rl ZmluZSBKWl9ETUFfUkVHX0RNQUMgICAgICAgICAgICAgICAgMHgwMAo+PiAgKyNkZWZpbmUgSlpf RE1BX1JFR19ESVJRUCAgICAgICAweDA0Cj4+ICArI2RlZmluZSBKWl9ETUFfUkVHX0REUiAgICAg ICAgIDB4MDgKPj4gICsjZGVmaW5lIEpaX0RNQV9SRUdfRERSUyAgICAgICAgICAgICAgICAweDBj Cj4+ICArI2RlZmluZSBKWl9ETUFfUkVHX0RNQUNQICAgICAgIDB4MWMKPj4gICsjZGVmaW5lIEpa X0RNQV9SRUdfRFNJUlFQICAgICAgMHgyMAo+PiAgKyNkZWZpbmUgSlpfRE1BX1JFR19EU0lSUU0g ICAgICAweDI0Cj4+ICArI2RlZmluZSBKWl9ETUFfUkVHX0RDSVJRUCAgICAgIDB4MjgKPj4gICsj ZGVmaW5lIEpaX0RNQV9SRUdfRENJUlFNICAgICAgMHgyYwo+PiAKPj4gICAvKiBQZXItY2hhbm5l bCByZWdpc3RlcnMuICovCj4+ICAgI2RlZmluZSBKWl9ETUFfUkVHX0NIQU4obikgICAgIChuICog MHgyMCkKPj4gIC0jZGVmaW5lIEpaX0RNQV9SRUdfRFNBKG4pICAgICAgKDB4MDAgKyBKWl9ETUFf UkVHX0NIQU4obikpCj4+ICAtI2RlZmluZSBKWl9ETUFfUkVHX0RUQShuKSAgICAgICgweDA0ICsg SlpfRE1BX1JFR19DSEFOKG4pKQo+PiAgLSNkZWZpbmUgSlpfRE1BX1JFR19EVEMobikgICAgICAo MHgwOCArIEpaX0RNQV9SRUdfQ0hBTihuKSkKPj4gIC0jZGVmaW5lIEpaX0RNQV9SRUdfRFJUKG4p ICAgICAgKDB4MGMgKyBKWl9ETUFfUkVHX0NIQU4obikpCj4+ICAtI2RlZmluZSBKWl9ETUFfUkVH X0RDUyhuKSAgICAgICgweDEwICsgSlpfRE1BX1JFR19DSEFOKG4pKQo+PiAgLSNkZWZpbmUgSlpf RE1BX1JFR19EQ00obikgICAgICAoMHgxNCArIEpaX0RNQV9SRUdfQ0hBTihuKSkKPj4gIC0jZGVm aW5lIEpaX0RNQV9SRUdfRERBKG4pICAgICAgKDB4MTggKyBKWl9ETUFfUkVHX0NIQU4obikpCj4+ ICAtI2RlZmluZSBKWl9ETUFfUkVHX0RTRChuKSAgICAgICgweDFjICsgSlpfRE1BX1JFR19DSEFO KG4pKQo+PiAgKyNkZWZpbmUgSlpfRE1BX1JFR19EU0EgICAgICAgICAweDAwCj4+ICArI2RlZmlu ZSBKWl9ETUFfUkVHX0RUQSAgICAgICAgIDB4MDQKPj4gICsjZGVmaW5lIEpaX0RNQV9SRUdfRFRD ICAgICAgICAgMHgwOAo+PiAgKyNkZWZpbmUgSlpfRE1BX1JFR19EUlQgICAgICAgICAweDBjCj4+ ICArI2RlZmluZSBKWl9ETUFfUkVHX0RDUyAgICAgICAgIDB4MTAKPj4gICsjZGVmaW5lIEpaX0RN QV9SRUdfRENNICAgICAgICAgMHgxNAo+PiAgKyNkZWZpbmUgSlpfRE1BX1JFR19EREEgICAgICAg ICAweDE4Cj4+ICArI2RlZmluZSBKWl9ETUFfUkVHX0RTRCAgICAgICAgIDB4MWMKPj4gCj4+ICAg I2RlZmluZSBKWl9ETUFfRE1BQ19ETUFFICAgICAgIEJJVCgwKQo+PiAgICNkZWZpbmUgSlpfRE1B X0RNQUNfQVIgICAgICAgICBCSVQoMikKPj4gIEBAIC0xNDAsNyArMTQwLDggQEAgZW51bSBqel92 ZXJzaW9uIHsKPj4gCj4+ICAgc3RydWN0IGp6NDc4MF9kbWFfZGV2IHsKPj4gICAgICAgICAgc3Ry dWN0IGRtYV9kZXZpY2UgZG1hX2RldmljZTsKPj4gIC0gICAgICAgdm9pZCBfX2lvbWVtICpiYXNl Owo+PiAgKyAgICAgICB2b2lkIF9faW9tZW0gKmNobl9iYXNlOwo+PiAgKyAgICAgICB2b2lkIF9f aW9tZW0gKmN0cmxfYmFzZTsKPj4gICAgICAgICAgc3RydWN0IGNsayAqY2xrOwo+PiAgICAgICAg ICB1bnNpZ25lZCBpbnQgaXJxOwo+PiAgICAgICAgICB1bnNpZ25lZCBpbnQgbmJfY2hhbm5lbHM7 Cj4+ICBAQCAtMTc0LDE2ICsxNzUsMjggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgano0NzgwX2Rt YV9kZXYgCj4+ICpqejQ3ODBfZG1hX2NoYW5fcGFyZW50KAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRtYV9kZXZpY2UpOwo+PiAgIH0KPj4gCj4+ICAtc3RhdGljIGlubGluZSB1aW50 MzJfdCBqejQ3ODBfZG1hX3JlYWRsKHN0cnVjdCBqejQ3ODBfZG1hX2RldiAKPj4gKmp6ZG1hLAo+ PiAgK3N0YXRpYyBpbmxpbmUgdWludDMyX3Qgano0NzgwX2RtYV9jaG5fcmVhZGwoc3RydWN0IGp6 NDc4MF9kbWFfZGV2IAo+PiAqanpkbWEsCj4+ICArICAgICAgIHVuc2lnbmVkIGludCBjaG4sIHVu c2lnbmVkIGludCByZWcpCj4+ICArewo+PiAgKyAgICAgICByZXR1cm4gcmVhZGwoanpkbWEtPmNo bl9iYXNlICsgcmVnICsgSlpfRE1BX1JFR19DSEFOKGNobikpOwo+PiAgK30KPj4gICsKPj4gICtz dGF0aWMgaW5saW5lIHZvaWQgano0NzgwX2RtYV9jaG5fd3JpdGVsKHN0cnVjdCBqejQ3ODBfZG1h X2RldiAKPj4gKmp6ZG1hLAo+PiAgKyAgICAgICB1bnNpZ25lZCBpbnQgY2huLCB1bnNpZ25lZCBp bnQgcmVnLCB1aW50MzJfdCB2YWwpCj4+ICArewo+PiAgKyAgICAgICB3cml0ZWwodmFsLCBqemRt YS0+Y2huX2Jhc2UgKyByZWcgKyBKWl9ETUFfUkVHX0NIQU4oY2huKSk7Cj4+ICArfQo+PiAgKwo+ PiAgK3N0YXRpYyBpbmxpbmUgdWludDMyX3Qgano0NzgwX2RtYV9jdHJsX3JlYWRsKHN0cnVjdCBq ejQ3ODBfZG1hX2RldiAKPj4gKmp6ZG1hLAo+PiAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVnKQo+ PiAgIHsKPj4gIC0gICAgICAgcmV0dXJuIHJlYWRsKGp6ZG1hLT5iYXNlICsgcmVnKTsKPj4gICsg ICAgICAgcmV0dXJuIHJlYWRsKGp6ZG1hLT5jdHJsX2Jhc2UgKyByZWcpOwo+PiAgIH0KPj4gCj4+ ICAtc3RhdGljIGlubGluZSB2b2lkIGp6NDc4MF9kbWFfd3JpdGVsKHN0cnVjdCBqejQ3ODBfZG1h X2RldiAqanpkbWEsCj4+ICArc3RhdGljIGlubGluZSB2b2lkIGp6NDc4MF9kbWFfY3RybF93cml0 ZWwoc3RydWN0IGp6NDc4MF9kbWFfZGV2IAo+PiAqanpkbWEsCj4+ICAgICAgICAgIHVuc2lnbmVk IGludCByZWcsIHVpbnQzMl90IHZhbCkKPj4gICB7Cj4+ICAtICAgICAgIHdyaXRlbCh2YWwsIGp6 ZG1hLT5iYXNlICsgcmVnKTsKPj4gICsgICAgICAgd3JpdGVsKHZhbCwganpkbWEtPmN0cmxfYmFz ZSArIHJlZyk7Cj4+ICAgfQo+PiAKPj4gICBzdGF0aWMgc3RydWN0IGp6NDc4MF9kbWFfZGVzYyAq ano0NzgwX2RtYV9kZXNjX2FsbG9jKAo+PiAgQEAgLTQ3OCwxNyArNDkxLDE4IEBAIHN0YXRpYyB2 b2lkIGp6NDc4MF9kbWFfYmVnaW4oc3RydWN0IAo+PiBqejQ3ODBfZG1hX2NoYW4gKmp6Y2hhbikK Pj4gICAgICAgICAgfQo+PiAKPj4gICAgICAgICAgLyogVXNlIDgtd29yZCBkZXNjcmlwdG9ycy4g Ki8KPj4gIC0gICAgICAgano0NzgwX2RtYV93cml0ZWwoanpkbWEsIEpaX0RNQV9SRUdfRENTKGp6 Y2hhbi0+aWQpLCAKPj4gSlpfRE1BX0RDU19ERVM4KTsKPj4gICsgICAgICAgano0NzgwX2RtYV9j aG5fd3JpdGVsKGp6ZG1hLCBqemNoYW4tPmlkLAo+PiAgKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSlpfRE1BX1JFR19EQ1MsIEpaX0RNQV9EQ1NfREVTOCk7Cj4+IAo+PiAgICAgICAgICAv KiBXcml0ZSBkZXNjcmlwdG9yIGFkZHJlc3MgYW5kIGluaXRpYXRlIGRlc2NyaXB0b3IgZmV0Y2gu IAo+PiAqLwo+PiAgICAgICAgICBkZXNjX3BoeXMgPSBqemNoYW4tPmRlc2MtPmRlc2NfcGh5cyAr Cj4+ICAgICAgICAgICAgICAgICAgICAgIChqemNoYW4tPmN1cnJfaHdkZXNjICogCj4+IHNpemVv ZigqanpjaGFuLT5kZXNjLT5kZXNjKSk7Cj4+ICAtICAgICAgIGp6NDc4MF9kbWFfd3JpdGVsKGp6 ZG1hLCBKWl9ETUFfUkVHX0REQShqemNoYW4tPmlkKSwgCj4+IGRlc2NfcGh5cyk7Cj4+ICAtICAg ICAgIGp6NDc4MF9kbWFfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0REUlMsIEJJVChqemNoYW4t PmlkKSk7Cj4+ICArICAgICAgIGp6NDc4MF9kbWFfY2huX3dyaXRlbChqemRtYSwganpjaGFuLT5p ZCwgSlpfRE1BX1JFR19EREEsIAo+PiBkZXNjX3BoeXMpOwo+PiAgKyAgICAgICBqejQ3ODBfZG1h X2N0cmxfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0REUlMsIAo+PiBCSVQoanpjaGFuLT5pZCkp Owo+PiAKPj4gICAgICAgICAgLyogRW5hYmxlIHRoZSBjaGFubmVsLiAqLwo+PiAgLSAgICAgICBq ejQ3ODBfZG1hX3dyaXRlbChqemRtYSwgSlpfRE1BX1JFR19EQ1MoanpjaGFuLT5pZCksCj4+ICAt ICAgICAgICAgICAgICAgICAgICAgICAgIEpaX0RNQV9EQ1NfREVTOCB8IEpaX0RNQV9EQ1NfQ1RF KTsKPj4gICsgICAgICAgano0NzgwX2RtYV9jaG5fd3JpdGVsKGp6ZG1hLCBqemNoYW4tPmlkLCBK Wl9ETUFfUkVHX0RDUywKPj4gICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpaX0RNQV9E Q1NfREVTOCB8IEpaX0RNQV9EQ1NfQ1RFKTsKPj4gICB9Cj4+IAo+PiAgIHN0YXRpYyB2b2lkIGp6 NDc4MF9kbWFfaXNzdWVfcGVuZGluZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCj4+ICBAQCAtNTE0 LDcgKzUyOCw3IEBAIHN0YXRpYyBpbnQgano0NzgwX2RtYV90ZXJtaW5hdGVfYWxsKHN0cnVjdCAK Pj4gZG1hX2NoYW4gKmNoYW4pCj4+ICAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZqemNoYW4t PnZjaGFuLmxvY2ssIGZsYWdzKTsKPj4gCj4+ICAgICAgICAgIC8qIENsZWFyIHRoZSBETUEgc3Rh dHVzIGFuZCBzdG9wIHRoZSB0cmFuc2Zlci4gKi8KPj4gIC0gICAgICAgano0NzgwX2RtYV93cml0 ZWwoanpkbWEsIEpaX0RNQV9SRUdfRENTKGp6Y2hhbi0+aWQpLCAwKTsKPj4gICsgICAgICAgano0 NzgwX2RtYV9jaG5fd3JpdGVsKGp6ZG1hLCBqemNoYW4tPmlkLCBKWl9ETUFfUkVHX0RDUywgMCk7 Cj4+ICAgICAgICAgIGlmIChqemNoYW4tPmRlc2MpIHsKPj4gICAgICAgICAgICAgICAgICB2Y2hh bl90ZXJtaW5hdGVfdmRlc2MoJmp6Y2hhbi0+ZGVzYy0+dmRlc2MpOwo+PiAgICAgICAgICAgICAg ICAgIGp6Y2hhbi0+ZGVzYyA9IE5VTEw7Cj4+ICBAQCAtNTYzLDggKzU3Nyw4IEBAIHN0YXRpYyBz aXplX3Qgano0NzgwX2RtYV9kZXNjX3Jlc2lkdWUoc3RydWN0IAo+PiBqejQ3ODBfZG1hX2NoYW4g Kmp6Y2hhbiwKPj4gICAgICAgICAgICAgICAgICByZXNpZHVlICs9IGRlc2MtPmRlc2NbaV0uZHRj IDw8IAo+PiBqemNoYW4tPnRyYW5zZmVyX3NoaWZ0Owo+PiAKPj4gICAgICAgICAgaWYgKG5leHRf c2cgIT0gMCkgewo+PiAgLSAgICAgICAgICAgICAgIGNvdW50ID0gano0NzgwX2RtYV9yZWFkbChq emRtYSwKPj4gIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4+IEpa X0RNQV9SRUdfRFRDKGp6Y2hhbi0+aWQpKTsKPj4gICsgICAgICAgICAgICAgICBjb3VudCA9IGp6 NDc4MF9kbWFfY2huX3JlYWRsKGp6ZG1hLCBqemNoYW4tPmlkLAo+PiAgKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBKWl9ETUFfUkVHX0RUQyk7Cj4+ICAgICAgICAgICAg ICAgICAgcmVzaWR1ZSArPSBjb3VudCA8PCBqemNoYW4tPnRyYW5zZmVyX3NoaWZ0Owo+PiAgICAg ICAgICB9Cj4+IAo+PiAgQEAgLTYxMSw4ICs2MjUsOCBAQCBzdGF0aWMgdm9pZCBqejQ3ODBfZG1h X2NoYW5faXJxKHN0cnVjdCAKPj4gano0NzgwX2RtYV9kZXYgKmp6ZG1hLAo+PiAKPj4gICAgICAg ICAgc3Bpbl9sb2NrKCZqemNoYW4tPnZjaGFuLmxvY2spOwo+PiAKPj4gIC0gICAgICAgZGNzID0g ano0NzgwX2RtYV9yZWFkbChqemRtYSwgSlpfRE1BX1JFR19EQ1MoanpjaGFuLT5pZCkpOwo+PiAg LSAgICAgICBqejQ3ODBfZG1hX3dyaXRlbChqemRtYSwgSlpfRE1BX1JFR19EQ1MoanpjaGFuLT5p ZCksIDApOwo+PiAgKyAgICAgICBkY3MgPSBqejQ3ODBfZG1hX2Nobl9yZWFkbChqemRtYSwganpj aGFuLT5pZCwgCj4+IEpaX0RNQV9SRUdfRENTKTsKPj4gICsgICAgICAgano0NzgwX2RtYV9jaG5f d3JpdGVsKGp6ZG1hLCBqemNoYW4tPmlkLCBKWl9ETUFfUkVHX0RDUywgMCk7Cj4+IAo+PiAgICAg ICAgICBpZiAoZGNzICYgSlpfRE1BX0RDU19BUikgewo+PiAgICAgICAgICAgICAgICAgIGRldl93 YXJuKCZqemNoYW4tPnZjaGFuLmNoYW4uZGV2LT5kZXZpY2UsCj4+ICBAQCAtNjUxLDcgKzY2NSw3 IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBqejQ3ODBfZG1hX2lycV9oYW5kbGVyKGludCAKPj4gaXJx LCB2b2lkICpkYXRhKQo+PiAgICAgICAgICB1aW50MzJfdCBwZW5kaW5nLCBkbWFjOwo+PiAgICAg ICAgICBpbnQgaTsKPj4gCj4+ICAtICAgICAgIHBlbmRpbmcgPSBqejQ3ODBfZG1hX3JlYWRsKGp6 ZG1hLCBKWl9ETUFfUkVHX0RJUlFQKTsKPj4gICsgICAgICAgcGVuZGluZyA9IGp6NDc4MF9kbWFf Y3RybF9yZWFkbChqemRtYSwgSlpfRE1BX1JFR19ESVJRUCk7Cj4+IAo+PiAgICAgICAgICBmb3Ig KGkgPSAwOyBpIDwganpkbWEtPm5iX2NoYW5uZWxzOyBpKyspIHsKPj4gICAgICAgICAgICAgICAg ICBpZiAoIShwZW5kaW5nICYgKDE8PGkpKSkKPj4gIEBAIC02NjEsMTIgKzY3NSwxMiBAQCBzdGF0 aWMgaXJxcmV0dXJuX3Qgano0NzgwX2RtYV9pcnFfaGFuZGxlcihpbnQgCj4+IGlycSwgdm9pZCAq ZGF0YSkKPj4gICAgICAgICAgfQo+PiAKPj4gICAgICAgICAgLyogQ2xlYXIgaGFsdCBhbmQgYWRk cmVzcyBlcnJvciBzdGF0dXMgb2YgYWxsIGNoYW5uZWxzLiAqLwo+PiAgLSAgICAgICBkbWFjID0g ano0NzgwX2RtYV9yZWFkbChqemRtYSwgSlpfRE1BX1JFR19ETUFDKTsKPj4gICsgICAgICAgZG1h YyA9IGp6NDc4MF9kbWFfY3RybF9yZWFkbChqemRtYSwgSlpfRE1BX1JFR19ETUFDKTsKPj4gICAg ICAgICAgZG1hYyAmPSB+KEpaX0RNQV9ETUFDX0hMVCB8IEpaX0RNQV9ETUFDX0FSKTsKPj4gIC0g ICAgICAgano0NzgwX2RtYV93cml0ZWwoanpkbWEsIEpaX0RNQV9SRUdfRE1BQywgZG1hYyk7Cj4+ ICArICAgICAgIGp6NDc4MF9kbWFfY3RybF93cml0ZWwoanpkbWEsIEpaX0RNQV9SRUdfRE1BQywg ZG1hYyk7Cj4+IAo+PiAgICAgICAgICAvKiBDbGVhciBpbnRlcnJ1cHQgcGVuZGluZyBzdGF0dXMu ICovCj4+ICAtICAgICAgIGp6NDc4MF9kbWFfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RJUlFQ LCAwKTsKPj4gICsgICAgICAgano0NzgwX2RtYV9jdHJsX3dyaXRlbChqemRtYSwgSlpfRE1BX1JF R19ESVJRUCwgMCk7Cj4+IAo+PiAgICAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7Cj4+ICAgfQo+ PiAgQEAgLTgwNCw5ICs4MTgsMTkgQEAgc3RhdGljIGludCBqejQ3ODBfZG1hX3Byb2JlKHN0cnVj dCAKPj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiAgICAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+PiAgICAgICAgICB9Cj4+IAo+PiAgLSAgICAgICBqemRtYS0+YmFzZSA9IGRldm1f aW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7Cj4+ICAtICAgICAgIGlmIChJU19FUlIoanpkbWEt PmJhc2UpKQo+PiAgLSAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGp6ZG1hLT5iYXNlKTsK Pj4gICsgICAgICAganpkbWEtPmNobl9iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg cmVzKTsKPj4gICsgICAgICAgaWYgKElTX0VSUihqemRtYS0+Y2huX2Jhc2UpKQo+PiAgKyAgICAg ICAgICAgICAgIHJldHVybiBQVFJfRVJSKGp6ZG1hLT5jaG5fYmFzZSk7Cj4+ICArCj4+ICArICAg ICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMSk7 Cj4+ICArICAgICAgIGlmICghcmVzKSB7Cj4+ICArICAgICAgICAgICAgICAgZGV2X2VycihkZXYs ICJmYWlsZWQgdG8gZ2V0IEkvTyBtZW1vcnlcbiIpOwo+PiAgKyAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+PiAgKyAgICAgICB9Cj4+ICArCj4+ICArICAgICAgIGp6ZG1hLT5jdHJsX2Jh c2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+PiAgKyAgICAgICBpZiAoSVNf RVJSKGp6ZG1hLT5jdHJsX2Jhc2UpKQo+PiAgKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KGp6ZG1hLT5jdHJsX2Jhc2UpOwo+PiAKPj4gICAgICAgICAgcmV0ID0gcGxhdGZvcm1fZ2V0X2ly cShwZGV2LCAwKTsKPj4gICAgICAgICAgaWYgKHJldCA8IDApIHsKPj4gIEBAIC04NjQsOSArODg4 LDkgQEAgc3RhdGljIGludCBqejQ3ODBfZG1hX3Byb2JlKHN0cnVjdCAKPj4gcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQo+PiAgICAgICAgICAgKiBBbHNvIHNldCB0aGUgRk1TQyBiaXQgLSBpdCBpbmNy ZWFzZXMgTVNDIHBlcmZvcm1hbmNlLCBzbyAKPj4gaXQgbWFrZXMKPj4gICAgICAgICAgICogbGl0 dGxlIHNlbnNlIG5vdCB0byBlbmFibGUgaXQuCj4+ICAgICAgICAgICAqLwo+PiAgLSAgICAgICBq ejQ3ODBfZG1hX3dyaXRlbChqemRtYSwgSlpfRE1BX1JFR19ETUFDLAo+PiAgKyAgICAgICBqejQ3 ODBfZG1hX2N0cmxfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RNQUMsCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEpaX0RNQV9ETUFDX0RNQUUgfCBKWl9ETUFfRE1BQ19GTVNDKTsKPj4g IC0gICAgICAgano0NzgwX2RtYV93cml0ZWwoanpkbWEsIEpaX0RNQV9SRUdfRE1BQ1AsIDApOwo+ PiAgKyAgICAgICBqejQ3ODBfZG1hX2N0cmxfd3JpdGVsKGp6ZG1hLCBKWl9ETUFfUkVHX0RNQUNQ LCAwKTsKPj4gCj4+ICAgICAgICAgIElOSVRfTElTVF9IRUFEKCZkZC0+Y2hhbm5lbHMpOwo+PiAK Pj4gIC0tCj4+ICAyLjE4LjAKPj4gCj4+IAo+IAo+IFJlZ2FyZHMsCj4gUHJhc2FubmFLdW1hcgot LS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2Ny aWJlIGRtYWVuZ2luZSIgaW4KdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2Vy Lmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9y Zy9tYWpvcmRvbW8taW5mby5odG1sCg==