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=-13.7 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,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 42D32C433E9 for ; Sat, 9 Jan 2021 19:08:36 +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 EDAAC239A4 for ; Sat, 9 Jan 2021 19:08:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EDAAC239A4 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=9O2xBzUkeWzpcMFglqu3+yd1Q7lyG88ZKkCcqcZi1ME=; b=wJBf68L0AbZUsRAyCaqMAy2LH aobsZyVpGblaIxwFMOgRVfCGp8+K0T3ZRzIaJoblItuFU8+O6I9LAa9oi9UxuY73nA3Dl0Di/uqiA tvvDDAfzDBvsES68sguWUPp/RA0a/wSYCJ6/SMG3rSVVvsHrJsaVkLG611Mu9haBgnygDzr8lhUXz PYLWzF2o0xW8vHmz9B8UyEGp+hCfVRw9F6RJoTS8JxhysB5ULDDlHncLw4oCzw3SDJV/RmSfd3LXD ki8w33UUcAlxkxA3Levo/HbuzNY9XzLi5jLN0+5b6jPARP7v2VbwJI1wFZqBtoEksc6+vF/ihdV89 KZKqtw7uA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyJZ4-0007IJ-NG; Sat, 09 Jan 2021 19:06:18 +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 1kyJYi-0007Ef-6x for linux-arm-kernel@lists.infradead.org; Sat, 09 Jan 2021 19:05:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1610219113; bh=ZyHPtKQoclIWrb+YTNneFagtFQpMpOBW3jmSX5TNKH0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=h0KMI+yGZiFLzWJSnt04xNRVblEb2qvG7fNJyT2EkBWVTuVdCz8bkTktHG8xAej14 WSMJeuZgQ18uMAbPBb/rusj7XWkTxk9Tl/wl8lFiQ6ZQOw7f+CsCW3Q9xDCLfmKRMq Bno1luRhcnq6GCd5Uv+3oo/jge2aevO6AKLizZoc= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.215.57]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MgesG-1kJRxN03hc-00h3SJ; Sat, 09 Jan 2021 20:05:13 +0100 From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v7 4/7] pwm: ntxec: Add driver for PWM function in Netronix EC Date: Sat, 9 Jan 2021 19:02:17 +0100 Message-Id: <20210109180220.121511-5-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210109180220.121511-1-j.neuschaefer@gmx.net> References: <20210109180220.121511-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:uRF6kg1X+imf5yBjkZrubEY4MShVtOgdXFaGtwDqAfIe9wgqa+k yXcPnVHiBA78wNQs4lqZk5gHjUE16TLGZTYdosaB3+2n2IsjyxNXdR9kL22s7obZJL+l5Es x37iv28M8qx3Ycr8xpvHZazlXA8VISQHA3WCcCTw3AXvfu+0NsiDcaD5G292XswZutRUqpF fmKFzNy5xCuqoHRI5MKag== X-UI-Out-Filterresults: notjunk:1;V03:K0:LamIT2k+pfY=:ti9UM5LEnNFB9WjtXsmArT KYkUb4V+D94Mm/yX56lRY0UsYcCYrLJdv6jsdbltfJy+6XWVwZ9pWOrKeAirzpeUuPOczi3lS fxDb2JsOhEg3rUHorCpXxRX7yhLHFhgVaxhzGBA53Wa9zDo89VItcE3QRhkmGux8CtYM+2Kbw yGZltWSWKezMk+URt/70Aqa9a+x53T/YiUuUk6k6xT1c9mAT4ZHafGvxtAcMWOgSpUFLOGXAP fkxCIJCRTaisMCrENQHiQov7VEFibl2S5Cfw9eJ7NuOB7BK8N/AngycZtQXmXa9mhLr6QgkMs 384M84GM2Rmlj1e2AcQltDtLhX9kE9+eojodvpe+tR4J4sUvrRD3tIHPz2mcP3ShvUSmnQldJ EumLhV2dj+3m+eaZHWuzmWq92hRSuP9IaUB3OXYszrFgwqQpifffhdLMOPJyaFeI4aTSkEkB9 bpNlxLag0I9MPeUlNiDN3o1OoeK55MycxGwgJpfioatitp8KMJzXzwC7fh0ByleYMew2R8ZD4 v9nVF3UF88tTPdABA5dRu6uv8k8/VZGjxFV1XUnD4uQfy+QnMmxrfhQBRKrPUeqmy1qO7yrqn DKSLv/XCSUXAh/84x6dujmLG9eTy1hFavBofZXcsPGaqgECRVkZ7WCoifh5pSdtSH/NxJ4fRf 6HYfrVYa7RZHA6DYdfq2x6Auk/v23Da1WyigoknfwHzXYQ2zVp8mgVq+iKazkXRGeSz8PmWDI 3nrcCO5llnoFqqq2lB/B7+R2zux7T/C8CdcBNSY3H5iVgLxfg0ysxI6dlGgijxtt705uMalcs 2d4Es/tzlzz18OhfFWNi2PlCd4Vd+Kkepns1Kv7aQvbSABfZ9Io990X0JNxD8PpVKkH9cZhDe 8OWh4UcVF/RmdRVhZTBQ== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210109_140556_503134_2EEA62A0 X-CRM114-Status: GOOD ( 35.84 ) 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 bmV1c2NoYWVmZXJAZ214Lm5ldD4KLS0tCnY3OgotIG5vIGNoYW5nZXMKCnY2OgotIGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMDEyMDgwMTEwMDAuMzA2MDIzOS01LWoubmV1c2NoYWVm ZXJAZ214Lm5ldC8KLSBNb3ZlIHBlcmlvZCAvIGR1dHkgY3ljbGUgc2V0dGluZyBjb2RlIHRvIGEg ZnVuY3Rpb24KLSBSZW5hbWUgcHdtY2hpcF90b19wcml2IHRvIG50eGVjX3B3bV9mcm9tX2NoaXAK LSBTZXQgcGVyaW9kIGFuZCBkdXR5IGN5Y2xlIG9ubHkgYmVmb3JlIGVuYWJsaW5nIHRoZSBvdXRw dXQKLSBNZW50aW9uIHRoYXQgZHV0eT0wLCBlbmFibGU9MSBpcyBhc3N1bWVkIG5vdCB0byBoYXBw ZW4KLSBJbnRlcmxlYXZlIHdyaXRlcyB0byB0aGUgcGVyaW9kIGFuZCBkdXR5IGN5Y2xlIHJlZ2lz dGVycywgdG8gbWluaW1pemUgdGhlCiAgd2luZG93IG9mIHRpbWUgdGhhdCBhbiBpbmNvbnNpc3Rl bnQgc3RhdGUgaXMgY29uZmlndXJlZAoKdjU6Ci0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGtt bC8yMDIwMTIwMTAxMTUxMy4xNjI3MDI4LTUtai5uZXVzY2hhZWZlckBnbXgubmV0LwotIEF2b2lk IHRydW5jYXRpb24gb2YgcGVyaW9kIGFuZCBkdXR5IGN5Y2xlIHRvIDMyIGJpdHMKLSBNYWtlIG50 eGVjX3B3bV9vcHMgY29uc3QKLSBVc2UgcmVnbWFwX211bHRpX3JlZ193cml0ZQotIEFkZCBjb21t ZW50IGFib3V0IGdldF9zdGF0ZSB0byBudHhlY19wd21fb3BzCi0gQWRkIGNvbW1lbnRzIGFib3V0 IG5vbi1hdG9taWNpdHkgb2YgKHBlcmlvZCwgZHV0eSBjeWNsZSkgdXBkYXRlCgp2NDoKLSBodHRw czovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMjAxMTIyMjIyNzM5LjE0NTUxMzItNS1qLm5ldXNj aGFlZmVyQGdteC5uZXQvCi0gRG9jdW1lbnQgaGFyZHdhcmUvZHJpdmVyIGxpbWl0YXRpb25zCi0g T25seSBhY2NlcHQgbm9ybWFsIHBvbGFyaXR5Ci0gRml4IGEgdHlwbyAoInpvbmUiIC0+ICJ6ZXJv IikKLSBjaGFuZ2UgTUFYX1BFUklPRF9OUyB0byAweGZmZmYgKiAxMjUKLSBDbGFtcCBwZXJpb2Qg dG8gdGhlIG1heGltdW0gcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIGVycm9yCi0gUmVuYW1lIHBy aXZhdGUgc3RydWN0IHBvaW50ZXIgdG8gcHJpdgotIFJlYXJyYWdlIGNvbnRyb2wgZmxvdyBpbiBf cHJvYmUgdG8gc2F2ZSBhIGZldyBsaW5lcyBhbmQgYSB0ZW1wb3JhcnkgdmFyaWFibGUKLSBBZGQg bWlzc2luZyBNT0RVTEVfQUxJQVMgbGluZQotIFNwZWxsIG91dCBPRE0KCnYzOgotIGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMDA5MjQxOTI0NTUuMjQ4NDAwNS01LWoubmV1c2NoYWVm ZXJAZ214Lm5ldC8KLSBSZWxpY2Vuc2UgYXMgR1BMdjIgb3IgbGF0ZXIKLSBBZGQgZW1haWwgYWRk cmVzcyB0byBjb3B5cmlnaHQgbGluZQotIFJlbW92ZSBPRiBjb21wYXRpYmxlIHN0cmluZyBhbmQg ZG9uJ3QgaW5jbHVkZSBsaW51eC9vZl9kZXZpY2UuaAotIEZpeCBib2d1cyA/OiBpbiByZXR1cm4g bGluZQotIERvbid0IHVzZSBhIGNvbW1hIGFmdGVyIHNlbnRpbmVscwotIEF2b2lkIHJldCB8PSAu Li4gcGF0dGVybgotIE1vdmUgOC1iaXQgcmVnaXN0ZXIgY29udmVyc2lvbiB0byBudHhlYy5oCgp2 MjoKLSBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMjAwOTA1MTMzMjMwLjEwMTQ1ODEt Ni1qLm5ldXNjaGFlZmVyQGdteC5uZXQvCi0gVmFyaW91cyBncmFtbWFyIGFuZCBzdHlsZSBpbXBy b3ZlbWVudHMsIGFzIHN1Z2dlc3RlZCBieSBVd2UgS2xlaW5lLUvDtm5pZywKICBMZWUgSm9uZXMs IGFuZCBBbGV4YW5kcmUgQmVsbG9uaQotIFN3aXRjaCB0byByZWdtYXAKLSBQcmVmaXggcmVnaXN0 ZXJzIHdpdGggTlRYRUNfUkVHXwotIEFkZCBoZWxwIHRleHQgdG8gdGhlIEtjb25maWcgb3B0aW9u Ci0gVXNlIHRoZSAuYXBwbHkgY2FsbGJhY2sgaW5zdGVhZCBvZiB0aGUgb2xkIEFQSQotIEFkZCBh ICNkZWZpbmUgZm9yIHRoZSB0aW1lIGJhc2UgKDEyNW5zKQotIERvbid0IGNoYW5nZSBkZXZpY2Ug c3RhdGUgaW4gLnByb2JlOyB0aGlzIGF2b2lkcyBtdWx0aXBsZSBwcm9ibGVtcwotIFJld29yayBk aXZpc2lvbiBhbmQgb3ZlcmZsb3cgY2hlY2sgbG9naWMgdG8gcGVyZm9ybSBkaXZpc2lvbnMgaW4g MzIgYml0cwotIEF2b2lkIHNldHRpbmcgZHV0eSBjeWNsZSB0byB6ZXJvLCB0byB3b3JrIGFyb3Vu ZCBhIGhhcmR3YXJlIHF1aXJrCi0tLQogZHJpdmVycy9wd20vS2NvbmZpZyAgICAgfCAgIDggKysK IGRyaXZlcnMvcHdtL01ha2VmaWxlICAgIHwgICAxICsKIGRyaXZlcnMvcHdtL3B3bS1udHhlYy5j IHwgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMg Y2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3B3 bS9wd20tbnR4ZWMuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL0tjb25maWcgYi9kcml2ZXJz L3B3bS9LY29uZmlnCmluZGV4IDA5MzdlMWMwNDdhY2IuLmEyODMwYjg4MzJiOTcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvcHdtL0tjb25maWcKKysrIGIvZHJpdmVycy9wd20vS2NvbmZpZwpAQCAtMzkz LDYgKzM5MywxNCBAQCBjb25maWcgUFdNX01YUwogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBh cyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxsZWQg cHdtLW14cy4KCitjb25maWcgUFdNX05UWEVDCisJdHJpc3RhdGUgIk5ldHJvbml4IGVtYmVkZGVk IGNvbnRyb2xsZXIgUFdNIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBNRkRfTlRYRUMKKwloZWxwCisJ ICBTYXkgeWVzIGhlcmUgaWYgeW91IHdhbnQgdG8gc3VwcG9ydCB0aGUgUFdNIG91dHB1dCBvZiB0 aGUgZW1iZWRkZWQKKwkgIGNvbnRyb2xsZXIgZm91bmQgaW4gY2VydGFpbiBlLWJvb2sgcmVhZGVy cyBkZXNpZ25lZCBieSB0aGUgb3JpZ2luYWwKKwkgIGRlc2lnbiBtYW51ZmFjdHVyZXIgTmV0cm9u aXguCisKIGNvbmZpZyBQV01fT01BUF9ETVRJTUVSCiAJdHJpc3RhdGUgIk9NQVAgRHVhbC1Nb2Rl IFRpbWVyIFBXTSBzdXBwb3J0IgogCWRlcGVuZHMgb24gT0YKZGlmZiAtLWdpdCBhL2RyaXZlcnMv cHdtL01ha2VmaWxlIGIvZHJpdmVycy9wd20vTWFrZWZpbGUKaW5kZXggMThiODlkN2ZkMDkyYS4u N2Q5N2ViNTk1YmJlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wd20vTWFrZWZpbGUKKysrIGIvZHJp dmVycy9wd20vTWFrZWZpbGUKQEAgLTM1LDYgKzM1LDcgQEAgb2JqLSQoQ09ORklHX1BXTV9NRVNP TikJCSs9IHB3bS1tZXNvbi5vCiBvYmotJChDT05GSUdfUFdNX01FRElBVEVLKQkrPSBwd20tbWVk aWF0ZWsubwogb2JqLSQoQ09ORklHX1BXTV9NVEtfRElTUCkJKz0gcHdtLW10ay1kaXNwLm8KIG9i ai0kKENPTkZJR19QV01fTVhTKQkJKz0gcHdtLW14cy5vCitvYmotJChDT05GSUdfUFdNX05UWEVD KQkJKz0gcHdtLW50eGVjLm8KIG9iai0kKENPTkZJR19QV01fT01BUF9ETVRJTUVSKQkrPSBwd20t b21hcC1kbXRpbWVyLm8KIG9iai0kKENPTkZJR19QV01fUENBOTY4NSkJKz0gcHdtLXBjYTk2ODUu bwogb2JqLSQoQ09ORklHX1BXTV9QWEEpCQkrPSBwd20tcHhhLm8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvcHdtL3B3bS1udHhlYy5jIGIvZHJpdmVycy9wd20vcHdtLW50eGVjLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMWRiMzBhNmNhYTNhZAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvcHdtL3B3bS1udHhlYy5jCkBAIC0wLDAgKzEsMTgyIEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoKKyAqIFRoZSBOZXRyb25p eCBlbWJlZGRlZCBjb250cm9sbGVyIGlzIGEgbWljcm9jb250cm9sbGVyIGZvdW5kIGluIHNvbWUK KyAqIGUtYm9vayByZWFkZXJzIGRlc2lnbmVkIGJ5IHRoZSBvcmlnaW5hbCBkZXNpZ24gbWFudWZh Y3R1cmVyIE5ldHJvbml4LCBJbmMuCisgKiBJdCBjb250YWlucyBSVEMsIGJhdHRlcnkgbW9uaXRv cmluZywgc3lzdGVtIHBvd2VyIG1hbmFnZW1lbnQsIGFuZCBQV00KKyAqIGZ1bmN0aW9uYWxpdHku CisgKgorICogVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBQV00gb3V0cHV0LgorICoKKyAqIENvcHly aWdodCAyMDIwIEpvbmF0aGFuIE5ldXNjaMOkZmVyIDxqLm5ldXNjaGFlZmVyQGdteC5uZXQ+Cisg KgorICogTGltaXRhdGlvbnM6CisgKiAtIFRoZSBnZXRfc3RhdGUgY2FsbGJhY2sgaXMgbm90IGlt cGxlbWVudGVkLCBiZWNhdXNlIHRoZSBjdXJyZW50IHN0YXRlIG9mCisgKiAgIHRoZSBQV00gb3V0 cHV0IGNhbid0IGJlIHJlYWQgYmFjayBmcm9tIHRoZSBoYXJkd2FyZS4KKyAqIC0gVGhlIGhhcmR3 YXJlIGNhbiBvbmx5IGdlbmVyYXRlIG5vcm1hbCBwb2xhcml0eSBvdXRwdXQuCisgKiAtIFRoZSBw ZXJpb2QgYW5kIGR1dHkgY3ljbGUgY2FuJ3QgYmUgY2hhbmdlZCB0b2dldGhlciBpbiBvbmUgYXRv bWljIGFjdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvbWZkL250eGVjLmg+CisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cisj aW5jbHVkZSA8bGludXgvcHdtLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KKworc3RydWN0IG50eGVjX3B3bSB7CisJc3RydWN0IGRldmljZSAq ZGV2OworCXN0cnVjdCBudHhlYyAqZWM7CisJc3RydWN0IHB3bV9jaGlwIGNoaXA7Cit9OworCitz dGF0aWMgc3RydWN0IG50eGVjX3B3bSAqbnR4ZWNfcHdtX2Zyb21fY2hpcChzdHJ1Y3QgcHdtX2No aXAgKmNoaXApCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihjaGlwLCBzdHJ1Y3QgbnR4ZWNfcHdt LCBjaGlwKTsKK30KKworI2RlZmluZSBOVFhFQ19SRUdfQVVUT19PRkZfSEkJMHhhMQorI2RlZmlu ZSBOVFhFQ19SRUdfQVVUT19PRkZfTE8JMHhhMgorI2RlZmluZSBOVFhFQ19SRUdfRU5BQkxFCTB4 YTMKKyNkZWZpbmUgTlRYRUNfUkVHX1BFUklPRF9MT1cJMHhhNAorI2RlZmluZSBOVFhFQ19SRUdf UEVSSU9EX0hJR0gJMHhhNQorI2RlZmluZSBOVFhFQ19SRUdfRFVUWV9MT1cJMHhhNgorI2RlZmlu ZSBOVFhFQ19SRUdfRFVUWV9ISUdICTB4YTcKKworLyoKKyAqIFRoZSB0aW1lIGJhc2UgdXNlZCBp biB0aGUgRUMgaXMgOE1Ieiwgb3IgMTI1bnMuIFBlcmlvZCBhbmQgZHV0eSBjeWNsZSBhcmUKKyAq IG1lYXN1cmVkIGluIHRoaXMgdW5pdC4KKyAqLworI2RlZmluZSBUSU1FX0JBU0VfTlMgMTI1CisK Ky8qCisgKiBUaGUgbWF4aW11bSBpbnB1dCB2YWx1ZSAoaW4gbmFub3NlY29uZHMpIGlzIGRldGVy bWluZWQgYnkgdGhlIHRpbWUgYmFzZSBhbmQKKyAqIHRoZSByYW5nZSBvZiB0aGUgaGFyZHdhcmUg cmVnaXN0ZXJzIHRoYXQgaG9sZCB0aGUgY29udmVydGVkIHZhbHVlLgorICogSXQgZml0cyBpbnRv IDMyIGJpdHMsIHNvIHdlIGNhbiBkbyBvdXIgY2FsY3VsYXRpb25zIGluIDMyIGJpdHMgYXMgd2Vs bC4KKyAqLworI2RlZmluZSBNQVhfUEVSSU9EX05TIChUSU1FX0JBU0VfTlMgKiAweGZmZmYpCisK K3N0YXRpYyBpbnQgbnR4ZWNfcHdtX3NldF9yYXdfcGVyaW9kX2FuZF9kdXR5X2N5Y2xlKHN0cnVj dCBwd21fY2hpcCAqY2hpcCwKKwkJCQkJCSAgIGludCBwZXJpb2QsIGludCBkdXR5KQoreworCXN0 cnVjdCBudHhlY19wd20gKnByaXYgPSBudHhlY19wd21fZnJvbV9jaGlwKGNoaXApOworCisJLyoK KwkgKiBDaGFuZ2VzIHRvIHRoZSBwZXJpb2QgYW5kIGR1dHkgY3ljbGUgdGFrZSBlZmZlY3QgYXMg c29vbiBhcyB0aGUKKwkgKiBjb3JyZXNwb25kaW5nIGxvdyBieXRlIGlzIHdyaXR0ZW4sIHNvIHRo ZSBoYXJkd2FyZSBtYXkgYmUgY29uZmlndXJlZAorCSAqIHRvIGFuIGluY29uc2lzdGVudCBzdGF0 ZSBhZnRlciB0aGUgcGVyaW9kIGlzIHdyaXR0ZW4gYW5kIGJlZm9yZSB0aGUKKwkgKiBkdXR5IGN5 Y2xlIGlzIGZ1bGx5IHdyaXR0ZW4uIElmLCBpbiBzdWNoIGEgY2FzZSwgdGhlIG9sZCBkdXR5IGN5 Y2xlCisJICogaXMgbG9uZ2VyIHRoYW4gdGhlIG5ldyBwZXJpb2QsIHRoZSBFQyBtYXkgb3V0cHV0 IDEwMCUgZm9yIGEgbW9tZW50LgorCSAqCisJICogVG8gbWluaW1pemUgdGhlIHRpbWUgYmV0d2Vl biB0aGUgY2hhbmdlcyB0byBwZXJpb2QgYW5kIGR1dHkgY3ljbGUKKwkgKiB0YWtpbmcgZWZmZWN0 LCB0aGUgd3JpdGVzIGFyZSBpbnRlcmxlYXZlZC4KKwkgKi8KKworCXN0cnVjdCByZWdfc2VxdWVu Y2UgcmVnc1tdID0geworCQl7IE5UWEVDX1JFR19QRVJJT0RfSElHSCwgbnR4ZWNfcmVnOChwZXJp b2QgPj4gOCkgfSwKKwkJeyBOVFhFQ19SRUdfRFVUWV9ISUdILCBudHhlY19yZWc4KGR1dHkgPj4g OCkgfSwKKwkJeyBOVFhFQ19SRUdfUEVSSU9EX0xPVywgbnR4ZWNfcmVnOChwZXJpb2QpIH0sCisJ CXsgTlRYRUNfUkVHX0RVVFlfTE9XLCBudHhlY19yZWc4KGR1dHkpIH0sCisJfTsKKworCXJldHVy biByZWdtYXBfbXVsdGlfcmVnX3dyaXRlKHByaXYtPmVjLT5yZWdtYXAsIHJlZ3MsIEFSUkFZX1NJ WkUocmVncykpOworfQorCitzdGF0aWMgaW50IG50eGVjX3B3bV9hcHBseShzdHJ1Y3QgcHdtX2No aXAgKmNoaXAsIHN0cnVjdCBwd21fZGV2aWNlICpwd21fZGV2LAorCQkJICAgY29uc3Qgc3RydWN0 IHB3bV9zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IG50eGVjX3B3bSAqcHJpdiA9IG50eGVjX3B3 bV9mcm9tX2NoaXAoY2hpcCk7CisJdW5zaWduZWQgaW50IHBlcmlvZCwgZHV0eTsKKwlpbnQgcmVz OworCisJaWYgKHN0YXRlLT5wb2xhcml0eSAhPSBQV01fUE9MQVJJVFlfTk9STUFMKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCXBlcmlvZCA9IG1pbl90KHU2NCwgc3RhdGUtPnBlcmlvZCwgTUFYX1BF UklPRF9OUyk7CisJZHV0eSAgID0gbWluX3QodTY0LCBzdGF0ZS0+ZHV0eV9jeWNsZSwgcGVyaW9k KTsKKworCXBlcmlvZCAvPSBUSU1FX0JBU0VfTlM7CisJZHV0eSAgIC89IFRJTUVfQkFTRV9OUzsK KworCS8qCisJICogV3JpdGluZyBhIGR1dHkgY3ljbGUgb2YgemVybyBwdXRzIHRoZSBkZXZpY2Ug aW50byBhIHN0YXRlIHdoZXJlCisJICogd3JpdGluZyBhIGhpZ2hlciBkdXR5IGN5Y2xlIGRvZXNu J3QgcmVzdWx0IGluIHRoZSBicmlnaHRuZXNzIHRoYXQgaXQKKwkgKiB1c3VhbGx5IHJlc3VsdHMg aW4uIFRoaXMgY2FuIGJlIGZpeGVkIGJ5IGN5Y2xpbmcgdGhlIEVOQUJMRSByZWdpc3Rlci4KKwkg KgorCSAqIEFzIGEgd29ya2Fyb3VuZCwgd3JpdGUgRU5BQkxFPTAgd2hlbiB0aGUgZHV0eSBjeWNs ZSBpcyB6ZXJvLgorCSAqIFRoZSBjYXNlIHRoYXQgc29tZXRoaW5nIGhhcyBwcmV2aW91c2x5IHNl dCB0aGUgZHV0eSBjeWNsZSB0byB6ZXJvCisJICogYnV0IEVOQUJMRT0xLCBpcyBub3QgaGFuZGxl ZC4KKwkgKi8KKwlpZiAoc3RhdGUtPmVuYWJsZWQgJiYgZHV0eSAhPSAwKSB7CisJCXJlcyA9IG50 eGVjX3B3bV9zZXRfcmF3X3BlcmlvZF9hbmRfZHV0eV9jeWNsZShjaGlwLCBwZXJpb2QsIGR1dHkp OworCQlpZiAocmVzKQorCQkJcmV0dXJuIHJlczsKKworCQlyZXMgPSByZWdtYXBfd3JpdGUocHJp di0+ZWMtPnJlZ21hcCwgTlRYRUNfUkVHX0VOQUJMRSwgbnR4ZWNfcmVnOCgxKSk7CisJCWlmIChy ZXMpCisJCQlyZXR1cm4gcmVzOworCisJCS8qIERpc2FibGUgdGhlIGF1dG8tb2ZmIHRpbWVyICov CisJCXJlcyA9IHJlZ21hcF93cml0ZShwcml2LT5lYy0+cmVnbWFwLCBOVFhFQ19SRUdfQVVUT19P RkZfSEksIG50eGVjX3JlZzgoMHhmZikpOworCQlpZiAocmVzKQorCQkJcmV0dXJuIHJlczsKKwor CQlyZXR1cm4gcmVnbWFwX3dyaXRlKHByaXYtPmVjLT5yZWdtYXAsIE5UWEVDX1JFR19BVVRPX09G Rl9MTywgbnR4ZWNfcmVnOCgweGZmKSk7CisJfSBlbHNlIHsKKwkJcmV0dXJuIHJlZ21hcF93cml0 ZShwcml2LT5lYy0+cmVnbWFwLCBOVFhFQ19SRUdfRU5BQkxFLCBudHhlY19yZWc4KDApKTsKKwl9 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcHdtX29wcyBudHhlY19wd21fb3BzID0geworCS5v d25lciA9IFRISVNfTU9EVUxFLAorCS5hcHBseSA9IG50eGVjX3B3bV9hcHBseSwKKwkvKgorCSAq IE5vIC5nZXRfc3RhdGUgY2FsbGJhY2ssIGJlY2F1c2UgdGhlIGN1cnJlbnQgc3RhdGUgY2Fubm90 IGJlIHJlYWQKKwkgKiBiYWNrIGZyb20gdGhlIGhhcmR3YXJlLgorCSAqLworfTsKKworc3RhdGlj IGludCBudHhlY19wd21fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlz dHJ1Y3QgbnR4ZWMgKmVjID0gZGV2X2dldF9kcnZkYXRhKHBkZXYtPmRldi5wYXJlbnQpOworCXN0 cnVjdCBudHhlY19wd20gKnByaXY7CisJc3RydWN0IHB3bV9jaGlwICpjaGlwOworCisJcHJpdiA9 IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIXByaXYpCisJCXJldHVybiAtRU5PTUVNOworCisJcHJpdi0+ZWMgPSBlYzsKKwlwcml2LT5k ZXYgPSAmcGRldi0+ZGV2OworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7CisK KwljaGlwID0gJnByaXYtPmNoaXA7CisJY2hpcC0+ZGV2ID0gJnBkZXYtPmRldjsKKwljaGlwLT5v cHMgPSAmbnR4ZWNfcHdtX29wczsKKwljaGlwLT5iYXNlID0gLTE7CisJY2hpcC0+bnB3bSA9IDE7 CisKKwlyZXR1cm4gcHdtY2hpcF9hZGQoY2hpcCk7Cit9CisKK3N0YXRpYyBpbnQgbnR4ZWNfcHdt X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBudHhlY19w d20gKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlzdHJ1Y3QgcHdtX2NoaXAg KmNoaXAgPSAmcHJpdi0+Y2hpcDsKKworCXJldHVybiBwd21jaGlwX3JlbW92ZShjaGlwKTsKK30K Kworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbnR4ZWNfcHdtX2RyaXZlciA9IHsKKwku ZHJpdmVyID0geworCQkubmFtZSA9ICJudHhlYy1wd20iLAorCX0sCisJLnByb2JlID0gbnR4ZWNf cHdtX3Byb2JlLAorCS5yZW1vdmUgPSBudHhlY19wd21fcmVtb3ZlLAorfTsKK21vZHVsZV9wbGF0 Zm9ybV9kcml2ZXIobnR4ZWNfcHdtX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1IoIkpvbmF0aGFu IE5ldXNjaMOkZmVyIDxqLm5ldXNjaGFlZmVyQGdteC5uZXQ+Iik7CitNT0RVTEVfREVTQ1JJUFRJ T04oIlBXTSBkcml2ZXIgZm9yIE5ldHJvbml4IEVDIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7 CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm50eGVjLXB3bSIpOwotLQoyLjI5LjIKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==