From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD8C0C04A6B for ; Fri, 10 May 2019 09:24:56 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 973AF2175B for ; Fri, 10 May 2019 09:24:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="QSfdOS9g" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 973AF2175B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5r4AW0EhI8ckEHIi0zCEwxhIlOtdnUtcwBl/cTRnQuk=; b=QSfdOS9ggZedqH 5oCBcLnze/5WD41/QmSa2TzgzrGeKRK36PuuVNWVVy7fvKI18jLLq3Rm6LEI19PJYIVaAQAzJiUf/ mlaZ+GYmqizVBIcsaDwzpoA7xtc0V30bPfy91vQcRKijA0WbZaRp7Byg3PiLbhPjes2YDMEQhqKA8 HvHsMRWXr3aBgGlx3NfLIBa6XodTdCueO679ve+7bznTngWsmbJoek6A68IZI395xarAaKyS6lrgW THwvjscl+jrhVdyPnheD7znBewvbPYgARF3WSEcoZxHJ6u/O4Uc63F0V2v185zUCnq/ClebndTti6 XSJ2s2zToYdEmAZozjJQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hP1lo-0001gF-0v; Fri, 10 May 2019 09:24:48 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hP1li-0001eM-QJ; Fri, 10 May 2019 09:24:44 +0000 X-UUID: 2e257a52f5dc4521a4bf4c3429b43364-20190510 X-UUID: 2e257a52f5dc4521a4bf4c3429b43364-20190510 Received: from mtkcas67.mediatek.inc [(172.29.193.45)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1206881943; Fri, 10 May 2019 01:24:35 -0800 Received: from mtkmbs03n1.mediatek.inc (172.21.101.181) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 10 May 2019 02:24:34 -0700 Received: from mtkcas09.mediatek.inc (172.21.101.178) by mtkmbs03n1.mediatek.inc (172.21.101.181) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 10 May 2019 17:24:32 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Fri, 10 May 2019 17:24:32 +0800 Message-ID: <1557480272.7664.3.camel@mtksdaap41> Subject: Re: [PATCH v2 4/4] devfreq: add mediatek cci devfreq From: andrew-sh.cheng To: Chanwoo Choi Date: Fri, 10 May 2019 17:24:32 +0800 In-Reply-To: References: <1553841972-19737-1-git-send-email-andrew-sh.cheng@mediatek.com> <1553841972-19737-5-git-send-email-andrew-sh.cheng@mediatek.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190510_022442_863737_5F128408 X-CRM114-Status: GOOD ( 31.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, srv_heupstream@mediatek.com, linux-pm@vger.kernel.org, Viresh Kumar , "Rafael J. Wysocki" , linux-kernel@vger.kernel.org, Rob Herring , fan.chen@mediatek.com, Kyungmin Park , MyungJoo Ham , linux-mediatek@lists.infradead.org, Matthias Brugger , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCAyMDE5LTA0LTE2IGF0IDE4OjA1ICswOTAwLCBDaGFud29vIENob2kgd3JvdGU6Cj4g SGkgQW5kcmV3LXNoLkNoZW5nLAo+IAo+IFBsZWFzZSBhZGQgdGhlIGR0LWJpbmRpbmcgZG9jdW1l bnRhdGlvbi4KPiAKPiBPbiAxOS4gMy4gMjkuIOyYpO2bhCAzOjQ2LCBBbmRyZXctc2guQ2hlbmcg d3JvdGU6Cj4gPiBUaGlzIGFkZHMgYSBkZXZmcmVxIGRyaXZlciBmb3IgdGhlIENhY2hlIENvaGVy ZW50IEludGVyY29ubmVjdCAoQ0NJKQo+ID4gb2YgdGhlIE1lZGlhdGVrIE1UODE4My4KPiA+IAo+ ID4gT24gdGhlIE1UODE4MyB0aGUgQ0NJIGlzIHN1cHBsaWVkIGJ5IHRoZSBzYW1lIHJlZ3VsYXRv ciBhcyB0aGUgTElUVExFCj4gPiBjb3Jlcy4gVGhlIGRyaXZlciBpcyBub3RpZmllZCB3aGVuIHRo ZSByZWd1bGF0b3Igdm9sdGFnZSBjaGFuZ2VzCj4gPiAoZHJpdmVuIGJ5IGNwdWZyZXEpIGFuZCBh ZGp1c3RzIHRoZSBDQ0kgZnJlcXVlbmN5IHRvIHRoZSBtYXhpbXVtCj4gPiBwb3NzaWJsZSB2YWx1 ZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogQW5kcmV3LXNoLkNoZW5nIDxhbmRyZXctc2guY2hl bmdAbWVkaWF0ZWsuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9kZXZmcmVxL0tjb25maWcgICAg ICAgICAgICAgIHwgIDEwICsrCj4gPiAgZHJpdmVycy9kZXZmcmVxL01ha2VmaWxlICAgICAgICAg ICAgIHwgICAxICsKPiA+ICBkcml2ZXJzL2RldmZyZXEvbXQ4MTgzLWNjaS1kZXZmcmVxLmMgfCAy MzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICAzIGZpbGVzIGNoYW5n ZWQsIDI0NiBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZGV2 ZnJlcS9tdDgxODMtY2NpLWRldmZyZXEuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9k ZXZmcmVxL0tjb25maWcgYi9kcml2ZXJzL2RldmZyZXEvS2NvbmZpZwo+ID4gaW5kZXggNmExNzJk My4uZGEyZjhlYyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZGV2ZnJlcS9LY29uZmlnCj4gPiAr KysgYi9kcml2ZXJzL2RldmZyZXEvS2NvbmZpZwo+ID4gQEAgLTkxLDYgKzkxLDE2IEBAIGNvbmZp ZyBBUk1fRVhZTk9TX0JVU19ERVZGUkVRCj4gPiAgCSAgYW5kIGFkanVzdHMgdGhlIG9wZXJhdGlu ZyBmcmVxdWVuY2llcyBhbmQgdm9sdGFnZXMgd2l0aCBPUFAgc3VwcG9ydC4KPiA+ICAJICBUaGlz IGRvZXMgbm90IHlldCBvcGVyYXRlIHdpdGggb3B0aW1hbCB2b2x0YWdlcy4KPiA+ICAKPiA+ICtj b25maWcgQVJNX01UODE4M19DQ0lfREVWRlJFUQo+ID4gKwl0cmlzdGF0ZSAiTVQ4MTgzIENDSSBE RVZGUkVRIERyaXZlciIKPiA+ICsJZGVwZW5kcyBvbiBBUk1fTUVESUFURUtfQ1BVRlJFUQo+ID4g KwloZWxwCj4gPiArCQlUaGlzIGFkZHMgYSBkZXZmcmVxIGRyaXZlciBmb3IgQ2FjaGUgQ29oZXJl bnQgSW50ZXJjb25uZWN0Cj4gPiArCQlvZiBNZWRpYXRlayBNVDgxODMsIHdoaWNoIGlzIHNoYXJl ZCB0aGUgc2FtZSByZWd1bGF0b3IKPiA+ICsJCXdpdGggY3B1IGNsdXN0ZXIuCj4gPiArCQlJdCBj YW4gdHJhY2sgYnVjayB2b2x0YWdlIGFuZCB1cGRhdGUgYSBwcm9wZXIgY2NpIGZyZXF1ZW5jeS4K PiA+ICsJCVVzZSBub3RpZmljYXRpb24gdG8gZ2V0IHJlZ3VsYXRvciBzdGF0dXMuCj4gPiArCj4g PiAgY29uZmlnIEFSTV9URUdSQV9ERVZGUkVRCj4gPiAgCXRyaXN0YXRlICJUZWdyYSBERVZGUkVR IERyaXZlciIKPiA+ICAJZGVwZW5kcyBvbiBBUkNIX1RFR1JBXzEyNF9TT0MKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2RldmZyZXEvTWFrZWZpbGUgYi9kcml2ZXJzL2RldmZyZXEvTWFrZWZpbGUK PiA+IGluZGV4IDMyYjhkNGQuLjgxN2RkZTcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2RldmZy ZXEvTWFrZWZpbGUKPiA+ICsrKyBiL2RyaXZlcnMvZGV2ZnJlcS9NYWtlZmlsZQo+ID4gQEAgLTks NiArOSw3IEBAIG9iai0kKENPTkZJR19ERVZGUkVRX0dPVl9QQVNTSVZFKQkrPSBnb3Zlcm5vcl9w YXNzaXZlLm8KPiA+ICAKPiA+ICAjIERFVkZSRVEgRHJpdmVycwo+ID4gIG9iai0kKENPTkZJR19B Uk1fRVhZTk9TX0JVU19ERVZGUkVRKQkrPSBleHlub3MtYnVzLm8KPiA+ICtvYmotJChDT05GSUdf QVJNX01UODE4M19DQ0lfREVWRlJFUSkgICAgKz0gbXQ4MTgzLWNjaS1kZXZmcmVxLm8KPiA+ICBv YmotJChDT05GSUdfQVJNX1JLMzM5OV9ETUNfREVWRlJFUSkJKz0gcmszMzk5X2RtYy5vCj4gPiAg b2JqLSQoQ09ORklHX0FSTV9URUdSQV9ERVZGUkVRKQkJKz0gdGVncmEtZGV2ZnJlcS5vCj4gPiAg Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL210ODE4My1jY2ktZGV2ZnJlcS5jIGIv ZHJpdmVycy9kZXZmcmVxL210ODE4My1jY2ktZGV2ZnJlcS5jCj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+ID4gaW5kZXggMDAwMDAwMC4uYWY4MmQyZQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysr IGIvZHJpdmVycy9kZXZmcmVxL210ODE4My1jY2ktZGV2ZnJlcS5jCj4gPiBAQCAtMCwwICsxLDIz NSBAQAo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gPiArLyoKPiA+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5jLgo+IAo+IFlvdSBjYW4gYWRkIHRo ZSBhdXRob3IgaW5mb3JtYXRpb24gdW5kZXIgY29weXJpZ2h0IGluZm9ybWF0aW9uLgpva34KPiAK PiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gPiArI2luY2x1ZGUg PGxpbnV4L2RldmZyZXEuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiArI2lu Y2x1ZGUgPGxpbnV4L29mLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5o Pgo+ID4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiA+ICsKPiA+ICsj aW5jbHVkZSAiZ292ZXJub3IuaCIKPiA+ICsKPiA+ICtzdHJ1Y3QgY2NpX2RldmZyZXEgewo+ID4g KwlzdHJ1Y3QgZGV2ZnJlcQkJKmRldmZyZXE7Cj4gPiArCXN0cnVjdCByZWd1bGF0b3IJKnByb2Nf cmVnOwo+ID4gKwl1bnNpZ25lZCBsb25nICAgICAgICAgICBwcm9jX3JlZ191VjsKPiA+ICsJc3Ry dWN0IGNsawkJKmNjaV9jbGs7Cj4gPiArCXN0cnVjdCBub3RpZmllcl9ibG9jawluYjsKPiAKPiBK dXN0IHVzZSB0aGUgc3BhY2UgaW5zdGVhZCBvZiB0YWIgYXMgZm9sbG93aW5nOgo+IAo+IAlzdHJ1 Y3QgZGV2ZnJlcSAqZGV2ZnJlcTsKPiAJc3RydWN0IHJlZ3VsYXRvciAqcHJvY19yZWc7Cj4gCXVu c2lnbmVkIGxvbmcgcHJvY19yZWdfdVY7Cj4gCXN0cnVjdCBjbGsgKmNjaV9jbGs7Cj4gCXN0cnVj dCBub3RpZmllcl9ibG9jayBuYjsKPiAKT0ssIEkgd2lsbCBtb2RpZnkgYXQgbmV4dCBwYXRjaC4K PiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgY2NpX2RldmZyZXFfcmVndWxhdG9yX25vdGlm aWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsCj4gPiArCQkJCQkgIHVuc2lnbmVkIGxvbmcg dmFsLCB2b2lkICpkYXRhKQo+ID4gK3sKPiA+ICsJc3RydWN0IGNjaV9kZXZmcmVxICpjY2lfZGYg PQo+ID4gKwkJY29udGFpbmVyX29mKG5iLCBzdHJ1Y3QgY2NpX2RldmZyZXEsIG5iKTsKPiA+ICsK PiA+ICsJLyogZGVhbCB3aXRoIHJlZHVjZSBmcmVxdWVuY3kgKi8KPiA+ICsJaWYgKHZhbCAmIFJF R1VMQVRPUl9FVkVOVF9QUkVfVk9MVEFHRV9DSEFOR0UpIHsKPiA+ICsJCXN0cnVjdCBwcmVfdm9s dGFnZV9jaGFuZ2VfZGF0YSAqcHZjX2RhdGEgPSBkYXRhOwo+ID4gKwo+ID4gKwkJaWYgKHB2Y19k YXRhLT5taW5fdVYgPCBwdmNfZGF0YS0+b2xkX3VWKSB7Cj4gPiArCQkJY2NpX2RmLT5wcm9jX3Jl Z191ViA9Cj4gPiArCQkJCSh1bnNpZ25lZCBsb25nKShwdmNfZGF0YS0+bWluX3VWKTsKPiA+ICsJ CQltdXRleF9sb2NrKCZjY2lfZGYtPmRldmZyZXEtPmxvY2spOwo+ID4gKwkJCXVwZGF0ZV9kZXZm cmVxKGNjaV9kZi0+ZGV2ZnJlcSk7Cj4gCj4gUGxlYXNlIGhhbmRsZSB0aGUgcmV0dXJuIHZhbHVl IG9mIHVwZGF0ZV9kZXZmcmVxKCkgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZy4KT0ssIEkgd2lsbCBt b2RpZnkgYXQgbmV4dCBwYXRjaC4KPiAKPiA+ICsJCQltdXRleF91bmxvY2soJmNjaV9kZi0+ZGV2 ZnJlcS0+bG9jayk7Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWYgKCh2YWwgJiBSRUdV TEFUT1JfRVZFTlRfQUJPUlRfVk9MVEFHRV9DSEFOR0UpICYmCj4gCj4gaWYgLT4gZWxzZSBpZgo+ IAo+IEF0IHRoZSBzYW1lIHRpbWUsIHJlY2VpdmVzIG9ubHkgb25lIG5vdGlmaWNhdGlvbi4KPiBJ dCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSB0d28gaWYgc3RhdGVtZW50IGFsd2F5cywg LgpPSywgSSB3aWxsIG1vZGlmeSBhdCBuZXh0IHBhdGNoLgo+IAo+IAo+ID4gKwkgICAgKCh1bnNp Z25lZCBsb25nKWRhdGEgPiBjY2lfZGYtPnByb2NfcmVnX3VWKSkgewo+ID4gKwkJY2NpX2RmLT5w cm9jX3JlZ191ViA9ICh1bnNpZ25lZCBsb25nKWRhdGE7Cj4gPiArCQltdXRleF9sb2NrKCZjY2lf ZGYtPmRldmZyZXEtPmxvY2spOwo+ID4gKwkJdXBkYXRlX2RldmZyZXEoY2NpX2RmLT5kZXZmcmVx KTsKPiAKPiBkaXR0by4gUGxlYXNlIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgdXBkYXRlX2Rl dmZyZXEuCk9LLCBJIHdpbGwgbW9kaWZ5IGF0IG5leHQgcGF0Y2guCj4gCj4gPiArCQltdXRleF91 bmxvY2soJmNjaV9kZi0+ZGV2ZnJlcS0+bG9jayk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogZGVh bCB3aXRoIGluY3JlYXNlIGZyZXF1ZW5jeSAqLwo+ID4gKwlpZiAoKHZhbCAmIFJFR1VMQVRPUl9F VkVOVF9WT0xUQUdFX0NIQU5HRSkgJiYKPiAKPiBkaXR0by4KPiBpZiAtPiBlbHNlIGlmCj4gCj4g QXQgdGhlIHNhbWUgdGltZSwgcmVjZWl2ZXMgb25seSBvbmUgbm90aWZpY2F0aW9uLgo+IEl0IGlz IG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgdGhlIHR3byBpZiBzdGF0ZW1lbnQgYWx3YXlzLCAuCk9L LCBJIHdpbGwgbW9kaWZ5IGF0IG5leHQgcGF0Y2guCj4gCj4gCj4gPiArCSAgICAoY2NpX2RmLT5w cm9jX3JlZ191ViA8ICh1bnNpZ25lZCBsb25nKWRhdGEpKSB7Cj4gPiArCQljY2lfZGYtPnByb2Nf cmVnX3VWID0gKHVuc2lnbmVkIGxvbmcpZGF0YTsKPiA+ICsJCW11dGV4X2xvY2soJmNjaV9kZi0+ ZGV2ZnJlcS0+bG9jayk7Cj4gPiArCQl1cGRhdGVfZGV2ZnJlcShjY2lfZGYtPmRldmZyZXEpOwo+ IAo+IGRpdHRvLiBQbGVhc2UgY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiB1cGRhdGVfZGV2ZnJl cS4KT0ssIEkgd2lsbCBtb2RpZnkgYXQgbmV4dCBwYXRjaC4KPiAKPiA+ICsJCW11dGV4X3VubG9j aygmY2NpX2RmLT5kZXZmcmVxLT5sb2NrKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gMDsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBtdGtfY2NpX2dvdmVybm9yX2dldF90YXJnZXQo c3RydWN0IGRldmZyZXEgKmRldmZyZXEsCj4gPiArCQkJCSAgICAgICB1bnNpZ25lZCBsb25nICpm cmVxKQo+ID4gK3sKPiA+ICsJc3RydWN0IGNjaV9kZXZmcmVxICpjY2lfZGY7Cj4gPiArCXN0cnVj dCBkZXZfcG1fb3BwICpvcHA7Cj4gPiArCj4gPiArCWNjaV9kZiA9IGRldl9nZXRfZHJ2ZGF0YShk ZXZmcmVxLT5kZXYucGFyZW50KTsKPiA+ICsKPiA+ICsJLyogZmluZCBhdmFpbGFibGUgZnJlcXVl bmN5ICovCj4gPiArCW9wcCA9IGRldl9wbV9vcHBfZmluZF9tYXhfZnJlcV9ieV92b2x0KGRldmZy ZXEtPmRldi5wYXJlbnQsCj4gPiArCQkJCQkJIGNjaV9kZi0+cHJvY19yZWdfdVYpOwo+ID4gKwkq ZnJlcSA9IGRldl9wbV9vcHBfZ2V0X2ZyZXEob3BwKTsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXRrX2NjaV9nb3Zlcm5vcl9ldmVudF9oYW5kbGVy KHN0cnVjdCBkZXZmcmVxICpkZXZmcmVxLAo+ID4gKwkJCQkJICB1bnNpZ25lZCBpbnQgZXZlbnQs IHZvaWQgKmRhdGEpCj4gPiArewo+ID4gKwlzdHJ1Y3QgY2NpX2RldmZyZXEgKmNjaV9kZjsKPiA+ ICsJc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYjsKPiA+ICsKPiA+ICsJY2NpX2RmID0gZGV2X2dl dF9kcnZkYXRhKGRldmZyZXEtPmRldi5wYXJlbnQpOwo+ID4gKwluYiA9ICZjY2lfZGYtPm5iOwo+ ID4gKwo+ID4gKwlzd2l0Y2ggKGV2ZW50KSB7Cj4gPiArCWNhc2UgREVWRlJFUV9HT1ZfU1RBUlQ6 Cj4gPiArCWNhc2UgREVWRlJFUV9HT1ZfUkVTVU1FOgo+ID4gKwkJbmItPm5vdGlmaWVyX2NhbGwg PSBjY2lfZGV2ZnJlcV9yZWd1bGF0b3Jfbm90aWZpZXI7Cj4gPiArCQlyZWd1bGF0b3JfcmVnaXN0 ZXJfbm90aWZpZXIoY2NpX2RmLT5wcm9jX3JlZywKPiA+ICsJCQkJCSAgICBuYik7Cj4gCj4gUGxl YXNlIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgcmVndWxhdG9yX3JlZ2lzdGVyX25vdGlmaWVy Cj4gaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBleGNlcHRpb24gaGFuZGxpbmcuCk9LLCBJIHdpbGwg bW9kaWZ5IGF0IG5leHQgcGF0Y2guCj4gCj4gCj4gPiArCQlicmVhazsKPiA+ICsKPiA+ICsJY2Fz ZSBERVZGUkVRX0dPVl9TVE9QOgo+ID4gKwljYXNlIERFVkZSRVFfR09WX1NVU1BFTkQ6Cj4gPiAr CQlyZWd1bGF0b3JfdW5yZWdpc3Rlcl9ub3RpZmllcihjY2lfZGYtPnByb2NfcmVnLAo+ID4gKwkJ CQkJICAgIG5iKTsKPiAKPiBkaXR0by4KPiAKPiA+ICsKPiAKPiBSZW1vdmUgdW5uZWVkZWQgYmxh bmsgbGluZS4KT0ssIEkgd2lsbCBtb2RpZnkgYXQgbmV4dCBwYXRjaC4KPiAKPiA+ICsJCWJyZWFr Owo+ID4gKwo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJYnJlYWs7Cj4gPiArCX0KPiA+ICsKPiA+ICsJ cmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBzdHJ1Y3QgZGV2ZnJlcV9nb3Zlcm5v ciBtdGtfY2NpX2RldmZyZXFfZ292ZXJub3IgPSB7Cj4gPiArCS5uYW1lID0gIm10a19jY2lfdm1v biIsCj4gCj4gSG93IGFib3V0IGVkaXRpbmcgdGhlIG5hbWUgZnJvbSBtdGtfY2NpX3Ztb24gdG8g bWVkaWF0ZWtfY2NpX3ZvbHRhZ2VfbW9uaXRvcgo+IGZvciB0aGUgcmVhZGFiaWxpdHk/IEFjdHVh bGx5LCAnbXRrJyBhbmQgJ3Ztb24nIGFyZSBub3Qgc3RhbmRhcmQgZXhwcmVzc2lvbi4KVGhlIHNy dGluZyBvZiBuYW1lIGlzIG9ubHkgWzE2XSwgSSdsbCBsZWF2ZSBpdCBhcyBtdGtfY2NpX3Ztb24u Cj4gCj4gPiArCS5nZXRfdGFyZ2V0X2ZyZXEgPSBtdGtfY2NpX2dvdmVybm9yX2dldF90YXJnZXQs Cj4gPiArCS5ldmVudF9oYW5kbGVyID0gbXRrX2NjaV9nb3Zlcm5vcl9ldmVudF9oYW5kbGVyLAo+ IAo+IFBsZWFzZSBhZGQgZm9sbG93aW5nIGNvZGUgdG8gbWFrZSBpdCBhcyB0aGUgaW1tdXRhYmxl Cj4gYmVjYXVzZSB0aGUgZ292ZXJub3IgZm9yIHRoaXMgZHJpdmVyIHdpbGwgbm90IGJlIGNoYW5n ZWQKPiB0aHJvdWdoIHN5c2ZzIGludGVyZmFjZS4KPiAKPiAJLmltbXV0YWJsZSA9IHRydWUKT0ss IEkgd2lsbCBtb2RpZnkgYXQgbmV4dCBwYXRjaC4KPiAKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRp YyBpbnQgbXRrX2NjaV9kZXZmcmVxX3RhcmdldChzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVk IGxvbmcgKmZyZXEsCj4gPiArCQkJCSAgdTMyIGZsYWdzKQo+ID4gK3sKPiA+ICsJc3RydWN0IGNj aV9kZXZmcmVxICpjY2lfZGYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiA+ICsKPiA+ICsJaWYg KCFjY2lfZGYpCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsJY2xrX3NldF9yYXRl KGNjaV9kZi0+Y2NpX2NsaywgKmZyZXEpOwo+IAo+IFBsZWFzZSBjaGVjayB0aGUgcmV0dXJuIHZh bHVlIG9mIGNsa19zZXRfcmF0ZSgpLgpPSywgSSB3aWxsIG1vZGlmeSBhdCBuZXh0IHBhdGNoLgo+ IAo+ID4gKwo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHN0cnVjdCBk ZXZmcmVxX2Rldl9wcm9maWxlIGNjaV9kZXZmcmVxX3Byb2ZpbGUgPSB7Cj4gPiArCS50YXJnZXQJ CT0gbXRrX2NjaV9kZXZmcmVxX3RhcmdldCwKPiAKPiBKdXN0IHVzZSB0aGUgc3BhY2UgaW5zdGVh ZCBvZiB0YWIgYmVjYXVzZSBjY2lfZGV2ZnJlcV9wcm9maWxlCj4gb25seSBoYXMgb25lIHJlY29y ZC4KPiAKPiAJLnRhcmdldCA9IG10a19jY2lfZGV2ZnJlcV90YXJnZXQsCk9LLCBJIHdpbGwgbW9k aWZ5IGF0IG5leHQgcGF0Y2guCj4gCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IG10a19j Y2lfZGV2ZnJlcV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gK3sKPiA+ ICsJc3RydWN0IGRldmljZSAqY2NpX2RldiA9ICZwZGV2LT5kZXY7Cj4gPiArCXN0cnVjdCBjY2lf ZGV2ZnJlcSAqY2NpX2RmOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwljY2lfZGYgPSBkZXZt X2t6YWxsb2MoY2NpX2Rldiwgc2l6ZW9mKCpjY2lfZGYpLCBHRlBfS0VSTkVMKTsKPiA+ICsJaWYg KCFjY2lfZGYpCj4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsJY2NpX2RmLT5jY2lf Y2xrID0gY2xrX2dldChjY2lfZGV2LCAiY2NpX2Nsb2NrIik7Cj4gCj4gY2xrX2dldCAtPiBkZXZt X2Nsa19nZXQoKQpPSywgSSB3aWxsIG1vZGlmeSBhdCBuZXh0IHBhdGNoLgo+IAo+ID4gKwlyZXQg PSBQVFJfRVJSX09SX1pFUk8oY2NpX2RmLT5jY2lfY2xrKTsKPiA+ICsJaWYgKHJldCkgewo+ID4g KwkJaWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQo+ID4gKwkJCWRldl9lcnIoY2NpX2RldiwgImZh aWxlZCB0byBnZXQgY2xvY2sgZm9yIENDSTogJWRcbiIsCj4gPiArCQkJCXJldCk7Cj4gPiArCj4g Cj4gUmVtb3ZlIHVubmVlZGVkIGJsYW5rIGxpbmUuCj4gCj4gPiArCQlyZXR1cm4gcmV0Owo+ID4g Kwl9PiArCj4gPiArCWNjaV9kZi0+cHJvY19yZWcgPSByZWd1bGF0b3JfZ2V0X29wdGlvbmFsKGNj aV9kZXYsICJwcm9jIik7Cj4gCj4gCj4gcmVndWxhdG9yX2dldF9vcHRpb25hbCAtPiBkZXZtX3Jl Z3VsYXRvcl9nZXRfb3B0aW9uYWwKT0ssIEkgd2lsbCBtb2RpZnkgYXQgbmV4dCBwYXRjaC4KPiAK PiA+ICsJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKGNjaV9kZi0+cHJvY19yZWcpOwo+ID4gKwlpZiAo cmV0KSB7Cj4gPiArCQlpZiAocmV0ICE9IC1FUFJPQkVfREVGRVIpCj4gPiArCQkJZGV2X2Vycihj Y2lfZGV2LCAiZmFpbGVkIHRvIGdldCByZWd1bGF0b3IgZm9yIENDSTogJWRcbiIsCj4gPiArCQkJ CXJldCk7Cj4gPiArCj4gCj4gUmVtb3ZlIHVubmVlZGVkIGJsYW5rIGxpbmUuCj4gCj4gPiArCQln b3RvIGVycl9wdXRfY2xrOwo+IAo+IElmIHlvdSB1c2UgZGV2bV9jbGtfZ2V0KCksIGp1c3QgcmV0 dXJuIGluc3RlYWQgb2YgZ290by4KT0ssIEkgd2lsbCByZXdyaXRlIHRoZXNlIGNvZGUuCj4gCj4g PiArCX0KPiA+ICsKPiA+ICsJcmV0ID0gZGV2X3BtX29wcF9vZl9hZGRfdGFibGUoJnBkZXYtPmRl dik7Cj4gPiArCWlmIChyZXQpIHsKPiA+ICsJCWRldl9lcnIoY2NpX2RldiwgIkZhaWwgdG8gaW5p dCBDQ0kgT1BQIHRhYmxlXG4iKTsKPiA+ICsJCWdvdG8gZXJyX3B1dF9yZWc7Cj4gPiArCX0KPiA+ ICsKPiA+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgY2NpX2RmKTsKPiA+ICsKPiA+ICsJ Y2NpX2RmLT5kZXZmcmVxID0gZGV2bV9kZXZmcmVxX2FkZF9kZXZpY2UoY2NpX2RldiwKPiA+ICsJ CQkJCQkgICAgICAgJmNjaV9kZXZmcmVxX3Byb2ZpbGUsCj4gPiArCQkJCQkJICAgICAgICJtdGtf Y2NpX3Ztb24iLAo+ID4gKwkJCQkJCSAgICAgICBOVUxMKTsKPiA+ICsJaWYgKElTX0VSUihjY2lf ZGYtPmRldmZyZXEpKSB7Cj4gPiArCQlkZXZfZXJyKGNjaV9kZXYsICJjYW5ub3QgY3JlYXRlIGNj aSBkZXZmcmVxIGRldmljZVxuIiwgcmV0KTsKPiA+ICsJCWdvdG8gZXJyX3B1dF9yZWc7Cj4gPiAr CX0KPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArCj4gPiArZXJyX3B1dF9yZWc6Cj4gPiArCXJl Z3VsYXRvcl9wdXQoY2NpX2RmLT5wcm9jX3JlZyk7Cj4gPiArZXJyX3B1dF9jbGs6Cj4gPiArCWNs a19wdXQoY2NpX2RmLT5jY2lfY2xrKTsKPiAKPiBJZiB5b3UgdXNlIGRldm1fY2xrX2dldCgpL2Rl dm1fcmVndWxhdG9yX2dldCgpLAo+ICdlcnJfcHV0X3JlZycgYW5kICdlcnJfcHV0X2NsaycgYXJl IHVubmVlZGVkLgpPSywgSSB3aWxsIHJld3JpdGUgdGhlc2UgY29kZS4KPiAKPiA+ICsKPiA+ICsJ cmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgbWVkaWF0ZWtfY2NpX2RldmZyZXFfb2ZfbWF0Y2hbXSA9IHsKPiA+ICsJeyAuY29tcGF0 aWJsZSA9ICJtZWRpYXRlayxtdDgxODMtY2NpIiB9LAo+ID4gKwl7IH0sCj4gPiArfTsKPiA+ICtN T0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZWRpYXRla19jY2lfZGV2ZnJlcV9vZl9tYXRjaCk7Cj4g PiArCj4gPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2NpX2RldmZyZXFfZHJpdmVy ID0gewo+ID4gKwkucHJvYmUJPSBtdGtfY2NpX2RldmZyZXFfcHJvYmUsCj4gPiArCS5kcml2ZXIg PSB7Cj4gPiArCQkubmFtZSA9ICJtZWRpYXRlay1jY2ktZGV2ZnJlcSIsCj4gPiArCQkub2ZfbWF0 Y2hfdGFibGUgPSBtZWRpYXRla19jY2lfZGV2ZnJlcV9vZl9tYXRjaCwKPiA+ICsJfSwKPiA+ICt9 Owo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgX19pbml0IG10a19jY2lfZGV2ZnJlcV9pbml0KHZvaWQp Cj4gPiArewo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlyZXQgPSBkZXZmcmVxX2FkZF9nb3Zl cm5vcigmbXRrX2NjaV9kZXZmcmVxX2dvdmVybm9yKTsKPiA+ICsJaWYgKHJldCkgewo+ID4gKwkJ cHJfZXJyKCIlczogZmFpbGVkIHRvIGFkZCBnb3Zlcm5vcjogJWRcbiIsIF9fZnVuY19fLCByZXQp Owo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXQgPSBwbGF0Zm9ybV9k cml2ZXJfcmVnaXN0ZXIoJmNjaV9kZXZmcmVxX2RyaXZlcik7Cj4gPiArCWlmIChyZXQpCj4gPiAr CQlkZXZmcmVxX3JlbW92ZV9nb3Zlcm5vcigmbXRrX2NjaV9kZXZmcmVxX2dvdmVybm9yKTsKPiA+ ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArbW9kdWxlX2luaXQobXRrX2NjaV9kZXZm cmVxX2luaXQpCj4gPiArCj4gPiArc3RhdGljIHZvaWQgX19leGl0IG10a19jY2lfZGV2ZnJlcV9l eGl0KHZvaWQpCj4gPiArewo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlyZXQgPSBkZXZmcmVx X3JlbW92ZV9nb3Zlcm5vcigmbXRrX2NjaV9kZXZmcmVxX2dvdmVybm9yKTsKPiA+ICsJaWYgKHJl dCkKPiA+ICsJCXByX2VycigiJXM6IGZhaWxlZCB0byByZW1vdmUgZ292ZXJub3I6ICVkXG4iLCBf X2Z1bmNfXywgcmV0KTsKPiA+ICsKPiA+ICsJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmNj aV9kZXZmcmVxX2RyaXZlcik7Cj4gPiArfQo+ID4gK21vZHVsZV9leGl0KG10a19jY2lfZGV2ZnJl cV9leGl0KQo+ID4gKwo+ID4gK01PRFVMRV9ERVNDUklQVElPTigiTWVkaWF0ZWsgQ0NJIGRldmZy ZXEgZHJpdmVyIik7Cj4gPiArTU9EVUxFX0FVVEhPUigiQW5kcmV3LXNoLkNoZW5nIDxhbmRyZXct c2guY2hlbmdAbWVkaWF0ZWsuY29tPiIpOwo+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsK PiA+IAo+IAo+IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1hcm0ta2VybmVsCg==