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.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,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 3CE95C433E0 for ; Sun, 24 Jan 2021 22:45:22 +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 CD08A22C9F for ; Sun, 24 Jan 2021 22:45:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CD08A22C9F 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=VbQPFrLSN9k351CqSO2gIwHWllB3lMmGRWKXLIRhwhQ=; b=XfPhTrpk7IgrBqBTSjTnXQ3KN Bx5Cnx0Gs7KK1KrctQif/78EDSmNcEj95FzH2RnMK3aIIophV4qmXUoRm60GWIWhdRyto093H4NsW ThKJoh+VpDmUdpu0okXMdI2WrsaRAEkNZlrMWLvNo2kxwTFRJQmoduLEhzSc4DMQUiXhw+OuaOEEC GuAYQnUG2F1bMgJoJBE3pQ1ZhFUpa0HVC50FkKEHmeMocjvujfwDAzz7ovi8pVyrAGzsFyw+/0oDw NWdHxjITRvB1HoFODNBZ6ua9/zM91ITaOJHLnexrmp8Nvr2NfRpDqfMaEOXPrg+Iuoz5R5wBDWHjp vWqXHM4FQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l3o6r-0003dj-3R; Sun, 24 Jan 2021 22:43:53 +0000 Received: from mout.gmx.net ([212.227.17.21]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l3o6o-0003dB-Hs for linux-arm-kernel@lists.infradead.org; Sun, 24 Jan 2021 22:43:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1611528190; bh=7z3e7eIs2m1EJ3EXPvYoF48skrucAmlDLTA/IAwAyDk=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=U7NH4g+qYDcYJsV0aTvUaMmkM4iu+sm5rlYjLRSVE3tcIdgetozjlNhnMwyYLX3Ov f3oQSlIGoefso7Q6PTG185J+EXK/2NHJ6T35vDHo1Ja3V+6r2PbXapPFc7phAJ9FIH yDCiJqJv2uS4toyQK0wdQgy4xCxiER/Q5KQ5bzoM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.215.209]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MpDNf-1lmzSr15qR-00qksq; Sun, 24 Jan 2021 23:43:10 +0100 From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v9 5/7] rtc: New driver for RTC in Netronix embedded controller Date: Sun, 24 Jan 2021 22:41:25 +0100 Message-Id: <20210124214127.3631530-6-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210124214127.3631530-1-j.neuschaefer@gmx.net> References: <20210124214127.3631530-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:BZJ7Sf0Z444iOSRedPl9o8dj+dDfs3vkZzwftWwyZPFjO2lsmDu lRcS9gPFCWxvfmeB8T822rGSVg/fcOzML0x3UvRP0NvdobiS/7N1/d1KRH7AUr60OZcc58u yv0JG+dLc6zOpnchKGXbkIGvzC10Clv6sE6dESQJcVHuBvSVtRUCS1FMAQcYVHFPl5euSgl sZEy7w8ZZpy1pkEzcTXHQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:eig9ImzRoBg=:TqY66fqR+tfmfPhxX0kl7p c1/ycqAjApPItJq5bjr4CvCVuarRSMH64GrggnBFMtomL+5LHHAEQu7cZVOdFgG0CK1gfUNww IfNREz4wauu17o97LwsJrwzW5VrLHgx4YBROnI2E6XbLaBxs8Cak4euvlZixyReEpUPdT9TqQ ePBT/cDXpJcllMKsyiUhB7dtjNZmlUAW73mzohn58tldAbDYDrT+oYiMX5TvJWnjOCre0mVtg djDpGAVNj/DVPkN967AAD077SbjJbaliEog+ErqVQZ+aPwC8gavc/ccanf6oWPcSw8cvbFySR qbNiHfWt/pkF1T4D0VattsaqSlfKconl9wSlDDKYxnptMHX1K7BdH+np0Vk8TdRkxOOHoI4CD 1RnPcGVyj6V5fWYA0v9o+4enNqycjzPwTGWlBuXKcO43ufvmFzDdfbX6DmzrtDOlTVPeky2e7 l2ncBFI1MRWQwmRdVujE+aLSu/Ri5UWeoyOr6hcaA5EjM4g7Ko9aCAtsDNrkmJoQEU4Fz37mO 9TG5jqfMpFR9r0jS0GU9w4yAFT7StBItIe9dGljN3wZcqvxEEPA96O+shmqyQmJGZcmRkuRVR LP3t0z65ha7fzSZsWur8nYi4lNOuoNzd2sz00c2Xzheq/6FHjI75ZC8dJVILVJBDgTzEsaFoe z+u1tZLs8kaccoh+9o+4PtatD/loTGwdFB2H8QaFu5xuxa+kQ1b/heQIdz7V0GZC/pS1jlxEb xQe3EX7mcW9noJ9b++nFakqknOgyHH6FtgOocZNa4atry4Pjdfbq54kxYrUuMOt6OTg0W/RXn SqWWPfd+/tqNUbb8Fx5SKLT8IQ5cI9gtaPAvIP71WihT8HTTA2Y5pVk4nQLp9bh4NGNpjoUXN +Qe0wECnkPRdXY3jp9Aw== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210124_174351_096178_CBEB18B0 X-CRM114-Status: GOOD ( 31.14 ) 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 V2l0aCB0aGlzIGRyaXZlciwgbWFpbmxpbmUgTGludXggY2FuIGtlZXAgaXRzIHRpbWUgYW5kIGRh dGUgaW4gc3luYyB3aXRoCnRoZSB2ZW5kb3Iga2VybmVsLgoKQWR2YW5jZWQgZnVuY3Rpb25hbGl0 eSBsaWtlIGFsYXJtIGFuZCBhdXRvbWF0aWMgcG93ZXItb24gaXMgbm90IHlldApzdXBwb3J0ZWQu CgpTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBOZXVzY2jDpGZlciA8ai5uZXVzY2hhZWZlckBnbXgu bmV0PgpBY2tlZC1ieTogQWxleGFuZHJlIEJlbGxvbmkgPGFsZXhhbmRyZS5iZWxsb25pQGJvb3Rs aW4uY29tPgotLS0Kdjk6Ci0gbm8gY2hhbmdlcwoKdjg6Ci0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5v cmcvbGttbC8yMDIxMDExNjE5NDgyNi4zODY2NTQwLTYtai5uZXVzY2hhZWZlckBnbXgubmV0Lwot IENvcHkgZGV2Lm9mX25vZGUgZnJvbSBwYXJlbnQgZGV2aWNlCgp2NzoKLSBBZGp1c3QgdG8gcmVj ZW50IFJUQyBBUEkgY2hhbmdlIChydGNfcmVnaXN0ZXJfZGV2aWNlIC0+IGRldm1fcnRjX3JlZ2lz dGVyX2RldmljZSkKCnY2OgotIG5vIGNoYW5nZXMKCnY1OgotIEFkZCBBbGV4YW5kcmUgQmVsbG9u aSdzIEEtYgotIFVzZSByZWdtYXBfbXVsdGlfcmVnX3dyaXRlCgp2NDoKLSBSZW1vdmUgImRyaXZl ciIgZnJvbSBLY29uZmlnIGVudHJ5IGZvciBjb25zaXN0ZW5jeSB3aXRoIG1vc3Qgb3RoZXIgZW50 cmllcwotIEFkZCBtaXNzaW5nIE1PRFVMRV9BTElBUyBsaW5lCi0gR2l2ZSBOVFhFQ19SRUdfUkVB RF8gbWFjcm9zIGxvbmdlciBuYW1lcwotIFNvbHZlIHRoZSByZWFkIHRlYXJpbmcgaXNzdWUgdXNp bmcgQWxleGFuZHJlIEJlbGxvbmkncyBhbGdvcml0aG0KLSBTb2x2ZSB0aGUgd3JpdGUgdGVhcmlu ZyBpc3N1ZSB1c2luZyBVd2UgS2xlaW5lLUvDtm5pZydzIGFsZ29yaXRobQotIFNwZWxsIG91dCBP RE0KCnYzOgotIEFkZCBlbWFpbCBhZGRyZXNzIHRvIGNvcHlyaWdodCBsaW5lCi0gUmVtb3ZlIE9G IGNvbXBhdGlibGUgc3RyaW5nIGFuZCBkb24ndCBpbmNsdWRlIGxpbnV4L29mX2RldmljZS5oCi0g RG9uJ3QgdXNlIGEgY29tbWEgYWZ0ZXIgc2VudGluZWxzCi0gQXZvaWQgcmV0IHw9IC4uLiBwYXR0 ZXJuCi0gTW92ZSA4LWJpdCByZWdpc3RlciBjb252ZXJzaW9uIHRvIG50eGVjLmgKLSBSZWxpY2Vu c2UgYXMgR1BMdjIgb3IgbGF0ZXIKCnYyOgotIFJld29yayB0b3Atb2YtZmlsZSBjb21tZW50IFtM ZWUgSm9uZXNdCi0gU29ydCB0aGUgI2luY2x1ZGUgbGluZXMgW0FsZXhhbmRyZSBCZWxsb25pXQot IGRvbid0IGFsaWduID0gc2lnbnMgaW4gc3RydWN0IGluaXRpYWxpemVycyBbVXdlIEtsZWluZS1L w7ZuaWddCi0gU3dpdGNoIHRvIHJlZ21hcAotIEZpeCByZWdpc3RlciBudW1iZXIgdXNlZCB0byBy ZWFkIG1pbnV0ZXMgYW5kIHNlY29uZHMKLSBQcmVmaXggcmVnaXN0ZXJzIHdpdGggTlRYRUNfUkVH XwotIEFkZCBoZWxwIHRleHQgdG8gdGhlIEtjb25maWcgb3B0aW9uCi0gVXNlIGRldm1fcnRjX2Fs bG9jYXRlX2RldmljZSBhbmQgcnRjX3JlZ2lzdGVyX2RldmljZSwgc2V0IC0+cmFuZ2VfbWluIGFu ZCAtPnJhbmdlX21heAotLS0KIGRyaXZlcnMvcnRjL0tjb25maWcgICAgIHwgICA4ICsrKwogZHJp dmVycy9ydGMvTWFrZWZpbGUgICAgfCAgIDEgKwogZHJpdmVycy9ydGMvcnRjLW50eGVjLmMgfCAx NDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAxNTQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcnRjL3J0 Yy1udHhlYy5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvS2NvbmZpZyBiL2RyaXZlcnMvcnRj L0tjb25maWcKaW5kZXggNjEyM2Y5ZjRmYmM5MC4uZDQ5Y2YzODdhZGQxNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ydGMvS2NvbmZpZworKysgYi9kcml2ZXJzL3J0Yy9LY29uZmlnCkBAIC0xMzE1LDYg KzEzMTUsMTQgQEAgY29uZmlnIFJUQ19EUlZfQ1JPU19FQwogCSAgVGhpcyBkcml2ZXIgY2FuIGFs c28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNh bGxlZCBydGMtY3Jvcy1lYy4KCitjb25maWcgUlRDX0RSVl9OVFhFQworCXRyaXN0YXRlICJOZXRy b25peCBlbWJlZGRlZCBjb250cm9sbGVyIFJUQyIKKwlkZXBlbmRzIG9uIE1GRF9OVFhFQworCWhl bHAKKwkgIFNheSB5ZXMgaGVyZSBpZiB5b3Ugd2FudCB0byBzdXBwb3J0IHRoZSBSVEMgZnVuY3Rp b25hbGl0eSBvZiB0aGUKKwkgIGVtYmVkZGVkIGNvbnRyb2xsZXIgZm91bmQgaW4gY2VydGFpbiBl LWJvb2sgcmVhZGVycyBkZXNpZ25lZCBieSB0aGUKKwkgIG9yaWdpbmFsIGRlc2lnbiBtYW51ZmFj dHVyZXIgTmV0cm9uaXguCisKIGNvbW1lbnQgIm9uLUNQVSBSVEMgZHJpdmVycyIKCiBjb25maWcg UlRDX0RSVl9BU005MjYwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9NYWtlZmlsZSBiL2RyaXZl cnMvcnRjL01ha2VmaWxlCmluZGV4IGJiOGYzMTliMDlmYmYuLjkyYzI2ZWFmZTcwY2UgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvcnRjL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcnRjL01ha2VmaWxlCkBA IC0xMTAsNiArMTEwLDcgQEAgb2JqLSQoQ09ORklHX1JUQ19EUlZfTVQ3NjIyKQkrPSBydGMtbXQ3 NjIyLm8KIG9iai0kKENPTkZJR19SVENfRFJWX01WKQkrPSBydGMtbXYubwogb2JqLSQoQ09ORklH X1JUQ19EUlZfTVhDKQkrPSBydGMtbXhjLm8KIG9iai0kKENPTkZJR19SVENfRFJWX01YQ19WMikJ Kz0gcnRjLW14Y192Mi5vCitvYmotJChDT05GSUdfUlRDX0RSVl9OVFhFQykJKz0gcnRjLW50eGVj Lm8KIG9iai0kKENPTkZJR19SVENfRFJWX09NQVApCSs9IHJ0Yy1vbWFwLm8KIG9iai0kKENPTkZJ R19SVENfRFJWX09QQUwpCSs9IHJ0Yy1vcGFsLm8KIG9iai0kKENPTkZJR19SVENfRFJWX1BBTE1B UykJKz0gcnRjLXBhbG1hcy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtbnR4ZWMuYyBi L2RyaXZlcnMvcnRjL3J0Yy1udHhlYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAuLjg1MGNhNDkxODZmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3J0Yy9y dGMtbnR4ZWMuYwpAQCAtMCwwICsxLDE0NSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb3ItbGF0ZXIKKy8qCisgKiBUaGUgTmV0cm9uaXggZW1iZWRkZWQgY29udHJvbGxl ciBpcyBhIG1pY3JvY29udHJvbGxlciBmb3VuZCBpbiBzb21lCisgKiBlLWJvb2sgcmVhZGVycyBk ZXNpZ25lZCBieSB0aGUgb3JpZ2luYWwgZGVzaWduIG1hbnVmYWN0dXJlciBOZXRyb25peCwgSW5j LgorICogSXQgY29udGFpbnMgUlRDLCBiYXR0ZXJ5IG1vbml0b3JpbmcsIHN5c3RlbSBwb3dlciBt YW5hZ2VtZW50LCBhbmQgUFdNCisgKiBmdW5jdGlvbmFsaXR5LgorICoKKyAqIFRoaXMgZHJpdmVy IGltcGxlbWVudHMgYWNjZXNzIHRvIHRoZSBSVEMgdGltZSBhbmQgZGF0ZS4KKyAqCisgKiBDb3B5 cmlnaHQgMjAyMCBKb25hdGhhbiBOZXVzY2jDpGZlciA8ai5uZXVzY2hhZWZlckBnbXgubmV0Pgor ICovCisKKyNpbmNsdWRlIDxsaW51eC9tZmQvbnR4ZWMuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51 eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9ydGMuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgorCitzdHJ1Y3QgbnR4ZWNfcnRjIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0 IG50eGVjICplYzsKK307CisKKyNkZWZpbmUgTlRYRUNfUkVHX1dSSVRFX1lFQVIJMHgxMAorI2Rl ZmluZSBOVFhFQ19SRUdfV1JJVEVfTU9OVEgJMHgxMQorI2RlZmluZSBOVFhFQ19SRUdfV1JJVEVf REFZCTB4MTIKKyNkZWZpbmUgTlRYRUNfUkVHX1dSSVRFX0hPVVIJMHgxMworI2RlZmluZSBOVFhF Q19SRUdfV1JJVEVfTUlOVVRFCTB4MTQKKyNkZWZpbmUgTlRYRUNfUkVHX1dSSVRFX1NFQ09ORAkw eDE1CisKKyNkZWZpbmUgTlRYRUNfUkVHX1JFQURfWUVBUl9NT05USAkweDIwCisjZGVmaW5lIE5U WEVDX1JFR19SRUFEX01EQVlfSE9VUgkweDIxCisjZGVmaW5lIE5UWEVDX1JFR19SRUFEX01JTlVU RV9TRUNPTkQJMHgyMworCitzdGF0aWMgaW50IG50eGVjX3JlYWRfdGltZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBydGNfdGltZSAqdG0pCit7CisJc3RydWN0IG50eGVjX3J0YyAqcnRjID0g ZGV2X2dldF9kcnZkYXRhKGRldik7CisJdW5zaWduZWQgaW50IHZhbHVlOworCWludCByZXM7CisK K3JldHJ5OgorCXJlcyA9IHJlZ21hcF9yZWFkKHJ0Yy0+ZWMtPnJlZ21hcCwgTlRYRUNfUkVHX1JF QURfTUlOVVRFX1NFQ09ORCwgJnZhbHVlKTsKKwlpZiAocmVzIDwgMCkKKwkJcmV0dXJuIHJlczsK KworCXRtLT50bV9taW4gPSB2YWx1ZSA+PiA4OworCXRtLT50bV9zZWMgPSB2YWx1ZSAmIDB4ZmY7 CisKKwlyZXMgPSByZWdtYXBfcmVhZChydGMtPmVjLT5yZWdtYXAsIE5UWEVDX1JFR19SRUFEX01E QVlfSE9VUiwgJnZhbHVlKTsKKwlpZiAocmVzIDwgMCkKKwkJcmV0dXJuIHJlczsKKworCXRtLT50 bV9tZGF5ID0gdmFsdWUgPj4gODsKKwl0bS0+dG1faG91ciA9IHZhbHVlICYgMHhmZjsKKworCXJl cyA9IHJlZ21hcF9yZWFkKHJ0Yy0+ZWMtPnJlZ21hcCwgTlRYRUNfUkVHX1JFQURfWUVBUl9NT05U SCwgJnZhbHVlKTsKKwlpZiAocmVzIDwgMCkKKwkJcmV0dXJuIHJlczsKKworCXRtLT50bV95ZWFy ID0gKHZhbHVlID4+IDgpICsgMTAwOworCXRtLT50bV9tb24gPSAodmFsdWUgJiAweGZmKSAtIDE7 CisKKwkvKgorCSAqIFJlYWQgdGhlIG1pbnV0ZXMvc2Vjb25kcyBmaWVsZCBhZ2Fpbi4gSWYgaXQg Y2hhbmdlZCBzaW5jZSB0aGUgZmlyc3QKKwkgKiByZWFkLCB3ZSBjYW4ndCBhc3N1bWUgdGhhdCB0 aGUgdmFsdWVzIHJlYWQgc28gZmFyIGFyZSBjb25zaXN0ZW50LAorCSAqIGFuZCBzaG91bGQgc3Rh cnQgZnJvbSB0aGUgYmVnaW5uaW5nLgorCSAqLworCXJlcyA9IHJlZ21hcF9yZWFkKHJ0Yy0+ZWMt PnJlZ21hcCwgTlRYRUNfUkVHX1JFQURfTUlOVVRFX1NFQ09ORCwgJnZhbHVlKTsKKwlpZiAocmVz IDwgMCkKKwkJcmV0dXJuIHJlczsKKworCWlmICh0bS0+dG1fbWluICE9IHZhbHVlID4+IDggfHwg dG0tPnRtX3NlYyAhPSAodmFsdWUgJiAweGZmKSkKKwkJZ290byByZXRyeTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IG50eGVjX3NldF90aW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IHJ0Y190aW1lICp0bSkKK3sKKwlzdHJ1Y3QgbnR4ZWNfcnRjICpydGMgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKKworCS8qCisJICogVG8gYXZvaWQgdGltZSBvdmVyZmxvd3Mgd2hpbGUgd2Un cmUgd3JpdGluZyB0aGUgZnVsbCBkYXRlL3RpbWUsCisJICogc2V0IHRoZSBzZWNvbmRzIGZpZWxk IHRvIHplcm8gYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuIEZvciB0aGUKKwkgKiBuZXh0IDU5 IHNlY29uZHMgKHBsdXMgaG93ZXZlciBsb25nIGl0IHRha2VzIHVudGlsIHRoZSBSVEMncyBuZXh0 CisJICogdXBkYXRlIG9mIHRoZSBzZWNvbmQgZmllbGQpLCB0aGUgc2Vjb25kcyBmaWVsZCB3aWxs IG5vdCBvdmVyZmxvdworCSAqIGludG8gdGhlIG90aGVyIGZpZWxkcy4KKwkgKi8KKwlzdHJ1Y3Qg cmVnX3NlcXVlbmNlIHJlZ3NbXSA9IHsKKwkJeyBOVFhFQ19SRUdfV1JJVEVfU0VDT05ELCBudHhl Y19yZWc4KDApIH0sCisJCXsgTlRYRUNfUkVHX1dSSVRFX1lFQVIsIG50eGVjX3JlZzgodG0tPnRt X3llYXIgLSAxMDApIH0sCisJCXsgTlRYRUNfUkVHX1dSSVRFX01PTlRILCBudHhlY19yZWc4KHRt LT50bV9tb24gKyAxKSB9LAorCQl7IE5UWEVDX1JFR19XUklURV9EQVksIG50eGVjX3JlZzgodG0t PnRtX21kYXkpIH0sCisJCXsgTlRYRUNfUkVHX1dSSVRFX0hPVVIsIG50eGVjX3JlZzgodG0tPnRt X2hvdXIpIH0sCisJCXsgTlRYRUNfUkVHX1dSSVRFX01JTlVURSwgbnR4ZWNfcmVnOCh0bS0+dG1f bWluKSB9LAorCQl7IE5UWEVDX1JFR19XUklURV9TRUNPTkQsIG50eGVjX3JlZzgodG0tPnRtX3Nl YykgfSwKKwl9OworCisJcmV0dXJuIHJlZ21hcF9tdWx0aV9yZWdfd3JpdGUocnRjLT5lYy0+cmVn bWFwLCByZWdzLCBBUlJBWV9TSVpFKHJlZ3MpKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBy dGNfY2xhc3Nfb3BzIG50eGVjX3J0Y19vcHMgPSB7CisJLnJlYWRfdGltZSA9IG50eGVjX3JlYWRf dGltZSwKKwkuc2V0X3RpbWUgPSBudHhlY19zZXRfdGltZSwKK307CisKK3N0YXRpYyBpbnQgbnR4 ZWNfcnRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IHJ0 Y19kZXZpY2UgKmRldjsKKwlzdHJ1Y3QgbnR4ZWNfcnRjICpydGM7CisKKwlwZGV2LT5kZXYub2Zf bm9kZSA9IHBkZXYtPmRldi5wYXJlbnQtPm9mX25vZGU7CisKKwlydGMgPSBkZXZtX2t6YWxsb2Mo JnBkZXYtPmRldiwgc2l6ZW9mKCpydGMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXJ0YykKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlydGMtPmRldiA9ICZwZGV2LT5kZXY7CisJcnRjLT5lYyA9IGRldl9n ZXRfZHJ2ZGF0YShwZGV2LT5kZXYucGFyZW50KTsKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2 LCBydGMpOworCisJZGV2ID0gZGV2bV9ydGNfYWxsb2NhdGVfZGV2aWNlKCZwZGV2LT5kZXYpOwor CWlmIChJU19FUlIoZGV2KSkKKwkJcmV0dXJuIFBUUl9FUlIoZGV2KTsKKworCWRldi0+b3BzID0g Jm50eGVjX3J0Y19vcHM7CisJZGV2LT5yYW5nZV9taW4gPSBSVENfVElNRVNUQU1QX0JFR0lOXzIw MDA7CisJZGV2LT5yYW5nZV9tYXggPSA5MDI1MjU3NTk5TEw7IC8qIDIyNTUtMTItMzEgMjM6NTk6 NTkgKi8KKworCXJldHVybiBkZXZtX3J0Y19yZWdpc3Rlcl9kZXZpY2UoZGV2KTsKK30KKworc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbnR4ZWNfcnRjX2RyaXZlciA9IHsKKwkuZHJpdmVy ID0geworCQkubmFtZSA9ICJudHhlYy1ydGMiLAorCX0sCisJLnByb2JlID0gbnR4ZWNfcnRjX3By b2JlLAorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobnR4ZWNfcnRjX2RyaXZlcik7CisKK01P RFVMRV9BVVRIT1IoIkpvbmF0aGFuIE5ldXNjaMOkZmVyIDxqLm5ldXNjaGFlZmVyQGdteC5uZXQ+ Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlJUQyBkcml2ZXIgZm9yIE5ldHJvbml4IEVDIik7CitN T0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm50eGVjLXJ0YyIp OwotLQoyLjI5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1hcm0ta2VybmVsCg==