From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: Re: [PATCH v2 3/6] drm/exynos: mic: add MIC driver Date: Tue, 24 Mar 2015 14:51:31 +0900 Message-ID: <5510FB63.9070001@samsung.com> References: <1426666591-16103-1-git-send-email-human.hwang@samsung.com> <1426666591-16103-4-git-send-email-human.hwang@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1426666591-16103-4-git-send-email-human.hwang@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hyungwon Hwang Cc: devicetree@vger.kernel.org, sw0312.kim@samsung.com, dh09.lee@samsung.com, dri-devel@lists.freedesktop.org, cw00.choi@samsung.com List-Id: devicetree@vger.kernel.org T24gMjAxNeuFhCAwM+yblCAxOOydvCAxNzoxNiwgSHl1bmd3b24gSHdhbmcgd3JvdGU6Cj4gTUlD KE1vYmlsZSBpbWFnZSBjb21wcmVzc29yKSBpcyBuZXdseSBhZGRlZCBJUCBpbiBFeHlub3M1NDMz LiBNSUMKPiByZXNpZGVzIGJldHdlZW4gZGVjb24gYW5kIG1pcGkgZHNpbSwgYW5kIGNvbXByZXNz ZXMgZnJhbWUgZGF0YSBieSA1MCUuCj4gV2l0aCBkc2ksIG5vdCBkaXNwbGF5IHBvcnQsIHRvIHNl bmQgZnJhbWUgZGF0YSB0byB0aGUgcGFuZWwsIHRoZQo+IGJhbmR3aWR0aCBpcyBub3QgZW5vdWdo LiBUaGF0IGlzIHdoeSB0aGlzIGNvbXByZXNzb3IgaXMgaW50cm9kdWNlZC4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBIeXVuZ3dvbiBId2FuZyA8aHVtYW4uaHdhbmdAc2Ftc3VuZy5jb20+Cj4gLS0tCj4g Q2hhbmdlcyBmb3IgdjI6Cj4gLSBtYWtlIG1pYyBkcml2ZXIgdG8gYmUgcmVnaXN0ZXJlZCBieSBl eHlub3MgZHJtIGRyaXZlciBpbnN0ZWFkIGFzIGEgbW9kdWxlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+IGRyaXZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtIGNoYW5nZSB0aGUgZGVzY3JpcHRpb24gb2YgbWlj IGRyaXZlciBpbiBkb2N1bWVudGF0aW9uCj4gLSBhZGQgbW9kdWxlIGF1dGhvciBhdCB0aGUgdG9w IG9mIHRoZSBzb3VyY2UgZmlsZSByZW1vdmluZyBNT0RVTEVfT1dORVIsCj4gTU9EVUxFX0RFU0NS SVBUSU9OLCBNT0RVTEVfTElDRU5TRQo+ICAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9l eHlub3MtbWljLnR4dCAgICAgICB8ICA0OSArKysKPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9L Y29uZmlnICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwo+ICBkcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9kcnYuYyAgICAgICAgICAgIHwgICAzICsKPiAgZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fbWljLmMgICAgICAgICAgICB8IDQ4MSArKysr KysrKysrKysrKysrKysrKysKPiAgNiBmaWxlcyBjaGFuZ2VkLCA1NDEgaW5zZXJ0aW9ucygrKQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Zp ZGVvL2V4eW5vcy1taWMudHh0Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vc19kcm1fbWljLmMKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVvL2V4eW5vcy1taWMudHh0IGIvRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVvL2V4eW5vcy1taWMudHh0Cj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwLi4wMDZkMDcyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0Rv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9leHlub3MtbWljLnR4dAo+IEBA IC0wLDAgKzEsNDkgQEAKPiArRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIFNhbXN1bmcgRXh5bm9z IFNvQyBtb2JpbGUgaW1hZ2UgY29tcHJlc3NvciAoTUlDKQo+ICsKPiArTUlDIChtb2JpbGUgaW1h Z2UgY29tcHJlc3NvcikgcmVzaWRlcyBiZXR3ZWVuIGRlY29uIGFuZCBtaXBpIGRzaS4gTWlwaSBk c2kgaXMKPiArbm90IGNhcGFibGUgdG8gdHJhbnNmZXIgaGlnaCByZXNvbHR1aW9uIGZyYW1lIGRh dGEgYXMgZGVjb24gY2FuIHNlbmQuIE1JQwo+ICtzb2x2ZXMgdGhpcyBwcm9ibGVtIGJ5IGNvbXBy ZXNzaW5nIHRoZSBmcmFtZSBkYXRhIGJ5IDEvMiBiZWZvcmUgaXQgaXMgdHJhbnNmZXJlZAo+ICt0 aHJvdWdoIG1pcGkgZHNpLiBUaGUgY29tcHJlc3NlZCBmcmFtZSBkYXRhIG11c3QgYmUgdW5jb21w cmVzc2VkIGluIHRoZSBwYW5lbAo+ICtQQ0IuCj4gKwo+ICtSZXF1aXJlZCBwcm9wZXJ0aWVzOgo+ ICstIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSAic2Ftc3VuZyxleHlub3M1NDMzLW1pYyIu Cj4gKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgTUlDIHJl Z2lzdGVycyBzZXQgYW5kIHN5c3RlbQo+ICsgICAgICAgcmVnaXN0ZXIgb2YgbWljLgo+ICstIGNs b2NrczogbXVzdCBpbmNsdWRlIGNsb2NrIHNwZWNpZmllcnMgY29ycmVzcG9uZGluZyB0byBlbnRy aWVzIGluIHRoZQo+ICsJICBjbG9jay1uYW1lcyBwcm9wZXJ0eS4KPiArLSBjbG9jay1uYW1lczog bGlzdCBvZiBjbG9jayBuYW1lcyBzb3J0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGNsb2Nr cwo+ICsJICAgICAgIHByb3BlcnR5LiBNdXN0IGNvbnRhaW4gInBjbGtfbWljMCIsICJzY2xrX3Jn Yl92Y2xrX3RvX21pYzAiLgo+ICstIHBvcnRzOiBjb250YWlucyBhIHBvcnQgd2hpY2ggaXMgY29u bmVjdGVkIHRvIGRlY29uIG5vZGUgYW5kIGRzaSBub2RlLgo+ICsJIGFkZHJlc3MtY2VsbHMgYW5k IHNpemUtY2VsbHMgbXVzdCAxIGFuZCAwLCByZXNwZWN0aXZlbHkuCj4gKy0gcG9ydDogY29udGFp bnMgYW4gZW5kcG9pbnQgbm9kZSB3aGljaCBpcyBjb25uZWN0ZWQgdG8gdGhlIGVuZHBvaW50IGlu IHRoZQo+ICsJZGVjb24gbm9kZSBvciBkc2kgbm9kZS4gVGhlIHJlZyB2YWx1ZSBtdXN0IGJlIDAg YW5kIDEgcmVzcGVjdGl2ZWx5Lgo+ICsKPiArRXhhbXBsZToKPiArU29DIHNwZWNpZmljIERUIGVu dHJ5Ogo+ICttaWM6IG1pY0AxMzkzMDAwMCB7Cj4gKwljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5 bm9zNTQzMy1taWMiOwo+ICsJcmVnID0gPDB4MTM5MzAwMDAgMHg0OCAweDEzQjgwMDAwIDB4MTAx MD47Cj4gKwljbG9ja3MgPSA8JmNtdV9kaXNwIENMS19QQ0xLX01JQzA+LAo+ICsJICAgICAgIDwm Y211X2Rpc3AgQ0xLX1NDTEtfUkdCX1ZDTEtfVE9fTUlDMD47Cj4gKwljbG9jay1uYW1lcyA9ICJw Y2xrX21pYzAiLCAic2Nsa19yZ2JfdmNsa190b19taWMwIjsKPiArCj4gKwlwb3J0cyB7Cj4gKwkJ I2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJI3NpemUtY2VsbHMgPSA8MD47Cj4gKwo+ICsJCXBv cnRAMCB7Cj4gKwkJCXJlZyA9IDwwPjsKPiArCQkJbWljX3RvX2RlY29uOiBlbmRwb2ludCB7Cj4g KwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRlY29uX3RvX21pYz47Cj4gKwkJCX07Cj4gKwkJfTsK PiArCj4gKwkJcG9ydEAxIHsKPiArCQkJcmVnID0gPDE+Owo+ICsJCQltaWNfdG9fZHNpOiBlbmRw b2ludCB7Cj4gKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRzaV90b19taWM+Owo+ICsJCQl9Owo+ ICsJCX07Cj4gKwl9Owo+ICt9Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9z L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL0tjb25maWcKPiBpbmRleCBlMTVjYzJl Li5hNzk2MTc1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZwo+IEBAIC0xMDMsMyArMTAzLDkg QEAgY29uZmlnIERSTV9FWFlOT1NfR1NDCj4gIAlkZXBlbmRzIG9uIERSTV9FWFlOT1NfSVBQICYm IEFSQ0hfRVhZTk9TNSAmJiAhQVJDSF9NVUxUSVBMQVRGT1JNCj4gIAloZWxwCj4gIAkgIENob29z ZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgRXh5bm9zIEdTQyBmb3IgRFJNLgo+ICsK PiArY29uZmlnIERSTV9FWFlOT1NfTUlDCj4gKwlib29sICJFeHlub3MgRFJNIE1JQyIKPiArCWRl cGVuZHMgb24gKERSTV9FWFlOT1MgJiYgRFJNX0VYWU5PUzU0MzNfREVDT04pCj4gKwloZWxwCj4g KwkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgRXh5bm9zIE1JQyBmb3Ig RFJNLgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZQo+IGluZGV4IGZiZDA4NGQuLjdkZTBiMTAgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvTWFrZWZpbGUKPiBAQCAtMjIsNSArMjIsNiBAQCBleHlub3Nkcm0t JChDT05GSUdfRFJNX0VYWU5PU19JUFApCSs9IGV4eW5vc19kcm1faXBwLm8KPiAgZXh5bm9zZHJt LSQoQ09ORklHX0RSTV9FWFlOT1NfRklNQykJKz0gZXh5bm9zX2RybV9maW1jLm8KPiAgZXh5bm9z ZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfUk9UQVRPUikJKz0gZXh5bm9zX2RybV9yb3RhdG9yLm8K PiAgZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfR1NDKQkrPSBleHlub3NfZHJtX2dzYy5v Cj4gK2V4eW5vc2RybS0kKENPTkZJR19EUk1fRVhZTk9TX01JQykgICAgICs9IGV4eW5vc19kcm1f bWljLm8KPiAKPiAgb2JqLSQoQ09ORklHX0RSTV9FWFlOT1MpCQkrPSBleHlub3Nkcm0ubwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMKPiBpbmRleCAxZmEwZGQwLi5lYzk5 ODRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYwo+IEBAIC01 NjIsNiArNTYyLDkgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmNvbnN0IGV4eW5v c19kcm1fa21zX2RyaXZlcnNbXSA9IHsKPiAgI2lmZGVmIENPTkZJR19EUk1fRVhZTk9TN19ERUNP Tgo+ICAJJmRlY29uX2RyaXZlciwKPiAgI2VuZGlmCj4gKyNpZmRlZiBDT05GSUdfRFJNX0VYWU5P U19NSUMKPiArCSZtaWNfZHJpdmVyLAo+ICsjZW5kaWYKPiAgI2lmZGVmIENPTkZJR19EUk1fRVhZ Tk9TX0RQCj4gIAkmZHBfZHJpdmVyLAo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX2Rydi5oCj4gaW5kZXggNDA5OTZkOC4uOWM5NGRjOSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmgKPiBAQCAtMzU3LDQgKzM1Nyw1IEBAIGV4dGVy biBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZpbWNfZHJpdmVyOwo+ICBleHRlcm4gc3RydWN0IHBs YXRmb3JtX2RyaXZlciByb3RhdG9yX2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgZ3NjX2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaXBwX2Ry aXZlcjsKPiArZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWljX2RyaXZlcjsKPiAgI2Vu ZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9taWMu YyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9taWMuYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYjg5OGEyYQo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fbWljLmMKPiBAQCAtMCwwICsxLDQ4 MSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTUgU2Ftc3VuZyBFbGVjdHJvbmljcyBD by5MdGQKPiArICogQXV0aG9yczoKPiArICoJSHl1bmd3b24gSHdhbmcgPGh1bWFuLmh3YW5nQHNh bXN1bmcuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbnIKPiArICovCj4gKwo+ICsj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby9vZl92 aWRlb21vZGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KPiArI2luY2x1ZGUg PHZpZGVvL3ZpZGVvbW9kZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiArI2luY2x1 ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgo+ICsjaW5jbHVk ZSA8bGludXgvY2xrLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsKPiArLyogU3lzcmVn IHJlZ2lzdGVycyBmb3IgTUlDICovCj4gKyNkZWZpbmUgRFNEX0NGR19NVVgJMHgxMDA0Cj4gKyNk ZWZpbmUgTUlDMF9SR0JfTVVYCSgxIDw8IDApCj4gKyNkZWZpbmUgTUlDMF9JODBfTVVYCSgxIDw8 IDEpCj4gKyNkZWZpbmUgTUlDMF9PTl9NVVgJKDEgPDwgNSkKPiArCj4gKy8qIE1JQyByZWdpc3Rl cnMgKi8KPiArI2RlZmluZSBNSUNfT1AJCQkJMHgwCj4gKyNkZWZpbmUgTUlDX0lQX1ZFUgkJCTB4 MDAwNAo+ICsjZGVmaW5lIE1JQ19WX1RJTUlOR18wCQkJMHgwMDA4Cj4gKyNkZWZpbmUgTUlDX1Zf VElNSU5HXzEJCQkweDAwMEMKPiArI2RlZmluZSBNSUNfSU1HX1NJWkUJCQkweDAwMTAKPiArI2Rl ZmluZSBNSUNfSU5QVVRfVElNSU5HXzAJCTB4MDAxNAo+ICsjZGVmaW5lIE1JQ19JTlBVVF9USU1J TkdfMQkJMHgwMDE4Cj4gKyNkZWZpbmUgTUlDXzJEX09VVFBVVF9USU1JTkdfMAkJMHgwMDFDCj4g KyNkZWZpbmUgTUlDXzJEX09VVFBVVF9USU1JTkdfMQkJMHgwMDIwCj4gKyNkZWZpbmUgTUlDXzJE X09VVFBVVF9USU1JTkdfMgkJMHgwMDI0Cj4gKyNkZWZpbmUgTUlDXzNEX09VVFBVVF9USU1JTkdf MAkJMHgwMDI4Cj4gKyNkZWZpbmUgTUlDXzNEX09VVFBVVF9USU1JTkdfMQkJMHgwMDJDCj4gKyNk ZWZpbmUgTUlDXzNEX09VVFBVVF9USU1JTkdfMgkJMHgwMDMwCj4gKyNkZWZpbmUgTUlDX0NPUkVf UEFSQV8wCQkJMHgwMDM0Cj4gKyNkZWZpbmUgTUlDX0NPUkVfUEFSQV8xCQkJMHgwMDM4Cj4gKyNk ZWZpbmUgTUlDX0NUQ19DVFJMCQkJMHgwMDQwCj4gKyNkZWZpbmUgTUlDX1JEX0RBVEEJCQkweDAw NDQKPiArCj4gKyNkZWZpbmUgTUlDX1VQRF9SRUcJCQkoMSA8PCAzMSkKPiArI2RlZmluZSBNSUNf T05fUkVHCQkJKDEgPDwgMzApCj4gKyNkZWZpbmUgTUlDX1REX09OX1JFRwkJCSgxIDw8IDI5KQo+ ICsjZGVmaW5lIE1JQ19CU19DSEdfT1VUCQkJKDEgPDwgMTYpCj4gKyNkZWZpbmUgTUlDX1ZJREVP X1RZUEUoeCkJCSgoKHgpICYgMHhmKSA8PCAxMikKPiArI2RlZmluZSBNSUNfUFNSX0VOCQkJKDEg PDwgNSkKPiArI2RlZmluZSBNSUNfU1dfUlNUCQkJKDEgPDwgNCkKPiArI2RlZmluZSBNSUNfQUxM X1JTVAkJCSgxIDw8IDMpCj4gKyNkZWZpbmUgTUlDX0NPUkVfVkVSX0NPTlRST0wJCSgxIDw8IDIp Cj4gKyNkZWZpbmUgTUlDX01PREVfU0VMX0NPTU1BTkRfTU9ERQkoMSA8PCAxKQo+ICsjZGVmaW5l IE1JQ19NT0RFX1NFTF9NQVNLCQkoMSA8PCAxKQo+ICsjZGVmaW5lIE1JQ19DT1JFX0VOCQkJKDEg PDwgMCkKPiArCj4gKyNkZWZpbmUgTUlDX1ZfUFVMU0VfV0lEVEgoeCkJCSgoKHgpICYgMHgzZmZm KSA8PCAxNikKPiArI2RlZmluZSBNSUNfVl9QRVJJT0RfTElORSh4KQkJKCh4KSAmIDB4M2ZmZikK PiArCj4gKyNkZWZpbmUgTUlDX1ZCUF9TSVpFKHgpCQkJKCgoeCkgJiAweDNmZmYpIDw8IDE2KQo+ ICsjZGVmaW5lIE1JQ19WRlBfU0laRSh4KQkJCSgoeCkgJiAweDNmZmYpCj4gKwo+ICsjZGVmaW5l IE1JQ19JTUdfVl9TSVpFKHgpCQkoKCh4KSAmIDB4M2ZmZikgPDwgMTYpCj4gKyNkZWZpbmUgTUlD X0lNR19IX1NJWkUoeCkJCSgoeCkgJiAweDNmZmYpCj4gKwo+ICsjZGVmaW5lIE1JQ19IX1BVTFNF X1dJRFRIX0lOKHgpCQkoKCh4KSAmIDB4M2ZmZikgPDwgMTYpCj4gKyNkZWZpbmUgTUlDX0hfUEVS SU9EX1BJWEVMX0lOKHgpCSgoeCkgJiAweDNmZmYpCj4gKwo+ICsjZGVmaW5lIE1JQ19IQlBfU0la RV9JTih4KQkJKCgoeCkgJiAweDNmZmYpIDw8IDE2KQo+ICsjZGVmaW5lIE1JQ19IRlBfU0laRV9J Tih4KQkJKCh4KSAmIDB4M2ZmZikKPiArCj4gKyNkZWZpbmUgTUlDX0hfUFVMU0VfV0lEVEhfMkQo eCkJCSgoKHgpICYgMHgzZmZmKSA8PCAxNikKPiArI2RlZmluZSBNSUNfSF9QRVJJT0RfUElYRUxf MkQoeCkJKCh4KSAmIDB4M2ZmZikKPiArCj4gKyNkZWZpbmUgTUlDX0hCUF9TSVpFXzJEKHgpCQko KCh4KSAmIDB4M2ZmZikgPDwgMTYpCj4gKyNkZWZpbmUgTUlDX0hGUF9TSVpFXzJEKHgpCQkoKHgp ICYgMHgzZmZmKQo+ICsKPiArI2RlZmluZSBNSUNfQlNfU0laRV8yRCh4KQkoKHgpICYgMHgzZmZm KQo+ICsKPiArZW51bSB7Cj4gKwlFTkRQT0lOVF9ERUNPTl9OT0RFLAo+ICsJRU5EUE9JTlRfRFNJ X05PREUsCj4gKwlOVU1fRU5EUE9JTlRTCj4gK307Cj4gKwo+ICtzdGF0aWMgY2hhciAqY2xrX25h bWVzW10gPSB7ICJwY2xrX21pYzAiLCAic2Nsa19yZ2JfdmNsa190b19taWMwIiB9Owo+ICsjZGVm aW5lIE5VTV9DTEtTCQlBUlJBWV9TSVpFKGNsa19uYW1lcykKPiArc3RhdGljIERFRklORV9NVVRF WChtaWNfbXV0ZXgpOwo+ICsKPiArc3RydWN0IGV4eW5vc19taWMgewo+ICsJc3RydWN0IGRldmlj ZSAqZGV2Owo+ICsJdm9pZCBfX2lvbWVtICpyZWc7Cj4gKwl2b2lkIF9faW9tZW0gKnN5c3JlZzsK PiArCXN0cnVjdCBjbGsgKmNsa3NbTlVNX0NMS1NdOwo+ICsKPiArCWJvb2wgaTgwX21vZGU7Cj4g KwlzdHJ1Y3QgdmlkZW9tb2RlIHZtOwo+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ ICsJc3RydWN0IGRybV9icmlkZ2UgYnJpZGdlOwo+ICsKPiArCWJvb2wgZW5hYmxlZDsKPiArfTsK PiArCj4gK3N0YXRpYyB2b2lkIG1pY19zZXRfcGF0aChzdHJ1Y3QgZXh5bm9zX21pYyAqbWljLCBi b29sIGVuYWJsZSkKPiArewo+ICsJdTMyIHJlZzsKPiArCj4gKwlyZWcgPSByZWFkbChtaWMtPnN5 c3JlZyArIERTRF9DRkdfTVVYKTsKPiArCWlmIChlbmFibGUpCj4gKwkJcmVnIHw9IE1JQzBfUkdC X01VWCB8IE1JQzBfSTgwX01VWCB8IE1JQzBfT05fTVVYOwo+ICsJZWxzZQo+ICsJCXJlZyAmPSB+ KE1JQzBfUkdCX01VWCB8IE1JQzBfSTgwX01VWCB8IE1JQzBfT05fTVVYKTsKCmV4eW5vc19taWMg aGFzIGFscmVhZHkgd2hpY2ggdmlkZW8gbW9kZSAtIFJHQiBvciBpODAgLSBpcyB1c2VkIHNvIGl0 J2QKYmUgcmVhc29uYWJsZSB0byBzZWxlY3Qgb25lIG9mIHRoZW0gdG8gYXZvaWQgY29uZnVzaW5n LgoKPiArCj4gKwl3cml0ZWwocmVnLCBtaWMtPnN5c3JlZyArIERTRF9DRkdfTVVYKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBtaWNfc3dfcmVzZXQoc3RydWN0IGV4eW5vc19taWMgKm1pYykKPiAr ewo+ICsJdW5zaWduZWQgaW50IHJldHJ5ID0gMTAwOwo+ICsJaW50IHJldDsKPiArCj4gKwl3cml0 ZWwoTUlDX1NXX1JTVCwgbWljLT5yZWcgKyBNSUNfT1ApOwo+ICsKPiArCXdoaWxlIChyZXRyeS0t ID4gMCkgewo+ICsJCXJldCA9IHJlYWRsKG1pYy0+cmVnICsgTUlDX09QKTsKPiArCQlpZiAoIShy ZXQgJiBNSUNfU1dfUlNUKSkKPiArCQkJcmV0dXJuIDA7Cj4gKwo+ICsJCXVkZWxheSgxMCk7Cj4g Kwl9Cj4gKwo+ICsJcmV0dXJuIC1FVElNRURPVVQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1p Y19zZXRfcG9yY2hfdGltaW5nKHN0cnVjdCBleHlub3NfbWljICptaWMpCj4gK3sKPiArCXN0cnVj dCB2aWRlb21vZGUgdm07Cj4gKwl1MzIgcmVnOwo+ICsKPiArCWlmICghbWljLT5pODBfbW9kZSkg ewoKSXQnZCBiZSBiZXR0ZXIgdG8gY2hlY2sgaXQgYmVmb3JlIHRoaXMgZnVuY3Rpb24gaXMgY2Fs bGVkLiBUaGlzIGZ1bmNpb24KY2FsbCByZWFsbHkgaXMgdW5uZWNlc3NhcnkgaW4gY2FzZSBvZiBp ODAgbW9kZS4KCj4gKwkJdm0gPSBtaWMtPnZtOwo+ICsKPiArCQlyZWcgPSBNSUNfVl9QVUxTRV9X SURUSCh2bS52c3luY19sZW4pICsKPiArCQkJTUlDX1ZfUEVSSU9EX0xJTkUodm0udnN5bmNfbGVu ICsgdm0udmFjdGl2ZSArCj4gKwkJCQkJdm0udmJhY2tfcG9yY2ggKyB2bS52ZnJvbnRfcG9yY2gp Owo+ICsJCXdyaXRlbChyZWcsIG1pYy0+cmVnICsgTUlDX1ZfVElNSU5HXzApOwo+ICsKPiArCQly ZWcgPSBNSUNfVkJQX1NJWkUodm0udmJhY2tfcG9yY2gpICsKPiArCQkJCQkJTUlDX1ZGUF9TSVpF KHZtLnZmcm9udF9wb3JjaCk7Cj4gKwkJd3JpdGVsKHJlZywgbWljLT5yZWcgKyBNSUNfVl9USU1J TkdfMSk7Cj4gKwo+ICsJCXJlZyA9IE1JQ19WX1BVTFNFX1dJRFRIKHZtLmhzeW5jX2xlbikgKwo+ ICsJCQlNSUNfVl9QRVJJT0RfTElORSh2bS5oc3luY19sZW4gKyB2bS5oYWN0aXZlICsKPiArCQkJ CQl2bS5oYmFja19wb3JjaCArIHZtLmhmcm9udF9wb3JjaCk7Cj4gKwkJd3JpdGVsKHJlZywgbWlj LT5yZWcgKyBNSUNfSU5QVVRfVElNSU5HXzApOwo+ICsKPiArCQlyZWcgPSBNSUNfVkJQX1NJWkUo dm0uaGJhY2tfcG9yY2gpICsKPiArCQkJCQkJTUlDX1ZGUF9TSVpFKHZtLmhmcm9udF9wb3JjaCk7 Cj4gKwkJd3JpdGVsKHJlZywgbWljLT5yZWcgKyBNSUNfSU5QVVRfVElNSU5HXzEpOwo+ICsJfQo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtaWNfc2V0X2ltZ19zaXplKHN0cnVjdCBleHlub3NfbWlj ICptaWMpCj4gK3sKPiArCXN0cnVjdCB2aWRlb21vZGUgKnZtID0gJm1pYy0+dm07Cj4gKwl1MzIg cmVnOwo+ICsKPiArCXJlZyA9IE1JQ19JTUdfSF9TSVpFKHZtLT5oYWN0aXZlKSArCj4gKwkJTUlD X0lNR19WX1NJWkUodm0tPnZhY3RpdmUpOwo+ICsKPiArCXdyaXRlbChyZWcsIG1pYy0+cmVnICsg TUlDX0lNR19TSVpFKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWljX3NldF9vdXRwdXRfdGlt aW5nKHN0cnVjdCBleHlub3NfbWljICptaWMpCj4gK3sKPiArCXN0cnVjdCB2aWRlb21vZGUgdm0g PSBtaWMtPnZtOwo+ICsJdTMyIHJlZywgYnNfc2l6ZV8yZDsKPiArCj4gKwlEUk1fREVCVUcoInc6 ICV1LCBoOiAldVxuIiwgdm0uaGFjdGl2ZSwgdm0udmFjdGl2ZSk7Cj4gKwlic19zaXplXzJkID0g KCh2bS5oYWN0aXZlID4+IDIpIDw8IDEpICsgKHZtLnZhY3RpdmUgJSA0KTsKPiArCXJlZyA9IE1J Q19CU19TSVpFXzJEKGJzX3NpemVfMmQpOwo+ICsJd3JpdGVsKHJlZywgbWljLT5yZWcgKyBNSUNf MkRfT1VUUFVUX1RJTUlOR18yKTsKPiArCj4gKwlpZiAoIW1pYy0+aTgwX21vZGUpIHsKCkRpdHRv LgoKPiArCQlyZWcgPSBNSUNfSF9QVUxTRV9XSURUSF8yRCh2bS5oc3luY19sZW4pICsKPiArCQkJ TUlDX0hfUEVSSU9EX1BJWEVMXzJEKHZtLmhzeW5jX2xlbiArIGJzX3NpemVfMmQgKwo+ICsJCQkJ CXZtLmhiYWNrX3BvcmNoICsgdm0uaGZyb250X3BvcmNoKTsKPiArCQl3cml0ZWwocmVnLCBtaWMt PnJlZyArIE1JQ18yRF9PVVRQVVRfVElNSU5HXzApOwo+ICsKPiArCQlyZWcgPSBNSUNfSEJQX1NJ WkVfMkQodm0uaGJhY2tfcG9yY2gpICsKPiArCQkJTUlDX0hfUEVSSU9EX1BJWEVMXzJEKHZtLmhm cm9udF9wb3JjaCk7Cj4gKwkJd3JpdGVsKHJlZywgbWljLT5yZWcgKyBNSUNfMkRfT1VUUFVUX1RJ TUlOR18xKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWljX3NldF9yZWdfb24oc3Ry dWN0IGV4eW5vc19taWMgKm1pYywgYm9vbCBlbmFibGUpCj4gK3sKPiArCXUzMiByZWcgPSByZWFk bChtaWMtPnJlZyArIE1JQ19PUCk7Cj4gKwo+ICsJaWYgKGVuYWJsZSkgewo+ICsJCXJlZyAmPSB+ KE1JQ19NT0RFX1NFTF9NQVNLIHwgTUlDX0NPUkVfVkVSX0NPTlRST0wgfCBNSUNfUFNSX0VOKTsK PiArCQlyZWcgfD0gKE1JQ19DT1JFX0VOIHwgTUlDX0JTX0NIR19PVVQgfCBNSUNfT05fUkVHKTsK PiArCj4gKwkJaWYgKG1pYy0+aTgwX21vZGUpCj4gKwkJCXJlZyB8PSBNSUNfTU9ERV9TRUxfQ09N TUFORF9NT0RFOwoKU2V0IGV4cGxpY2l0bHkgaXQgdG8gdmlkZW8gbW9kZSBpbiBjYXNlIG9mIFJH QiBtb2RlIGV2ZW4gdGhvdWdoIE1PREVfU0VUCmZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaGFzIDB4 MCBhcyBkZWZhdWx0LgoKaS5lLiwKICAgICAgICAgICAgICAgcmVnICAmPSB+TUlDX01PREVfU0VM X0NPTU1BTkRfTU9ERTsKICAgICAgICAgICAgICAgaWYgKG1pYy0+aTgwX21vZGUpCiAgICAgICAg ICAgICAgICAgICAgICAgIHJlZyB8PSBNSUNfTU9ERV9TRUxfQ09NTUFORF9NT0RFOwoKPiArCX0g ZWxzZSB7Cj4gKwkJcmVnICY9IH5NSUNfQ09SRV9FTjsKPiArCX0KPiArCj4gKwlyZWcgfD0gTUlD X1VQRF9SRUc7Cj4gKwl3cml0ZWwocmVnLCBtaWMtPnJlZyArIE1JQ19PUCk7Cj4gK30KPiArCj4g K3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKmdldF9yZW1vdGVfbm9kZShzdHJ1Y3QgZGV2aWNl X25vZGUgKmZyb20sIGludCByZWcpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZW5kcG9p bnQgPSBOVUxMLCAqcmVtb3RlX25vZGUgPSBOVUxMOwo+ICsKPiArCWVuZHBvaW50ID0gb2ZfZ3Jh cGhfZ2V0X2VuZHBvaW50X2J5X3JlZ3MoZnJvbSwgcmVnLCAtMSk7Cj4gKwlpZiAoIWVuZHBvaW50 KSB7Cj4gKwkJRFJNX0VSUk9SKCJtaWM6IEZhaWxlZCB0byBmaW5kIHJlbW90ZSBwb3J0IGZyb20g JXMiLAo+ICsJCQkJZnJvbS0+ZnVsbF9uYW1lKTsKPiArCQlnb3RvIGV4aXQ7Cj4gKwl9Cj4gKwo+ ICsJcmVtb3RlX25vZGUgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGVuZHBvaW50 KTsKPiArCWlmICghcmVtb3RlX25vZGUpIHsKPiArCQlEUk1fRVJST1IoIm1pYzogRmFpbGVkIHRv IGZpbmQgcmVtb3RlIHBvcnQgcGFyZW50IGZyb20gJXMiLAo+ICsJCQkJCQkJZnJvbS0+ZnVsbF9u YW1lKTsKPiArCQlnb3RvIGV4aXQ7Cj4gKwl9Cj4gKwo+ICtleGl0Ogo+ICsJb2Zfbm9kZV9wdXQo ZW5kcG9pbnQpOwo+ICsJcmV0dXJuIHJlbW90ZV9ub2RlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IHBhcnNlX2R0KHN0cnVjdCBleHlub3NfbWljICptaWMpCj4gK3sKPiArCWludCByZXQgPSAwLCBp LCBqOwo+ICsJc3RydWN0IGRldmljZV9ub2RlICpyZW1vdGVfbm9kZTsKPiArCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqbm9kZXNbM107Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBvcmRlciBvZiBlbmRwb2lu dHMgZG9lcyBtYXR0ZXIuCj4gKwkgKiBUaGUgZmlyc3Qgbm9kZSBtdXN0IGJlIGZvciBkZWNvbiBh bmQgdGhlIHNlY29uZCBvbmUgbXVzdCBiZSBmb3IgZHNpLgo+ICsJICovCj4gKwlmb3IgKGkgPSAw LCBqID0gMDsgaSA8IE5VTV9FTkRQT0lOVFM7IGkrKykgewo+ICsJCXJlbW90ZV9ub2RlID0gZ2V0 X3JlbW90ZV9ub2RlKG1pYy0+ZGV2LT5vZl9ub2RlLCBpKTsKPiArCQlpZiAoIXJlbW90ZV9ub2Rl KSB7Cj4gKwkJCXJldCA9IC1FUElQRTsKPiArCQkJZ290byBleGl0Owo+ICsJCX0KPiArCQlub2Rl c1tqKytdID0gcmVtb3RlX25vZGU7Cj4gKwo+ICsJCXN3aXRjaCAoaSkgewo+ICsJCWNhc2UgRU5E UE9JTlRfREVDT05fTk9ERToKPiArCQkJLyogZGVjb24gbm9kZSAqLwo+ICsJCQlpZiAob2ZfZ2V0 X2NoaWxkX2J5X25hbWUocmVtb3RlX25vZGUsCj4gKwkJCQkJCSJpODAtaWYtdGltaW5ncyIpKQo+ ICsJCQkJbWljLT5pODBfbW9kZSA9IDE7Cj4gKwo+ICsJCQlicmVhazsKPiArCQljYXNlIEVORFBP SU5UX0RTSV9OT0RFOgo+ICsJCQkvKiBwYW5lbCBub2RlICovCj4gKwkJCXJlbW90ZV9ub2RlID0g Z2V0X3JlbW90ZV9ub2RlKHJlbW90ZV9ub2RlLCAxKTsKPiArCQkJaWYgKCFyZW1vdGVfbm9kZSkg ewo+ICsJCQkJcmV0ID0gLUVQSVBFOwo+ICsJCQkJZ290byBleGl0Owo+ICsJCQl9Cj4gKwkJCW5v ZGVzW2orK10gPSByZW1vdGVfbm9kZTsKPiArCj4gKwkJCXJldCA9IG9mX2dldF92aWRlb21vZGUo cmVtb3RlX25vZGUsCj4gKwkJCQkJCQkmbWljLT52bSwgMCk7Cj4gKwkJCWlmIChyZXQpIHsKPiAr CQkJCURSTV9FUlJPUigibWljOiBmYWlsZWQgdG8gZ2V0IHZpZGVvbW9kZSIpOwo+ICsJCQkJZ290 byBleGl0Owo+ICsJCQl9Cj4gKwo+ICsJCQlicmVhazsKPiArCQlkZWZhdWx0Ogo+ICsJCQlEUk1f RVJST1IoIm1pYzogVW5rbm93biBlbmRwb2ludCBmcm9tIE1JQyIpOwo+ICsJCQlicmVhazsKPiAr CQl9Cj4gKwl9Cj4gKwo+ICtleGl0Ogo+ICsJd2hpbGUgKC0taiA+IC0xKQo+ICsJCW9mX25vZGVf cHV0KG5vZGVzW2pdKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICt2b2lkIG1pY19k aXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpIHsgfQoKSXQgc2VlbXMgdGhhdCBkcm1f ZW5jb2Rlcl9kaXNhYmxlIGZ1bmN0aW9uIG9mIGRybV9jcnRjX2hlbHBlci5jIGRvZXNuJ3QKY2hl Y2sgaWYgdGhlIGRpc2FibGUgY2FsbGJhY2sgaXMgTlVMTCBvciBub3QuIEFueXdheSwgbm8gcHJv YmxlbSBidXQKdGhpcyBmdW50aW9uIGNvdWxkIGJlIHJlbW92ZWQgd2l0aCB0aGUgZGlzYWJsZSBj YWxsYmFjayBjaGVja2luZyBsYXRlci4KCj4gKwo+ICt2b2lkIG1pY19wb3N0X2Rpc2FibGUoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IGV4eW5vc19taWMgKm1pYyA9 IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7Cj4gKwlpbnQgaTsKPiArCj4gKwltdXRleF9sb2NrKCZt aWNfbXV0ZXgpOwo+ICsJaWYgKCFtaWMtPmVuYWJsZWQpCj4gKwkJZ290byBhbHJlYWR5X2Rpc2Fi bGVkOwo+ICsKPiArCW1pY19zZXRfcGF0aChtaWMsIDApOwo+ICsKPiArCWZvciAoaSA9IE5VTV9D TEtTIC0gMTsgaSA+IC0xOyBpLS0pCj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1pYy0+Y2xr c1tpXSk7Cj4gKwo+ICsJbWljLT5lbmFibGVkID0gMDsKPiArCj4gK2FscmVhZHlfZGlzYWJsZWQ6 Cj4gKwltdXRleF91bmxvY2soJm1pY19tdXRleCk7Cj4gK30KPiArCj4gK3ZvaWQgbWljX3ByZV9l bmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IGV4eW5vc19t aWMgKm1pYyA9IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7Cj4gKwlpbnQgcmV0LCBpOwo+ICsKPiAr CW11dGV4X2xvY2soJm1pY19tdXRleCk7Cj4gKwlpZiAobWljLT5lbmFibGVkKQo+ICsJCWdvdG8g YWxyZWFkeV9lbmFibGVkOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBOVU1fQ0xLUzsgaSsrKSB7 Cj4gKwkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKG1pYy0+Y2xrc1tpXSk7Cj4gKwkJaWYgKHJl dCA8IDApIHsKPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIGNsb2NrICglcylcbiIs Cj4gKwkJCQkJCQljbGtfbmFtZXNbaV0pOwo+ICsJCQlnb3RvIHR1cm5fb2ZmX2Nsa3M7Cj4gKwkJ fQo+ICsJfQo+ICsKPiArCW1pY19zZXRfcGF0aChtaWMsIDEpOwo+ICsKPiArCXJldCA9IG1pY19z d19yZXNldChtaWMpOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJl c2V0XG4iKTsKPiArCQlnb3RvIHR1cm5fb2ZmX2Nsa3M7Cj4gKwl9Cj4gKwo+ICsJbWljX3NldF9w b3JjaF90aW1pbmcobWljKTsKPiArCW1pY19zZXRfaW1nX3NpemUobWljKTsKPiArCW1pY19zZXRf b3V0cHV0X3RpbWluZyhtaWMpOwo+ICsJbWljX3NldF9yZWdfb24obWljLCAxKTsKPiArCW1pYy0+ ZW5hYmxlZCA9IDE7Cj4gKwltdXRleF91bmxvY2soJm1pY19tdXRleCk7Cj4gKwo+ICsJcmV0dXJu Owo+ICsKPiArdHVybl9vZmZfY2xrczoKPiArCXdoaWxlICgtLWkgPiAtMSkKPiArCQljbGtfZGlz YWJsZV91bnByZXBhcmUobWljLT5jbGtzW2ldKTsKPiArYWxyZWFkeV9lbmFibGVkOgo+ICsJbXV0 ZXhfdW5sb2NrKCZtaWNfbXV0ZXgpOwo+ICt9Cj4gKwo+ICt2b2lkIG1pY19lbmFibGUoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSkgeyB9Cj4gKwo+ICt2b2lkIG1pY19kZXN0cm95KHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXN0cnVjdCBleHlub3NfbWljICptaWMgPSBicmlk Z2UtPmRyaXZlcl9wcml2YXRlOwo+ICsJaW50IGk7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmbWljX211 dGV4KTsKPiArCWlmICghbWljLT5lbmFibGVkKQo+ICsJCWdvdG8gYWxyZWFkeV9kaXNhYmxlZDsK PiArCj4gKwlmb3IgKGkgPSBOVU1fQ0xLUyAtIDE7IGkgPiAtMTsgaS0tKQo+ICsJCWNsa19kaXNh YmxlX3VucHJlcGFyZShtaWMtPmNsa3NbaV0pOwo+ICsKPiArYWxyZWFkeV9kaXNhYmxlZDoKPiAr CW11dGV4X3VubG9jaygmbWljX211dGV4KTsKPiArfQo+ICsKPiArc3RydWN0IGRybV9icmlkZ2Vf ZnVuY3MgbWljX2JyaWRnZV9mdW5jcyA9IHsKPiArCS5kaXNhYmxlID0gbWljX2Rpc2FibGUsCj4g KwkucG9zdF9kaXNhYmxlID0gbWljX3Bvc3RfZGlzYWJsZSwKPiArCS5wcmVfZW5hYmxlID0gbWlj X3ByZV9lbmFibGUsCj4gKwkuZW5hYmxlID0gbWljX2VuYWJsZSwKPiArfTsKPiArCj4gK2ludCBl eHlub3NfbWljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgZXh5bm9zX21pYyAqbWlj Owo+ICsJc3RydWN0IHJlc291cmNlIHJlczsKPiArCWludCByZXQsIGk7Cj4gKwo+ICsJbWljID0g ZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptaWMpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghbWlj KSB7Cj4gKwkJRFJNX0VSUk9SKCJtaWM6IEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIE1J QyBvYmplY3RcbiIpOwo+ICsJCXJldCA9IC1FTk9NRU07Cj4gKwkJZ290byBlcnI7Cj4gKwl9Cj4g Kwo+ICsJbWljLT5kZXYgPSBkZXY7Cj4gKwo+ICsJcmV0ID0gcGFyc2VfZHQobWljKTsKPiArCWlm IChyZXQpCj4gKwkJZ290byBlcnI7Cj4gKwo+ICsJcmV0ID0gb2ZfYWRkcmVzc190b19yZXNvdXJj ZShkZXYtPm9mX25vZGUsIDAsICZyZXMpOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9FUlJPUigi bWljOiBGYWlsZWQgdG8gZ2V0IG1lbSByZWdpb24gZm9yIE1JQ1xuIik7Cj4gKwkJZ290byBlcnI7 Cj4gKwl9Cj4gKwltaWMtPnJlZyA9IGRldm1faW9yZW1hcChkZXYsIHJlcy5zdGFydCwgcmVzb3Vy Y2Vfc2l6ZSgmcmVzKSk7Cj4gKwlpZiAoIW1pYy0+cmVnKSB7Cj4gKwkJRFJNX0VSUk9SKCJtaWM6 IEZhaWxlZCB0byByZW1hcCBmb3IgTUlDXG4iKTsKPiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJCWdv dG8gZXJyOwo+ICsJfQo+ICsKPiArCXJldCA9IG9mX2FkZHJlc3NfdG9fcmVzb3VyY2UoZGV2LT5v Zl9ub2RlLCAxLCAmcmVzKTsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fRVJST1IoIm1pYzogRmFp bGVkIHRvIGdldCBtZW0gcmVnaW9uIGZvciBNSUNcbiIpOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ ICsJbWljLT5zeXNyZWcgPSBkZXZtX2lvcmVtYXAoZGV2LCByZXMuc3RhcnQsIHJlc291cmNlX3Np emUoJnJlcykpOwoKQ29uc2lkZXIgdG8gdXNlIHN5c2NvbiBmcmFtZXdvcmsgdG8gYWNjZXNzIHN5 c3RlbSByZWdpc3RlcnMuCgo+ICsJaWYgKCFtaWMtPnN5c3JlZykgewo+ICsJCURSTV9FUlJPUigi bWljOiBGYWlsZWQgdG8gcmVtYXAgZm9yIE1JQ1xuIik7Cj4gKwkJZ290byBlcnI7Cj4gKwl9Cj4g Kwo+ICsJbWljLT5icmlkZ2UuZnVuY3MgPSAmbWljX2JyaWRnZV9mdW5jczsKPiArCW1pYy0+YnJp ZGdlLm9mX25vZGUgPSBkZXYtPm9mX25vZGU7Cj4gKwltaWMtPmJyaWRnZS5kcml2ZXJfcHJpdmF0 ZSA9IG1pYzsKPiArCXJldCA9IGRybV9icmlkZ2VfYWRkKCZtaWMtPmJyaWRnZSk7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJRFJNX0VSUk9SKCJtaWM6IEZhaWxlZCB0byBhZGQgTUlDIHRvIHRoZSBnbG9i YWwgYnJpZGdlIGxpc3RcbiIpOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCBOVU1fQ0xLUzsgaSsrKSB7Cj4gKwkJbWljLT5jbGtzW2ldID0gb2ZfY2xrX2dldF9i eV9uYW1lKGRldi0+b2Zfbm9kZSwgY2xrX25hbWVzW2ldKTsKPiArCQlpZiAoSVNfRVJSKG1pYy0+ Y2xrc1tpXSkpIHsKPiArCQkJRFJNX0VSUk9SKCJtaWM6IEZhaWxlZCB0byBnZXQgY2xvY2sgKCVz KVxuIiwKPiArCQkJCQkJCQljbGtfbmFtZXNbaV0pOwo+ICsJCQlyZXQgPSBQVFJfRVJSKG1pYy0+ Y2xrc1tpXSk7Cj4gKwkJCWdvdG8gZXJyOwo+ICsJCX0KPiArCX0KPiArCj4gKwlEUk1fSU5GTygi TUlDIGhhcyBiZWVuIHByb2JlZFxuIik7CgpVc2UgRFJNX0RFQlVHX0tNUyBpbnN0ZWFkLgoKVGhh bmtzLApJbmtpIERhZQoKPiArCj4gK2VycjoKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgZXh5bm9zX21pY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiArewo+ICsJc3RydWN0IGV4eW5vc19taWMgKm1pYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBk ZXYpOwo+ICsJaW50IGk7Cj4gKwo+ICsJZHJtX2JyaWRnZV9yZW1vdmUoJm1pYy0+YnJpZGdlKTsK PiArCj4gKwlmb3IgKGkgPSBOVU1fQ0xLUyAtIDE7IGkgPiAtMTsgaS0tKQo+ICsJCWNsa19wdXQo bWljLT5jbGtzW2ldKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgZXh5bm9zX21pY19vZl9tYXRjaFtdID0gewo+ICsJeyAuY29t cGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtbWljIiB9LAo+ICsJeyB9Cj4gK307Cj4gK01P RFVMRV9ERVZJQ0VfVEFCTEUob2YsIGV4eW5vc19taWNfb2ZfbWF0Y2gpOwo+ICsKPiArc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBtaWNfZHJpdmVyID0gewo+ICsJLnByb2JlCQk9IGV4eW5vc19taWNf cHJvYmUsCj4gKwkucmVtb3ZlCQk9IGV4eW5vc19taWNfcmVtb3ZlLAo+ICsJLmRyaXZlcgkJPSB7 Cj4gKwkJLm5hbWUJPSAiZXh5bm9zLW1pYyIsCj4gKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCj4g KwkJLm9mX21hdGNoX3RhYmxlID0gZXh5bm9zX21pY19vZl9tYXRjaCwKPiArCX0sCj4gK307Cj4g LS0KPiAxLjkuMQo+IAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK