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=-12.2 required=3.0 tests=BAYES_00,DATE_IN_PAST_03_06, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 22C70C64E7A for ; Tue, 1 Dec 2020 05:19:11 +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 4946E2085B for ; Tue, 1 Dec 2020 05:19:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TICuwTEj"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=gmx.net header.i=@gmx.net header.b="jzFWy995" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4946E2085B 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=va6sqktPKxlYUz4QbSNq85YPVXzlG+Zu+5ockhTdc4w=; b=TICuwTEj6widuT2gyS2j0L8Qc M+SGjX0PTPki9EUfx8WWvS0KchuXg0nJzMf4+PqhxGOrOYBZ7vwYlwVtSXcvWrvx0vYVIm6YDuOwB 97YpHRQUbsV8zZH1+tE1i1r7cTNrbZYdE7yheZx1Z6xmtFksJdhqDnIrAD8xzlH+22aeevNUgTyPY /w+2hEArG+/MIgKDcJXSL9RnqSSsc5spJkM/5cGWRcgP+nGhlcRrs3rCRxPUm5ODJP2yV8dNI/C/S mFiMx/jC8OxgOPOx9bBI2iefqD2fTw8D68FD8ply2jJtwy/FqwKps0P3j5OAdl9rifrRiggIGAdxH lgInIJJGw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kjy2c-0004PR-MD; Tue, 01 Dec 2020 05:17:30 +0000 Received: from mout.gmx.net ([212.227.17.20]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kjy2W-0004P5-Dj for linux-arm-kernel@lists.infradead.org; Tue, 01 Dec 2020 05:17:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1606799806; bh=rPRdtpWM0wkMSizwG2+RY2+Q923cBhHJhfRb9IexAnY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=jzFWy995Y61nuOYwp9YyhrZOx2+zhdBFSCseZfeOF1rd+BKRQwPpsy6F087vIODzE ywhJYthsJ4ZbNilGNfQjPNpnMYYl9v46lJKXQlJRZjtkVBBwyskJI8/Em6wxX615AQ ySyC/73nS+Ahv0rY+3xxsyfWHhCYFwcDmya0tf/0= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.214.162]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MXXuB-1kguA51Akx-00Z2Ei; Tue, 01 Dec 2020 06:16:46 +0100 From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v5 4/7] pwm: ntxec: Add driver for PWM function in Netronix EC Date: Tue, 1 Dec 2020 02:15:10 +0100 Message-Id: <20201201011513.1627028-5-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201201011513.1627028-1-j.neuschaefer@gmx.net> References: <20201201011513.1627028-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:ca9Z38lTTxyARgHEHV/TktM9KWbcJaj4CY+vU2TiPpIJwGSunTb 55PpShIGhQFE0ZR0tNe5vZKaeJSdMBc04PI/nj/IAvHliRKtAw/6YyxHPGsGS/J+Gt8FSeu xGwCiX0VzpeuvquQm9bDK+dIJDdsDk1Uu34lP1oPCvwmUu+w4hTmG7zZ8vwNJyRSh+PMktb +VAXcSElqilddkKXoaDTg== X-UI-Out-Filterresults: notjunk:1;V03:K0:Qc0L3ZXK+CA=:BdRXXwDu8Gz9j8B/JfK7Xl PRT9PnCT+ybLIlKh9Bij3I/N2unthD7Wm8miRR1+KgjufX7ZNUpnezjJyglrisUccrd+4sfe+ vCxY2IMC3+t5BaUwSFgxp8wrC27RnoLbBdqZFg1T3e2C7XDk+KqFEmKO5A5VUzTJ55JvVcb6A /wwZWxtf2osIMiHhlPf3+DBihyIBdbrCvmEKFjeYpcsOcKvNB4Pztq37tH0QP1xzr2bKikXSg pGQrSx3vIA7iAKcgV6833mO37myN/wMgFseMWnlZwiO9G5/yXUEwUgM1w36MrxF0u6AFIK4zf OtXOoATyx0agzH8RjG+tux+gHeVP0e/aX4mfNviDis0lHA8QRTzSToggHzh3rGOjfVSZp9Y9s y0AKornW3xgGZqdTWdH/fRlDw0e8FyBjA4JzvIy6DRDKFFfdHx+KjS9RQ3mNDhO3zLIK7+6PM WcQGa46xRf8QkwBP+Fdl2z9pPNO/9pp+VXbPo+ZgFEsnhjtxky1zLfKFFgJMDrKXgWsTj3Dm3 G8mtXFSH32bXDfxyrel3qxVNXdmFQC3h/BmZI2jqy9j24yEyCI9u0Tzm0EYLxJNsGTNY/7lPX QdVRDMBXy7zDMXuKY5au1fqTzfousduQIcA7NwKDDq1ejqSIeeEidASn/dZOUnJV++tTrWHzk 3m8x9Kd0+QsKyYlb8nNKO8ryO9kcxssCiBl4ei5FWw+dHA9GEh1dTg6SfXef3BoCJcmrmGbY5 lFOqQuRToVW+yiVgYdP0tdTiHgQdFSLAdHC3SRTN+guUK2vQjNSErDoZLoElsC0YbIuMeFIrn EAE8B8lJmgSiIlOl1BitgjS9MWJjE4Gy8WBbaRwgzPGxvf+AziW2+XjHReuKIoXfsNazu0o6w qGNVa6hyPrYPvjfyzlng== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201201_001724_893412_17C68CDC X-CRM114-Status: GOOD ( 34.52 ) 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 VGhlIE5ldHJvbml4IEVDIHByb3ZpZGVzIGEgUFdNIG91dHB1dCB3aGljaCBpcyB1c2VkIGZvciB0 aGUgYmFja2xpZ2h0Cm9uIHNvbWUgZWJvb2sgcmVhZGVycy4gVGhpcyBwYXRjaGVzIGFkZHMgYSBk cml2ZXIgZm9yIHRoZSBQV00gb3V0cHV0LgoKVGhlIC5nZXRfc3RhdGUgY2FsbGJhY2sgaXMgbm90 IGltcGxlbWVudGVkLCBiZWNhdXNlIHRoZSBQV00gc3RhdGUgY2FuJ3QKYmUgcmVhZCBiYWNrIGZy b20gdGhlIGhhcmR3YXJlLgoKU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTmV1c2Now6RmZXIgPGou bmV1c2NoYWVmZXJAZ214Lm5ldD4KLS0tCgp2NToKLSBBdm9pZCB0cnVuY2F0aW9uIG9mIHBlcmlv ZCBhbmQgZHV0eSBjeWNsZSB0byAzMiBiaXRzCi0gTWFrZSBudHhlY19wd21fb3BzIGNvbnN0Ci0g VXNlIHJlZ21hcF9tdWx0aV9yZWdfd3JpdGUKLSBBZGQgY29tbWVudCBhYm91dCBnZXRfc3RhdGUg dG8gbnR4ZWNfcHdtX29wcwotIEFkZCBjb21tZW50cyBhYm91dCBub24tYXRvbWljaXR5IG9mIChw ZXJpb2QsIGR1dHkgY3ljbGUpIHVwZGF0ZQoKdjQ6Ci0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcv bGttbC8yMDIwMTEyMjIyMjczOS4xNDU1MTMyLTUtai5uZXVzY2hhZWZlckBnbXgubmV0LwotIERv Y3VtZW50IGhhcmR3YXJlL2RyaXZlciBsaW1pdGF0aW9ucwotIE9ubHkgYWNjZXB0IG5vcm1hbCBw b2xhcml0eQotIEZpeCBhIHR5cG8gKCJ6b25lIiAtPiAiemVybyIpCi0gY2hhbmdlIE1BWF9QRVJJ T0RfTlMgdG8gMHhmZmZmICogMTI1Ci0gQ2xhbXAgcGVyaW9kIHRvIHRoZSBtYXhpbXVtIHJhdGhl ciB0aGFuIHJldHVybmluZyBhbiBlcnJvcgotIFJlbmFtZSBwcml2YXRlIHN0cnVjdCBwb2ludGVy IHRvIHByaXYKLSBSZWFycmFnZSBjb250cm9sIGZsb3cgaW4gX3Byb2JlIHRvIHNhdmUgYSBmZXcg bGluZXMgYW5kIGEgdGVtcG9yYXJ5IHZhcmlhYmxlCi0gQWRkIG1pc3NpbmcgTU9EVUxFX0FMSUFT IGxpbmUKLSBTcGVsbCBvdXQgT0RNCgp2MzoKLSBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21s LzIwMjAwOTI0MTkyNDU1LjI0ODQwMDUtNS1qLm5ldXNjaGFlZmVyQGdteC5uZXQvCi0gUmVsaWNl bnNlIGFzIEdQTHYyIG9yIGxhdGVyCi0gQWRkIGVtYWlsIGFkZHJlc3MgdG8gY29weXJpZ2h0IGxp bmUKLSBSZW1vdmUgT0YgY29tcGF0aWJsZSBzdHJpbmcgYW5kIGRvbid0IGluY2x1ZGUgbGludXgv b2ZfZGV2aWNlLmgKLSBGaXggYm9ndXMgPzogaW4gcmV0dXJuIGxpbmUKLSBEb24ndCB1c2UgYSBj b21tYSBhZnRlciBzZW50aW5lbHMKLSBBdm9pZCByZXQgfD0gLi4uIHBhdHRlcm4KLSBNb3ZlIDgt Yml0IHJlZ2lzdGVyIGNvbnZlcnNpb24gdG8gbnR4ZWMuaAoKdjI6Ci0gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvbGttbC8yMDIwMDkwNTEzMzIzMC4xMDE0NTgxLTYtai5uZXVzY2hhZWZlckBnbXgu bmV0LwotIFZhcmlvdXMgZ3JhbW1hciBhbmQgc3R5bGUgaW1wcm92ZW1lbnRzLCBhcyBzdWdnZXN0 ZWQgYnkgVXdlIEtsZWluZS1Lw7ZuaWcsCiAgTGVlIEpvbmVzLCBhbmQgQWxleGFuZHJlIEJlbGxv bmkKLSBTd2l0Y2ggdG8gcmVnbWFwCi0gUHJlZml4IHJlZ2lzdGVycyB3aXRoIE5UWEVDX1JFR18K LSBBZGQgaGVscCB0ZXh0IHRvIHRoZSBLY29uZmlnIG9wdGlvbgotIFVzZSB0aGUgLmFwcGx5IGNh bGxiYWNrIGluc3RlYWQgb2YgdGhlIG9sZCBBUEkKLSBBZGQgYSAjZGVmaW5lIGZvciB0aGUgdGlt ZSBiYXNlICgxMjVucykKLSBEb24ndCBjaGFuZ2UgZGV2aWNlIHN0YXRlIGluIC5wcm9iZTsgdGhp cyBhdm9pZHMgbXVsdGlwbGUgcHJvYmxlbXMKLSBSZXdvcmsgZGl2aXNpb24gYW5kIG92ZXJmbG93 IGNoZWNrIGxvZ2ljIHRvIHBlcmZvcm0gZGl2aXNpb25zIGluIDMyIGJpdHMKLSBBdm9pZCBzZXR0 aW5nIGR1dHkgY3ljbGUgdG8gemVybywgdG8gd29yayBhcm91bmQgYSBoYXJkd2FyZSBxdWlyawot LS0KIGRyaXZlcnMvcHdtL0tjb25maWcgICAgIHwgICA4ICsrCiBkcml2ZXJzL3B3bS9NYWtlZmls ZSAgICB8ICAgMSArCiBkcml2ZXJzL3B3bS9wd20tbnR4ZWMuYyB8IDE3MyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wd20vcHdtLW50eGVjLmMKCmRpZmYg LS1naXQgYS9kcml2ZXJzL3B3bS9LY29uZmlnIGIvZHJpdmVycy9wd20vS2NvbmZpZwppbmRleCA2 M2JlNTM2MmZkM2E1Li44MTVmMzI5ZWQ1YjQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3B3bS9LY29u ZmlnCisrKyBiL2RyaXZlcnMvcHdtL0tjb25maWcKQEAgLTM1MCw2ICszNTAsMTQgQEAgY29uZmln IFBXTV9NWFMKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBN IGhlcmU6IHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIHB3bS1teHMuCgorY29uZmlnIFBX TV9OVFhFQworCXRyaXN0YXRlICJOZXRyb25peCBlbWJlZGRlZCBjb250cm9sbGVyIFBXTSBzdXBw b3J0IgorCWRlcGVuZHMgb24gTUZEX05UWEVDCisJaGVscAorCSAgU2F5IHllcyBoZXJlIGlmIHlv dSB3YW50IHRvIHN1cHBvcnQgdGhlIFBXTSBvdXRwdXQgb2YgdGhlIGVtYmVkZGVkCisJICBjb250 cm9sbGVyIGZvdW5kIGluIGNlcnRhaW4gZS1ib29rIHJlYWRlcnMgZGVzaWduZWQgYnkgdGhlIG9y aWdpbmFsCisJICBkZXNpZ24gbWFudWZhY3R1cmVyIE5ldHJvbml4LgorCiBjb25maWcgUFdNX09N QVBfRE1USU1FUgogCXRyaXN0YXRlICJPTUFQIER1YWwtTW9kZSBUaW1lciBQV00gc3VwcG9ydCIK IAlkZXBlbmRzIG9uIE9GCmRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9NYWtlZmlsZSBiL2RyaXZl cnMvcHdtL01ha2VmaWxlCmluZGV4IGNiZGNkNTVkNjllZWYuLjFkZWIyOWU2YWU4ZTUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvcHdtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcHdtL01ha2VmaWxlCkBA IC0zMiw2ICszMiw3IEBAIG9iai0kKENPTkZJR19QV01fTUVTT04pCQkrPSBwd20tbWVzb24ubwog b2JqLSQoQ09ORklHX1BXTV9NRURJQVRFSykJKz0gcHdtLW1lZGlhdGVrLm8KIG9iai0kKENPTkZJ R19QV01fTVRLX0RJU1ApCSs9IHB3bS1tdGstZGlzcC5vCiBvYmotJChDT05GSUdfUFdNX01YUykJ CSs9IHB3bS1teHMubworb2JqLSQoQ09ORklHX1BXTV9OVFhFQykJCSs9IHB3bS1udHhlYy5vCiBv YmotJChDT05GSUdfUFdNX09NQVBfRE1USU1FUikJKz0gcHdtLW9tYXAtZG10aW1lci5vCiBvYmot JChDT05GSUdfUFdNX1BDQTk2ODUpCSs9IHB3bS1wY2E5Njg1Lm8KIG9iai0kKENPTkZJR19QV01f UFhBKQkJKz0gcHdtLXB4YS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9wd20tbnR4ZWMuYyBi L2RyaXZlcnMvcHdtL3B3bS1udHhlYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAuLmQzNmM4ZjhjMGE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3B3bS9w d20tbnR4ZWMuYwpAQCAtMCwwICsxLDE3MyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb3ItbGF0ZXIKKy8qCisgKiBUaGUgTmV0cm9uaXggZW1iZWRkZWQgY29udHJvbGxl ciBpcyBhIG1pY3JvY29udHJvbGxlciBmb3VuZCBpbiBzb21lCisgKiBlLWJvb2sgcmVhZGVycyBk ZXNpZ25lZCBieSB0aGUgb3JpZ2luYWwgZGVzaWduIG1hbnVmYWN0dXJlciBOZXRyb25peCwgSW5j LgorICogSXQgY29udGFpbnMgUlRDLCBiYXR0ZXJ5IG1vbml0b3JpbmcsIHN5c3RlbSBwb3dlciBt YW5hZ2VtZW50LCBhbmQgUFdNCisgKiBmdW5jdGlvbmFsaXR5LgorICoKKyAqIFRoaXMgZHJpdmVy IGltcGxlbWVudHMgUFdNIG91dHB1dC4KKyAqCisgKiBDb3B5cmlnaHQgMjAyMCBKb25hdGhhbiBO ZXVzY2jDpGZlciA8ai5uZXVzY2hhZWZlckBnbXgubmV0PgorICoKKyAqIExpbWl0YXRpb25zOgor ICogLSBUaGUgZ2V0X3N0YXRlIGNhbGxiYWNrIGlzIG5vdCBpbXBsZW1lbnRlZCwgYmVjYXVzZSB0 aGUgY3VycmVudCBzdGF0ZSBvZgorICogICB0aGUgUFdNIG91dHB1dCBjYW4ndCBiZSByZWFkIGJh Y2sgZnJvbSB0aGUgaGFyZHdhcmUuCisgKiAtIFRoZSBoYXJkd2FyZSBjYW4gb25seSBnZW5lcmF0 ZSBub3JtYWwgcG9sYXJpdHkgb3V0cHV0LgorICogLSBUaGUgcGVyaW9kIGFuZCBkdXR5IGN5Y2xl IGNhbid0IGJlIGNoYW5nZWQgdG9nZXRoZXIgaW4gb25lIGF0b21pYyBhY3Rpb24uCisgKi8KKwor I2luY2x1ZGUgPGxpbnV4L21mZC9udHhlYy5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgor I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3B3bS5o PgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisK K3N0cnVjdCBudHhlY19wd20geworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgbnR4ZWMg KmVjOworCXN0cnVjdCBwd21fY2hpcCBjaGlwOworfTsKKworc3RhdGljIHN0cnVjdCBudHhlY19w d20gKnB3bWNoaXBfdG9fcHJpdihzdHJ1Y3QgcHdtX2NoaXAgKmNoaXApCit7CisJcmV0dXJuIGNv bnRhaW5lcl9vZihjaGlwLCBzdHJ1Y3QgbnR4ZWNfcHdtLCBjaGlwKTsKK30KKworI2RlZmluZSBO VFhFQ19SRUdfQVVUT19PRkZfSEkJMHhhMQorI2RlZmluZSBOVFhFQ19SRUdfQVVUT19PRkZfTE8J MHhhMgorI2RlZmluZSBOVFhFQ19SRUdfRU5BQkxFCTB4YTMKKyNkZWZpbmUgTlRYRUNfUkVHX1BF UklPRF9MT1cJMHhhNAorI2RlZmluZSBOVFhFQ19SRUdfUEVSSU9EX0hJR0gJMHhhNQorI2RlZmlu ZSBOVFhFQ19SRUdfRFVUWV9MT1cJMHhhNgorI2RlZmluZSBOVFhFQ19SRUdfRFVUWV9ISUdICTB4 YTcKKworLyoKKyAqIFRoZSB0aW1lIGJhc2UgdXNlZCBpbiB0aGUgRUMgaXMgOE1Ieiwgb3IgMTI1 bnMuIFBlcmlvZCBhbmQgZHV0eSBjeWNsZSBhcmUKKyAqIG1lYXN1cmVkIGluIHRoaXMgdW5pdC4K KyAqLworI2RlZmluZSBUSU1FX0JBU0VfTlMgMTI1CisKKy8qCisgKiBUaGUgbWF4aW11bSBpbnB1 dCB2YWx1ZSAoaW4gbmFub3NlY29uZHMpIGlzIGRldGVybWluZWQgYnkgdGhlIHRpbWUgYmFzZSBh bmQKKyAqIHRoZSByYW5nZSBvZiB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIHRoYXQgaG9sZCB0aGUg Y29udmVydGVkIHZhbHVlLgorICogSXQgZml0cyBpbnRvIDMyIGJpdHMsIHNvIHdlIGNhbiBkbyBv dXIgY2FsY3VsYXRpb25zIGluIDMyIGJpdHMgYXMgd2VsbC4KKyAqLworI2RlZmluZSBNQVhfUEVS SU9EX05TIChUSU1FX0JBU0VfTlMgKiAweGZmZmYpCisKK3N0YXRpYyBpbnQgbnR4ZWNfcHdtX2Fw cGx5KHN0cnVjdCBwd21fY2hpcCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3bV9kZXYsCisJ CQkgICBjb25zdCBzdHJ1Y3QgcHdtX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgbnR4ZWNfcHdt ICpwcml2ID0gcHdtY2hpcF90b19wcml2KHB3bV9kZXYtPmNoaXApOworCXVuc2lnbmVkIGludCBw ZXJpb2QsIGR1dHk7CisJc3RydWN0IHJlZ19zZXF1ZW5jZSByZWdzW10gPSB7CisJCXsgTlRYRUNf UkVHX1BFUklPRF9ISUdIIH0sCisJCXsgTlRYRUNfUkVHX1BFUklPRF9MT1cgfSwKKwkJeyBOVFhF Q19SRUdfRFVUWV9ISUdIIH0sCisJCXsgTlRYRUNfUkVHX0RVVFlfTE9XIH0KKwl9OworCWludCBy ZXM7CisKKwlpZiAoc3RhdGUtPnBvbGFyaXR5ICE9IFBXTV9QT0xBUklUWV9OT1JNQUwpCisJCXJl dHVybiAtRUlOVkFMOworCisJcGVyaW9kID0gbWluX3QodTY0LCBzdGF0ZS0+cGVyaW9kLCBNQVhf UEVSSU9EX05TKTsKKwlkdXR5ICAgPSBtaW5fdCh1NjQsIHN0YXRlLT5kdXR5X2N5Y2xlLCBwZXJp b2QpOworCisJcGVyaW9kIC89IFRJTUVfQkFTRV9OUzsKKwlkdXR5ICAgLz0gVElNRV9CQVNFX05T OworCisJLyoKKwkgKiBDaGFuZ2VzIHRvIHRoZSBwZXJpb2QgYW5kIGR1dHkgY3ljbGUgdGFrZSBl ZmZlY3QgYXMgc29vbiBhcyB0aGUKKwkgKiBjb3JyZXNwb25kaW5nIGxvdyBieXRlIGlzIHdyaXR0 ZW4sIHNvIHRoZSBoYXJkd2FyZSBtYXkgYmUgY29uZmlndXJlZAorCSAqIHRvIGFuIGluY29uc2lz dGVudCBzdGF0ZSBhZnRlciB0aGUgcGVyaW9kIGlzIHdyaXR0ZW4gYW5kIGJlZm9yZSB0aGUKKwkg KiBkdXR5IGN5Y2xlIGlzIGZ1bGx5IHdyaXR0ZW4uIElmLCBpbiBzdWNoIGEgY2FzZSwgdGhlIG9s ZCBkdXR5IGN5Y2xlCisJICogaXMgbG9uZ2VyIHRoYW4gdGhlIG5ldyBwZXJpb2QsIHRoZSBFQyBt YXkgb3V0cHV0IDEwMCUgZm9yIGEgbW9tZW50LgorCSAqLworCisJcmVnc1swXS5kZWYgPSBudHhl Y19yZWc4KHBlcmlvZCA+PiA4KTsKKwlyZWdzWzFdLmRlZiA9IG50eGVjX3JlZzgocGVyaW9kKTsK KwlyZWdzWzJdLmRlZiA9IG50eGVjX3JlZzgoZHV0eSA+PiA4KTsKKwlyZWdzWzNdLmRlZiA9IG50 eGVjX3JlZzgoZHV0eSk7CisKKwlyZXMgPSByZWdtYXBfbXVsdGlfcmVnX3dyaXRlKHByaXYtPmVj LT5yZWdtYXAsIHJlZ3MsIEFSUkFZX1NJWkUocmVncykpOworCWlmIChyZXMpCisJCXJldHVybiBy ZXM7CisKKwkvKgorCSAqIFdyaXRpbmcgYSBkdXR5IGN5Y2xlIG9mIHplcm8gcHV0cyB0aGUgZGV2 aWNlIGludG8gYSBzdGF0ZSB3aGVyZQorCSAqIHdyaXRpbmcgYSBoaWdoZXIgZHV0eSBjeWNsZSBk b2Vzbid0IHJlc3VsdCBpbiB0aGUgYnJpZ2h0bmVzcyB0aGF0IGl0CisJICogdXN1YWxseSByZXN1 bHRzIGluLiBUaGlzIGNhbiBiZSBmaXhlZCBieSBjeWNsaW5nIHRoZSBFTkFCTEUgcmVnaXN0ZXIu CisJICoKKwkgKiBBcyBhIHdvcmthcm91bmQsIHdyaXRlIEVOQUJMRT0wIHdoZW4gdGhlIGR1dHkg Y3ljbGUgaXMgemVyby4KKwkgKi8KKwlpZiAoc3RhdGUtPmVuYWJsZWQgJiYgZHV0eSAhPSAwKSB7 CisJCXJlcyA9IHJlZ21hcF93cml0ZShwcml2LT5lYy0+cmVnbWFwLCBOVFhFQ19SRUdfRU5BQkxF LCBudHhlY19yZWc4KDEpKTsKKwkJaWYgKHJlcykKKwkJCXJldHVybiByZXM7CisKKwkJLyogRGlz YWJsZSB0aGUgYXV0by1vZmYgdGltZXIgKi8KKwkJcmVzID0gcmVnbWFwX3dyaXRlKHByaXYtPmVj LT5yZWdtYXAsIE5UWEVDX1JFR19BVVRPX09GRl9ISSwgbnR4ZWNfcmVnOCgweGZmKSk7CisJCWlm IChyZXMpCisJCQlyZXR1cm4gcmVzOworCisJCXJldHVybiByZWdtYXBfd3JpdGUocHJpdi0+ZWMt PnJlZ21hcCwgTlRYRUNfUkVHX0FVVE9fT0ZGX0xPLCBudHhlY19yZWc4KDB4ZmYpKTsKKwl9IGVs c2UgeworCQlyZXR1cm4gcmVnbWFwX3dyaXRlKHByaXYtPmVjLT5yZWdtYXAsIE5UWEVDX1JFR19F TkFCTEUsIG50eGVjX3JlZzgoMCkpOworCX0KK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBwd21f b3BzIG50eGVjX3B3bV9vcHMgPSB7CisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLmFwcGx5ID0g bnR4ZWNfcHdtX2FwcGx5LAorCS8qCisJICogTm8gLmdldF9zdGF0ZSBjYWxsYmFjaywgYmVjYXVz ZSB0aGUgY3VycmVudCBzdGF0ZSBjYW5ub3QgYmUgcmVhZAorCSAqIGJhY2sgZnJvbSB0aGUgaGFy ZHdhcmUuCisJICovCit9OworCitzdGF0aWMgaW50IG50eGVjX3B3bV9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBudHhlYyAqZWMgPSBkZXZfZ2V0X2RydmRh dGEocGRldi0+ZGV2LnBhcmVudCk7CisJc3RydWN0IG50eGVjX3B3bSAqcHJpdjsKKwlzdHJ1Y3Qg cHdtX2NoaXAgKmNoaXA7CisKKwlwcml2ID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVv ZigqcHJpdiksIEdGUF9LRVJORUwpOworCWlmICghcHJpdikKKwkJcmV0dXJuIC1FTk9NRU07CisK Kwlwcml2LT5lYyA9IGVjOworCXByaXYtPmRldiA9ICZwZGV2LT5kZXY7CisKKwlwbGF0Zm9ybV9z ZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTsKKworCWNoaXAgPSAmcHJpdi0+Y2hpcDsKKwljaGlwLT5k ZXYgPSAmcGRldi0+ZGV2OworCWNoaXAtPm9wcyA9ICZudHhlY19wd21fb3BzOworCWNoaXAtPmJh c2UgPSAtMTsKKwljaGlwLT5ucHdtID0gMTsKKworCXJldHVybiBwd21jaGlwX2FkZChjaGlwKTsK K30KKworc3RhdGljIGludCBudHhlY19wd21fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCit7CisJc3RydWN0IG50eGVjX3B3bSAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRh KHBkZXYpOworCXN0cnVjdCBwd21fY2hpcCAqY2hpcCA9ICZwcml2LT5jaGlwOworCisJcmV0dXJu IHB3bWNoaXBfcmVtb3ZlKGNoaXApOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZl ciBudHhlY19wd21fZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gIm50eGVjLXB3 bSIsCisJfSwKKwkucHJvYmUgPSBudHhlY19wd21fcHJvYmUsCisJLnJlbW92ZSA9IG50eGVjX3B3 bV9yZW1vdmUsCit9OworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihudHhlY19wd21fZHJpdmVyKTsK KworTU9EVUxFX0FVVEhPUigiSm9uYXRoYW4gTmV1c2Now6RmZXIgPGoubmV1c2NoYWVmZXJAZ214 Lm5ldD4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiUFdNIGRyaXZlciBmb3IgTmV0cm9uaXggRUMi KTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06bnR4ZWMt cHdtIik7Ci0tCjIuMjkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK