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=-11.1 required=3.0 tests=BAYES_00,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 4DCFFC433E7 for ; Thu, 15 Oct 2020 12:59:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DDE8722251 for ; Thu, 15 Oct 2020 12:59:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="FHakcRG3" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728427AbgJOM70 (ORCPT ); Thu, 15 Oct 2020 08:59:26 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:48016 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726819AbgJOM7U (ORCPT ); Thu, 15 Oct 2020 08:59:20 -0400 X-UUID: 4ebe2fc32bc74d58b44afc4334c02833-20201015 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=89lNQuAGe1zUj5OV/+jWI67FNCrbuYZkHALjk8EPmI0=; b=FHakcRG3S0q14jInnDqnr6bS7pRZNhLEqPgwEdgRntVPdbu40ker2MB8yTKSaIkzcwCvTMEe1MCS44Qei0VH+9jLFEGybTDrMX5b7QSuQnO5eU97zs3Asw8UCjv7Nvp0vnwH0d9Iy/NjOfRe4H6jo6Pf2PPdYMqhZTZewE33M7Y=; X-UUID: 4ebe2fc32bc74d58b44afc4334c02833-20201015 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 281687801; Thu, 15 Oct 2020 20:59:11 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 15 Oct 2020 20:59:09 +0800 Received: from mtksdaap41.mediatek.inc (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 15 Oct 2020 20:59:09 +0800 From: Hsin-Hsiung Wang To: Stephen Boyd , Rob Herring , Matthias Brugger CC: Hsin-Hsiung Wang , , , , , , Subject: [PATCH v3 2/2] spmi: mediatek: Add support for MT6873/8192 Date: Thu, 15 Oct 2020 20:59:08 +0800 Message-ID: <1602766748-25490-3-git-send-email-hsin-hsiung.wang@mediatek.com> X-Mailer: git-send-email 2.6.4 In-Reply-To: <1602766748-25490-1-git-send-email-hsin-hsiung.wang@mediatek.com> References: <1602766748-25490-1-git-send-email-hsin-hsiung.wang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org YWRkIHNwbWkgc3VwcG9ydCBmb3IgTVQ2ODczLzgxOTIuDQoNClNpZ25lZC1vZmYtYnk6IEhzaW4t SHNpdW5nIFdhbmcgPGhzaW4taHNpdW5nLndhbmdAbWVkaWF0ZWsuY29tPg0KLS0tDQogZHJpdmVy cy9zcG1pL0tjb25maWcgICAgICAgICB8ICAgOSArDQogZHJpdmVycy9zcG1pL01ha2VmaWxlICAg ICAgICB8ICAgMSArDQogZHJpdmVycy9zcG1pL3NwbWktbXRrLXBtaWYuYyB8IDQ3NCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIDMgZmlsZXMgY2hhbmdlZCwgNDg0IGluc2Vy dGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zcG1pL3NwbWktbXRrLXBtaWYu Yw0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcG1pL0tjb25maWcgYi9kcml2ZXJzL3NwbWkvS2Nv bmZpZw0KaW5kZXggYTUzYmFkNTQxZjFhLi40MTg4NDg4NDA5OTkgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL3NwbWkvS2NvbmZpZw0KKysrIGIvZHJpdmVycy9zcG1pL0tjb25maWcNCkBAIC0yNSw0ICsy NSwxMyBAQCBjb25maWcgU1BNSV9NU01fUE1JQ19BUkINCiAJICBUaGlzIGlzIHJlcXVpcmVkIGZv ciBjb21tdW5pY2F0aW5nIHdpdGggUXVhbGNvbW0gUE1JQ3MgYW5kDQogCSAgb3RoZXIgZGV2aWNl cyB0aGF0IGhhdmUgdGhlIFNQTUkgaW50ZXJmYWNlLg0KIA0KK2NvbmZpZyBTUE1JX01US19QTUlG DQorCXRyaXN0YXRlICJNZWRpYXRlayBTUE1JIENvbnRyb2xsZXIgKFBNSUMgQXJiaXRlcikiDQor CWhlbHANCisJICBJZiB5b3Ugc2F5IHllcyB0byB0aGlzIG9wdGlvbiwgc3VwcG9ydCB3aWxsIGJl IGluY2x1ZGVkIGZvciB0aGUNCisJICBidWlsdC1pbiBTUE1JIFBNSUMgQXJiaXRlciBpbnRlcmZh Y2Ugb24gTWVkaWF0ZWsgZmFtaWx5DQorCSAgcHJvY2Vzc29ycy4NCisNCisJICBUaGlzIGlzIHJl cXVpcmVkIGZvciBjb21tdW5pY2F0aW5nIHdpdGggTWVkaWF0ZWsgUE1JQ3MgYW5kDQorCSAgb3Ro ZXIgZGV2aWNlcyB0aGF0IGhhdmUgdGhlIFNQTUkgaW50ZXJmYWNlLg0KIGVuZGlmDQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9zcG1pL01ha2VmaWxlIGIvZHJpdmVycy9zcG1pL01ha2VmaWxlDQppbmRl eCA1NWE5NGNhZGVmZmUuLjkxZjMwM2I5NjkyNSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc3BtaS9N YWtlZmlsZQ0KKysrIGIvZHJpdmVycy9zcG1pL01ha2VmaWxlDQpAQCAtNSwzICs1LDQgQEANCiBv YmotJChDT05GSUdfU1BNSSkJKz0gc3BtaS5vDQogDQogb2JqLSQoQ09ORklHX1NQTUlfTVNNX1BN SUNfQVJCKQkrPSBzcG1pLXBtaWMtYXJiLm8NCitvYmotJChDT05GSUdfU1BNSV9NVEtfUE1JRikJ Kz0gc3BtaS1tdGstcG1pZi5vDQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3NwbWkvc3BtaS1tdGstcG1pZi5jIGIvZHJpdmVycy9zcG1pL3NwbWktbXRr LXBtaWYuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uYWM3MWU2 NGEyYmRhDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3NwbWkvc3BtaS1tdGstcG1pZi5j DQpAQCAtMCwwICsxLDQ3NCBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w DQorLy8NCisvLyBDb3B5cmlnaHQgKGMpIDIwMjAgTWVkaWFUZWsgSW5jLg0KKw0KKyNpbmNsdWRl IDxsaW51eC9jbGsuaD4NCisjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+DQorI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+DQorI2luY2x1ZGUg PGxpbnV4L29mX2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9zcG1pLmg+DQorDQorI2RlZmlu ZSBTV0lORl9JRExFCTB4MDANCisjZGVmaW5lIFNXSU5GX1dGVkxEQ0xSCTB4MDYNCisNCisjZGVm aW5lIEdFVF9TV0lORih4KQkoKCh4KSA+PiAxKSAmIDB4NykNCisNCisjZGVmaW5lIFBNSUZfQ01E X1JFR18wCQkwDQorI2RlZmluZSBQTUlGX0NNRF9SRUcJCTENCisjZGVmaW5lIFBNSUZfQ01EX0VY VF9SRUcJMg0KKyNkZWZpbmUgUE1JRl9DTURfRVhUX1JFR19MT05HCTMNCisNCisjZGVmaW5lIFBN SUZfREVMQVlfVVMgICAxMA0KKyNkZWZpbmUgUE1JRl9USU1FT1VUICAgICgxMCAqIDEwMDApDQor DQorI2RlZmluZSBQTUlGX0NIQU5fT0ZGU0VUIDB4NQ0KKw0KKyNkZWZpbmUgU1BNSV9PUF9TVF9C VVNZIDENCisNCitzdHJ1Y3QgY2hfcmVnIHsNCisJdTMyIGNoX3N0YTsNCisJdTMyIHdkYXRhOw0K Kwl1MzIgcmRhdGE7DQorCXUzMiBjaF9zZW5kOw0KKwl1MzIgY2hfcmR5Ow0KK307DQorDQorc3Ry dWN0IHBtaWYgew0KKwl2b2lkIF9faW9tZW0JKmJhc2U7DQorCWNvbnN0IHUzMgkqcmVnczsNCisJ dm9pZCBfX2lvbWVtCSpzcG1pbXN0X2Jhc2U7DQorCWNvbnN0IHUzMgkqc3BtaW1zdF9yZWdzOw0K Kwl1MzIJCXNvY19jaGFuOw0KKwlpbnQJCWdycGlkOw0KKwlyYXdfc3BpbmxvY2tfdAlsb2NrOw0K KwlzdHJ1Y3QgY2xrCSpwbWlmX3N5c19jazsNCisJc3RydWN0IGNsawkqcG1pZl90bXJfY2s7DQor CXN0cnVjdCBjbGsJKnNwbWltc3RfY2xrX211eDsNCisJc3RydWN0IGNoX3JlZyBjaGFuOw0KK307 DQorDQorZW51bSBwbWlmX3JlZ3Mgew0KKwlQTUlGX0lOSVRfRE9ORSwNCisJUE1JRl9JTkZfRU4s DQorCVBNSUZfQVJCX0VOLA0KKwlQTUlGX0NNRElTU1VFX0VOLA0KKwlQTUlGX1RJTUVSX0NUUkws DQorCVBNSUZfU1BJX01PREVfQ1RSTCwNCisJUE1JRl9JUlFfRVZFTlRfRU5fMCwNCisJUE1JRl9J UlFfRkxBR18wLA0KKwlQTUlGX0lSUV9DTFJfMCwNCisJUE1JRl9JUlFfRVZFTlRfRU5fMSwNCisJ UE1JRl9JUlFfRkxBR18xLA0KKwlQTUlGX0lSUV9DTFJfMSwNCisJUE1JRl9JUlFfRVZFTlRfRU5f MiwNCisJUE1JRl9JUlFfRkxBR18yLA0KKwlQTUlGX0lSUV9DTFJfMiwNCisJUE1JRl9JUlFfRVZF TlRfRU5fMywNCisJUE1JRl9JUlFfRkxBR18zLA0KKwlQTUlGX0lSUV9DTFJfMywNCisJUE1JRl9J UlFfRVZFTlRfRU5fNCwNCisJUE1JRl9JUlFfRkxBR180LA0KKwlQTUlGX0lSUV9DTFJfNCwNCisJ UE1JRl9XRFRfRVZFTlRfRU5fMCwNCisJUE1JRl9XRFRfRkxBR18wLA0KKwlQTUlGX1dEVF9FVkVO VF9FTl8xLA0KKwlQTUlGX1dEVF9GTEFHXzEsDQorCVBNSUZfU1dJTkZfMF9TVEEsDQorCVBNSUZf U1dJTkZfMF9XREFUQV8zMV8wLA0KKwlQTUlGX1NXSU5GXzBfUkRBVEFfMzFfMCwNCisJUE1JRl9T V0lORl8wX0FDQywNCisJUE1JRl9TV0lORl8wX1ZMRF9DTFIsDQorCVBNSUZfU1dJTkZfMV9TVEEs DQorCVBNSUZfU1dJTkZfMV9XREFUQV8zMV8wLA0KKwlQTUlGX1NXSU5GXzFfUkRBVEFfMzFfMCwN CisJUE1JRl9TV0lORl8xX0FDQywNCisJUE1JRl9TV0lORl8xX1ZMRF9DTFIsDQorCVBNSUZfU1dJ TkZfMl9TVEEsDQorCVBNSUZfU1dJTkZfMl9XREFUQV8zMV8wLA0KKwlQTUlGX1NXSU5GXzJfUkRB VEFfMzFfMCwNCisJUE1JRl9TV0lORl8yX0FDQywNCisJUE1JRl9TV0lORl8yX1ZMRF9DTFIsDQor CVBNSUZfU1dJTkZfM19TVEEsDQorCVBNSUZfU1dJTkZfM19XREFUQV8zMV8wLA0KKwlQTUlGX1NX SU5GXzNfUkRBVEFfMzFfMCwNCisJUE1JRl9TV0lORl8zX0FDQywNCisJUE1JRl9TV0lORl8zX1ZM RF9DTFIsDQorfTsNCisNCitzdGF0aWMgY29uc3QgdTMyIG10Njg3M19yZWdzW10gPSB7DQorCVtQ TUlGX0lOSVRfRE9ORV0gPQkweDAwMDAsDQorCVtQTUlGX0lORl9FTl0gPQkJMHgwMDI0LA0KKwlb UE1JRl9BUkJfRU5dID0JCTB4MDE1MCwNCisJW1BNSUZfQ01ESVNTVUVfRU5dID0JMHgwM0I0LA0K KwlbUE1JRl9USU1FUl9DVFJMXSA9CTB4MDNFMCwNCisJW1BNSUZfU1BJX01PREVfQ1RSTF0gPQkw eDA0MDAsDQorCVtQTUlGX0lSUV9FVkVOVF9FTl8wXSA9CTB4MDQxOCwNCisJW1BNSUZfSVJRX0ZM QUdfMF0gPQkweDA0MjAsDQorCVtQTUlGX0lSUV9DTFJfMF0gPQkweDA0MjQsDQorCVtQTUlGX0lS UV9FVkVOVF9FTl8xXSA9CTB4MDQyOCwNCisJW1BNSUZfSVJRX0ZMQUdfMV0gPQkweDA0MzAsDQor CVtQTUlGX0lSUV9DTFJfMV0gPQkweDA0MzQsDQorCVtQTUlGX0lSUV9FVkVOVF9FTl8yXSA9CTB4 MDQzOCwNCisJW1BNSUZfSVJRX0ZMQUdfMl0gPQkweDA0NDAsDQorCVtQTUlGX0lSUV9DTFJfMl0g PQkweDA0NDQsDQorCVtQTUlGX0lSUV9FVkVOVF9FTl8zXSA9CTB4MDQ0OCwNCisJW1BNSUZfSVJR X0ZMQUdfM10gPQkweDA0NTAsDQorCVtQTUlGX0lSUV9DTFJfM10gPQkweDA0NTQsDQorCVtQTUlG X0lSUV9FVkVOVF9FTl80XSA9CTB4MDQ1OCwNCisJW1BNSUZfSVJRX0ZMQUdfNF0gPQkweDA0NjAs DQorCVtQTUlGX0lSUV9DTFJfNF0gPQkweDA0NjQsDQorCVtQTUlGX1dEVF9FVkVOVF9FTl8wXSA9 CTB4MDQ2QywNCisJW1BNSUZfV0RUX0ZMQUdfMF0gPQkweDA0NzAsDQorCVtQTUlGX1dEVF9FVkVO VF9FTl8xXSA9CTB4MDQ3NCwNCisJW1BNSUZfV0RUX0ZMQUdfMV0gPQkweDA0NzgsDQorCVtQTUlG X1NXSU5GXzBfQUNDXSA9CTB4MEMwMCwNCisJW1BNSUZfU1dJTkZfMF9XREFUQV8zMV8wXSA9CTB4 MEMwNCwNCisJW1BNSUZfU1dJTkZfMF9SREFUQV8zMV8wXSA9CTB4MEMxNCwNCisJW1BNSUZfU1dJ TkZfMF9WTERfQ0xSXSA9CTB4MEMyNCwNCisJW1BNSUZfU1dJTkZfMF9TVEFdID0JMHgwQzI4LA0K KwlbUE1JRl9TV0lORl8xX0FDQ10gPQkweDBDNDAsDQorCVtQTUlGX1NXSU5GXzFfV0RBVEFfMzFf MF0gPQkweDBDNDQsDQorCVtQTUlGX1NXSU5GXzFfUkRBVEFfMzFfMF0gPQkweDBDNTQsDQorCVtQ TUlGX1NXSU5GXzFfVkxEX0NMUl0gPQkweDBDNjQsDQorCVtQTUlGX1NXSU5GXzFfU1RBXSA9CTB4 MEM2OCwNCisJW1BNSUZfU1dJTkZfMl9BQ0NdID0JMHgwQzgwLA0KKwlbUE1JRl9TV0lORl8yX1dE QVRBXzMxXzBdID0JMHgwQzg0LA0KKwlbUE1JRl9TV0lORl8yX1JEQVRBXzMxXzBdID0JMHgwQzk0 LA0KKwlbUE1JRl9TV0lORl8yX1ZMRF9DTFJdID0JMHgwQ0E0LA0KKwlbUE1JRl9TV0lORl8yX1NU QV0gPQkweDBDQTgsDQorCVtQTUlGX1NXSU5GXzNfQUNDXSA9CTB4MENDMCwNCisJW1BNSUZfU1dJ TkZfM19XREFUQV8zMV8wXSA9CTB4MENDNCwNCisJW1BNSUZfU1dJTkZfM19SREFUQV8zMV8wXSA9 CTB4MENENCwNCisJW1BNSUZfU1dJTkZfM19WTERfQ0xSXSA9CTB4MENFNCwNCisJW1BNSUZfU1dJ TkZfM19TVEFdID0JMHgwQ0U4LA0KK307DQorDQorZW51bSBzcG1pX3JlZ3Mgew0KKwlTUE1JX09Q X1NUX0NUUkwsDQorCVNQTUlfR1JQX0lEX0VOLA0KKwlTUE1JX09QX1NUX1NUQSwNCisJU1BNSV9N U1RfU0FNUEwsDQorCVNQTUlfTVNUX1JFUV9FTiwNCisJU1BNSV9SRUNfQ1RSTCwNCisJU1BNSV9S RUMwLA0KKwlTUE1JX1JFQzEsDQorCVNQTUlfUkVDMiwNCisJU1BNSV9SRUMzLA0KKwlTUE1JX1JF QzQsDQorCVNQTUlfTVNUX0RCRywNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1MzIgbXQ2ODczX3Nw bWlfcmVnc1tdID0gew0KKwlbU1BNSV9PUF9TVF9DVFJMXSA9CTB4MDAwMCwNCisJW1NQTUlfR1JQ X0lEX0VOXSA9CTB4MDAwNCwNCisJW1NQTUlfT1BfU1RfU1RBXSA9CTB4MDAwOCwNCisJW1NQTUlf TVNUX1NBTVBMXSA9CTB4MDAwYywNCisJW1NQTUlfTVNUX1JFUV9FTl0gPQkweDAwMTAsDQorCVtT UE1JX1JFQ19DVFJMXSA9CTB4MDA0MCwNCisJW1NQTUlfUkVDMF0gPQkJMHgwMDQ0LA0KKwlbU1BN SV9SRUMxXSA9CQkweDAwNDgsDQorCVtTUE1JX1JFQzJdID0JCTB4MDA0YywNCisJW1NQTUlfUkVD M10gPQkJMHgwMDUwLA0KKwlbU1BNSV9SRUM0XSA9CQkweDAwNTQsDQorCVtTUE1JX01TVF9EQkdd ID0JMHgwMGZjLA0KK307DQorDQorc3RhdGljIHUzMiBwbWlmX3JlYWRsKHN0cnVjdCBwbWlmICph cmIsIGVudW0gcG1pZl9yZWdzIHJlZykNCit7DQorCXJldHVybiByZWFkbChhcmItPmJhc2UgKyBh cmItPnJlZ3NbcmVnXSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHBtaWZfd3JpdGVsKHN0cnVjdCBw bWlmICphcmIsIHUzMiB2YWwsIGVudW0gcG1pZl9yZWdzIHJlZykNCit7DQorCXdyaXRlbCh2YWws IGFyYi0+YmFzZSArIGFyYi0+cmVnc1tyZWddKTsNCit9DQorDQorc3RhdGljIHZvaWQgbXRrX3Nw bWlfd3JpdGVsKHN0cnVjdCBwbWlmICphcmIsIHUzMiB2YWwsIGVudW0gc3BtaV9yZWdzIHJlZykN Cit7DQorCXdyaXRlbCh2YWwsIGFyYi0+c3BtaW1zdF9iYXNlICsgYXJiLT5zcG1pbXN0X3JlZ3Nb cmVnXSk7DQorfQ0KKw0KK3N0YXRpYyBib29sIHBtaWZfaXNfZnNtX3ZsZGNscihzdHJ1Y3QgcG1p ZiAqYXJiKQ0KK3sNCisJdTMyIHJlZ19yZGF0YTsNCisNCisJcmVnX3JkYXRhID0gcG1pZl9yZWFk bChhcmIsIGFyYi0+Y2hhbi5jaF9zdGEpOw0KKwlyZXR1cm4gR0VUX1NXSU5GKHJlZ19yZGF0YSkg PT0gU1dJTkZfV0ZWTERDTFI7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcG1pZl9hcmJfY21kKHN0cnVj dCBzcG1pX2NvbnRyb2xsZXIgKmN0cmwsIHU4IG9wYywgdTggc2lkKQ0KK3sNCisJc3RydWN0IHBt aWYgKmFyYiA9IHNwbWlfY29udHJvbGxlcl9nZXRfZHJ2ZGF0YShjdHJsKTsNCisJdTMyIHJkYXRh Ow0KKwl1OCBjbWQ7DQorCWludCByZXQ7DQorDQorCS8qIENoZWNrIHRoZSBvcGNvZGUgKi8NCisJ aWYgKG9wYyA9PSBTUE1JX0NNRF9SRVNFVCkNCisJCWNtZCA9IDA7DQorCWVsc2UgaWYgKG9wYyA9 PSBTUE1JX0NNRF9TTEVFUCkNCisJCWNtZCA9IDE7DQorCWVsc2UgaWYgKG9wYyA9PSBTUE1JX0NN RF9TSFVURE9XTikNCisJCWNtZCA9IDI7DQorCWVsc2UgaWYgKG9wYyA9PSBTUE1JX0NNRF9XQUtF VVApDQorCQljbWQgPSAzOw0KKwllbHNlDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJbXRrX3Nw bWlfd3JpdGVsKGFyYiwgKGNtZCA8PCAweDQpIHwgc2lkLCBTUE1JX09QX1NUX0NUUkwpOw0KKwly ZXQgPSByZWFkbF9wb2xsX3RpbWVvdXRfYXRvbWljKGFyYi0+c3BtaW1zdF9iYXNlICsgYXJiLT5z cG1pbXN0X3JlZ3NbU1BNSV9PUF9TVF9TVEFdLA0KKwkJCQkJcmRhdGEsIChyZGF0YSAmIFNQTUlf T1BfU1RfQlVTWSkgPT0gU1BNSV9PUF9TVF9CVVNZLA0KKwkJCQkJUE1JRl9ERUxBWV9VUywgUE1J Rl9USU1FT1VUKTsNCisJaWYgKHJldCA8IDApDQorCQlkZXZfZXJyKCZjdHJsLT5kZXYsICJ0aW1l b3V0LCBlcnIgPSAlZFxyXG4iLCByZXQpOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0 aWMgaW50IHBtaWZfc3BtaV9yZWFkX2NtZChzdHJ1Y3Qgc3BtaV9jb250cm9sbGVyICpjdHJsLCB1 OCBvcGMsIHU4IHNpZCwNCisJCQkgICAgICB1MTYgYWRkciwgdTggKmJ1Ziwgc2l6ZV90IGxlbikN Cit7DQorCXN0cnVjdCBwbWlmICphcmIgPSBzcG1pX2NvbnRyb2xsZXJfZ2V0X2RydmRhdGEoY3Ry bCk7DQorCXN0cnVjdCBjaF9yZWcgKmluZl9yZWcgPSBOVUxMOw0KKwlpbnQgcmV0Ow0KKwl1MzIg ZGF0YSA9IDA7DQorCXU4IGJjID0gbGVuIC0gMTsNCisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisN CisJLyogQ2hlY2sgZm9yIGFyZ3VtZW50IHZhbGlkYXRpb24uICovDQorCWlmIChzaWQgJiB+KDB4 ZikpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJaWYgKCFhcmIpDQorCQlyZXR1cm4gLUVJTlZB TDsNCisNCisJaW5mX3JlZyA9ICZhcmItPmNoYW47DQorCS8qIENoZWNrIHRoZSBvcGNvZGUgKi8N CisJaWYgKG9wYyA+PSAweDYwICYmIG9wYyA8PSAweDdmKQ0KKwkJb3BjID0gUE1JRl9DTURfUkVH Ow0KKwllbHNlIGlmIChvcGMgPj0gMHgyMCAmJiBvcGMgPD0gMHgyZikNCisJCW9wYyA9IFBNSUZf Q01EX0VYVF9SRUdfTE9ORzsNCisJZWxzZSBpZiAob3BjID49IDB4MzggJiYgb3BjIDw9IDB4M2Yp DQorCQlvcGMgPSBQTUlGX0NNRF9FWFRfUkVHX0xPTkc7DQorCWVsc2UNCisJCXJldHVybiAtRUlO VkFMOw0KKw0KKwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFyYi0+bG9jaywgZmxhZ3MpOw0KKwkv KiBXYWl0IGZvciBTb2Z0d2FyZSBJbnRlcmZhY2UgRlNNIHN0YXRlIHRvIGJlIElETEUuICovDQor CXJldCA9IHJlYWRsX3BvbGxfdGltZW91dF9hdG9taWMoYXJiLT5iYXNlICsgYXJiLT5yZWdzW2lu Zl9yZWctPmNoX3N0YV0sDQorCQkJCQlkYXRhLCBHRVRfU1dJTkYoZGF0YSkgPT0gU1dJTkZfSURM RSwNCisJCQkJCVBNSUZfREVMQVlfVVMsIFBNSUZfVElNRU9VVCk7DQorCWlmIChyZXQgPCAwKSB7 DQorCQkvKiBzZXQgY2hhbm5lbCByZWFkeSBpZiB0aGUgZGF0YSBoYXMgdHJhbnNmZXJyZWQgKi8N CisJCWlmIChwbWlmX2lzX2ZzbV92bGRjbHIoYXJiKSkNCisJCQlwbWlmX3dyaXRlbChhcmIsIDEs IGluZl9yZWctPmNoX3JkeSk7DQorCQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXJiLT5s b2NrLCBmbGFncyk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCS8qIFNlbmQgdGhlIGNvbW1h bmQuICovDQorCXBtaWZfd3JpdGVsKGFyYiwNCisJCSAgICAob3BjIDw8IDMwKSB8IChzaWQgPDwg MjQpIHwgKGJjIDw8IDE2KSB8IGFkZHIsDQorCQkgICAgaW5mX3JlZy0+Y2hfc2VuZCk7DQorDQor CS8qIFdhaXQgZm9yIFNvZnR3YXJlIEludGVyZmFjZSBGU00gc3RhdGUgdG8gYmUgV0ZWTERDTFIs DQorCSAqDQorCSAqIHJlYWQgdGhlIGRhdGEgYW5kIGNsZWFyIHRoZSB2YWxpZCBmbGFnLg0KKwkg Ki8NCisJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0X2F0b21pYyhhcmItPmJhc2UgKyBhcmItPnJl Z3NbaW5mX3JlZy0+Y2hfc3RhXSwNCisJCQkJCWRhdGEsIEdFVF9TV0lORihkYXRhKSA9PSBTV0lO Rl9XRlZMRENMUiwNCisJCQkJCVBNSUZfREVMQVlfVVMsIFBNSUZfVElNRU9VVCk7DQorCWlmIChy ZXQgPCAwKSB7DQorCQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXJiLT5sb2NrLCBmbGFn cyk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCWRhdGEgPSBwbWlmX3JlYWRsKGFyYiwgaW5m X3JlZy0+cmRhdGEpOw0KKwltZW1jcHkoYnVmLCAmZGF0YSwgKGJjICYgMykgKyAxKTsNCisJcG1p Zl93cml0ZWwoYXJiLCAxLCBpbmZfcmVnLT5jaF9yZHkpOw0KKwlyYXdfc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmYXJiLT5sb2NrLCBmbGFncyk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgaW50IHBtaWZfc3BtaV93cml0ZV9jbWQoc3RydWN0IHNwbWlfY29udHJvbGxlciAqY3RybCwg dTggb3BjLCB1OCBzaWQsDQorCQkJICAgICAgIHUxNiBhZGRyLCBjb25zdCB1OCAqYnVmLCBzaXpl X3QgbGVuKQ0KK3sNCisJc3RydWN0IHBtaWYgKmFyYiA9IHNwbWlfY29udHJvbGxlcl9nZXRfZHJ2 ZGF0YShjdHJsKTsNCisJc3RydWN0IGNoX3JlZyAqaW5mX3JlZyA9IE5VTEw7DQorCWludCByZXQ7 DQorCXUzMiBkYXRhID0gMDsNCisJdTggYmMgPSBsZW4gLSAxOw0KKwl1bnNpZ25lZCBsb25nIGZs YWdzID0gMDsNCisNCisJLyogQ2hlY2sgZm9yIGFyZ3VtZW50IHZhbGlkYXRpb24uICovDQorCWlm IChzaWQgJiB+KDB4ZikpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJaWYgKCFhcmIpDQorCQly ZXR1cm4gLUVJTlZBTDsNCisNCisJaW5mX3JlZyA9ICZhcmItPmNoYW47DQorDQorCS8qIENoZWNr IHRoZSBvcGNvZGUgKi8NCisJaWYgKG9wYyA+PSAweDQwICYmIG9wYyA8PSAweDVGKQ0KKwkJb3Bj ID0gUE1JRl9DTURfUkVHOw0KKwllbHNlIGlmIChvcGMgPD0gMHgwRikNCisJCW9wYyA9IFBNSUZf Q01EX0VYVF9SRUdfTE9ORzsNCisJZWxzZSBpZiAob3BjID49IDB4MzAgJiYgb3BjIDw9IDB4Mzcp DQorCQlvcGMgPSBQTUlGX0NNRF9FWFRfUkVHX0xPTkc7DQorCWVsc2UgaWYgKG9wYyA+PSAweDgw KQ0KKwkJb3BjID0gUE1JRl9DTURfUkVHXzA7DQorCWVsc2UNCisJCXJldHVybiAtRUlOVkFMOw0K Kw0KKwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFyYi0+bG9jaywgZmxhZ3MpOw0KKwkvKiBXYWl0 IGZvciBTb2Z0d2FyZSBJbnRlcmZhY2UgRlNNIHN0YXRlIHRvIGJlIElETEUuICovDQorCXJldCA9 IHJlYWRsX3BvbGxfdGltZW91dF9hdG9taWMoYXJiLT5iYXNlICsgYXJiLT5yZWdzW2luZl9yZWct PmNoX3N0YV0sDQorCQkJCQlkYXRhLCBHRVRfU1dJTkYoZGF0YSkgPT0gU1dJTkZfSURMRSwNCisJ CQkJCVBNSUZfREVMQVlfVVMsIFBNSUZfVElNRU9VVCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQkv KiBzZXQgY2hhbm5lbCByZWFkeSBpZiB0aGUgZGF0YSBoYXMgdHJhbnNmZXJyZWQgKi8NCisJCWlm IChwbWlmX2lzX2ZzbV92bGRjbHIoYXJiKSkNCisJCQlwbWlmX3dyaXRlbChhcmIsIDEsIGluZl9y ZWctPmNoX3JkeSk7DQorCQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXJiLT5sb2NrLCBm bGFncyk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCS8qIFNldCB0aGUgd3JpdGUgZGF0YS4g Ki8NCisJbWVtY3B5KCZkYXRhLCBidWYsIChiYyAmIDMpICsgMSk7DQorCXBtaWZfd3JpdGVsKGFy YiwgZGF0YSwgaW5mX3JlZy0+d2RhdGEpOw0KKw0KKwkvKiBTZW5kIHRoZSBjb21tYW5kLiAqLw0K KwlwbWlmX3dyaXRlbChhcmIsDQorCQkgICAgKG9wYyA8PCAzMCkgfCBCSVQoMjkpIHwgKHNpZCA8 PCAyNCkgfCAoYmMgPDwgMTYpIHwgYWRkciwNCisJCSAgICBpbmZfcmVnLT5jaF9zZW5kKTsNCisJ cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFyYi0+bG9jaywgZmxhZ3MpOw0KKw0KKwlyZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIHN0cnVjdCBwbWlmIG10Njg3M19wbWlmX2FyYltdID0gew0K Kwl7DQorCQkucmVncyA9IG10Njg3M19yZWdzLA0KKwkJLnNwbWltc3RfcmVncyA9IG10Njg3M19z cG1pX3JlZ3MsDQorCQkuc29jX2NoYW4gPSAyLA0KKwl9LA0KK307DQorDQorc3RhdGljIGludCBt dGtfc3BtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KK3sNCisJc3RydWN0 IHBtaWYgKmFyYjsNCisJc3RydWN0IHJlc291cmNlICpyZXM7DQorCXN0cnVjdCBzcG1pX2NvbnRy b2xsZXIgKmN0cmw7DQorCWludCBlcnIgPSAwOw0KKw0KKwljdHJsID0gc3BtaV9jb250cm9sbGVy X2FsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqYXJiKSk7DQorCWlmICghY3RybCkNCisJCXJldHVy biAtRU5PTUVNOw0KKw0KKwljdHJsLT5jbWQgPSBwbWlmX2FyYl9jbWQ7DQorCWN0cmwtPnJlYWRf Y21kID0gcG1pZl9zcG1pX3JlYWRfY21kOw0KKwljdHJsLT53cml0ZV9jbWQgPSBwbWlmX3NwbWlf d3JpdGVfY21kOw0KKw0KKwkvKiByZS1hc3NpZ24gb2ZfaWQtPmRhdGEgKi8NCisJc3BtaV9jb250 cm9sbGVyX3NldF9kcnZkYXRhKGN0cmwsICh2b2lkICopb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRh KCZwZGV2LT5kZXYpKTsNCisJYXJiID0gc3BtaV9jb250cm9sbGVyX2dldF9kcnZkYXRhKGN0cmwp Ow0KKw0KKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VS Q0VfTUVNLCAicG1pZiIpOw0KKwlhcmItPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBk ZXYtPmRldiwgcmVzKTsNCisJaWYgKElTX0VSUihhcmItPmJhc2UpKSB7DQorCQllcnIgPSBQVFJf RVJSKGFyYi0+YmFzZSk7DQorCQlnb3RvIGVycl9wdXRfY3RybDsNCisJfQ0KKw0KKwlyZXMgPSBw bGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAic3BtaW1z dCIpOw0KKwlhcmItPnNwbWltc3RfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ ZGV2LCByZXMpOw0KKwlpZiAoSVNfRVJSKGFyYi0+c3BtaW1zdF9iYXNlKSkgew0KKwkJZXJyID0g UFRSX0VSUihhcmItPnNwbWltc3RfYmFzZSk7DQorCQlnb3RvIGVycl9wdXRfY3RybDsNCisJfQ0K Kw0KKwlhcmItPnBtaWZfc3lzX2NrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJwbWlmX3N5 c19jayIpOw0KKwlpZiAoSVNfRVJSKGFyYi0+cG1pZl9zeXNfY2spKSB7DQorCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJbUE1JRl06ZmFpbGVkIHRvIGdldCBhcCBjbG9jazogJWxkXG4iLA0KKwkJCVBU Ul9FUlIoYXJiLT5wbWlmX3N5c19jaykpOw0KKwkJZ290byBlcnJfcHV0X2N0cmw7DQorCX0NCisN CisJYXJiLT5wbWlmX3Rtcl9jayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAicG1pZl90bXJf Y2siKTsNCisJaWYgKElTX0VSUihhcmItPnBtaWZfdG1yX2NrKSkgew0KKwkJZGV2X2VycigmcGRl di0+ZGV2LCAiW1BNSUZdOmZhaWxlZCB0byBnZXQgdG1yIGNsb2NrOiAlbGRcbiIsDQorCQkJUFRS X0VSUihhcmItPnBtaWZfdG1yX2NrKSk7DQorCQlnb3RvIGVycl9wdXRfY3RybDsNCisJfQ0KKw0K KwlhcmItPnNwbWltc3RfY2xrX211eCA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAic3BtaW1z dF9jbGtfbXV4Iik7DQorCWlmIChJU19FUlIoYXJiLT5zcG1pbXN0X2Nsa19tdXgpKSB7DQorCQlk ZXZfZXJyKCZwZGV2LT5kZXYsICJbU1BNSU1TVF06ZmFpbGVkIHRvIGdldCBjbG9jazogJWxkXG4i LA0KKwkJCVBUUl9FUlIoYXJiLT5zcG1pbXN0X2Nsa19tdXgpKTsNCisJCWdvdG8gZXJyX3B1dF9j dHJsOw0KKwl9DQorDQorCWVyciA9IGNsa19wcmVwYXJlX2VuYWJsZShhcmItPnNwbWltc3RfY2xr X211eCk7DQorCWlmIChlcnIpIHsNCisJCWRldl9lcnIoJnBkZXYtPmRldiwgIltQTUlGXTpmYWls ZWQgdG8gZW5hYmxlIHNwbWkgbWFzdGVyIGNsay5cbiIpOw0KKwkJZ290byBlcnJfcHV0X2N0cmw7 DQorCX0NCisNCisJYXJiLT5jaGFuLmNoX3N0YSA9IFBNSUZfU1dJTkZfMF9TVEEgKyAoUE1JRl9D SEFOX09GRlNFVCAqIGFyYi0+c29jX2NoYW4pOw0KKwlhcmItPmNoYW4ud2RhdGEgPSBQTUlGX1NX SU5GXzBfV0RBVEFfMzFfMCArIChQTUlGX0NIQU5fT0ZGU0VUICogYXJiLT5zb2NfY2hhbik7DQor CWFyYi0+Y2hhbi5yZGF0YSA9IFBNSUZfU1dJTkZfMF9SREFUQV8zMV8wICsgKFBNSUZfQ0hBTl9P RkZTRVQgKiBhcmItPnNvY19jaGFuKTsNCisJYXJiLT5jaGFuLmNoX3NlbmQgPSBQTUlGX1NXSU5G XzBfQUNDICsgKFBNSUZfQ0hBTl9PRkZTRVQgKiBhcmItPnNvY19jaGFuKTsNCisJYXJiLT5jaGFu LmNoX3JkeSA9IFBNSUZfU1dJTkZfMF9WTERfQ0xSICsgKFBNSUZfQ0hBTl9PRkZTRVQgKiBhcmIt PnNvY19jaGFuKTsNCisNCisJcmF3X3NwaW5fbG9ja19pbml0KCZhcmItPmxvY2spOw0KKw0KKwlw bGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjdHJsKTsNCisNCisJZXJyID0gc3BtaV9jb250cm9s bGVyX2FkZChjdHJsKTsNCisJaWYgKGVycikNCisJCWdvdG8gZXJyX2RvbWFpbl9yZW1vdmU7DQor DQorCXJldHVybiAwOw0KKw0KK2Vycl9kb21haW5fcmVtb3ZlOg0KKwljbGtfZGlzYWJsZV91bnBy ZXBhcmUoYXJiLT5zcG1pbXN0X2Nsa19tdXgpOw0KK2Vycl9wdXRfY3RybDoNCisJc3BtaV9jb250 cm9sbGVyX3B1dChjdHJsKTsNCisJcmV0dXJuIGVycjsNCit9DQorDQorc3RhdGljIGludCBtdGtf c3BtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCXN0cnVjdCBz cG1pX2NvbnRyb2xsZXIgKmN0cmwgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCisNCisJ c3BtaV9jb250cm9sbGVyX3JlbW92ZShjdHJsKTsNCisJc3BtaV9jb250cm9sbGVyX3B1dChjdHJs KTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IG10a19zcG1pX21hdGNoX3RhYmxlW10gPSB7DQorCXsNCisJCS5jb21wYXRpYmxlID0gIm1lZGlh dGVrLG10Njg3My1zcG1pIiwNCisJCS5kYXRhID0gJm10Njg3M19wbWlmX2FyYiwNCisJfSwgew0K KwkJLyogc2VudGluZWwgKi8NCisJfSwNCit9Ow0KK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10 a19zcG1pX21hdGNoX3RhYmxlKTsNCisNCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBt dGtfc3BtaV9kcml2ZXIgPSB7DQorCS5kcml2ZXIJCT0gew0KKwkJLm5hbWUJPSAic3BtaS1tdGsi LA0KKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKG10a19zcG1pX21hdGNoX3RhYmxl KSwNCisJfSwNCisJLnByb2JlCQk9IG10a19zcG1pX3Byb2JlLA0KKwkucmVtb3ZlCQk9IG10a19z cG1pX3JlbW92ZSwNCit9Ow0KK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXRrX3NwbWlfZHJpdmVy KTsNCisNCitNT0RVTEVfQVVUSE9SKCJIc2luLUhzaXVuZyBXYW5nIDxoc2luLWhzaXVuZy53YW5n QG1lZGlhdGVrLmNvbT4iKTsNCitNT0RVTEVfREVTQ1JJUFRJT04oIk1lZGlhVGVrIFNQTUkgRHJp dmVyIik7DQorTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KLS0gDQoyLjE4LjANCg==