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=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 8360FC352A4 for ; Thu, 13 Feb 2020 02:46:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4D2982168B for ; Thu, 13 Feb 2020 02:46:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="N7/IgF1Y" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729514AbgBMCqd (ORCPT ); Wed, 12 Feb 2020 21:46:33 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:31969 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1729407AbgBMCqd (ORCPT ); Wed, 12 Feb 2020 21:46:33 -0500 X-UUID: 5ddd09b6593a46a5a6492c0bc0c47fbb-20200213 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=C9+yqsvdFsqFXvESy2lGJ5+DHKFoCfZq+QLRoJgD8rc=; b=N7/IgF1YFkjYNajIuuCTmN3f6wOFVXdBS7aI9LOO0A4vWTpJK3CSU7Oh8vkPLDCGaEGBwiZxdLJFXRdYvK6t77t2zekqrLnUnZTM/XCxkfVZwXMc4saWpD/C7dhkSq0QjW/K/bC/LYdWXmvbq1XA3K/0usmkZNLGuiDEwbXXVA8=; X-UUID: 5ddd09b6593a46a5a6492c0bc0c47fbb-20200213 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 36764733; Thu, 13 Feb 2020 10:46:22 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 13 Feb 2020 10:43:52 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 13 Feb 2020 10:45:11 +0800 Message-ID: <1581561975.19424.13.camel@mtksdaap41> Subject: Re: [PATCH v11 06/10] soc: mediatek: Add subsys clock control for bus protection From: Weiyi Lu To: Matthias Brugger CC: Rob Herring , Nicolas Boichat , , James Liao , , Fan Chen , , Sascha Hauer , Date: Thu, 13 Feb 2020 10:46:15 +0800 In-Reply-To: References: <1576813564-23927-1-git-send-email-weiyi.lu@mediatek.com> <1576813564-23927-7-git-send-email-weiyi.lu@mediatek.com> <1581476141.22901.34.camel@mtksdaap41> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 3DDF97B86FF812B1846294D7FBABACC30917C03E4D2CC14B5A4F10AAB4F50F512000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIwLTAyLTEyIGF0IDEyOjAyICswMTAwLCBNYXR0aGlhcyBCcnVnZ2VyIHdyb3Rl Og0KPiANCj4gT24gMTIvMDIvMjAyMCAwMzo1NSwgV2VpeWkgTHUgd3JvdGU6DQo+ID4gT24gVHVl LCAyMDIwLTAyLTExIGF0IDE4OjU0ICswMTAwLCBNYXR0aGlhcyBCcnVnZ2VyIHdyb3RlOg0KPiA+ Pg0KPiA+PiBPbiAyMC8xMi8yMDE5IDA0OjQ2LCBXZWl5aSBMdSB3cm90ZToNCj4gPj4+IEFkZCBz dWJzeXMgQ0cgY29udHJvbCBmbG93IGJlZm9yZS9hZnRlciB0aGUgYnVzIHByb3RlY3QgY29udHJv bA0KPiA+Pj4gZHVlIHRvIGJ1cyBwcm90ZWN0aW9uIG5lZWQgU01JIGJ1cyByZWxhdGl2ZSBDR3Mg ZW5hYmxlZCB0byBmZWVkYmFjaw0KPiA+Pj4gaXRzIGFjay4NCj4gPj4+DQo+ID4+DQo+ID4+IFNv cnJ5LCBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIGNvbW1pdCBtZXNzYWdlLiBDYW4geW91IHBsZWFz ZSByZXBocmFzZSBhbmQNCj4gPj4gZXhwbGFpbiBiZXR0ZXIgd2hhdCB0aGlzIGNoYW5nZSBpcyBm b3IuDQo+ID4+DQo+ID4gDQo+ID4gT0shIEknbGwgcmV3b3JkIGl0Lg0KPiA+IA0KPiA+Pj4gU2ln bmVkLW9mZi1ieTogV2VpeWkgTHUgPHdlaXlpLmx1QG1lZGlhdGVrLmNvbT4NCj4gPj4+IFJldmll d2VkLWJ5OiBOaWNvbGFzIEJvaWNoYXQgPGRyaW5rY2F0QGNocm9taXVtLm9yZz4NCj4gPj4+IC0t LQ0KPiA+Pj4gIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1zY3BzeXMuYyB8IDcyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPiA+Pj4gIDEgZmlsZSBjaGFuZ2VkLCA3 MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstc2Nwc3lzLmMgYi9kcml2ZXJzL3NvYy9tZWRpYXRl ay9tdGstc2Nwc3lzLmMNCj4gPj4+IGluZGV4IDc2M2NhNTguLjMyYmU0YjMgMTAwNjQ0DQo+ID4+ PiAtLS0gYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstc2Nwc3lzLmMNCj4gPj4+ICsrKyBiL2Ry aXZlcnMvc29jL21lZGlhdGVrL210ay1zY3BzeXMuYw0KPiA+Pj4gQEAgLTc5LDYgKzc5LDcgQEAN Cj4gPj4+ICAjZGVmaW5lIFBXUl9TVEFUVVNfV0IJCQlCSVQoMjcpCS8qIE1UNzYyMiAqLw0KPiA+ Pj4gIA0KPiA+Pj4gICNkZWZpbmUgTUFYX0NMS1MJMw0KPiA+Pj4gKyNkZWZpbmUgTUFYX1NVQlNZ U19DTEtTIDEwDQo+ID4+PiAgDQo+ID4+PiAgLyoqDQo+ID4+PiAgICogc3RydWN0IHNjcF9kb21h aW5fZGF0YSAtIHNjcCBkb21haW4gZGF0YSBmb3IgcG93ZXIgb24vb2ZmIGZsb3cNCj4gPj4+IEBA IC04OCw2ICs4OSw4IEBADQo+ID4+PiAgICogQHNyYW1fcGRuX2JpdHM6IFRoZSBtYXNrIGZvciBz cmFtIHBvd2VyIGNvbnRyb2wgYml0cy4NCj4gPj4+ICAgKiBAc3JhbV9wZG5fYWNrX2JpdHM6IFRo ZSBtYXNrIGZvciBzcmFtIHBvd2VyIGNvbnRyb2wgYWNrZWQgYml0cy4NCj4gPj4+ICAgKiBAYmFz aWNfY2xrX25hbWU6IFRoZSBiYXNpYyBjbG9ja3MgcmVxdWlyZWQgYnkgdGhpcyBwb3dlciBkb21h aW4uDQo+ID4+PiArICogQHN1YnN5c19jbGtfcHJlZml4OiBUaGUgcHJlZml4IG5hbWUgb2YgdGhl IGNsb2NrcyBuZWVkIHRvIGJlIGVuYWJsZWQNCj4gPj4+ICsgKiAgICAgICAgICAgICAgICAgICAg IGJlZm9yZSByZWxlYXNpbmcgYnVzIHByb3RlY3Rpb24uDQo+ID4+PiAgICogQGNhcHM6IFRoZSBm bGFnIGZvciBhY3RpdmUgd2FrZS11cCBhY3Rpb24uDQo+ID4+PiAgICogQGJwX3RhYmxlOiBUaGUg bWFzayB0YWJsZSBmb3IgbXVsdGlwbGUgc3RlcCBidXMgcHJvdGVjdGlvbi4NCj4gPj4+ICAgKi8N Cj4gPj4+IEBAIC05OCw2ICsxMDEsNyBAQCBzdHJ1Y3Qgc2NwX2RvbWFpbl9kYXRhIHsNCj4gPj4+ ICAJdTMyIHNyYW1fcGRuX2JpdHM7DQo+ID4+PiAgCXUzMiBzcmFtX3Bkbl9hY2tfYml0czsNCj4g Pj4+ICAJY29uc3QgY2hhciAqYmFzaWNfY2xrX25hbWVbTUFYX0NMS1NdOw0KPiA+Pj4gKwljb25z dCBjaGFyICpzdWJzeXNfY2xrX3ByZWZpeDsNCj4gPj4+ICAJdTggY2FwczsNCj4gPj4+ICAJc3Ry dWN0IGJ1c19wcm90IGJwX3RhYmxlW01BWF9TVEVQU107DQo+ID4+PiAgfTsNCj4gPj4+IEBAIC0x MDgsNiArMTEyLDcgQEAgc3RydWN0IHNjcF9kb21haW4gew0KPiA+Pj4gIAlzdHJ1Y3QgZ2VuZXJp Y19wbV9kb21haW4gZ2VucGQ7DQo+ID4+PiAgCXN0cnVjdCBzY3AgKnNjcDsNCj4gPj4+ICAJc3Ry dWN0IGNsayAqY2xrW01BWF9DTEtTXTsNCj4gPj4+ICsJc3RydWN0IGNsayAqc3Vic3lzX2Nsa1tN QVhfU1VCU1lTX0NMS1NdOw0KPiA+Pj4gIAljb25zdCBzdHJ1Y3Qgc2NwX2RvbWFpbl9kYXRhICpk YXRhOw0KPiA+Pj4gIAlzdHJ1Y3QgcmVndWxhdG9yICpzdXBwbHk7DQo+ID4+PiAgfTsNCj4gPj4+ IEBAIC0zMDEsMTYgKzMwNiwyMiBAQCBzdGF0aWMgaW50IHNjcHN5c19wb3dlcl9vbihzdHJ1Y3Qg Z2VuZXJpY19wbV9kb21haW4gKmdlbnBkKQ0KPiA+Pj4gIAl2YWwgfD0gUFdSX1JTVF9CX0JJVDsN Cj4gPj4+ICAJd3JpdGVsKHZhbCwgY3RsX2FkZHIpOw0KPiA+Pj4gIA0KPiA+Pj4gLQlyZXQgPSBz Y3BzeXNfc3JhbV9lbmFibGUoc2NwZCwgY3RsX2FkZHIpOw0KPiA+Pj4gKwlyZXQgPSBzY3BzeXNf Y2xrX2VuYWJsZShzY3BkLT5zdWJzeXNfY2xrLCBNQVhfU1VCU1lTX0NMS1MpOw0KPiA+Pg0KPiA+ PiBXaHkgY2FuJ3Qgd2UgZW5hYmxlIHRoZSBzdWJzeXN0ZW0gY2xvY2tzIHRvZ2V0aGVyIHdpdGgg dGhlIHJlc3QganVzdCBhZnRlcg0KPiA+PiBlbmFiZWxpbmcgdGhlIHJlZ3VsYXRvcj8NCj4gPj4N Cj4gPiANCj4gPiBTdWJzeXMgQ0cgY291bGQgb25seSBiZSBlbmFibGVkIHdoZW4gaXRzIG93biBw b3dlciBkb21haW4gaXMgYWxyZWFkeQ0KPiA+IHR1cm5lZCBPTiwgYW5kIHZpY2UgdmVyc2EuDQo+ ID4gSW4gdGhlIGR0LWJpbmRpbmcgZG9jIHdlIG1lbnRpb25lZCB0aGVyZSB3b3VsZCBoYXZlIHR3 byBncm91cHMgb2YNCj4gPiBjbG9ja3MuDQo+ID4gZS5nLiwNCj4gPiBCQVNJQyBjbG9ja3MgbmVl ZCB0byBiZSBlbmFibGVkIGJlZm9yZSBlbmFibGluZyB0aGUgY29ycmVzcG9uZGluZyBwb3dlcg0K PiA+IGRvbWFpbi4NCj4gPiBTVUJTWVMgY2xvY2tzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUg cmVsZWFzaW5nIHRoZSBidXMgcHJvdGVjdGlvbi4NCj4gPiANCj4gDQo+IERvIEkgdW5kZXJzdGFu ZCBjb3JyZWN0bHkgdGhhdCB3ZSBjb3VsZCBlbmFibGUvZGlzYWJsZSBhbGwgY2xvY2tzIGluIHRo ZSBzYW1lDQo+IHBsYWNlIGFzIGxvbmcgYXMgd2UgbWFrZSBzdXJlIHRoYXQgdGhlIHRoZSBiYXNp YyBjbG9ja3MgYXJlIHR1cm5lZCBvbiBiZWZvcmUgd2UNCj4gdHVybiBvbiB0aGUgc3Vic3lzIGNs b2NrcywgY29ycmVjdD8NCj4gDQoNCnNpbXBseSwgeWVzDQoNCj4gU28gd2h5IGRvIHdlIG5lZWQg dG8gaW1wbGVtZW50IHRoaXMgbG9naWMgaW4gdGhlIHBvd2VyLWNvbnRyb2xsZXIgZHJpdmVyPw0K PiBTaG91bGRuJ3QgdGhhdCBiZSBwYXJ0IG9mIHRoZSBjb21tb24gY2xvY2sgZHJpdmVyPw0KPiAN Cg0Kd2UgaW1wbGVtZW50IHRoZSBzdWJzeXMgY2xvY2sgbG9naWMgaGVyZSBqdXN0IGR1ZSB0byB3 ZSBhbHJlYWR5DQppbXBsZW1lbnQgdGhlIGJ1cyBwcm90ZWN0aW9uIGZsb3cgaW4gdGhlIHBvd2Vy LWNvbnRyb2xsZXIgZHJpdmVyLg0KQW5kIElmIHdlIGRvbid0IGVuYWJsZSB0aGUgc3Vic3lzIGNs b2NrcywgYnVzIHByb3RlY3Rpb24gY2Fubm90IHdvcmsuDQpIZW5jZSwgZXZlbiB0aGUgc3Vic3lz IHBvd2VyIGlzIG9uIGJ1dCB0aGUgSFcgbW9kdWxlcyB1bmRlciB0aGlzIHN1YnN5cw0KcG93ZXIg Y2Fubm90IGFjY2VzcyB0aGUgYnVzIHRob3VnaC4NCg0KPiBSZWdhcmRzLA0KPiBNYXR0aGlhcw0K PiANCj4gPj4+ICAJaWYgKHJldCA8IDApDQo+ID4+PiAgCQlnb3RvIGVycl9wd3JfYWNrOw0KPiA+ Pj4gIA0KPiA+Pj4gKwlyZXQgPSBzY3BzeXNfc3JhbV9lbmFibGUoc2NwZCwgY3RsX2FkZHIpOw0K PiA+Pj4gKwlpZiAocmV0IDwgMCkNCj4gPj4+ICsJCWdvdG8gZXJyX3NyYW07DQo+ID4+PiArDQo+ ID4+PiAgCXJldCA9IHNjcHN5c19idXNfcHJvdGVjdF9kaXNhYmxlKHNjcGQpOw0KPiA+Pj4gIAlp ZiAocmV0IDwgMCkNCj4gPj4+IC0JCWdvdG8gZXJyX3B3cl9hY2s7DQo+ID4+PiArCQlnb3RvIGVy cl9zcmFtOw0KPiA+Pj4gIA0KPiA+Pj4gIAlyZXR1cm4gMDsNCj4gPj4+ICANCj4gPj4+ICtlcnJf c3JhbToNCj4gPj4+ICsJc2Nwc3lzX2Nsa19kaXNhYmxlKHNjcGQtPnN1YnN5c19jbGssIE1BWF9T VUJTWVNfQ0xLUyk7DQo+ID4+PiAgZXJyX3B3cl9hY2s6DQo+ID4+PiAgCXNjcHN5c19jbGtfZGlz YWJsZShzY3BkLT5jbGssIE1BWF9DTEtTKTsNCj4gPj4+ICBlcnJfY2xrOg0KPiA+Pj4gQEAgLTMz Nyw2ICszNDgsOCBAQCBzdGF0aWMgaW50IHNjcHN5c19wb3dlcl9vZmYoc3RydWN0IGdlbmVyaWNf cG1fZG9tYWluICpnZW5wZCkNCj4gPj4+ICAJaWYgKHJldCA8IDApDQo+ID4+PiAgCQlnb3RvIG91 dDsNCj4gPj4+ICANCj4gPj4+ICsJc2Nwc3lzX2Nsa19kaXNhYmxlKHNjcGQtPnN1YnN5c19jbGss IE1BWF9TVUJTWVNfQ0xLUyk7DQo+ID4+PiArDQo+ID4+DQo+ID4+IFNhbWUgaGVyZSwgd2h5IGNh bid0IHdlIGRpc2FibGUgdGhlIGNsb2NrcyBpbiB0aGUgc2Nwc3lzX2Nsa19kaXNhYmxlIGNhbGw/ DQo+ID4+DQo+ID4+PiAgCS8qIHN1YnN5cyBwb3dlciBvZmYgKi8NCj4gPj4+ICAJdmFsID0gcmVh ZGwoY3RsX2FkZHIpOw0KPiA+Pj4gIAl2YWwgfD0gUFdSX0lTT19CSVQ7DQo+ID4+PiBAQCAtMzc0 LDYgKzM4Nyw0OCBAQCBzdGF0aWMgaW50IHNjcHN5c19wb3dlcl9vZmYoc3RydWN0IGdlbmVyaWNf cG1fZG9tYWluICpnZW5wZCkNCj4gPj4+ICAJcmV0dXJuIHJldDsNCj4gPj4+ICB9DQo+ID4+PiAg DQo+ID4+PiArc3RhdGljIGludCBpbml0X3N1YnN5c19jbGtzKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsDQo+ID4+PiArCQljb25zdCBjaGFyICpwcmVmaXgsIHN0cnVjdCBjbGsgKipjbGsp DQo+ID4+PiArew0KPiA+Pj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBwZGV2LT5kZXYu b2Zfbm9kZTsNCj4gPj4+ICsJdTMyIHByZWZpeF9sZW4sIHN1Yl9jbGtfY250ID0gMDsNCj4gPj4+ ICsJc3RydWN0IHByb3BlcnR5ICpwcm9wOw0KPiA+Pj4gKwljb25zdCBjaGFyICpjbGtfbmFtZTsN Cj4gPj4+ICsNCj4gPj4+ICsJaWYgKCFub2RlKSB7DQo+ID4+PiArCQlkZXZfZXJyKCZwZGV2LT5k ZXYsICJDYW5ub3QgZmluZCBzY3BzeXMgbm9kZTogJWxkXG4iLA0KPiA+Pj4gKwkJCVBUUl9FUlIo bm9kZSkpOw0KPiA+Pj4gKwkJcmV0dXJuIFBUUl9FUlIobm9kZSk7DQo+ID4+PiArCX0NCj4gPj4+ ICsNCj4gPj4+ICsJcHJlZml4X2xlbiA9IHN0cmxlbihwcmVmaXgpOw0KPiA+Pj4gKw0KPiA+Pj4g KwlvZl9wcm9wZXJ0eV9mb3JfZWFjaF9zdHJpbmcobm9kZSwgImNsb2NrLW5hbWVzIiwgcHJvcCwg Y2xrX25hbWUpIHsNCj4gPj4+ICsJCWlmICghc3RybmNtcChjbGtfbmFtZSwgcHJlZml4LCBwcmVm aXhfbGVuKSAmJg0KPiA+Pj4gKwkJCQkoY2xrX25hbWVbcHJlZml4X2xlbl0gPT0gJy0nKSkgew0K PiA+Pj4gKwkJCWlmIChzdWJfY2xrX2NudCA+PSBNQVhfU1VCU1lTX0NMS1MpIHsNCj4gPj4+ICsJ CQkJZGV2X2VycigmcGRldi0+ZGV2LA0KPiA+Pj4gKwkJCQkJInN1YnN5cyBjbGsgb3V0IG9mIHJh bmdlICVkXG4iLA0KPiA+Pj4gKwkJCQkJc3ViX2Nsa19jbnQpOw0KPiA+Pj4gKwkJCQlyZXR1cm4g LUVOT01FTTsNCj4gPj4NCj4gPj4gRUlOVkFMIG1heWJlLCBFTk9NRU0gc2VlbXMgd3JvbmcgaGVy ZS4NCj4gPj4NCj4gPiANCj4gPiBPSywgSSdsbCBmaXggd2l0aCBjb3JyZWN0IGVycm9yLg0KPiA+ IA0KPiA+Pj4gKwkJCX0NCj4gPj4+ICsNCj4gPj4+ICsJCQljbGtbc3ViX2Nsa19jbnRdID0gZGV2 bV9jbGtfZ2V0KCZwZGV2LT5kZXYsDQo+ID4+PiArCQkJCQkJY2xrX25hbWUpOw0KPiA+Pg0KPiA+ PiBIZXJlIHdlIGdldCBoaXQgYnkgdGhlIGJhZCBkZXNpZ24gb2YgdGhpcyBkcml2ZXIgaW4gdGhl IGZpcnN0IHBsYWNlLiBBcyB3ZSBuZWVkDQo+ID4+IHRoZSBzdWJzeXN0ZW0tbmFtZSAoZWcgbW0t MCwgbW0tMSkgdG8gZ3JvdXAgY2xvY2tzIHRvIG9uZSBzY3BfZG9tYWluLg0KPiA+PiBJIHRoaW5r IHdlIHNob3VsZCBiZXR0ZXIgdHJ5IHRvIG1vZGVsIHRoZSBkb21haW5zIGFuZCBzdWJkb21haW5z IGluIERUUyBhbmQgYWRkDQo+ID4+IHRoZWlyIGNsb2NrcyB0byBpdC4gVGhpcyB3YXkgd2UgY2Fu IGFsc28gZ2V0IHJpZCBvZiB0aGUgc2NwX3N1YmRvbWFpbiB3aGljaCBjYW4NCj4gPj4gaGl0IGl0 J3MgbGltaXQgYW55dGltZSBzb29uIHdoZW4gd2UgaGF2ZSBhIGNoaXAgd2l0aCBhIHN1Yi1zdWJk b21haW4uDQo+ID4+IFRoYXQgd2lsbCBuZWVkIGEgbmV3IGRyaXZlciwgYnV0IGFzIGl0IHNlZW1z IHRoZSBtdDgxODMgYW5kIHRoZSBtdDY3NjUgaGF2ZSBhDQo+ID4+IG1vcmUgY29tcGxleCBkZXNp Z24gSSB0aGluayBpdCBpcyB3b3J0aCBpdC4NCj4gPj4NCj4gPj4gVGhhdCBzYWlkLCBnaXZlbiB0 aGF0IHlvdSBhcmUgaW4gdjExIGFscmVhZHkgSSB1bmRlcnN0YW5kIHRoYXQgeW91ciBtb3RpdmF0 aW9uDQo+ID4+IHRvIHN0YXJ0IG92ZXIgaXNuJ3QgdGhlIGJpZ2dlc3QuIFRoZSBwcm9ibGVtIGlz LCBhbnkgbmV3IGRyaXZlciB3aWxsIGhhdmUgbmV3DQo+ID4+IGJpbmRpbmdzIGFuZCB3b24ndCB3 b3JrIHdpdGggb2xkZXIgRFRTLiBTbyBhZGRpbmcgYSBsb3Qgb2Ygc3R1ZmYgb24gdG9wIG9mIGEg bm90DQo+ID4+IHJlYWxseSBuaWNlIGRyaXZlciBpc24ndCBzb21ldGhpbmcgSSdtIHZlcnkga2Vl biBvbi4gT24gdGhlIG90aGVyIGhhbmQgeW91DQo+ID4+IGFscmVhZHkgcHV0IGEgbG90IG9mIHdv cmsgaW50byB0aGlzIHNvbHV0aW9uLg0KPiA+Pg0KPiA+PiBNeSBwcm9wb3NhbCwgSSdsbCB0cnkg dG8gYmFrZSB1cCBhIG5ldyBkcml2ZXIgdGhpcyB3ZWVrLiBJZiBJIGZhaWwgdG8gZGVsaXZlciwN Cj4gPj4gaXQncyB1cCB0byB5b3UgdG8gZGVjaWRlIGlmIHlvdSB3YW50IHRvIGdvIG9uIHdpdGgg dGhlIGFwcHJvYWNoIGluIHRoaXMgc2VyaWVzDQo+ID4+IG9yIHRyeSB0byB3b3JrIG9uIHRoZSBu ZXcgb25lLg0KPiA+IA0KPiA+PiBSZWdhcmRzLA0KPiA+PiBNYXR0aGlhcw0KPiA+Pg0KPiA+IA0K PiA+IFRoYW5rcyBmb3IgY29uc2lkZXJpbmcgb3VyIHJlcXVlc3QuDQo+ID4gDQo+ID4+PiArDQo+ ID4+PiArCQkJaWYgKElTX0VSUihjbGtbc3ViX2Nsa19jbnRdKSkgew0KPiA+Pj4gKwkJCQlkZXZf ZXJyKCZwZGV2LT5kZXYsDQo+ID4+PiArCQkJCQkiU3Vic3lzIGNsayBnZXQgZmFpbCAlbGRcbiIs DQo+ID4+PiArCQkJCQlQVFJfRVJSKGNsa1tzdWJfY2xrX2NudF0pKTsNCj4gPj4+ICsJCQkJcmV0 dXJuIFBUUl9FUlIoY2xrW3N1Yl9jbGtfY250XSk7DQo+ID4+PiArCQkJfQ0KPiA+Pj4gKwkJCXN1 Yl9jbGtfY250Kys7DQo+ID4+PiArCQl9DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICsJcmV0 dXJuIHN1Yl9jbGtfY250Ow0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICBzdGF0aWMgaW50IGlu aXRfYmFzaWNfY2xrcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoq Y2xrLA0KPiA+Pj4gIAkJCWNvbnN0IGNoYXIgKiBjb25zdCAqbmFtZSkNCj4gPj4+ICB7DQo+ID4+ PiBAQCAtNDY2LDYgKzUyMSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NwICppbml0X3NjcChzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiA+Pj4gIAkJc3RydWN0IHNjcF9kb21haW4gKnNjcGQg PSAmc2NwLT5kb21haW5zW2ldOw0KPiA+Pj4gIAkJc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpn ZW5wZCA9ICZzY3BkLT5nZW5wZDsNCj4gPj4+ICAJCWNvbnN0IHN0cnVjdCBzY3BfZG9tYWluX2Rh dGEgKmRhdGEgPSAmc2NwX2RvbWFpbl9kYXRhW2ldOw0KPiA+Pj4gKwkJaW50IGNsa19jbnQ7DQo+ ID4+DQo+ID4+IGNsa19jbnQgc291bmRzIHRvIG1lIGxpa2UgY2xvY2sgY291bnQsIGJ1dCB0aGUg dmFyaWFibGUgYWN0dWFsbHkgaXMgb25seSB1c2VkIHRvDQo+ID4+IGNoZWNrIHRoZSByZXR1cm4g dmFsdWUgb2YgaW5pdF9zdWJzeXNfY2xrcy4gUGxlYXNlIHJlbmFtZSBpdCB0byByZXQgb3Igc29t ZXRoaW5nDQo+ID4+IGxpa2UgdGhpcy4NCj4gPj4NCj4gPiANCj4gPiBPSywgSSdsbCBmaXggaXQu DQo+ID4gDQo+ID4+PiAgDQo+ID4+PiAgCQlwZF9kYXRhLT5kb21haW5zW2ldID0gZ2VucGQ7DQo+ ID4+PiAgCQlzY3BkLT5zY3AgPSBzY3A7DQo+ID4+PiBAQCAtNDc2LDYgKzUzMiwxOCBAQCBzdGF0 aWMgc3RydWN0IHNjcCAqaW5pdF9zY3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwNCj4g Pj4+ICAJCWlmIChyZXQpDQo+ID4+PiAgCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4gPj4+ICAN Cj4gPj4+ICsJCWlmIChkYXRhLT5zdWJzeXNfY2xrX3ByZWZpeCkgew0KPiA+Pj4gKwkJCWNsa19j bnQgPSBpbml0X3N1YnN5c19jbGtzKHBkZXYsDQo+ID4+PiArCQkJCQlkYXRhLT5zdWJzeXNfY2xr X3ByZWZpeCwNCj4gPj4+ICsJCQkJCXNjcGQtPnN1YnN5c19jbGspOw0KPiA+Pj4gKwkJCWlmIChj bGtfY250IDwgMCkgew0KPiA+Pj4gKwkJCQlkZXZfZXJyKCZwZGV2LT5kZXYsDQo+ID4+PiArCQkJ CQkiJXM6IHN1YnN5cyBjbGsgdW5hdmFpbGFibGVcbiIsDQo+ID4+PiArCQkJCQlkYXRhLT5uYW1l KTsNCj4gPj4+ICsJCQkJcmV0dXJuIEVSUl9QVFIoY2xrX2NudCk7DQo+ID4+PiArCQkJfQ0KPiA+ Pj4gKwkJfQ0KPiA+Pj4gKw0KPiA+Pj4gIAkJZ2VucGQtPm5hbWUgPSBkYXRhLT5uYW1lOw0KPiA+ Pj4gIAkJZ2VucGQtPnBvd2VyX29mZiA9IHNjcHN5c19wb3dlcl9vZmY7DQo+ID4+PiAgCQlnZW5w ZC0+cG93ZXJfb24gPSBzY3BzeXNfcG93ZXJfb247DQo+ID4+Pg0KPiA+IA0KPiANCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gTGludXgtbWVkaWF0 ZWsgbWFpbGluZyBsaXN0DQo+IExpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcNCj4g aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tZWRpYXRl aw0KDQo=