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=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 AE1BBC5ACBF for ; Fri, 13 Mar 2020 09:34:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 635FE20746 for ; Fri, 13 Mar 2020 09:34:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="jP5O55pi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726761AbgCMJeo (ORCPT ); Fri, 13 Mar 2020 05:34:44 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:9371 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726216AbgCMJeo (ORCPT ); Fri, 13 Mar 2020 05:34:44 -0400 X-UUID: 3470402541e84a00987d3407b9a2a19f-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=nSetGGb2jD7H2Q1+b1MHx20VuqlBL37mjvVtdatOQl4=; b=jP5O55pigqkIRnOfQIMUjSlFvQPibZxrT6Zz+XzwU1VQIq6RM3qfITR4j9Galg8P2+MORBAira8dLalQzYJ0n7FWGXJDtziwugZhCEYfUC9YfOOMbYbwWokyZgm5M/FU3KANpvarZGTCxWC5vYbbPP8YZuNXTaaXM04zlayh95I=; X-UUID: 3470402541e84a00987d3407b9a2a19f-20200313 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 843389409; Fri, 13 Mar 2020 17:34:30 +0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 13 Mar 2020 17:33:33 +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 09/13] interconnect: mediatek: Add mt8183 interconnect provider driver Date: Fri, 13 Mar 2020 17:34:22 +0800 Message-ID: <1584092066-24425-10-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-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org SW50cm9kdWNlIE1lZGlhdGVrIE1UODE4MyBzcGVjaWZpYyBwcm92aWRlciBkcml2ZXIgdXNpbmcg dGhlDQppbnRlcmNvbm5lY3QgZnJhbWV3b3JrLg0KDQpTaWduZWQtb2ZmLWJ5OiBIZW5yeSBDaGVu IDxoZW5yeWMuY2hlbkBtZWRpYXRlay5jb20+DQotLS0NCiBkcml2ZXJzL2ludGVyY29ubmVjdC9L Y29uZmlnICAgICAgICAgICAgfCAgIDEgKw0KIGRyaXZlcnMvaW50ZXJjb25uZWN0L01ha2VmaWxl ICAgICAgICAgICB8ICAgMSArDQogZHJpdmVycy9pbnRlcmNvbm5lY3QvbWVkaWF0ZWsvS2NvbmZp ZyAgIHwgIDEzICsrDQogZHJpdmVycy9pbnRlcmNvbm5lY3QvbWVkaWF0ZWsvTWFrZWZpbGUgIHwg ICAzICsNCiBkcml2ZXJzL2ludGVyY29ubmVjdC9tZWRpYXRlay9tdGstZW1pLmMgfCAyNDIgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiA1IGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNl cnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaW50ZXJjb25uZWN0L21lZGlh dGVrL0tjb25maWcNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9pbnRlcmNvbm5lY3QvbWVk aWF0ZWsvTWFrZWZpbGUNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9pbnRlcmNvbm5lY3Qv bWVkaWF0ZWsvbXRrLWVtaS5jDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2ludGVyY29ubmVjdC9L Y29uZmlnIGIvZHJpdmVycy9pbnRlcmNvbm5lY3QvS2NvbmZpZw0KaW5kZXggYmZhNGNhMy4uZGQ5 ZWNiNiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaW50ZXJjb25uZWN0L0tjb25maWcNCisrKyBiL2Ry aXZlcnMvaW50ZXJjb25uZWN0L0tjb25maWcNCkBAIC0xMiw1ICsxMiw2IEBAIG1lbnVjb25maWcg SU5URVJDT05ORUNUDQogaWYgSU5URVJDT05ORUNUDQogDQogc291cmNlICJkcml2ZXJzL2ludGVy Y29ubmVjdC9xY29tL0tjb25maWciDQorc291cmNlICJkcml2ZXJzL2ludGVyY29ubmVjdC9tZWRp YXRlay9LY29uZmlnIg0KIA0KIGVuZGlmDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnRlcmNvbm5l Y3QvTWFrZWZpbGUgYi9kcml2ZXJzL2ludGVyY29ubmVjdC9NYWtlZmlsZQ0KaW5kZXggNzI1MDI5 YS4uMzMwYTEwOCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaW50ZXJjb25uZWN0L01ha2VmaWxlDQor KysgYi9kcml2ZXJzL2ludGVyY29ubmVjdC9NYWtlZmlsZQ0KQEAgLTUsMyArNSw0IEBAIGljYy1j b3JlLW9ianMJCQkJOj0gY29yZS5vDQogDQogb2JqLSQoQ09ORklHX0lOVEVSQ09OTkVDVCkJCSs9 IGljYy1jb3JlLm8NCiBvYmotJChDT05GSUdfSU5URVJDT05ORUNUX1FDT00pCQkrPSBxY29tLw0K K29iai0kKENPTkZJR19JTlRFUkNPTk5FQ1RfTVRLKQkJKz0gbWVkaWF0ZWsvDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9pbnRlcmNvbm5lY3QvbWVkaWF0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvaW50ZXJj b25uZWN0L21lZGlhdGVrL0tjb25maWcNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwLi45NzJkM2JiDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL2ludGVyY29ubmVjdC9t ZWRpYXRlay9LY29uZmlnDQpAQCAtMCwwICsxLDEzIEBADQorY29uZmlnIElOVEVSQ09OTkVDVF9N VEsNCisJYm9vbCAiTWVkaWF0ZWsgTmV0d29yay1vbi1DaGlwIGludGVyY29ubmVjdCBkcml2ZXJz Ig0KKwlkZXBlbmRzIG9uIEFSQ0hfTUVESUFURUsNCisJaGVscA0KKwkgIFN1cHBvcnQgZm9yIE1l ZGlhdGVrJ3MgTmV0d29yay1vbi1DaGlwIGludGVyY29ubmVjdCBoYXJkd2FyZS4NCisNCitjb25m aWcgSU5URVJDT05ORUNUX01US19FTUkNCisJdHJpc3RhdGUgIk1lZGlhdGVrIEVNSSBpbnRlcmNv bm5lY3QgZHJpdmVyIg0KKwlkZXBlbmRzIG9uIElOVEVSQ09OTkVDVF9NVEsNCisJZGVwZW5kcyBv biAoTVRLX0RWRlNSQyAmJiBPRikNCisJaGVscA0KKwkgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHRo ZSBNZWRpYXRlayBOZXR3b3JrLW9uLUNoaXAgb24gRFZGU1JDLWJhc2VkDQorCSAgcGxhdGZvcm1z Lg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW50ZXJjb25uZWN0L21lZGlhdGVrL01ha2VmaWxlIGIv ZHJpdmVycy9pbnRlcmNvbm5lY3QvbWVkaWF0ZWsvTWFrZWZpbGUNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwLi4zNTM4NDJiDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJz L2ludGVyY29ubmVjdC9tZWRpYXRlay9NYWtlZmlsZQ0KQEAgLTAsMCArMSwzIEBADQorIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKw0KK29iai0kKENPTkZJR19JTlRFUkNPTk5F Q1RfTVRLX0VNSSkgKz0gbXRrLWVtaS5vDQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2ludGVyY29ubmVjdC9tZWRpYXRlay9tdGstZW1pLmMgYi9kcml2 ZXJzL2ludGVyY29ubmVjdC9tZWRpYXRlay9tdGstZW1pLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQppbmRleCAwMDAwMDAwLi4wYTE2OTkyDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL2lu dGVyY29ubmVjdC9tZWRpYXRlay9tdGstZW1pLmMNCkBAIC0wLDAgKzEsMjQyIEBADQorLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCisvKg0KKyAqIENvcHlyaWdodCAoYykgMjAx OSwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKi8N CisNCisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvaW50ZXJjb25uZWN0L210ayxtdDgxODMtZW1pLmg+ DQorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbnRlcmNvbm5l Y3QtcHJvdmlkZXIuaD4NCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxp bnV4L29mX2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPg0KKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCisjaW5jbHVkZSA8c29jL21lZGlhdGVrL210 a19kdmZzcmMuaD4NCisNCitlbnVtIG10a19pY2NfbmFtZSB7DQorCVNMQVZFX0REUl9FTUksDQor CU1BU1RFUl9NQ1VTWVMsDQorCU1BU1RFUl9HUFVTWVMsDQorCU1BU1RFUl9NTVNZUywNCisJTUFT VEVSX01NX1ZQVSwNCisJTUFTVEVSX01NX0RJU1AsDQorCU1BU1RFUl9NTV9WREVDLA0KKwlNQVNU RVJfTU1fVkVOQywNCisJTUFTVEVSX01NX0NBTSwNCisJTUFTVEVSX01NX0lNRywNCisJTUFTVEVS X01NX01EUCwNCit9Ow0KKw0KKyNkZWZpbmUgTVQ4MTgzX01BWF9MSU5LUwkxDQorDQorLyoqDQor ICogc3RydWN0IG10a19pY2Nfbm9kZSAtIE1lZGlhdGVrIHNwZWNpZmljIGludGVyY29ubmVjdCBu b2Rlcw0KKyAqIEBuYW1lOiB0aGUgbm9kZSBuYW1lIHVzZWQgaW4gZGVidWdmcw0KKyAqIEBlcDog dHJ1ZSBpZiB0aGUgbm9kZSBpcyBhbiBlbmQgcG9pbnQuDQorICogQGlkOiBhIHVuaXF1ZSBub2Rl IGlkZW50aWZpZXINCisgKiBAbGlua3M6IGFuIGFycmF5IG9mIG5vZGVzIHdoZXJlIHdlIGNhbiBn byBuZXh0IHdoaWxlIHRyYXZlcnNpbmcNCisgKiBAbnVtX2xpbmtzOiB0aGUgdG90YWwgbnVtYmVy IG9mIEBsaW5rcw0KKyAqIEBidXN3aWR0aDogd2lkdGggb2YgdGhlIGludGVyY29ubmVjdCBiZXR3 ZWVuIGEgbm9kZSBhbmQgdGhlIGJ1cw0KKyAqIEBzdW1fYXZnOiBjdXJyZW50IHN1bSBhZ2dyZWdh dGUgdmFsdWUgb2YgYWxsIGF2ZyBidyBrQnBzIHJlcXVlc3RzDQorICogQG1heF9wZWFrOiBjdXJy ZW50IG1heCBhZ2dyZWdhdGUgdmFsdWUgb2YgYWxsIHBlYWsgYncga0JwcyByZXF1ZXN0cw0KKyAq Lw0KK3N0cnVjdCBtdGtfaWNjX25vZGUgew0KKwl1bnNpZ25lZCBjaGFyICpuYW1lOw0KKwlib29s IGVwOw0KKwl1MTYgaWQ7DQorCXUxNiBsaW5rc1tNVDgxODNfTUFYX0xJTktTXTsNCisJdTE2IG51 bV9saW5rczsNCisJdTE2IGJ1c3dpZHRoOw0KKwl1NjQgc3VtX2F2ZzsNCisJdTY0IG1heF9wZWFr Ow0KK307DQorDQorc3RydWN0IG10a19pY2NfZGVzYyB7DQorCXN0cnVjdCBtdGtfaWNjX25vZGUg Kipub2RlczsNCisJc2l6ZV90IG51bV9ub2RlczsNCit9Ow0KKw0KKyNkZWZpbmUgREVGSU5FX01O T0RFKF9uYW1lLCBfaWQsIF9idXN3aWR0aCwgX2VwLCAuLi4pCVwNCisJCXN0YXRpYyBzdHJ1Y3Qg bXRrX2ljY19ub2RlIF9uYW1lID0gewkJCVwNCisJCS5uYW1lID0gI19uYW1lLAkJCQkJCVwNCisJ CS5pZCA9IF9pZCwJCQkJCQlcDQorCQkuYnVzd2lkdGggPSBfYnVzd2lkdGgsCQkJCQlcDQorCQku ZXAgPSBfZXAsCQkJCQkJXA0KKwkJLm51bV9saW5rcyA9IEFSUkFZX1NJWkUoKChpbnRbXSl7IF9f VkFfQVJHU19fIH0pKSwJXA0KK30NCisNCitERUZJTkVfTU5PREUoZGRyX2VtaSwgU0xBVkVfRERS X0VNSSwgMTAyNCwgMSwgMCk7DQorREVGSU5FX01OT0RFKG1jdXN5cywgTUFTVEVSX01DVVNZUywg MjU2LCAwLCBTTEFWRV9ERFJfRU1JKTsNCitERUZJTkVfTU5PREUoZ3B1LCBNQVNURVJfR1BVU1lT LCAyNTYsIDAsIFNMQVZFX0REUl9FTUkpOw0KK0RFRklORV9NTk9ERShtbXN5cywgTUFTVEVSX01N U1lTLCAyNTYsIDAsIFNMQVZFX0REUl9FTUkpOw0KK0RFRklORV9NTk9ERShtbV92cHUsIE1BU1RF Ul9NTV9WUFUsIDEyOCwgMCwgTUFTVEVSX01NU1lTKTsNCitERUZJTkVfTU5PREUobW1fZGlzcCwg TUFTVEVSX01NX0RJU1AsIDEyOCwgMCwgTUFTVEVSX01NU1lTKTsNCitERUZJTkVfTU5PREUobW1f dmRlYywgTUFTVEVSX01NX1ZERUMsIDEyOCwgMCwgTUFTVEVSX01NU1lTKTsNCitERUZJTkVfTU5P REUobW1fdmVuYywgTUFTVEVSX01NX1ZFTkMsIDEyOCwgMCwgTUFTVEVSX01NU1lTKTsNCitERUZJ TkVfTU5PREUobW1fY2FtLCBNQVNURVJfTU1fQ0FNLCAxMjgsIDAsIE1BU1RFUl9NTVNZUyk7DQor REVGSU5FX01OT0RFKG1tX2ltZywgTUFTVEVSX01NX0lNRywgMTI4LCAwLCBNQVNURVJfTU1TWVMp Ow0KK0RFRklORV9NTk9ERShtbV9tZHAsIE1BU1RFUl9NTV9NRFAsIDEyOCwgMCwgTUFTVEVSX01N U1lTKTsNCisNCitzdGF0aWMgc3RydWN0IG10a19pY2Nfbm9kZSAqbXQ4MTgzX2ljY19ub2Rlc1td ID0gew0KKwlbTVQ4MTgzX1NMQVZFX0REUl9FTUldID0gJmRkcl9lbWksDQorCVtNVDgxODNfTUFT VEVSX01DVVNZU10gPSAmbWN1c3lzLA0KKwlbTVQ4MTgzX01BU1RFUl9HUFVdID0gJmdwdSwNCisJ W01UODE4M19NQVNURVJfTU1TWVNdID0gJm1tc3lzLA0KKwlbTVQ4MTgzX01BU1RFUl9NTV9WUFVd ID0gJm1tX3ZwdSwNCisJW01UODE4M19NQVNURVJfTU1fRElTUF0gPSAmbW1fZGlzcCwNCisJW01U ODE4M19NQVNURVJfTU1fVkRFQ10gPSAmbW1fdmRlYywNCisJW01UODE4M19NQVNURVJfTU1fVkVO Q10gPSAmbW1fdmVuYywNCisJW01UODE4M19NQVNURVJfTU1fQ0FNXSA9ICZtbV9jYW0sDQorCVtN VDgxODNfTUFTVEVSX01NX0lNR10gPSAmbW1faW1nLA0KKwlbTVQ4MTgzX01BU1RFUl9NTV9NRFBd ID0gJm1tX21kcCwNCit9Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgbXRrX2ljY19kZXNjIG10ODE4M19p Y2MgPSB7DQorCS5ub2RlcyA9IG10ODE4M19pY2Nfbm9kZXMsDQorCS5udW1fbm9kZXMgPSBBUlJB WV9TSVpFKG10ODE4M19pY2Nfbm9kZXMpLA0KK307DQorDQorc3RhdGljIGludCBlbWlfaWNjX2Fn Z3JlZ2F0ZShzdHJ1Y3QgaWNjX25vZGUgKm5vZGUsIHUzMiB0YWcsIHUzMiBhdmdfYncsDQorCQkJ ICAgICB1MzIgcGVha19idywgdTMyICphZ2dfYXZnLCB1MzIgKmFnZ19wZWFrKQ0KK3sNCisJc3Ry dWN0IG10a19pY2Nfbm9kZSAqaW47DQorDQorCWluID0gbm9kZS0+ZGF0YTsNCisNCisJKmFnZ19h dmcgKz0gYXZnX2J3Ow0KKwkqYWdnX3BlYWsgKz0gcGVha19idzsNCisNCisJaW4tPnN1bV9hdmcg PSAqYWdnX2F2ZzsNCisJaW4tPm1heF9wZWFrID0gKmFnZ19wZWFrOw0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludCBlbWlfaWNjX3NldChzdHJ1Y3QgaWNjX25vZGUgKnNyYywgc3Ry dWN0IGljY19ub2RlICpkc3QpDQorew0KKwlpbnQgcmV0ID0gMDsNCisJc3RydWN0IG10a19pY2Nf bm9kZSAqbm9kZTsNCisNCisJbm9kZSA9IGRzdC0+ZGF0YTsNCisJaWYgKG5vZGUtPmVwKSB7DQor CQlwcl9kZWJ1Zygic3VtX2F2ZyAoJWxsdSksIG1heF9wZWFrICglbGx1KVxuIiwNCisJCQkgbm9k ZS0+c3VtX2F2Zywgbm9kZS0+bWF4X3BlYWspOw0KKwkJbXRrX2R2ZnNyY19zZW5kX3JlcXVlc3Qo c3JjLT5wcm92aWRlci0+ZGV2LT5wYXJlbnQsDQorCQkJCQlNVEtfRFZGU1JDX0NNRF9CV19SRVFV RVNULA0KKwkJCQkJbm9kZS0+bWF4X3BlYWspOw0KKwl9DQorDQorCXJldHVybiByZXQ7DQorfQ0K Kw0KK3N0YXRpYyBpbnQgZW1pX2ljY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dik7DQorc3RhdGljIGludCBlbWlfaWNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQorew0KKwlpbnQgcmV0Ow0KKwljb25zdCBzdHJ1Y3QgbXRrX2ljY19kZXNjICpkZXNjOw0K KwlzdHJ1Y3QgaWNjX25vZGUgKm5vZGU7DQorCXN0cnVjdCBpY2Nfb25lY2VsbF9kYXRhICpkYXRh Ow0KKwlzdHJ1Y3QgaWNjX3Byb3ZpZGVyICpwcm92aWRlcjsNCisJc3RydWN0IG10a19pY2Nfbm9k ZSAqKm1ub2RlczsNCisJc2l6ZV90IG51bV9ub2RlcywgaSwgajsNCisNCisJZGVzYyA9IG9mX2Rl dmljZV9nZXRfbWF0Y2hfZGF0YSgmcGRldi0+ZGV2KTsNCisJaWYgKCFkZXNjKQ0KKwkJcmV0dXJu IC1FSU5WQUw7DQorDQorCW1ub2RlcyA9IGRlc2MtPm5vZGVzOw0KKwludW1fbm9kZXMgPSBkZXNj LT5udW1fbm9kZXM7DQorDQorCXByb3ZpZGVyID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNp emVvZigqcHJvdmlkZXIpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFwcm92aWRlcikNCisJCXJldHVy biAtRU5PTUVNOw0KKw0KKwlkYXRhID0gZGV2bV9rY2FsbG9jKCZwZGV2LT5kZXYsIG51bV9ub2Rl cywgc2l6ZW9mKCpub2RlKSwgR0ZQX0tFUk5FTCk7DQorCWlmICghZGF0YSkNCisJCXJldHVybiAt RU5PTUVNOw0KKw0KKwlwcm92aWRlci0+ZGV2ID0gJnBkZXYtPmRldjsNCisJcHJvdmlkZXItPnNl dCA9IGVtaV9pY2Nfc2V0Ow0KKwlwcm92aWRlci0+YWdncmVnYXRlID0gZW1pX2ljY19hZ2dyZWdh dGU7DQorCXByb3ZpZGVyLT54bGF0ZSA9IG9mX2ljY194bGF0ZV9vbmVjZWxsOw0KKwlJTklUX0xJ U1RfSEVBRCgmcHJvdmlkZXItPm5vZGVzKTsNCisJcHJvdmlkZXItPmRhdGEgPSBkYXRhOw0KKw0K KwlyZXQgPSBpY2NfcHJvdmlkZXJfYWRkKHByb3ZpZGVyKTsNCisJaWYgKHJldCkgew0KKwkJZGV2 X2VycigmcGRldi0+ZGV2LCAiZXJyb3IgYWRkaW5nIGludGVyY29ubmVjdCBwcm92aWRlclxuIik7 DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCWZvciAoaSA9IDA7IGkgPCBudW1fbm9kZXM7IGkr Kykgew0KKwkJbm9kZSA9IGljY19ub2RlX2NyZWF0ZShtbm9kZXNbaV0tPmlkKTsNCisJCWlmIChJ U19FUlIobm9kZSkpIHsNCisJCQlyZXQgPSBQVFJfRVJSKG5vZGUpOw0KKwkJCWdvdG8gZXJyOw0K KwkJfQ0KKw0KKwkJbm9kZS0+bmFtZSA9IG1ub2Rlc1tpXS0+bmFtZTsNCisJCW5vZGUtPmRhdGEg PSBtbm9kZXNbaV07DQorCQlpY2Nfbm9kZV9hZGQobm9kZSwgcHJvdmlkZXIpOw0KKw0KKwkJZGV2 X2RiZygmcGRldi0+ZGV2LCAicmVnaXN0ZXJlZCBub2RlICVzLCBudW0gbGluazogJWRcbiIsDQor CQkJbW5vZGVzW2ldLT5uYW1lLCBtbm9kZXNbaV0tPm51bV9saW5rcyk7DQorDQorCQkvKiBwb3B1 bGF0ZSBsaW5rcyAqLw0KKwkJZm9yIChqID0gMDsgaiA8IG1ub2Rlc1tpXS0+bnVtX2xpbmtzOyBq KyspDQorCQkJaWNjX2xpbmtfY3JlYXRlKG5vZGUsIG1ub2Rlc1tpXS0+bGlua3Nbal0pOw0KKw0K KwkJZGF0YS0+bm9kZXNbaV0gPSBub2RlOw0KKwl9DQorCWRhdGEtPm51bV9ub2RlcyA9IG51bV9u b2RlczsNCisNCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJvdmlkZXIpOw0KKw0KKwly ZXR1cm4gMDsNCitlcnI6DQorCWVtaV9pY2NfcmVtb3ZlKHBkZXYpOw0KKwlyZXR1cm4gcmV0Ow0K K30NCisNCitzdGF0aWMgaW50IGVtaV9pY2NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQorew0KKwlzdHJ1Y3QgaWNjX3Byb3ZpZGVyICpwcm92aWRlciA9IHBsYXRmb3JtX2dl dF9kcnZkYXRhKHBkZXYpOw0KKwlzdHJ1Y3QgaWNjX25vZGUgKm47DQorDQorCWxpc3RfZm9yX2Vh Y2hfZW50cnkobiwgJnByb3ZpZGVyLT5ub2Rlcywgbm9kZV9saXN0KSB7DQorCQlpY2Nfbm9kZV9k ZWwobik7DQorCQlpY2Nfbm9kZV9kZXN0cm95KG4tPmlkKTsNCisJfQ0KKw0KKwlyZXR1cm4gaWNj X3Byb3ZpZGVyX2RlbChwcm92aWRlcik7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIGVtaV9pY2Nfb2ZfbWF0Y2hbXSA9IHsNCisJeyAuY29tcGF0aWJsZSA9ICJtZWRp YXRlayxtdDgxODMtZW1pIiwgLmRhdGEgPSAmbXQ4MTgzX2ljYyB9LA0KKwl7IH0sDQorfTsNCitN T0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlbWlfaWNjX29mX21hdGNoKTsNCisNCitzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBlbWlfaWNjX2RyaXZlciA9IHsNCisJLnByb2JlID0gZW1pX2lj Y19wcm9iZSwNCisJLnJlbW92ZSA9IGVtaV9pY2NfcmVtb3ZlLA0KKwkuZHJpdmVyID0gew0KKwkJ Lm5hbWUgPSAibWVkaWF0ZWstZW1pLWljYyIsDQorCQkub2ZfbWF0Y2hfdGFibGUgPSBlbWlfaWNj X29mX21hdGNoLA0KKwl9LA0KK307DQorDQorc3RhdGljIGludCBfX2luaXQgbXRrX2VtaV9pY2Nf aW5pdCh2b2lkKQ0KK3sNCisJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmZW1pX2lj Y19kcml2ZXIpOw0KK30NCitzdWJzeXNfaW5pdGNhbGwobXRrX2VtaV9pY2NfaW5pdCk7DQorDQor c3RhdGljIHZvaWQgX19leGl0IG10a19lbWlfaWNjX2V4aXQodm9pZCkNCit7DQorCXBsYXRmb3Jt X2RyaXZlcl91bnJlZ2lzdGVyKCZlbWlfaWNjX2RyaXZlcik7DQorfQ0KK21vZHVsZV9leGl0KG10 a19lbWlfaWNjX2V4aXQpOw0KKw0KK01PRFVMRV9BVVRIT1IoIkhlbnJ5IENoZW4gPGhlbnJ5Yy5j aGVuQG1lZGlhdGVrLmNvbT4iKTsNCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQotLSANCjEu OS4xDQo=