From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chih-Chiang Chang Subject: Re: [PATCH v2] ASoC: Add support for NAU8825 codec to ASoC Date: Tue, 7 Jul 2015 15:53:34 +0800 Message-ID: <559B857E.1020802@nuvoton.com> References: <552F874A.7090409@nuvoton.com> <553513F3.4060202@metafoo.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from maillog.nuvoton.com (maillog.nuvoton.com [202.39.227.15]) by alsa0.perex.cz (Postfix) with ESMTP id 69C7C26154F for ; Tue, 7 Jul 2015 09:53:39 +0200 (CEST) In-Reply-To: <553513F3.4060202@metafoo.de> 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: Lars-Peter Clausen , Mark Brown Cc: "tiwai@suse.de" , AP MS30 Linux ALSA , "lgirdwood@gmail.com" , AP MS30 Linux Kernel community List-Id: alsa-devel@alsa-project.org CgpPbiAyMDE1LzQvMjAg5LiL5Y2IIDEwOjU3LCBMYXJzLVBldGVyIENsYXVzZW4gd3JvdGU6Cj4g T24gMDQvMTYvMjAxNSAxMTo1NiBBTSwgQ2hpaC1DaGlhbmcgQ2hhbmcgd3JvdGU6Cj4+IFRoZSBO QVU4OEwyNSBpcyBhbiB1bHRyYS1sb3cgcG93ZXIgaGlnaCBwZXJmb3JtYW5jZSBhdWRpbyBjb2Rl YyBkZXNpZ25lZAo+PiBmb3Igc21hcnRwaG9uZSwgdGFibGV0IFBDLCBhbmQgb3RoZXIgcG9ydGFi bGUgZGV2aWNlcyBieSBOdXZvdG9uLCBub3cKPj4gYWRkIGxpbnV4IGRyaXZlciBzdXBwb3J0IGZv ciBpdC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hpaC1DaGlhbmcgQ2hhbmcgPGNjY2hhbmcxMkBu dXZvdG9uLmNvbT4KPiAKPiBMb29rcyBwcmV0dHkgZ29vZCBub3cuCj4gCj4+IC0tLQo+PiB2Mi0+ djE6Cj4+ICAgICAtIGZpeGVzIGFjY29yZGluZyB0byBMYXJzLVBldGVyIENsYXVzZW4ncyByZXZp ZXcgY29tbWVudHMKPj4gICAgIC0gcmVtb3ZlcyB1bnVzZWQgcGxhdGZvcm0gZGF0YSBmaWxlCj4+ ICAgICAtIGNvcnJlY3RzIHRoZSBuYW1pbmcgb2YgREFQTSBpbnB1dCB3aWRnZXQKPj4gICAgIC0g Zml4ZXMgc29tZSB3cm9uZyBjb2Rpbmcgb2YgU09DIHdpZGdldHMgYW5kIG90aGVyIGNvZGVzCj4+ ICAgICAtIGFkZHMgZGVmaW5pdGlvbiBhbmQgcmVtYXJrIGZvciBjb25maWcgRkxMIGNsb2NrCj4+ ICAgICAtIG1vdmVzIHRoZSBjb2RlIG9mIHJlc2V0IGhhcmR3YXJlIHJlZ2lzdGVycyBmcm9tIGNv ZGVjX3Byb2JlKCkgdG8gaTJjX3Byb2JlKCkKPj4gICAgIC0gcmVtb3ZlcyB1bnVzZWQgY29kZXMK Pj4KPiBbLi4uXQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG5hdTg4 MjVfc25kX2NvbnRyb2xzW10gPSB7Cj4+ICsKPiAKPiBIZXJlIGFuZCBhIGZldyBvdGhlciBwbGFj ZXMgeW91IGxlYXZlIHRoZSBmaXJzdCBsaW5lIGluIHRoZSBzdHJ1Y3QgCj4gZGVjbGFyYXRpb24g ZW1wdHkuIE5vIG5lZWQgZm9yIHRoYXQuCj4gClJlbW92ZWQgdGhlIHNwYWNlIGxpbmUgaW4gZGVj bGFyYXRpb25zLgoKPj4gKwlTT0NfU0lOR0xFX1RMVigiTUlDIFZvbHVtZSIsIE5BVTg4MjVfQURD X0RHQUlOX0NUUkwsCj4+ICsJCQkJTkFVODgyNV9BRENfREdBSU5fU0ZULAo+PiArCQkJCU5BVTg4 MjVfQURDX1ZPTF9SU0NMX1JBTkdFLCAwLCBhZGNfdm9sX3RsdiksCj4+ICsJU09DX0RPVUJMRV9U TFYoIkhQIFZvbHVtZSIsIE5BVTg4MjVfSFNWT0xfQ1RSTCwKPj4gKwkJCQlOQVU4ODI1X0xfSFNW T0xfU0ZULCBOQVU4ODI1X1JfSFNWT0xfU0ZULAo+PiArCQkJCU5BVTg4MjVfVk9MX1JTQ0xfUkFO R0UsIDEsIG91dF9ocF92b2xfdGx2KSwKPj4gK307Cj4gWy4uLl0KPj4gKwo+PiArc3RhdGljIHZv aWQgY29uZmlnX2ZsbF9jbGtfMTJtKHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYykKPj4gK3sK Pj4gKwlzdHJ1Y3QgbmF1ODgyNV9wcml2ICpuYXU4ODI1ID0gc25kX3NvY19jb2RlY19nZXRfZHJ2 ZGF0YShjb2RlYyk7Cj4+ICsKPj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMobmF1ODgyNS0+cmVnbWFw LCBOQVU4ODI1X0NMS19ESVZJREVSLAo+PiArCQkJCU5BVTg4MjVfQ0xLX01DTEtfU1JDX01BU0ss IDB4MDAwMyk7Cj4+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKG5hdTg4MjUtPnJlZ21hcCwgTkFVODgy NV9GTExfMSwKPj4gKwkJCQlOQVU4ODI1X0ZMTF9SQVRJT19NQVNLLCAweDAwMDEpOwo+PiArCS8q IEZMTCAxNi1iaXQgZnJhY3Rpb25hbCBpbnB1dCAqLwo+PiArCXJlZ21hcF93cml0ZShuYXU4ODI1 LT5yZWdtYXAsIE5BVTg4MjVfRkxMXzIsIDB4QzQ5Qik7Cj4+ICsJLyogRkxMIDEwLWJpdCBpbnRl Z2VyIGlucHV0ICovCj4+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKG5hdTg4MjUtPnJlZ21hcCwgTkFV ODgyNV9GTExfMywKPj4gKwkJCQlOQVU4ODI1X0ZMTF9JTlRFR0VSX01BU0ssIDB4MDAyMCk7Cj4+ ICsJLyogRkxMIHByZS1zY2FsZXIgKi8KPj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMobmF1ODgyNS0+ cmVnbWFwLCBOQVU4ODI1X0ZMTF80LAo+PiArCQkJCU5BVTg4MjVfRkxMX1JFRl9ESVZfTUFTSywg MHgwODAwKTsKPiAKPiBUaGlzIHNlZW1zIHRvIHVzZSBzb21lIGNvbnN0YW50IGRpdmlkZXJzIGFu ZCBtdWx0aXBsaWVycyBmb3IgdGhlIEZMTC4gRG9lcyAKPiB0aGlzIGV4cGVjdCBhIHNwZWNpZmlj IHJlZmVyZW5jZSBjbG9jayBmcm9tIHNvbWV3aGVyZT8KPgpZZXMsIGN1cnJlbnQgY29kZSBleHBl Y3RzIEFTb0Mgd2lsbCBzZW5kIDEyIE1IeiBNQ0xLIHRvIHRoZSBjb2RlYy4gQnV0CmZpbmFsbHks IHdlIHdpbGwgc3VwcG9ydCBhbGwgcG9zc2libGUgcmVmZXJlbmNlIGNsb2NrIGZyZXF1ZW5jaWVz LgoKPj4gKwkvKiBzZWxlY3QgZGl2aWVkIFZDTyBpbnB1dCAqLwo+PiArCXJlZ21hcF91cGRhdGVf Yml0cyhuYXU4ODI1LT5yZWdtYXAsIE5BVTg4MjVfRkxMXzUsCj4+ICsJCQkJTkFVODgyNV9GTExf RklMVEVSX1NXX01BU0ssIDB4MDAwMCk7Cj4+ICsJLyogRkxMIHNpZ21hIGRlbHRhIG1vZHVsYXRv ciBlbmFibGUgKi8KPj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMobmF1ODgyNS0+cmVnbWFwLCBOQVU4 ODI1X0ZMTF82LAo+PiArCQkJCU5BVTg4MjVfU0RNX0VOX01BU0ssIDB4NDAwMCk7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyB2b2lkIHNldF9zeXNfY2xrKHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2Rl YywgaW50IHN5c19jbGspCj4+ICt7Cj4+ICsJc3RydWN0IG5hdTg4MjVfcHJpdiAqbmF1ODgyNSA9 IHNuZF9zb2NfY29kZWNfZ2V0X2RydmRhdGEoY29kZWMpOwo+PiArCj4+ICsJcHJfZGVidWcoIiVz IDo6IHN5c19jbGs9JXhcbiIsIF9fZnVuY19fLCBzeXNfY2xrKTsKPj4gKwlzd2l0Y2ggKHN5c19j bGspIHsKPj4gKwljYXNlIE5BVTg4MjVfSU5URVJOQUxDTE9DSzoKPj4gKwkJcmVnbWFwX3VwZGF0 ZV9iaXRzKG5hdTg4MjUtPnJlZ21hcCwgTkFVODgyNV9DTEtfRElWSURFUiwKPj4gKwkJCQlOQVU4 ODI1X1NZU0NMS19FTl9NQVNLLCBOQVU4ODI1X1NZU0NMS19ESVMpOwo+PiArCQlyZWdtYXBfdXBk YXRlX2JpdHMobmF1ODgyNS0+cmVnbWFwLCBOQVU4ODI1X0ZMTF82LAo+PiArCQkJCU5BVTg4MjVf RENPX0VOX01BU0ssIE5BVTg4MjVfRENPX0VOKTsKPj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKG5h dTg4MjUtPnJlZ21hcCwgTkFVODgyNV9DTEtfRElWSURFUiwKPj4gKwkJCQlOQVU4ODI1X1NZU0NM S19FTl9NQVNLLCBOQVU4ODI1X1NZU0NMS19FTik7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgTkFV ODgyNV9NQ0xLOgo+PiArCWRlZmF1bHQ6Cj4+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhuYXU4ODI1 LT5yZWdtYXAsIE5BVTg4MjVfQ0xLX0RJVklERVIsCj4+ICsJCQkJTkFVODgyNV9TWVNDTEtfRU5f TUFTSywgTkFVODgyNV9TWVNDTEtfRElTKTsKPj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKG5hdTg4 MjUtPnJlZ21hcCwgTkFVODgyNV9GTExfNiwKPj4gKwkJCQlOQVU4ODI1X0RDT19FTl9NQVNLLCBO QVU4ODI1X0RDT19ESVMpOwo+PiArCQlyZWdtYXBfdXBkYXRlX2JpdHMobmF1ODgyNS0+cmVnbWFw LCBOQVU4ODI1X0NMS19ESVZJREVSLAo+PiArCQkJCU5BVTg4MjVfU1lTQ0xLX0VOX01BU0ssIE5B VTg4MjVfU1lTQ0xLX0VOKTsKPj4gKwkJYnJlYWs7Cj4+ICsJfQo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW50IG5hdTg4MjVfZGFpX3NldF9zeXNjbGsoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksCj4+ ICsJCWludCBjbGtfaWQsIHVuc2lnbmVkIGludCBmcmVxLCBpbnQgZGlyKQo+PiArewo+PiArCXN0 cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IGRhaS0+Y29kZWM7Cj4+ICsKPj4gKwlzd2l0Y2gg KGNsa19pZCkgewo+PiArCWNhc2UgTkFVODgyNV9NQ0xLOgo+PiArCQljb25maWdfZmxsX2Nsa18x Mm0oY29kZWMpOwo+PiArCQlzZXRfc3lzX2Nsayhjb2RlYywgY2xrX2lkKTsKPiAKPiBNYXliZSBq dXN0IGlubGluZSB0aGUgY29udGVudHMgb2Ygc2V0X3N5c19jbGsgaGVyZSAuLi4KPiAKU2luY2Ug YW5vdGhlciBjb2RlIGFzIGJlbG93IHN0aWxsIHVzZXMgc2V0X3N5c19jbGsoKSwgd2UgcmVzZXJ2 ZQpmdW5jdGlvbiBjYWxsaW5nIGhlcmUuCgoJY2FzZSBTTkRfU09DX0JJQVNfT0ZGOgoJCWRldl9k YmcoY29kZWMtPmRldiwgIiMjI25hdTg4MjVfc2V0X2JpYXNfbGV2ZWwgT0ZGXG4iKTsKCQlzZXRf c3lzX2Nsayhjb2RlYywgTkFVODgyNV9JTlRFUk5BTENMT0NLKTsKCQlyZWdtYXBfdXBkYXRlX2Jp dHMobmF1ODgyNS0+cmVnbWFwLCBOQVU4ODI1X0JJQVNfQURKLAoJCQkJTkFVODgyNV9WTUlEX01B U0ssIE5BVTg4MjVfVk1JRF9ESVMpOwoKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBOQVU4ODI1X0lO VEVSTkFMQ0xPQ0s6Cj4+ICsJCXNldF9zeXNfY2xrKGNvZGVjLCBjbGtfaWQpOwo+IAo+IC4uLiBh bmQgaGVyZQo+IApUaGUgc2FtZSBhbnN3ZXIgdG8gcHJldmlvdXMuCgo+PiArCQlicmVhazsKPj4g KwlkZWZhdWx0Ogo+PiArCQlkZXZfZXJyKGNvZGVjLT5kZXYsICJXcm9uZyBjbG9jayBzcmNcbiIp Owo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4gWy4u Ll0KPiAgPiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdfZGVmYXVsdCBuYXU4ODI1X3JlZ1tdID0g ewo+ICA+ICsJLyogZW5hYmxlIGNsb2NrIHNvdXJjZSAqLwo+ICA+ICsJezB4MDAwMSwgMHgwN0ZG fSwKPiAgPiArCS8qIGVuYWJsZSBWTUlEIGFuZCBCaWFzICovCj4gID4gKwl7MHgwMDc2LCAweDMx NDB9LAo+ICA+ICsJLyogc2V0dXAgY2xvY2sgZGl2aWRlciAqLwo+ICA+ICsJezB4MDAwMywgMHgw MDUwfSwKPiAgPiArCS8qIGphY2sgZGV0ZWN0aW9uIGNvbmZpZ3VyYXRpb24gKi8KPiAgPiArCXsw eDAwMEMsIDB4MDAwNH0sCj4gID4gKwl7MHgwMDBELCAweDAwRTB9LAo+ICA+ICsJezB4MDAwRiwg MHgwODAxfSwKPiAgPiArCXsweDAwMTIsIDB4MDAxMH0sCj4gID4gKwkvKiBrZXlwYWQgZGV0ZWN0 aW9uIGNvbmZpZ3VyYXRpb24gKi8KPiAgPiArCXsweDAwMTMsIDB4MDI4MH0sCj4gID4gKwl7MHgw MDE0LCAweDczMTB9LAo+ICA+ICsJezB4MDAxNSwgMHgwNTBFfSwKPiAgPiArCXsweDAwMTYsIDB4 MUIyQX0sCj4gID4gKwkvKiBhdWRpbyBmb3JtYXQgY29uZmlndXJhdGlvbiAqLwo+ICA+ICsJezB4 MDAxQSwgMHgwODAwfSwKPiAgPiArCXsweDAwMUMsIDB4MDAwRX0sCj4gID4gKwl7MHgwMDFELCAw eDAwMTB9LAo+ICA+ICsJLyogc2FtcGxpbmcgcmF0ZSBjb250cm9sICovCj4gID4gKwl7MHgwMDJC LCAweDAwMTJ9LAo+ICA+ICsJLyogREFDIHNhbXBsaW5nIHJhdGUgY29udHJvbCAqLwo+ICA+ICsJ ezB4MDAyQywgMHgwMDgyfSwKPiAgPiArCS8qIEFEQyBhbmQgREFDIG1peGVyIGNvbnRyb2wgKi8K PiAgPiArCXsweDAwMzAsIDB4MDBEMn0sCj4gID4gKwl7MHgwMDMzLCAweDAwQ0Z9LAo+ICA+ICsJ ezB4MDAzNCwgMHgwMkNGfSwKPiAgPiArCS8qIERBQyBjbGFzcy1HIGNvbnRyb2wgKi8KPiAgPiAr CXsweDAwNkEsIDB4MTAwM30sCj4gID4gKwl7MHgwMDUwLCAweDIwMDd9LAo+ICA+ICsJLyogQURD IFBHQSBjb250cm9sICovCj4gID4gKwl7MHgwMDcyLCAweDAyNjB9LAo+ICA+ICsJLyogREFDIHBv d2VyIGRvd24gZW5hYmxlZCAqLwo+ICA+ICsJezB4MDA4MCwgMHgwM0EwfSwKPiAgPiArCS8qIGVu YWJsZSBEQUMgY2xvY2sgKi8KPiAgPiArCXsweDAwNzMsIDB4MzM2Q30sCj4gID4gKwkvKiBlbmFi bGUgTUlDIEJpYXMgKi8KPiAgPiArCXsweDAwNzQsIDB4NTUwMn0sCj4gID4gKwkvKiBwb3dlcnVw IG91dHB1dCBkcml2ZXIgKi8KPiAgPiArCXsweDAwN0YsIDB4NDczQ30sCj4gID4gKwl7MHgwMDdG LCAweDQ3M0Z9LAo+ICA+ICsJLyogREFDIHBvd2VyIGRvd24gZGlzYWJsZWQgKi8KPiAgPiArCXsw eDAwODAsIDB4MDBBMH0sCj4gID4gKwkvKiBhZGp1c3QgTUlDIEJpYXMgKi8KPiAgPiArCXsweDAw NjYsIDB4MjA2MH0sCj4gID4gKwl7MHgwMDY2LCAweDIwNjB9LAo+ICA+ICsJezB4MDA2NiwgMHgw MDYwfSwKPiAgPiArfTsKPiAKPiBUaGUgcmVnaXN0ZXIgZGVmYXVsdHMgc2hvdWxkIGhvbGQgdGhl IGNvbnRlbnQgb2YgdGhlIHJlZ2lzdGVycyBpbiB0aGUgCj4gcG93ZXItb24gcmVzZXQgc3RhdGUg b2YgdGhlIGNoaXAuIFRoaXMgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgYXMgYSAKPiBpbml0aWFs aXphdGlvbiBzZXF1ZW5jZS4KPiAKTW9kaWZpZWQgY29kZSB0byBtYWtlIHJlZ2lzdGVyIGRlZmF1 bHRzIGhvbGQgdGhlIHJlZ2lzdGVyIHZhbHVlcyBpbiB0aGUKcG93ZXItb24gcmVzZXQgc3RhdGUu CgpzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ19kZWZhdWx0IG5hdTg4MjVfcmVnW10gPSB7Cgl7MHgw MDAsIDB4MDAwMH0sCgl7MHgwMDEsIDB4MDBmZn0sCgl7MHgwMDMsIDB4MDA1MH0sCgl7MHgwMDQs IDB4MDAwMH0sCgl7MHgwMDUsIDB4MzEyNn0sCgl7MHgwMDYsIDB4MDAwOH0sCgl7MHgwMDcsIDB4 MDAxMH0sCgl7MHgwMDgsIDB4MDAwMH0sCgl7MHgwMDksIDB4NjAwMH0sCgl7MHgwMGEsIDB4ZjEz Y30sCgl7MHgwMGMsIDB4MDAwY30sCgl7MHgwMGQsIDB4MDAwMH0sCgl7MHgwMGYsIDB4MDgwMH0s Cgl7MHgwMTAsIDB4MDAwMH0sCgl7MHgwMTEsIDB4MDAwMH0sCgl7MHgwMTIsIDB4MDAxMH0sCgl7 MHgwMTMsIDB4MDAxNX0sCgl7MHgwMTQsIDB4MDExMH0sCgl7MHgwMTUsIDB4MDAwMH0sCgkuLi4K Cj4gID4gKwo+IFsuLi5dCj4+ICtzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciBuYXU4 ODI1X2RhaV9kcml2ZXJbXSA9IHsKPj4gKwl7Cj4+ICsJCS5uYW1lID0gIm5hdTg4MjUtYWlmMSIs Cj4+ICsJCQkucGxheWJhY2sgPSB7Cj4+ICsJCQkJLnN0cmVhbV9uYW1lCSA9ICJBSUYxIFBsYXli YWNrIiwKPj4gKwkJCQkuY2hhbm5lbHNfbWluCSA9IDEsCj4+ICsJCQkJLmNoYW5uZWxzX21heAkg PSAyLAo+PiArCQkJCS5yYXRlcwkJID0gTkFVODgyNV9SQVRFUywKPj4gKwkJCQkuZm9ybWF0cwkg PSBOQVU4ODI1X0ZPUk1BVFMsCj4+ICsJCQl9LAo+PiArCQkJLmNhcHR1cmUgPSB7Cj4+ICsJCQkJ LnN0cmVhbV9uYW1lCSA9ICJBSUYxIENhcHR1cmUiLAo+PiArCQkJCS5jaGFubmVsc19taW4JID0g MSwKPj4gKwkJCQkuY2hhbm5lbHNfbWF4CSA9IDIsCj4+ICsJCQkJLnJhdGVzCQkgPSBOQVU4ODI1 X1JBVEVTLAo+PiArCQkJCS5mb3JtYXRzCSA9IE5BVTg4MjVfRk9STUFUUywKPj4gKwkJCX0sCj4g Cj4gVGhlIGluZGVudCBpcyBhIGJpdCBzdHJhbmdlIGFib3ZlLgo+IApGaXhlZCB0aGUgY29kZSBh cyBiZWxvdy4KCnN0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfZHJpdmVyIG5hdTg4MjVfZGFpX2Ry aXZlcltdID0gewoJewoJCS5uYW1lID0gIm5hdTg4MjUtYWlmMSIsCgkJLnBsYXliYWNrID0gewoJ CQkuc3RyZWFtX25hbWUJID0gIkFJRjEgUGxheWJhY2siLAoJCQkuY2hhbm5lbHNfbWluCSA9IDEs CgkJCS5jaGFubmVsc19tYXgJID0gMiwKCQkJLnJhdGVzCQkgPSBOQVU4ODI1X1JBVEVTLAoJCQku Zm9ybWF0cwkgPSBOQVU4ODI1X0ZPUk1BVFMsCgkJfSwKCQkuY2FwdHVyZSA9IHsKCQkJLnN0cmVh bV9uYW1lCSA9ICJBSUYxIENhcHR1cmUiLAoJCQkuY2hhbm5lbHNfbWluCSA9IDEsCgkJCS5jaGFu bmVsc19tYXgJID0gMiwKCQkJLnJhdGVzCQkgPSBOQVU4ODI1X1JBVEVTLAoJCQkuZm9ybWF0cwkg PSBOQVU4ODI1X0ZPUk1BVFMsCgkJfSwKCQkub3BzID0gJm5hdTg4MjVfZGFpX29wcywKCX0KfTsK Cj4+ICsJCS5vcHMgPSAmbmF1ODgyNV9kYWlfb3BzLAo+PiArCX0KPj4gK307Cj4+ICsKPj4gKwo+ PiArc3RhdGljIGludCBuYXU4ODI1X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLAo+ PiArCQkJCSBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaTJjX2lkKQo+PiArewo+PiArCXN0 cnVjdCBuYXU4ODI1X3ByaXYgKm5hdTg4MjU7Cj4+ICsJaW50IGksIHJldDsKPj4gKwo+PiArCW5h dTg4MjUgPSBkZXZtX2t6YWxsb2MoJmkyYy0+ZGV2LCBzaXplb2YoKm5hdTg4MjUpLAo+PiArCQlH RlBfS0VSTkVMKTsKPj4gKwlpZiAobmF1ODgyNSA9PSBOVUxMKQo+PiArCQlyZXR1cm4gLUVOT01F TTsKPj4gKwluYXU4ODI1LT5pMmMgPSBpMmM7Cj4+ICsJaTJjX3NldF9jbGllbnRkYXRhKGkyYywg bmF1ODgyNSk7Cj4+ICsJbmF1ODgyNS0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoaTJj LCAmbmF1ODgyNV9yZWdtYXApOwo+PiArCWlmIChJU19FUlIobmF1ODgyNS0+cmVnbWFwKSkgewo+ PiArCQlyZXQgPSBQVFJfRVJSKG5hdTg4MjUtPnJlZ21hcCk7Cj4+ICsJCWRldl9lcnIoJmkyYy0+ ZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRlIHJlZ21hcDogJWRcbiIsIHJldCk7Cj4+ICsJCWdvdG8g ZXJyX2VuYWJsZTsKPiAKPiBTaW5jZSB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIGF0IGVycl9lbmFi bGUsIGp1c3QgcmV0dXJuIHJldCBkaXJlY3RseSBhbmQgZ2V0IAo+IHJpZCBvZiB0aGUgbGFiZWwu Cj4gCk1vZGlmaWVkIHRoZSBjb2RlIGFzIGJlbG93LgoKCWkyY19zZXRfY2xpZW50ZGF0YShpMmMs IG5hdTg4MjUpOwoJbmF1ODgyNS0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoaTJjLCAm bmF1ODgyNV9yZWdtYXApOwoJaWYgKElTX0VSUihuYXU4ODI1LT5yZWdtYXApKSB7CgkJcmV0ID0g UFRSX0VSUihuYXU4ODI1LT5yZWdtYXApOwoJCWRldl9lcnIoJmkyYy0+ZGV2LCAiRmFpbGVkIHRv IGFsbG9jYXRlIHJlZ21hcDogJWRcbiIsIHJldCk7CgkJcmV0dXJuIHJldDsKCX0KCS8qIHNvZnR3 YXJlIHJlc2V0ICovCglyZWdtYXBfd3JpdGUobmF1ODgyNS0+cmVnbWFwLCBOQVU4ODI1X1JFU0VU LCAweDAwKTsKCXJlZ21hcF93cml0ZShuYXU4ODI1LT5yZWdtYXAsIE5BVTg4MjVfUkVTRVQsIDB4 MDApOwoKCS8qIHJlZ2lzdGVyIHNvdW5kIGNhcmQgKi8KCXJldCA9IHNuZF9zb2NfcmVnaXN0ZXJf Y29kZWMoJmkyYy0+ZGV2LCAmc29jX2NvZGVjX2RyaXZlcl9uYXU4ODI1LAoJCQkJbmF1ODgyNV9k YWlfZHJpdmVyLAoJCQkJQVJSQVlfU0laRShuYXU4ODI1X2RhaV9kcml2ZXIpKTsKCXJldHVybiBy ZXQ7Cn0KCj4+ICsJfQo+PiArCS8qIHNvZnR3YXJlIHJlc2V0ICovCj4+ICsJcmVnbWFwX3dyaXRl KG5hdTg4MjUtPnJlZ21hcCwgTkFVODgyNV9SRVNFVCwgMHgwMSk7Cj4+ICsJcmVnbWFwX3dyaXRl KG5hdTg4MjUtPnJlZ21hcCwgTkFVODgyNV9SRVNFVCwgMHgwMik7Cj4+ICsJLyp3cml0aW5nIGlu aXRpYWwgcmVnaXN0ZXIgdmFsdWVzIHRvIHRoZSBjb2RlYyovCj4+ICsJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUobmF1ODgyNV9yZWcpOyBpKyspCj4+ICsJCXJlZ21hcF93cml0ZShuYXU4ODI1 LT5yZWdtYXAsIG5hdTg4MjVfcmVnW2ldLnJlZywKPj4gKwkJbmF1ODgyNV9yZWdbaV0uZGVmKTsK Pj4gKwo+PiArCXJldCA9IHNuZF9zb2NfcmVnaXN0ZXJfY29kZWMoJmkyYy0+ZGV2LCAmc29jX2Nv ZGVjX2RyaXZlcl9uYXU4ODI1LAo+PiArCQkJCW5hdTg4MjVfZGFpX2RyaXZlciwKPj4gKwkJCQlB UlJBWV9TSVpFKG5hdTg4MjVfZGFpX2RyaXZlcikpOwo+PiArZXJyX2VuYWJsZToKPj4gKwlyZXR1 cm4gcmV0Owo+PiArfQo+PiArCj4gWy4uLl0KPj4gKyNkZWZpbmUgTkFVODgyNV9SQVRFUwlTTkRS Vl9QQ01fUkFURV84MDAwXzE5MjAwMAo+PiArI2RlZmluZSBOQVU4ODI1X0ZPUk1BVFMJKFNORFJW X1BDTV9GTVRCSVRfUzE2X0xFIHwgU05EUlZfUENNX0ZNVEJJVF9TMjBfM0xFIFwKPj4gKwkJCSB8 IFNORFJWX1BDTV9GTVRCSVRfUzI0XzNMRSB8IFNORFJWX1BDTV9GTVRCSVRfUzMyX0xFKQo+IAo+ IFRoZXNlIGRlZmluZXMgc2hvdWxkIHByb2JhYmx5IGJlIG1vdmVkIHRvIHRoZSBDIGZpbGUgY2xv c2UgdG8gdGhlaXIgdXNlcnMuCj4KTW92ZSB0aGUgZGVmaW5lcyB0byBDIGZpbGUgYXMgYmVsb3cu CgojZGVmaW5lIE5BVTg4MjVfUkFURVMJU05EUlZfUENNX1JBVEVfODAwMF8xOTIwMDAKI2RlZmlu ZSBOQVU4ODI1X0ZPUk1BVFMJKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwKU05EUlZfUENNX0ZN VEJJVF9TMjBfM0xFIFwKCQkJIHwgU05EUlZfUENNX0ZNVEJJVF9TMjRfM0xFIHwgU05EUlZfUENN X0ZNVEJJVF9TMzJfTEUpCgpzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFpX29wcyBuYXU4 ODI1X2RhaV9vcHMgPSB7CgkudHJpZ2dlcgk9IG5hdTg4MjVfdHJpZ2dlciwKCS5od19wYXJhbXMJ PSBuYXU4ODI1X2h3X3BhcmFtcywKCS5zZXRfc3lzY2xrCT0gbmF1ODgyNV9kYWlfc2V0X3N5c2Ns aywKCS5zZXRfZm10CT0gbmF1ODgyNV9zZXRfZGFpX2ZtdCwKCS5kaWdpdGFsX211dGUJPSBuYXU4 ODI1X2RhY19tdXRlLAp9OwoKc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9kcml2ZXIgbmF1ODgy NV9kYWlfZHJpdmVyW10gPSB7Cgl7CgkJLm5hbWUgPSAibmF1ODgyNS1haWYxIiwKCj4+ICsKPj4g K3N0cnVjdCBuYXU4ODI1X3ByaXYgewo+PiArCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYzsK Pj4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7Cj4+ICsJc3RydWN0IGkyY19jbGllbnQgKmkyYzsK Pj4gKwlzdHJ1Y3Qgc25kX3NvY19qYWNrICpqYWNrOwo+PiArCXN0cnVjdCBkZWxheWVkX3dvcmsg amFja19kZXRlY3Rfd29yazsKPiAKPiBBbGwgZmllbGRzIGluIGhlcmUgZXhjZXB0IGZvciB0aGUg cmVnbWFwIGZpZWxkIGFyZSBzdGlsbCB1bnVzZWQuCj4gClJlbW92ZSBzb21lIHVudXNlZCBmaWVs ZC4gQnV0IHRoZSBpMmMgZmllbGQgaXMgdXNlZCBpbiBuYXU4ODI1X2kyY19wcm9iZSgpLgoKc3Ry dWN0IG5hdTg4MjVfcHJpdiB7CglzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7CglzdHJ1Y3QgaTJjX2Ns aWVudCAqaTJjOwp9OwoKc3RhdGljIGludCBuYXU4ODI1X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2Ns aWVudCAqaTJjLAoJCQkJIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppMmNfaWQpCnsKCXN0 cnVjdCBuYXU4ODI1X3ByaXYgKm5hdTg4MjU7CglpbnQgcmV0OwoKCW5hdTg4MjUgPSBkZXZtX2t6 YWxsb2MoJmkyYy0+ZGV2LCBzaXplb2YoKm5hdTg4MjUpLAoJCUdGUF9LRVJORUwpOwoJaWYgKG5h dTg4MjUgPT0gTlVMTCkKCQlyZXR1cm4gLUVOT01FTTsKCW5hdTg4MjUtPmkyYyA9IGkyYzsKCWky Y19zZXRfY2xpZW50ZGF0YShpMmMsIG5hdTg4MjUpOwoJbmF1ODgyNS0+cmVnbWFwID0gZGV2bV9y ZWdtYXBfaW5pdF9pMmMoaTJjLCAmbmF1ODgyNV9yZWdtYXApOwoKPj4gK307Cj4+ICsjZW5kaWYJ LyogX05BVTg4MjVfSCAqLwo+Pgo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpBbHNhLWRldmVsIG1haWxpbmcgbGlzdApBbHNhLWRldmVsQGFsc2EtcHJv amVjdC5vcmcKaHR0cDovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L2Fsc2EtZGV2ZWwK