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 Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B7826C433EF for ; Fri, 3 Dec 2021 10:06:52 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 9660B80F6E; Fri, 3 Dec 2021 11:06:50 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=mediatek.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=mediatek.com header.i=@mediatek.com header.b="il+NFWDw"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 89593811AC; Fri, 3 Dec 2021 11:06:48 +0100 (CET) Received: from mailgw01.mediatek.com (unknown [60.244.123.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 8E3B8805F9 for ; Fri, 3 Dec 2021 11:06:39 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=mediatek.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=weijie.gao@mediatek.com X-UUID: f9ba40f9ecbb42c084b710ab7ae73ae3-20211203 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=RRdPFL567rHICzS74x/iNe92RwIfIKciMFDwk99tthg=; b=il+NFWDwkWRrhpqpScvB9SXSNnJzfUMVkKhYZp9+rMA+U0SsrEc/rRKdJvOyf0maY+ihgRCDrD8wg1OZ2nWjc/gI5SQXH1cOHVDaJGMN5HxKGnWv7ApV+YXPb4cuEb5xmPhfadZqIz056q8ZkXYMsmBI80mddRXufrK08R8homQ=; X-UUID: f9ba40f9ecbb42c084b710ab7ae73ae3-20211203 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 191118558; Fri, 03 Dec 2021 18:06:32 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 3 Dec 2021 18:06:10 +0800 Received: from mcddlt001.gcn.mediatek.inc (10.19.240.15) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 3 Dec 2021 18:06:09 +0800 Message-ID: <0a795ee34bbeb7d8e58cf8f60c35d5048f9bda95.camel@mediatek.com> Subject: Re: [PATCH v2 03/14] clk: mtmips: add clock driver for MediaTek MT7621 SoC From: Weijie Gao To: Sean Anderson , CC: GSS_MTK_Uboot_upstream , "Lukasz Majewski" Date: Fri, 3 Dec 2021 18:06:09 +0800 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.1-2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.38 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean T24gRnJpLCAyMDIxLTExLTI2IGF0IDEyOjQ0IC0wNTAwLCBTZWFuIEFuZGVyc29uIHdyb3RlOg0K PiBPbiAxMS8xOC8yMSA4OjM1IFBNLCBXZWlqaWUgR2FvIHdyb3RlOg0KPiA+IFRoaXMgcGF0Y2gg YWRkcyBhIGNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ3NjIxIFNvQy4NCj4gPiBUaGlzIGRy aXZlciBwcm92aWRlcyBjbG9jayBnYXRlIGNvbnRyb2wgYXMgd2VsbCBhcyBnZXR0aW5nIGNsb2Nr DQo+ID4gZnJlcXVlbmN5DQo+ID4gZm9yIENQVS9TWVMvWFRBTCBhbmQgc29tZSBwZXJpcGhlcmFs cy4NCj4gPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBXZWlqaWUgR2FvIDx3ZWlqaWUuZ2FvQG1lZGlh dGVrLmNvbT4NCj4gPiAtLS0NCj4gPiB2MiBjaGFuZ2VzOiBub25lDQo+ID4gLS0tDQo+ID4gICBk cml2ZXJzL2Nsay9tdG1pcHMvTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArDQo+ID4gICBkcml2 ZXJzL2Nsay9tdG1pcHMvY2xrLW10NzYyMS5jICAgICAgICB8IDI2MA0KPiA+ICsrKysrKysrKysr KysrKysrKysrKysrKysNCj4gPiAgIGluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svbXQ3NjIxLWNs ay5oIHwgIDQyICsrKysNCj4gPiAgIDMgZmlsZXMgY2hhbmdlZCwgMzAzIGluc2VydGlvbnMoKykN Cj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsay9tdG1pcHMvY2xrLW10NzYyMS5j DQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9tdDc2 MjEtY2xrLmgNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbXRtaXBzL01ha2Vm aWxlDQo+ID4gYi9kcml2ZXJzL2Nsay9tdG1pcHMvTWFrZWZpbGUNCj4gPiBpbmRleCA3MzJlN2Yy NTQ1Li5lZThiNWFmZTg3IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvY2xrL210bWlwcy9NYWtl ZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvY2xrL210bWlwcy9NYWtlZmlsZQ0KPiA+IEBAIC0xLDQg KzEsNSBAQA0KPiA+ICAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICAg DQo+ID4gICBvYmotJChDT05GSUdfU09DX01UNzYyMCkgKz0gY2xrLW10NzYyMC5vDQo+ID4gK29i ai0kKENPTkZJR19TT0NfTVQ3NjIxKSArPSBjbGstbXQ3NjIxLm8NCj4gPiAgIG9iai0kKENPTkZJ R19TT0NfTVQ3NjI4KSArPSBjbGstbXQ3NjI4Lm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9j bGsvbXRtaXBzL2Nsay1tdDc2MjEuYw0KPiA+IGIvZHJpdmVycy9jbGsvbXRtaXBzL2Nsay1tdDc2 MjEuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMzc5 OWQxODA2YQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2Nsay9tdG1pcHMv Y2xrLW10NzYyMS5jDQo+ID4gQEAgLTAsMCArMSwyNjAgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyoNCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDIx IE1lZGlhVGVrIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCj4gPiArICoNCj4gPiArICogQXV0 aG9yOiBXZWlqaWUgR2FvIDx3ZWlqaWUuZ2FvQG1lZGlhdGVrLmNvbT4NCj4gPiArICovDQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSA8Y29tbW9uLmg+DQo+ID4gKyNpbmNsdWRlIDxjbGstdWNsYXNzLmg+ DQo+ID4gKyNpbmNsdWRlIDxkbS5oPg0KPiA+ICsjaW5jbHVkZSA8ZG0vZGV2aWNlX2NvbXBhdC5o Pg0KPiA+ICsjaW5jbHVkZSA8cmVnbWFwLmg+DQo+ID4gKyNpbmNsdWRlIDxzeXNjb24uaD4NCj4g PiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Nsb2NrL210NzYyMS1jbGsuaD4NCj4gPiArI2luY2x1 ZGUgPGxpbnV4L2JpdG9wcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4NCj4gPiArDQo+ ID4gKyNkZWZpbmUgU1lTQ19NQVBfU0laRQkJCTB4MTAwDQo+ID4gKyNkZWZpbmUgTUVNQ19NQVBf U0laRQkJCTB4MTAwMA0KPiA+ICsNCj4gPiArLyogU1lTQyAqLw0KPiA+ICsjZGVmaW5lIFNZU0NG RzBfUkVHCQkJMHgxMA0KPiA+ICsjZGVmaW5lIFhUQUxfTU9ERV9TRUxfUwkJCTYNCj4gPiArI2Rl ZmluZSBYVEFMX01PREVfU0VMX00JCQkweDFjMA0KPiANCj4gUGxlYXNlIHVzZSBnZW5tYXNrIHRv IGRlZmluZSB0aGlzOg0KPiANCj4gI2RlZmluZSBYVEFMX01PREVfU0VMX00JCQlHRU5NQVNLKDgs IDYpDQo+IA0KPiBhbmQgU0VMX1MgaXMgdW5uZWNlc3NhcnksIHNlZSBjb21tZW50YXJ5IGJlbG93 Lg0KPiANCj4gPiArDQo+ID4gKyNkZWZpbmUgQ0xLQ0ZHMF9SRUcJCQkweDJjDQo+ID4gKyNkZWZp bmUgQ1BVX0NMS19TRUxfUwkJCTMwDQo+ID4gKyNkZWZpbmUgQ1BVX0NMS19TRUxfTQkJCTB4YzAw MDAwMDANCj4gPiArI2RlZmluZSBQRVJJX0NMS19TRUwJCQkweDEwDQo+ID4gKw0KPiA+ICsjZGVm aW5lIENMS0NGRzFfUkVHCQkJMHgzMA0KPiA+ICsNCj4gPiArI2RlZmluZSBDVVJfQ0xLX1NUU19S RUcJCQkweDQ0DQo+ID4gKyNkZWZpbmUgQ1VSX0NQVV9GRElWX1MJCQk4DQo+ID4gKyNkZWZpbmUg Q1VSX0NQVV9GRElWX00JCQkweDFmMDANCj4gPiArI2RlZmluZSBDVVJfQ1BVX0ZGUkFDX1MJCQkw DQo+ID4gKyNkZWZpbmUgQ1VSX0NQVV9GRlJBQ19NCQkJMHgxZg0KPiA+ICsNCj4gPiArLyogTUVN QyAqLw0KPiA+ICsjZGVmaW5lIE1FTVBMTDFfUkVHCQkJMHgwNjA0DQo+ID4gKyNkZWZpbmUgUkdf TUVQTF9ESVYyX1NFTF9TCQkxDQo+ID4gKyNkZWZpbmUgUkdfTUVQTF9ESVYyX1NFTF9NCQkweDA2 DQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1FTVBMTDZfUkVHCQkJMHgwNjE4DQo+ID4gKyNkZWZpbmUg TUVNUExMMThfUkVHCQkJMHgwNjQ4DQo+ID4gKyNkZWZpbmUgUkdfTUVQTF9QUkVESVZfUwkJMTIN Cj4gPiArI2RlZmluZSBSR19NRVBMX1BSRURJVl9NCQkweDMwMDANCj4gPiArI2RlZmluZSBSR19N RVBMX0ZCRElWX1MJCQk0DQo+ID4gKyNkZWZpbmUgUkdfTUVQTF9GQkRJVl9NCQkJMHg3ZjANCj4g PiArDQo+ID4gKy8qIENsb2NrIHNvdXJjZXMgKi8NCj4gPiArI2RlZmluZSBDTEtfU1JDX0NQVQkJ CS0xDQo+ID4gKyNkZWZpbmUgQ0xLX1NSQ19DUFVfRDIJCQktMg0KPiA+ICsjZGVmaW5lIENMS19T UkNfRERSCQkJLTMNCj4gPiArI2RlZmluZSBDTEtfU1JDX1NZUwkJCS00DQo+ID4gKyNkZWZpbmUg Q0xLX1NSQ19YVEFMCQkJLTUNCj4gPiArI2RlZmluZSBDTEtfU1JDX1BFUkkJCQktNg0KPiANCj4g UGxlYXNlIHVzZSBhbiBlbnVtLiBBbmQgd2h5IGFyZSB0aGVzZSBuZWdhdGl2ZT8NCg0KSSdsbCBy ZXdyaXRlIHRoaXMNCg0KPiANCj4gPiArLyogRVBMTCBjbG9jayAqLw0KPiA+ICsjZGVmaW5lIEVQ TExfQ0xLCQkJNTAwMDAwMDANCj4gPiArDQo+ID4gK3N0cnVjdCBtdDc2MjFfY2xrX3ByaXYgew0K PiA+ICsJdm9pZCBfX2lvbWVtICpzeXNjX2Jhc2U7DQo+ID4gKwl2b2lkIF9faW9tZW0gKm1lbWNf YmFzZTsNCj4gPiArCWludCBjcHVfY2xrOw0KPiA+ICsJaW50IGRkcl9jbGs7DQo+ID4gKwlpbnQg c3lzX2NsazsNCj4gPiArCWludCB4dGFsX2NsazsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRp YyBjb25zdCBpbnQgbXQ3NjIxX2Nsa3NbXSA9IHsNCj4gPiArCVtDTEtfU1lTXSA9IENMS19TUkNf U1lTLA0KPiA+ICsJW0NMS19ERFJdID0gQ0xLX1NSQ19ERFIsDQo+ID4gKwlbQ0xLX0NQVV0gPSBD TEtfU1JDX0NQVSwNCj4gPiArCVtDTEtfWFRBTF0gPSBDTEtfU1JDX1hUQUwsDQo+ID4gKwlbQ0xL X01JUFNfQ05UXSA9IENMS19TUkNfQ1BVX0QyLA0KPiA+ICsJW0NMS19VQVJUM10gPSBDTEtfU1JD X1BFUkksDQo+ID4gKwlbQ0xLX1VBUlQyXSA9IENMS19TUkNfUEVSSSwNCj4gPiArCVtDTEtfVUFS VDFdID0gQ0xLX1NSQ19QRVJJLA0KPiA+ICsJW0NMS19TUEldID0gQ0xLX1NSQ19TWVMsDQo+ID4g KwlbQ0xLX0kyQ10gPSBDTEtfU1JDX1BFUkksDQo+ID4gKwlbQ0xLX1RJTUVSXSA9IENMS19TUkNf UEVSSSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB1bG9uZyBtdDc2MjFfY2xrX2dldF9y YXRlKHN0cnVjdCBjbGsgKmNsaykNCj4gPiArew0KPiA+ICsJc3RydWN0IG10NzYyMV9jbGtfcHJp diAqcHJpdiA9IGRldl9nZXRfcHJpdihjbGstPmRldik7DQo+ID4gKwl1MzIgdmFsOw0KPiA+ICsN Cj4gPiArCWlmIChjbGstPmlkID49IEFSUkFZX1NJWkUobXQ3NjIxX2Nsa3MpKQ0KPiA+ICsJCXJl dHVybiAwOw0KPiA+ICsNCj4gPiArCXN3aXRjaCAobXQ3NjIxX2Nsa3NbY2xrLT5pZF0pIHsNCj4g PiArCWNhc2UgQ0xLX1NSQ19DUFU6DQo+ID4gKwkJcmV0dXJuIHByaXYtPmNwdV9jbGs7DQo+ID4g KwljYXNlIENMS19TUkNfQ1BVX0QyOg0KPiA+ICsJCXJldHVybiBwcml2LT5jcHVfY2xrIC8gMjsN Cj4gPiArCWNhc2UgQ0xLX1NSQ19ERFI6DQo+ID4gKwkJcmV0dXJuIHByaXYtPmRkcl9jbGs7DQo+ ID4gKwljYXNlIENMS19TUkNfU1lTOg0KPiA+ICsJCXJldHVybiBwcml2LT5zeXNfY2xrOw0KPiA+ ICsJY2FzZSBDTEtfU1JDX1hUQUw6DQo+ID4gKwkJcmV0dXJuIHByaXYtPnh0YWxfY2xrOw0KPiA+ ICsJY2FzZSBDTEtfU1JDX1BFUkk6DQo+ID4gKwkJdmFsID0gcmVhZGwocHJpdi0+c3lzY19iYXNl ICsgQ0xLQ0ZHMF9SRUcpOw0KPiA+ICsJCWlmICh2YWwgJiBQRVJJX0NMS19TRUwpDQo+ID4gKwkJ CXJldHVybiBwcml2LT54dGFsX2NsazsNCj4gPiArCQllbHNlDQo+ID4gKwkJCXJldHVybiBFUExM X0NMSzsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0dXJuIDA7DQo+IA0KPiAtRU5PU1lTDQo+ IA0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IG10NzYyMV9jbGtfZW5h YmxlKHN0cnVjdCBjbGsgKmNsaykNCj4gPiArew0KPiA+ICsJc3RydWN0IG10NzYyMV9jbGtfcHJp diAqcHJpdiA9IGRldl9nZXRfcHJpdihjbGstPmRldik7DQo+ID4gKw0KPiA+ICsJaWYgKGNsay0+ aWQgPiAzMSkNCj4gDQo+IFBsZWFzZSBjb21wYXJlIHdpdGggYSBzeW1ib2wuDQoNCk9LLiBhY3R1 YWxseSB0aGUgY2xvY2sgZ2F0ZSByZWdpc3RlciBpcyAzMi1iaXQsIGFuZCAzMSBpcyB0aGUgTVNC Lg0KDQo+IA0KPiA+ICsJCXJldHVybiAtMTsNCj4gDQo+IC1FTk9TWVMNCj4gDQo+ID4gKw0KPiA+ ICsJc2V0Yml0c18zMihwcml2LT5zeXNjX2Jhc2UgKyBDTEtDRkcxX1JFRywgQklUKGNsay0+aWQp KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlu dCBtdDc2MjFfY2xrX2Rpc2FibGUoc3RydWN0IGNsayAqY2xrKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1 Y3QgbXQ3NjIxX2Nsa19wcml2ICpwcml2ID0gZGV2X2dldF9wcml2KGNsay0+ZGV2KTsNCj4gPiAr DQo+ID4gKwlpZiAoY2xrLT5pZCA+IDMxKQ0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArDQo+ID4g KwljbHJiaXRzXzMyKHByaXYtPnN5c2NfYmFzZSArIENMS0NGRzFfUkVHLCBCSVQoY2xrLT5pZCkp Ow0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtjb25zdCBzdHJ1 Y3QgY2xrX29wcyBtdDc2MjFfY2xrX29wcyA9IHsNCj4gPiArCS5lbmFibGUgPSBtdDc2MjFfY2xr X2VuYWJsZSwNCj4gPiArCS5kaXNhYmxlID0gbXQ3NjIxX2Nsa19kaXNhYmxlLA0KPiA+ICsJLmdl dF9yYXRlID0gbXQ3NjIxX2Nsa19nZXRfcmF0ZSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRp YyB2b2lkIG10NzYyMV9nZXRfY2xvY2tzKHN0cnVjdCBtdDc2MjFfY2xrX3ByaXYgKnByaXYpDQo+ ID4gK3sNCj4gPiArCXUzMiBicywgeHRhbF9zZWwsIGNsa2NmZzAsIGN1cl9jbGssIG1lbXBsbCwg ZGl2aWR4LCBmYjsNCj4gPiArCXUzMiB4dGFsX2NsaywgeHRhbF9kaXYsIGZmaXYsIGZmcmFjLCBj cHVfY2xrLCBkZHJfY2xrOw0KPiA+ICsJc3RhdGljIGNvbnN0IHUzMiB4dGFsX2Rpdl90YmxbXSA9 IHswLCAxLCAyLCAyfTsNCj4gPiArDQo+ID4gKwlicyA9IHJlYWRsKHByaXYtPnN5c2NfYmFzZSAr IFNZU0NGRzBfUkVHKTsNCj4gPiArCWNsa2NmZzAgPSByZWFkbChwcml2LT5zeXNjX2Jhc2UgKyBD TEtDRkcwX1JFRyk7DQo+ID4gKwljdXJfY2xrID0gcmVhZGwocHJpdi0+c3lzY19iYXNlICsgQ1VS X0NMS19TVFNfUkVHKTsNCj4gPiArDQo+ID4gKwl4dGFsX3NlbCA9IChicyAmIFhUQUxfTU9ERV9T RUxfTSkgPj4gWFRBTF9NT0RFX1NFTF9TOw0KPiANCj4geHRhbF9zZWwgPSBGSUVMRF9HRVQoWFRB TF9NT0RFX1NFTF9NLCBicyk7DQoNCmdvdCBpdC4NCg0KPiANCj4gPiArDQo+ID4gKwlpZiAoeHRh bF9zZWwgPD0gMikNCj4gPiArCQl4dGFsX2NsayA9IDIwICogMTAwMCAqIDEwMDA7DQo+ID4gKwll bHNlIGlmICh4dGFsX3NlbCA8PSA1KQ0KPiA+ICsJCXh0YWxfY2xrID0gNDAgKiAxMDAwICogMTAw MDsNCj4gPiArCWVsc2UNCj4gPiArCQl4dGFsX2NsayA9IDI1ICogMTAwMCAqIDEwMDA7DQo+ID4g Kw0KPiA+ICsJc3dpdGNoICgoY2xrY2ZnMCAmIENQVV9DTEtfU0VMX00pID4+IENQVV9DTEtfU0VM X1MpIHsNCj4gDQo+IGRpdHRvDQo+IA0KPiA+ICsJY2FzZSAwOg0KPiA+ICsJCWNwdV9jbGsgPSA1 MDAgKiAxMDAwICogMTAwMDsNCj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgMToNCj4gPiArCQlt ZW1wbGwgPSByZWFkbChwcml2LT5tZW1jX2Jhc2UgKyBNRU1QTEwxOF9SRUcpOw0KPiA+ICsJCWRp dmlkeCA9IChtZW1wbGwgJiBSR19NRVBMX1BSRURJVl9NKSA+Pg0KPiA+IFJHX01FUExfUFJFRElW X1M7DQo+ID4gKwkJZmIgPSAobWVtcGxsICYgUkdfTUVQTF9GQkRJVl9NKSA+Pg0KPiA+IFJHX01F UExfRkJESVZfUzsNCj4gDQo+IGRpdHRvDQo+IA0KPiA+ICsJCXh0YWxfZGl2ID0gMSA8PCB4dGFs X2Rpdl90YmxbZGl2aWR4XTsNCj4gPiArCQljcHVfY2xrID0gKGZiICsgMSkgKiB4dGFsX2NsayAv IHh0YWxfZGl2Ow0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQljcHVfY2xr ID0geHRhbF9jbGs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZmZpdiA9IChjdXJfY2xrICYgQ1VS X0NQVV9GRElWX00pID4+IENVUl9DUFVfRkRJVl9TOw0KPiA+ICsJZmZyYWMgPSAoY3VyX2NsayAm IENVUl9DUFVfRkZSQUNfTSkgPj4gQ1VSX0NQVV9GRlJBQ19TOw0KPiANCj4gZGl0dG8NCj4gDQo+ ID4gKwljcHVfY2xrID0gY3B1X2NsayAvIGZmaXYgKiBmZnJhYzsNCj4gPiArDQo+ID4gKwltZW1w bGwgPSByZWFkbChwcml2LT5tZW1jX2Jhc2UgKyBNRU1QTEw2X1JFRyk7DQo+ID4gKwlkaXZpZHgg PSAobWVtcGxsICYgUkdfTUVQTF9QUkVESVZfTSkgPj4gUkdfTUVQTF9QUkVESVZfUzsNCj4gPiAr CWZiID0gKG1lbXBsbCAmIFJHX01FUExfRkJESVZfTSkgPj4gUkdfTUVQTF9GQkRJVl9TOw0KPiAN Cj4gZGl0dG8NCj4gDQo+ID4gKwl4dGFsX2RpdiA9IDEgPDwgeHRhbF9kaXZfdGJsW2RpdmlkeF07 DQo+ID4gKwlkZHJfY2xrID0gZmIgKiB4dGFsX2NsayAvIHh0YWxfZGl2Ow0KPiA+ICsNCj4gPiAr CWJzID0gcmVhZGwocHJpdi0+bWVtY19iYXNlICsgTUVNUExMMV9SRUcpOw0KPiA+ICsJaWYgKCgo YnMgJiBSR19NRVBMX0RJVjJfU0VMX00pID4+IFJHX01FUExfRElWMl9TRUxfUykgPT0NCj4gPiAw KQ0KPiANCj4gZGl0dG8NCj4gDQo+IGFuZCB5b3UgY2FuIGp1c3QgdXNlDQo+IA0KPiAJaWYgKCFj b25kKQ0KPiANCj4gPiArCQlkZHJfY2xrICo9IDI7DQo+ID4gKw0KPiA+ICsJcHJpdi0+Y3B1X2Ns ayA9IGNwdV9jbGs7DQo+ID4gKwlwcml2LT5zeXNfY2xrID0gY3B1X2NsayAvIDQ7DQo+ID4gKwlw cml2LT5kZHJfY2xrID0gZGRyX2NsazsNCj4gPiArCXByaXYtPnh0YWxfY2xrID0geHRhbF9jbGs7 DQo+IA0KPiBQbGVhc2UgaW1wbGVtZW50IHRoZSBhYm92ZSBsb2dpYyBpbiBnZXRfcmF0ZSgpLiBG b3IgZXhhbXBsZToNCj4gDQo+IHN0YXRpYyB1bG9uZyBkb19tdDc2MjFfY2xrX2dldF9yYXRlKCkN Cj4gew0KPiAJLi4uDQo+IAlzd2l0Y2ggKGNsay0+aWQpIHsNCj4gCQljYXNlIENMS19TWVM6DQo+ IAkJCWNwdV9jbGsgPSBkb19tdDc2MjFfY2xrX2dldF9yYXRlKHByaXYsDQo+IENMS19TWVMpOw0K PiAJCQlyZXR1cm4gSVNfRVJST1JfVkFMVUUoY3B1X2NsaykgPyBjcHVfY2xrIDoNCj4gY3B1X2Ns ayAvIDQ7DQo+IAkJLi4uDQo+IAl9DQo+IH0NCj4gDQo+IHN0YXRpYyB1bG9uZyBtdDc2MjFfY2xr X2dldF9yYXRlKCkNCj4gew0KPiAJc3RydWN0IG10NzYyMV9jbGtfcHJpdiAqcHJpdiA9IGRldl9n ZXRfcHJpdihjbGstPmRldik7DQo+IA0KPiAJcmV0dXJuIGRvX210NzYyMV9jbGtfZ2V0X3JhdGUo cHJpdiwgY2xrLT5pZCk7DQo+IH0NCg0Kb2sNCg0KPiANCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGludCBtdDc2MjFfY2xrX3Byb2JlKHN0cnVjdCB1ZGV2aWNlICpkZXYpDQo+ID4gK3sNCj4g PiArCXN0cnVjdCBtdDc2MjFfY2xrX3ByaXYgKnByaXYgPSBkZXZfZ2V0X3ByaXYoZGV2KTsNCj4g PiArCXN0cnVjdCBvZm5vZGVfcGhhbmRsZV9hcmdzIGFyZ3M7DQo+ID4gKwlzdHJ1Y3QgcmVnbWFw ICpyZWdtYXA7DQo+ID4gKwl2b2lkIF9faW9tZW0gKmJhc2U7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ ICsNCj4gPiArCS8qIGdldCBjb3JyZXNwb25kaW5nIHN5c2MgcGhhbmRsZSAqLw0KPiA+ICsJcmV0 ID0gZGV2X3JlYWRfcGhhbmRsZV93aXRoX2FyZ3MoZGV2LCAibWVkaWF0ZWssc3lzYyIsDQo+ID4g TlVMTCwgMCwgMCwNCj4gPiArCQkJCQkgJmFyZ3MpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQly ZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXJlZ21hcCA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcChh cmdzLm5vZGUpOw0KPiANCj4gQWNjb3JkaW5nIHRvIHRoZSBMaW51eCBiaW5kaW5nIGZvciB0aGlz IG5vZGUsIGl0IGlzIHN1cHBvc2VkIHRvIGxpdmUNCj4gdW5kZXIgdGhlIHN5c2NvbiBhbHJlYWR5 LiBTbyB5b3UgY2FuIGRvDQo+IA0KPiAJc3lzY29uX25vZGVfdG9fcmVnbWFwKGRldl9vZm5vZGUo ZGV2X2dldF9wYXJlbnQoZGV2KSkpOw0KPiANCj4gYW5kIHNraXAgdGhlIHBoYW5kbGUuDQoNCkkn bGwgdHJ5IHRoaXMNCg0KPiANCj4gPiArCWlmIChJU19FUlIocmVnbWFwKSkNCj4gPiArCQlyZXR1 cm4gUFRSX0VSUihyZWdtYXApOw0KPiA+ICsNCj4gPiArCWJhc2UgPSByZWdtYXBfZ2V0X3Jhbmdl KHJlZ21hcCwgMCk7DQo+ID4gKwlpZiAoIWJhc2UpIHsNCj4gPiArCQlkZXZfZXJyKGRldiwgIlVu YWJsZSB0byBmaW5kIHN5c2NcbiIpOw0KPiANCj4gZGV2X2RiZyAoc2VlIGRvYy9kZXZlbG9wL2Ry aXZlci1tb2RlbC9kZXNpZ24ucnN0KQ0KDQpvaw0KDQo+IA0KPiA+ICsJCXJldHVybiAtRU5PREVW Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXByaXYtPnN5c2NfYmFzZSA9IGlvcmVtYXBfbm9jYWNo ZSgocGh5c19hZGRyX3QpYmFzZSwNCj4gPiBTWVNDX01BUF9TSVpFKTsNCj4gPiArDQo+ID4gKwkv KiBnZXQgY29ycmVzcG9uZGluZyBtZW1jIHBoYW5kbGUgKi8NCj4gPiArCXJldCA9IGRldl9yZWFk X3BoYW5kbGVfd2l0aF9hcmdzKGRldiwgIm1lZGlhdGVrLG1lbWMiLA0KPiA+IE5VTEwsIDAsIDAs DQo+IA0KPiBzaG91bGQgYmUgInJhbGluayxtZW1jdGwiLg0KDQpvaw0KDQo+IA0KPiA+ICsJCQkJ CSAmYXJncyk7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ ICsJcmVnbWFwID0gc3lzY29uX25vZGVfdG9fcmVnbWFwKGFyZ3Mubm9kZSk7DQo+ID4gKwlpZiAo SVNfRVJSKHJlZ21hcCkpDQo+ID4gKwkJcmV0dXJuIFBUUl9FUlIocmVnbWFwKTsNCj4gDQo+IFRo ZXNlIHR3byBzdGVwcyBjYW4gYmUgY29tcGluZWQgd2l0aCBzeXNjb25fcmVnbWFwX2xvb2t1cF9i eV9waGFuZGxlLg0KPiANCj4gPiArCWJhc2UgPSByZWdtYXBfZ2V0X3JhbmdlKHJlZ21hcCwgMCk7 DQo+ID4gKwlpZiAoIWJhc2UpIHsNCj4gPiArCQlkZXZfZXJyKGRldiwgIlVuYWJsZSB0byBmaW5k IG1lbWNcbiIpOw0KPiANCj4gZGV2X2RiZw0KPiANCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlwcml2LT5tZW1jX2Jhc2UgPSBpb3JlbWFwX25vY2FjaGUoKHBo eXNfYWRkcl90KWJhc2UsDQo+ID4gTUVNQ19NQVBfU0laRSk7DQo+ID4gKw0KPiA+ICsJbXQ3NjIx X2dldF9jbG9ja3MocHJpdik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdWRldmljZV9pZCBtdDc2MjFfY2xrX2lkc1tdID0g ew0KPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDc2MjEtY2xrIiB9LA0KPiA+ICsJ eyB9DQo+ID4gK307DQo+ID4gKw0KPiA+ICtVX0JPT1RfRFJJVkVSKG10NzYyMV9jbGspID0gew0K PiA+ICsJLm5hbWUgPSAibXQ3NjIxLWNsayIsDQo+ID4gKwkuaWQgPSBVQ0xBU1NfQ0xLLA0KPiA+ ICsJLm9mX21hdGNoID0gbXQ3NjIxX2Nsa19pZHMsDQo+ID4gKwkucHJvYmUgPSBtdDc2MjFfY2xr X3Byb2JlLA0KPiA+ICsJLnByaXZfYXV0byA9IHNpemVvZihzdHJ1Y3QgbXQ3NjIxX2Nsa19wcml2 KSwNCj4gPiArCS5vcHMgPSAmbXQ3NjIxX2Nsa19vcHMsDQo+ID4gK307DQo+ID4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svbXQ3NjIxLWNsay5oIGIvaW5jbHVkZS9kdC0N Cj4gPiBiaW5kaW5ncy9jbG9jay9tdDc2MjEtY2xrLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmIyNGFlZjM1MWMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9tdDc2MjEtY2xrLmgNCj4gPiBAQCAt MCwwICsxLDQyIEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICov DQo+ID4gKy8qDQo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAyMSBNZWRpYVRlayBJbmMuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyAqDQo+ID4gKyAqIEF1dGhvcjogIFdlaWppZSBHYW8gPHdl aWppZS5nYW9AbWVkaWF0ZWsuY29tPg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX0RU X0JJTkRJTkdTX01UNzYyMV9DTEtfSF8NCj4gPiArI2RlZmluZSBfRFRfQklORElOR1NfTVQ3NjIx X0NMS19IXw0KPiA+ICsNCj4gPiArLyogQmFzZSBjbG9ja3MgKi8NCj4gPiArI2RlZmluZSBDTEtf TUlQU19DTlQJCQkzNg0KPiA+ICsjZGVmaW5lIENMS19TWVMJCQkJMzUNCj4gPiArI2RlZmluZSBD TEtfRERSCQkJCTM0DQo+ID4gKyNkZWZpbmUgQ0xLX0NQVQkJCQkzMw0KPiA+ICsjZGVmaW5lIENM S19YVEFMCQkJMzINCj4gDQo+IFdoeSBpcyB0aGVyZSBhIGdhcD8NCg0KMH4zMSB2YWx1ZXMgYXJl IGJpdHMgaW4gY2xvY2sgZ2F0ZSByZWdpc3RlciwgYW5kIGJpdCAzMSBpcyB1bnVzZWQuDQp2YWx1 ZXMgYWJvdmUgMzEgcmVwcmVzZW50IGNsb2NrIHNvdXJjZXMgbm90IGRlZmluZWQgaW4gdGhlIGdh dGUNCnJlZ2lzdGVyLg0KDQo+IA0KPiA+ICsvKiBQZXJpcGhlcmFsIGNsb2NrcyAqLw0KPiA+ICsj ZGVmaW5lIENMS19TRFhDCQkJMzANCj4gPiArI2RlZmluZSBDTEtfQ1JZUFRPCQkJMjkNCj4gPiAr I2RlZmluZSBDTEtfUENJRTIJCQkyNg0KPiA+ICsjZGVmaW5lIENMS19QQ0lFMQkJCTI1DQo+ID4g KyNkZWZpbmUgQ0xLX1BDSUUwCQkJMjQNCj4gPiArI2RlZmluZSBDTEtfR01BQwkJCTIzDQo+ID4g KyNkZWZpbmUgQ0xLX1VBUlQzCQkJMjENCj4gPiArI2RlZmluZSBDTEtfVUFSVDIJCQkyMA0KPiA+ ICsjZGVmaW5lIENMS19VQVJUMQkJCTE5DQo+ID4gKyNkZWZpbmUgQ0xLX1NQSQkJCQkxOA0KPiA+ ICsjZGVmaW5lIENMS19JMlMJCQkJMTcNCj4gPiArI2RlZmluZSBDTEtfSTJDCQkJCTE2DQo+ID4g KyNkZWZpbmUgQ0xLX05GSQkJCQkxNQ0KPiA+ICsjZGVmaW5lIENMS19HRE1BCQkJMTQNCj4gPiAr I2RlZmluZSBDTEtfUElPCQkJCTEzDQo+ID4gKyNkZWZpbmUgQ0xLX1BDTQkJCQkxMQ0KPiA+ICsj ZGVmaW5lIENMS19NQwkJCQkxMA0KPiA+ICsjZGVmaW5lIENMS19JTlRDCQkJOQ0KPiA+ICsjZGVm aW5lIENMS19USU1FUgkJCTgNCj4gPiArI2RlZmluZSBDTEtfU1BESUZUWAkJCTcNCj4gPiArI2Rl ZmluZSBDTEtfRkUJCQkJNg0KPiA+ICsjZGVmaW5lIENMS19IU0RNQQkJCTUNCj4gPiArDQo+ID4g KyNlbmRpZiAvKiBfRFRfQklORElOR1NfTVQ3NjIxX0NMS19IXyAqLw0KPiANCj4gVGhpcyBmaWxl IGxvb2tzIHZlcnkgZGlmZmVyZW50IGZyb20NCj4gaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9t dDc2MjEtY2xrLmggaW4gTGludXguIEluIHBhcnRpY3VsYXIsIGl0IGlzDQo+IGJhY2t3YXJkcywg dGhlIElEcyBhcmUgZGlmZmVyZW50IChIU0RNQSBpcyA4IGluIExpbnV4IGJ1dCA1IGhlcmUpLCAN Cg0KNSBkaXJlY3RseSByZXByZXNlbnRzIHRoZSBiaXQgaW4gY2xvY2sgZ2F0ZSByZWdpc3Rlciwg d2hpY2ggbWVhbnMgYQ0KbWFwcGluZyBtdXN0IGJlIGRvbmUgZm9yIHRoZSBpbmNsdWRlL2R0LWJp bmRpbmdzL2Nsb2NrL210NzYyMS1jbGsuaA0KKGkuZS4gc3VidHJhY3QgYnkgMykgaW4ga2VybmVs Lg0KDQpidHcsIHRoZSBmaWxlIGluIGtlcm5lbCBpcyBub3Qgc3VibWl0dGVkIGJ5IG1lZGlhdGVr Lg0KDQo+IHNvbWUNCj4gb2YgdGhlIElEcyBhcmUgbmFtZWQgZGlmZmVyZW50bHkgKFNQX0RJVlRY IHZzIFNQRElGVFgpLCBhbmQgdGhlcmUgaXMNCj4gbm8NCj4gTVQ3NjIxIHByZWZpeC4gQ2FuIHlv dSBjb21tZW50IG9uIHRoZXNlPyBBcmUgdGhleSBkZWxpYmVyYXRlPw0KDQpUaGUgbmFtZSBTUERJ RlRYIGNvbWVzIGZyb20gdGhlIE1UNzYyMSBwcm9ncmFtbWluZyBndWlkZSBvZiBtZWRpYXRlay4N CkFkZGluZyBNVDc2MjEgc2VlbXMgYmV0dGVyLg0KPiBOb3RlIHRoYXQNCj4gaW4gZ2VuZXJhbCwg bnVtZXJpY2FsIElEcyBzaG91bGQgYmUga2VwdCB0aGUgc2FtZSBiZXR3ZWVuIExpbnV4IGFuZA0K PiBVLUJvb3Qgc28gd2UgY2FuIHVzZSB0aGUgc2FtZSBkZXZpY2UgdHJlZS4gSWYgeW91IG5lZWQg dG8gbWFwIGJldHdlZW4NCj4gbG9naWNhbCBjbG9jayBJRCBhbmQgYSBwb3NpdGlvbiBpbiBhIHJl Z2lzdGVyLCBJIHN1Z2dlc3Qgc29tZXRoaW5nDQo+IGxpa2UNCj4gDQo+IHN0cnVjdCB7DQo+IAl1 OCBnYXRlX2JpdDsNCj4gfSBjbG9ja3Mgew0KPiAJW0NMS19IU0RNQV0gPSB7IC5nYXRlX2JpdCA9 IDUgfSwNCj4gfTsNCj4gDQoNClRoaXMgaXMgYSBkcml2ZXIgZGVkaWNhdGVkIGZvciB1LWJvb3Qs IGFuZCBhY3R1YWxseSBvbmx5IHRoZSBTWVMgY2xvY2sNCmlzIHVzZWQuIEkgYmVsaWV2ZSB1c2lu ZyBjb3JyZWN0IGdhdGUgYml0IG51bWJlciBpcyBjbGVhcmVyLg0KDQo+IC0tU2Vhbg==