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=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 6AB7FC56202 for ; Sun, 22 Nov 2020 22:30:37 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 060EF2075A for ; Sun, 22 Nov 2020 22:30:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Dc+Wdrpl"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=gmx.net header.i=@gmx.net header.b="EOhrIuGe" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 060EF2075A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=GVowA5OFHX5ApQ54UPhLo6P66h3GV2rSiLlyK1UeJTw=; b=Dc+WdrplawBNeJgV5L8RelELd mguUBBWwa+dUiVdYIxWwzbFZ7WosQTq+f82yRK7dD3hEf98E/URP/b9CBNIZ/4jc9ovStXQ2/bSOv wtuEE4ZEqKwWN4V8GE+0x9ntzq+RWoYPj9aEs+63IqkcaKd7ZVx1uNkllpv8o8fVxrjAqQePZotuZ 2c9XNhqQVkrzGNealdvJtVlpGQBrdiM+cTnDpbb16FuRPP3aHdi18gtaH5o05OvNQSh47kzsrsF9p 9SCm1hN/mwrA9gU6DqwV1EQoPeHFgK81eGpojZdtuTzSyD2rCxOOj1tf2F0WWDk0abpkBkTFpLhkr 2T5ioixCw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kgxrJ-0001kL-6W; Sun, 22 Nov 2020 22:29:25 +0000 Received: from mout.gmx.net ([212.227.15.18]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kgxrF-0001hx-3b for linux-arm-kernel@lists.infradead.org; Sun, 22 Nov 2020 22:29:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1606084110; bh=ptKxSnvbPu7mzfzNnTpUljzEhBKOkg5WFE4E9XtZ6IM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=EOhrIuGelkoO1E+Sof/2tlOsxZ5sAD8MJY24Kk2K+r4GDWT4D9uM01ilX4bb3jCXG E6C0C/HA39Uv7vWuqWWvpPEOr5bMpzza+ARjB5tGASlZOItSfmAImF7V/GQCC5pAJh 9EEHxKX4eg8icE0e4qs42y/OLuFmhrvwUz0qF6U8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.214.162]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N5GDv-1kHhKl17zB-011B9d; Sun, 22 Nov 2020 23:28:30 +0100 From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v4 3/7] mfd: Add base driver for Netronix embedded controller Date: Sun, 22 Nov 2020 23:27:35 +0100 Message-Id: <20201122222739.1455132-4-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201122222739.1455132-1-j.neuschaefer@gmx.net> References: <20201122222739.1455132-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:Qjv6sPbqePxrndCTGpz82CeR38vaZ4Lprz9CLyqSXi5Ao8Oy8LK Ux+PC0XyrrOGwBfRhojD1TFgYeG9BI3djYyVuxW3R3m4THDMCltPJJ27dvU4UQQJWcY6no6 7MAvxXpmnviFzwcxi+fk9z+ZUQOdW78NoXncNsRgS+tuajs93vEMYCa9Uy8dnlU1x0QYkaB N3VLNRvBBRVD1CZ9U4tXw== X-UI-Out-Filterresults: notjunk:1;V03:K0:nQo58NLdqA0=:2jU6Q9xpWJwyIEb/uJjP6W d+YI0Xm6+2X7wAy3z7CcgpIBe8ovkDNKji0OOp10WqlkS+XzbYAac59Pl3S6IwP2UuqDYi5le 9W+iEoMeBDI/7IxaxJt+OosBEjCaJXk1xQI1lSOn6JyP6iMHxucO04AF0QO0W8keN2cjdmJ1y O+c/wcdqifAYTOd9jwS19yHIgSE+b0duZBL3O/aZl6rgTF+JUTE8vPHrkfEWmMFR1amK7PTIb YuB4efTf10pY/lWehLv/izeUPLVKqdzj2TxUMkKt+Jneh0ozq4tarN2+yP40AMSdJx0CtzGhT OPJ1+F9HW5bQTT7C9x1GgjKTAwDWUpQfoZdoMqSWwPa6vNlZu3BgPlRydWQXCW3fEfxIncii3 QsR8ztrzgk/SZVZz7yVhUyOfYXmXdkbFKgv3gkACwtZtA8egXk7cZR/96jVaLKn2GJ/F6HxFz ubu/DTt44vO21VcTFHOvTR+um7ZT+Wqr5DGMgAX+2STL9/KlEndcoKq9mzyiNkte4Si9E9boz FDQWlUOjAPJyu7EYTY6F/aWRWf/Umq/djoK/fk1Y+A3vOimtSIcoIEaMHrAAxYHHA+UYe+p2e kyGOcmlN7SQ4MNmLJmGvOtNY8eSC1uCAme9i/WxEH76Lmzndp4mOFMJjFqSZZ69NY3glXFh6E faqp8UyZjuqHDHTVmGCfuH8pDgsSBZoazWdYU4Id19OTETf80JccXPkTyfc+6IIokT9RfnmkX r8UanKk+wAXMpWz6ijiSyXmsrIpp+fGKC8tmCv9fkqd4ebJTeefzJiqzRgO9ezj4wLiTx+4JB qgRJm/zkbDrraED6eK0KJvvCFlyS7G2aata/zw7FiUnx+L9PllbFIMEL0e13PhYeY0M2tRQOL Kziq6l28UPpWf3ulnA0g== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201122_172921_394011_1E35A8F0 X-CRM114-Status: GOOD ( 37.42 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , Heiko Stuebner , linux-pwm@vger.kernel.org, Linus Walleij , Thierry Reding , Fabio Estevam , linux-rtc@vger.kernel.org, Arnd Bergmann , Mauro Carvalho Chehab , Sam Ravnborg , Daniel Palmer , Andy Shevchenko , Andreas Kemnade , NXP Linux Team , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , devicetree@vger.kernel.org, Stephan Gerhold , allen , Sascha Hauer , =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= , Lubomir Rintel , Rob Herring , Lee Jones , linux-arm-kernel@lists.infradead.org, Alessandro Zummo , Mark Brown , Pengutronix Kernel Team , Heiko Stuebner , Josua Mayer , Shawn Guo , "David S. Miller" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhlIE5ldHJvbml4IGVtYmVkZGVkIGNvbnRyb2xsZXIgaXMgYSBtaWNyb2NvbnRyb2xsZXIgZm91 bmQgaW4gc29tZQplLWJvb2sgcmVhZGVycyBkZXNpZ25lZCBieSB0aGUgb3JpZ2luYWwgZGVzaWdu IG1hbnVmYWN0dXJlciBOZXRyb25peCwKSW5jLiBJdCBjb250YWlucyBSVEMsIGJhdHRlcnkgbW9u aXRvcmluZywgc3lzdGVtIHBvd2VyIG1hbmFnZW1lbnQsIGFuZApQV00gZnVuY3Rpb25hbGl0eS4K ClRoaXMgZHJpdmVyIGltcGxlbWVudHMgcmVnaXN0ZXIgYWNjZXNzIGFuZCB2ZXJzaW9uIGRldGVj dGlvbi4KClRoaXJkLXBhcnR5IGhhcmR3YXJlIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0 OgoKICBodHRwczovL2dpdGh1Yi5jb20vbmV1c2NoYWVmZXIvbGludXgvd2lraS9OZXRyb25peC1N U1A0MzAtZW1iZWRkZWQtY29udHJvbGxlcgoKVGhlIEVDIHN1cHBvcnRzIGludGVycnVwdHMsIGJ1 dCB0aGUgZHJpdmVyIGRvZXNuJ3QgbWFrZSB1c2Ugb2YgdGhlbSBzbwpmYXIuCgpTaWduZWQtb2Zm LWJ5OiBKb25hdGhhbiBOZXVzY2jDpGZlciA8ai5uZXVzY2hhZWZlckBnbXgubmV0PgotLS0KCnY0 OgotIGluY2x1ZGUgYXNtL3VuYWxpZ25lZC5oIGFmdGVyIGxpbnV4LyoKLSBVc2UgcHV0X3VuYWxp Z25lZF9iZTE2IGluc3RlYWQgb2Ygb3Blbi1jb2RlZCBiaWctZW5kaWFuIHBhY2tpbmcKLSBDbGFy aWZ5IHRoYXQgMHg5MD0weGZmMDAgY2F1c2VzIGFuIGVycm9yIGluIGRvd25zdHJlYW0ga2VybmVs IHRvbwotIEFkZCBjb21tYXMgYWZ0ZXIgbm9uLXNlbnRpbmVsIHBvc2l0aW9ucwotIG50eGVjLmg6 IGRlY2xhcmUgc3RydWN0cyBkZXZpY2UgYW5kIHJlZ21hcAotIFJlcGxhY2UgV0FSTl9PTiB1c2Fn ZSBhbmQgYWRkIGNvbW1lbnRzIHRvIGV4cGxhaW4gZXJyb3JzCi0gUmVwbGFjZSBkZXZfYWxlcnQg d2l0aCBkZXZfd2FybiB3aGVuIHRoZSByZXN1bHQgaXNuJ3QgaGFuZGxlZAotIENoYW5nZSBzdWJk ZXZpY2UgcmVnaXN0cmF0aW9uIGVycm9yIG1lc3NhZ2UgdG8gZGV2X2VycgotIERlY2xhcmUgbnR4 ZWNfcmVnOCBhcyByZXR1cm5pbmcgX19iZTE2Ci0gUmVzdHJ1Y3R1cmUgdmVyc2lvbiBkZXRlY3Rp b24gY29kZQotIFNwZWxsIG91dCBPRE0KCnYzOgotIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xr bWwvMjAyMDA5MjQxOTI0NTUuMjQ4NDAwNS00LWoubmV1c2NoYWVmZXJAZ214Lm5ldC8KLSBBZGQg KEVDKSB0byBDT05GSUdfTUZEX05UWEVDIHByb21wdAotIFJlbGljZW5zZSBhcyBHUEx2MiBvciBs YXRlcgotIEFkZCBlbWFpbCBhZGRyZXNzIHRvIGNvcHlyaWdodCBsaW5lCi0gcmVtb3ZlIGVtcHR5 IGxpbmVzIGluIG50eGVjX3Bvd2Vyb2ZmIGFuZCBudHhlY19yZXN0YXJ0IGZ1bmN0aW9ucwotIFNw bGl0IGxvbmcgbGluZXMKLSBSZW1vdmUgJ0luc3RhbGwgLi4uIGhhbmRsZXInIGNvbW1lbnRzCi0g TWFrZSBuYW1pbmcgb2Ygc3RydWN0IGkyY19jbGllbnQgcGFyYW1ldGVyIGNvbnNpc3RlbnQKLSBS ZW1vdmUgc3RydWN0IG50eGVjX2luZm8KLSBSZXdvcmsgJ2RlcGVuZHMgb24nIGxpbmVzIGluIEtj b25maWcsIGhhcmQtZGVwZW5kIG9uIEkyQywgc2VsZWN0IFJFR01BUF9JMkMgYW5kCiAgTUZEX0NP UkUKLSBSZWdpc3RlciBzdWJkZXZpY2VzIHZpYSBtZmRfY2VsbHMKLSBNb3ZlIDgtYml0IHJlZ2lz dGVyIGNvbnZlcnNpb24gdG8gbnR4ZWMuaAoKdjI6Ci0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcv bGttbC8yMDIwMDkwNTEzMzIzMC4xMDE0NTgxLTQtai5uZXVzY2hhZWZlckBnbXgubmV0LwotIEFk ZCBhIGRlc2NyaXB0aW9uIG9mIHRoZSBkZXZpY2UgdG8gdGhlIHBhdGNoIHRleHQKLSBVbmlmeSBz cGVsbGluZyBhcyAnTmV0cm9uaXggZW1iZWRkZWQgY29udHJvbGxlcicuCiAgJ05ldHJvbml4JyBp cyB0aGUgcHJvcGVyIG5hbWUgb2YgdGhlIG1hbnVmYWN0dXJlciwgYnV0ICdlbWJlZGRlZCBjb250 cm9sbGVyJwogIGlzIGp1c3QgYSBsYWJlbCB0aGF0IEkgaGF2ZSBhc3NpZ25lZCB0byB0aGUgZGV2 aWNlLgotIFN3aXRjaCB0byByZWdtYXAsIGF2b2lkIHJlZ21hcCB1c2UgaW4gcG93ZXJvZmYgYW5k IHJlYm9vdCBoYW5kbGVycy4KICBJbnNwaXJlZCBieSBjZjg0ZGMwYmI0MGY0ICgibWZkOiBybjV0 NjE4OiBNYWtlIHJlc3RhcnQgaGFuZGxlciBhdG9taWMgc2FmZSIpCi0gVXNlIGEgbGlzdCBvZiBr bm93bi13b3JraW5nIGZpcm13YXJlIHZlcnNpb25zIGluc3RlYWQgb2YgY2hlY2tpbmcgZm9yIGEK ICBrbm93bi1pbmNvbXBhdGlibGUgdmVyc2lvbgotIFByZWZpeCByZWdpc3RlcnMgd2l0aCBOVFhF Q19SRUdfCi0gRGVmaW5lIHJlZ2lzdGVyIHZhbHVlcyBhcyBjb25zdGFudHMKLSBWYXJpb3VzIHN0 eWxlIGNsZWFudXBzIGFzIHN1Z2dlc3RlZCBieSBMZWUgSm9uZXMKLSBEb24ndCBhbGlnbiA9IHNp Z25zIGluIHN0cnVjdCBpbml0aWFsaXplcnMgW1V3ZSBLbGVpbmUtS8O2bmlnXQotIERvbid0IHVz ZSBkZXZfZGJnIGZvciBhbiBlcnJvciBtZXNzYWdlCi0gRXhwbGFpbiBzbGVlcCBpbiBwb3dlcm9m ZiBoYW5kbGVyCi0gUmVtb3ZlIChzdHJ1Y3QgbnR4ZWMpLmNsaWVudAotIFN3aXRjaCB0byAucHJv YmVfbmV3IGluIGkyYyBkcml2ZXIKLSBBZGQgLnJlbW92ZSBjYWxsYmFjawotIE1ha2UgQ09ORklH X01GRF9OVFhFQyBhIHRyaXN0YXRlIG9wdGlvbgotLS0KIGRyaXZlcnMvbWZkL0tjb25maWcgICAg ICAgfCAgMTEgKysKIGRyaXZlcnMvbWZkL01ha2VmaWxlICAgICAgfCAgIDEgKwogZHJpdmVycy9t ZmQvbnR4ZWMuYyAgICAgICB8IDIxNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogaW5jbHVkZS9saW51eC9tZmQvbnR4ZWMuaCB8ICAzNCArKysrKysKIDQgZmlsZXMgY2hh bmdlZCwgMjYyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9u dHhlYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9tZmQvbnR4ZWMuaAoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWZkL0tjb25maWcgYi9kcml2ZXJzL21mZC9LY29uZmlnCmluZGV4 IDhiOTlhMTM2NjliZmMuLmQ5Njc1MWY4ODRkYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWZkL0tj b25maWcKKysrIGIvZHJpdmVycy9tZmQvS2NvbmZpZwpAQCAtOTkwLDYgKzk5MCwxNyBAQCBjb25m aWcgTUZEX1ZJUEVSQk9BUkQKIAkgIFlvdSBuZWVkIHRvIHNlbGVjdCB0aGUgbWZkIGNlbGwgZHJp dmVycyBzZXBhcmF0ZWx5LgogCSAgVGhlIGRyaXZlcnMgZG8gbm90IHN1cHBvcnQgYWxsIGZlYXR1 cmVzIHRoZSBib2FyZCBleHBvc2VzLgoKK2NvbmZpZyBNRkRfTlRYRUMKKwl0cmlzdGF0ZSAiTmV0 cm9uaXggZW1iZWRkZWQgY29udHJvbGxlciAoRUMpIgorCWRlcGVuZHMgb24gT0YgfHwgQ09NUElM RV9URVNUCisJZGVwZW5kcyBvbiBJMkMKKwlzZWxlY3QgUkVHTUFQX0kyQworCXNlbGVjdCBNRkRf Q09SRQorCWhlbHAKKwkgIFNheSB5ZXMgaGVyZSBpZiB5b3Ugd2FudCB0byBzdXBwb3J0IHRoZSBl bWJlZGRlZCBjb250cm9sbGVyIGZvdW5kIGluCisJICBjZXJ0YWluIGUtYm9vayByZWFkZXJzIGRl c2lnbmVkIGJ5IHRoZSBvcmlnaW5hbCBkZXNpZ24gbWFudWZhY3R1cmVyCisJICBOZXRyb25peC4K KwogY29uZmlnIE1GRF9SRVRVCiAJdHJpc3RhdGUgIk5va2lhIFJldHUgYW5kIFRhaHZvIG11bHRp LWZ1bmN0aW9uIGRldmljZSIKIAlzZWxlY3QgTUZEX0NPUkUKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWZkL01ha2VmaWxlIGIvZHJpdmVycy9tZmQvTWFrZWZpbGUKaW5kZXggMTc4MDAxOWQyNDc0OC4u ODE1Yzk5Yjg0MDE5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvTWFrZWZpbGUKKysrIGIvZHJp dmVycy9tZmQvTWFrZWZpbGUKQEAgLTIxOCw2ICsyMTgsNyBAQCBvYmotJChDT05GSUdfTUZEX0lO VEVMX01TSUMpCSs9IGludGVsX21zaWMubwogb2JqLSQoQ09ORklHX01GRF9JTlRFTF9QTUNfQlhU KQkrPSBpbnRlbF9wbWNfYnh0Lm8KIG9iai0kKENPTkZJR19NRkRfUEFMTUFTKQkrPSBwYWxtYXMu bwogb2JqLSQoQ09ORklHX01GRF9WSVBFUkJPQVJEKSAgICArPSB2aXBlcmJvYXJkLm8KK29iai0k KENPTkZJR19NRkRfTlRYRUMpCQkrPSBudHhlYy5vCiBvYmotJChDT05GSUdfTUZEX1JDNVQ1ODMp CSs9IHJjNXQ1ODMubyByYzV0NTgzLWlycS5vCiBvYmotJChDT05GSUdfTUZEX1JLODA4KQkJKz0g cms4MDgubwogb2JqLSQoQ09ORklHX01GRF9STjVUNjE4KQkrPSBybjV0NjE4Lm8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWZkL250eGVjLmMgYi9kcml2ZXJzL21mZC9udHhlYy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmMxNTEwNzExZDczNjMKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL21mZC9udHhlYy5jCkBAIC0wLDAgKzEsMjE2IEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoKKyAqIFRoZSBOZXRyb25peCBl bWJlZGRlZCBjb250cm9sbGVyIGlzIGEgbWljcm9jb250cm9sbGVyIGZvdW5kIGluIHNvbWUKKyAq IGUtYm9vayByZWFkZXJzIGRlc2lnbmVkIGJ5IHRoZSBvcmlnaW5hbCBkZXNpZ24gbWFudWZhY3R1 cmVyIE5ldHJvbml4LCBJbmMuCisgKiBJdCBjb250YWlucyBSVEMsIGJhdHRlcnkgbW9uaXRvcmlu Zywgc3lzdGVtIHBvd2VyIG1hbmFnZW1lbnQsIGFuZCBQV00KKyAqIGZ1bmN0aW9uYWxpdHkuCisg KgorICogVGhpcyBkcml2ZXIgaW1wbGVtZW50cyByZWdpc3RlciBhY2Nlc3MsIHZlcnNpb24gZGV0 ZWN0aW9uLCBhbmQgc3lzdGVtCisgKiBwb3dlci1vZmYvcmVzZXQuCisgKgorICogQ29weXJpZ2h0 IDIwMjAgSm9uYXRoYW4gTmV1c2Now6RmZXIgPGoubmV1c2NoYWVmZXJAZ214Lm5ldD4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2lu Y2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9jb3JlLmg+CisjaW5jbHVk ZSA8bGludXgvbWZkL250eGVjLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVk ZSA8bGludXgvcG0uaD4KKyNpbmNsdWRlIDxsaW51eC9yZWJvb3QuaD4KKyNpbmNsdWRlIDxsaW51 eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS91bmFs aWduZWQuaD4KKworI2RlZmluZSBOVFhFQ19SRUdfVkVSU0lPTgkweDAwCisjZGVmaW5lIE5UWEVD X1JFR19QT1dFUk9GRgkweDUwCisjZGVmaW5lIE5UWEVDX1JFR19QT1dFUktFRVAJMHg3MAorI2Rl ZmluZSBOVFhFQ19SRUdfUkVTRVQJCTB4OTAKKworI2RlZmluZSBOVFhFQ19QT1dFUk9GRl9WQUxV RQkweDAxMDAKKyNkZWZpbmUgTlRYRUNfUE9XRVJLRUVQX1ZBTFVFCTB4MDgwMAorI2RlZmluZSBO VFhFQ19SRVNFVF9WQUxVRQkweGZmMDAKKworc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50ICpwb3dl cm9mZl9yZXN0YXJ0X2NsaWVudDsKKworc3RhdGljIHZvaWQgbnR4ZWNfcG93ZXJvZmYodm9pZCkK K3sKKwlpbnQgcmVzOworCXU4IGJ1ZlszXSA9IHsgTlRYRUNfUkVHX1BPV0VST0ZGIH07CisJc3Ry dWN0IGkyY19tc2cgbXNnc1tdID0geworCQl7CisJCQkuYWRkciA9IHBvd2Vyb2ZmX3Jlc3RhcnRf Y2xpZW50LT5hZGRyLAorCQkJLmZsYWdzID0gMCwKKwkJCS5sZW4gPSBzaXplb2YoYnVmKSwKKwkJ CS5idWYgPSBidWYsCisJCX0sCisJfTsKKworCXB1dF91bmFsaWduZWRfYmUxNihOVFhFQ19QT1dF Uk9GRl9WQUxVRSwgYnVmICsgMSk7CisKKwlyZXMgPSBpMmNfdHJhbnNmZXIocG93ZXJvZmZfcmVz dGFydF9jbGllbnQtPmFkYXB0ZXIsIG1zZ3MsIEFSUkFZX1NJWkUobXNncykpOworCWlmIChyZXMg PCAwKQorCQlkZXZfd2FybigmcG93ZXJvZmZfcmVzdGFydF9jbGllbnQtPmRldiwKKwkJCSAiRmFp bGVkIHRvIHBvd2VyIG9mZiAoZXJyID0gJWQpXG4iLCByZXMpOworCisJLyoKKwkgKiBUaGUgdGlt ZSBmcm9tIHRoZSByZWdpc3RlciB3cml0ZSB1bnRpbCB0aGUgaG9zdCBDUFUgaXMgcG93ZXJlZCBv ZmYKKwkgKiBoYXMgYmVlbiBvYnNlcnZlZCB0byBiZSBhYm91dCAyLjUgdG8gMyBzZWNvbmRzLiBT bGVlcCBsb25nIGVub3VnaCB0bworCSAqIHNhZmVseSBhdm9pZCByZXR1cm5pbmcgZnJvbSB0aGUg cG93ZXJvZmYgaGFuZGxlci4KKwkgKi8KKwltc2xlZXAoNTAwMCk7Cit9CisKK3N0YXRpYyBpbnQg bnR4ZWNfcmVzdGFydChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAorCQkJIHVuc2lnbmVkIGxv bmcgYWN0aW9uLCB2b2lkICpkYXRhKQoreworCWludCByZXM7CisJdTggYnVmWzNdID0geyBOVFhF Q19SRUdfUkVTRVQgfTsKKwkvKgorCSAqIE5PVEU6IFRoZSBsb3dlciBoYWxmIG9mIHRoZSByZXNl dCB2YWx1ZSBpcyBub3Qgc2VudCwgYmVjYXVzZSBzZW5kaW5nCisJICogaXQgY2F1c2VzIGFuIEky QyBlcnJvci4gKFRoZSByZXNldCBoYW5kbGVyIGluIHRoZSBkb3duc3RyZWFtIGRyaXZlcgorCSAq IGRvZXMgc2VuZCB0aGUgZnVsbCB0d28tYnl0ZSB2YWx1ZSwgYnV0IGRvZXNuJ3QgY2hlY2sgdGhl IHJlc3VsdCkuCisJICovCisJc3RydWN0IGkyY19tc2cgbXNnc1tdID0geworCQl7CisJCQkuYWRk ciA9IHBvd2Vyb2ZmX3Jlc3RhcnRfY2xpZW50LT5hZGRyLAorCQkJLmZsYWdzID0gMCwKKwkJCS5s ZW4gPSBzaXplb2YoYnVmKSAtIDEsCisJCQkuYnVmID0gYnVmLAorCQl9LAorCX07CisKKwlwdXRf dW5hbGlnbmVkX2JlMTYoTlRYRUNfUkVTRVRfVkFMVUUsIGJ1ZiArIDEpOworCisJcmVzID0gaTJj X3RyYW5zZmVyKHBvd2Vyb2ZmX3Jlc3RhcnRfY2xpZW50LT5hZGFwdGVyLCBtc2dzLCBBUlJBWV9T SVpFKG1zZ3MpKTsKKwlpZiAocmVzIDwgMCkKKwkJZGV2X3dhcm4oJnBvd2Vyb2ZmX3Jlc3RhcnRf Y2xpZW50LT5kZXYsCisJCQkgIkZhaWxlZCB0byByZXN0YXJ0IChlcnIgPSAlZClcbiIsIHJlcyk7 CisKKwlyZXR1cm4gTk9USUZZX0RPTkU7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgbnR4ZWNfcmVzdGFydF9oYW5kbGVyID0geworCS5ub3RpZmllcl9jYWxsID0gbnR4ZWNfcmVz dGFydCwKKwkucHJpb3JpdHkgPSAxMjgsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21h cF9jb25maWcgcmVnbWFwX2NvbmZpZyA9IHsKKwkubmFtZSA9ICJudHhlYyIsCisJLnJlZ19iaXRz ID0gOCwKKwkudmFsX2JpdHMgPSAxNiwKKwkuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsCisJ LnZhbF9mb3JtYXRfZW5kaWFuID0gUkVHTUFQX0VORElBTl9CSUcsCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IG1mZF9jZWxsIG50eGVjX3N1YmRldmljZXNbXSA9IHsKKwl7IC5uYW1lID0gIm50 eGVjLXJ0YyIgfSwKKwl7IC5uYW1lID0gIm50eGVjLXB3bSIgfSwKK307CisKK3N0YXRpYyBpbnQg bnR4ZWNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgbnR4ZWMg KmVjOworCXVuc2lnbmVkIGludCB2ZXJzaW9uOworCWludCByZXM7CisKKwllYyA9IGRldm1fa21h bGxvYygmY2xpZW50LT5kZXYsIHNpemVvZigqZWMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWVjKQor CQlyZXR1cm4gLUVOT01FTTsKKworCWVjLT5kZXYgPSAmY2xpZW50LT5kZXY7CisKKwllYy0+cmVn bWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmcmVnbWFwX2NvbmZpZyk7CisJaWYg KElTX0VSUihlYy0+cmVnbWFwKSkgeworCQlkZXZfZXJyKGVjLT5kZXYsICJGYWlsZWQgdG8gc2V0 IHVwIHJlZ21hcCBmb3IgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIHJlczsKKwl9CisKKwkvKiBEZXRl cm1pbmUgdGhlIGZpcm13YXJlIHZlcnNpb24gKi8KKwlyZXMgPSByZWdtYXBfcmVhZChlYy0+cmVn bWFwLCBOVFhFQ19SRUdfVkVSU0lPTiwgJnZlcnNpb24pOworCWlmIChyZXMgPCAwKSB7CisJCWRl dl9lcnIoZWMtPmRldiwgIkZhaWxlZCB0byByZWFkIGZpcm13YXJlIHZlcnNpb24gbnVtYmVyXG4i KTsKKwkJcmV0dXJuIHJlczsKKwl9CisKKwkvKiBCYWlsIG91dCBpZiB3ZSBlbmNvdW50ZXIgYW4g dW5rbm93biBmaXJtd2FyZSB2ZXJzaW9uICovCisJc3dpdGNoICh2ZXJzaW9uKSB7CisJY2FzZSAw eGQ3MjY6IC8qIGZvdW5kIGluIEtvYm8gQXVyYSAqLworCQlicmVhazsKKwlkZWZhdWx0OgorCQlk ZXZfZXJyKGVjLT5kZXYsCisJCQkiTmV0cm9uaXggZW1iZWRkZWQgY29udHJvbGxlciB2ZXJzaW9u ICUwNHggaXMgbm90IHN1cHBvcnRlZC5cbiIsCisJCQl2ZXJzaW9uKTsKKwkJcmV0dXJuIC1FTk9E RVY7CisJfQorCisJZGV2X2luZm8oZWMtPmRldiwKKwkJICJOZXRyb25peCBlbWJlZGRlZCBjb250 cm9sbGVyIHZlcnNpb24gJTA0eCBkZXRlY3RlZC5cbiIsIHZlcnNpb24pOworCisJaWYgKG9mX2Rl dmljZV9pc19zeXN0ZW1fcG93ZXJfY29udHJvbGxlcihlYy0+ZGV2LT5vZl9ub2RlKSkgeworCQkv KgorCQkgKiBTZXQgdGhlICdwb3dlcmtlZXAnIGJpdC4gVGhpcyBpcyBuZWNlc3Nhcnkgb24gc29t ZSBib2FyZHMKKwkJICogaW4gb3JkZXIgdG8ga2VlcCB0aGUgc3lzdGVtIHJ1bm5pbmcuCisJCSAq LworCQlyZXMgPSByZWdtYXBfd3JpdGUoZWMtPnJlZ21hcCwgTlRYRUNfUkVHX1BPV0VSS0VFUCwK KwkJCQkgICBOVFhFQ19QT1dFUktFRVBfVkFMVUUpOworCQlpZiAocmVzIDwgMCkKKwkJCXJldHVy biByZXM7CisKKwkJaWYgKHBvd2Vyb2ZmX3Jlc3RhcnRfY2xpZW50KQorCQkJLyoKKwkJCSAqIEFu b3RoZXIgaW5zdGFuY2Ugb2YgdGhlIGRyaXZlciBhbHJlYWR5IHRvb2sKKwkJCSAqIHBvd2Vyb2Zm L3Jlc3RhcnQgZHV0aWVzLgorCQkJICovCisJCQlkZXZfZXJyKGVjLT5kZXYsICJwb3dlcm9mZl9y ZXN0YXJ0X2NsaWVudCBhbHJlYWR5IGFzc2lnbmVkXG4iKTsKKwkJZWxzZQorCQkJcG93ZXJvZmZf cmVzdGFydF9jbGllbnQgPSBjbGllbnQ7CisKKwkJaWYgKHBtX3Bvd2VyX29mZikKKwkJCS8qIEFu b3RoZXIgZHJpdmVyIGFscmVhZHkgcmVnaXN0ZXJlZCBhIHBvd2Vyb2ZmIGhhbmRsZXIuICovCisJ CQlkZXZfZXJyKGVjLT5kZXYsICJwbV9wb3dlcl9vZmYgYWxyZWFkeSBhc3NpZ25lZFxuIik7CisJ CWVsc2UKKwkJCXBtX3Bvd2VyX29mZiA9IG50eGVjX3Bvd2Vyb2ZmOworCisJCXJlcyA9IHJlZ2lz dGVyX3Jlc3RhcnRfaGFuZGxlcigmbnR4ZWNfcmVzdGFydF9oYW5kbGVyKTsKKwkJaWYgKHJlcykK KwkJCWRldl9lcnIoZWMtPmRldiwKKwkJCQkiRmFpbGVkIHRvIHJlZ2lzdGVyIHJlc3RhcnQgaGFu ZGxlcjogJWRcbiIsIHJlcyk7CisJfQorCisJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZWMp OworCisJcmVzID0gZGV2bV9tZmRfYWRkX2RldmljZXMoZWMtPmRldiwgUExBVEZPUk1fREVWSURf Tk9ORSwgbnR4ZWNfc3ViZGV2aWNlcywKKwkJCQkgICBBUlJBWV9TSVpFKG50eGVjX3N1YmRldmlj ZXMpLCBOVUxMLCAwLCBOVUxMKTsKKwlpZiAocmVzKQorCQlkZXZfZXJyKGVjLT5kZXYsICJGYWls ZWQgdG8gYWRkIHN1YmRldmljZXM6ICVkXG4iLCByZXMpOworCisJcmV0dXJuIHJlczsKK30KKwor c3RhdGljIGludCBudHhlY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlp ZiAoY2xpZW50ID09IHBvd2Vyb2ZmX3Jlc3RhcnRfY2xpZW50KSB7CisJCXBvd2Vyb2ZmX3Jlc3Rh cnRfY2xpZW50ID0gTlVMTDsKKwkJcG1fcG93ZXJfb2ZmID0gTlVMTDsKKwkJdW5yZWdpc3Rlcl9y ZXN0YXJ0X2hhbmRsZXIoJm50eGVjX3Jlc3RhcnRfaGFuZGxlcik7CisJfQorCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX250eGVjX21hdGNoX3Rh YmxlW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJuZXRyb25peCxudHhlYyIsIH0sCisJe30KK307 CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBudHhlY19kcml2ZXIgPSB7CisJLmRyaXZlciA9 IHsKKwkJLm5hbWUgPSAibnR4ZWMiLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9udHhlY19tYXRj aF90YWJsZSwKKwl9LAorCS5wcm9iZV9uZXcgPSBudHhlY19wcm9iZSwKKwkucmVtb3ZlID0gbnR4 ZWNfcmVtb3ZlLAorfTsKK21vZHVsZV9pMmNfZHJpdmVyKG50eGVjX2RyaXZlcik7CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L21mZC9udHhlYy5oIGIvaW5jbHVkZS9saW51eC9tZmQvbnR4ZWMu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5iMWRlOTFmNGZkY2Fk Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9tZmQvbnR4ZWMuaApAQCAtMCwwICsx LDM0IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgor ICogQ29weXJpZ2h0IDIwMjAgSm9uYXRoYW4gTmV1c2Now6RmZXIKKyAqCisgKiBSZWdpc3RlciBh Y2Nlc3MgYW5kIHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBOZXRyb25peCBlbWJlZGRlZAor ICogY29udHJvbGxlci4KKyAqLworCisjaWZuZGVmIE5UWEVDX0gKKyNkZWZpbmUgTlRYRUNfSAor CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworc3RydWN0IGRldmljZTsKK3N0cnVjdCByZWdt YXA7CisKK3N0cnVjdCBudHhlYyB7CisJc3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCByZWdt YXAgKnJlZ21hcDsKK307CisKKy8qCisgKiBTb21lIHJlZ2lzdGVycywgc3VjaCBhcyB0aGUgYmF0 dGVyeSBzdGF0dXMgcmVnaXN0ZXIgKDB4NDEpLCBhcmUgaW4KKyAqIGJpZy1lbmRpYW4sIGJ1dCBv dGhlcnMgb25seSBoYXZlIGVpZ2h0IHNpZ25pZmljYW50IGJpdHMsIHdoaWNoIGFyZSBpbiB0aGUK KyAqIGZpcnN0IGJ5dGUgdHJhbnNtaXR0ZWQgb3ZlciBJMkMgKHRoZSBNU0Igb2YgdGhlIGJpZy1l bmRpYW4gdmFsdWUpLgorICogVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBjb252ZXJ0cyBhbiA4 LWJpdCB2YWx1ZSB0byAxNi1iaXQgZm9yIHVzZSBpbiB0aGUKKyAqIHNlY29uZCBraW5kIG9mIHJl Z2lzdGVyLgorICovCitzdGF0aWMgaW5saW5lIF9fYmUxNiBudHhlY19yZWc4KHU4IHZhbHVlKQor eworCXJldHVybiB2YWx1ZSA8PCA4OworfQorCisjZW5kaWYKLS0KMi4yOS4yCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=