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,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 75DD3C433E5 for ; Fri, 21 Aug 2020 10:44:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3D4B720738 for ; Fri, 21 Aug 2020 10:44:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="fjlATYl/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728442AbgHUKo5 (ORCPT ); Fri, 21 Aug 2020 06:44:57 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:58438 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728192AbgHUKov (ORCPT ); Fri, 21 Aug 2020 06:44:51 -0400 X-UUID: 0ac786a69e1b48e2aaca1de06af97dd1-20200821 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=hj5lzRdHkrhs2U9x/5VL9SYA7GdFcQiTQcP8P8iuOdI=; b=fjlATYl/skaWuYp+mIBPvENAkvUL7FJXQBu98QSrymX6L4TklFphc3m/OpHCpIAfiBJVYdod79hLaimoaMDXXFxmf9rzkiwiaaONhnrVHYFRN2I5cn3ty9f5bQnjLnIxRjMJjAH2MLx7+HBE8ytd/VhcJLHk0tQ0BW1AOXFu4nk=; X-UUID: 0ac786a69e1b48e2aaca1de06af97dd1-20200821 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 519218751; Fri, 21 Aug 2020 18:44:41 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs05n1.mediatek.inc (172.21.101.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 21 Aug 2020 18:44:37 +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; Fri, 21 Aug 2020 18:44:39 +0800 From: Hsin-Hsiung Wang To: Stephen Boyd , Rob Herring , Matthias Brugger CC: Hsin-Hsiung Wang , , , , , , Subject: [PATCH v2 2/2] spmi: mediatek: Add support for MT6873/8192 Date: Fri, 21 Aug 2020 18:44:37 +0800 Message-ID: <1598006677-7953-3-git-send-email-hsin-hsiung.wang@mediatek.com> X-Mailer: git-send-email 2.6.4 In-Reply-To: <1598006677-7953-1-git-send-email-hsin-hsiung.wang@mediatek.com> References: <1598006677-7953-1-git-send-email-hsin-hsiung.wang@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 YWRkIHNwbWkgc3VwcG9ydCBmb3IgTVQ2ODczLzgxOTIuDQoNClNpZ25lZC1vZmYtYnk6IEhzaW4t SHNpdW5nIFdhbmcgPGhzaW4taHNpdW5nLndhbmdAbWVkaWF0ZWsuY29tPg0KLS0tDQogZHJpdmVy cy9zcG1pL0tjb25maWcgICAgICAgICB8ICAgOSArDQogZHJpdmVycy9zcG1pL01ha2VmaWxlICAg ICAgICB8ICAgMSArDQogZHJpdmVycy9zcG1pL3NwbWktbXRrLXBtaWYuYyB8IDQ3NCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMyBmaWxlcyBjaGFuZ2VkLCA0 ODQgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NwbWkvc3BtaS1t dGstcG1pZi5jDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwbWkvS2NvbmZpZyBiL2RyaXZlcnMv c3BtaS9LY29uZmlnDQppbmRleCBhNTNiYWQ1Li40MTg4NDg4IDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9zcG1pL0tjb25maWcNCisrKyBiL2RyaXZlcnMvc3BtaS9LY29uZmlnDQpAQCAtMjUsNCArMjUs MTMgQEAgY29uZmlnIFNQTUlfTVNNX1BNSUNfQVJCDQogCSAgVGhpcyBpcyByZXF1aXJlZCBmb3Ig Y29tbXVuaWNhdGluZyB3aXRoIFF1YWxjb21tIFBNSUNzIGFuZA0KIAkgIG90aGVyIGRldmljZXMg dGhhdCBoYXZlIHRoZSBTUE1JIGludGVyZmFjZS4NCiANCitjb25maWcgU1BNSV9NVEtfUE1JRg0K Kwl0cmlzdGF0ZSAiTWVkaWF0ZWsgU1BNSSBDb250cm9sbGVyIChQTUlDIEFyYml0ZXIpIg0KKwlo ZWxwDQorCSAgSWYgeW91IHNheSB5ZXMgdG8gdGhpcyBvcHRpb24sIHN1cHBvcnQgd2lsbCBiZSBp bmNsdWRlZCBmb3IgdGhlDQorCSAgYnVpbHQtaW4gU1BNSSBQTUlDIEFyYml0ZXIgaW50ZXJmYWNl IG9uIE1lZGlhdGVrIGZhbWlseQ0KKwkgIHByb2Nlc3NvcnMuDQorDQorCSAgVGhpcyBpcyByZXF1 aXJlZCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIE1lZGlhdGVrIFBNSUNzIGFuZA0KKwkgIG90aGVy IGRldmljZXMgdGhhdCBoYXZlIHRoZSBTUE1JIGludGVyZmFjZS4NCiBlbmRpZg0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvc3BtaS9NYWtlZmlsZSBiL2RyaXZlcnMvc3BtaS9NYWtlZmlsZQ0KaW5kZXgg NTVhOTRjYS4uOTFmMzAzYjkgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3NwbWkvTWFrZWZpbGUNCisr KyBiL2RyaXZlcnMvc3BtaS9NYWtlZmlsZQ0KQEAgLTUsMyArNSw0IEBADQogb2JqLSQoQ09ORklH X1NQTUkpCSs9IHNwbWkubw0KIA0KIG9iai0kKENPTkZJR19TUE1JX01TTV9QTUlDX0FSQikJKz0g c3BtaS1wbWljLWFyYi5vDQorb2JqLSQoQ09ORklHX1NQTUlfTVRLX1BNSUYpCSs9IHNwbWktbXRr LXBtaWYubw0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zcG1pL3NwbWktbXRrLXBtaWYuYyBiL2RyaXZlcnMvc3BtaS9zcG1pLW10ay1wbWlmLmMNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5hYzcxZTY0DQotLS0gL2Rldi9udWxs DQorKysgYi9kcml2ZXJzL3NwbWkvc3BtaS1tdGstcG1pZi5jDQpAQCAtMCwwICsxLDQ3NCBAQA0K Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorLy8NCisvLyBDb3B5cmlnaHQg KGMpIDIwMjAgTWVkaWFUZWsgSW5jLg0KKw0KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCisjaW5j bHVkZSA8bGludXgvaW9wb2xsLmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNs dWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPg0K KyNpbmNsdWRlIDxsaW51eC9zcG1pLmg+DQorDQorI2RlZmluZSBTV0lORl9JRExFCTB4MDANCisj ZGVmaW5lIFNXSU5GX1dGVkxEQ0xSCTB4MDYNCisNCisjZGVmaW5lIEdFVF9TV0lORih4KQkoKCh4 KSA+PiAxKSAmIDB4NykNCisNCisjZGVmaW5lIFBNSUZfQ01EX1JFR18wCQkwDQorI2RlZmluZSBQ TUlGX0NNRF9SRUcJCTENCisjZGVmaW5lIFBNSUZfQ01EX0VYVF9SRUcJMg0KKyNkZWZpbmUgUE1J Rl9DTURfRVhUX1JFR19MT05HCTMNCisNCisjZGVmaW5lIFBNSUZfREVMQVlfVVMgICAxMA0KKyNk ZWZpbmUgUE1JRl9USU1FT1VUICAgICgxMCAqIDEwMDApDQorDQorI2RlZmluZSBQTUlGX0NIQU5f T0ZGU0VUIDB4NQ0KKw0KKyNkZWZpbmUgU1BNSV9PUF9TVF9CVVNZIDENCisNCitzdHJ1Y3QgY2hf cmVnIHsNCisJdTMyIGNoX3N0YTsNCisJdTMyIHdkYXRhOw0KKwl1MzIgcmRhdGE7DQorCXUzMiBj aF9zZW5kOw0KKwl1MzIgY2hfcmR5Ow0KK307DQorDQorc3RydWN0IHBtaWYgew0KKwl2b2lkIF9f aW9tZW0JKmJhc2U7DQorCWNvbnN0IHUzMgkqcmVnczsNCisJdm9pZCBfX2lvbWVtCSpzcG1pbXN0 X2Jhc2U7DQorCWNvbnN0IHUzMgkqc3BtaW1zdF9yZWdzOw0KKwl1MzIJCXNvY19jaGFuOw0KKwlp bnQJCWdycGlkOw0KKwlyYXdfc3BpbmxvY2tfdAlsb2NrOw0KKwlzdHJ1Y3QgY2xrCSpwbWlmX3N5 c19jazsNCisJc3RydWN0IGNsawkqcG1pZl90bXJfY2s7DQorCXN0cnVjdCBjbGsJKnNwbWltc3Rf Y2xrX211eDsNCisJc3RydWN0IGNoX3JlZyBjaGFuOw0KK307DQorDQorZW51bSBwbWlmX3JlZ3Mg ew0KKwlQTUlGX0lOSVRfRE9ORSwNCisJUE1JRl9JTkZfRU4sDQorCVBNSUZfQVJCX0VOLA0KKwlQ TUlGX0NNRElTU1VFX0VOLA0KKwlQTUlGX1RJTUVSX0NUUkwsDQorCVBNSUZfU1BJX01PREVfQ1RS TCwNCisJUE1JRl9JUlFfRVZFTlRfRU5fMCwNCisJUE1JRl9JUlFfRkxBR18wLA0KKwlQTUlGX0lS UV9DTFJfMCwNCisJUE1JRl9JUlFfRVZFTlRfRU5fMSwNCisJUE1JRl9JUlFfRkxBR18xLA0KKwlQ TUlGX0lSUV9DTFJfMSwNCisJUE1JRl9JUlFfRVZFTlRfRU5fMiwNCisJUE1JRl9JUlFfRkxBR18y LA0KKwlQTUlGX0lSUV9DTFJfMiwNCisJUE1JRl9JUlFfRVZFTlRfRU5fMywNCisJUE1JRl9JUlFf RkxBR18zLA0KKwlQTUlGX0lSUV9DTFJfMywNCisJUE1JRl9JUlFfRVZFTlRfRU5fNCwNCisJUE1J Rl9JUlFfRkxBR180LA0KKwlQTUlGX0lSUV9DTFJfNCwNCisJUE1JRl9XRFRfRVZFTlRfRU5fMCwN CisJUE1JRl9XRFRfRkxBR18wLA0KKwlQTUlGX1dEVF9FVkVOVF9FTl8xLA0KKwlQTUlGX1dEVF9G TEFHXzEsDQorCVBNSUZfU1dJTkZfMF9TVEEsDQorCVBNSUZfU1dJTkZfMF9XREFUQV8zMV8wLA0K KwlQTUlGX1NXSU5GXzBfUkRBVEFfMzFfMCwNCisJUE1JRl9TV0lORl8wX0FDQywNCisJUE1JRl9T V0lORl8wX1ZMRF9DTFIsDQorCVBNSUZfU1dJTkZfMV9TVEEsDQorCVBNSUZfU1dJTkZfMV9XREFU QV8zMV8wLA0KKwlQTUlGX1NXSU5GXzFfUkRBVEFfMzFfMCwNCisJUE1JRl9TV0lORl8xX0FDQywN CisJUE1JRl9TV0lORl8xX1ZMRF9DTFIsDQorCVBNSUZfU1dJTkZfMl9TVEEsDQorCVBNSUZfU1dJ TkZfMl9XREFUQV8zMV8wLA0KKwlQTUlGX1NXSU5GXzJfUkRBVEFfMzFfMCwNCisJUE1JRl9TV0lO Rl8yX0FDQywNCisJUE1JRl9TV0lORl8yX1ZMRF9DTFIsDQorCVBNSUZfU1dJTkZfM19TVEEsDQor CVBNSUZfU1dJTkZfM19XREFUQV8zMV8wLA0KKwlQTUlGX1NXSU5GXzNfUkRBVEFfMzFfMCwNCisJ UE1JRl9TV0lORl8zX0FDQywNCisJUE1JRl9TV0lORl8zX1ZMRF9DTFIsDQorfTsNCisNCitzdGF0 aWMgY29uc3QgdTMyIG10Njg3M19yZWdzW10gPSB7DQorCVtQTUlGX0lOSVRfRE9ORV0gPQkweDAw MDAsDQorCVtQTUlGX0lORl9FTl0gPQkJMHgwMDI0LA0KKwlbUE1JRl9BUkJfRU5dID0JCTB4MDE1 MCwNCisJW1BNSUZfQ01ESVNTVUVfRU5dID0JMHgwM0I0LA0KKwlbUE1JRl9USU1FUl9DVFJMXSA9 CTB4MDNFMCwNCisJW1BNSUZfU1BJX01PREVfQ1RSTF0gPQkweDA0MDAsDQorCVtQTUlGX0lSUV9F VkVOVF9FTl8wXSA9CTB4MDQxOCwNCisJW1BNSUZfSVJRX0ZMQUdfMF0gPQkweDA0MjAsDQorCVtQ TUlGX0lSUV9DTFJfMF0gPQkweDA0MjQsDQorCVtQTUlGX0lSUV9FVkVOVF9FTl8xXSA9CTB4MDQy OCwNCisJW1BNSUZfSVJRX0ZMQUdfMV0gPQkweDA0MzAsDQorCVtQTUlGX0lSUV9DTFJfMV0gPQkw eDA0MzQsDQorCVtQTUlGX0lSUV9FVkVOVF9FTl8yXSA9CTB4MDQzOCwNCisJW1BNSUZfSVJRX0ZM QUdfMl0gPQkweDA0NDAsDQorCVtQTUlGX0lSUV9DTFJfMl0gPQkweDA0NDQsDQorCVtQTUlGX0lS UV9FVkVOVF9FTl8zXSA9CTB4MDQ0OCwNCisJW1BNSUZfSVJRX0ZMQUdfM10gPQkweDA0NTAsDQor CVtQTUlGX0lSUV9DTFJfM10gPQkweDA0NTQsDQorCVtQTUlGX0lSUV9FVkVOVF9FTl80XSA9CTB4 MDQ1OCwNCisJW1BNSUZfSVJRX0ZMQUdfNF0gPQkweDA0NjAsDQorCVtQTUlGX0lSUV9DTFJfNF0g PQkweDA0NjQsDQorCVtQTUlGX1dEVF9FVkVOVF9FTl8wXSA9CTB4MDQ2QywNCisJW1BNSUZfV0RU X0ZMQUdfMF0gPQkweDA0NzAsDQorCVtQTUlGX1dEVF9FVkVOVF9FTl8xXSA9CTB4MDQ3NCwNCisJ W1BNSUZfV0RUX0ZMQUdfMV0gPQkweDA0NzgsDQorCVtQTUlGX1NXSU5GXzBfQUNDXSA9CTB4MEMw MCwNCisJW1BNSUZfU1dJTkZfMF9XREFUQV8zMV8wXSA9CTB4MEMwNCwNCisJW1BNSUZfU1dJTkZf MF9SREFUQV8zMV8wXSA9CTB4MEMxNCwNCisJW1BNSUZfU1dJTkZfMF9WTERfQ0xSXSA9CTB4MEMy NCwNCisJW1BNSUZfU1dJTkZfMF9TVEFdID0JMHgwQzI4LA0KKwlbUE1JRl9TV0lORl8xX0FDQ10g PQkweDBDNDAsDQorCVtQTUlGX1NXSU5GXzFfV0RBVEFfMzFfMF0gPQkweDBDNDQsDQorCVtQTUlG X1NXSU5GXzFfUkRBVEFfMzFfMF0gPQkweDBDNTQsDQorCVtQTUlGX1NXSU5GXzFfVkxEX0NMUl0g PQkweDBDNjQsDQorCVtQTUlGX1NXSU5GXzFfU1RBXSA9CTB4MEM2OCwNCisJW1BNSUZfU1dJTkZf Ml9BQ0NdID0JMHgwQzgwLA0KKwlbUE1JRl9TV0lORl8yX1dEQVRBXzMxXzBdID0JMHgwQzg0LA0K KwlbUE1JRl9TV0lORl8yX1JEQVRBXzMxXzBdID0JMHgwQzk0LA0KKwlbUE1JRl9TV0lORl8yX1ZM RF9DTFJdID0JMHgwQ0E0LA0KKwlbUE1JRl9TV0lORl8yX1NUQV0gPQkweDBDQTgsDQorCVtQTUlG X1NXSU5GXzNfQUNDXSA9CTB4MENDMCwNCisJW1BNSUZfU1dJTkZfM19XREFUQV8zMV8wXSA9CTB4 MENDNCwNCisJW1BNSUZfU1dJTkZfM19SREFUQV8zMV8wXSA9CTB4MENENCwNCisJW1BNSUZfU1dJ TkZfM19WTERfQ0xSXSA9CTB4MENFNCwNCisJW1BNSUZfU1dJTkZfM19TVEFdID0JMHgwQ0U4LA0K K307DQorDQorZW51bSBzcG1pX3JlZ3Mgew0KKwlTUE1JX09QX1NUX0NUUkwsDQorCVNQTUlfR1JQ X0lEX0VOLA0KKwlTUE1JX09QX1NUX1NUQSwNCisJU1BNSV9NU1RfU0FNUEwsDQorCVNQTUlfTVNU X1JFUV9FTiwNCisJU1BNSV9SRUNfQ1RSTCwNCisJU1BNSV9SRUMwLA0KKwlTUE1JX1JFQzEsDQor CVNQTUlfUkVDMiwNCisJU1BNSV9SRUMzLA0KKwlTUE1JX1JFQzQsDQorCVNQTUlfTVNUX0RCRywN Cit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1MzIgbXQ2ODczX3NwbWlfcmVnc1tdID0gew0KKwlbU1BN SV9PUF9TVF9DVFJMXSA9CTB4MDAwMCwNCisJW1NQTUlfR1JQX0lEX0VOXSA9CTB4MDAwNCwNCisJ W1NQTUlfT1BfU1RfU1RBXSA9CTB4MDAwOCwNCisJW1NQTUlfTVNUX1NBTVBMXSA9CTB4MDAwYywN CisJW1NQTUlfTVNUX1JFUV9FTl0gPQkweDAwMTAsDQorCVtTUE1JX1JFQ19DVFJMXSA9CTB4MDA0 MCwNCisJW1NQTUlfUkVDMF0gPQkJMHgwMDQ0LA0KKwlbU1BNSV9SRUMxXSA9CQkweDAwNDgsDQor CVtTUE1JX1JFQzJdID0JCTB4MDA0YywNCisJW1NQTUlfUkVDM10gPQkJMHgwMDUwLA0KKwlbU1BN SV9SRUM0XSA9CQkweDAwNTQsDQorCVtTUE1JX01TVF9EQkddID0JMHgwMGZjLA0KK307DQorDQor c3RhdGljIHUzMiBwbWlmX3JlYWRsKHN0cnVjdCBwbWlmICphcmIsIGVudW0gcG1pZl9yZWdzIHJl ZykNCit7DQorCXJldHVybiByZWFkbChhcmItPmJhc2UgKyBhcmItPnJlZ3NbcmVnXSk7DQorfQ0K Kw0KK3N0YXRpYyB2b2lkIHBtaWZfd3JpdGVsKHN0cnVjdCBwbWlmICphcmIsIHUzMiB2YWwsIGVu dW0gcG1pZl9yZWdzIHJlZykNCit7DQorCXdyaXRlbCh2YWwsIGFyYi0+YmFzZSArIGFyYi0+cmVn c1tyZWddKTsNCit9DQorDQorc3RhdGljIHZvaWQgbXRrX3NwbWlfd3JpdGVsKHN0cnVjdCBwbWlm ICphcmIsIHUzMiB2YWwsIGVudW0gc3BtaV9yZWdzIHJlZykNCit7DQorCXdyaXRlbCh2YWwsIGFy Yi0+c3BtaW1zdF9iYXNlICsgYXJiLT5zcG1pbXN0X3JlZ3NbcmVnXSk7DQorfQ0KKw0KK3N0YXRp YyBib29sIHBtaWZfaXNfZnNtX3ZsZGNscihzdHJ1Y3QgcG1pZiAqYXJiKQ0KK3sNCisJdTMyIHJl Z19yZGF0YTsNCisNCisJcmVnX3JkYXRhID0gcG1pZl9yZWFkbChhcmIsIGFyYi0+Y2hhbi5jaF9z dGEpOw0KKwlyZXR1cm4gR0VUX1NXSU5GKHJlZ19yZGF0YSkgPT0gU1dJTkZfV0ZWTERDTFI7DQor fQ0KKw0KK3N0YXRpYyBpbnQgcG1pZl9hcmJfY21kKHN0cnVjdCBzcG1pX2NvbnRyb2xsZXIgKmN0 cmwsIHU4IG9wYywgdTggc2lkKQ0KK3sNCisJc3RydWN0IHBtaWYgKmFyYiA9IHNwbWlfY29udHJv bGxlcl9nZXRfZHJ2ZGF0YShjdHJsKTsNCisJdTMyIHJkYXRhOw0KKwl1OCBjbWQ7DQorCWludCBy ZXQ7DQorDQorCS8qIENoZWNrIHRoZSBvcGNvZGUgKi8NCisJaWYgKG9wYyA9PSBTUE1JX0NNRF9S RVNFVCkNCisJCWNtZCA9IDA7DQorCWVsc2UgaWYgKG9wYyA9PSBTUE1JX0NNRF9TTEVFUCkNCisJ CWNtZCA9IDE7DQorCWVsc2UgaWYgKG9wYyA9PSBTUE1JX0NNRF9TSFVURE9XTikNCisJCWNtZCA9 IDI7DQorCWVsc2UgaWYgKG9wYyA9PSBTUE1JX0NNRF9XQUtFVVApDQorCQljbWQgPSAzOw0KKwll bHNlDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJbXRrX3NwbWlfd3JpdGVsKGFyYiwgKGNtZCA8 PCAweDQpIHwgc2lkLCBTUE1JX09QX1NUX0NUUkwpOw0KKwlyZXQgPSByZWFkbF9wb2xsX3RpbWVv dXRfYXRvbWljKGFyYi0+c3BtaW1zdF9iYXNlICsgYXJiLT5zcG1pbXN0X3JlZ3NbU1BNSV9PUF9T VF9TVEFdLA0KKwkJCQkJcmRhdGEsIChyZGF0YSAmIFNQTUlfT1BfU1RfQlVTWSkgPT0gU1BNSV9P UF9TVF9CVVNZLA0KKwkJCQkJUE1JRl9ERUxBWV9VUywgUE1JRl9USU1FT1VUKTsNCisJaWYgKHJl dCA8IDApDQorCQlkZXZfZXJyKCZjdHJsLT5kZXYsICJ0aW1lb3V0LCBlcnIgPSAlZFxyXG4iLCBy ZXQpOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IHBtaWZfc3BtaV9yZWFk X2NtZChzdHJ1Y3Qgc3BtaV9jb250cm9sbGVyICpjdHJsLCB1OCBvcGMsIHU4IHNpZCwNCisJCQkg ICAgICB1MTYgYWRkciwgdTggKmJ1Ziwgc2l6ZV90IGxlbikNCit7DQorCXN0cnVjdCBwbWlmICph cmIgPSBzcG1pX2NvbnRyb2xsZXJfZ2V0X2RydmRhdGEoY3RybCk7DQorCXN0cnVjdCBjaF9yZWcg KmluZl9yZWcgPSBOVUxMOw0KKwlpbnQgcmV0Ow0KKwl1MzIgZGF0YSA9IDA7DQorCXU4IGJjID0g bGVuIC0gMTsNCisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisNCisJLyogQ2hlY2sgZm9yIGFyZ3Vt ZW50IHZhbGlkYXRpb24uICovDQorCWlmIChzaWQgJiB+KDB4ZikpDQorCQlyZXR1cm4gLUVJTlZB TDsNCisNCisJaWYgKCFhcmIpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJaW5mX3JlZyA9ICZh cmItPmNoYW47DQorCS8qIENoZWNrIHRoZSBvcGNvZGUgKi8NCisJaWYgKG9wYyA+PSAweDYwICYm IG9wYyA8PSAweDdmKQ0KKwkJb3BjID0gUE1JRl9DTURfUkVHOw0KKwllbHNlIGlmIChvcGMgPj0g MHgyMCAmJiBvcGMgPD0gMHgyZikNCisJCW9wYyA9IFBNSUZfQ01EX0VYVF9SRUdfTE9ORzsNCisJ ZWxzZSBpZiAob3BjID49IDB4MzggJiYgb3BjIDw9IDB4M2YpDQorCQlvcGMgPSBQTUlGX0NNRF9F WFRfUkVHX0xPTkc7DQorCWVsc2UNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlyYXdfc3Bpbl9s b2NrX2lycXNhdmUoJmFyYi0+bG9jaywgZmxhZ3MpOw0KKwkvKiBXYWl0IGZvciBTb2Z0d2FyZSBJ bnRlcmZhY2UgRlNNIHN0YXRlIHRvIGJlIElETEUuICovDQorCXJldCA9IHJlYWRsX3BvbGxfdGlt ZW91dF9hdG9taWMoYXJiLT5iYXNlICsgYXJiLT5yZWdzW2luZl9yZWctPmNoX3N0YV0sDQorCQkJ CQlkYXRhLCBHRVRfU1dJTkYoZGF0YSkgPT0gU1dJTkZfSURMRSwNCisJCQkJCVBNSUZfREVMQVlf VVMsIFBNSUZfVElNRU9VVCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQkvKiBzZXQgY2hhbm5lbCBy ZWFkeSBpZiB0aGUgZGF0YSBoYXMgdHJhbnNmZXJyZWQgKi8NCisJCWlmIChwbWlmX2lzX2ZzbV92 bGRjbHIoYXJiKSkNCisJCQlwbWlmX3dyaXRlbChhcmIsIDEsIGluZl9yZWctPmNoX3JkeSk7DQor CQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXJiLT5sb2NrLCBmbGFncyk7DQorCQlyZXR1 cm4gcmV0Ow0KKwl9DQorDQorCS8qIFNlbmQgdGhlIGNvbW1hbmQuICovDQorCXBtaWZfd3JpdGVs KGFyYiwNCisJCSAgICAob3BjIDw8IDMwKSB8IChzaWQgPDwgMjQpIHwgKGJjIDw8IDE2KSB8IGFk ZHIsDQorCQkgICAgaW5mX3JlZy0+Y2hfc2VuZCk7DQorDQorCS8qIFdhaXQgZm9yIFNvZnR3YXJl IEludGVyZmFjZSBGU00gc3RhdGUgdG8gYmUgV0ZWTERDTFIsDQorCSAqDQorCSAqIHJlYWQgdGhl IGRhdGEgYW5kIGNsZWFyIHRoZSB2YWxpZCBmbGFnLg0KKwkgKi8NCisJcmV0ID0gcmVhZGxfcG9s bF90aW1lb3V0X2F0b21pYyhhcmItPmJhc2UgKyBhcmItPnJlZ3NbaW5mX3JlZy0+Y2hfc3RhXSwN CisJCQkJCWRhdGEsIEdFVF9TV0lORihkYXRhKSA9PSBTV0lORl9XRlZMRENMUiwNCisJCQkJCVBN SUZfREVMQVlfVVMsIFBNSUZfVElNRU9VVCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlyYXdfc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmYXJiLT5sb2NrLCBmbGFncyk7DQorCQlyZXR1cm4gcmV0Ow0K Kwl9DQorDQorCWRhdGEgPSBwbWlmX3JlYWRsKGFyYiwgaW5mX3JlZy0+cmRhdGEpOw0KKwltZW1j cHkoYnVmLCAmZGF0YSwgKGJjICYgMykgKyAxKTsNCisJcG1pZl93cml0ZWwoYXJiLCAxLCBpbmZf cmVnLT5jaF9yZHkpOw0KKwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXJiLT5sb2NrLCBm bGFncyk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHBtaWZfc3BtaV93cml0 ZV9jbWQoc3RydWN0IHNwbWlfY29udHJvbGxlciAqY3RybCwgdTggb3BjLCB1OCBzaWQsDQorCQkJ ICAgICAgIHUxNiBhZGRyLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQ0KK3sNCisJc3RydWN0 IHBtaWYgKmFyYiA9IHNwbWlfY29udHJvbGxlcl9nZXRfZHJ2ZGF0YShjdHJsKTsNCisJc3RydWN0 IGNoX3JlZyAqaW5mX3JlZyA9IE5VTEw7DQorCWludCByZXQ7DQorCXUzMiBkYXRhID0gMDsNCisJ dTggYmMgPSBsZW4gLSAxOw0KKwl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsNCisNCisJLyogQ2hl Y2sgZm9yIGFyZ3VtZW50IHZhbGlkYXRpb24uICovDQorCWlmIChzaWQgJiB+KDB4ZikpDQorCQly ZXR1cm4gLUVJTlZBTDsNCisNCisJaWYgKCFhcmIpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJ aW5mX3JlZyA9ICZhcmItPmNoYW47DQorDQorCS8qIENoZWNrIHRoZSBvcGNvZGUgKi8NCisJaWYg KG9wYyA+PSAweDQwICYmIG9wYyA8PSAweDVGKQ0KKwkJb3BjID0gUE1JRl9DTURfUkVHOw0KKwll bHNlIGlmIChvcGMgPD0gMHgwRikNCisJCW9wYyA9IFBNSUZfQ01EX0VYVF9SRUdfTE9ORzsNCisJ ZWxzZSBpZiAob3BjID49IDB4MzAgJiYgb3BjIDw9IDB4MzcpDQorCQlvcGMgPSBQTUlGX0NNRF9F WFRfUkVHX0xPTkc7DQorCWVsc2UgaWYgKG9wYyA+PSAweDgwKQ0KKwkJb3BjID0gUE1JRl9DTURf UkVHXzA7DQorCWVsc2UNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlyYXdfc3Bpbl9sb2NrX2ly cXNhdmUoJmFyYi0+bG9jaywgZmxhZ3MpOw0KKwkvKiBXYWl0IGZvciBTb2Z0d2FyZSBJbnRlcmZh Y2UgRlNNIHN0YXRlIHRvIGJlIElETEUuICovDQorCXJldCA9IHJlYWRsX3BvbGxfdGltZW91dF9h dG9taWMoYXJiLT5iYXNlICsgYXJiLT5yZWdzW2luZl9yZWctPmNoX3N0YV0sDQorCQkJCQlkYXRh LCBHRVRfU1dJTkYoZGF0YSkgPT0gU1dJTkZfSURMRSwNCisJCQkJCVBNSUZfREVMQVlfVVMsIFBN SUZfVElNRU9VVCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQkvKiBzZXQgY2hhbm5lbCByZWFkeSBp ZiB0aGUgZGF0YSBoYXMgdHJhbnNmZXJyZWQgKi8NCisJCWlmIChwbWlmX2lzX2ZzbV92bGRjbHIo YXJiKSkNCisJCQlwbWlmX3dyaXRlbChhcmIsIDEsIGluZl9yZWctPmNoX3JkeSk7DQorCQlyYXdf c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXJiLT5sb2NrLCBmbGFncyk7DQorCQlyZXR1cm4gcmV0 Ow0KKwl9DQorDQorCS8qIFNldCB0aGUgd3JpdGUgZGF0YS4gKi8NCisJbWVtY3B5KCZkYXRhLCBi dWYsIChiYyAmIDMpICsgMSk7DQorCXBtaWZfd3JpdGVsKGFyYiwgZGF0YSwgaW5mX3JlZy0+d2Rh dGEpOw0KKw0KKwkvKiBTZW5kIHRoZSBjb21tYW5kLiAqLw0KKwlwbWlmX3dyaXRlbChhcmIsDQor CQkgICAgKG9wYyA8PCAzMCkgfCBCSVQoMjkpIHwgKHNpZCA8PCAyNCkgfCAoYmMgPDwgMTYpIHwg YWRkciwNCisJCSAgICBpbmZfcmVnLT5jaF9zZW5kKTsNCisJcmF3X3NwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmFyYi0+bG9jaywgZmxhZ3MpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGlj IHN0cnVjdCBwbWlmIG10Njg3M19wbWlmX2FyYltdID0gew0KKwl7DQorCQkucmVncyA9IG10Njg3 M19yZWdzLA0KKwkJLnNwbWltc3RfcmVncyA9IG10Njg3M19zcG1pX3JlZ3MsDQorCQkuc29jX2No YW4gPSAyLA0KKwl9LA0KK307DQorDQorc3RhdGljIGludCBtdGtfc3BtaV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KK3sNCisJc3RydWN0IHBtaWYgKmFyYjsNCisJc3RydWN0 IHJlc291cmNlICpyZXM7DQorCXN0cnVjdCBzcG1pX2NvbnRyb2xsZXIgKmN0cmw7DQorCWludCBl cnIgPSAwOw0KKw0KKwljdHJsID0gc3BtaV9jb250cm9sbGVyX2FsbG9jKCZwZGV2LT5kZXYsIHNp emVvZigqYXJiKSk7DQorCWlmICghY3RybCkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwljdHJs LT5jbWQgPSBwbWlmX2FyYl9jbWQ7DQorCWN0cmwtPnJlYWRfY21kID0gcG1pZl9zcG1pX3JlYWRf Y21kOw0KKwljdHJsLT53cml0ZV9jbWQgPSBwbWlmX3NwbWlfd3JpdGVfY21kOw0KKw0KKwkvKiBy ZS1hc3NpZ24gb2ZfaWQtPmRhdGEgKi8NCisJc3BtaV9jb250cm9sbGVyX3NldF9kcnZkYXRhKGN0 cmwsICh2b2lkICopb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5kZXYpKTsNCisJYXJi ID0gc3BtaV9jb250cm9sbGVyX2dldF9kcnZkYXRhKGN0cmwpOw0KKw0KKwlyZXMgPSBwbGF0Zm9y bV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAicG1pZiIpOw0KKwlh cmItPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsNCisJaWYg KElTX0VSUihhcmItPmJhc2UpKSB7DQorCQllcnIgPSBQVFJfRVJSKGFyYi0+YmFzZSk7DQorCQln b3RvIGVycl9wdXRfY3RybDsNCisJfQ0KKw0KKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2Vf YnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAic3BtaW1zdCIpOw0KKwlhcmItPnNwbWltc3Rf YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOw0KKwlpZiAoSVNf RVJSKGFyYi0+c3BtaW1zdF9iYXNlKSkgew0KKwkJZXJyID0gUFRSX0VSUihhcmItPnNwbWltc3Rf YmFzZSk7DQorCQlnb3RvIGVycl9wdXRfY3RybDsNCisJfQ0KKw0KKwlhcmItPnBtaWZfc3lzX2Nr ID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJwbWlmX3N5c19jayIpOw0KKwlpZiAoSVNfRVJS KGFyYi0+cG1pZl9zeXNfY2spKSB7DQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJbUE1JRl06ZmFp bGVkIHRvIGdldCBhcCBjbG9jazogJWxkXG4iLA0KKwkJCVBUUl9FUlIoYXJiLT5wbWlmX3N5c19j aykpOw0KKwkJZ290byBlcnJfcHV0X2N0cmw7DQorCX0NCisNCisJYXJiLT5wbWlmX3Rtcl9jayA9 IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAicG1pZl90bXJfY2siKTsNCisJaWYgKElTX0VSUihh cmItPnBtaWZfdG1yX2NrKSkgew0KKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiW1BNSUZdOmZhaWxl ZCB0byBnZXQgdG1yIGNsb2NrOiAlbGRcbiIsDQorCQkJUFRSX0VSUihhcmItPnBtaWZfdG1yX2Nr KSk7DQorCQlnb3RvIGVycl9wdXRfY3RybDsNCisJfQ0KKw0KKwlhcmItPnNwbWltc3RfY2xrX211 eCA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAic3BtaW1zdF9jbGtfbXV4Iik7DQorCWlmIChJ U19FUlIoYXJiLT5zcG1pbXN0X2Nsa19tdXgpKSB7DQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJb U1BNSU1TVF06ZmFpbGVkIHRvIGdldCBjbG9jazogJWxkXG4iLA0KKwkJCVBUUl9FUlIoYXJiLT5z cG1pbXN0X2Nsa19tdXgpKTsNCisJCWdvdG8gZXJyX3B1dF9jdHJsOw0KKwl9DQorDQorCWVyciA9 IGNsa19wcmVwYXJlX2VuYWJsZShhcmItPnNwbWltc3RfY2xrX211eCk7DQorCWlmIChlcnIpIHsN CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIltQTUlGXTpmYWlsZWQgdG8gZW5hYmxlIHNwbWkgbWFz dGVyIGNsay5cbiIpOw0KKwkJZ290byBlcnJfcHV0X2N0cmw7DQorCX0NCisNCisJYXJiLT5jaGFu LmNoX3N0YSA9IFBNSUZfU1dJTkZfMF9TVEEgKyAoUE1JRl9DSEFOX09GRlNFVCAqIGFyYi0+c29j X2NoYW4pOw0KKwlhcmItPmNoYW4ud2RhdGEgPSBQTUlGX1NXSU5GXzBfV0RBVEFfMzFfMCArIChQ TUlGX0NIQU5fT0ZGU0VUICogYXJiLT5zb2NfY2hhbik7DQorCWFyYi0+Y2hhbi5yZGF0YSA9IFBN SUZfU1dJTkZfMF9SREFUQV8zMV8wICsgKFBNSUZfQ0hBTl9PRkZTRVQgKiBhcmItPnNvY19jaGFu KTsNCisJYXJiLT5jaGFuLmNoX3NlbmQgPSBQTUlGX1NXSU5GXzBfQUNDICsgKFBNSUZfQ0hBTl9P RkZTRVQgKiBhcmItPnNvY19jaGFuKTsNCisJYXJiLT5jaGFuLmNoX3JkeSA9IFBNSUZfU1dJTkZf MF9WTERfQ0xSICsgKFBNSUZfQ0hBTl9PRkZTRVQgKiBhcmItPnNvY19jaGFuKTsNCisNCisJcmF3 X3NwaW5fbG9ja19pbml0KCZhcmItPmxvY2spOw0KKw0KKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShw ZGV2LCBjdHJsKTsNCisNCisJZXJyID0gc3BtaV9jb250cm9sbGVyX2FkZChjdHJsKTsNCisJaWYg KGVycikNCisJCWdvdG8gZXJyX2RvbWFpbl9yZW1vdmU7DQorDQorCXJldHVybiAwOw0KKw0KK2Vy cl9kb21haW5fcmVtb3ZlOg0KKwljbGtfZGlzYWJsZV91bnByZXBhcmUoYXJiLT5zcG1pbXN0X2Ns a19tdXgpOw0KK2Vycl9wdXRfY3RybDoNCisJc3BtaV9jb250cm9sbGVyX3B1dChjdHJsKTsNCisJ cmV0dXJuIGVycjsNCit9DQorDQorc3RhdGljIGludCBtdGtfc3BtaV9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCXN0cnVjdCBzcG1pX2NvbnRyb2xsZXIgKmN0cmwg PSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCisNCisJc3BtaV9jb250cm9sbGVyX3JlbW92 ZShjdHJsKTsNCisJc3BtaV9jb250cm9sbGVyX3B1dChjdHJsKTsNCisJcmV0dXJuIDA7DQorfQ0K Kw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19zcG1pX21hdGNoX3RhYmxl W10gPSB7DQorCXsNCisJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10Njg3My1zcG1pIiwNCisJ CS5kYXRhID0gJm10Njg3M19wbWlmX2FyYiwNCisJfSwgew0KKwkJLyogc2VudGluZWwgKi8NCisJ fSwNCit9Ow0KK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10a19zcG1pX21hdGNoX3RhYmxlKTsN CisNCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfc3BtaV9kcml2ZXIgPSB7DQor CS5kcml2ZXIJCT0gew0KKwkJLm5hbWUJPSAic3BtaS1tdGsiLA0KKwkJLm9mX21hdGNoX3RhYmxl ID0gb2ZfbWF0Y2hfcHRyKG10a19zcG1pX21hdGNoX3RhYmxlKSwNCisJfSwNCisJLnByb2JlCQk9 IG10a19zcG1pX3Byb2JlLA0KKwkucmVtb3ZlCQk9IG10a19zcG1pX3JlbW92ZSwNCit9Ow0KK21v ZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXRrX3NwbWlfZHJpdmVyKTsNCisNCitNT0RVTEVfQVVUSE9S KCJIc2luLUhzaXVuZyBXYW5nIDxoc2luLWhzaXVuZy53YW5nQG1lZGlhdGVrLmNvbT4iKTsNCitN T0RVTEVfREVTQ1JJUFRJT04oIk1lZGlhVGVrIFNQTUkgRHJpdmVyIik7DQorTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOw0KLS0gDQoyLjYuNA0K