Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp1514600ybh; Fri, 13 Mar 2020 02:35:39 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvZaASwpX/UhQ5fleRqMLqof7p2CgQ8ghyi9YVHlD2/NPB8lm9wkeVGx2sozloGZIfj8CSR X-Received: by 2002:aca:61c1:: with SMTP id v184mr5770386oib.123.1584092139259; Fri, 13 Mar 2020 02:35:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584092139; cv=none; d=google.com; s=arc-20160816; b=THx6/wov1TBuQicp6M5RsK2YzjRYC9kc/xopD4ipvkOgIf/AiUPRQ4R+6br3Wm7AhM E4sI1OcvuhyGrL+ZQRBit1IpNbQlrFFTYz05Di9tGjlySDb/H2nf3xb49ez8krgUSmPp xkN3DGev8vPQbdAYaxoKXARs2Gx/ja2mjG2KSiSadKuB0dhFlrHpUkfmteFQtjXKq7nm 0bepeaLlxSdAH4Y3ZmEwuW9DKp05sASuTBwvxau0jCxqxvsJxImIU9neo2J67OUF6nnu v1G9HYwNZGkSIdtsDZ37mfzOMzF/2s6gesLZ1aURxufM4CATI9zSFrf0tzxvyFixr/Da aHqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=zExW2URhkKjviTYR3CaVYGGXfCHDwBC3OUgJOe+y4WM=; b=p64NbVyJumKQM0uF74vdZGKPWnDIg+be8lH/stbDZKuA/hbKe5XVNcu/jG/j6L5Kf5 ZfLyTTiKQmUixGcN37yBpsLU3KjLKrfpE4UrQylWSBkp8kNgERKHQJaRhbDKal4a4AWS v1CwUT3pvQXmcFjm/Qa6uwx8+RnLT4NUyqWLCVwu0bgmhfRaD08p+xcKXC+pH/xovXqF U3SaNd7gK+MpS2V1cSlN8cJKKTJ3+SB+i4fCTIw+n7p9V98Xe16p/3wM/u2iUKvfivqn 04XE82fpMim/r7VPieEn127QrnVjWw3CzMW0hLjZWVf1jwW2AUd0W0BF2oEd3WgssQ/8 KYfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=mqyxc+6b; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e10si4205277otk.41.2020.03.13.02.35.27; Fri, 13 Mar 2020 02:35:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=mqyxc+6b; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726814AbgCMJey (ORCPT + 99 others); Fri, 13 Mar 2020 05:34:54 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:61434 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726738AbgCMJes (ORCPT ); Fri, 13 Mar 2020 05:34:48 -0400 X-UUID: d30094507bd1477cb18655c93aead84d-20200313 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=zExW2URhkKjviTYR3CaVYGGXfCHDwBC3OUgJOe+y4WM=; b=mqyxc+6bZaK/mFjDnmBXeHWRsu0wN7Ze4tszmFxGC2g46S92ZAZ/Dl0aptYbk7hd7Dshm00CjetfQl5rQQgj/S2DvNr4n9jqAJJSRDXvLQXchSZ/O/7uuRQPldVqPIcWcendea91mR+pm0PpiueA4w/0Lw359/YQNTQ3jK2Eluo=; X-UUID: d30094507bd1477cb18655c93aead84d-20200313 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1085969066; Fri, 13 Mar 2020 17:34:31 +0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 13 Mar 2020 17:33:00 +0800 Received: from mtksdaap41.mediatek.inc (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, 13 Mar 2020 17:33:41 +0800 From: Henry Chen To: Georgi Djakov , Rob Herring , Matthias Brugger , Viresh Kumar , Stephen Boyd , Ryan Case , Mark Brown CC: Mark Rutland , Nicolas Boichat , Fan Chen , James Liao , Arvin Wang , Mike Turquette , , , , , , , Henry Chen Subject: [PATCH V4 06/13] soc: mediatek: add MT8183 dvfsrc support Date: Fri, 13 Mar 2020 17:34:19 +0800 Message-ID: <1584092066-24425-7-git-send-email-henryc.chen@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1584092066-24425-1-git-send-email-henryc.chen@mediatek.com> References: <1584092066-24425-1-git-send-email-henryc.chen@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain 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 QWRkIGR2ZnNyYyBkcml2ZXIgZm9yIE1UODE4Mw0KDQpTaWduZWQtb2ZmLWJ5OiBIZW5yeSBDaGVu IDxoZW5yeWMuY2hlbkBtZWRpYXRlay5jb20+DQotLS0NCiBkcml2ZXJzL3NvYy9tZWRpYXRlay9L Y29uZmlnICAgICAgfCAgMTUgKysNCiBkcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZSAgICAg fCAgIDEgKw0KIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1kdmZzcmMuYyB8IDQzNCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIGluY2x1ZGUvc29jL21lZGlhdGVrL210 a19kdmZzcmMuaCB8ICAzMCArKysNCiA0IGZpbGVzIGNoYW5nZWQsIDQ4MCBpbnNlcnRpb25zKCsp DQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1kdmZzcmMuYw0K IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvYy9tZWRpYXRlay9tdGtfZHZmc3JjLmgNCg0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL21lZGlhdGVrL0tjb25maWcgYi9kcml2ZXJzL3NvYy9t ZWRpYXRlay9LY29uZmlnDQppbmRleCBmODM3YjNjLi40NDgwOGY0IDEwMDY0NA0KLS0tIGEvZHJp dmVycy9zb2MvbWVkaWF0ZWsvS2NvbmZpZw0KKysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvS2Nv bmZpZw0KQEAgLTE2LDYgKzE2LDIxIEBAIGNvbmZpZyBNVEtfQ01EUQ0KIAkgIHRpbWUgbGltaXRh dGlvbiwgc3VjaCBhcyB1cGRhdGluZyBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gZHVyaW5nIHRoZQ0K IAkgIHZibGFuay4NCiANCitjb25maWcgTVRLX0RWRlNSQw0KKwlib29sICJNZWRpYVRlayBEVkZT UkMgU3VwcG9ydCINCisJZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLDQorCWRlZmF1bHQgQVJDSF9N RURJQVRFSw0KKwlzZWxlY3QgTVRLX0lORlJBQ0ZHDQorCXNlbGVjdCBQTV9HRU5FUklDX0RPTUFJ TlMgaWYgUE0NCisJZGVwZW5kcyBvbiBNVEtfU0NQU1lTDQorCWhlbHANCisJICBTYXkgeWVzIGhl cmUgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBEVkZTUkMgKGR5bmFtaWMgdm9sdGFn ZQ0KKwkgIGFuZCBmcmVxdWVuY3kgc2NhbGluZyByZXNvdXJjZSBjb2xsZWN0b3IpIGZvdW5kDQor CSAgb24gZGlmZmVyZW50IE1lZGlhVGVrIFNvQ3MuIFRoZSBEVkZTUkMgaXMgYSBwcm9wcmlldGFy eQ0KKwkgIGhhcmR3YXJlIHdoaWNoIGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIHJlcXVlc3Rz IGZyb20NCisJICBzeXN0ZW0gYW5kIHR1cm4gaW50byB0aGUgZGVjaXNpb24gb2YgbWluaW11bSBW Y29yZSB2b2x0YWdlDQorCSAgYW5kIG1pbmltdW0gRFJBTSBmcmVxdWVuY3kgdG8gZnVsZmlsbCB0 aG9zZSByZXF1ZXN0cy4NCisNCiBjb25maWcgTVRLX1BNSUNfV1JBUA0KIAl0cmlzdGF0ZSAiTWVk aWFUZWsgUE1JQyBXcmFwcGVyIFN1cHBvcnQiDQogCWRlcGVuZHMgb24gUkVTRVRfQ09OVFJPTExF Ug0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVycy9z b2MvbWVkaWF0ZWsvTWFrZWZpbGUNCmluZGV4IDJiMmMyNTM3Li44NDE4MmYwIDEwMDY0NA0KLS0t IGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvc29jL21lZGlh dGVrL01ha2VmaWxlDQpAQCAtMSw0ICsxLDUgQEANCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkNCiBvYmotJChDT05GSUdfTVRLX0NNRFEpICs9IG10ay1jbWRxLWhlbHBl ci5vDQorb2JqLSQoQ09ORklHX01US19EVkZTUkMpICs9IG10ay1kdmZzcmMubw0KIG9iai0kKENP TkZJR19NVEtfUE1JQ19XUkFQKSArPSBtdGstcG1pYy13cmFwLm8NCiBvYmotJChDT05GSUdfTVRL X1NDUFNZUykgKz0gbXRrLXNjcHN5cy5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvbWVkaWF0 ZWsvbXRrLWR2ZnNyYy5jIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLWR2ZnNyYy5jDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uODViMzU3Mg0KLS0tIC9kZXYvbnVsbA0K KysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLWR2ZnNyYy5jDQpAQCAtMCwwICsxLDQzNCBA QA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorLyoNCisgKiBDb3B5cmln aHQgKEMpIDIwMTggTWVkaWFUZWsgSW5jLg0KKyAqLw0KKyNpbmNsdWRlIDxsaW51eC9hcm0tc21j Y2MuaD4NCisjaW5jbHVkZSA8bGludXgvY2xrLmg+DQorI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQor I2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisj aW5jbHVkZSA8bGludXgvbm90aWZpZXIuaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+ DQorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KKyNpbmNsdWRlIDxzb2MvbWVk aWF0ZWsvbXRrX2R2ZnNyYy5oPg0KKyNpbmNsdWRlIDxzb2MvbWVkaWF0ZWsvbXRrX3NpcC5oPg0K KyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9wb3dlci9tdDgxODMtcG93ZXIuaD4NCisjaW5jbHVkZSA8 ZHQtYmluZGluZ3Mvc29jL210ayxkdmZzcmMuaD4NCisjaW5jbHVkZSAibXRrLXNjcHN5cy5oIg0K Kw0KKyNkZWZpbmUgRFZGU1JDX0lETEUgICAgIDB4MDANCisjZGVmaW5lIERWRlNSQ19HRVRfVEFS R0VUX0xFVkVMKHgpICAoKCh4KSA+PiAwKSAmIDB4MDAwMGZmZmYpDQorI2RlZmluZSBEVkZTUkNf R0VUX0NVUlJFTlRfTEVWRUwoeCkgKCgoeCkgPj4gMTYpICYgMHgwMDAwZmZmZikNCisjZGVmaW5l IGticHNfdG9fbWJwcyh4KSAoKHgpIC8gMTAwMCkNCisNCisjZGVmaW5lIE1UODE4M19EVkZTUkNf T1BQX0xQNCAgIDANCisjZGVmaW5lIE1UODE4M19EVkZTUkNfT1BQX0xQNFggIDENCisjZGVmaW5l IE1UODE4M19EVkZTUkNfT1BQX0xQMyAgIDINCisNCisjZGVmaW5lIFBPTExfVElNRU9VVCAgICAg ICAgMTAwMA0KKyNkZWZpbmUgU1RBUlRVUF9USU1FICAgICAgICAxDQorDQorc3RydWN0IGR2ZnNy Y19vcHAgew0KKwl1MzIgdmNvcmVfb3BwOw0KKwl1MzIgZHJhbV9vcHA7DQorfTsNCisNCitzdHJ1 Y3QgZHZmc3JjX2RvbWFpbiB7DQorCXUzMiBpZDsNCisJdTMyIHN0YXRlOw0KK307DQorDQorc3Ry dWN0IG10a19kdmZzcmM7DQorc3RydWN0IGR2ZnNyY19zb2NfZGF0YSB7DQorCWNvbnN0IGludCAq cmVnczsNCisJdTMyIG51bV9vcHA7DQorCXUzMiBudW1fZG9tYWluczsNCisJY29uc3Qgc3RydWN0 IGR2ZnNyY19vcHAgKipvcHBzOw0KKwlzdHJ1Y3QgZHZmc3JjX2RvbWFpbiAqZG9tYWluczsNCisJ aW50ICgqZ2V0X3RhcmdldF9sZXZlbCkoc3RydWN0IG10a19kdmZzcmMgKmR2ZnNyYyk7DQorCWlu dCAoKmdldF9jdXJyZW50X2xldmVsKShzdHJ1Y3QgbXRrX2R2ZnNyYyAqZHZmc3JjKTsNCisJdTMy ICgqZ2V0X3Zjb3JlX2xldmVsKShzdHJ1Y3QgbXRrX2R2ZnNyYyAqZHZmc3JjKTsNCisJdm9pZCAo KnNldF9kcmFtX2J3KShzdHJ1Y3QgbXRrX2R2ZnNyYyAqZHZmc3JjLCB1NjQgYncpOw0KKwl2b2lk ICgqc2V0X29wcF9sZXZlbCkoc3RydWN0IG10a19kdmZzcmMgKmR2ZnNyYywgdTMyIGxldmVsKTsN CisJdm9pZCAoKnNldF92Y29yZV9sZXZlbCkoc3RydWN0IG10a19kdmZzcmMgKmR2ZnNyYywgdTMy IGxldmVsKTsNCisJaW50ICgqd2FpdF9mb3Jfb3BwX2xldmVsKShzdHJ1Y3QgbXRrX2R2ZnNyYyAq ZHZmc3JjLCB1MzIgbGV2ZWwpOw0KKwlpbnQgKCp3YWl0X2Zvcl92Y29yZV9sZXZlbCkoc3RydWN0 IG10a19kdmZzcmMgKmR2ZnNyYywgdTMyIGxldmVsKTsNCit9Ow0KKw0KK3N0cnVjdCBtdGtfZHZm c3JjIHsNCisJc3RydWN0IGRldmljZSAqZGV2Ow0KKwlzdHJ1Y3QgY2xrICpjbGtfZHZmc3JjOw0K Kwljb25zdCBzdHJ1Y3QgZHZmc3JjX3NvY19kYXRhICpkdmQ7DQorCWludCBkcmFtX3R5cGU7DQor CXZvaWQgX19pb21lbSAqcmVnczsNCisJc3RydWN0IG11dGV4IHJlcV9sb2NrOw0KKwlzdHJ1Y3Qg bXV0ZXggcHN0YXRlX2xvY2s7DQorCXN0cnVjdCBub3RpZmllcl9ibG9jayBzY3BzeXNfbm90aWZp ZXI7DQorfTsNCisNCitzdGF0aWMgdTMyIGR2ZnNyY19yZWFkKHN0cnVjdCBtdGtfZHZmc3JjICpk dmZzLCB1MzIgb2Zmc2V0KQ0KK3sNCisJcmV0dXJuIHJlYWRsKGR2ZnMtPnJlZ3MgKyBkdmZzLT5k dmQtPnJlZ3Nbb2Zmc2V0XSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGR2ZnNyY193cml0ZShzdHJ1 Y3QgbXRrX2R2ZnNyYyAqZHZmcywgdTMyIG9mZnNldCwgdTMyIHZhbCkNCit7DQorCXdyaXRlbCh2 YWwsIGR2ZnMtPnJlZ3MgKyBkdmZzLT5kdmQtPnJlZ3Nbb2Zmc2V0XSk7DQorfQ0KKw0KK2VudW0g ZHZmc3JjX3JlZ3Mgew0KKwlEVkZTUkNfU1dfUkVRLA0KKwlEVkZTUkNfU1dfUkVRMiwNCisJRFZG U1JDX0xFVkVMLA0KKwlEVkZTUkNfU1dfQlcsDQorCURWRlNSQ19MQVNULA0KK307DQorDQorc3Rh dGljIGNvbnN0IGludCBtdDgxODNfcmVnc1tdID0gew0KKwlbRFZGU1JDX1NXX1JFUV0gPQkweDQs DQorCVtEVkZTUkNfU1dfUkVRMl0gPQkweDgsDQorCVtEVkZTUkNfTEVWRUxdID0JMHhEQywNCisJ W0RWRlNSQ19TV19CV10gPQkweDE2MCwNCisJW0RWRlNSQ19MQVNUXSA9CQkweDMwOCwNCit9Ow0K Kw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHZmc3JjX29wcCAqZ2V0X2N1cnJlbnRfb3BwKHN0cnVj dCBtdGtfZHZmc3JjICpkdmZzcmMpDQorew0KKwlpbnQgbGV2ZWw7DQorDQorCWxldmVsID0gZHZm c3JjLT5kdmQtPmdldF9jdXJyZW50X2xldmVsKGR2ZnNyYyk7DQorCXJldHVybiAmZHZmc3JjLT5k dmQtPm9wcHNbZHZmc3JjLT5kcmFtX3R5cGVdW2xldmVsXTsNCit9DQorDQorc3RhdGljIGludCBk dmZzcmNfaXNfaWRsZShzdHJ1Y3QgbXRrX2R2ZnNyYyAqZHZmc3JjKQ0KK3sNCisJaWYgKCFkdmZz cmMtPmR2ZC0+Z2V0X3RhcmdldF9sZXZlbCkNCisJCXJldHVybiB0cnVlOw0KKw0KKwlyZXR1cm4g ZHZmc3JjLT5kdmQtPmdldF90YXJnZXRfbGV2ZWwoZHZmc3JjKTsNCit9DQorDQorc3RhdGljIGlu dCBkdmZzcmNfd2FpdF9mb3JfdmNvcmVfbGV2ZWwoc3RydWN0IG10a19kdmZzcmMgKmR2ZnNyYywg dTMyIGxldmVsKQ0KK3sNCisJY29uc3Qgc3RydWN0IGR2ZnNyY19vcHAgKmN1cnI7DQorDQorCXJl dHVybiByZWFkeF9wb2xsX3RpbWVvdXRfYXRvbWljKGdldF9jdXJyZW50X29wcCwgZHZmc3JjLCBj dXJyLA0KKwkJCQkJIGN1cnItPnZjb3JlX29wcCA+PSBsZXZlbCwgU1RBUlRVUF9USU1FLA0KKwkJ CQkJIFBPTExfVElNRU9VVCk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXQ4MTgzX3dhaXRfZm9yX29w cF9sZXZlbChzdHJ1Y3QgbXRrX2R2ZnNyYyAqZHZmc3JjLCB1MzIgbGV2ZWwpDQorew0KKwljb25z dCBzdHJ1Y3QgZHZmc3JjX29wcCAqdGFyZ2V0LCAqY3VycjsNCisJaW50IHJldDsNCisNCisJdGFy Z2V0ID0gJmR2ZnNyYy0+ZHZkLT5vcHBzW2R2ZnNyYy0+ZHJhbV90eXBlXVtsZXZlbF07DQorCXJl dCA9IHJlYWR4X3BvbGxfdGltZW91dChnZXRfY3VycmVudF9vcHAsIGR2ZnNyYywgY3VyciwNCisJ CQkJIGN1cnItPmRyYW1fb3BwID49IHRhcmdldC0+ZHJhbV9vcHAgJiYNCisJCQkJIGN1cnItPnZj b3JlX29wcCA+PSB0YXJnZXQtPnZjb3JlX29wcCwNCisJCQkJIFNUQVJUVVBfVElNRSwgUE9MTF9U SU1FT1VUKTsNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl93YXJuKGR2ZnNyYy0+ZGV2LA0KKwkJ CSAidGltZW91dCwgdGFyZ2V0OiAldSwgZHJhbTogJWQsIHZjb3JlOiAlZFxuIiwgbGV2ZWwsDQor CQkJIGN1cnItPmRyYW1fb3BwLCBjdXJyLT52Y29yZV9vcHApOw0KKwkJcmV0dXJuIHJldDsNCisJ fQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdDgxODNfZ2V0X3RhcmdldF9s ZXZlbChzdHJ1Y3QgbXRrX2R2ZnNyYyAqZHZmc3JjKQ0KK3sNCisJcmV0dXJuIERWRlNSQ19HRVRf VEFSR0VUX0xFVkVMKGR2ZnNyY19yZWFkKGR2ZnNyYywgRFZGU1JDX0xFVkVMKSk7DQorfQ0KKw0K K3N0YXRpYyBpbnQgbXQ4MTgzX2dldF9jdXJyZW50X2xldmVsKHN0cnVjdCBtdGtfZHZmc3JjICpk dmZzcmMpDQorew0KKwlpbnQgbGV2ZWw7DQorDQorCS8qIEhXIGxldmVsIDAgaXMgYmVnaW4gZnJv bSAweDEwMDAwICovDQorCWxldmVsID0gRFZGU1JDX0dFVF9DVVJSRU5UX0xFVkVMKGR2ZnNyY19y ZWFkKGR2ZnNyYywgRFZGU1JDX0xFVkVMKSk7DQorCS8qIEFycmF5IGluZGV4IHN0YXJ0IGZyb20g MCAqLw0KKwlyZXR1cm4gZmZzKGxldmVsKSAtIDE7DQorfQ0KKw0KK3N0YXRpYyB1MzIgbXQ4MTgz X2dldF92Y29yZV9sZXZlbChzdHJ1Y3QgbXRrX2R2ZnNyYyAqZHZmc3JjKQ0KK3sNCisJcmV0dXJu IChkdmZzcmNfcmVhZChkdmZzcmMsIERWRlNSQ19TV19SRVEyKSA+PiAyKSAmIDB4MzsNCit9DQor DQorc3RhdGljIHZvaWQgbXQ4MTgzX3NldF9kcmFtX2J3KHN0cnVjdCBtdGtfZHZmc3JjICpkdmZz cmMsIHU2NCBidykNCit7DQorCWR2ZnNyY193cml0ZShkdmZzcmMsIERWRlNSQ19TV19CVywga2Jw c190b19tYnBzKGJ3KSAvIDEwMCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10ODE4M19zZXRfb3Bw X2xldmVsKHN0cnVjdCBtdGtfZHZmc3JjICpkdmZzcmMsIHUzMiBsZXZlbCkNCit7DQorCWludCB2 Y29yZV9vcHAsIGRyYW1fb3BwOw0KKwljb25zdCBzdHJ1Y3QgZHZmc3JjX29wcCAqb3BwOw0KKw0K KwkvKiB0cmFuc2xhdGUgcHN0YXRlIHRvIGR2ZnNyYyBsZXZlbCwgYW5kIHNldCBpdCB0byBEVkZT UkMgSFcgKi8NCisJb3BwID0gJmR2ZnNyYy0+ZHZkLT5vcHBzW2R2ZnNyYy0+ZHJhbV90eXBlXVts ZXZlbF07DQorCXZjb3JlX29wcCA9IG9wcC0+dmNvcmVfb3BwOw0KKwlkcmFtX29wcCA9IG9wcC0+ ZHJhbV9vcHA7DQorDQorCWRldl9kYmcoZHZmc3JjLT5kZXYsICJ2Y29yZV9vcHA6ICVkLCBkcmFt X29wcDogJWRcbiIsDQorCQl2Y29yZV9vcHAsIGRyYW1fb3BwKTsNCisJZHZmc3JjX3dyaXRlKGR2 ZnNyYywgRFZGU1JDX1NXX1JFUSwgZHJhbV9vcHAgfCB2Y29yZV9vcHAgPDwgMik7DQorfQ0KKw0K K3N0YXRpYyB2b2lkIG10ODE4M19zZXRfdmNvcmVfbGV2ZWwoc3RydWN0IG10a19kdmZzcmMgKmR2 ZnNyYywgdTMyIGxldmVsKQ0KK3sNCisJZHZmc3JjX3dyaXRlKGR2ZnNyYywgRFZGU1JDX1NXX1JF UTIsIGxldmVsIDw8IDIpOw0KK30NCisNCit2b2lkIG10a19kdmZzcmNfc2VuZF9yZXF1ZXN0KGNv bnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIGNtZCwgdTY0IGRhdGEpDQorew0KKwlpbnQgcmV0 LCBzdGF0ZTsNCisJc3RydWN0IG10a19kdmZzcmMgKmR2ZnNyYyA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOw0KKw0KKwlkZXZfZGJnKGR2ZnNyYy0+ZGV2LCAiY21kOiAlZCwgZGF0YTogJWxsdVxuIiwg Y21kLCBkYXRhKTsNCisNCisJbXV0ZXhfbG9jaygmZHZmc3JjLT5yZXFfbG9jayk7DQorDQorCXN3 aXRjaCAoY21kKSB7DQorCWNhc2UgTVRLX0RWRlNSQ19DTURfQldfUkVRVUVTVDoNCisJCWR2ZnNy Yy0+ZHZkLT5zZXRfZHJhbV9idyhkdmZzcmMsIGRhdGEpOw0KKwkJZ290byBvdXQ7DQorCWNhc2Ug TVRLX0RWRlNSQ19DTURfT1BQX1JFUVVFU1Q6DQorCQlkdmZzcmMtPmR2ZC0+c2V0X29wcF9sZXZl bChkdmZzcmMsIGRhdGEpOw0KKwkJYnJlYWs7DQorCWNhc2UgTVRLX0RWRlNSQ19DTURfVkNPUkVf UkVRVUVTVDoNCisJCWR2ZnNyYy0+ZHZkLT5zZXRfdmNvcmVfbGV2ZWwoZHZmc3JjLCBkYXRhKTsN CisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJZGV2X2VycihkdmZzcmMtPmRldiwgInVua25vd24g Y29tbWFuZDogJWRcbiIsIGNtZCk7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwkvKiBEVkZTUkMg bmVlZCB0byB3YWl0IGF0IGxlYXN0IDJUKH4xOTZucykgdG8gaGFuZGxlIHJlcXVlc3QNCisJICog YWZ0ZXIgcmVjaWV2aW5nIGNvbW1hbmQNCisJICovDQorCXVkZWxheShTVEFSVFVQX1RJTUUpOw0K Kw0KKwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoZHZmc3JjX2lzX2lkbGUsIGR2ZnNyYywNCisJ CQkJIHN0YXRlLCBzdGF0ZSA9PSBEVkZTUkNfSURMRSwNCisJCQkJIFNUQVJUVVBfVElNRSwgUE9M TF9USU1FT1VUKTsNCisNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl93YXJuKGR2ZnNyYy0+ZGV2 LA0KKwkJCSAiJWQ6IGlkbGUgdGltZW91dCwgZGF0YTogJWxsdSwgbGFzdDogJWQgLT4gJWRcbiIs DQorCQkJIGNtZCwgZGF0YSwNCisJCQkgZHZmc3JjLT5kdmQtPmdldF9jdXJyZW50X2xldmVsKGR2 ZnNyYyksDQorCQkJIGR2ZnNyYy0+ZHZkLT5nZXRfdGFyZ2V0X2xldmVsKGR2ZnNyYykpOw0KKwkJ Z290byBvdXQ7DQorCX0NCisNCisJaWYgKGNtZCA9PSBNVEtfRFZGU1JDX0NNRF9PUFBfUkVRVUVT VCkNCisJCWR2ZnNyYy0+ZHZkLT53YWl0X2Zvcl9vcHBfbGV2ZWwoZHZmc3JjLCBkYXRhKTsNCisJ ZWxzZQ0KKwkJZHZmc3JjLT5kdmQtPndhaXRfZm9yX3Zjb3JlX2xldmVsKGR2ZnNyYywgZGF0YSk7 DQorDQorb3V0Og0KKwltdXRleF91bmxvY2soJmR2ZnNyYy0+cmVxX2xvY2spOw0KK30NCitFWFBP UlRfU1lNQk9MKG10a19kdmZzcmNfc2VuZF9yZXF1ZXN0KTsNCisNCitpbnQgbXRrX2R2ZnNyY19x dWVyeV9pbmZvKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIGNtZCwgaW50ICpkYXRhKQ0K K3sNCisJc3RydWN0IG10a19kdmZzcmMgKmR2ZnNyYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0K Kw0KKwlzd2l0Y2ggKGNtZCkgew0KKwljYXNlIE1US19EVkZTUkNfQ01EX1ZDT1JFX1FVRVJZOg0K KwkJKmRhdGEgPSBkdmZzcmMtPmR2ZC0+Z2V0X3Zjb3JlX2xldmVsKGR2ZnNyYyk7DQorCQlicmVh azsNCisJZGVmYXVsdDoNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXJldHVybiAwOw0K K30NCitFWFBPUlRfU1lNQk9MKG10a19kdmZzcmNfcXVlcnlfaW5mbyk7DQorDQorc3RhdGljIGlu dCBkdmZzcmNfc2V0X3BlcmZvcm1hbmNlKHN0cnVjdCBub3RpZmllcl9ibG9jayAqYiwNCisJCQkJ ICB1bnNpZ25lZCBsb25nIHBzdGF0ZSwgdm9pZCAqdikNCit7DQorCWJvb2wgbWF0Y2ggPSBmYWxz ZTsNCisJaW50IGk7DQorCXN0cnVjdCBtdGtfZHZmc3JjICpkdmZzcmM7DQorCXN0cnVjdCBzY3Bf ZXZlbnRfZGF0YSAqc2MgPSB2Ow0KKwlzdHJ1Y3QgZHZmc3JjX2RvbWFpbiAqZDsNCisJdTMyIGhp Z2hlc3Q7DQorDQorCWlmIChzYy0+ZXZlbnRfdHlwZSAhPSBNVEtfU0NQU1lTX1BTVEFURSkNCisJ CXJldHVybiAwOw0KKw0KKwlkdmZzcmMgPSBjb250YWluZXJfb2YoYiwgc3RydWN0IG10a19kdmZz cmMsIHNjcHN5c19ub3RpZmllcik7DQorDQorCWQgPSBkdmZzcmMtPmR2ZC0+ZG9tYWluczsNCisN CisJaWYgKHBzdGF0ZSA+IGR2ZnNyYy0+ZHZkLT5udW1fb3BwKSB7DQorCQlkZXZfZXJyKGR2ZnNy Yy0+ZGV2LCAicHN0YXRlIG91dCBvZiByYW5nZSA9ICVsZFxuIiwgcHN0YXRlKTsNCisJCXJldHVy biAwOw0KKwl9DQorDQorCW11dGV4X2xvY2soJmR2ZnNyYy0+cHN0YXRlX2xvY2spOw0KKw0KKwlm b3IgKGkgPSAwLCBoaWdoZXN0ID0gMDsgaSA8IGR2ZnNyYy0+ZHZkLT5udW1fZG9tYWluczsgaSsr LCBkKyspIHsNCisJCWlmIChzYy0+ZG9tYWluX2lkID09IGQtPmlkKSB7DQorCQkJZC0+c3RhdGUg PSBwc3RhdGU7DQorCQkJbWF0Y2ggPSB0cnVlOw0KKwkJfQ0KKwkJaGlnaGVzdCA9IG1heChoaWdo ZXN0LCBkLT5zdGF0ZSk7DQorCX0NCisNCisJaWYgKCFtYXRjaCkNCisJCWdvdG8gb3V0Ow0KKw0K KwkvKiBwc3RhdCBzdGFydCBmcm9tIGxldmVsIDEsIGFycmF5IGluZGV4IHN0YXJ0IGZyb20gMCAq Lw0KKwltdGtfZHZmc3JjX3NlbmRfcmVxdWVzdChkdmZzcmMtPmRldiwgTVRLX0RWRlNSQ19DTURf T1BQX1JFUVVFU1QsDQorCQkJCWhpZ2hlc3QgLSAxKTsNCisNCitvdXQ6DQorCW11dGV4X3VubG9j aygmZHZmc3JjLT5wc3RhdGVfbG9jayk7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9p ZCBwc3RhdGVfbm90aWZpZXJfcmVnaXN0ZXIoc3RydWN0IG10a19kdmZzcmMgKmR2ZnNyYykNCit7 DQorCWR2ZnNyYy0+c2Nwc3lzX25vdGlmaWVyLm5vdGlmaWVyX2NhbGwgPSBkdmZzcmNfc2V0X3Bl cmZvcm1hbmNlOw0KKwlyZWdpc3Rlcl9zY3BzeXNfbm90aWZpZXIoJmR2ZnNyYy0+c2Nwc3lzX25v dGlmaWVyKTsNCit9DQorDQorc3RhdGljIGludCBtdGtfZHZmc3JjX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQorew0KKwlzdHJ1Y3QgYXJtX3NtY2NjX3JlcyBhcmVzOw0KKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlczsNCisJc3RydWN0IG10a19kdmZzcmMgKmR2ZnNyYzsNCisJaW50 IHJldDsNCisNCisJZHZmc3JjID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqZHZm c3JjKSwgR0ZQX0tFUk5FTCk7DQorCWlmICghZHZmc3JjKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQor DQorCWR2ZnNyYy0+ZHZkID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5kZXYpOw0K KwlkdmZzcmMtPmRldiA9ICZwZGV2LT5kZXY7DQorDQorCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNv dXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQorCWR2ZnNyYy0+cmVncyA9IGRldm1faW9y ZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOw0KKwlpZiAoSVNfRVJSKGR2ZnNyYy0+cmVn cykpDQorCQlyZXR1cm4gUFRSX0VSUihkdmZzcmMtPnJlZ3MpOw0KKw0KKwlkdmZzcmMtPmNsa19k dmZzcmMgPSBkZXZtX2Nsa19nZXQoZHZmc3JjLT5kZXYsICJkdmZzcmMiKTsNCisJaWYgKElTX0VS UihkdmZzcmMtPmNsa19kdmZzcmMpKSB7DQorCQlkZXZfZXJyKGR2ZnNyYy0+ZGV2LCAiZmFpbGVk IHRvIGdldCBjbG9jazogJWxkXG4iLA0KKwkJCVBUUl9FUlIoZHZmc3JjLT5jbGtfZHZmc3JjKSk7 DQorCQlyZXR1cm4gUFRSX0VSUihkdmZzcmMtPmNsa19kdmZzcmMpOw0KKwl9DQorDQorCXJldCA9 IGNsa19wcmVwYXJlX2VuYWJsZShkdmZzcmMtPmNsa19kdmZzcmMpOw0KKwlpZiAocmV0KQ0KKwkJ cmV0dXJuIHJldDsNCisNCisJbXV0ZXhfaW5pdCgmZHZmc3JjLT5yZXFfbG9jayk7DQorCW11dGV4 X2luaXQoJmR2ZnNyYy0+cHN0YXRlX2xvY2spOw0KKw0KKwlhcm1fc21jY2Nfc21jKE1US19TSVBf U1BNLCBNVEtfU0lQX1NQTV9EVkZTUkNfSU5JVCwgMCwgMCwgMCwgMCwgMCwgMCwNCisJCSAgICAg ICZhcmVzKTsNCisNCisJaWYgKCFhcmVzLmEwKSB7DQorCQlkdmZzcmMtPmRyYW1fdHlwZSA9IGFy ZXMuYTE7DQorCQlkZXZfaW5mbyhkdmZzcmMtPmRldiwgImRyYW1fdHlwZTogJWRcbiIsIGR2ZnNy Yy0+ZHJhbV90eXBlKTsNCisJfSBlbHNlIHsNCisJCWRldl9lcnIoZHZmc3JjLT5kZXYsICJpbml0 IGZhaWxzOiAlbHVcbiIsIGFyZXMuYTApOw0KKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGR2ZnNy Yy0+Y2xrX2R2ZnNyYyk7DQorCQlyZXR1cm4gYXJlcy5hMDsNCisJfQ0KKw0KKwlwbGF0Zm9ybV9z ZXRfZHJ2ZGF0YShwZGV2LCBkdmZzcmMpOw0KKwlwc3RhdGVfbm90aWZpZXJfcmVnaXN0ZXIoZHZm c3JjKTsNCisNCisJcmV0dXJuIGRldm1fb2ZfcGxhdGZvcm1fcG9wdWxhdGUoJnBkZXYtPmRldik7 DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHZmc3JjX29wcCBkdmZzcmNfb3BwX210ODE4 M19scDRbXSA9IHsNCisJezAsIDB9LCB7MCwgMX0sIHswLCAyfSwgezEsIDJ9LA0KK307DQorDQor c3RhdGljIGNvbnN0IHN0cnVjdCBkdmZzcmNfb3BwIGR2ZnNyY19vcHBfbXQ4MTgzX2xwM1tdID0g ew0KKwl7MCwgMH0sIHswLCAxfSwgezEsIDF9LCB7MSwgMn0sDQorfTsNCisNCitzdGF0aWMgY29u c3Qgc3RydWN0IGR2ZnNyY19vcHAgKmR2ZnNyY19vcHBfbXQ4MTgzW10gPSB7DQorCVtNVDgxODNf RFZGU1JDX09QUF9MUDRdID0gZHZmc3JjX29wcF9tdDgxODNfbHA0LA0KKwlbTVQ4MTgzX0RWRlNS Q19PUFBfTFA0WF0gPSBkdmZzcmNfb3BwX210ODE4M19scDMsDQorCVtNVDgxODNfRFZGU1JDX09Q UF9MUDNdID0gZHZmc3JjX29wcF9tdDgxODNfbHAzLA0KK307DQorDQorc3RhdGljIHN0cnVjdCBk dmZzcmNfZG9tYWluIGR2ZnNyY19kb21haW5zX210ODE4M1tdID0gew0KKwl7IE1UODE4M19QT1dF Ul9ET01BSU5fTUZHX0FTWU5DLCAwIH0sDQorCXsgTVQ4MTgzX1BPV0VSX0RPTUFJTl9NRkcsIDAg fSwNCisJeyBNVDgxODNfUE9XRVJfRE9NQUlOX0NBTSwgMCB9LA0KKwl7IE1UODE4M19QT1dFUl9E T01BSU5fRElTUCwgMCB9LA0KKwl7IE1UODE4M19QT1dFUl9ET01BSU5fSVNQLCAwIH0sDQorCXsg TVQ4MTgzX1BPV0VSX0RPTUFJTl9WREVDLCAwIH0sDQorCXsgTVQ4MTgzX1BPV0VSX0RPTUFJTl9W RU5DLCAwIH0sDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGR2ZnNyY19zb2NfZGF0YSBt dDgxODNfZGF0YSA9IHsNCisJLm9wcHMgPSBkdmZzcmNfb3BwX210ODE4MywNCisJLm51bV9vcHAg PSBBUlJBWV9TSVpFKGR2ZnNyY19vcHBfbXQ4MTgzX2xwNCksDQorCS5yZWdzID0gbXQ4MTgzX3Jl Z3MsDQorCS5kb21haW5zID0gZHZmc3JjX2RvbWFpbnNfbXQ4MTgzLA0KKwkubnVtX2RvbWFpbnMg PSBBUlJBWV9TSVpFKGR2ZnNyY19kb21haW5zX210ODE4MyksDQorCS5nZXRfdGFyZ2V0X2xldmVs ID0gbXQ4MTgzX2dldF90YXJnZXRfbGV2ZWwsDQorCS5nZXRfY3VycmVudF9sZXZlbCA9IG10ODE4 M19nZXRfY3VycmVudF9sZXZlbCwNCisJLmdldF92Y29yZV9sZXZlbCA9IG10ODE4M19nZXRfdmNv cmVfbGV2ZWwsDQorCS5zZXRfZHJhbV9idyA9IG10ODE4M19zZXRfZHJhbV9idywNCisJLnNldF9v cHBfbGV2ZWwgPSBtdDgxODNfc2V0X29wcF9sZXZlbCwNCisJLnNldF92Y29yZV9sZXZlbCA9IG10 ODE4M19zZXRfdmNvcmVfbGV2ZWwsDQorCS53YWl0X2Zvcl9vcHBfbGV2ZWwgPSBtdDgxODNfd2Fp dF9mb3Jfb3BwX2xldmVsLA0KKwkud2FpdF9mb3JfdmNvcmVfbGV2ZWwgPSBkdmZzcmNfd2FpdF9m b3JfdmNvcmVfbGV2ZWwsDQorfTsNCisNCitzdGF0aWMgaW50IG10a19kdmZzcmNfcmVtb3ZlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQorew0KKwlzdHJ1Y3QgbXRrX2R2ZnNyYyAqZHZm c3JjID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQorDQorCWNsa19kaXNhYmxlX3VucHJl cGFyZShkdmZzcmMtPmNsa19kdmZzcmMpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2R2ZnNyY19vZl9tYXRjaFtdID0gew0KKwl7 DQorCQkuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxODMtZHZmc3JjIiwNCisJCS5kYXRhID0g Jm10ODE4M19kYXRhLA0KKwl9LCB7DQorCQkvKiBzZW50aW5lbCAqLw0KKwl9LA0KK307DQorDQor c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2R2ZnNyY19kcml2ZXIgPSB7DQorCS5w cm9iZQk9IG10a19kdmZzcmNfcHJvYmUsDQorCS5yZW1vdmUJPSBtdGtfZHZmc3JjX3JlbW92ZSwN CisJLmRyaXZlciA9IHsNCisJCS5uYW1lID0gIm10ay1kdmZzcmMiLA0KKwkJLm9mX21hdGNoX3Rh YmxlID0gb2ZfbWF0Y2hfcHRyKG10a19kdmZzcmNfb2ZfbWF0Y2gpLA0KKwl9LA0KK307DQorDQor c3RhdGljIGludCBfX2luaXQgbXRrX2R2ZnNyY19pbml0KHZvaWQpDQorew0KKwlyZXR1cm4gcGxh dGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZtdGtfZHZmc3JjX2RyaXZlcik7DQorfQ0KK3N1YnN5c19p bml0Y2FsbChtdGtfZHZmc3JjX2luaXQpOw0KKw0KK3N0YXRpYyB2b2lkIF9fZXhpdCBtdGtfZHZm c3JjX2V4aXQodm9pZCkNCit7DQorCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZtdGtfZHZm c3JjX2RyaXZlcik7DQorfQ0KK21vZHVsZV9leGl0KG10a19kdmZzcmNfZXhpdCk7DQorDQorTU9E VUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0KK01PRFVMRV9ERVNDUklQVElPTigiTVRLIERWRlNSQyBk cml2ZXIiKTsNCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NvYy9tZWRpYXRlay9tdGtfZHZmc3JjLmgg Yi9pbmNsdWRlL3NvYy9tZWRpYXRlay9tdGtfZHZmc3JjLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQppbmRleCAwMDAwMDAwLi4wNmFkMjAxDQotLS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL3Nv Yy9tZWRpYXRlay9tdGtfZHZmc3JjLmgNCkBAIC0wLDAgKzEsMzAgQEANCisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDE4IE1lZGlh VGVrIEluYy4NCisgKi8NCisjaWZuZGVmIF9fU09DX01US19EVkZTUkNfSA0KKyNkZWZpbmUgX19T T0NfTVRLX0RWRlNSQ19IDQorDQorI2RlZmluZSBNVEtfRFZGU1JDX0NNRF9CV19SRVFVRVNUCTAN CisjZGVmaW5lIE1US19EVkZTUkNfQ01EX09QUF9SRVFVRVNUCTENCisjZGVmaW5lIE1US19EVkZT UkNfQ01EX1ZDT1JFX1JFUVVFU1QJMg0KKw0KKyNkZWZpbmUgTVRLX0RWRlNSQ19DTURfVkNPUkVf UVVFUlkJMA0KKw0KKyNpZiBJU19FTkFCTEVEKENPTkZJR19NVEtfRFZGU1JDKQ0KK3ZvaWQgbXRr X2R2ZnNyY19zZW5kX3JlcXVlc3QoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCB1MzIgY21kLCB1 NjQgZGF0YSk7DQoraW50IG10a19kdmZzcmNfcXVlcnlfaW5mbyhjb25zdCBzdHJ1Y3QgZGV2aWNl ICpkZXYsIHUzMiBjbWQsIGludCAqZGF0YSk7DQorDQorI2Vsc2UNCisNCitzdGF0aWMgaW5saW5l IHZvaWQgbXRrX2R2ZnNyY19zZW5kX3JlcXVlc3QoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCB1 MzIgY21kLA0KKwkJCQkJICAgdTY0IGRhdGEpDQoreyByZXR1cm4gLUVOT0RFVjsgfQ0KKw0KK3N0 YXRpYyBpbmxpbmUgaW50IG10a19kdmZzcmNfcXVlcnlfaW5mbyhjb25zdCBzdHJ1Y3QgZGV2aWNl ICpkZXYsIHUzMiBjbWQsDQorCQkJCQlpbnQgKmRhdGEpOw0KK3sgcmV0dXJuIC1FTk9ERVY7IH0N CisNCisjZW5kaWYgLyogQ09ORklHX01US19EVkZTUkMgKi8NCisNCisjZW5kaWYNCi0tIA0KMS45 LjENCg==