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 D852EC5321E for ; Mon, 26 Aug 2024 08:27:27 +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-Transfer-Encoding:Content-Type: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=HXy1M+fiVuDqiuWq3ORkSVFMdGR8Lyi+Qwds5axlBMU=; b=ua/D7oBMAEUIyt kxIgVB/Oe1YnATknh66VgF/9yS1uOPtSk7crqYDL2CUwPOnu+L5D9agdAK37ZQsx31STE/Tc5DtkB CBD7zO91MMkJaDfxLfzRm3SpCtu+4PWsG/GOrbYtdfzd8gePcvDLxF7wA1E0RvtQE3AeN7mACmBSl j8b7to8cIRGJ54S3uCIVLTQRmJQ5EAp3r1nhRMSPQey3UUDNDTnn1TAl2a1YsZ5A+LuJAjiN0iEWH yv1Q3eYF+fiUPtYpesZV3LrXh+jmMJaqOQGzenC9h+VDsEkC7IiBmXYWTGBLyFPUF/MKthNbb7e2n L7zMTw89GqOE6+dEakGA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1siV4I-00000006UD4-0MRs; Mon, 26 Aug 2024 08:27:18 +0000 Received: from nyc.source.kernel.org ([2604:1380:45d1:ec00::3]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1siV4E-00000006UBc-3YFy for linux-amlogic@lists.infradead.org; Mon, 26 Aug 2024 08:27:16 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 1B5EAA41DB1; Mon, 26 Aug 2024 08:27:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9097AC8CDC1; Mon, 26 Aug 2024 08:27:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1724660833; bh=tcMAmQDb7ndwt5Ze9qrn//GNs1+TA1IzP5Fi7o/acSU=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=pg4Ddqro7wOYMBTjrSUdaZBYjVG8bT83quhBG4vOzLSOSKxyPwbXNU6RNJoaJBxEa LUDsxSo/T7w5BrKQ9Ak3ypn1X3MFpOB8FWqbdkaUAQ5g58RpNKuDidg8ZXcAu+e2Yf mXuY5RY1n5GBVxBYO7owhheJ9QBx7iUn98wRc06mtPqAijSmARpqy4sOAvic8Lvrb0 UlBM8KZLaRHf/sYoisaDxhxN30QrfkcgJBz6/vRAVNRlUS934ebo4/yv8Ijlhg8BMx Clb0c9bkKqW4Lx2wnZ4LpM3cqELzUNQyNF7uSL3hgPZ2SeFLO7TJ8CNRcBD6e9/69f a8P2eym9ttGWQ== Message-ID: Date: Mon, 26 Aug 2024 10:27:06 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/3] rtc: support for the Amlogic on-chip RTC To: xianwei.zhao@amlogic.com, Yiting Deng , Alexandre Belloni , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-amlogic@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org References: <20240823-rtc-v1-0-6f70381da283@amlogic.com> <20240823-rtc-v1-2-6f70381da283@amlogic.com> From: Krzysztof Kozlowski Content-Language: en-US Autocrypt: addr=krzk@kernel.org; keydata= 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 fv0= In-Reply-To: <20240823-rtc-v1-2-6f70381da283@amlogic.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240826_012715_045257_3FAAAFBD X-CRM114-Status: GOOD ( 33.38 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gMjMvMDgvMjAyNCAxMToxOSwgWGlhbndlaSBaaGFvIHZpYSBCNCBSZWxheSB3cm90ZToKPiBG cm9tOiBZaXRpbmcgRGVuZyA8eWl0aW5nLmRlbmdAYW1sb2dpYy5jb20+Cj4gCj4gU3VwcG9ydCBm b3IgdGhlIG9uLWNoaXAgUlRDIGZvdW5kIGluIHNvbWUgb2YgQW1sb2dpYydzIFNvQ3Mgc3VjaCBh cyB0aGUKPiBBMTEzTDIgYW5kIEExMTNYMi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBZaXRpbmcgRGVu ZyA8eWl0aW5nLmRlbmdAYW1sb2dpYy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogWGlhbndlaSBaaGFv IDx4aWFud2VpLnpoYW9AYW1sb2dpYy5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvcnRjL0tjb25maWcg ICAgICAgfCAgMTIgKwo+ICBkcml2ZXJzL3J0Yy9NYWtlZmlsZSAgICAgIHwgICAxICsKPiAgZHJp dmVycy9ydGMvcnRjLWFtbG9naWMuYyB8IDU4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgNjAyIGluc2VydGlvbnMoKykK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvS2NvbmZpZyBiL2RyaXZlcnMvcnRjL0tjb25m aWcKPiBpbmRleCAyYTk1YjA1OTgyYWQuLjBkZDA0MjcwMWMzYiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3J0Yy9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ydGMvS2NvbmZpZwo+IEBAIC0yMDQzLDQg KzIwNDMsMTYgQEAgY29uZmlnIFJUQ19EUlZfU1NEMjAyRAo+ICAJICBUaGlzIGRyaXZlciBjYW4g YWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZSwgaWYgc28sIHRoZSBtb2R1bGUKPiAgCSAgd2lsbCBi ZSBjYWxsZWQgInJ0Yy1zc2QyMHhkIi4KPiAgCj4gK2NvbmZpZyBSVENfRFJWX0FNTE9HSUMKPiAr CXRyaXN0YXRlICJBbWxvZ2ljIFJUQyIKPiArCWRlcGVuZHMgb24gQVJDSF9NRVNPTiB8fCBDT01Q SUxFX1RFU1QKClNvIHRoZSB0aGlyZCBkcml2ZXI/IFdoYXQgaXMgd3Jvbmcgd2l0aCBleGlzdGlu ZyBvbmVzPyBBbmQgd2h5IHRoaXMgb25lCmlzIG5hbWVkIHNvIGRpZmZlcmVudGx5PwoKPiArCXNl bGVjdCBSRUdNQVBfTU1JTwo+ICsJZGVmYXVsdCB5Cj4gKwloZWxwCj4gKwkgIElmIHlvdSBzYXkg eWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciB0aGUgUlRDIGJsb2NrIG9uIHRoZQo+ICsJICBB bWxvZ2ljIEExMTNMMihBNCkgYW5kIEExMTNYMihBNSkgU29Dcy4KPiArCj4gKwkgIFRoaXMgZHJp dmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBJZiBzbywgdGhlIG1vZHVsZQo+ICsJ ICB3aWxsIGJlIGNhbGxlZCAicnRjLWFtbG9naWMiLgo+ICsKPiAgZW5kaWYgIyBSVENfQ0xBU1MK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvTWFrZWZpbGUgYi9kcml2ZXJzL3J0Yy9NYWtlZmls ZQo+IGluZGV4IDMwMDRlMzcyZjI1Zi4uZDRhNTZkZGI0MjQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvcnRjL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ydGMvTWFrZWZpbGUKPiBAQCAtMjYsNiAr MjYsNyBAQCBvYmotJChDT05GSUdfUlRDX0RSVl9BQkI1WkVTMykJKz0gcnRjLWFiLWI1emUtczMu bwo+ICBvYmotJChDT05GSUdfUlRDX0RSVl9BQkVPWjkpCSs9IHJ0Yy1hYi1lb3o5Lm8KPiAgb2Jq LSQoQ09ORklHX1JUQ19EUlZfQUJYODBYKQkrPSBydGMtYWJ4ODB4Lm8KPiAgb2JqLSQoQ09ORklH X1JUQ19EUlZfQUMxMDApCSs9IHJ0Yy1hYzEwMC5vCj4gK29iai0kKENPTkZJR19SVENfRFJWX0FN TE9HSUMpCSs9IHJ0Yy1hbWxvZ2ljLm8KPiAgb2JqLSQoQ09ORklHX1JUQ19EUlZfQVJNQURBMzhY KQkrPSBydGMtYXJtYWRhMzh4Lm8KPiAgb2JqLSQoQ09ORklHX1JUQ19EUlZfQVMzNzIyKQkrPSBy dGMtYXMzNzIyLm8KPiAgb2JqLSQoQ09ORklHX1JUQ19EUlZfQVNNOTI2MCkJKz0gcnRjLWFzbTky NjAubwoKCj4gKwo+ICtzdGF0aWMgaW50IGFtbF9ydGNfYWRqdXN0X3NlYyhzdHJ1Y3QgZGV2aWNl ICpkZXYsIHUzMiBtYXRjaF9jb3VudGVyLAo+ICsJCQkgICAgICBpbnQgb3BzLCBpbnQgZW5hYmxl KQo+ICt7Cj4gKwlzdHJ1Y3QgYW1sX3J0Y19kYXRhICpydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 LT5wYXJlbnQpOwo+ICsJdTMyIHJlZ192YWw7Cj4gKwo+ICsJaWYgKCFGSUVMRF9GSVQoUlRDX01B VENIX0NPVU5URVIsIG1hdGNoX2NvdW50ZXIpKSB7Cj4gKwkJcHJfZXJyKCIlczogaW52YWxpZCBt YXRjaF9jb3VudGVyXG4iLCBfX2Z1bmNfXyk7CgpObywgZG8gbm90IHVzZSBwcl8sIGJ1dCBkcml2 ZXIgb25lcy4KCgo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJlZ192YWwgPSBG SUVMRF9QUkVQKFJUQ19TRUNfQURKVVNUX0NUUkwsIG9wcykKPiArCQkgIHwgRklFTERfUFJFUChS VENfTUFUQ0hfQ09VTlRFUiwgbWF0Y2hfY291bnRlcikKPiArCQkgIHwgRklFTERfUFJFUChSVENf QURKX1ZBTElELCBlbmFibGUpOwo+ICsJLyogU2V0IHNlY19hZGp1c3RfY3RybCwgbWF0Y2hfY291 bnRlciBhbmQgVmFsaWQgYWRqdXN0ICovCj4gKwlyZWdtYXBfd3JpdGUocnRjLT5tYXAsIFJUQ19T RUNfQURKVVNUX1JFRywgcmVnX3ZhbCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgYW1sX3J0Y19zZXRfY2FsaWJyYXRpb24oc3RydWN0IGRldmljZSAqZGV2LCB1MzIg Y2FsaWJyYXRpb24pCj4gK3sKPiArCWludCBjYWxfb3BzLCBlbmFibGUsIG1hdGNoX2NvdW50ZXI7 Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW1hdGNoX2NvdW50ZXIgPSBGSUVMRF9HRVQoUlRDX01BVENI X0NPVU5URVIsIGNhbGlicmF0aW9uKTsKPiArCWNhbF9vcHMgPSBGSUVMRF9HRVQoUlRDX1NFQ19B REpVU1RfQ1RSTCwgY2FsaWJyYXRpb24pOwo+ICsJZW5hYmxlID0gRklFTERfR0VUKFJUQ19BREpf VkFMSUQsIGNhbGlicmF0aW9uKTsKPiArCj4gKwlyZXQgPSBhbWxfcnRjX2FkanVzdF9zZWMoZGV2 LCBtYXRjaF9jb3VudGVyLCBjYWxfb3BzLCBlbmFibGUpOwo+ICsJZGV2X2RiZyhkZXYsICIlczog U3VjY2VzcyB0byBzdG9yZSBSVEMgY2FsaWJyYXRpb24gYXR0cmlidXRlXG4iLAo+ICsJCV9fZnVu Y19fKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFtbF9ydGNf Z2V0X2NhbGlicmF0aW9uKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyICpjYWxpYnJhdGlvbikKPiAr ewo+ICsJc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjID0gZGV2X2dldF9kcnZkYXRhKGRldi0+cGFy ZW50KTsKPiArCXUzMiByZWdfdmFsOwo+ICsKPiArCXJlZ21hcF9yZWFkKHJ0Yy0+bWFwLCBSVENf U0VDX0FESlVTVF9SRUcsICZyZWdfdmFsKTsKPiArCSpjYWxpYnJhdGlvbiA9IEZJRUxEX0dFVChS VENfU0VDX0FESlVTVF9DVFJMIHwgUlRDX01BVENIX0NPVU5URVIsIHJlZ192YWwpOwo+ICsJLyog QklUIGlzIG9ubHkgVUwgZGVmaW5lZO+8jGFuZCBHRU5NQVNLIGhhcyBubyB0eXBlLCBpdHMnIGRv bm90IHVzZWQgdG9nZXRoZXIgKi8KPiArCSpjYWxpYnJhdGlvbiB8PSBGSUVMRF9QUkVQKFJUQ19B REpfVkFMSUQsIEZJRUxEX0dFVChSVENfQURKX1ZBTElELCByZWdfdmFsKSk7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBUaGUgY2FsaWJyYXRpb24gdmFsdWUgdHJhbnNm ZXJyZWQgZnJvbSBidWYgdGFrZXMgYml0WzE4OjBdIHRvIHJlcHJlc2VudAo+ICsgKiBtYXRjaF9j b3VudGVyLCB3aGlsZSB0YWtlcyBiaXRbMjA6MTldIHRvIHJlcHJlc2VudCBzZWNfYWRqdXN0X2N0 cmwsIGJpdFsyM10KPiArICogdG8gcmVwcmVzZW50IGFkal92YWxpZC4gZW5hYmxlL2Rpc2FibGUg c2VjX2FkanVzdF9jdHJsIGFuZCBtYXRjaF9jb3VudGVyLgo+ICsgKiBAYnVmOiBTZXBhcmF0ZSBi dWYgdG8gbWF0Y2hfY291bnRlciwgc2VjX2FkanVzdF9jdHJsIGFuZCBhZGpfdmFsaWQKPiArICoJ IG1hdGNoX2NvdW50ZXI6IGJpdFsxODowXSwgdmFsdWUgaXMgMCB+IDB4N2ZmZgo+ICsgKgkgc2Vj X2FkanVzdF9jdHJsOiBiaXRbMjA6MTldLCB2YWx1ZSBpcyAwIH4gMi4gMyB0byBpbnNlcnQgYSBz ZWNvbmQgb25jZSBldmVyeQo+ICsgKgkgbWF0Y2hfY291bnRlcisxIHNlY29uZHMsIDIgdG8gc3dh bGxvdyBhIHNlY29uZCBvbmNlIGV2ZXJ5IG1hdGNoX2NvdW50ZXIrMSBzZWNvbmRzCj4gKyAqCSAw IG9yIDEgdG8gbm8gYWRqdXN0bWVudAo+ICsgKgkgYWRqX3ZhbGlkOiBiaXRbMjNdLCB2YWx1ZSBp cyAwIG9yIDEsIDAgdG8gZGlzYWJsZSBzZWNfYWRqdXN0X2N0cmwgYW5kCj4gKyAqCSBtYXRjaF9j b3VudGVyLCBhbmQgMSB0byBlbmFibGUgdGhlbS4KCk1lc3NlZCBrZXJuZWxkb2MuIFlvdSBoYXZl IHdhcm5pbmcgc2hlcmUuIEZpeCBpdC4KCj4gKyAqLwo+ICtzdGF0aWMgc3NpemVfdCBydGNfY2Fs aWJyYXRpb25fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJICAgICBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJCSAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qg Y291bnQpCj4gK3sKPiArCWludCByZXR2YWw7Cj4gKwlpbnQgY2FsaWJyYXRpb24gPSAwOwo+ICsK PiArCWlmIChzc2NhbmYoYnVmLCAiICVpICIsICZjYWxpYnJhdGlvbikgIT0gMSkgewo+ICsJCWRl dl9lcnIoZGV2LCAiRmFpbGVkIHRvIHN0b3JlIFJUQyBjYWxpYnJhdGlvbiBhdHRyaWJ1dGVcbiIp OwoKV2hlcmUgaXMgdGhlIEFCSSBkb2N1bWVudGVkPwoKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAr CX0KPiArCXJldHZhbCA9IGFtbF9ydGNfc2V0X2NhbGlicmF0aW9uKGRldiwgY2FsaWJyYXRpb24p Owo+ICsKPiArCXJldHVybiByZXR2YWwgPyByZXR2YWwgOiBjb3VudDsKPiArfQo+ICsKPiArc3Rh dGljIHNzaXplX3QgcnRjX2NhbGlicmF0aW9uX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ICsJ CQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiAr CWludCAgcmV0dmFsID0gMDsKPiArCXUzMiAgY2FsaWJyYXRpb24gPSAwOwo+ICsKPiArCXJldHZh bCA9IGFtbF9ydGNfZ2V0X2NhbGlicmF0aW9uKGRldiwgJmNhbGlicmF0aW9uKTsKPiArCWlmIChy ZXR2YWwgPCAwKSB7Cj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVhZCBSVEMgY2FsaWJy YXRpb24gYXR0cmlidXRlXG4iKTsKPiArCQlzcHJpbnRmKGJ1ZiwgIjBcbiIpOwo+ICsJCXJldHVy biByZXR2YWw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiMHgleFxuIiwgY2Fs aWJyYXRpb24pOwo+ICt9Cj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9SVyhydGNfY2FsaWJyYXRpb24p OwoKRG9jdW1lbnQgdGhlIEFCSS4KCj4gKwo+ICtzdGF0aWMgaW50IHJ0Y19zZXRfZGl2MjU2X2Fk anVzdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiAqdmFsdWUpCj4gK3sKPiArCXN0cnVjdCBhbWxf cnRjX2RhdGEgKnJ0YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYtPnBhcmVudCk7Cj4gKwl1MzIgZGl2 MjU2X2FkajsKPiArCj4gKwlkaXYyNTZfYWRqID0gRklFTERfUFJFUChSVENfRElWMjU2X0FESl9E U1IgfCBSVENfRElWMjU2X0FESl9WQUwsICp2YWx1ZSk7Cj4gKwkvKgo+ICsJICogQU9fUlRDX1NF Q19BREpVU1RfUkVHIGJpdCAyNCBpbnNlcnQvcmVtb3ZlKDEvMCkgYSBkaXYyNTYgY3ljbGUsCj4g KwkgKiBiaXQgMjUgdmFsaWQvaW52YWxpZCgxLzApIGRpdjI1Nl9hZGpfdmFsCj4gKwkgKi8KPiAr CXJlZ21hcF93cml0ZV9iaXRzKHJ0Yy0+bWFwLCBSVENfU0VDX0FESlVTVF9SRUcsCj4gKwkJCSAg UlRDX0RJVjI1Nl9BREpfRFNSIHwgUlRDX0RJVjI1Nl9BREpfVkFMLCBkaXYyNTZfYWRqKTsKPiAr CS8qIHJ0YyBuZWVkIGFib3V0IDMwbXMgdG8gYWRqdXN0IGl0cyB0aW1lIGFmdGVyIHdyaXR0ZW4g Ki8KPiArCW1kZWxheSgzMCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgcnRjX2dldF9kaXYyNTZfYWRqdXN0KHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyICp2YWx1ZSkK PiArewo+ICsJc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjID0gZGV2X2dldF9kcnZkYXRhKGRldi0+ cGFyZW50KTsKPiArCXUzMiByZWdfdmFsOwo+ICsKPiArCXJlZ21hcF9yZWFkKHJ0Yy0+bWFwLCBS VENfU0VDX0FESlVTVF9SRUcsICZyZWdfdmFsKTsKPiArCSp2YWx1ZSA9IEZJRUxEX0dFVChSVENf RElWMjU2X0FESl9EU1IgfCBSVENfRElWMjU2X0FESl9WQUwsIHJlZ192YWwpOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICogZGl2MjU2IGFkanVzdCBmdW5jdGlvbiBpcyBj b250cm9sbGVkIHVzaW5nIGJpdFsyNF0gYW5kIGJpdFsyNV0uCj4gKyAqIHRyYW5zZmVycmVkIGJ1 ZiB0YWtlcyBiaXRbMF0gdG8gcmVwcmVzZW50IGRpdjI1NiBhZGogdmFsLCBiaXRbMV0KPiArICog dG8gcmVwcmVzZW50IGRpdjI1NiBhZGogZW5hYmxlL2Rpc2FibGUuIGRpdjI1NiBjeWNsZSBtZWFu cyB0aGF0IGFkanVzdAo+ICsgKiAxLzMyNzY4LzI1NiBvbmNlIGJ5IHdyaXR0ZW4gb25jZSwgaXQn cyB2YWwgaXMgZXF1YWwgdG8gMS8xMjhzCj4gKyAqIEBidWY6IDM6IGVuYWJsZSBkaXYyNTYgYWRq dXN0IGFuZCBpbnNlcnQgYSBkaXYyNTYgY3ljbGUKPiArICoJIDI6IGVuYWJsZSBkaXYyNTYgYWRq dXN0IGFuZCByZW1vdmUgYSBkaXYyNTYgY3ljbGUKPiArICoJIDEgb3IgMDogZGlzYWJsZSBkaXYy NTYgYWRqdXN0CgpBZ2FpbiBpbmNvcnJlY3Qga2VybmVsZG9jLgoKPiArICovCj4gK3N0YXRpYyBz c2l6ZV90IHJ0Y19kaXYyNTZfYWRqdXN0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJ CSAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJCSAgICAgICBjb25z dCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKPiArewo+ICsJaW50IHJldHZhbDsKPiArCXUzMiB2 YWx1ZSA9IDA7Cj4gKwo+ICsJaWYgKHNzY2FuZihidWYsICIgJWkgIiwgJnZhbHVlKSAhPSAxKSB7 Cj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gc3RvcmUgUlRDIGRpdjI1NiBhZGp1c3QgYXR0 cmlidXRlXG4iKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCXJldHZhbCA9IHJ0Y19z ZXRfZGl2MjU2X2FkanVzdChkZXYsICZ2YWx1ZSk7Cj4gKwo+ICsJcmV0dXJuIHJldHZhbCA/IHJl dHZhbCA6IGNvdW50Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBydGNfZGl2MjU2X2FkanVz dF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCWludCByZXR2YWwgPSAwOwo+ICsJdTMy IHZhbHVlID0gMDsKPiArCj4gKwlyZXR2YWwgPSBydGNfZ2V0X2RpdjI1Nl9hZGp1c3QoZGV2LCAm dmFsdWUpOwo+ICsJaWYgKHJldHZhbCA8IDApIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byByZWFkIFJUQyBkaXYyNTYgYWRqdXN0IGF0dHJpYnV0ZVxuIik7Cj4gKwkJc3ByaW50ZihidWYs ICIwXG4iKTsKPiArCQlyZXR1cm4gcmV0dmFsOwo+ICsJfQo+ICsKPiArCXJldHVybiBzcHJpbnRm KGJ1ZiwgIjB4JXhcbiIsIHZhbHVlKTsKPiArfQo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUlcocnRj X2RpdjI1Nl9hZGp1c3QpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFtbF9ydGNf YXR0cnNbXSA9IHsKPiArCSZkZXZfYXR0cl9ydGNfY2FsaWJyYXRpb24uYXR0ciwKPiArCSZkZXZf YXR0cl9ydGNfZGl2MjU2X2FkanVzdC5hdHRyLAo+ICsJTlVMTCwKPiArfTsKPiArCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGFtbF9ydGNfc3lzZnNfZmlsZXMgPSB7Cj4g KwkuYXR0cnMJPSBhbWxfcnRjX2F0dHJzLAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgYW1sX3J0 Y19pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjKQo+ICt7 Cj4gKwl1MzIgcmVnX3ZhbDsKPiArCXUzMiBydGNfZW5hYmxlOwo+ICsKPiArCXJlZ21hcF9yZWFk KHJ0Yy0+bWFwLCBSVENfQ1RSTCwgJnJlZ192YWwpOwo+ICsJcnRjX2VuYWJsZSA9IEZJRUxEX0dF VChSVENfRU5BQkxFLCByZWdfdmFsKTsKPiArCWlmICghcnRjX2VuYWJsZSkgewo+ICsJCWlmIChj bGtfZ2V0X3JhdGUocnRjLT5zY2xrKSA9PSBPU0NfMjRNKSB7Cj4gKwkJCS8qIHNlbGVjdCAyNE0g b3NjaWxsYXRvciAqLwo+ICsJCQlyZWdtYXBfdXBkYXRlX2JpdHMocnRjLT5tYXAsIFJUQ19DVFJM LCBSVENfT1NDX1NFTCwgUlRDX09TQ19TRUwpOwo+ICsKPiArCQkJLyoKPiArCQkJICogU2V0IFJU QyBvc2NpbGxhdG9yIHRvIGZyZXFfb3V0IHRvIGZyZXFfaW4vKChOMCpNMCtOMSpNMSkvKE0wK00x KSkKPiArCQkJICogRW5hYmxlIGNsb2NrX2luIGdhdGUgb2Ygb3NjaWxsYXRvciAyNE1Iego+ICsJ CQkgKiBTZXQgTjAgdG8gNzMzLCBOMSB0byA3MzIKPiArCQkJICovCj4gKwkJCXJlZ192YWwgPSBG SUVMRF9QUkVQKFJUQ19PU0NJTl9JTl9FTiwgMSkKPiArCQkJCSAgfCBGSUVMRF9QUkVQKFJUQ19P U0NJTl9PVVRfQ0ZHLCAxKQo+ICsJCQkJICB8IEZJRUxEX1BSRVAoUlRDX09TQ0lOX09VVF9OME0w LCBSVENfT1NDSU5fT1VUXzMyS19OMCkKPiArCQkJCSAgfCBGSUVMRF9QUkVQKFJUQ19PU0NJTl9P VVRfTjFNMSwgUlRDX09TQ0lOX09VVF8zMktfTjEpOwo+ICsJCQlyZWdtYXBfd3JpdGVfYml0cyhy dGMtPm1hcCwgUlRDX09TQ0lOX0NUUkwwLCBSVENfT1NDSU5fSU5fRU4KPiArCQkJCQkgIHwgUlRD X09TQ0lOX09VVF9DRkcgfCBSVENfT1NDSU5fT1VUX04wTTAKPiArCQkJCQkgIHwgUlRDX09TQ0lO X09VVF9OMU0xLCByZWdfdmFsKTsKPiArCj4gKwkJCS8qIFNldCBNMCB0byAyLCBNMSB0byAzLCBz byBmcmVxX291dCA9IDMyNzY4IEh6Ki8KPiArCQkJcmVnX3ZhbCA9IEZJRUxEX1BSRVAoUlRDX09T Q0lOX09VVF9OME0wLCBSVENfT1NDSU5fT1VUXzMyS19NMCkKPiArCQkJCSAgfCBGSUVMRF9QUkVQ KFJUQ19PU0NJTl9PVVRfTjFNMSwgUlRDX09TQ0lOX09VVF8zMktfTTEpOwo+ICsJCQlyZWdtYXBf d3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX09TQ0lOX0NUUkwxLCBSVENfT1NDSU5fT1VUX04wTTAK PiArCQkJCQkgIHwgUlRDX09TQ0lOX09VVF9OMU0xLCByZWdfdmFsKTsKPiArCQl9IGVsc2Ugewo+ ICsJCQkvKiBzZWxlY3QgMzJLIG9zY2lsbGF0b3IgKi8KPiArCQkJcmVnbWFwX3dyaXRlX2JpdHMo cnRjLT5tYXAsIFJUQ19DVFJMLCBSVENfT1NDX1NFTCwgMCk7Cj4gKwkJfQo+ICsJCS8qIEVuYWJs ZSBSVEMgKi8KPiArCQlyZWdtYXBfd3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX0NUUkwsIFJUQ19F TkFCTEUsIFJUQ19FTkFCTEUpOwo+ICsJCXVzbGVlcF9yYW5nZSgxMDAsIDIwMCk7Cj4gKwl9Cj4g KwlyZWdtYXBfd3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX0lOVF9NQVNLLAo+ICsJCQkgIFJUQ19B TFJNMF9JUlFfTVNLLCBSVENfQUxSTTBfSVJRX01TSyk7Cj4gKwlyZWdtYXBfd3JpdGVfYml0cyhy dGMtPm1hcCwgUlRDX0NUUkwsIFJUQ19BTFJNMF9FTiwgMCk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgYW1sX3J0Y19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlz dHJ1Y3QgYW1sX3J0Y19kYXRhICpydGM7Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2U7Cj4gKwlzdHJ1 Y3QgY2xrICpjb3JlX2NsazsKPiArCWludCByZXQgPSAwOwo+ICsKPiArCXJ0YyA9IGRldm1fa3ph bGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnJ0YyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFydGMp Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJcnRjLT5jb25maWcgPSBvZl9kZXZpY2VfZ2V0 X21hdGNoX2RhdGEoJnBkZXYtPmRldik7Cj4gKwlpZiAoIXJ0Yy0+Y29uZmlnKQo+ICsJCXJldHVy biAtRU5PREVWOwo+ICsKPiArCWJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2Uo cGRldiwgMCk7Cj4gKwlpZiAoSVNfRVJSKGJhc2UpKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2 LCAicmVzb3VyY2UgaW9yZW1hcCBmYWlsZWRcbiIpOwo+ICsJCXJldHVybiBQVFJfRVJSKGJhc2Up Owo+ICsJfQo+ICsKPiArCXJ0Yy0+bWFwID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKCZwZGV2LT5k ZXYsIGJhc2UsICZhbWxfcnRjX3JlZ21hcF9jb25maWcpOwo+ICsJaWYgKElTX0VSUihydGMtPm1h cCkpIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJyZWdtYXAgaW5pdCBmYWlsZWRcbiIpOwo+ ICsJCXJldHVybiBQVFJfRVJSKHJ0Yy0+bWFwKTsKPiArCX0KPiArCj4gKwlydGMtPmlycSA9IHBs YXRmb3JtX2dldF9pcnEocGRldiwgMCk7Cj4gKwlpZiAocnRjLT5pcnEgPCAwKQo+ICsJCXJldHVy biBydGMtPmlycTsKPiArCj4gKwlydGMtPnNjbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwg InJ0Y19vc2MiKTsKCkNsb2NrIG5hbWUgc2hvdWxkIGJlOiAib3NjIgoKPiArCWlmIChJU19FUlIo cnRjLT5zY2xrKSkKPiArCQlyZXR1cm4gUFRSX0VSUihydGMtPnNjbGspOwo+ICsJaWYgKGNsa19n ZXRfcmF0ZShydGMtPnNjbGspICE9IE9TQ18zMksgJiYgY2xrX2dldF9yYXRlKHJ0Yy0+c2Nsaykg IT0gT1NDXzI0TSkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkludmFsaWQgY2xvY2sgY29u ZmlndXJhdGlvblxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJY29yZV9j bGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgInJ0Y19zeXNfY2xrIik7CgpDbG9jayBuYW1l OiAic3lzIgoKPiArCWlmIChJU19FUlIoY29yZV9jbGspKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ ZGV2LCAiZmFpbGVkIHRvIGdldCBydGMgc3lzIGNsa1xuIik7CgpTeW50YXggaXMgcmV0dXJuIGRl dl9lcnJfcHJvYmUuCgo+ICsJCXJldHVybiBQVFJfRVJSKGNvcmVfY2xrKTsKPiArCX0KPiArCWNs a19wcmVwYXJlX2VuYWJsZShjb3JlX2Nsayk7Cj4gKwo+ICsJYW1sX3J0Y19pbml0KCZwZGV2LT5k ZXYsIHJ0Yyk7Cj4gKwo+ICsJZGV2aWNlX2luaXRfd2FrZXVwKCZwZGV2LT5kZXYsIDEpOwo+ICsJ cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcnRjKTsKPiArCj4gKwlydGMtPnJ0Y19kZXYgPSBk ZXZtX3J0Y19hbGxvY2F0ZV9kZXZpY2UoJnBkZXYtPmRldik7Cj4gKwlpZiAoSVNfRVJSKHJ0Yy0+ cnRjX2RldikpCj4gKwkJcmV0dXJuIFBUUl9FUlIocnRjLT5ydGNfZGV2KTsKPiArCj4gKwlyZXQg PSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIHJ0Yy0+aXJxLCBhbWxfcnRjX2hhbmRsZXIs Cj4gKwkJCSAgICAgICBJUlFGX09ORVNIT1QsICJhbWwtcnRjIGFsYXJtIiwgcnRjKTsKPiArCWlm IChyZXQpIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJJUlElZCByZXF1ZXN0IGZhaWxlZCwg cmV0ID0gJWRcbiIsCj4gKwkJCXJ0Yy0+aXJxLCByZXQpOwoKWW91ciBjb2RlIGlzIGJ1Z2d5LiBZ b3UgbGVhdmUgd2l0aCBwcmVwYXJlZCBjbG9jay4KClVzZSBkZXZtX2Nsa19nZXRfZW5hYmxlZCB3 aGVyZSBhcHBsaWNhYmxlLgoKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJ0Yy0+cnRj X2Rldi0+b3BzID0gJmFtbF9ydGNfb3BzOwo+ICsJcnRjLT5ydGNfZGV2LT5yYW5nZV9taW4gPSAw Owo+ICsJcnRjLT5ydGNfZGV2LT5yYW5nZV9tYXggPSBVMzJfTUFYOwo+ICsKPiArCXJldCA9IHJ0 Y19hZGRfZ3JvdXAocnRjLT5ydGNfZGV2LCAmYW1sX3J0Y19zeXNmc19maWxlcyk7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGNyZWF0ZSBzeXNmcyBn cm91cDogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4g ZGV2bV9ydGNfcmVnaXN0ZXJfZGV2aWNlKHJ0Yy0+cnRjX2Rldik7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgYW1sX3J0Y19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0 IGFtbF9ydGNfZGF0YSAqcnRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJaWYgKGRl dmljZV9tYXlfd2FrZXVwKGRldikpCj4gKwkJZW5hYmxlX2lycV93YWtlKHJ0Yy0+aXJxKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhbWxfcnRjX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBhbWxfcnRjX2RhdGEgKnJ0YyA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCWlmIChkZXZpY2VfbWF5X3dha2V1cChkZXYpKQo+ICsJ CWRpc2FibGVfaXJxX3dha2UocnRjLT5pcnEpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwoK V2hlcmUgaXMgdGhlIHJlbW92ZSB0byBjbGVhbnVwPwoKPiArc3RhdGljIFNJTVBMRV9ERVZfUE1f T1BTKGFtbF9ydGNfcG1fb3BzLAo+ICsJCQkgYW1sX3J0Y19zdXNwZW5kLCBhbWxfcnRjX3Jlc3Vt ZSk7Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFtbF9ydGNfY29uZmlnIGE1X3J0Y19jb25m aWcgPSB7Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFtbF9ydGNfY29uZmlnIGE0 X3J0Y19jb25maWcgPSB7Cj4gKwkuZ3JheV9zdG9yZWQgPSB0cnVlLAo+ICt9Owo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYW1sX3J0Y19kZXZpY2VfaWRbXSA9IHsKPiAr CXsKPiArCQkuY29tcGF0aWJsZSA9ICJhbWxvZ2ljLGE0LXJ0YyIsCj4gKwkJLmRhdGEgPSAmYTRf cnRjX2NvbmZpZywKPiArCX0sCj4gKwl7Cj4gKwkJLmNvbXBhdGlibGUgPSAiYW1sb2dpYyxhNS1y dGMiLAo+ICsJCS5kYXRhID0gJmE1X3J0Y19jb25maWcsCj4gKwl9LAo+ICt9Owo+ICtNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCBhbWxfcnRjX2RldmljZV9pZCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBhbWxfcnRjX2RyaXZlciA9IHsKPiArCS5wcm9iZSA9IGFtbF9ydGNf cHJvYmUsCj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1lID0gImFtbC1ydGMiLAo+ICsJCS5vZl9t YXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cihhbWxfcnRjX2RldmljZV9pZCksCgpEcm9wIG9mX21h dGNoX3B0ci4gWW91IGhhdmUgYSB3YXJuaW5nIGhlcmUuCgo+ICsJCS5wbSA9ICZhbWxfcnRjX3Bt X29wcywKPiArCX0sCkJlc3QgcmVnYXJkcywKS3J6eXN6dG9mCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QK bGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYW1sb2dpYwo=