From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chanwoo Choi Subject: Re: [PATCH v4 5/7] PM / devfreq: event: support rockchip dfi controller Date: Mon, 01 Aug 2016 17:08:39 +0900 Message-ID: <579F0387.5070303@samsung.com> References: <1469779021-10426-1-git-send-email-hl@rock-chips.com> <1469779021-10426-6-git-send-email-hl@rock-chips.com> <579EFD28.5070404@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <579EFD28.5070404-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Lin Huang , heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org Cc: tixy-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, typ-TNX95d0MmH7DzftRWevZcw@public.gmane.org, airlied-cv59FeDIM0c@public.gmane.org, mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org, dbasehore-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, myungjoo.ham-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, mark.yao-TNX95d0MmH7DzftRWevZcw@public.gmane.org List-Id: linux-rockchip.vger.kernel.org SGkgTGluLAoKSSBhZGQgdGhlIG9uZSBtaW5vciBjb21tZW50IGZvciBmdWxsIG5hbWUgb2YgJ0RS SScuCgpPbiAyMDE264WEIDA47JuUIDAx7J28IDE2OjQxLCBDaGFud29vIENob2kgd3JvdGU6Cj4g SGkgTGluLAo+IAo+IEJlY2F1c2UgeW91IHJlbW92ZSB0aGUgJ1JGQycgcHJlZml4IG9uIHBhdGNo IHRpdGxlLAo+IEkgdGhpbmsgdGhhdCB5b3UgYmV0dGVyIHRvIG1ha2UgdGhlIGRvY3VtZW50YXRp b24gYXMgZm9sbG93aW5nOiAKPiAtIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9k ZXZmcmVxL2V2ZW50L3JvY2tjaGlwLWRmaS50eHQKPiAKPiBSZWdhcmRzLAo+IENoYW53b28gQ2hv aQo+IAo+IE9uIDIwMTbrhYQgMDfsm5QgMjnsnbwgMTY6NTYsIExpbiBIdWFuZyB3cm90ZToKPj4g b24gcmszMzk5IHBsYXRmb3JtLCB0aGVyZSBpcyBkZmkgY29ucm9sbGVyIGNhbiBtb25pdG9yCj4+ IGRkciBsb2FkLCBiYXNlIG9uIHRoaXMgcmVzdWx0LCB3ZSBjYW4gZG8gZGRyIGZyZXFlbmN5Cj4+ IHNjYWxpbmcuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IExpbiBIdWFuZyA8aGxAcm9jay1jaGlwcy5j b20+Cj4+IEFja2VkLWJ5OiBDaGFud29vIENob2kgPGN3MDAuY2hvaUBzYW1zdW5nLmNvbT4KPj4g LS0tCj4+IENoYW5nZXMgaW4gdjQ6Cj4+IC0gTm9uZQo+Pgo+PiBDaGFuZ2VzIGluIHYzOgo+PiAt IE5vbmUKPj4KPj4gQ2hhbmdlcyBpbiB2MjoKPj4gLSB1c2UgY2xrX2Rpc2FibGVfdW5wcmVwYXJl IGFuZCBjbGtfZW5hYmxlX3ByZXBhcmUKPj4gLSByZW1vdmUgY2xrX2VuYWJsZV9wcmVwYXJlIGlu IHByb2JlCj4+IC0gcmVtb3ZlIHJvY2tjaGlwX2RmaV9yZW1vdmUgZnVuY3Rpb24KPj4KPj4gQ2hh bmdlcyBpbiB2MToKPj4gLSBOb25lCj4+Cj4+ICBkcml2ZXJzL2RldmZyZXEvZXZlbnQvS2NvbmZp ZyAgICAgICAgfCAgIDcgKwo+PiAgZHJpdmVycy9kZXZmcmVxL2V2ZW50L01ha2VmaWxlICAgICAg IHwgICAxICsKPj4gIGRyaXZlcnMvZGV2ZnJlcS9ldmVudC9yb2NrY2hpcC1kZmkuYyB8IDI1MyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgMyBmaWxlcyBjaGFuZ2VkLCAy NjEgaW5zZXJ0aW9ucygrKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZGV2ZnJlcS9l dmVudC9yb2NrY2hpcC1kZmkuYwo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL2V2 ZW50L0tjb25maWcgYi9kcml2ZXJzL2RldmZyZXEvZXZlbnQvS2NvbmZpZwo+PiBpbmRleCBhMTE3 MjBhLi5mZjkyNzlmIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2RldmZyZXEvZXZlbnQvS2NvbmZp Zwo+PiArKysgYi9kcml2ZXJzL2RldmZyZXEvZXZlbnQvS2NvbmZpZwo+PiBAQCAtMjIsNCArMjIs MTEgQEAgY29uZmlnIERFVkZSRVFfRVZFTlRfRVhZTk9TX1BQTVUKPj4gIAkgIChQbGF0Zm9ybSBQ ZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQpIGNvdW50ZXJzIHRvIGVzdGltYXRlIHRoZQo+PiAg CSAgdXRpbGl6YXRpb24gb2YgZWFjaCBtb2R1bGUuCj4+ICAKPj4gK2NvbmZpZyBERVZGUkVRX0VW RU5UX1JPQ0tDSElQX0RGSQo+PiArCXRyaXN0YXRlICJST0NLQ0hJUCBERkkgREVWRlJFUSBldmVu dCBEcml2ZXIiCj4+ICsJZGVwZW5kcyBvbiBBUkNIX1JPQ0tDSElQCj4+ICsJaGVscAo+PiArCSAg VGhpcyBhZGQgdGhlIGRldmZyZXEtZXZlbnQgZHJpdmVyIGZvciBSb2NrY2hpcCBTb0MuIEl0IHBy b3ZpZGVzIERGSQo+PiArCSAgKEREUiBNb25pdG9yIE1vZHVsZSkgZHJpdmVyIHRvIGNvdW50IGRk ciBsb2FkLgoKVGhlIERGSSBpcyAiRERSIE1vbml0b3IgTW9kdWxlIiBmdWxsIG5hbWU/IEkgbmVl ZCB0aGUgY29ycmVjdCBhYmJyZXZpYXRpb24gCmFuZCBmdWxsIG5hbWUuCgo+PiArCj4+ICBlbmRp ZiAjIFBNX0RFVkZSRVFfRVZFTlQKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGV2ZnJlcS9ldmVu dC9NYWtlZmlsZSBiL2RyaXZlcnMvZGV2ZnJlcS9ldmVudC9NYWtlZmlsZQo+PiBpbmRleCBiZTE0 NmVhLi5lM2Y4OGZjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2RldmZyZXEvZXZlbnQvTWFrZWZp bGUKPj4gKysrIGIvZHJpdmVycy9kZXZmcmVxL2V2ZW50L01ha2VmaWxlCj4+IEBAIC0xLDIgKzEs MyBAQAo+PiAgIyBFeHlub3MgREVWRlJFUSBFdmVudCBEcml2ZXJzCj4+ICBvYmotJChDT05GSUdf REVWRlJFUV9FVkVOVF9FWFlOT1NfUFBNVSkgKz0gZXh5bm9zLXBwbXUubwo+PiArb2JqLSQoQ09O RklHX0RFVkZSRVFfRVZFTlRfUk9DS0NISVBfREZJKSArPSByb2NrY2hpcC1kZmkubwo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL2V2ZW50L3JvY2tjaGlwLWRmaS5jIGIvZHJpdmVycy9k ZXZmcmVxL2V2ZW50L3JvY2tjaGlwLWRmaS5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGlu ZGV4IDAwMDAwMDAuLjk2YTAzMDcKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2Rl dmZyZXEvZXZlbnQvcm9ja2NoaXAtZGZpLmMKPj4gQEAgLTAsMCArMSwyNTMgQEAKPj4gKy8qCj4+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTYsIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby4s IEx0ZAo+PiArICogQXV0aG9yOiBMaW4gSHVhbmcgPGhsQHJvY2stY2hpcHMuY29tPgo+PiArICoK Pj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4+ICsgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAo+PiArICogdmVyc2lvbiAyLCBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPj4gKyAqCj4+ICsg KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2Vm dWwsIGJ1dCBXSVRIT1VUCj4+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPj4gKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IKPj4gKyAqIG1vcmUgZGV0YWlscy4KPj4gKyAqLwo+PiArCj4+ICsjaW5jbHVkZSA8bGludXgv Y2xrLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZGV2ZnJlcS1ldmVudC5oPgo+PiArI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+PiArI2luY2x1ZGUg PGxpbnV4L2luaXQuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+PiArI2luY2x1ZGUgPGxp bnV4L21mZC9zeXNjb24uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4gKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAu aD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5o Pgo+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4+ICsKPj4gKyNkZWZpbmUgUkszMzk5X0RNQ19O VU1fQ0gJMgo+PiArCj4+ICsvKiBERFJNT05fQ1RSTCAqLwo+PiArI2RlZmluZSBERFJNT05fQ1RS TAkweDA0Cj4+ICsjZGVmaW5lIENMUl9ERFJNT05fQ1RSTAkoMHgxZjAwMDAgPDwgMCkKPj4gKyNk ZWZpbmUgTFBERFI0X0VOCSgweDEwMDAxIDw8IDQpCj4+ICsjZGVmaW5lIEhBUkRXQVJFX0VOCSgw eDEwMDAxIDw8IDMpCj4+ICsjZGVmaW5lIExQRERSM19FTgkoMHgxMDAwMSA8PCAyKQo+PiArI2Rl ZmluZSBTT0ZUV0FSRV9FTgkoMHgxMDAwMSA8PCAxKQo+PiArI2RlZmluZSBUSU1FX0NOVF9FTgko MHgxMDAwMSA8PCAwKQo+PiArCj4+ICsjZGVmaW5lIEREUk1PTl9DSDBfQ09VTlRfTlVNCQkweDI4 Cj4+ICsjZGVmaW5lIEREUk1PTl9DSDBfREZJX0FDQ0VTU19OVU0JMHgyYwo+PiArI2RlZmluZSBE RFJNT05fQ0gxX0NPVU5UX05VTQkJMHgzYwo+PiArI2RlZmluZSBERFJNT05fQ0gxX0RGSV9BQ0NF U1NfTlVNCTB4NDAKPj4gKwo+PiArLyogcG11IGdyZiAqLwo+PiArI2RlZmluZSBQTVVHUkZfT1Nf UkVHMgkweDMwOAo+PiArI2RlZmluZSBERFJUWVBFX1NISUZUCTEzCj4+ICsjZGVmaW5lIEREUlRZ UEVfTUFTSwk3Cj4+ICsKPj4gK2VudW0gewo+PiArCUREUjMgPSAzLAo+PiArCUxQRERSMyA9IDYs Cj4+ICsJTFBERFI0ID0gNywKPj4gKwlVTlVTRUQgPSAweEZGCj4+ICt9Owo+PiArCj4+ICtzdHJ1 Y3QgZG1jX3VzYWdlIHsKPj4gKwl1MzIgYWNjZXNzOwo+PiArCXUzMiB0b3RhbDsKPj4gK307Cj4+ ICsKPj4gK3N0cnVjdCByb2NrY2hpcF9kZmkgewo+PiArCXN0cnVjdCBkZXZmcmVxX2V2ZW50X2Rl diAqZWRldjsKPj4gKwlzdHJ1Y3QgZGV2ZnJlcV9ldmVudF9kZXNjICpkZXNjOwo+PiArCXN0cnVj dCBkbWNfdXNhZ2UgY2hfdXNhZ2VbUkszMzk5X0RNQ19OVU1fQ0hdOwo+PiArCXN0cnVjdCBkZXZp Y2UgKmRldjsKPj4gKwl2b2lkIF9faW9tZW0gKnJlZ3M7Cj4+ICsJc3RydWN0IHJlZ21hcCAqcmVn bWFwX3BtdTsKPj4gKwlzdHJ1Y3QgY2xrICpjbGs7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgdm9p ZCByb2NrY2hpcF9kZmlfc3RhcnRfaGFyZHdhcmVfY291bnRlcihzdHJ1Y3QgZGV2ZnJlcV9ldmVu dF9kZXYgKmVkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IHJvY2tjaGlwX2RmaSAqaW5mbyA9IGRldmZy ZXFfZXZlbnRfZ2V0X2RydmRhdGEoZWRldik7Cj4+ICsJdm9pZCBfX2lvbWVtICpkZmlfcmVncyA9 IGluZm8tPnJlZ3M7Cj4+ICsJdTMyIHZhbDsKPj4gKwl1MzIgZGRyX3R5cGU7Cj4+ICsKPj4gKwkv KiBnZXQgZGRyIHR5cGUgKi8KPj4gKwlyZWdtYXBfcmVhZChpbmZvLT5yZWdtYXBfcG11LCBQTVVH UkZfT1NfUkVHMiwgJnZhbCk7Cj4+ICsJZGRyX3R5cGUgPSAodmFsID4+IEREUlRZUEVfU0hJRlQp ICYgRERSVFlQRV9NQVNLOwo+PiArCj4+ICsJLyogY2xlYXIgRERSTU9OX0NUUkwgc2V0dGluZyAq Lwo+PiArCXdyaXRlbF9yZWxheGVkKENMUl9ERFJNT05fQ1RSTCwgZGZpX3JlZ3MgKyBERFJNT05f Q1RSTCk7Cj4+ICsKPj4gKwkvKiBzZXQgZGRyIHR5cGUgdG8gZGZpICovCj4+ICsJaWYgKGRkcl90 eXBlID09IExQRERSMykKPj4gKwkJd3JpdGVsX3JlbGF4ZWQoTFBERFIzX0VOLCBkZmlfcmVncyAr IEREUk1PTl9DVFJMKTsKPj4gKwllbHNlIGlmIChkZHJfdHlwZSA9PSBMUEREUjQpCj4+ICsJCXdy aXRlbF9yZWxheGVkKExQRERSNF9FTiwgZGZpX3JlZ3MgKyBERFJNT05fQ1RSTCk7Cj4+ICsKPj4g KwkvKiBlbmFibGUgY291bnQsIHVzZSBzb2Z0d2FyZSBtb2RlICovCj4+ICsJd3JpdGVsX3JlbGF4 ZWQoU09GVFdBUkVfRU4sIGRmaV9yZWdzICsgRERSTU9OX0NUUkwpOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgdm9pZCByb2NrY2hpcF9kZmlfc3RvcF9oYXJkd2FyZV9jb3VudGVyKHN0cnVjdCBkZXZm cmVxX2V2ZW50X2RldiAqZWRldikKPj4gK3sKPj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfZGZpICppbmZv ID0gZGV2ZnJlcV9ldmVudF9nZXRfZHJ2ZGF0YShlZGV2KTsKPj4gKwl2b2lkIF9faW9tZW0gKmRm aV9yZWdzID0gaW5mby0+cmVnczsKPj4gKwl1MzIgdmFsOwo+PiArCj4+ICsJdmFsID0gcmVhZGxf cmVsYXhlZChkZmlfcmVncyArIEREUk1PTl9DVFJMKTsKPj4gKwl2YWwgJj0gflNPRlRXQVJFX0VO Owo+PiArCXdyaXRlbF9yZWxheGVkKHZhbCwgZGZpX3JlZ3MgKyBERFJNT05fQ1RSTCk7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfZGZpX2dldF9idXNpZXJfY2goc3RydWN0IGRl dmZyZXFfZXZlbnRfZGV2ICplZGV2KQo+PiArewo+PiArCXN0cnVjdCByb2NrY2hpcF9kZmkgKmlu Zm8gPSBkZXZmcmVxX2V2ZW50X2dldF9kcnZkYXRhKGVkZXYpOwo+PiArCXUzMiB0bXAsIG1heCA9 IDA7Cj4+ICsJdTMyIGksIGJ1c2llcl9jaCA9IDA7Cj4+ICsJdm9pZCBfX2lvbWVtICpkZmlfcmVn cyA9IGluZm8tPnJlZ3M7Cj4+ICsKPj4gKwlyb2NrY2hpcF9kZmlfc3RvcF9oYXJkd2FyZV9jb3Vu dGVyKGVkZXYpOwo+PiArCj4+ICsJLyogRmluZCBvdXQgd2hpY2ggY2hhbm5lbCBpcyBidXNpZXIg Ki8KPj4gKwlmb3IgKGkgPSAwOyBpIDwgUkszMzk5X0RNQ19OVU1fQ0g7IGkrKykgewo+PiArCQlp bmZvLT5jaF91c2FnZVtpXS5hY2Nlc3MgPSByZWFkbF9yZWxheGVkKGRmaV9yZWdzICsKPj4gKwkJ CQlERFJNT05fQ0gwX0RGSV9BQ0NFU1NfTlVNICsgaSAqIDIwKTsKPj4gKwkJaW5mby0+Y2hfdXNh Z2VbaV0udG90YWwgPSByZWFkbF9yZWxheGVkKGRmaV9yZWdzICsKPj4gKwkJCQlERFJNT05fQ0gw X0NPVU5UX05VTSArIGkgKiAyMCk7Cj4+ICsJCXRtcCA9IGluZm8tPmNoX3VzYWdlW2ldLmFjY2Vz czsKPj4gKwkJaWYgKHRtcCA+IG1heCkgewo+PiArCQkJYnVzaWVyX2NoID0gaTsKPj4gKwkJCW1h eCA9IHRtcDsKPj4gKwkJfQo+PiArCX0KPj4gKwlyb2NrY2hpcF9kZmlfc3RhcnRfaGFyZHdhcmVf Y291bnRlcihlZGV2KTsKPj4gKwo+PiArCXJldHVybiBidXNpZXJfY2g7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbnQgcm9ja2NoaXBfZGZpX2Rpc2FibGUoc3RydWN0IGRldmZyZXFfZXZlbnRfZGV2 ICplZGV2KQo+PiArewo+PiArCXN0cnVjdCByb2NrY2hpcF9kZmkgKmluZm8gPSBkZXZmcmVxX2V2 ZW50X2dldF9kcnZkYXRhKGVkZXYpOwo+PiArCj4+ICsJcm9ja2NoaXBfZGZpX3N0b3BfaGFyZHdh cmVfY291bnRlcihlZGV2KTsKPj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoaW5mby0+Y2xrKTsK Pj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJvY2tjaGlwX2Rm aV9lbmFibGUoc3RydWN0IGRldmZyZXFfZXZlbnRfZGV2ICplZGV2KQo+PiArewo+PiArCXN0cnVj dCByb2NrY2hpcF9kZmkgKmluZm8gPSBkZXZmcmVxX2V2ZW50X2dldF9kcnZkYXRhKGVkZXYpOwo+ PiArCWludCByZXQ7Cj4+ICsKPj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaW5mby0+Y2xr KTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCWRldl9lcnIoJmVkZXYtPmRldiwgImZhaWxlZCB0byBl bmFibGUgZGZpIGNsazogJWRcbiIsIHJldCk7Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiAr Cj4+ICsJcm9ja2NoaXBfZGZpX3N0YXJ0X2hhcmR3YXJlX2NvdW50ZXIoZWRldik7Cj4+ICsJcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfZGZpX3NldF9ldmVudChz dHJ1Y3QgZGV2ZnJlcV9ldmVudF9kZXYgKmVkZXYpCj4+ICt7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfZGZpX2dldF9ldmVudChzdHJ1Y3QgZGV2ZnJl cV9ldmVudF9kZXYgKmVkZXYsCj4+ICsJCQkJICBzdHJ1Y3QgZGV2ZnJlcV9ldmVudF9kYXRhICpl ZGF0YSkKPj4gK3sKPj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfZGZpICppbmZvID0gZGV2ZnJlcV9ldmVu dF9nZXRfZHJ2ZGF0YShlZGV2KTsKPj4gKwlpbnQgYnVzaWVyX2NoOwo+PiArCj4+ICsJYnVzaWVy X2NoID0gcm9ja2NoaXBfZGZpX2dldF9idXNpZXJfY2goZWRldik7Cj4+ICsKPj4gKwllZGF0YS0+ bG9hZF9jb3VudCA9IGluZm8tPmNoX3VzYWdlW2J1c2llcl9jaF0uYWNjZXNzOwo+PiArCWVkYXRh LT50b3RhbF9jb3VudCA9IGluZm8tPmNoX3VzYWdlW2J1c2llcl9jaF0udG90YWw7Cj4+ICsKPj4g KwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZmcmVxX2V2 ZW50X29wcyByb2NrY2hpcF9kZmlfb3BzID0gewo+PiArCS5kaXNhYmxlID0gcm9ja2NoaXBfZGZp X2Rpc2FibGUsCj4+ICsJLmVuYWJsZSA9IHJvY2tjaGlwX2RmaV9lbmFibGUsCj4+ICsJLmdldF9l dmVudCA9IHJvY2tjaGlwX2RmaV9nZXRfZXZlbnQsCj4+ICsJLnNldF9ldmVudCA9IHJvY2tjaGlw X2RmaV9zZXRfZXZlbnQsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCByb2NrY2hpcF9kZmlfaWRfbWF0Y2hbXSA9IHsKPj4gKwl7IC5jb21wYXRpYmxlID0g InJvY2tjaGlwLHJrMzM5OS1kZmkiIH0sCj4+ICsJeyB9LAo+PiArfTsKPj4gKwo+PiArc3RhdGlj IGludCByb2NrY2hpcF9kZmlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4g K3sKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+PiArCXN0cnVjdCByb2Nr Y2hpcF9kZmkgKmRhdGE7Cj4+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4+ICsJc3RydWN0IGRl dmZyZXFfZXZlbnRfZGVzYyAqZGVzYzsKPj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRl di0+ZGV2Lm9mX25vZGUsICpub2RlOwo+PiArCj4+ICsJZGF0YSA9IGRldm1fa3phbGxvYyhkZXYs IHNpemVvZihzdHJ1Y3Qgcm9ja2NoaXBfZGZpKSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFkYXRh KQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNv dXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4+ICsJZGF0YS0+cmVncyA9IGRldm1faW9y ZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOwo+PiArCWlmIChJU19FUlIoZGF0YS0+cmVn cykpCj4+ICsJCXJldHVybiBQVFJfRVJSKGRhdGEtPnJlZ3MpOwo+PiArCj4+ICsJZGF0YS0+Y2xr ID0gZGV2bV9jbGtfZ2V0KGRldiwgInBjbGtfZGRyX21vbiIpOwo+PiArCWlmIChJU19FUlIoZGF0 YS0+Y2xrKSkgewo+PiArCQlkZXZfZXJyKGRldiwgIkNhbm5vdCBnZXQgdGhlIGNsayBkbWNfY2xr XG4iKTsKPj4gKwkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+Y2xrKTsKPj4gKwl9Owo+PiArCj4+ICsJ LyogdHJ5IHRvIGZpbmQgdGhlIG9wdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUgcG11IHN5c2NvbiAq Lwo+PiArCW5vZGUgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCAicm9ja2NoaXAscG11IiwgMCk7Cj4+ ICsJaWYgKG5vZGUpIHsKPj4gKwkJZGF0YS0+cmVnbWFwX3BtdSA9IHN5c2Nvbl9ub2RlX3RvX3Jl Z21hcChub2RlKTsKPj4gKwkJaWYgKElTX0VSUihkYXRhLT5yZWdtYXBfcG11KSkKPj4gKwkJCXJl dHVybiBQVFJfRVJSKGRhdGEtPnJlZ21hcF9wbXUpOwo+PiArCX0KPj4gKwlkYXRhLT5kZXYgPSBk ZXY7Cj4+ICsKPj4gKwlkZXNjID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkZXNjKSwgR0ZQ X0tFUk5FTCk7Cj4+ICsJaWYgKCFkZXNjKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiAr CWRlc2MtPm9wcyA9ICZyb2NrY2hpcF9kZmlfb3BzOwo+PiArCWRlc2MtPmRyaXZlcl9kYXRhID0g ZGF0YTsKPj4gKwlkZXNjLT5uYW1lID0gbnAtPm5hbWU7Cj4+ICsJZGF0YS0+ZGVzYyA9IGRlc2M7 Cj4+ICsKPj4gKwlkYXRhLT5lZGV2ID0gZGV2bV9kZXZmcmVxX2V2ZW50X2FkZF9lZGV2KCZwZGV2 LT5kZXYsIGRlc2MpOwo+PiArCWlmIChJU19FUlIoZGF0YS0+ZWRldikpIHsKPj4gKwkJZGV2X2Vy cigmcGRldi0+ZGV2LAo+PiArCQkJImZhaWxlZCB0byBhZGQgZGV2ZnJlcS1ldmVudCBkZXZpY2Vc biIpOwo+PiArCQlyZXR1cm4gUFRSX0VSUihkYXRhLT5lZGV2KTsKPj4gKwl9Cj4+ICsKPj4gKwlw bGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkYXRhKTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciByb2NrY2hpcF9kZmlfZHJp dmVyID0gewo+PiArCS5wcm9iZQk9IHJvY2tjaGlwX2RmaV9wcm9iZSwKPj4gKwkuZHJpdmVyID0g ewo+PiArCQkubmFtZQk9ICJyb2NrY2hpcC1kZmkiLAo+PiArCQkub2ZfbWF0Y2hfdGFibGUgPSBy b2NrY2hpcF9kZmlfaWRfbWF0Y2gsCj4+ICsJfSwKPj4gK307Cj4+ICttb2R1bGVfcGxhdGZvcm1f ZHJpdmVyKHJvY2tjaGlwX2RmaV9kcml2ZXIpOwo+PiArCj4+ICtNT0RVTEVfTElDRU5TRSgiR1BM IHYyIik7Cj4+ICtNT0RVTEVfQVVUSE9SKCJMaW4gSHVhbmcgPGhsQHJvY2stY2hpcHMuY29tPiIp Owo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJSb2NrY2hpcCBkZmkgZHJpdmVyIik7CgpzL2RmaSAt PiBERkkKClJlZ2FyZHMsCkNoYW53b28gQ2hvaQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1y b2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK