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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 624E5EB64DD for ; Wed, 9 Aug 2023 08:13:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qocWvdBsI8fB4R7VpSY0ZXNoog0RjSZYWWGVgx0tmwM=; b=2X0zsGl3gi+/MS vcr3WH8jGit+PiDzE0sR+8zw2V1Ki6Kq6aCURfZpCvm/t6SZJVx+/i+rPAy25IM74o98pLGURVlP4 2ir7U4UgMzXzplS/TuZb6u6pJsyXXLsuryUYsZlIfkY2/o8fVqGgoFo8qvQ4vOgYSrK1jZSscwNkW yvnLSS+pfHEAY+kxRhS6hpcxwI0EuqJGvhFW948utvpQcwUBuzhTxFYATXELxZ58zTP857KbNYenO +LdJBCH0u/6nT+T8llU5IBj0bBHvwgdjgKwwJLm8tsizBtmUBOm2Wo+StAGfwvOuMmWSb84AfKnhi 0sOyhdP8410JmZSuvO3A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qTeJX-004L4N-3A; Wed, 09 Aug 2023 08:13:07 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qTeJR-004L2h-0x for linux-arm-kernel@lists.infradead.org; Wed, 09 Aug 2023 08:13:03 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-1bbc06f830aso4932525ad.0 for ; Wed, 09 Aug 2023 01:12:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691568779; x=1692173579; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=HGi+I0X98yYTQWfLVJqeABIuTLMwNChc7qAz4vbozrE=; b=IL9596BVQqIVfbjlbPd34w3eRFt3rh4Kv+NvcuWWW26YXruQiRqRMMUgQh1WyajqCt U40St3d3Dje6oVKKTO2YZnnuy4bmCzm0duvZdRES93hAe1w6N5RdZa7inChx2Zav+4DA OTMM+OCx87fG+PFM2osD7oOvC8yYukAp9mXpT5+/Mtr6sf4jqsCjnp/MYoKxRtCl3KjO Sl7NESq922ku7SfjfSa8ComEcGucHm3Awbw7fL+/pTAia5/3Quq9KP6pgOvvSq0hra/J veyh4m7071BR00S3Y6tQZ7U7OCGQqbQSOQUORyIhsMUmOZHe0Khzz2YRTknBsrHZ8zwY f5Iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691568779; x=1692173579; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=HGi+I0X98yYTQWfLVJqeABIuTLMwNChc7qAz4vbozrE=; b=Ppr2TJLH/G1bsSnHK/C1YPa5WAjdxg6cIBcyKWOASyaMzPfdKXLNubMhaVoBNB9g1x yBzkhw3KzGH4CPMejAJfhPEPKzgxWHI9jpYZOFkb5+7O8OInKNa7G8Jzrt3yihyaRhrK xj3l37puQ3D3D1Y2BGWTA4CvitPyQIF2/N9atosZG5i84VRZP275a6dQHnU1ygE/Mtpq qMV0CsHhZwLW9Ow0s1YfVjh3CU/sj+cKikRTAICqxBUllNm4MfOmoDN847TZKzi2xykQ 0ACiczMiw7z1/7Ldy3CCLOqOOPQCtfhSjXWX9juttq2y0Z4FdNxtWaKhbfpt6JxJXQ7L hnxg== X-Gm-Message-State: AOJu0YzmdPAojDUkxifgHv4jYeYKvzZ1KLHwscKvUkSQnkgu+T+3bYSk earNK21dse2RK14xIX3z7Qw= X-Google-Smtp-Source: AGHT+IFDcLD09vqfO+TJnS2tTZ6ux/nNDoNRIxEJ7PROsKAlQQyu8im4YuAi7ttOxBqcdhKLWZ6xIg== X-Received: by 2002:a17:903:32c6:b0:1ae:6947:e63b with SMTP id i6-20020a17090332c600b001ae6947e63bmr2817181plr.16.1691568778702; Wed, 09 Aug 2023 01:12:58 -0700 (PDT) Received: from [172.19.1.47] (60-250-192-107.hinet-ip.hinet.net. [60.250.192.107]) by smtp.gmail.com with ESMTPSA id c7-20020a170902d48700b001bb9b87ac95sm10472777plg.103.2023.08.09.01.12.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 09 Aug 2023 01:12:58 -0700 (PDT) Message-ID: <426130f6-7b8a-91f9-559b-afc5afdc656e@gmail.com> Date: Wed, 9 Aug 2023 16:12:54 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: Re: [RESEND PATCH v2 3/3] rtc: Add driver for Nuvoton ma35d1 rtc controller To: Alexandre Belloni Cc: a.zummo@towertech.it, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, soc@kernel.org, mjchen@nuvoton.com, schung@nuvoton.com, Jacky Huang References: <20230809011542.429945-1-ychuang570808@gmail.com> <20230809011542.429945-4-ychuang570808@gmail.com> <20230809021025a7c0daec@mail.local> Content-Language: en-US From: Jacky Huang In-Reply-To: <20230809021025a7c0daec@mail.local> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230809_011301_336476_F600E8A2 X-CRM114-Status: GOOD ( 30.01 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAyMDIzLzgvOSDkuIrljYggMTA6MTAsIEFsZXhhbmRyZSBCZWxsb25pIHdyb3RlOgo+IEhl bGxvLAo+Cj4gT24gMDkvMDgvMjAyMyAwMToxNTo0MiswMDAwLCBKYWNreSBIdWFuZyB3cm90ZToK Pj4gKwo+PiArc3RydWN0IG1hMzVfYmNkX3RpbWUgewo+PiArCWludCBiY2Rfc2VjOwo+PiArCWlu dCBiY2RfbWluOwo+PiArCWludCBiY2RfaG91cjsKPj4gKwlpbnQgYmNkX21kYXk7Cj4+ICsJaW50 IGJjZF9tb247Cj4+ICsJaW50IGJjZF95ZWFyOwo+PiArfTsKPiBJIGRvbid0IGdldCB3aHkgdGhp cyBzdHJ1Y3QgaXMgdXNlZnVsLgoKSSB3aWxsIHJlbW92ZSB0aGlzIGFuZCBtb2RpZnkgY29kZS4K Cgo+PiArCj4+ICtzdGF0aWMgaXJxcmV0dXJuX3QgbWEzNWQxX3J0Y19pbnRlcnJ1cHQoaW50IGly cSwgdm9pZCAqZGF0YSkKPj4gK3sKPj4gKwlzdHJ1Y3QgbWEzNV9ydGMgKnJ0YyA9IChzdHJ1Y3Qg bWEzNV9ydGMgKilkYXRhOwo+PiArCXVuc2lnbmVkIGxvbmcgZXZlbnRzID0gMCwgcnRjX2lycTsK Pj4gKwo+PiArCXJ0Y19pcnEgPSBydGNfcmVnX3JlYWQocnRjLCBNQTM1X1JFR19SVENfSU5UU1RT KTsKPj4gKwo+PiArCWlmIChydGNfaXJxICYgUlRDX0lOVFNUU19BTE1JRikgewo+PiArCQlydGNf cmVnX3dyaXRlKHJ0YywgTUEzNV9SRUdfUlRDX0lOVFNUUywgUlRDX0lOVFNUU19BTE1JRik7Cj4+ ICsJCWV2ZW50cyB8PSBSVENfQUYgfCBSVENfSVJRRjsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAocnRj X2lycSAmIFJUQ19JTlRTVFNfVElDS0lGKSB7Cj4+ICsJCXJ0Y19yZWdfd3JpdGUocnRjLCBNQTM1 X1JFR19SVENfSU5UU1RTLCBSVENfSU5UU1RTX1RJQ0tJRik7Cj4+ICsJCWV2ZW50cyB8PSBSVENf VUYgfCBSVENfSVJRRjsKPiBIb3cgZGlkIHlvdSB0ZXN0IHRoaXMgcGF0aD8KCldlIHVzZSBCdXN5 Qm94ICdkYXRlJyBjb21tYW5kIHRvIG9ic2VydmUgdGhlIHRpbWUgY2hhbmdlZC4KSW4gYWRkaXRp b24sIHdlIHdyb3RlIGEgc2ltcGxlIGNvZGUgdG8gdGVzdCBpdC4KKGh0dHBzOi8vZ2l0aHViLmNv bS9PcGVuTnV2b3Rvbi9NQTM1RDFfTGludXhfQXBwbGljYXRpb25zL3RyZWUvbWFzdGVyL2V4YW1w bGVzL3J0YykKCj4+ICsJfQo+PiArCj4+ICsJcnRjX3VwZGF0ZV9pcnEocnRjLT5ydGNkZXYsIDEs IGV2ZW50cyk7Cj4+ICsKPj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgbWEzNWQxX3J0Y19pbml0KHN0cnVjdCBtYTM1X3J0YyAqcnRjLCB1MzIgbXNfdGlt ZW91dCkKPj4gK3sKPj4gKwljb25zdCB1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBqaWZmaWVzICsg bXNlY3NfdG9famlmZmllcyhtc190aW1lb3V0KTsKPj4gKwo+PiArCWRvIHsKPj4gKwkJaWYgKHJ0 Y19yZWdfcmVhZChydGMsIE1BMzVfUkVHX1JUQ19JTklUKSAmIFJUQ19JTklUX0FDVElWRSkKPj4g KwkJCXJldHVybiAwOwo+PiArCj4+ICsJCXJ0Y19yZWdfd3JpdGUocnRjLCBNQTM1X1JFR19SVENf SU5JVCwgUlRDX0lOSVRfTUFHSUNfQ09ERSk7Cj4+ICsKPj4gKwkJbWRlbGF5KDEpOwo+PiArCj4+ ICsJfSB3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkpOwo+PiArCj4+ICsJcmV0 dXJuIC1FVElNRURPVVQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgbWEzNWQxX3J0Y19iY2Qy YmluKHUzMiB0aW1lLCB1MzIgY2FsLCB1MzIgd2RheSwgc3RydWN0IHJ0Y190aW1lICp0bSkKPj4g K3sKPj4gKwl0bS0+dG1fbWRheQk9IGJjZDJiaW4oY2FsID4+IDApOwo+PiArCXRtLT50bV9tb24J PSBiY2QyYmluKGNhbCA+PiA4KTsKPj4gKwl0bS0+dG1fbW9uCT0gdG0tPnRtX21vbiAtIDE7Cj4+ ICsJdG0tPnRtX3llYXIJPSBiY2QyYmluKGNhbCA+PiAxNikgKyAxMDA7Cj4+ICsKPj4gKwl0bS0+ dG1fc2VjCT0gYmNkMmJpbih0aW1lID4+IDApOwo+PiArCXRtLT50bV9taW4JPSBiY2QyYmluKHRp bWUgPj4gOCk7Cj4+ICsJdG0tPnRtX2hvdXIJPSBiY2QyYmluKHRpbWUgPj4gMTYpOwo+PiArCj4+ ICsJdG0tPnRtX3dkYXkgPSB3ZGF5Owo+PiArCj4+ICsJcmV0dXJuIHJ0Y192YWxpZF90bSh0bSk7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgbWEzNWQxX3J0Y19hbGFybV9iY2QyYmluKHUzMiB0 YWxtLCB1MzIgY2FsbSwgc3RydWN0IHJ0Y190aW1lICp0bSkKPj4gK3sKPj4gKwl0bS0+dG1fbWRh eQk9IGJjZDJiaW4oY2FsbSA+PiAwKTsKPj4gKwl0bS0+dG1fbW9uCT0gYmNkMmJpbihjYWxtID4+ IDgpOwo+PiArCXRtLT50bV9tb24JPSB0bS0+dG1fbW9uIC0gMTsKPj4gKwl0bS0+dG1feWVhcgk9 IGJjZDJiaW4oY2FsbSA+PiAxNikgKyAxMDA7Cj4+ICsKPj4gKwl0bS0+dG1fc2VjCT0gYmNkMmJp bih0YWxtID4+IDApOwo+PiArCXRtLT50bV9taW4JPSBiY2QyYmluKHRhbG0gPj4gOCk7Cj4+ICsJ dG0tPnRtX2hvdXIJPSBiY2QyYmluKHRhbG0gPj4gMTYpOwo+PiArCj4+ICsJcmV0dXJuIHJ0Y192 YWxpZF90bSh0bSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIG1hMzVkMV9ydGNfYmluMmJj ZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBydGNfdGltZSAqc2V0dG0sCj4+ICsJCQkgICAg ICAgc3RydWN0IG1hMzVfYmNkX3RpbWUgKmdldHRtKQo+PiArewo+PiArCWdldHRtLT5iY2RfbWRh eSA9IGJpbjJiY2Qoc2V0dG0tPnRtX21kYXkpIDw8IDA7Cj4+ICsJZ2V0dG0tPmJjZF9tb24gID0g YmluMmJjZCgoc2V0dG0tPnRtX21vbiArIDEpKSA8PCA4Owo+PiArCj4+ICsJaWYgKHNldHRtLT50 bV95ZWFyIDwgMTAwKSB7Cj4+ICsJCWRldl93YXJuKGRldiwgIlRoZSB5ZWFyIHdpbGwgYmUgYmV0 d2VlbiAxOTcwLTE5OTksIHJpZ2h0P1xuIik7Cj4gTm8sIGRvbid0IGRvIHRoYXQsIHByb3Blcmx5 IHNldCB0aGUgcnRjIGhhcmR3YXJlIHJhbmdlIGFuZCBsZXQgdGhlIHVzZXIKPiBjaG9vc2UgdGhl aXIgdGltZSBvZmZzZXQvd2luZG93LgoKV2Ugd2lsbCBtb2RpZnkgdGhlIGNvZGUgYXM6CgojZGVm aW5lIE1BMzVfQkFTRV9ZRUFSIDIwMDAgLyogYXNzdW1lIDIwWVkgbm90IDE5WVkgKi8KCmludCB5 ZWFyOwoKeWVhciA9IHRtLT50bV95ZWFyICsgMTkwMCDigJMgTUEzNV9CQVNFX1lFQVI7CmlmICh5 ZWFyIDwgMCkgewogwqDCoMKgIGRldl9lcnIoZGV2LCAiaW52YWxpZCB5ZWFyOiAlZFxuIiwgeWVh cik7CiDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cn0KCgo+PiArCQlnZXR0bS0+YmNkX3llYXIgPSBi aW4yYmNkKHNldHRtLT50bV95ZWFyKSA8PCAxNjsKPj4gKwl9IGVsc2Ugewo+PiArCQlnZXR0bS0+ YmNkX3llYXIgPSBiaW4yYmNkKHNldHRtLT50bV95ZWFyIC0gMTAwKSA8PCAxNjsKPj4gKwl9Cj4+ ICsKPj4gKwlnZXR0bS0+YmNkX3NlYyAgPSBiaW4yYmNkKHNldHRtLT50bV9zZWMpIDw8IDA7Cj4+ ICsJZ2V0dG0tPmJjZF9taW4gID0gYmluMmJjZChzZXR0bS0+dG1fbWluKSA8PCA4Owo+PiArCWdl dHRtLT5iY2RfaG91ciA9IGJpbjJiY2Qoc2V0dG0tPnRtX2hvdXIpIDw8IDE2Owo+PiArfQo+IFRo b3NlIGZ1bmN0aW9ucyBhcmUgb25seSB1c2VkIG9uY2UsIHNpbXBseSBwdXQgdGhlbSBpbiB0aGVp ciBjYWxsIHNpdGUuCgpTdXJlLCBJIHdpbGwgcmVtb3ZlIHRoaXMgZnVuY3Rpb24gYW5kIHB1dCB0 aGUgY29kZSBpbiB0aGVpciBjYWxsIHNpdGUKCgo+PiArCj4+ICtzdGF0aWMgaW50IG1hMzVkMV9h bGFybV9pcnFfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIGVuYWJsZWQpCj4+ICt7Cj4+ ICsJc3RydWN0IG1hMzVfcnRjICpydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPj4gKwl1MzIg cmVnX2llbjsKPj4gKwo+PiArCXJlZ19pZW4gPSBydGNfcmVnX3JlYWQocnRjLCBNQTM1X1JFR19S VENfSU5URU4pOwo+PiArCj4+ICsJaWYgKGVuYWJsZWQpCj4+ICsJCXJ0Y19yZWdfd3JpdGUocnRj LCBNQTM1X1JFR19SVENfSU5URU4sIHJlZ19pZW4gfCBSVENfSU5URU5fQUxNSUVOKTsKPj4gKwll bHNlCj4+ICsJCXJ0Y19yZWdfd3JpdGUocnRjLCBNQTM1X1JFR19SVENfSU5URU4sIHJlZ19pZW4g JiB+UlRDX0lOVEVOX0FMTUlFTik7Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCBtYTM1ZDFfcnRjX3JlYWRfdGltZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBydGNfdGltZSAqdG0pCj4+ICt7Cj4+ICsJc3RydWN0IG1hMzVfcnRjICpydGMgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKPj4gKwl1MzIgdGltZSwgY2FsLCB3ZGF5Owo+PiArCj4+ICsJdGltZSA9 IHJ0Y19yZWdfcmVhZChydGMsIE1BMzVfUkVHX1JUQ19USU1FKTsKPj4gKwljYWwgID0gcnRjX3Jl Z19yZWFkKHJ0YywgTUEzNV9SRUdfUlRDX0NBTCk7Cj4+ICsJd2RheSA9IHJ0Y19yZWdfcmVhZChy dGMsIE1BMzVfUkVHX1JUQ19XRUVLREFZKTsKPiBBcmUgdGhlIHJlZ2lzdGVycyBwcm9wZXJseSBs YXRjaGVkIHdoZW4gcmVhZGluZz8gSG93IGRvIHlvdSBlbnN1cmUgdGhhdAo+IE1BMzVfUkVHX1JU Q19USU1FIGRpZG4ndCBjaGFuZ2UgYmVmb3JlIHJlYWRpbmcgTUEzNV9SRUdfUlRDX0NBTCA/CgpX ZSB3aWxsIHVwZGF0ZSB0aGUgY29kZSBhcwoKZG8gewogwqDCoCDCoHRpbWUgPSBydGNfcmVnX3Jl YWQocnRjLCBNQTM1X1JFR19SVENfVElNRSk7CiDCoMKgIMKgY2FswqAgPSBydGNfcmVnX3JlYWQo cnRjLCBNQTM1X1JFR19SVENfQ0FMKTsKIMKgwqAgwqB3ZGF5ID0gcnRjX3JlZ19yZWFkKHJ0Yywg TUEzNV9SRUdfUlRDX1dFRUtEQVkpOwp9IHdoaWxlICgodGltZSAhPSBydGNfcmVnX3JlYWQocnRj LCBNQTM1X1JFR19SVENfVElNRSkpIHx8CiDCoMKgIMKgwqDCoMKgwqAgKGNhbCAhPSBydGNfcmVn X3JlYWQocnRjLCBNQTM1X1JFR19SVENfQ0FMKSkgfHwKIMKgwqAgwqDCoMKgwqDCoCAod2RheSAh PSA9IHJ0Y19yZWdfcmVhZChydGMsIE1BMzVfUkVHX1JUQ19XRUVLREFZKSkgKTsKCgo+PiArCj4+ ICsJcmV0dXJuIG1hMzVkMV9ydGNfYmNkMmJpbih0aW1lLCBjYWwsIHdkYXksIHRtKTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCBtYTM1ZDFfcnRjX3NldF90aW1lKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IHJ0Y190aW1lICp0bSkKPj4gK3sKPj4gKwlzdHJ1Y3QgbWEzNV9ydGMgKnJ0YyA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiArCXN0cnVjdCBtYTM1X2JjZF90aW1lIGdldHRtOwo+ PiArCXUzMiB2YWw7Cj4+ICsKPj4gKwltYTM1ZDFfcnRjX2JpbjJiY2QoZGV2LCB0bSwgJmdldHRt KTsKPj4gKwo+PiArCXZhbCA9IGdldHRtLmJjZF9tZGF5IHwgZ2V0dG0uYmNkX21vbiB8IGdldHRt LmJjZF95ZWFyOwo+PiArCXJ0Y19yZWdfd3JpdGUocnRjLCBNQTM1X1JFR19SVENfQ0FMLCB2YWwp Owo+PiArCj4+ICsJdmFsID0gZ2V0dG0uYmNkX3NlYyB8IGdldHRtLmJjZF9taW4gfCBnZXR0bS5i Y2RfaG91cjsKPj4gKwlydGNfcmVnX3dyaXRlKHJ0YywgTUEzNV9SRUdfUlRDX1RJTUUsIHZhbCk7 Cj4+ICsKPiBTYW1lIHF1ZXN0aW9uIGFib3V0IGxhdGNoaW5nLCBzaG91bGRuJ3QgeW91IHN0b3Ag dGhlIHJ0YyB3aGlsZSBkb2luZwo+IHRoaXM/CgpJbiBmYWN0LCBvbmNlIGVuYWJsZWQsIHRoZSBS VEMgaGFyZHdhcmUgb2YgTUEzNUQxIGNhbm5vdCBiZSBzdG9wcGVkOyAKdGhpcyBpcyBob3cgdGhl IGhhcmR3YXJlIGlzIGRlc2lnbmVkLgpJbnNpZGUgdGhlIE1BMzVEMSBSVEMsIHRoZXJlJ3MgYW4g aW50ZXJuYWwgY291bnRlciB0aGF0IGFkdmFuY2VzIGJ5IDEyOCAKY291bnRzIHBlciBzZWNvbmQu CldoZW4gdGhlIHRpbWUgb3IgZGF0ZSByZWdpc3RlciBpcyB1cGRhdGVkLCB0aGUgaW50ZXJuYWwg Y291bnRlciBvZiB0aGUgClJUQyBoYXJkd2FyZSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVzZXQgdG8g MCwKc28gdGhlcmUgaXMgbm8gbmVlZCB0byB3b3JyeSBhYm91dCBtZW1vcnkgbGF0Y2ggaXNzdWVz LgoKCj4+ICsJdmFsID0gdG0tPnRtX3dkYXk7Cj4+ICsJcnRjX3JlZ193cml0ZShydGMsIE1BMzVf UkVHX1JUQ19XRUVLREFZLCB2YWwpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbnQgbWEzNWQxX3J0Y19zZXRfYWxhcm0oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgcnRjX3drYWxybSAqYWxybSkKPj4gK3sKPj4gKwlzdHJ1Y3QgbWEzNV9ydGMgKnJ0YyA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiArCXN0cnVjdCBtYTM1X2JjZF90aW1lIHRtOwo+PiArCXVu c2lnbmVkIGxvbmcgdmFsOwo+PiArCj4+ICsJbWEzNWQxX3J0Y19iaW4yYmNkKGRldiwgJmFscm0t PnRpbWUsICZ0bSk7Cj4+ICsKPj4gKwl2YWwgPSB0bS5iY2RfbWRheSB8IHRtLmJjZF9tb24gfCB0 bS5iY2RfeWVhcjsKPj4gKwlydGNfcmVnX3dyaXRlKHJ0YywgTUEzNV9SRUdfUlRDX0NBTE0sIHZh bCk7Cj4+ICsKPj4gKwl2YWwgPSB0bS5iY2Rfc2VjIHwgdG0uYmNkX21pbiB8IHRtLmJjZF9ob3Vy Owo+PiArCXJ0Y19yZWdfd3JpdGUocnRjLCBNQTM1X1JFR19SVENfVEFMTSwgdmFsKTsKPj4gKwo+ IFdoYXQgYWJvdXQgaGFuZGxpbmcgYWxybS5lbmFibGVkIGhlcmU/CgpUaGUgTUEzNUQxIFJUQyBo YXJkd2FyZSBkZXNpZ24gZG9lcyBub3QgaGF2ZSBhbiBhbGFybSBlbmFibGUvZGlzYWJsZSBiaXQu ClRoZSBkZWNpc2lvbiB0byB1dGlsaXplIHRoZSBhbGFybSBjYW4gb25seSBiZSBtYWRlIHRocm91 Z2ggZW5hYmxpbmcgb3IgCmRpc2FibGluZyB0aGUgYWxhcm0gaW50ZXJydXB0LgoKPj4gKwlyZXR1 cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBydGNfY2xhc3Nfb3BzIG1h MzVkMV9ydGNfb3BzID0gewo+PiArCS5yZWFkX3RpbWUgPSBtYTM1ZDFfcnRjX3JlYWRfdGltZSwK Pj4gKwkuc2V0X3RpbWUgPSBtYTM1ZDFfcnRjX3NldF90aW1lLAo+PiArCS5yZWFkX2FsYXJtID0g bWEzNWQxX3J0Y19yZWFkX2FsYXJtLAo+PiArCS5zZXRfYWxhcm0gPSBtYTM1ZDFfcnRjX3NldF9h bGFybSwKPj4gKwkuYWxhcm1faXJxX2VuYWJsZSA9IG1hMzVkMV9hbGFybV9pcnFfZW5hYmxlLAo+ PiArfTsKPj4gKwo+PiArc3RhdGljIGludCBtYTM1ZDFfcnRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IG1hMzVfcnRjICpydGM7Cj4+ICsJc3Ry dWN0IGNsayAqY2xrOwo+PiArCXUzMiByZWd2YWw7Cj4+ICsJaW50IGVycjsKPj4gKwo+PiArCXJ0 YyA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnJ0YyksIEdGUF9LRVJORUwpOwo+ PiArCWlmICghcnRjKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCXJ0Yy0+cnRjX3Jl ZyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKPj4gKwlpZiAoSVNf RVJSKHJ0Yy0+cnRjX3JlZykpCj4+ICsJCXJldHVybiBQVFJfRVJSKHJ0Yy0+cnRjX3JlZyk7Cj4+ ICsKPj4gKwljbGsgPSBvZl9jbGtfZ2V0KHBkZXYtPmRldi5vZl9ub2RlLCAwKTsKPj4gKwlpZiAo SVNfRVJSKGNsaykpCj4+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIFBUUl9F UlIoY2xrKSwgImZhaWxlZCB0byBmaW5kIHJ0YyBjbG9ja1xuIik7Cj4+ICsKPj4gKwllcnIgPSBj bGtfcHJlcGFyZV9lbmFibGUoY2xrKTsKPj4gKwlpZiAoZXJyKQo+PiArCQlyZXR1cm4gLUVOT0VO VDsKPj4gKwo+PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHJ0Yyk7Cj4+ICsKPj4gKwly dGMtPnJ0Y2RldiA9IGRldm1fcnRjX2RldmljZV9yZWdpc3RlcigmcGRldi0+ZGV2LCBwZGV2LT5u YW1lLAo+PiArCQkJCQkgICAgICAgJm1hMzVkMV9ydGNfb3BzLCBUSElTX01PRFVMRSk7Cj4+ICsJ aWYgKElTX0VSUihydGMtPnJ0Y2RldikpCj4+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2 LT5kZXYsIFBUUl9FUlIocnRjLT5ydGNkZXYpLAo+PiArCQkJCSAgICAgImZhaWxlZCB0byByZWdp c3RlciBydGMgZGV2aWNlXG4iKTsKPiBUaGlzIE1VU1QgYmUgZG9uZSBsYXN0IGluIHByb2JlLCBl bHNlIHlvdSBvcGVuIGEgcmFjZSB3aXRoIHVzZXJzcGFjZS4KPgoKWWVzLCBJIHdpbGwgbW92ZWQg aXQgdG8gbGFzdCBpbiBwcm9iZS4KCgo+PiArCj4+ICsJZXJyID0gbWEzNWQxX3J0Y19pbml0KHJ0 YywgUlRDX0lOSVRfVElNRU9VVCk7Cj4+ICsJaWYgKGVycikKPj4gKwkJcmV0dXJuIGVycjsKPj4g Kwo+IEkgZG9uJ3QgYmVsaWV2ZSB5b3Ugc2hvdWxkIGRvIHRoaXMgb24gZXZlcnkgcHJvYmUgYnV0 IG9ubHkgd2hlbiB0aGlzCj4gaGFzbid0IGJlZW4gZG9uZSB5ZXQuCj4KPj4gKwlyZWd2YWwgPSBy dGNfcmVnX3JlYWQocnRjLCBNQTM1X1JFR19SVENfQ0xLRk1UKTsKPj4gKwlyZWd2YWwgfD0gUlRD X0NMS0ZNVF8yNEhFTjsKPj4gKwlydGNfcmVnX3dyaXRlKHJ0YywgTUEzNV9SRUdfUlRDX0NMS0ZN VCwgcmVndmFsKTsKPj4gKwo+IGRpdHRvCgpJIHdpbGwgbW9kaWZ5IHRoZW0gYXM6CgpJZiAoIShy dGNfcmVnX3JlYWQocnRjLCBNQTM1X1JFR19SVENfSU5JVCkgJiBSVENfSU5JVF9BQ0spKSB7CiDC oMKgIMKgZXJyID0gbWEzNWQxX3J0Y19pbml0KHJ0YywgUlRDX0lOSVRfVElNRU9VVCk7CiDCoMKg IMKgaWYgKGVycikKIMKgwqAgwqDCoMKgwqAgcmV0dXJuIGVycjsKIMKgwqAgwqByZWd2YWwgPSBy dGNfcmVnX3JlYWQocnRjLCBNQTM1X1JFR19SVENfQ0xLRk1UKTsKIMKgwqAgwqByZWd2YWwgfD0g UlRDX0NMS0ZNVF8yNEhFTjsKIMKgwqAgwqBydGNfcmVnX3dyaXRlKHJ0YywgTUEzNV9SRUdfUlRD X0NMS0ZNVCwgcmVndmFsKTt9Cn0KCgo+PiArCXJ0Yy0+aXJxX251bSA9IHBsYXRmb3JtX2dldF9p cnEocGRldiwgMCk7Cj4+ICsKPj4gKwllcnIgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYs IHJ0Yy0+aXJxX251bSwgbWEzNWQxX3J0Y19pbnRlcnJ1cHQsCj4+ICsJCQkgICAgICAgSVJRRl9O T19TVVNQRU5ELCAibWEzNWQxcnRjIiwgcnRjKTsKPj4gKwlpZiAoZXJyKQo+PiArCQlyZXR1cm4g ZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCBlcnIsICJGYWlsZWQgdG8gcmVxdWVzdCBydGMgaXJx XG4iKTsKPj4gKwo+PiArCXJlZ3ZhbCA9IHJ0Y19yZWdfcmVhZChydGMsIE1BMzVfUkVHX1JUQ19J TlRFTik7Cj4+ICsJcmVndmFsIHw9IFJUQ19JTlRFTl9USUNLSUVOOwo+PiArCXJ0Y19yZWdfd3Jp dGUocnRjLCBNQTM1X1JFR19SVENfSU5URU4sIHJlZ3ZhbCk7Cj4+ICsKPj4gKwlkZXZpY2VfaW5p dF93YWtldXAoJnBkZXYtPmRldiwgdHJ1ZSk7Cj4+ICsKPiBZb3UgbXVzdCBzZXQgdGhlIHJ0YyBy YW5nZSBoZXJlLgoKSSB3aWxsIGFkZDoKbWEzNWQxX3J0Yy0+cnRjZGV2LT5yYW5nZV9taW4gPSBS VENfVElNRVNUQU1QX0JFR0lOXzIwMDA7Cm1hMzVkMV9ydGMtPnJ0Y2Rldi0+cmFuZ2VfbWF4ID0g UlRDX1RJTUVTVEFNUF9FTkRfMjA5OTsKCgo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgaW50IG1hMzVkMV9ydGNfc3VzcGVuZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCj4+ICt7Cj4+ICsJc3RydWN0IG1hMzVfcnRjICpydGMgPSBw bGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPj4gKwl1MzIgcmVndmFsOwo+PiArCj4+ICsJaWYg KGRldmljZV9tYXlfd2FrZXVwKCZwZGV2LT5kZXYpKQo+PiArCQllbmFibGVfaXJxX3dha2UocnRj LT5pcnFfbnVtKTsKPj4gKwo+PiArCXJlZ3ZhbCA9IHJ0Y19yZWdfcmVhZChydGMsIE1BMzVfUkVH X1JUQ19JTlRFTik7Cj4+ICsJcmVndmFsICY9IH5SVENfSU5URU5fVElDS0lFTjsKPj4gKwlydGNf cmVnX3dyaXRlKHJ0YywgTUEzNV9SRUdfUlRDX0lOVEVOLCByZWd2YWwpOwo+IFRoaXMgaXMgbm90 IHdoYXQgdGhlIHVzZXIgaXMgYXNraW5nLCBkb24ndCBkbyB0aGlzLiBBbHNvLCBob3cgd2FzIHRo aXMKPiB0ZXN0ZWQ/CgpTdXJlLCBJIHdpbGwgcmVtb3ZlIHRoZXNlIHRocmVlIGxpbmVzIG9mIGNv ZGUuCgpXZSB0ZXN0IGl0IHdpdGggImVjaG8gbWVtID4gL3N5cy9wb3dlci9zdGF0ZSIuCgo+PiAr Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgbWEzNWQxX3J0Y19yZXN1 bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgbWEzNV9y dGMgKnJ0YyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+PiArCXUzMiByZWd2YWw7Cj4+ ICsKPj4gKwlpZiAoZGV2aWNlX21heV93YWtldXAoJnBkZXYtPmRldikpCj4+ICsJCWRpc2FibGVf aXJxX3dha2UocnRjLT5pcnFfbnVtKTsKPj4gKwo+PiArCXJlZ3ZhbCA9IHJ0Y19yZWdfcmVhZChy dGMsIE1BMzVfUkVHX1JUQ19JTlRFTik7Cj4+ICsJcmVndmFsIHw9IFJUQ19JTlRFTl9USUNLSUVO Owo+PiArCXJ0Y19yZWdfd3JpdGUocnRjLCBNQTM1X1JFR19SVENfSU5URU4sIHJlZ3ZhbCk7Cj4+ ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgbWEzNWQxX3J0Y19vZl9tYXRjaFtdID0gewo+PiArCXsgLmNvbXBhdGlibGUgPSAi bnV2b3RvbixtYTM1ZDEtcnRjIiwgfSwKPj4gKwl7fSwKPj4gK307Cj4+ICtNT0RVTEVfREVWSUNF X1RBQkxFKG9mLCBtYTM1ZDFfcnRjX29mX21hdGNoKTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgbWEzNWQxX3J0Y19kcml2ZXIgPSB7Cj4+ICsJLnN1c3BlbmQgICAgPSBt YTM1ZDFfcnRjX3N1c3BlbmQsCj4+ICsJLnJlc3VtZSAgICAgPSBtYTM1ZDFfcnRjX3Jlc3VtZSwK Pj4gKwkucHJvYmUgICAgICA9IG1hMzVkMV9ydGNfcHJvYmUsCj4+ICsJLmRyaXZlcgkJPSB7Cj4+ ICsJCS5uYW1lCT0gInJ0Yy1tYTM1ZDEiLAo+PiArCQkub2ZfbWF0Y2hfdGFibGUgPSBtYTM1ZDFf cnRjX29mX21hdGNoLAo+PiArCX0sCj4+ICt9Owo+PiArCj4+ICttb2R1bGVfcGxhdGZvcm1fZHJp dmVyKG1hMzVkMV9ydGNfZHJpdmVyKTsKPj4gKwo+PiArTU9EVUxFX0FVVEhPUigiTWluLUplbiBD aGVuIDxtamNoZW5AbnV2b3Rvbi5jb20+Iik7Cj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1BMzVE MSBSVEMgZHJpdmVyIik7Cj4+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4+IC0tIAo+PiAyLjM0 LjEKPj4KCgpCZXN0IFJlZ2FyZHMsCkphY2t5IEh1YW5nCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=