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: [RFC,v2,10/15] usb:cdns3: Ep0 operations part of the API From: Roger Quadros Message-Id: <5BFEA6D2.9010906@ti.com> Date: Wed, 28 Nov 2018 16:31:46 +0200 To: Pawel Laszczak , devicetree@vger.kernel.org Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, adouglas@cadence.com, jbergsagel@ti.com, nsekhar@ti.com, nm@ti.com, sureshp@cadence.com, peter.chen@nxp.com, pjez@cadence.com, kurahul@cadence.com List-ID: T24gMTgvMTEvMTggMTI6MDksIFBhd2VsIExhc3pjemFrIHdyb3RlOgo+IFBhdGNoIGltcGxlbWVu dHMgcmVsYXRlZCB0byBkZWZhdWx0IGVuZHBvaW50IGNhbGxiYWNrIGZ1bmN0aW9ucwo+IGRlZmlu ZWQgaW4gdXNiX2VwX29wcyBvYmplY3QKPiAKPiBTaWduZWQtb2ZmLWJ5OiBQYXdlbCBMYXN6Y3ph ayA8cGF3ZWxsQGNhZGVuY2UuY29tPgo+IC0tLQo+ICBkcml2ZXJzL3VzYi9jZG5zMy9lcDAuYyAg ICB8IDE5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMv dXNiL2NkbnMzL2dhZGdldC5jIHwgICA4ICsrCj4gIGRyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5o IHwgIDEwICsrCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2VwMC5jIGIvZHJpdmVy cy91c2IvY2RuczMvZXAwLmMKPiBpbmRleCBjYTE3OTU0NjcxNTUuLmQwNTE2OWU3MzYzMSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9lcDAuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL2Nk bnMzL2VwMC5jCj4gQEAgLTE4LDExICsxOCwxODUgQEAgc3RhdGljIHN0cnVjdCB1c2JfZW5kcG9p bnRfZGVzY3JpcHRvciBjZG5zM19nYWRnZXRfZXAwX2Rlc2MgPSB7Cj4gIAkuYm1BdHRyaWJ1dGVz ID0JVVNCX0VORFBPSU5UX1hGRVJfQ09OVFJPTCwKPiAgfTsKPiAgCj4gKy8qKgo+ICsgKiBjZG5z M19lcDBfcnVuX3RyYW5zZmVyIC0gRG8gdHJhbnNmZXIgb24gZGVmYXVsdCBlbmRwb2ludCBoYXJk d2FyZQo+ICsgKiBAcHJpdl9kZXY6IGV4dGVuZGVkIGdhZGdldCBvYmplY3QKPiArICogQGRtYV9h ZGRyOiBwaHlzaWNhbCBhZGRyZXNzIHdoZXJlIGRhdGEgaXMvd2lsbCBiZSBzdG9yZWQKPiArICog QGxlbmd0aDogZGF0YSBsZW5ndGgKPiArICogQGVyZHk6IHNldCBpdCB0byAxIHdoZW4gRVJEWSBw YWNrZXQgc2hvdWxkIGJlIHNlbnQgLQo+ICsgKiAgICAgICAgZXhpdCBmcm9tIGZsb3cgY29udHJv bCBzdGF0ZQo+ICsgKi8KPiArc3RhdGljIHZvaWQgY2RuczNfZXAwX3J1bl90cmFuc2ZlcihzdHJ1 Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiwKPiArCQkJCSAgIGRtYV9hZGRyX3QgZG1hX2FkZHIs Cj4gKwkJCQkgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgZXJkeSkKPiArewo+ICsJc3RydWN0 IGNkbnMzX3VzYl9yZWdzIF9faW9tZW0gKnJlZ3MgPSBwcml2X2Rldi0+cmVnczsKPiArCj4gKwlw cml2X2Rldi0+dHJiX2VwMC0+YnVmZmVyID0gVFJCX0JVRkZFUihkbWFfYWRkcik7Cj4gKwlwcml2 X2Rldi0+dHJiX2VwMC0+bGVuZ3RoID0gVFJCX0xFTihsZW5ndGgpOwo+ICsJcHJpdl9kZXYtPnRy Yl9lcDAtPmNvbnRyb2wgPSBUUkJfQ1lDTEUgfCBUUkJfSU9DIHwgVFJCX1RZUEUoVFJCX05PUk1B TCk7Cj4gKwo+ICsJY2RuczNfc2VsZWN0X2VwKHByaXZfZGV2LAo+ICsJCQlwcml2X2Rldi0+ZXAw X2RhdGFfZGlyID8gVVNCX0RJUl9JTiA6IFVTQl9ESVJfT1VUKTsKPiArCj4gKwl3cml0ZWwoRVBf U1RTX1RSQkVSUiwgJnJlZ3MtPmVwX3N0cyk7Cj4gKwl3cml0ZWwoRVBfVFJBRERSX1RSQUREUihw cml2X2Rldi0+dHJiX2VwMF9kbWEpLCAmcmVncy0+ZXBfdHJhZGRyKTsKPiArCj4gKwlkZXZfZGJn KCZwcml2X2Rldi0+ZGV2LCAiLy9EaW5nIERvbmcgZXAwJXNcbiIsCj4gKwkJcHJpdl9kZXYtPmVw MF9kYXRhX2RpciA/ICJJTiIgOiAiT1VUIik7Cj4gKwo+ICsJLyogVFJCIHNob3VsZCBiZSBwcmVw YXJlZCBiZWZvcmUgc3RhcnRpbmcgdHJhbnNmZXIgKi8KPiArCXdyaXRlbChFUF9DTURfRFJEWSwg JnJlZ3MtPmVwX2NtZCk7Cj4gKwo+ICsJaWYgKGVyZHkpCj4gKwkJd3JpdGVsKEVQX0NNRF9FUkRZ LCAmcHJpdl9kZXYtPnJlZ3MtPmVwX2NtZCk7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGNkbnMz X3ByZXBhcmVfc2V0dXBfcGFja2V0KHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2KQo+ICB7 Cj4gIAkvL1RPRE86IEltcGxlbWVudHMgdGhpcyBmdW5jdGlvbgo+ICB9Cj4gIAo+ICtzdGF0aWMg dm9pZCBjZG5zM19zZXRfaHdfY29uZmlndXJhdGlvbihzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2 X2RldikKCklzIHRoaXMgZ29pbmcgdG8gYmUgdXNlZCBvbmx5IGZvciBlcDA/CklmIHllcyB0aGVu IGxldCdzIGhhdmUgZXAwIGluIHRoZSBuYW1lLgpJZiBub3QgdGhlbiB0aGlzIGZ1bmN0aW9uIHNo b3VsZCBiZSBpbiBnYWRnZXQuYwoKPiArewo+ICsJc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2 X2VwOwo+ICsJc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICsJc3RydWN0IHVzYl9lcCAq ZXA7Cj4gKwlpbnQgcmVzdWx0ID0gMDsKPiArCj4gKwlpZiAocHJpdl9kZXYtPmh3X2NvbmZpZ3Vy ZWRfZmxhZykKPiArCQlyZXR1cm47Cj4gKwo+ICsJd3JpdGVsKFVTQl9DT05GX0NGR1NFVCwgJnBy aXZfZGV2LT5yZWdzLT51c2JfY29uZik7Cj4gKwl3cml0ZWwoRVBfQ01EX0VSRFkgfCBFUF9DTURf UkVRX0NNUEwsICZwcml2X2Rldi0+cmVncy0+ZXBfY21kKTsKPiArCj4gKwljZG5zM19zZXRfcmVn aXN0ZXJfYml0KCZwcml2X2Rldi0+cmVncy0+dXNiX2NvbmYsCj4gKwkJCSAgICAgICBVU0JfQ09O Rl9VMUVOIHwgVVNCX0NPTkZfVTJFTik7CgpTaG91bGRuJ3QgVTEvVTIgYmUgZW5hYmxlZCBvbmx5 IGlmIHRoZSBVU0JfREVWSUNFX1UxX0VOQUJMRS9VU0JfREVWSUNFX1UyX0VOQUJMRQpkZXZpY2Ug cmVxdWVzdCB3YXMgcmVjZWl2ZWQ/Cgo+ICsKPiArCS8qIHdhaXQgdW50aWwgY29uZmlndXJhdGlv biBzZXQgKi8KPiArCXJlc3VsdCA9IGNkbnMzX2hhbmRzaGFrZSgmcHJpdl9kZXYtPnJlZ3MtPnVz Yl9zdHMsCj4gKwkJCQkgVVNCX1NUU19DRkdTVFNfTUFTSywgMSwgMTAwKTsKPiArCj4gKwlwcml2 X2Rldi0+aHdfY29uZmlndXJlZF9mbGFnID0gMTsKPiArCWNkbnMzX2VuYWJsZV9sMShwcml2X2Rl diwgMSk7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShlcCwgJnByaXZfZGV2LT5nYWRnZXQu ZXBfbGlzdCwgZXBfbGlzdCkgewo+ICsJCWlmIChlcC0+ZW5hYmxlZCkgewo+ICsJCQlwcml2X2Vw ID0gZXBfdG9fY2RuczNfZXAoZXApOwo+ICsJCQlyZXF1ZXN0ID0gY2RuczNfbmV4dF9yZXF1ZXN0 KCZwcml2X2VwLT5yZXF1ZXN0X2xpc3QpOwo+ICsJCQlpZiAocmVxdWVzdCkKPiArCQkJCWNkbnMz X2VwX3J1bl90cmFuc2Zlcihwcml2X2VwLCByZXF1ZXN0KTsKCndoeSBhcmUgeW91IHN0YXJ0aW5n IHRyYW5zZmVycyBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgc3VwcG9zZWQgdG8gc2V0IGh3IGNvbmZp Z3VyYXRpb24gb25seS4KCj4gKwkJfQo+ICsJfQo+ICt9Cj4gKwo+ICsvKioKPiArICogY2RuczNf Z2FkZ2V0X2VwMF9lbmFibGUKPiArICogRnVuY3Rpb24gc2hvdWxkbid0IGJlIGNhbGxlZCBieSBn YWRnZXQgZHJpdmVyLAo+ICsgKiBlbmRwb2ludCAwIGlzIGFsbHdheXMgYWN0aXZlCj4gKyAqLwo+ ICtzdGF0aWMgaW50IGNkbnMzX2dhZGdldF9lcDBfZW5hYmxlKHN0cnVjdCB1c2JfZXAgKmVwLAo+ ICsJCQkJICAgY29uc3Qgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjKQo+ICt7 Cj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGNkbnMzX2dhZGdldF9l cDBfZGlzYWJsZQo+ICsgKiBGdW5jdGlvbiBzaG91bGRuJ3QgYmUgY2FsbGVkIGJ5IGdhZGdldCBk cml2ZXIsCj4gKyAqIGVuZHBvaW50IDAgaXMgYWxsd2F5cyBhY3RpdmUKPiArICovCj4gK3N0YXRp YyBpbnQgY2RuczNfZ2FkZ2V0X2VwMF9kaXNhYmxlKHN0cnVjdCB1c2JfZXAgKmVwKQo+ICt7Cj4g KwlyZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGNkbnMzX2dhZGdldF9lcDBf c2V0X2hhbHQKPiArICogQGVwOiBwb2ludGVyIHRvIGVuZHBvaW50IHplcm8gb2JqZWN0Cj4gKyAq IEB2YWx1ZTogMSBmb3Igc2V0IHN0YWxsLCAwIGZvciBjbGVhciBzdGFsbAo+ICsgKgo+ICsgKiBS ZXR1cm5zIDAKPiArICovCj4gK3N0YXRpYyBpbnQgY2RuczNfZ2FkZ2V0X2VwMF9zZXRfaGFsdChz dHJ1Y3QgdXNiX2VwICplcCwgaW50IHZhbHVlKQo+ICt7Cj4gKwkvKiBUT0RPICovCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGNkbnMzX2dhZGdldF9lcDBfcXVldWUgVHJhbnNm ZXIgZGF0YSBvbiBlbmRwb2ludCB6ZXJvCj4gKyAqIEBlcDogcG9pbnRlciB0byBlbmRwb2ludCB6 ZXJvIG9iamVjdAo+ICsgKiBAcmVxdWVzdDogcG9pbnRlciB0byByZXF1ZXN0IG9iamVjdAo+ICsg KiBAZ2ZwX2ZsYWdzOiBnZnAgZmxhZ3MKPiArICoKPiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Ms IGVycm9yIGNvZGUgZWxzZXdoZXJlCj4gKyAqLwo+ICtzdGF0aWMgaW50IGNkbnMzX2dhZGdldF9l cDBfcXVldWUoc3RydWN0IHVzYl9lcCAqZXAsCj4gKwkJCQkgIHN0cnVjdCB1c2JfcmVxdWVzdCAq cmVxdWVzdCwKPiArCQkJCSAgZ2ZwX3QgZ2ZwX2ZsYWdzKQo+ICt7Cj4gKwlzdHJ1Y3QgY2RuczNf ZW5kcG9pbnQgKnByaXZfZXAgPSBlcF90b19jZG5zM19lcChlcCk7Cj4gKwlzdHJ1Y3QgY2RuczNf ZGV2aWNlICpwcml2X2RldiA9IHByaXZfZXAtPmNkbnMzX2RldjsKPiArCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gKwlpbnQgZXJkeV9zZW50ID0gMDsKPiArCWludCByZXQgPSAwOwo+ICsKPiArCWRl dl9kYmcoJnByaXZfZGV2LT5kZXYsICJRdWV1ZSB0byBFcDAlcyBMOiAlZFxuIiwKPiArCQlwcml2 X2Rldi0+ZXAwX2RhdGFfZGlyID8gIklOIiA6ICJPVVQiLAo+ICsJCXJlcXVlc3QtPmxlbmd0aCk7 Cj4gKwo+ICsJLyogc2VuZCBTVEFUVVMgc3RhZ2UgKi8KPiArCWlmIChyZXF1ZXN0LT5sZW5ndGgg PT0gMCAmJiByZXF1ZXN0LT56ZXJvID09IDApIHsKCklzIHRoaXMgY2hlY2sgc3VmZmljaWVudCB0 byBrbm93IFNUQVRVUyBzdGFnZT8KSXQgbWlnaHQgYmUgbm9ybWFsIGZvciB2ZW5kb3Igc3BlY2lm aWMgY29udHJvbCByZXF1ZXN0IHRvIGhhdmUKcmVxdWVzdC0+bGVuZ3RoID0gMCBhbmQgcmVxdWVz dC0+emVybyA9IDAuCgoKPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdl9kZXYtPmxvY2ssIGZs YWdzKTsKPiArCQljZG5zM19zZWxlY3RfZXAocHJpdl9kZXYsIDB4MDApOwo+ICsKPiArCQllcmR5 X3NlbnQgPSAhcHJpdl9kZXYtPmh3X2NvbmZpZ3VyZWRfZmxhZzsKPiArCQljZG5zM19zZXRfaHdf Y29uZmlndXJhdGlvbihwcml2X2Rldik7CgpXaGF0IGlmIHdlJ3JlIHN0aWxsIGJ1c3kgd2l0aCBE QVRBIHN0YWdlIG9mIHByZXZpb3VzIGVwMF9xdWV1ZT8KCmlmICghbGlzdF9lbXB0eSgmcHJpdl9l cC0+cmVxdWVzdF9saXN0KSkgc2hvdWxkIGJlIGRvbmUgYXMgdGhlIGZpcnN0IHRoaW5nIGluIHRo aXMgZnVuY3Rpb24uCgo+ICsKPiArCQlpZiAoIWVyZHlfc2VudCkKPiArCQkJd3JpdGVsKEVQX0NN RF9FUkRZIHwgRVBfQ01EX1JFUV9DTVBMLAo+ICsJCQkgICAgICAgJnByaXZfZGV2LT5yZWdzLT5l cF9jbWQpOwo+ICsKPiArCQljZG5zM19wcmVwYXJlX3NldHVwX3BhY2tldChwcml2X2Rldik7Cj4g KwkJcmVxdWVzdC0+YWN0dWFsID0gMDsKPiArCQlwcml2X2Rldi0+c3RhdHVzX2NvbXBsZXRpb25f bm9fY2FsbCA9IHRydWU7Cj4gKwkJcHJpdl9kZXYtPnBlbmRpbmdfc3RhdHVzX3JlcXVlc3QgPSBy ZXF1ZXN0Owo+ICsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFn cyk7Cj4gKwo+ICsJCS8qCj4gKwkJICogU2luY2UgdGhlcmUgaXMgbm8gY29tcGxldGlvbiBpbnRl cnJ1cHQgZm9yIHN0YXR1cyBzdGFnZSwKPiArCQkgKiBpdCBuZWVkcyB0byBjYWxsIC0+Y29tcGxl dGlvbiBpbiBzb2Z0d2FyZSBhZnRlcgo+ICsJCSAqIGVwMF9xdWV1ZSBpcyBiYWNrLgo+ICsJCSAq Lwo+ICsJCXF1ZXVlX3dvcmsoc3lzdGVtX2ZyZWV6YWJsZV93cSwgJnByaXZfZGV2LT5wZW5kaW5n X3N0YXR1c193cSk7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJc3Bpbl9sb2NrX2lycXNh dmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7Cj4gKwlpZiAoIWxpc3RfZW1wdHkoJnByaXZfZXAt PnJlcXVlc3RfbGlzdCkpIHsKPiArCQlkZXZfZXJyKCZwcml2X2Rldi0+ZGV2LAo+ICsJCQkiY2Fu J3QgaGFuZGxlIG11bHRpcGxlIHJlcXVlc3RzIGZvciBlcDBcbiIpOwo+ICsJCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7Cj4gKwkJcmV0dXJuIC1FT1BOT1RT VVBQOwoKLUVCVVNZPwoKPiArCX0KPiArCj4gKwlyZXQgPSB1c2JfZ2FkZ2V0X21hcF9yZXF1ZXN0 X2J5X2Rldihwcml2X2Rldi0+c3lzZGV2LCByZXF1ZXN0LAo+ICsJCQkJCSAgICBwcml2X2Rldi0+ ZXAwX2RhdGFfZGlyKTsKPiArCWlmIChyZXQpIHsKPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZwcml2X2Rldi0+bG9jaywgZmxhZ3MpOwo+ICsJCWRldl9lcnIoJnByaXZfZGV2LT5kZXYsICJm YWlsZWQgdG8gbWFwIHJlcXVlc3RcbiIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsK PiArCXByaXZfZGV2LT5lcDBfcmVxdWVzdCA9IHJlcXVlc3Q7Cj4gKwlsaXN0X2FkZF90YWlsKCZy ZXF1ZXN0LT5saXN0LCAmcHJpdl9lcC0+cmVxdWVzdF9saXN0KTsKPiArCWNkbnMzX2VwMF9ydW5f dHJhbnNmZXIocHJpdl9kZXYsIHJlcXVlc3QtPmRtYSwgcmVxdWVzdC0+bGVuZ3RoLCAxKTsKPiAr CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGNkbnMzX2dhZGdldF9lcF9zZXRfd2Vk Z2UgU2V0IHdlZGdlIG9uIHNlbGVjdGVkIGVuZHBvaW50Cj4gICAqIEBlcDogZW5kcG9pbnQgb2Jq ZWN0Cj4gQEAgLTQxLDYgKzIxNSwxNyBAQCBpbnQgY2RuczNfZ2FkZ2V0X2VwX3NldF93ZWRnZShz dHJ1Y3QgdXNiX2VwICplcCkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtjb25zdCBzdHJ1Y3Qg dXNiX2VwX29wcyBjZG5zM19nYWRnZXRfZXAwX29wcyA9IHsKPiArCS5lbmFibGUgPSBjZG5zM19n YWRnZXRfZXAwX2VuYWJsZSwKPiArCS5kaXNhYmxlID0gY2RuczNfZ2FkZ2V0X2VwMF9kaXNhYmxl LAo+ICsJLmFsbG9jX3JlcXVlc3QgPSBjZG5zM19nYWRnZXRfZXBfYWxsb2NfcmVxdWVzdCwKPiAr CS5mcmVlX3JlcXVlc3QgPSBjZG5zM19nYWRnZXRfZXBfZnJlZV9yZXF1ZXN0LAo+ICsJLnF1ZXVl ID0gY2RuczNfZ2FkZ2V0X2VwMF9xdWV1ZSwKPiArCS5kZXF1ZXVlID0gY2RuczNfZ2FkZ2V0X2Vw X2RlcXVldWUsCj4gKwkuc2V0X2hhbHQgPSBjZG5zM19nYWRnZXRfZXAwX3NldF9oYWx0LAo+ICsJ LnNldF93ZWRnZSA9IGNkbnMzX2dhZGdldF9lcF9zZXRfd2VkZ2UsCj4gK307Cj4gKwo+ICAvKioK PiAgICogY2RuczNfZXAwX2NvbmZpZyAtIENvbmZpZ3VyZXMgZGVmYXVsdCBlbmRwb2ludAo+ICAg KiBAcHJpdl9kZXY6IGV4dGVuZGVkIGdhZGdldCBvYmplY3QKPiBAQCAtNjIsNiArMjQ3LDkgQEAg dm9pZCBjZG5zM19lcDBfY29uZmlnKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2KQo+ICAJ CXByaXZfZGV2LT5lcDBfcmVxdWVzdCA9IE5VTEw7Cj4gIAl9Cj4gIAo+ICsJcHJpdl9kZXYtPnUx X2FsbG93ZWQgPSAwOwo+ICsJcHJpdl9kZXYtPnUyX2FsbG93ZWQgPSAwOwo+ICsKCndoZXJlIGRv IHlvdSBzZXQgdGhlc2U/Cgo+ICAJcHJpdl9kZXYtPmdhZGdldC5lcDAtPm1heHBhY2tldCA9IG1h eF9wYWNrZXRfc2l6ZTsKPiAgCWNkbnMzX2dhZGdldF9lcDBfZGVzYy53TWF4UGFja2V0U2l6ZSA9 IGNwdV90b19sZTE2KG1heF9wYWNrZXRfc2l6ZSk7Cj4gIAo+IEBAIC0xMDYsOCArMjk0LDcgQEAg aW50IGNkbnMzX2luaXRfZXAwKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2KQo+ICAJc3By aW50ZihlcDAtPm5hbWUsICJlcDAiKTsKPiAgCj4gIAkvKiBmaWxsIGxpbnV4IGZpZWxkcyAqLwo+ IC0JLy9UT0RPOiBpbXBsZW1lbnRzIGNkbnMzX2dhZGdldF9lcDBfb3BzIG9iamVjdAo+IC0JLy9l cDAtPmVuZHBvaW50Lm9wcyA9ICZjZG5zM19nYWRnZXRfZXAwX29wczsKPiArCWVwMC0+ZW5kcG9p bnQub3BzID0gJmNkbnMzX2dhZGdldF9lcDBfb3BzOwo+ICAJZXAwLT5lbmRwb2ludC5tYXhidXJz dCA9IDE7Cj4gIAl1c2JfZXBfc2V0X21heHBhY2tldF9saW1pdCgmZXAwLT5lbmRwb2ludCwgRU5E UE9JTlQwX01BWF9QQUNLRVRfTElNSVQpOwo+ICAJZXAwLT5lbmRwb2ludC5hZGRyZXNzID0gMDsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2RuczMvZ2FkZ2V0LmMgYi9kcml2ZXJzL3VzYi9j ZG5zMy9nYWRnZXQuYwo+IGluZGV4IDFmMmE0MzQ0ODZkYy4uYzk2NWRhMTZjMGM4IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5jCj4gKysrIGIvZHJpdmVycy91c2IvY2Ru czMvZ2FkZ2V0LmMKPiBAQCAtMTg4LDYgKzE4OCwxNCBAQCBzdGF0aWMgdm9pZCBjZG5zM19lcF9z dGFsbF9mbHVzaChzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXApCj4gIAlwcml2X2VwLT5m bGFncyB8PSBFUF9TVEFMTDsKPiAgfQo+ICAKCj4gK3ZvaWQgY2RuczNfZW5hYmxlX2wxKHN0cnVj dCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LCBpbnQgZW5hYmxlKQoKU29tZSBjb21tZW50IG1pZ2h0 IGhlbHAgYXMgdG8gd2hhdCBMMSBpcy4KCj4gK3sKPiArCWlmIChlbmFibGUpCj4gKwkJd3JpdGVs KFVTQl9DT05GX0wxRU4sICZwcml2X2Rldi0+cmVncy0+dXNiX2NvbmYpOwo+ICsJZWxzZQo+ICsJ CXdyaXRlbChVU0JfQ09ORl9MMURTLCAmcHJpdl9kZXYtPnJlZ3MtPnVzYl9jb25mKTsKPiArfQo+ ICsKPiAgLyoqCj4gICAqIGNkbnMzX2dhZGdldF9naXZlYmFjayAtIGNhbGwgc3RydWN0IHVzYl9y ZXF1ZXN0J3MgLT5jb21wbGV0ZSBjYWxsYmFjawo+ICAgKiBAcHJpdl9lcDogVGhlIGVuZHBvaW50 IHRvIHdob20gdGhlIHJlcXVlc3QgYmVsb25ncyB0bwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9jZG5zMy9nYWRnZXQuaCBiL2RyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5oCj4gaW5kZXggYTRi ZTI4OGIzNGNiLi4yMjRmNmI4MzBiYzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvY2RuczMv Z2FkZ2V0LmgKPiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9nYWRnZXQuaAo+IEBAIC0xMDY4LDEx ICsxMDY4LDIxIEBAIHN0cnVjdCBjZG5zM19kZXZpY2Ugewo+ICAJc3RydWN0IHVzYl9yZXF1ZXN0 CQkqcGVuZGluZ19zdGF0dXNfcmVxdWVzdDsKPiAgfTsKPiAgCj4gK2ludCBjZG5zM19oYW5kc2hh a2Uodm9pZCBfX2lvbWVtICpwdHIsIHUzMiBtYXNrLCB1MzIgZG9uZSwgaW50IHVzZWMpOwo+ICB2 b2lkIGNkbnMzX3NldF9yZWdpc3Rlcl9iaXQodm9pZCBfX2lvbWVtICpwdHIsIHUzMiBtYXNrKTsK PiAgaW50IGNkbnMzX2luaXRfZXAwKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2KTsKPiAg dm9pZCBjZG5zM19lcDBfY29uZmlnKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2KTsKPiAg dm9pZCBjZG5zM19zZWxlY3RfZXAoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsIHUzMiBl cCk7Cj4gK3ZvaWQgY2RuczNfZW5hYmxlX2wxKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2 LCBpbnQgZW5hYmxlKTsKPiArc3RydWN0IHVzYl9yZXF1ZXN0ICpjZG5zM19uZXh0X3JlcXVlc3Qo c3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7Cj4gK2ludCBjZG5zM19lcF9ydW5fdHJhbnNmZXIoc3Ry dWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwLAo+ICsJCQkgIHN0cnVjdCB1c2JfcmVxdWVzdCAq cmVxdWVzdCk7Cj4gIGludCBjZG5zM19nYWRnZXRfZXBfc2V0X3dlZGdlKHN0cnVjdCB1c2JfZXAg KmVwKTsKPiAgaW50IGNkbnMzX2dhZGdldF9lcF9zZXRfaGFsdChzdHJ1Y3QgdXNiX2VwICplcCwg aW50IHZhbHVlKTsKPiArc3RydWN0IHVzYl9yZXF1ZXN0ICpjZG5zM19nYWRnZXRfZXBfYWxsb2Nf cmVxdWVzdChzdHJ1Y3QgdXNiX2VwICplcCwKPiArCQkJCQkJICBnZnBfdCBnZnBfZmxhZ3MpOwo+ ICt2b2lkIGNkbnMzX2dhZGdldF9lcF9mcmVlX3JlcXVlc3Qoc3RydWN0IHVzYl9lcCAqZXAsCj4g KwkJCQkgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdCk7Cj4gK2ludCBjZG5zM19nYWRnZXRf ZXBfZGVxdWV1ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXF1ZXN0 KTsKPiAgCj4gICNlbmRpZiAvKiBfX0xJTlVYX0NETlMzX0dBREdFVCAqLwo+IAoKY2hlZXJzLAot cm9nZXIK