From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH 10/24] ALSA: au1x00: convert to platform device Date: Fri, 14 Feb 2014 08:33:50 +0100 Message-ID: References: <1392201340-27113-1-git-send-email-tiwai@suse.de> <1392201340-27113-11-git-send-email-tiwai@suse.de> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id 2BEDC2615B6 for ; Fri, 14 Feb 2014 08:33:51 +0100 (CET) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: =?UTF-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= Cc: alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org QXQgRnJpLCAxNCBGZWIgMjAxNCAwMToxOToyMiArMDEwMCwKTWljaGHFgiBNaXJvc8WCYXcgd3Jv dGU6Cj4gCj4gMjAxNC0wMi0xMiAxMTozNSBHTVQrMDE6MDAgVGFrYXNoaSBJd2FpIDx0aXdhaUBz dXNlLmRlPjoKPiA+IEZyb206IE1hbnVlbCBMYXVzcyA8bWFub0Byb2FyaW5lbGsuaG9tZWxpbnV4 Lm5ldD4KPiBbLi4uXQo+ID4gLS0tIGEvc291bmQvbWlwcy9hdTF4MDAuYwo+ID4gKysrIGIvc291 bmQvbWlwcy9hdTF4MDAuYwo+IFsuLi5dCj4gPiAtc3RhdGljIGludCBfX2luaXQKPiA+IC1hdTEw MDBfaW5pdCh2b2lkKQo+ID4gK3N0YXRpYyBpbnQgYXUxMDAwX2FjOTdfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiA+ICB7Cj4gWy4uLl0KPiA+ICtvdXQzOgo+ID4gKyAgICAg ICBrZnJlZShhdTEwMDAtPnN0cmVhbVtQTEFZQkFDS10pOwo+ID4gK291dDI6Cj4gPiArICAgICAg IGtmcmVlKGF1MTAwMC0+c3RyZWFtW1BMQVlCQUNLXSk7Cj4gPiArb3V0MToKPiBbLi4uXQo+IAo+ IFRoaXMgbG9va3MgYmFkLgoKR29vZCBjYXRjaC4KCj4gTWF5YmUgaXQgY291bGQgdXNlIGRldm1f KigpIGZ1bmN0aW9ucz8KCmRldm1fKigpIGRvZXNuJ3QgZml0IHdpdGggdGhpcyBzdHJ1Y3R1cmVk IGRhdGEsIHVuZm9ydHVuYXRlbHkuClRoZSByZXZpc2VkIHBhdGNoIGJlbG93IHNpbXBsaWZpZXMg dGhlIHBhcnQgYnkganVzdCBjYWxsaW5nIHRoZSBzaW5nbGUKZGVzdHJ1Y3RvciBsaWtlIG90aGVy IHNvdW5kIGRyaXZlcnMuCgoKdGhhbmtzLAoKVGFrYXNoaQoKLS0gPjggLS0KRnJvbTogTWFudWVs IExhdXNzIDxtYW5vQHJvYXJpbmVsay5ob21lbGludXgubmV0PgpTdWJqZWN0OiBbUEFUQ0ggdjJd IEFMU0E6IGF1MXgwMDogY29udmVydCB0byBwbGF0Zm9ybSBkZXZpY2UKCk1ha2Ugc291bmQvbWlw cy9hdTF4MDAuYyBhIHByb3BlciBwbGF0Zm9ybV9kcml2ZXIuCgpbbWlub3IgY29kaW5nIHN0eWxl IGZpeGVzLCBjbGVhbnVwIGFuZCBmb3J3YXJkLXBvcnRlZCBieSB0aXdhaV0KCkNjOiBDaGFybGVz IEVpZHNuZXNzIDxjaGFybGVzQGNvb3Blci1zdHJlZXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYW51 ZWwgTGF1c3MgPG1hbm9Acm9hcmluZWxrLmhvbWVsaW51eC5uZXQ+ClNpZ25lZC1vZmYtYnk6IFRh a2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KLS0tCiBzb3VuZC9taXBzL2F1MXgwMC5jIHwgMjM5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc291bmQvbWlwcy9hdTF4MDAuYyBiL3NvdW5kL21pcHMvYXUxeDAwLmMKaW5kZXggMjI0 ZjU0YmUxNWE2Li41MjZlNTlmNDM4MzIgMTAwNjQ0Ci0tLSBhL3NvdW5kL21pcHMvYXUxeDAwLmMK KysrIGIvc291bmQvbWlwcy9hdTF4MDAuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPGxp bnV4L2lvcG9ydC5oPgogI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgogI2luY2x1ZGUgPGxp bnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRl IDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8c291 bmQvY29yZS5oPgpAQCAtOTgsNiArOTksNyBAQCBzdHJ1Y3Qgc25kX2F1MTAwMCB7CiAKIAlzdHJ1 Y3Qgc25kX3BjbSAqcGNtOwogCXN0cnVjdCBhdWRpb19zdHJlYW0gKnN0cmVhbVsyXTsJLyogcGxh eWJhY2sgJiBjYXB0dXJlICovCisJaW50IGRtYWlkWzJdOwkJLyogdHgoMCkvcngoMSkgRE1BIGlk cyAqLwogfTsKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9jYWwgRnVuY3Rpb25z IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTQ2NSwxNSArNDY3LDE3IEBA IHNuZF9hdTEwMDBfcGNtX25ldyhzdHJ1Y3Qgc25kX2F1MTAwMCAqYXUxMDAwKQogCXNwaW5fbG9j a19pbml0KCZhdTEwMDAtPnN0cmVhbVtDQVBUVVJFXS0+ZG1hX2xvY2spOwogCiAJZmxhZ3MgPSBj bGFpbV9kbWFfbG9jaygpOwotCWlmICgoYXUxMDAwLT5zdHJlYW1bUExBWUJBQ0tdLT5kbWEgPSBy ZXF1ZXN0X2F1MTAwMF9kbWEoRE1BX0lEX0FDOTdDX1RYLAorCWF1MTAwMC0+c3RyZWFtW1BMQVlC QUNLXS0+ZG1hID0gcmVxdWVzdF9hdTEwMDBfZG1hKGF1MTAwMC0+ZG1haWRbMF0sCiAJCQkiQUM5 NyBUWCIsIGF1MTAwMF9kbWFfaW50ZXJydXB0LCAwLAotCQkJYXUxMDAwLT5zdHJlYW1bUExBWUJB Q0tdKSkgPCAwKSB7CisJCQlhdTEwMDAtPnN0cmVhbVtQTEFZQkFDS10pOworCWlmIChhdTEwMDAt PnN0cmVhbVtQTEFZQkFDS10tPmRtYSA8IDApIHsKIAkJcmVsZWFzZV9kbWFfbG9jayhmbGFncyk7 CiAJCXJldHVybiAtRUJVU1k7CiAJfQotCWlmICgoYXUxMDAwLT5zdHJlYW1bQ0FQVFVSRV0tPmRt YSA9IHJlcXVlc3RfYXUxMDAwX2RtYShETUFfSURfQUM5N0NfUlgsCisJYXUxMDAwLT5zdHJlYW1b Q0FQVFVSRV0tPmRtYSA9IHJlcXVlc3RfYXUxMDAwX2RtYShhdTEwMDAtPmRtYWlkWzFdLAogCQkJ IkFDOTcgUlgiLCBhdTEwMDBfZG1hX2ludGVycnVwdCwgMCwKLQkJCWF1MTAwMC0+c3RyZWFtW0NB UFRVUkVdKSkgPCAwKXsKKwkJCWF1MTAwMC0+c3RyZWFtW0NBUFRVUkVdKTsKKwlpZiAoYXUxMDAw LT5zdHJlYW1bQ0FQVFVSRV0tPmRtYSA8IDApewogCQlyZWxlYXNlX2RtYV9sb2NrKGZsYWdzKTsK IAkJcmV0dXJuIC1FQlVTWTsKIAl9CkBAIC01NTIsNjkgKzU1NiwxMiBAQCBnZXQgdGhlIGludGVy cnVwdCBkcml2ZW4gY2FzZSB0byB3b3JrIGVmZmljaWVudGx5ICovCiAJc3Bpbl91bmxvY2soJmF1 MTAwMC0+YWM5N19sb2NrKTsKIH0KIAotc3RhdGljIGludAotc25kX2F1MTAwMF9hYzk3X25ldyhz dHJ1Y3Qgc25kX2F1MTAwMCAqYXUxMDAwKQotewotCWludCBlcnI7Ci0Jc3RydWN0IHNuZF9hYzk3 X2J1cyAqcGJ1czsKLQlzdHJ1Y3Qgc25kX2FjOTdfdGVtcGxhdGUgYWM5NzsKLSAJc3RhdGljIHN0 cnVjdCBzbmRfYWM5N19idXNfb3BzIG9wcyA9IHsKLQkJLndyaXRlID0gc25kX2F1MTAwMF9hYzk3 X3dyaXRlLAotCQkucmVhZCA9IHNuZF9hdTEwMDBfYWM5N19yZWFkLAotCX07Ci0KLQlpZiAoKGF1 MTAwMC0+YWM5N19yZXNfcG9ydCA9IHJlcXVlc3RfbWVtX3JlZ2lvbihDUEhZU0FERFIoQUM5N0Nf Q09ORklHKSwKLQkgICAgICAgCQkweDEwMDAwMCwgIkF1MXgwMCBBQzk3IikpID09IE5VTEwpIHsK LQkJc25kX3ByaW50ayhLRVJOX0VSUiAiQUxTQSBBQzk3OiBjYW4ndCBncmFwIEFDOTcgcG9ydFxu Iik7Ci0JCXJldHVybiAtRUJVU1k7Ci0JfQotCWF1MTAwMC0+YWM5N19pb3BvcnQgPSAoc3RydWN0 IGF1MTAwMF9hYzk3X3JlZyAqKQotCQlLU0VHMUFERFIoYXUxMDAwLT5hYzk3X3Jlc19wb3J0LT5z dGFydCk7Ci0KLQlzcGluX2xvY2tfaW5pdCgmYXUxMDAwLT5hYzk3X2xvY2spOwotCi0JLyogY29u ZmlndXJlIHBpbnMgZm9yIEFDJzk3Ci0JVE9ETzogbW92ZSB0byBib2FyZF9zZXR1cC5jICovCi0J YXVfd3JpdGVsKGF1X3JlYWRsKFNZU19QSU5GVU5DKSAmIH4weDAyLCBTWVNfUElORlVOQyk7Ci0K LQkvKiBJbml0aWFsaXNlIEF1MTAwMCdzIEFDJzk3IENvbnRyb2wgQmxvY2sgKi8KLQlhdTEwMDAt PmFjOTdfaW9wb3J0LT5jbnRybCA9IEFDOTdDX1JTIHwgQUM5N0NfQ0U7Ci0JdWRlbGF5KDEwKTsK LQlhdTEwMDAtPmFjOTdfaW9wb3J0LT5jbnRybCA9IEFDOTdDX0NFOwotCXVkZWxheSgxMCk7Ci0K LQkvKiBJbml0aWFsaXNlIEV4dGVybmFsIENPREVDIC0tIGNvbGQgcmVzZXQgKi8KLQlhdTEwMDAt PmFjOTdfaW9wb3J0LT5jb25maWcgPSBBQzk3Q19SRVNFVDsKLQl1ZGVsYXkoMTApOwotCWF1MTAw MC0+YWM5N19pb3BvcnQtPmNvbmZpZyA9IDB4MDsKLQltZGVsYXkoNSk7Ci0KLQkvKiBJbml0aWFs aXNlIEFDOTcgbWlkZGxlLWxheWVyICovCi0JaWYgKChlcnIgPSBzbmRfYWM5N19idXMoYXUxMDAw LT5jYXJkLCAwLCAmb3BzLCBhdTEwMDAsICZwYnVzKSkgPCAwKQotIAkJcmV0dXJuIGVycjsKLQot CW1lbXNldCgmYWM5NywgMCwgc2l6ZW9mKGFjOTcpKTsKLQlhYzk3LnByaXZhdGVfZGF0YSA9IGF1 MTAwMDsKLQlpZiAoKGVyciA9IHNuZF9hYzk3X21peGVyKHBidXMsICZhYzk3LCAmYXUxMDAwLT5h Yzk3KSkgPCAwKQotCQlyZXR1cm4gZXJyOwotCi0JcmV0dXJuIDA7Ci19Ci0KIC8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNldHVwIC8gRGVzdHJveSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8KIAotdm9pZAotc25kX2F1MTAwMF9mcmVlKHN0cnVjdCBzbmRfY2FyZCAqY2Fy ZCkKK3N0YXRpYyB2b2lkIHNuZF9hdTEwMDBfZnJlZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQpCiB7 CiAJc3RydWN0IHNuZF9hdTEwMDAgKmF1MTAwMCA9IGNhcmQtPnByaXZhdGVfZGF0YTsKIAotCWlm IChhdTEwMDAtPmFjOTdfcmVzX3BvcnQpIHsKLQkJLyogcHV0IGludGVybmFsIEFDOTcgYmxvY2sg aW50byByZXNldCAqLwotCQlhdTEwMDAtPmFjOTdfaW9wb3J0LT5jbnRybCA9IEFDOTdDX1JTOwot CQlhdTEwMDAtPmFjOTdfaW9wb3J0ID0gTlVMTDsKLQkJcmVsZWFzZV9hbmRfZnJlZV9yZXNvdXJj ZShhdTEwMDAtPmFjOTdfcmVzX3BvcnQpOwotCX0KLQogCWlmIChhdTEwMDAtPnN0cmVhbVtQTEFZ QkFDS10pIHsKIAkgIAlpZiAoYXUxMDAwLT5zdHJlYW1bUExBWUJBQ0tdLT5kbWEgPj0gMCkKIAkJ CWZyZWVfYXUxMDAwX2RtYShhdTEwMDAtPnN0cmVhbVtQTEFZQkFDS10tPmRtYSk7CkBAIC02MjYs NzEgKzU3MywxNjcgQEAgc25kX2F1MTAwMF9mcmVlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCkKIAkJ CWZyZWVfYXUxMDAwX2RtYShhdTEwMDAtPnN0cmVhbVtDQVBUVVJFXS0+ZG1hKTsKIAkJa2ZyZWUo YXUxMDAwLT5zdHJlYW1bQ0FQVFVSRV0pOwogCX0KLX0KIAorCWlmIChhdTEwMDAtPmFjOTdfcmVz X3BvcnQpIHsKKwkJLyogcHV0IGludGVybmFsIEFDOTcgYmxvY2sgaW50byByZXNldCAqLworCQlp ZiAoYXUxMDAwLT5hYzk3X2lvcG9ydCkgeworCQkJYXUxMDAwLT5hYzk3X2lvcG9ydC0+Y250cmwg PSBBQzk3Q19SUzsKKwkJCWlvdW5tYXAoYXUxMDAwLT5hYzk3X2lvcG9ydCk7CisJCQlhdTEwMDAt PmFjOTdfaW9wb3J0ID0gTlVMTDsKKwkJfQorCQlyZWxlYXNlX2FuZF9mcmVlX3Jlc291cmNlKGF1 MTAwMC0+YWM5N19yZXNfcG9ydCk7CisJCWF1MTAwMC0+YWM5N19yZXNfcG9ydCA9IE5VTEw7CisJ fQorfQogCi1zdGF0aWMgc3RydWN0IHNuZF9jYXJkICphdTEwMDBfY2FyZDsKK3N0YXRpYyBzdHJ1 Y3Qgc25kX2FjOTdfYnVzX29wcyBvcHMgPSB7CisJLndyaXRlCT0gc25kX2F1MTAwMF9hYzk3X3dy aXRlLAorCS5yZWFkCT0gc25kX2F1MTAwMF9hYzk3X3JlYWQsCit9OwogCi1zdGF0aWMgaW50IF9f aW5pdAotYXUxMDAwX2luaXQodm9pZCkKK3N0YXRpYyBpbnQgYXUxMDAwX2FjOTdfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlpbnQgZXJyOworCXZvaWQgX19pb21lbSAq aW87CisJc3RydWN0IHJlc291cmNlICpyOwogCXN0cnVjdCBzbmRfY2FyZCAqY2FyZDsKIAlzdHJ1 Y3Qgc25kX2F1MTAwMCAqYXUxMDAwOworCXN0cnVjdCBzbmRfYWM5N19idXMgKnBidXM7CisJc3Ry dWN0IHNuZF9hYzk3X3RlbXBsYXRlIGFjOTc7CiAKIAllcnIgPSBzbmRfY2FyZF9jcmVhdGUoLTEs ICJBQzk3IiwgVEhJU19NT0RVTEUsCi0JCQkgICAgICBzaXplb2Yoc3RydWN0IHNuZF9hdTEwMDAp LCAmY2FyZCk7CisJCQkJc2l6ZW9mKHN0cnVjdCBzbmRfYXUxMDAwKSwgJmNhcmQpOwogCWlmIChl cnIgPCAwKQogCQlyZXR1cm4gZXJyOwogCi0JY2FyZC0+cHJpdmF0ZV9mcmVlID0gc25kX2F1MTAw MF9mcmVlOwogCWF1MTAwMCA9IGNhcmQtPnByaXZhdGVfZGF0YTsKIAlhdTEwMDAtPmNhcmQgPSBj YXJkOworCXNwaW5fbG9ja19pbml0KCZhdTEwMDAtPmFjOTdfbG9jayk7CiAKLQlhdTEwMDAtPnN0 cmVhbVtQTEFZQkFDS10gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgYXVkaW9fc3RyZWFtKSwgR0ZQ X0tFUk5FTCk7Ci0JYXUxMDAwLT5zdHJlYW1bQ0FQVFVSRSBdID0ga21hbGxvYyhzaXplb2Yoc3Ry dWN0IGF1ZGlvX3N0cmVhbSksIEdGUF9LRVJORUwpOwotCS8qIHNvIHRoYXQgc25kX2F1MTAwMF9m cmVlIHdpbGwgd29yayBhcyBpbnRlbmRlZCAqLwotIAlhdTEwMDAtPmFjOTdfcmVzX3BvcnQgPSBO VUxMOwotCWlmIChhdTEwMDAtPnN0cmVhbVtQTEFZQkFDS10pCi0JCWF1MTAwMC0+c3RyZWFtW1BM QVlCQUNLXS0+ZG1hID0gLTE7Ci0JaWYgKGF1MTAwMC0+c3RyZWFtW0NBUFRVUkUgXSkKLQkJYXUx MDAwLT5zdHJlYW1bQ0FQVFVSRSBdLT5kbWEgPSAtMTsKLQotCWlmIChhdTEwMDAtPnN0cmVhbVtQ TEFZQkFDS10gPT0gTlVMTCB8fAotCSAgICBhdTEwMDAtPnN0cmVhbVtDQVBUVVJFIF0gPT0gTlVM TCkgewotCQlzbmRfY2FyZF9mcmVlKGNhcmQpOwotCQlyZXR1cm4gLUVOT01FTTsKLQl9CisJLyog ZnJvbSBoZXJlIG9uIGxldCBBTFNBIGNhbGwgdGhlIHNwZWNpYWwgZnJlZWluZyBmdW5jdGlvbiAq LworCWNhcmQtPnByaXZhdGVfZnJlZSA9IHNuZF9hdTEwMDBfZnJlZTsKIAotCWlmICgoZXJyID0g c25kX2F1MTAwMF9hYzk3X25ldyhhdTEwMDApKSA8IDAgKSB7Ci0JCXNuZF9jYXJkX2ZyZWUoY2Fy ZCk7Ci0JCXJldHVybiBlcnI7CisJLyogVFggRE1BIElEICovCisJciA9IHBsYXRmb3JtX2dldF9y ZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX0RNQSwgMCk7CisJaWYgKCFyKSB7CisJCWVyciA9IC1F Tk9ERVY7CisJCXNuZF9wcmludGsoS0VSTl9JTkZPICJubyBUWCBETUEgcGxhdGZvcm0gcmVzb3Vy Y2UhXG4iKTsKKwkJZ290byBvdXQ7CiAJfQotCi0JaWYgKChlcnIgPSBzbmRfYXUxMDAwX3BjbV9u ZXcoYXUxMDAwKSkgPCAwKSB7Ci0JCXNuZF9jYXJkX2ZyZWUoY2FyZCk7Ci0JCXJldHVybiBlcnI7 CisJYXUxMDAwLT5kbWFpZFswXSA9IHItPnN0YXJ0OworCisJLyogUlggRE1BIElEICovCisJciA9 IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX0RNQSwgMSk7CisJaWYgKCFy KSB7CisJCWVyciA9IC1FTk9ERVY7CisJCXNuZF9wcmludGsoS0VSTl9JTkZPICJubyBSWCBETUEg cGxhdGZvcm0gcmVzb3VyY2UhXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCWF1MTAwMC0+ZG1haWRb MV0gPSByLT5zdGFydDsKKworCWF1MTAwMC0+c3RyZWFtW1BMQVlCQUNLXSA9IGttYWxsb2Moc2l6 ZW9mKHN0cnVjdCBhdWRpb19zdHJlYW0pLAorCQkJCQkgICBHRlBfS0VSTkVMKTsKKwlpZiAoIWF1 MTAwMC0+c3RyZWFtW1BMQVlCQUNLXSkKKwkJZ290byBvdXQ7CisJYXUxMDAwLT5zdHJlYW1bUExB WUJBQ0tdLT5kbWEgPSAtMTsKKworCWF1MTAwMC0+c3RyZWFtW0NBUFRVUkVdID0ga21hbGxvYyhz aXplb2Yoc3RydWN0IGF1ZGlvX3N0cmVhbSksCisJCQkJCSAgR0ZQX0tFUk5FTCk7CisJaWYgKCFh dTEwMDAtPnN0cmVhbVtDQVBUVVJFXSkKKwkJZ290byBvdXQ7CisJYXUxMDAwLT5zdHJlYW1bQ0FQ VFVSRV0tPmRtYSA9IC0xOworCisJciA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JF U09VUkNFX01FTSwgMCk7CisJaWYgKCFyKQorCQlnb3RvIG91dDsKKworCWVyciA9IC1FQlVTWTsK KwlhdTEwMDAtPmFjOTdfcmVzX3BvcnQgPSByZXF1ZXN0X21lbV9yZWdpb24oci0+c3RhcnQsCisJ CQkJCXItPmVuZCAtIHItPnN0YXJ0ICsgMSwgcGRldi0+bmFtZSk7CisJaWYgKCFhdTEwMDAtPmFj OTdfcmVzX3BvcnQpIHsKKwkJc25kX3ByaW50ayhLRVJOX0VSUiAiQUxTQSBBQzk3OiBjYW4ndCBn cmFiIEFDOTcgcG9ydFxuIik7CisJCWdvdG8gb3V0OwogCX0KIAorCWlvID0gaW9yZW1hcChyLT5z dGFydCwgci0+ZW5kIC0gci0+c3RhcnQgKyAxKTsKKwlpZiAoIWlvKQorCQlnb3RvIG91dDsKKwor CWF1MTAwMC0+YWM5N19pb3BvcnQgPSAoc3RydWN0IGF1MTAwMF9hYzk3X3JlZyAqKWlvOworCisJ LyogY29uZmlndXJlIHBpbnMgZm9yIEFDJzk3CisJVE9ETzogbW92ZSB0byBib2FyZF9zZXR1cC5j ICovCisJYXVfd3JpdGVsKGF1X3JlYWRsKFNZU19QSU5GVU5DKSAmIH4weDAyLCBTWVNfUElORlVO Qyk7CisKKwkvKiBJbml0aWFsaXNlIEF1MTAwMCdzIEFDJzk3IENvbnRyb2wgQmxvY2sgKi8KKwlh dTEwMDAtPmFjOTdfaW9wb3J0LT5jbnRybCA9IEFDOTdDX1JTIHwgQUM5N0NfQ0U7CisJdWRlbGF5 KDEwKTsKKwlhdTEwMDAtPmFjOTdfaW9wb3J0LT5jbnRybCA9IEFDOTdDX0NFOworCXVkZWxheSgx MCk7CisKKwkvKiBJbml0aWFsaXNlIEV4dGVybmFsIENPREVDIC0tIGNvbGQgcmVzZXQgKi8KKwlh dTEwMDAtPmFjOTdfaW9wb3J0LT5jb25maWcgPSBBQzk3Q19SRVNFVDsKKwl1ZGVsYXkoMTApOwor CWF1MTAwMC0+YWM5N19pb3BvcnQtPmNvbmZpZyA9IDB4MDsKKwltZGVsYXkoNSk7CisKKwkvKiBJ bml0aWFsaXNlIEFDOTcgbWlkZGxlLWxheWVyICovCisJZXJyID0gc25kX2FjOTdfYnVzKGF1MTAw MC0+Y2FyZCwgMCwgJm9wcywgYXUxMDAwLCAmcGJ1cyk7CisJaWYgKGVyciA8IDApCisJCWdvdG8g b3V0OworCisJbWVtc2V0KCZhYzk3LCAwLCBzaXplb2YoYWM5NykpOworCWFjOTcucHJpdmF0ZV9k YXRhID0gYXUxMDAwOworCWVyciA9IHNuZF9hYzk3X21peGVyKHBidXMsICZhYzk3LCAmYXUxMDAw LT5hYzk3KTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBvdXQ7CisKKwllcnIgPSBzbmRfYXUxMDAw X3BjbV9uZXcoYXUxMDAwKTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBvdXQ7CisKIAlzdHJjcHko Y2FyZC0+ZHJpdmVyLCAiQXUxMDAwLUFDOTciKTsKIAlzdHJjcHkoY2FyZC0+c2hvcnRuYW1lLCAi QU1EIEF1MTAwMC1BQzk3Iik7CiAJc3ByaW50ZihjYXJkLT5sb25nbmFtZSwgIkFNRCBBdTEwMDAt LUFDOTcgQUxTQSBEcml2ZXIiKTsKIAotCWlmICgoZXJyID0gc25kX2NhcmRfcmVnaXN0ZXIoY2Fy ZCkpIDwgMCkgewotCQlzbmRfY2FyZF9mcmVlKGNhcmQpOwotCQlyZXR1cm4gZXJyOwotCX0KKwll cnIgPSBzbmRfY2FyZF9yZWdpc3RlcihjYXJkKTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBvdXQ7 CiAKIAlwcmludGsoS0VSTl9JTkZPICJBTFNBIEFDOTc6IERyaXZlciBJbml0aWFsaXplZFxuIik7 Ci0JYXUxMDAwX2NhcmQgPSBjYXJkOworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgY2Fy ZCk7CisKIAlyZXR1cm4gMDsKKworIG91dDoKKwlzbmRfY2FyZF9mcmVlKGNhcmQpOworCXJldHVy biBlcnI7Cit9CisKK3N0YXRpYyBpbnQgYXUxMDAwX2FjOTdfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCit7CisJcmV0dXJuIHNuZF9jYXJkX2ZyZWUocGxhdGZvcm1fZ2V0X2Ry dmRhdGEocGRldikpOwogfQogCi1zdGF0aWMgdm9pZCBfX2V4aXQgYXUxMDAwX2V4aXQodm9pZCkK K3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXUxMDAwX2FjOTdjX2RyaXZlciA9IHsKKwkuZHJpdmVy CT0geworCQkubmFtZQk9ICJhdTEwMDAtYWM5N2MiLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwK Kwl9LAorCS5wcm9iZQkJPSBhdTEwMDBfYWM5N19wcm9iZSwKKwkucmVtb3ZlCQk9IGF1MTAwMF9h Yzk3X3JlbW92ZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGF1MTAwMF9hYzk3X2xvYWQodm9p ZCkKIHsKLQlzbmRfY2FyZF9mcmVlKGF1MTAwMF9jYXJkKTsKKwlyZXR1cm4gcGxhdGZvcm1fZHJp dmVyX3JlZ2lzdGVyKCZhdTEwMDBfYWM5N2NfZHJpdmVyKTsKIH0KIAotbW9kdWxlX2luaXQoYXUx MDAwX2luaXQpOwotbW9kdWxlX2V4aXQoYXUxMDAwX2V4aXQpOworc3RhdGljIHZvaWQgX19leGl0 IGF1MTAwMF9hYzk3X3VubG9hZCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVy KCZhdTEwMDBfYWM5N2NfZHJpdmVyKTsKK30KIAorbW9kdWxlX2luaXQoYXUxMDAwX2FjOTdfbG9h ZCk7Cittb2R1bGVfZXhpdChhdTEwMDBfYWM5N191bmxvYWQpOwotLSAKMS44LjUuMgoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFp bGluZyBsaXN0CkFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNh LXByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vYWxzYS1kZXZlbAo=